From owner-freebsd-current@FreeBSD.ORG Sun Nov 4 17:40:25 2007 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DFFC216A46D for ; Sun, 4 Nov 2007 17:40:25 +0000 (UTC) (envelope-from wearabnet@yahoo.ca) Received: from web33705.mail.mud.yahoo.com (web33705.mail.mud.yahoo.com [68.142.201.202]) by mx1.freebsd.org (Postfix) with SMTP id 5578213C48E for ; Sun, 4 Nov 2007 17:40:24 +0000 (UTC) (envelope-from wearabnet@yahoo.ca) Received: (qmail 20904 invoked by uid 60001); 4 Nov 2007 15:53:26 -0000 DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.ca; h=X-YMail-OSG:Received:X-Mailer:Date:From:Subject:To:Cc:MIME-Version:Content-Type:Message-ID; b=lt0zaaqr/uBIQjIVM/1CosO7G0hIi3Fd29NQxj60LwChKM6psEqXHXTccuIUTRFmqUurwWIuQJnVxYP4/emZSnNhYd2lH8EkN876oPkAa5IXcJffedFwy+UWbO1v0nnG5t+bRbREtPIOaHInn10z6JnaYpzwB7dcIf9CB4LIASM=; X-YMail-OSG: HT1MPhwVM1n0v9oNKB7l71quRgyAN1VB3tTrzJg87x0BMQV01oJgHfEVUicGIS5Xq6zd2m0NGvNv33I0_JY6AqiabvlQx_h_YgFYsP0av.pq0nhRszg- Received: from [86.62.225.4] by web33705.mail.mud.yahoo.com via HTTP; Sun, 04 Nov 2007 07:53:26 PST X-Mailer: YahooMailRC/814.06 YahooMailWebService/0.7.152 Date: Sun, 4 Nov 2007 07:53:26 -0800 (PST) From: Abdullah Ibn Hamad Al-Marri To: Peter Schuller , Ivan Voras MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="0-341352189-1194191606=:18739" Message-ID: <614810.18739.qm@web33705.mail.mud.yahoo.com> Cc: FreeBSD STABLE , FreeBSD Current Subject: Re: Status of MySQL on 7 w/o patches applied X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Nov 2007 17:40:26 -0000 --0-341352189-1194191606=:18739 Content-Type: text/plain; charset=us-ascii ----- Original Message ---- > From: Peter Schuller > To: Ivan Voras > Cc: freebsd-current@freebsd.org > Sent: Sunday, November 4, 2007 3:22:08 PM > Subject: Re: Status of MySQL on 7 w/o patches applied > > > So to follow-up, with RELENG_7 the performance is now significantly > > > better than 6.2 for me too. I guess it was the debugging options in > > > userland. If someone wants details anyway I'll provide them, > but > since > > > it is no longer that interesting I'm leaving it as is if no > one > speaks > > > up. > > > > It's always interesting to get "third party" confirmations on such > > benchmarks so please post them :) > > Better late than never... > > So to recap, these tests were done on single-processer AMD64 machines > with 512 MB of memory. So nothing as interesting as SMP scalability > and such, but still interesting to see an increase in absolute speed > in the simple case. They were also performed maintaly with the 4BSD > scheduler. > > Due to the reason for running these tests, they were also made with > MyISAM rather than InnoDB, prepared as such: > > sysbench --test=oltp \ > --mysql-table-engine=myisam \ > --oltp-table-size=1000000 \ > prepare > > And run as such: > > sysbench --num-threads=16 \ > --max-requests=100000 \ > --test=oltp \ > --oltp-table-size=10000 \ > --mysql-socket=/tmp/mysql.sock \ > --oltp-read-only \ > run > > The MySQL version is 5.0.45_1 in both cases, compiled from ports with > default build settings, and (on purpose) default MySQL runtime > settings (empty my.cnf). > > Nothing in loader.conf on either machine. On the RELENG_7 one I tried > the following, one at a time, but none of them caused a different time > source to be chosen (probably because I was doing it the wrong way): > > kern.timecounter.tc.TSC.quality="1000" > kern.timecounter.hardware="TSC" > kern.timecounter.choice="TSC(1200) ACPI-fast(1000) > i8254(0) > dummy(-1000000)" > kern.timecounter.smp_tsc="1" > > CPU details (6.2 machine, then RELENG_7 machine): > > > CPU: AMD Athlon(tm) 64 Processor 3200+ (1989.81-MHz K8-class CPU) > Origin = "AuthenticAMD" Id = 0x40ff2 Stepping = 2 > > Features=0x78bfbff > ,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2> > Features2=0x2001 > AMD Features=0xea500800 > AMD Features2=0x1d,,CR8> > > CPU: AMD Athlon(tm) 64 Processor 3200+ (1989.82-MHz K8-class CPU) > Origin = "AuthenticAMD" Id = 0x40ff2 Stepping = 2 > > Features=0x78bfbff > ,PAT,PSE36,CLFLUSH,MMX,FXSR,SSE,SSE2> > Features2=0x2001 > > AMD > Features=0xea500800 > AMD Features2=0x1d > > And the sysbench results: > > 6.2: > > OLTP test statistics: > queries performed: > read: 1400000 > write: 0 > other: 200000 > total: 1600000 > transactions: 100000 (261.10 per sec.) > deadlocks: 0 (0.00 per sec.) > read/write requests: 1400000 (3655.45 per sec.) > other operations: 200000 (522.21 per sec.) > > Test execution summary: > total time: 382.9903s > total number of events: 100000 > total time taken by event execution: 6125.6312 > per-request statistics: > min: 0.0028s > avg: 0.0613s > max: 0.8482s > approx. 95 percentile: 0.0697s > > Threads fairness: > events (avg/stddev): 6250.0000/94.01 > execution time (avg/stddev): 382.8520/0.01 > > RELENG_7 from October 16: > > OLTP test statistics: > queries performed: > read: 1400000 > write: 0 > other: 200000 > total: 1600000 > transactions: 100000 (292.50 per sec.) > deadlocks: 0 (0.00 per sec.) > read/write requests: 1400000 (4095.01 per sec.) > other operations: 200000 (585.00 per sec.) > > Test execution summary: > total time: 341.8797s > total number of events: 100000 > total time taken by event execution: 5468.4663 > per-request statistics: > min: 0.0028s > avg: 0.0547s > max: 0.8707s > approx. 95 percentile: 0.0561s > > Threads fairness: > events (avg/stddev): 6250.0000/124.43 > execution time (avg/stddev): 341.7791/0.01 > > -- > / Peter Schuller Peter, Could you please try this patch Jeff posted in FreeBSD-performance@ ? Regards, -Abdullah Ibn Hamad Al-Marri Arab Portal http://www.WeArab.Net/ __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com --0-341352189-1194191606=:18739 Content-Type: application/octet-stream; name="=?utf-8?q?uleslice.diff?=" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?q?uleslice.diff?=" SW5kZXg6IHNjaGVkX3VsZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tlcm4vc2NoZWRfdWxlLmMs dg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjIxNg0KZGlmZiAtdSAtcjEuMjE2 IHNjaGVkX3VsZS5jDQotLS0gc2NoZWRfdWxlLmMJMjMgT2N0IDIwMDcgMDA6 NTI6MjQgLTAwMDAJMS4yMTYNCisrKyBzY2hlZF91bGUuYwkzIE5vdiAyMDA3 IDIxOjM2OjI3IC0wMDAwDQpAQCAtODgsNyArODgsOCBAQA0KIAlzaG9ydAkJ dHNfZmxhZ3M7CS8qIFRTRl8qIGZsYWdzLiAqLw0KIAl1X2NoYXIJCXRzX3Jx aW5kZXg7CS8qIFJ1biBxdWV1ZSBpbmRleC4gKi8NCiAJdV9jaGFyCQl0c19j cHU7CQkvKiBDUFUgdGhhdCB3ZSBoYXZlIGFmZmluaXR5IGZvci4gKi8NCi0J aW50CQl0c19zbGljZTsJLyogVGlja3Mgb2Ygc2xpY2UgcmVtYWluaW5nLiAq Lw0KKwlpbnQJCXRzX3NsaWNlOwkvKiBUaWNrcyBvZiBzbGljZSB1c2VkLiAq Lw0KKwlpbnQJCXRzX3Njb3JlOwkvKiBJbnRlcmFjdGl2aXR5IHNjb3JlLiAq Lw0KIAl1X2ludAkJdHNfc2xwdGltZTsJLyogTnVtYmVyIG9mIHRpY2tzIHdl IHZvbC4gc2xlcHQgKi8NCiAJdV9pbnQJCXRzX3J1bnRpbWU7CS8qIE51bWJl ciBvZiB0aWNrcyB3ZSB3ZXJlIHJ1bm5pbmcgKi8NCiAJLyogVGhlIGZvbGxv d2luZyB2YXJpYWJsZXMgYXJlIG9ubHkgdXNlZCBmb3IgcGN0Y3B1IGNhbGN1 bGF0aW9uICovDQpAQCAtMTAyLDYgKzEwMyw3IEBADQogLyogZmxhZ3Mga2Vw dCBpbiB0c19mbGFncyAqLw0KICNkZWZpbmUJVFNGX0JPVU5ECTB4MDAwMQkJ LyogVGhyZWFkIGNhbiBub3QgbWlncmF0ZS4gKi8NCiAjZGVmaW5lCVRTRl9Y RkVSQUJMRQkweDAwMDIJCS8qIFRocmVhZCB3YXMgYWRkZWQgYXMgdHJhbnNm ZXJhYmxlLiAqLw0KKyNkZWZpbmUJVFNGX0lOVEVSTE9BRAkweDAwMDQJCS8q IEludGVyYWN0aXZlIGxvYWQgb24gcnVucS4gKi8NCiANCiBzdGF0aWMgc3Ry dWN0IHRkX3NjaGVkIHRkX3NjaGVkMDsNCiANCkBAIC0xNjcsMTMgKzE2OSwx NSBAQA0KICAqCQkJdGhlIHNoaWZ0IGZhY3Rvci4gIFdpdGhvdXQgdGhlIHNo aWZ0IHRoZSBlcnJvciByYXRlDQogICoJCQlkdWUgdG8gcm91bmRpbmcgd291 bGQgYmUgdW5hY2NlcHRhYmx5IGhpZ2guDQogICogcmVhbHN0YXRoejoJCXN0 YXRoeiBpcyBzb21ldGltZXMgMCBhbmQgcnVuIG9mZiBvZiBoei4NCi0gKiBz Y2hlZF9zbGljZToJCVJ1bnRpbWUgb2YgZWFjaCB0aHJlYWQgYmVmb3JlIHJl c2NoZWR1bGluZy4NCisgKiBzY2hlZF9zbGljZV9tYXg6CU1heGltdW0gcnVu dGltZSBvZiBlYWNoIHRocmVhZCBiZWZvcmUgcmVzY2hlZHVsaW5nLg0KKyAq IHNjaGVkX3NsaWNlX21pbjoJTWluaW11bSBydW50aW1lIG9mIGVhY2ggdGhy ZWFkIGJlZm9yZSByZXNjaGVkdWxpbmcuDQogICogcHJlZW1wdF90aHJlc2g6 CVByaW9yaXR5IHRocmVzaG9sZCBmb3IgcHJlZW1wdGlvbiBhbmQgcmVtb3Rl IElQSXMuDQogICovDQogc3RhdGljIGludCBzY2hlZF9pbnRlcmFjdCA9IFND SEVEX0lOVEVSQUNUX1RIUkVTSDsNCiBzdGF0aWMgaW50IHJlYWxzdGF0aHo7 DQogc3RhdGljIGludCB0aWNraW5jcjsNCi1zdGF0aWMgaW50IHNjaGVkX3Ns aWNlOw0KK3N0YXRpYyBpbnQgc2NoZWRfc2xpY2VfbWF4ID0gMTsNCitzdGF0 aWMgaW50IHNjaGVkX3NsaWNlX21pbiA9IDE7DQogI2lmZGVmIFBSRUVNUFRJ T04NCiAjaWZkZWYgRlVMTF9QUkVFTVBUSU9ODQogc3RhdGljIGludCBwcmVl bXB0X3RocmVzaCA9IFBSSV9NQVhfSURMRTsNCkBAIC0xOTQsNiArMTk4LDcg QEANCiAJc3RydWN0IHJ1bnEJdGRxX3JlYWx0aW1lOwkJLyogcmVhbC10aW1l IHJ1biBxdWV1ZS4gKi8NCiAJc3RydWN0IHJ1bnEJdGRxX3RpbWVzaGFyZTsJ CS8qIHRpbWVzaGFyZSBydW4gcXVldWUuICovDQogCXN0cnVjdCBydW5xCXRk cV9pZGxlOwkJLyogUXVldWUgb2YgSURMRSB0aHJlYWRzLiAqLw0KKwl1bnNp Z25lZCBpbnQJdGRxX2ludGVybG9hZDsJCS8qIEludGVyYWN0aXZlIGxvYWQu ICovDQogCWludAkJdGRxX2xvYWQ7CQkvKiBBZ2dyZWdhdGUgbG9hZC4gKi8N CiAJdV9jaGFyCQl0ZHFfaWR4OwkJLyogQ3VycmVudCBpbnNlcnQgaW5kZXgu ICovDQogCXVfY2hhcgkJdGRxX3JpZHg7CQkvKiBDdXJyZW50IHJlbW92YWwg aW5kZXguICovDQpAQCAtMjM5LDcgKzI0NCw2IEBADQogc3RhdGljIGludCBi YWxhbmNlX2ludGVydmFsID0gMTI4OwkvKiBEZWZhdWx0IHNldCBpbiBzY2hl ZF9pbml0dGlja3MoKS4gKi8NCiBzdGF0aWMgaW50IHBpY2tfcHJpID0gMTsN CiBzdGF0aWMgaW50IGFmZmluaXR5Ow0KLXN0YXRpYyBpbnQgdHJ5c2VsZiA9 IDE7DQogc3RhdGljIGludCBzdGVhbF9odHQgPSAxOw0KIHN0YXRpYyBpbnQg c3RlYWxfaWRsZSA9IDE7DQogc3RhdGljIGludCBzdGVhbF90aHJlc2ggPSAy Ow0KQEAgLTI4OCwxMCArMjkyLDEyIEBADQogc3RhdGljIHZvaWQgdGRxX3Nl dHVwKHN0cnVjdCB0ZHEgKik7DQogc3RhdGljIHZvaWQgdGRxX2xvYWRfYWRk KHN0cnVjdCB0ZHEgKiwgc3RydWN0IHRkX3NjaGVkICopOw0KIHN0YXRpYyB2 b2lkIHRkcV9sb2FkX3JlbShzdHJ1Y3QgdGRxICosIHN0cnVjdCB0ZF9zY2hl ZCAqKTsNCitzdGF0aWMgaW50IHRkcV9zbGljZShzdHJ1Y3QgdGRxICopOw0K IHN0YXRpYyBfX2lubGluZSB2b2lkIHRkcV9ydW5xX2FkZChzdHJ1Y3QgdGRx ICosIHN0cnVjdCB0ZF9zY2hlZCAqLCBpbnQpOw0KIHN0YXRpYyBfX2lubGlu ZSB2b2lkIHRkcV9ydW5xX3JlbShzdHJ1Y3QgdGRxICosIHN0cnVjdCB0ZF9z Y2hlZCAqKTsNCi12b2lkIHRkcV9wcmludChpbnQgY3B1KTsNCi1zdGF0aWMg dm9pZCBydW5xX3ByaW50KHN0cnVjdCBydW5xICpycSk7DQordm9pZCB0ZHFf cHJpbnQoaW50KTsNCit2b2lkIHNjaGVkX3ByaW50KHN0cnVjdCB0aHJlYWQg Kik7DQorc3RhdGljIHZvaWQgcnVucV9wcmludChzdHJ1Y3QgcnVucSAqKTsN CiBzdGF0aWMgdm9pZCB0ZHFfYWRkKHN0cnVjdCB0ZHEgKiwgc3RydWN0IHRo cmVhZCAqLCBpbnQpOw0KICNpZmRlZiBTTVANCiBzdGF0aWMgdm9pZCB0ZHFf bW92ZShzdHJ1Y3QgdGRxICosIHN0cnVjdCB0ZHEgKik7DQpAQCAtMzQ1LDYg KzM1MSwyNiBAQA0KIAl9DQogfQ0KIA0KK3ZvaWQNCitzY2hlZF9wcmludChz dHJ1Y3QgdGhyZWFkICp0ZCkNCit7DQorCXN0cnVjdCB0ZF9zY2hlZCAqdHM7 DQorDQorCWlmICh0ZCA9PSBOVUxMKQ0KKwkJdGQgPSBjdXJ0aHJlYWQ7DQor CXRzID0gdGQtPnRkX3NjaGVkOw0KKwlwcmludGYoImZsYWdzOiAgICAweCVY XG4iLCB0cy0+dHNfZmxhZ3MpOw0KKwlwcmludGYoInJxaW5kZXg6ICAlZFxu IiwgdHMtPnRzX3JxaW5kZXgpOw0KKwlwcmludGYoImNwdTogICAgICAlZFxu IiwgdHMtPnRzX2NwdSk7DQorCXByaW50Zigic2xpY2U6ICAgICVkXG4iLCB0 cy0+dHNfc2xpY2UpOw0KKwlwcmludGYoInNjb3JlOiAgICAlZFxuIiwgdHMt PnRzX3Njb3JlKTsNCisJcHJpbnRmKCJzbHB0aW1lOiAgJWRcbiIsIHRzLT50 c19zbHB0aW1lKTsNCisJcHJpbnRmKCJydW50aW1lOiAgJWRcbiIsIHRzLT50 c19ydW50aW1lKTsNCisJcHJpbnRmKCJsdGljazogICAgJWRcbiIsIHRzLT50 c19sdGljayk7DQorCXByaW50ZigiZnRpY2s6ICAgICVkXG4iLCB0cy0+dHNf ZnRpY2spOw0KKwlwcmludGYoInRpY2tzOiAgICAlZFxuIiwgdHMtPnRzX3Rp Y2tzKTsNCit9DQorDQogLyoNCiAgKiBQcmludCB0aGUgc3RhdHVzIG9mIGEg cGVyLWNwdSB0aHJlYWQgcXVldWUuICBTaG91bGQgYmUgYSBkZGIgc2hvdyBj bWQuDQogICovDQpAQCAtMzU3LDcgKzM4Myw5IEBADQogDQogCXByaW50Zigi dGRxICVkOlxuIiwgVERRX0lEKHRkcSkpOw0KIAlwcmludGYoIlx0bG9ja3B0 ciAgICAgICAgICVwXG4iLCBURFFfTE9DS1BUUih0ZHEpKTsNCisJcHJpbnRm KCJcdGludGVybG9hZDoJICAlZFxuIiwgdGRxLT50ZHFfaW50ZXJsb2FkKTsN CiAJcHJpbnRmKCJcdGxvYWQ6ICAgICAgICAgICAlZFxuIiwgdGRxLT50ZHFf bG9hZCk7DQorCXByaW50ZigiXHRzbGljZTogICAgICAgICAgJWRcbiIsIHRk cV9zbGljZSh0ZHEpKTsNCiAJcHJpbnRmKCJcdHRpbWVzaGFyZSBpZHg6ICAl ZFxuIiwgdGRxLT50ZHFfaWR4KTsNCiAJcHJpbnRmKCJcdHRpbWVzaGFyZSBy aWR4OiAlZFxuIiwgdGRxLT50ZHFfcmlkeCk7DQogCXByaW50ZigiXHRyZWFs dGltZSBydW5xOlxuIik7DQpAQCAtMzgzLDggKzQxMSwxMiBAQA0KIHN0YXRp YyBfX2lubGluZSB2b2lkDQogdGRxX3J1bnFfYWRkKHN0cnVjdCB0ZHEgKnRk cSwgc3RydWN0IHRkX3NjaGVkICp0cywgaW50IGZsYWdzKQ0KIHsNCisJdV9j aGFyIHByaTsNCisNCisJcHJpID0gdHMtPnRzX3RocmVhZC0+dGRfcHJpb3Jp dHk7DQogCVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1BX09XTkVEKTsNCiAJVEhS RUFEX0xPQ0tfQVNTRVJUKHRzLT50c190aHJlYWQsIE1BX09XTkVEKTsNCisJ VERfU0VUX1JVTlEodHMtPnRzX3RocmVhZCk7DQogI2lmZGVmIFNNUA0KIAlp ZiAoVEhSRUFEX0NBTl9NSUdSQVRFKHRzLT50c190aHJlYWQpKSB7DQogCQl0 ZHEtPnRkcV90cmFuc2ZlcmFibGUrKzsNCkBAIC0zOTIsMTUgKzQyNCwxNSBA QA0KIAkJdHMtPnRzX2ZsYWdzIHw9IFRTRl9YRkVSQUJMRTsNCiAJfQ0KICNl bmRpZg0KLQlpZiAodHMtPnRzX3J1bnEgPT0gJnRkcS0+dGRxX3RpbWVzaGFy ZSkgew0KLQkJdV9jaGFyIHByaTsNCi0NCi0JCXByaSA9IHRzLT50c190aHJl YWQtPnRkX3ByaW9yaXR5Ow0KKwlpZiAocHJpIDw9IFBSSV9NQVhfUkVBTFRJ TUUpIHsNCisJCXRzLT50c19ydW5xID0gJnRkcS0+dGRxX3JlYWx0aW1lOw0K Kwl9IGVsc2UgaWYgKHByaSA8PSBQUklfTUFYX1RJTUVTSEFSRSkgew0KKwkJ dHMtPnRzX3J1bnEgPSAmdGRxLT50ZHFfdGltZXNoYXJlOw0KIAkJS0FTU0VS VChwcmkgPD0gUFJJX01BWF9USU1FU0hBUkUgJiYgcHJpID49IFBSSV9NSU5f VElNRVNIQVJFLA0KIAkJCSgiSW52YWxpZCBwcmlvcml0eSAlZCBvbiB0aW1l c2hhcmUgcnVucSIsIHByaSkpOw0KIAkJLyoNCiAJCSAqIFRoaXMgcXVldWUg Y29udGFpbnMgb25seSBwcmlvcml0aWVzIGJldHdlZW4gTUlOIGFuZCBNQVgN Ci0JCSAqIHJlYWx0aW1lLiAgVXNlIHRoZSB3aG9sZSBxdWV1ZSB0byByZXBy ZXNlbnQgdGhlc2UgdmFsdWVzLg0KKwkJICogdGltZXNoYXJlLiAgVXNlIHRo ZSB3aG9sZSBxdWV1ZSB0byByZXByZXNlbnQgdGhlc2UgdmFsdWVzLg0KIAkJ ICovDQogCQlpZiAoKGZsYWdzICYgKFNSUV9CT1JST1dJTkd8U1JRX1BSRUVN UFRFRCkpID09IDApIHsNCiAJCQlwcmkgPSAocHJpIC0gUFJJX01JTl9USU1F U0hBUkUpIC8gVFNfUlFfUFBROw0KQEAgLTQxNiw4ICs0NDgsMTAgQEANCiAJ CX0gZWxzZQ0KIAkJCXByaSA9IHRkcS0+dGRxX3JpZHg7DQogCQlydW5xX2Fk ZF9wcmkodHMtPnRzX3J1bnEsIHRzLCBwcmksIGZsYWdzKTsNCisJCXJldHVy bjsNCiAJfSBlbHNlDQotCQlydW5xX2FkZCh0cy0+dHNfcnVucSwgdHMsIGZs YWdzKTsNCisJCXRzLT50c19ydW5xID0gJnRkcS0+dGRxX2lkbGU7DQorCXJ1 bnFfYWRkKHRzLT50c19ydW5xLCB0cywgZmxhZ3MpOw0KIH0NCiANCiAvKiAN CkBAIC00NDMsMTMgKzQ3Nyw2IEBADQogCQkJcnVucV9yZW1vdmVfaWR4KHRz LT50c19ydW5xLCB0cywgJnRkcS0+dGRxX3JpZHgpOw0KIAkJZWxzZQ0KIAkJ CXJ1bnFfcmVtb3ZlX2lkeCh0cy0+dHNfcnVucSwgdHMsIE5VTEwpOw0KLQkJ LyoNCi0JCSAqIEZvciB0aW1lc2hhcmUgdGhyZWFkcyB3ZSB1cGRhdGUgdGhl IHByaW9yaXR5IGhlcmUgc28NCi0JCSAqIHRoZSBwcmlvcml0eSByZWZsZWN0 cyB0aGUgdGltZSB3ZSd2ZSBiZWVuIHNsZWVwaW5nLg0KLQkJICovDQotCQl0 cy0+dHNfbHRpY2sgPSB0aWNrczsNCi0JCXNjaGVkX3BjdGNwdV91cGRhdGUo dHMpOw0KLQkJc2NoZWRfcHJpb3JpdHkodHMtPnRzX3RocmVhZCk7DQogCX0g ZWxzZQ0KIAkJcnVucV9yZW1vdmUodHMtPnRzX3J1bnEsIHRzKTsNCiB9DQpA QCAtNDY2LDYgKzQ5Myw4IEBADQogCVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1B X09XTkVEKTsNCiAJVEhSRUFEX0xPQ0tfQVNTRVJUKHRzLT50c190aHJlYWQs IE1BX09XTkVEKTsNCiAJY2xhc3MgPSBQUklfQkFTRSh0cy0+dHNfdGhyZWFk LT50ZF9wcmlfY2xhc3MpOw0KKwl0ZHEtPnRkcV9pbnRlcmxvYWQgKz0gdHMt PnRzX3Njb3JlOw0KKwl0cy0+dHNfZmxhZ3MgfD0gVFNGX0lOVEVSTE9BRDsN CiAJdGRxLT50ZHFfbG9hZCsrOw0KIAlDVFIyKEtUUl9TQ0hFRCwgImNwdSAl ZCBsb2FkOiAlZCIsIFREUV9JRCh0ZHEpLCB0ZHEtPnRkcV9sb2FkKTsNCiAJ aWYgKGNsYXNzICE9IFBSSV9JVEhEICYmDQpAQCAtNDk4LDkgKzUyNywzNyBA QA0KICNlbmRpZg0KIAlLQVNTRVJUKHRkcS0+dGRxX2xvYWQgIT0gMCwNCiAJ ICAgICgidGRxX2xvYWRfcmVtOiBSZW1vdmluZyB3aXRoIDAgbG9hZCBvbiBx dWV1ZSAlZCIsIFREUV9JRCh0ZHEpKSk7DQorCXRzLT50c19mbGFncyAmPSB+ VFNGX0lOVEVSTE9BRDsNCisJdHMtPnRzX3J1bnEgPSBOVUxMOw0KKwl0ZHEt PnRkcV9pbnRlcmxvYWQgLT0gdHMtPnRzX3Njb3JlOw0KIAl0ZHEtPnRkcV9s b2FkLS07DQogCUNUUjEoS1RSX1NDSEVELCAibG9hZDogJWQiLCB0ZHEtPnRk cV9sb2FkKTsNCi0JdHMtPnRzX3J1bnEgPSBOVUxMOw0KK30NCisNCisvKg0K KyAqIENvbXB1dGUgdGhlIG1heGltdW0gc2xpY2Ugd2hlbiB0aGUgaW50ZXJs b2FkIGNoYW5nZXMuICBUaGlzIGdpdmVzIGEgc29mdA0KKyAqIHVwcGVyIGJv dW5kIG9uIGxhdGVuY3kgYXMgdGhlIGxvYWQgaW5jcmVhc2VzLg0KKyAqLw0K K3N0YXRpYyBpbnQNCit0ZHFfc2xpY2Uoc3RydWN0IHRkcSAqdGRxKQ0KK3sN CisJaW50IHNsaWNlOw0KKwlpbnQgbG9hZDsNCisNCisJVERRX0xPQ0tfQVNT RVJUKHRkcSwgTUFfT1dORUQpOw0KKwlpZiAodGRxLT50ZHFfaW50ZXJsb2Fk ID09IDApDQorCQlyZXR1cm4gKHNjaGVkX3NsaWNlX21heCk7DQorCS8qDQor CSAqIEFuIGludGVybG9hZCBvZiAxMDAgaXMgcm91Z2hseSBlcXVpdmFsZW50 IHRvIDEwMCUgY3B1IHV0aWxpemF0aW9uDQorCSAqIHJlcXVlc3RlZC4gIENh bGN1bGF0ZSBob3cgbWFueSB0aW1lcyBvdmVybG9hZGVkIHdlIGFyZSBhbmQg dGhlbg0KKwkgKiBkaXZpZGUgdGhlIGxhdGVuY3kgdGFyZ2V0IGJ5IHRoaXMg bnVtYmVyLiAgTm9uZSBvZiB0aGlzIGlzIHByZWNpc2UNCisJICogYnV0IGl0 IGRvZXMgeWllbGQgZGVjcmVhc2luZyBzbGljZSB2YWx1ZXMgd2l0aGluIHRo ZSBbbWluLCBtYXhdDQorCSAqIHJhbmdlIGFzIGxvYWQgaW5jcmVhc2VzLg0K KwkgKi8NCisJbG9hZCA9ICh0ZHEtPnRkcV9pbnRlcmxvYWQgKyA5OSkgLyAx MDA7DQorCXNsaWNlID0gc2NoZWRfc2xpY2VfbWF4IC8gbG9hZDsNCisJc2xp Y2UgPSBtYXgoc2xpY2UsIHNjaGVkX3NsaWNlX21pbik7DQorCXJldHVybiAo c2xpY2UpOw0KIH0NCiANCiAjaWZkZWYgU01QDQpAQCAtMTA3MCwxNCArMTEy Nyw2IEBADQogCWNwdSA9IHNlbGYgPSBQQ1BVX0dFVChjcHVpZCk7DQogCWlm IChzbXBfc3RhcnRlZCA9PSAwKQ0KIAkJcmV0dXJuIChzZWxmKTsNCi0JLyoN Ci0JICogRG9uJ3QgbWlncmF0ZSBhIHJ1bm5pbmcgdGhyZWFkIGZyb20gc2No ZWRfc3dpdGNoKCkuDQotCSAqLw0KLQlpZiAoZmxhZ3MgJiBTUlFfT1VSU0VM Rikgew0KLQkJQ1RSMShLVFJfVUxFLCAiWUlFTERJTkcgJWQiLA0KLQkJICAg IGN1cnRocmVhZC0+dGRfcHJpb3JpdHkpOw0KLQkJcmV0dXJuIChzZWxmKTsN Ci0JfQ0KIAlwcmkgPSB0cy0+dHNfdGhyZWFkLT50ZF9wcmlvcml0eTsNCiAJ Y3B1ID0gdHMtPnRzX2NwdTsNCiAJLyoNCkBAIC0xMDk0LDcgKzExNDMsOCBA QA0KIAkvKg0KIAkgKiBJZiB3ZSBoYXZlIGFmZmluaXR5LCB0cnkgdG8gcGxh Y2UgaXQgb24gdGhlIGNwdSB3ZSBsYXN0IHJhbiBvbi4NCiAJICovDQotCWlm IChTQ0hFRF9BRkZJTklUWSh0cykgJiYgdGRxLT50ZHFfbG93cHJpID4gcHJp KSB7DQorCWlmIChTQ0hFRF9BRkZJTklUWSh0cykgJiYNCisJICAgICh0ZHEt PnRkcV9sb3dwcmkgPiBwcmkgfHwgdGRxLT50ZHFfaW50ZXJsb2FkIDwgMTAp KSB7DQogCQlDVFI1KEtUUl9VTEUsDQogCQkgICAgImFmZmluaXR5IGZvciAl ZCwgbHRpY2sgJWQgdGlja3MgJWQgcHJpICVkIGN1cnRocmVhZCAlZCIsDQog CQkgICAgdHMtPnRzX2NwdSwgdHMtPnRzX3JsdGljaywgdGlja3MsIHByaSwN CkBAIC0xMTEzLDkgKzExNjMsOSBAQA0KIAkgKiBUaGlzIG1heSBpbXByb3Zl IGxvY2FsaXR5IGFtb25nIHNsZWVwZXJzIGFuZCB3YWtlcnMgd2hlbiB0aGVy ZQ0KIAkgKiBpcyBzaGFyZWQgZGF0YS4NCiAJICovDQotCWlmICh0cnlzZWxm ICYmIHByaSA8IGN1cnRocmVhZC0+dGRfcHJpb3JpdHkpIHsNCi0JCUNUUjEo S1RSX1VMRSwgInRyeXNlbGYgJWQiLA0KLQkJICAgIGN1cnRocmVhZC0+dGRf cHJpb3JpdHkpOw0KKwl0ZHEgPSBURFFfQ1BVKHNlbGYpOw0KKwlpZiAocHJp IDwgY3VydGhyZWFkLT50ZF9wcmlvcml0eSB8fCB0ZHEtPnRkcV9pbnRlcmxv YWQgPCAxMCkgew0KKwkJQ1RSMShLVFJfVUxFLCAidHJ5c2VsZiAlZCIsIGN1 cnRocmVhZC0+dGRfcHJpb3JpdHkpOw0KIAkJcmV0dXJuIChzZWxmKTsNCiAJ fQ0KIAkvKg0KQEAgLTExNzUsNiArMTIyNSw3IEBADQogCXJ1bnFfaW5pdCgm dGRxLT50ZHFfdGltZXNoYXJlKTsNCiAJcnVucV9pbml0KCZ0ZHEtPnRkcV9p ZGxlKTsNCiAJdGRxLT50ZHFfbG9hZCA9IDA7DQorCXRkcS0+dGRxX2ludGVy bG9hZCA9IDA7DQogfQ0KIA0KICNpZmRlZiBTTVANCkBAIC0xMzI0LDEyICsx Mzc1LDEyIEBADQogCSAqIGluIGNhc2Ugd2hpY2ggc2NoZWRfY2xvY2soKSBj YWxsZWQgYmVmb3JlIHNjaGVkX2luaXR0aWNrcygpLg0KIAkgKi8NCiAJcmVh bHN0YXRoeiA9IGh6Ow0KLQlzY2hlZF9zbGljZSA9IChyZWFsc3RhdGh6LzEw KTsJLyogfjEwMG1zICovDQogCXRpY2tpbmNyID0gMSA8PCBTQ0hFRF9USUNL X1NISUZUOw0KIA0KIAkvKiBBZGQgdGhyZWFkMCdzIGxvYWQgc2luY2UgaXQn cyBydW5uaW5nLiAqLw0KIAlURFFfTE9DSyh0ZHEpOw0KIAl0aHJlYWQwLnRk X2xvY2sgPSBURFFfTE9DS1BUUihURFFfU0VMRigpKTsNCisJdGRfc2NoZWQw LnRzX3Njb3JlID0gMDsNCiAJdGRxX2xvYWRfYWRkKHRkcSwgJnRkX3NjaGVk MCk7DQogCVREUV9VTkxPQ0sodGRxKTsNCiB9DQpAQCAtMTM0NCw3ICsxMzk1 LDggQEANCiAJaW50IGluY3I7DQogDQogCXJlYWxzdGF0aHogPSBzdGF0aHog PyBzdGF0aHogOiBoejsNCi0Jc2NoZWRfc2xpY2UgPSAocmVhbHN0YXRoei8x MCk7CS8qIH4xMDBtcyAqLw0KKwlzY2hlZF9zbGljZV9tYXggPSByZWFsc3Rh dGh6IC8gMTU7CS8qIH42Nm1zICovDQorCXNjaGVkX3NsaWNlX21pbiA9IHJl YWxzdGF0aHogLyA1MDsJLyogfjIwbXMgKi8NCiANCiAJLyoNCiAJICogdGlj a2luY3IgaXMgc2hpZnRlZCBvdXQgYnkgMTAgdG8gYXZvaWQgcm91bmRpbmcg ZXJyb3JzIGR1ZSB0bw0KQEAgLTEzNzQsNyArMTQyNiw2IEBADQogI2VuZGlm DQogfQ0KIA0KLQ0KIC8qDQogICogVGhpcyBpcyB0aGUgY29yZSBvZiB0aGUg aW50ZXJhY3Rpdml0eSBhbGdvcml0aG0uICBEZXRlcm1pbmVzIGEgc2NvcmUg YmFzZWQNCiAgKiBvbiBwYXN0IGJlaGF2aW9yLiAgSXQgaXMgdGhlIHJhdGlv IG9mIHNsZWVwIHRpbWUgdG8gcnVuIHRpbWUgc2NhbGVkIHRvDQpAQCAtMTM4 OSwxNSArMTQ0MCw2IEBADQogCWludCBkaXY7DQogDQogCXRzID0gdGQtPnRk X3NjaGVkOw0KLQkvKg0KLQkgKiBUaGUgc2NvcmUgaXMgb25seSBuZWVkZWQg aWYgdGhpcyBpcyBsaWtlbHkgdG8gYmUgYW4gaW50ZXJhY3RpdmUNCi0JICog dGFzay4gIERvbid0IGdvIHRocm91Z2ggdGhlIGV4cGVuc2Ugb2YgY29tcHV0 aW5nIGl0IGlmIHRoZXJlJ3MNCi0JICogbm8gY2hhbmNlLg0KLQkgKi8NCi0J aWYgKHNjaGVkX2ludGVyYWN0IDw9IFNDSEVEX0lOVEVSQUNUX0hBTEYgJiYN Ci0JCXRzLT50c19ydW50aW1lID49IHRzLT50c19zbHB0aW1lKQ0KLQkJCXJl dHVybiAoU0NIRURfSU5URVJBQ1RfSEFMRik7DQotDQogCWlmICh0cy0+dHNf cnVudGltZSA+IHRzLT50c19zbHB0aW1lKSB7DQogCQlkaXYgPSBtYXgoMSwg dHMtPnRzX3J1bnRpbWUgLyBTQ0hFRF9JTlRFUkFDVF9IQUxGKTsNCiAJCXJl dHVybiAoU0NIRURfSU5URVJBQ1RfSEFMRiArDQpAQCAtMTQ0Myw3ICsxNDg1 LDcgQEANCiAJICogc2NvcmUuICBOZWdhdGl2ZSBuaWNlIHZhbHVlcyBtYWtl IGl0IGVhc2llciBmb3IgYSB0aHJlYWQgdG8gYmUNCiAJICogY29uc2lkZXJl ZCBpbnRlcmFjdGl2ZS4NCiAJICovDQotCXNjb3JlID0gaW1heCgwLCBzY2hl ZF9pbnRlcmFjdF9zY29yZSh0ZCkgLSB0ZC0+dGRfcHJvYy0+cF9uaWNlKTsN CisJc2NvcmUgPSBpbWF4KDAsIHRkLT50ZF9zY2hlZC0+dHNfc2NvcmUgLSB0 ZC0+dGRfcHJvYy0+cF9uaWNlKTsNCiAJaWYgKHNjb3JlIDwgc2NoZWRfaW50 ZXJhY3QpIHsNCiAJCXByaSA9IFBSSV9NSU5fUkVBTFRJTUU7DQogCQlwcmkg Kz0gKChQUklfTUFYX1JFQUxUSU1FIC0gUFJJX01JTl9SRUFMVElNRSkgLyBz Y2hlZF9pbnRlcmFjdCkNCkBAIC0xNDc3LDEyICsxNTE5LDE1IEBADQogc2No ZWRfaW50ZXJhY3RfdXBkYXRlKHN0cnVjdCB0aHJlYWQgKnRkKQ0KIHsNCiAJ c3RydWN0IHRkX3NjaGVkICp0czsNCisJc3RydWN0IHRkcSAqdGRxOw0KIAl1 X2ludCBzdW07DQorCWludCBzY29yZTsNCiANCisJVEhSRUFEX0xPQ0tfQVNT RVJUKHRkLCBNQV9PV05FRCk7DQogCXRzID0gdGQtPnRkX3NjaGVkOw0KIAlz dW0gPSB0cy0+dHNfcnVudGltZSArIHRzLT50c19zbHB0aW1lOw0KIAlpZiAo c3VtIDwgU0NIRURfU0xQX1JVTl9NQVgpDQotCQlyZXR1cm47DQorCQlnb3Rv IHNjb3JlOw0KIAkvKg0KIAkgKiBUaGlzIG9ubHkgaGFwcGVucyBmcm9tIHR3 byBwbGFjZXM6DQogCSAqIDEpIFdlIGhhdmUgYWRkZWQgYW4gdW51c3VhbCBh bW91bnQgb2YgcnVuIHRpbWUgZnJvbSBmb3JrX2V4aXQuDQpAQCAtMTQ5MCwx MyArMTUzNSwxMyBAQA0KIAkgKi8NCiAJaWYgKHN1bSA+IFNDSEVEX1NMUF9S VU5fTUFYICogMikgew0KIAkJaWYgKHRzLT50c19ydW50aW1lID4gdHMtPnRz X3NscHRpbWUpIHsNCi0JCQl0cy0+dHNfcnVudGltZSA9IFNDSEVEX1NMUF9S VU5fTUFYOw0KKwkJCXRzLT50c19ydW50aW1lID0gU0NIRURfU0xQX1JVTl9N QVggLyAyOw0KIAkJCXRzLT50c19zbHB0aW1lID0gMTsNCiAJCX0gZWxzZSB7 DQotCQkJdHMtPnRzX3NscHRpbWUgPSBTQ0hFRF9TTFBfUlVOX01BWDsNCisJ CQl0cy0+dHNfc2xwdGltZSA9IFNDSEVEX1NMUF9SVU5fTUFYIC8gMjsNCiAJ CQl0cy0+dHNfcnVudGltZSA9IDE7DQogCQl9DQotCQlyZXR1cm47DQorCQln b3RvIHNjb3JlOw0KIAl9DQogCS8qDQogCSAqIElmIHdlIGhhdmUgZXhjZWVk ZWQgYnkgbW9yZSB0aGFuIDEvNXRoIHRoZW4gdGhlIGFsZ29yaXRobSBiZWxv dw0KQEAgLTE1MDYsMTAgKzE1NTEsMTkgQEANCiAJaWYgKHN1bSA+IChTQ0hF RF9TTFBfUlVOX01BWCAvIDUpICogNikgew0KIAkJdHMtPnRzX3J1bnRpbWUg Lz0gMjsNCiAJCXRzLT50c19zbHB0aW1lIC89IDI7DQotCQlyZXR1cm47DQor CQlnb3RvIHNjb3JlOw0KIAl9DQogCXRzLT50c19ydW50aW1lID0gKHRzLT50 c19ydW50aW1lIC8gNSkgKiA0Ow0KIAl0cy0+dHNfc2xwdGltZSA9ICh0cy0+ dHNfc2xwdGltZSAvIDUpICogNDsNCitzY29yZToNCisJc2NvcmUgPSBzY2hl ZF9pbnRlcmFjdF9zY29yZSh0ZCk7DQorCWlmICh0cy0+dHNfZmxhZ3MgJiBU U0ZfSU5URVJMT0FEKSB7DQorCQl0ZHEgPSBURFFfQ1BVKHRzLT50c19jcHUp Ow0KKwkJVERRX0xPQ0tfQVNTRVJUKHRkcSwgTUFfT1dORUQpOw0KKwkJdGRx LT50ZHFfaW50ZXJsb2FkIC09IHRzLT50c19zY29yZTsNCisJCXRkcS0+dGRx X2ludGVybG9hZCArPSBzY29yZTsNCisJfQ0KKwl0cy0+dHNfc2NvcmUgPSBz Y29yZTsNCiB9DQogDQogLyoNCkBAIC0xNTU5LDcgKzE2MTMsNyBAQA0KIHsN CiANCiAJLyogQ29udmVydCBzY2hlZF9zbGljZSB0byBoeiAqLw0KLQlyZXR1 cm4gKGh6LyhyZWFsc3RhdGh6L3NjaGVkX3NsaWNlKSk7DQorCXJldHVybiAo aHovKHJlYWxzdGF0aHovc2NoZWRfc2xpY2VfbWF4KSk7DQogfQ0KIA0KIC8q DQpAQCAtMTU5OCwxNiArMTY1MiwxOSBAQA0KIHNjaGVkX3RocmVhZF9wcmlv cml0eShzdHJ1Y3QgdGhyZWFkICp0ZCwgdV9jaGFyIHByaW8pDQogew0KIAlz dHJ1Y3QgdGRfc2NoZWQgKnRzOw0KKwlzdHJ1Y3QgdGRxICp0ZHE7DQogDQog CUNUUjYoS1RSX1NDSEVELCAic2NoZWRfcHJpbzogJXAoJXMpIHByaW8gJWQg bmV3cHJpbyAlZCBieSAlcCglcykiLA0KIAkgICAgdGQsIHRkLT50ZF9wcm9j LT5wX2NvbW0sIHRkLT50ZF9wcmlvcml0eSwgcHJpbywgY3VydGhyZWFkLA0K IAkgICAgY3VydGhyZWFkLT50ZF9wcm9jLT5wX2NvbW0pOw0KIAl0cyA9IHRk LT50ZF9zY2hlZDsNCisJdGRxID0gVERRX0NQVSh0cy0+dHNfY3B1KTsNCiAJ VEhSRUFEX0xPQ0tfQVNTRVJUKHRkLCBNQV9PV05FRCk7DQotCWlmICh0ZC0+ dGRfcHJpb3JpdHkgPT0gcHJpbykNCisJaWYgKHRkLT50ZF9wcmlvcml0eSA8 PSBwcmlvKSB7DQorCQl0ZC0+dGRfcHJpb3JpdHkgPSBwcmlvOw0KIAkJcmV0 dXJuOw0KLQ0KLQlpZiAoVERfT05fUlVOUSh0ZCkgJiYgcHJpbyA8IHRkLT50 ZF9wcmlvcml0eSkgew0KKwl9DQorCWlmIChURF9PTl9SVU5RKHRkKSkgew0K IAkJLyoNCiAJCSAqIElmIHRoZSBwcmlvcml0eSBoYXMgYmVlbiBlbGV2YXRl ZCBkdWUgdG8gcHJpb3JpdHkNCiAJCSAqIHByb3BhZ2F0aW9uLCB3ZSBtYXkg aGF2ZSB0byBtb3ZlIG91cnNlbHZlcyB0byBhIG5ldw0KQEAgLTE2MTcsMTYg KzE2NzQsMTQgQEANCiAJCXNjaGVkX3JlbSh0ZCk7DQogCQl0ZC0+dGRfcHJp b3JpdHkgPSBwcmlvOw0KIAkJc2NoZWRfYWRkKHRkLCBTUlFfQk9SUk9XSU5H KTsNCi0JfSBlbHNlIHsNCiAjaWZkZWYgU01QDQotCQlzdHJ1Y3QgdGRxICp0 ZHE7DQotDQotCQl0ZHEgPSBURFFfQ1BVKHRzLT50c19jcHUpOw0KKwl9IGVs c2UgaWYgKFREX0lTX1JVTk5JTkcodGQpKSB7DQogCQlpZiAocHJpbyA8IHRk cS0+dGRxX2xvd3ByaSkNCiAJCQl0ZHEtPnRkcV9sb3dwcmkgPSBwcmlvOw0K KwkJdGQtPnRkX3ByaW9yaXR5ID0gcHJpbzsNCiAjZW5kaWYNCisJfSBlbHNl DQogCQl0ZC0+dGRfcHJpb3JpdHkgPSBwcmlvOw0KLQl9DQogfQ0KIA0KIC8q DQpAQCAtMTc3Miw2ICsxODI3LDggQEANCiANCiAJdGRuID0gVERRX0NQVSh0 ZC0+dGRfc2NoZWQtPnRzX2NwdSk7DQogI2lmZGVmIFNNUA0KKwkvKiBUaGUg bG9hZCBpcyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGN1cnJlbnQgY3B1LiAq Lw0KKwl0ZHFfbG9hZF9yZW0odGRxLCB0ZC0+dGRfc2NoZWQpOw0KIAkvKg0K IAkgKiBEbyB0aGUgbG9jayBkYW5jZSByZXF1aXJlZCB0byBhdm9pZCBMT1Iu ICBXZSBncmFiIGFuIGV4dHJhDQogCSAqIHNwaW5sb2NrIG5lc3RpbmcgdG8g cHJldmVudCBwcmVlbXB0aW9uIHdoaWxlIHdlJ3JlDQpAQCAtMTg2MywxMiAr MTkyMCwxMSBAQA0KIAkJVERfU0VUX0NBTl9SVU4odGQpOw0KIAl9IGVsc2Ug aWYgKFREX0lTX1JVTk5JTkcodGQpKSB7DQogCQlNUEFTUyh0ZC0+dGRfbG9j ayA9PSBURFFfTE9DS1BUUih0ZHEpKTsNCi0JCXRkcV9sb2FkX3JlbSh0ZHEs IHRzKTsNCiAJCXNycWZsYWcgPSAoZmxhZ3MgJiBTV19QUkVFTVBUKSA/DQog CQkgICAgU1JRX09VUlNFTEZ8U1JRX1lJRUxESU5HfFNSUV9QUkVFTVBURUQg Og0KIAkJICAgIFNSUV9PVVJTRUxGfFNSUV9ZSUVMRElORzsNCiAJCWlmICh0 cy0+dHNfY3B1ID09IGNwdWlkKQ0KLQkJCXRkcV9hZGQodGRxLCB0ZCwgc3Jx ZmxhZyk7DQorCQkJdGRxX3J1bnFfYWRkKHRkcSwgdHMsIHNycWZsYWcpOw0K IAkJZWxzZQ0KIAkJCW10eCA9IHNjaGVkX3N3aXRjaF9taWdyYXRlKHRkcSwg dGQsIHNycWZsYWcpOw0KIAl9IGVsc2Ugew0KQEAgLTE5NzAsMjIgKzIwMjYs MTggQEANCiAJVEhSRUFEX0xPQ0tfQVNTRVJUKHRkLCBNQV9PV05FRCk7DQog CXRzID0gdGQtPnRkX3NjaGVkOw0KIAkvKg0KLQkgKiBJZiB3ZSBzbGVwdCBm b3IgbW9yZSB0aGFuIGEgdGljayB1cGRhdGUgb3VyIGludGVyYWN0aXZpdHkg YW5kDQotCSAqIHByaW9yaXR5Lg0KKwkgKiBVcGRhdGUgaW50ZXJhY3Rpdml0 eSBhbmQgcHJpb3JpdHkgYWZ0ZXIgYSBzbGVlcC4NCiAJICovDQogCXNscHRp Y2sgPSB0ZC0+dGRfc2xwdGljazsNCiAJdGQtPnRkX3NscHRpY2sgPSAwOw0K LQlpZiAoc2xwdGljayAmJiBzbHB0aWNrICE9IHRpY2tzKSB7DQotCQl1X2lu dCBoenRpY2tzOw0KLQ0KLQkJaHp0aWNrcyA9ICh0aWNrcyAtIHNscHRpY2sp IDw8IFNDSEVEX1RJQ0tfU0hJRlQ7DQotCQl0cy0+dHNfc2xwdGltZSArPSBo enRpY2tzOw0KKwlpZiAoc2xwdGljayAmJiBzbHB0aWNrICE9IHRpY2tzKSAg ew0KKwkJdHMtPnRzX3NscHRpbWUgKz0gKHRpY2tzIC0gc2xwdGljaykgPDwg U0NIRURfVElDS19TSElGVDsNCiAJCXNjaGVkX2ludGVyYWN0X3VwZGF0ZSh0 ZCk7DQogCQlzY2hlZF9wY3RjcHVfdXBkYXRlKHRzKTsNCiAJCXNjaGVkX3By aW9yaXR5KHRkKTsNCisJCS8qIFJlc2V0IHRoZSBzbGljZSB2YWx1ZSBhZnRl ciB3ZSBzbGVlcC4gKi8NCisJCXRzLT50c19zbGljZSA9IDA7DQogCX0NCi0J LyogUmVzZXQgdGhlIHNsaWNlIHZhbHVlIGFmdGVyIHdlIHNsZWVwLiAqLw0K LQl0cy0+dHNfc2xpY2UgPSBzY2hlZF9zbGljZTsNCiAJc2NoZWRfYWRkKHRk LCBTUlFfQk9SSU5HKTsNCiB9DQogDQpAQCAtMjA0MCw3ICsyMDkyLDYgQEAN CiAJICovDQogCXRzMi0+dHNfc2xwdGltZSA9IHRzLT50c19zbHB0aW1lOw0K IAl0czItPnRzX3J1bnRpbWUgPSB0cy0+dHNfcnVudGltZTsNCi0JdHMyLT50 c19zbGljZSA9IDE7CS8qIEF0dGVtcHQgdG8gcXVpY2tseSBsZWFybiBpbnRl cmFjdGl2aXR5LiAqLw0KIH0NCiANCiAvKg0KQEAgLTIxODgsMjUgKzIyMzks MjYgQEANCiAJfQ0KIAl0cyA9IHRkLT50ZF9zY2hlZDsNCiAJLyoNCi0JICog V2Ugb25seSBkbyBzbGljaW5nIGNvZGUgZm9yIFRJTUVTSEFSRSB0aHJlYWRz Lg0KLQkgKi8NCi0JaWYgKHRkLT50ZF9wcmlfY2xhc3MgIT0gUFJJX1RJTUVT SEFSRSkNCi0JCXJldHVybjsNCi0JLyoNCiAJICogV2UgdXNlZCBhIHRpY2s7 IGNoYXJnZSBpdCB0byB0aGUgdGhyZWFkIHNvIHRoYXQgd2UgY2FuIGNvbXB1 dGUgb3VyDQogCSAqIGludGVyYWN0aXZpdHkuDQogCSAqLw0KIAl0ZC0+dGRf c2NoZWQtPnRzX3J1bnRpbWUgKz0gdGlja2luY3I7DQogCXNjaGVkX2ludGVy YWN0X3VwZGF0ZSh0ZCk7DQogCS8qDQorCSAqIFdlIG9ubHkgZG8gc2xpY2lu ZyBjb2RlIGZvciBUSU1FU0hBUkUgdGhyZWFkcy4NCisJICovDQorCWlmICh0 ZC0+dGRfcHJpX2NsYXNzICE9IFBSSV9USU1FU0hBUkUpDQorCQlyZXR1cm47 DQorCXNjaGVkX3ByaW9yaXR5KHRkKTsNCisJLyoNCiAJICogV2UgdXNlZCB1 cCBvbmUgdGltZSBzbGljZS4NCiAJICovDQotCWlmICgtLXRzLT50c19zbGlj ZSA+IDApDQorCWlmICgrK3RzLT50c19zbGljZSA8IHRkcV9zbGljZSh0ZHEp KQ0KIAkJcmV0dXJuOw0KIAkvKg0KLQkgKiBXZSdyZSBvdXQgb2YgdGltZSwg cmVjb21wdXRlIHByaW9yaXRpZXMgYW5kIHJlcXVldWUuDQorCSAqIFdlJ3Jl IG91dCBvZiB0aW1lLCBmb3JjZSBhIHJlcXVldWUgbGF0ZXIuDQogCSAqLw0K LQlzY2hlZF9wcmlvcml0eSh0ZCk7DQorCXRzLT50c19zbGljZSA9IDA7DQog CXRkLT50ZF9mbGFncyB8PSBUREZfTkVFRFJFU0NIRUQ7DQogfQ0KIA0KQEAg LTIzMjgsMTEgKzIzODAsMTAgQEANCiB0ZHFfYWRkKHN0cnVjdCB0ZHEgKnRk cSwgc3RydWN0IHRocmVhZCAqdGQsIGludCBmbGFncykNCiB7DQogCXN0cnVj dCB0ZF9zY2hlZCAqdHM7DQotCWludCBjbGFzczsNCiAjaWZkZWYgU01QDQor CWludCBjbGFzczsNCiAJaW50IGNwdW1hc2s7DQogI2VuZGlmDQotDQogCVRE UV9MT0NLX0FTU0VSVCh0ZHEsIE1BX09XTkVEKTsNCiAJS0FTU0VSVCgodGQt PnRkX2luaGliaXRvcnMgPT0gMCksDQogCSAgICAoInNjaGVkX2FkZDogdHJ5 aW5nIHRvIHJ1biBpbmhpYml0ZWQgdGhyZWFkIikpOw0KQEAgLTIzNDIsMjAg KzIzOTMsMTAgQEANCiAJICAgICgic2NoZWRfYWRkOiB0aHJlYWQgc3dhcHBl ZCBvdXQiKSk7DQogDQogCXRzID0gdGQtPnRkX3NjaGVkOw0KLQljbGFzcyA9 IFBSSV9CQVNFKHRkLT50ZF9wcmlfY2xhc3MpOw0KLSAgICAgICAgVERfU0VU X1JVTlEodGQpOw0KLQlpZiAodHMtPnRzX3NsaWNlID09IDApDQotCQl0cy0+ dHNfc2xpY2UgPSBzY2hlZF9zbGljZTsNCi0JLyoNCi0JICogUGljayB0aGUg cnVuIHF1ZXVlIGJhc2VkIG9uIHByaW9yaXR5Lg0KLQkgKi8NCi0JaWYgKHRk LT50ZF9wcmlvcml0eSA8PSBQUklfTUFYX1JFQUxUSU1FKQ0KLQkJdHMtPnRz X3J1bnEgPSAmdGRxLT50ZHFfcmVhbHRpbWU7DQotCWVsc2UgaWYgKHRkLT50 ZF9wcmlvcml0eSA8PSBQUklfTUFYX1RJTUVTSEFSRSkNCi0JCXRzLT50c19y dW5xID0gJnRkcS0+dGRxX3RpbWVzaGFyZTsNCi0JZWxzZQ0KLQkJdHMtPnRz X3J1bnEgPSAmdGRxLT50ZHFfaWRsZTsNCisJdGRxX3J1bnFfYWRkKHRkcSwg dHMsIGZsYWdzKTsNCisJdGRxX2xvYWRfYWRkKHRkcSwgdHMpOw0KICNpZmRl ZiBTTVANCisJY2xhc3MgPSBQUklfQkFTRSh0ZC0+dGRfcHJpX2NsYXNzKTsN CiAJY3B1bWFzayA9IDEgPDwgdHMtPnRzX2NwdTsNCiAJLyoNCiAJICogSWYg d2UgaGFkIGJlZW4gaWRsZSwgY2xlYXIgb3VyIGJpdCBpbiB0aGUgZ3JvdXAg YW5kIHBvdGVudGlhbGx5DQpAQCAtMjM3OCw4ICsyNDE5LDYgQEANCiAJaWYg KHRkLT50ZF9wcmlvcml0eSA8IHRkcS0+dGRxX2xvd3ByaSkNCiAJCXRkcS0+ dGRxX2xvd3ByaSA9IHRkLT50ZF9wcmlvcml0eTsNCiAjZW5kaWYNCi0JdGRx X3J1bnFfYWRkKHRkcSwgdHMsIGZsYWdzKTsNCi0JdGRxX2xvYWRfYWRkKHRk cSwgdHMpOw0KIH0NCiANCiAvKg0KQEAgLTI2NjAsOCArMjY5OSwxMCBAQA0K ICAgICAiU2NoZWR1bGVyIik7DQogU1lTQ1RMX1NUUklORyhfa2Vybl9zY2hl ZCwgT0lEX0FVVE8sIG5hbWUsIENUTEZMQUdfUkQsICJVTEUiLCAwLA0KICAg ICAiU2NoZWR1bGVyIG5hbWUiKTsNCi1TWVNDVExfSU5UKF9rZXJuX3NjaGVk LCBPSURfQVVUTywgc2xpY2UsIENUTEZMQUdfUlcsICZzY2hlZF9zbGljZSwg MCwNCi0gICAgIlNsaWNlIHNpemUgZm9yIHRpbWVzaGFyZSB0aHJlYWRzIik7 DQorU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIHNsaWNlLCBD VExGTEFHX1JXLCAmc2NoZWRfc2xpY2VfbWF4LCAwLA0KKyAgICAiTWF4aW11 bSBzbGljZSBzaXplIGZvciB0aW1lc2hhcmUgdGhyZWFkcyIpOw0KK1NZU0NU TF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBzbGljZV9taW4sIENUTEZM QUdfUlcsICZzY2hlZF9zbGljZV9taW4sIDAsDQorICAgICJNaW5pbXVtIHNs aWNlIHNpemUgZm9yIHRpbWVzaGFyZSB0aHJlYWRzIik7DQogU1lTQ1RMX0lO VChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIGludGVyYWN0LCBDVExGTEFHX1JX LCAmc2NoZWRfaW50ZXJhY3QsIDAsDQogICAgICAiSW50ZXJhY3Rpdml0eSBz Y29yZSB0aHJlc2hvbGQiKTsNCiBTWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBP SURfQVVUTywgcHJlZW1wdF90aHJlc2gsIENUTEZMQUdfUlcsICZwcmVlbXB0 X3RocmVzaCwNCkBAIC0yNjcxLDcgKzI3MTIsNiBAQA0KICAgICAiUGljayB0 aGUgdGFyZ2V0IGNwdSBiYXNlZCBvbiBwcmlvcml0eSByYXRoZXIgdGhhbiBs b2FkLiIpOw0KIFNZU0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBh ZmZpbml0eSwgQ1RMRkxBR19SVywgJmFmZmluaXR5LCAwLA0KICAgICAiTnVt YmVyIG9mIGh6IHRpY2tzIHRvIGtlZXAgdGhyZWFkIGFmZmluaXR5IGZvciIp Ow0KLVNZU0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCB0cnlzZWxm LCBDVExGTEFHX1JXLCAmdHJ5c2VsZiwgMCwgIiIpOw0KIFNZU0NUTF9JTlQo X2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBiYWxhbmNlLCBDVExGTEFHX1JXLCAm cmViYWxhbmNlLCAwLA0KICAgICAiRW5hYmxlcyB0aGUgbG9uZy10ZXJtIGxv YWQgYmFsYW5jZXIiKTsNCiBTWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBPSURf QVVUTywgYmFsYW5jZV9pbnRlcnZhbCwgQ1RMRkxBR19SVywNCg== --0-341352189-1194191606=:18739--