From owner-freebsd-performance@FreeBSD.ORG Sun Nov 4 20:28:04 2007 Return-Path: Delivered-To: freebsd-performance@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9C4E616A417 for ; Sun, 4 Nov 2007 20:28:04 +0000 (UTC) (envelope-from jroberson@chesapeake.net) Received: from webaccess-cl.virtdom.com (webaccess-cl.virtdom.com [216.240.101.25]) by mx1.freebsd.org (Postfix) with ESMTP id 020D413C48A for ; Sun, 4 Nov 2007 20:28:03 +0000 (UTC) (envelope-from jroberson@chesapeake.net) Received: from [192.168.1.100] (cpe-24-94-75-93.hawaii.res.rr.com [24.94.75.93]) (authenticated bits=0) by webaccess-cl.virtdom.com (8.13.6/8.13.6) with ESMTP id lA4KRcte017822 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO); Sun, 4 Nov 2007 15:27:40 -0500 (EST) (envelope-from jroberson@chesapeake.net) Date: Sun, 4 Nov 2007 12:29:36 -0800 (PST) From: Jeff Roberson X-X-Sender: jroberson@10.0.0.1 To: Josh Carroll In-Reply-To: <8cb6106e0711032221i2ecf1d59ge82f368d4162a827@mail.gmail.com> Message-ID: <20071104122546.S544@10.0.0.1> References: <8cb6106e0710230902x4edf2c8eu2d912d5de1f5d4a2@mail.gmail.com> <8cb6106e0710251925s2db0117cvcb67321b08d7b2a1@mail.gmail.com> <20071102102331.G544@10.0.0.1> <8cb6106e0711021306w10c48a15s99eab526064ac814@mail.gmail.com> <20071102150028.R544@10.0.0.1> <8cb6106e0711021839i4714bdfbh74d412b3e14e808@mail.gmail.com> <8cb6106e0711031227t1e829969s2e6062e1db5167af@mail.gmail.com> <20071103121921.M544@10.0.0.1> <8cb6106e0711031416l4183e2beueb87fade0d56f504@mail.gmail.com> <20071103133711.Q544@10.0.0.1> <8cb6106e0711032221i2ecf1d59ge82f368d4162a827@mail.gmail.com> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-799710710-1194208176=:544" Cc: freebsd-performance@freebsd.org Subject: Re: ULE vs. 4BSD in RELENG_7 X-BeenThere: freebsd-performance@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Performance/tuning List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Nov 2007 20:28:04 -0000 This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --0-799710710-1194208176=:544 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Sun, 4 Nov 2007, Josh Carroll wrote: >> Josh, thanks for your help so far. This has been very useful. > > You're welcome, glad to help! Thanks for the effort and the patch. > >> Any testing you can run this through is appreciated. Anyone else lurking >> in this thread who would like to is also welcome to report back findings. > > Here are a few benchmarks comparing ULE and the patched ULE. I > experimented in changing the slice_min value from 2 to 4, in case that > might be useful info for you. Hopefully that helps a bit, but if not > it's just a few minutes of CPU time wasted :) Josh, I included one too many changes in the diff and it made the results ambiguous. I've scaled it back slightly by removing the changes to sched_pickcpu() and included the patch in this email again. Can you run through your tests once more? I'd like to commit this part soon as it helps in other cases. I'm most interested in the buildworld numbers for now. Thanks, Jeff > > Sysbench results: > # threads slice=7 slice=13 slice_min=4 slice_min=2 > 4 2265.67 2250.36 2261.71 2297.08 > 8 2300.25 2310.02 2306.79 2313.61 > 12 2269.54 2304.04 2296.54 2279.73 > 16 2249.26 2252.04 2260.53 2245.76 > > It looks like with the default minimum (2), the performance for systat > is better with 4 and 8 threads (on a 4 core system), but worse for 12 > and 16 threads. > > Here are the results for ffmpeg (-threads 8): > > slice=7 slice=13 slice_min=4 slice_min=2 > 1:37.00 1:39.09 1:38.12 1:38.06 > > The patch definitely improves things there, though not quite as good > as using a slice value of 7. But it does improve things. So it > slightly improves things for ffmpeg and also slightly increases the > performance of sysbench/MySQL (with 8 threads). > > I also ran through buildworld for both slice_min of 2 and 4, and here > are the results, again with ULE as a base line: > > slice=7 slice=13 slice_min=4 slice_min=2 > 13:40.56 13:44.28 13:46.64 13:45.80 > > So buildworld performance is about the same as with the default ULE > and default slice value. > > Thanks, > Josh > _______________________________________________ > freebsd-performance@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-performance > To unsubscribe, send any mail to "freebsd-performance-unsubscribe@freebsd.org" > --0-799710710-1194208176=:544 Content-Type: TEXT/x-diff; charset=US-ASCII; name=uleslice.diff Content-Transfer-Encoding: BASE64 Content-ID: <20071104122936.D544@10.0.0.1> Content-Description: Content-Disposition: attachment; filename=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 Y3B1ID0gdHMtPnRzX2NwdTsNCiAJLyoNCkBAIC0xMTc1LDYgKzEyMjUsNyBA QA0KIAlydW5xX2luaXQoJnRkcS0+dGRxX3RpbWVzaGFyZSk7DQogCXJ1bnFf aW5pdCgmdGRxLT50ZHFfaWRsZSk7DQogCXRkcS0+dGRxX2xvYWQgPSAwOw0K Kwl0ZHEtPnRkcV9pbnRlcmxvYWQgPSAwOw0KIH0NCiANCiAjaWZkZWYgU01Q DQpAQCAtMTMyNCwxMiArMTM3NSwxMiBAQA0KIAkgKiBpbiBjYXNlIHdoaWNo IHNjaGVkX2Nsb2NrKCkgY2FsbGVkIGJlZm9yZSBzY2hlZF9pbml0dGlja3Mo KS4NCiAJICovDQogCXJlYWxzdGF0aHogPSBoejsNCi0Jc2NoZWRfc2xpY2Ug PSAocmVhbHN0YXRoei8xMCk7CS8qIH4xMDBtcyAqLw0KIAl0aWNraW5jciA9 IDEgPDwgU0NIRURfVElDS19TSElGVDsNCiANCiAJLyogQWRkIHRocmVhZDAn cyBsb2FkIHNpbmNlIGl0J3MgcnVubmluZy4gKi8NCiAJVERRX0xPQ0sodGRx KTsNCiAJdGhyZWFkMC50ZF9sb2NrID0gVERRX0xPQ0tQVFIoVERRX1NFTEYo KSk7DQorCXRkX3NjaGVkMC50c19zY29yZSA9IDA7DQogCXRkcV9sb2FkX2Fk ZCh0ZHEsICZ0ZF9zY2hlZDApOw0KIAlURFFfVU5MT0NLKHRkcSk7DQogfQ0K QEAgLTEzNDQsNyArMTM5NSw4IEBADQogCWludCBpbmNyOw0KIA0KIAlyZWFs c3RhdGh6ID0gc3RhdGh6ID8gc3RhdGh6IDogaHo7DQotCXNjaGVkX3NsaWNl ID0gKHJlYWxzdGF0aHovMTApOwkvKiB+MTAwbXMgKi8NCisJc2NoZWRfc2xp Y2VfbWF4ID0gcmVhbHN0YXRoeiAvIDE1OwkvKiB+NjZtcyAqLw0KKwlzY2hl ZF9zbGljZV9taW4gPSByZWFsc3RhdGh6IC8gNTA7CS8qIH4yMG1zICovDQog DQogCS8qDQogCSAqIHRpY2tpbmNyIGlzIHNoaWZ0ZWQgb3V0IGJ5IDEwIHRv IGF2b2lkIHJvdW5kaW5nIGVycm9ycyBkdWUgdG8NCkBAIC0xMzc0LDcgKzE0 MjYsNiBAQA0KICNlbmRpZg0KIH0NCiANCi0NCiAvKg0KICAqIFRoaXMgaXMg dGhlIGNvcmUgb2YgdGhlIGludGVyYWN0aXZpdHkgYWxnb3JpdGhtLiAgRGV0 ZXJtaW5lcyBhIHNjb3JlIGJhc2VkDQogICogb24gcGFzdCBiZWhhdmlvci4g IEl0IGlzIHRoZSByYXRpbyBvZiBzbGVlcCB0aW1lIHRvIHJ1biB0aW1lIHNj YWxlZCB0bw0KQEAgLTEzODksMTUgKzE0NDAsNiBAQA0KIAlpbnQgZGl2Ow0K IA0KIAl0cyA9IHRkLT50ZF9zY2hlZDsNCi0JLyoNCi0JICogVGhlIHNjb3Jl IGlzIG9ubHkgbmVlZGVkIGlmIHRoaXMgaXMgbGlrZWx5IHRvIGJlIGFuIGlu dGVyYWN0aXZlDQotCSAqIHRhc2suICBEb24ndCBnbyB0aHJvdWdoIHRoZSBl eHBlbnNlIG9mIGNvbXB1dGluZyBpdCBpZiB0aGVyZSdzDQotCSAqIG5vIGNo YW5jZS4NCi0JICovDQotCWlmIChzY2hlZF9pbnRlcmFjdCA8PSBTQ0hFRF9J TlRFUkFDVF9IQUxGICYmDQotCQl0cy0+dHNfcnVudGltZSA+PSB0cy0+dHNf c2xwdGltZSkNCi0JCQlyZXR1cm4gKFNDSEVEX0lOVEVSQUNUX0hBTEYpOw0K LQ0KIAlpZiAodHMtPnRzX3J1bnRpbWUgPiB0cy0+dHNfc2xwdGltZSkgew0K IAkJZGl2ID0gbWF4KDEsIHRzLT50c19ydW50aW1lIC8gU0NIRURfSU5URVJB Q1RfSEFMRik7DQogCQlyZXR1cm4gKFNDSEVEX0lOVEVSQUNUX0hBTEYgKw0K QEAgLTE0NDMsNyArMTQ4NSw3IEBADQogCSAqIHNjb3JlLiAgTmVnYXRpdmUg bmljZSB2YWx1ZXMgbWFrZSBpdCBlYXNpZXIgZm9yIGEgdGhyZWFkIHRvIGJl DQogCSAqIGNvbnNpZGVyZWQgaW50ZXJhY3RpdmUuDQogCSAqLw0KLQlzY29y ZSA9IGltYXgoMCwgc2NoZWRfaW50ZXJhY3Rfc2NvcmUodGQpIC0gdGQtPnRk X3Byb2MtPnBfbmljZSk7DQorCXNjb3JlID0gaW1heCgwLCB0ZC0+dGRfc2No ZWQtPnRzX3Njb3JlIC0gdGQtPnRkX3Byb2MtPnBfbmljZSk7DQogCWlmIChz Y29yZSA8IHNjaGVkX2ludGVyYWN0KSB7DQogCQlwcmkgPSBQUklfTUlOX1JF QUxUSU1FOw0KIAkJcHJpICs9ICgoUFJJX01BWF9SRUFMVElNRSAtIFBSSV9N SU5fUkVBTFRJTUUpIC8gc2NoZWRfaW50ZXJhY3QpDQpAQCAtMTQ3NywxMiAr MTUxOSwxNSBAQA0KIHNjaGVkX2ludGVyYWN0X3VwZGF0ZShzdHJ1Y3QgdGhy ZWFkICp0ZCkNCiB7DQogCXN0cnVjdCB0ZF9zY2hlZCAqdHM7DQorCXN0cnVj dCB0ZHEgKnRkcTsNCiAJdV9pbnQgc3VtOw0KKwlpbnQgc2NvcmU7DQogDQor CVRIUkVBRF9MT0NLX0FTU0VSVCh0ZCwgTUFfT1dORUQpOw0KIAl0cyA9IHRk LT50ZF9zY2hlZDsNCiAJc3VtID0gdHMtPnRzX3J1bnRpbWUgKyB0cy0+dHNf c2xwdGltZTsNCiAJaWYgKHN1bSA8IFNDSEVEX1NMUF9SVU5fTUFYKQ0KLQkJ cmV0dXJuOw0KKwkJZ290byBzY29yZTsNCiAJLyoNCiAJICogVGhpcyBvbmx5 IGhhcHBlbnMgZnJvbSB0d28gcGxhY2VzOg0KIAkgKiAxKSBXZSBoYXZlIGFk ZGVkIGFuIHVudXN1YWwgYW1vdW50IG9mIHJ1biB0aW1lIGZyb20gZm9ya19l eGl0Lg0KQEAgLTE0OTAsMTMgKzE1MzUsMTMgQEANCiAJICovDQogCWlmIChz dW0gPiBTQ0hFRF9TTFBfUlVOX01BWCAqIDIpIHsNCiAJCWlmICh0cy0+dHNf cnVudGltZSA+IHRzLT50c19zbHB0aW1lKSB7DQotCQkJdHMtPnRzX3J1bnRp bWUgPSBTQ0hFRF9TTFBfUlVOX01BWDsNCisJCQl0cy0+dHNfcnVudGltZSA9 IFNDSEVEX1NMUF9SVU5fTUFYIC8gMjsNCiAJCQl0cy0+dHNfc2xwdGltZSA9 IDE7DQogCQl9IGVsc2Ugew0KLQkJCXRzLT50c19zbHB0aW1lID0gU0NIRURf U0xQX1JVTl9NQVg7DQorCQkJdHMtPnRzX3NscHRpbWUgPSBTQ0hFRF9TTFBf UlVOX01BWCAvIDI7DQogCQkJdHMtPnRzX3J1bnRpbWUgPSAxOw0KIAkJfQ0K LQkJcmV0dXJuOw0KKwkJZ290byBzY29yZTsNCiAJfQ0KIAkvKg0KIAkgKiBJ ZiB3ZSBoYXZlIGV4Y2VlZGVkIGJ5IG1vcmUgdGhhbiAxLzV0aCB0aGVuIHRo ZSBhbGdvcml0aG0gYmVsb3cNCkBAIC0xNTA2LDEwICsxNTUxLDE5IEBADQog CWlmIChzdW0gPiAoU0NIRURfU0xQX1JVTl9NQVggLyA1KSAqIDYpIHsNCiAJ CXRzLT50c19ydW50aW1lIC89IDI7DQogCQl0cy0+dHNfc2xwdGltZSAvPSAy Ow0KLQkJcmV0dXJuOw0KKwkJZ290byBzY29yZTsNCiAJfQ0KIAl0cy0+dHNf cnVudGltZSA9ICh0cy0+dHNfcnVudGltZSAvIDUpICogNDsNCiAJdHMtPnRz X3NscHRpbWUgPSAodHMtPnRzX3NscHRpbWUgLyA1KSAqIDQ7DQorc2NvcmU6 DQorCXNjb3JlID0gc2NoZWRfaW50ZXJhY3Rfc2NvcmUodGQpOw0KKwlpZiAo dHMtPnRzX2ZsYWdzICYgVFNGX0lOVEVSTE9BRCkgew0KKwkJdGRxID0gVERR X0NQVSh0cy0+dHNfY3B1KTsNCisJCVREUV9MT0NLX0FTU0VSVCh0ZHEsIE1B X09XTkVEKTsNCisJCXRkcS0+dGRxX2ludGVybG9hZCAtPSB0cy0+dHNfc2Nv cmU7DQorCQl0ZHEtPnRkcV9pbnRlcmxvYWQgKz0gc2NvcmU7DQorCX0NCisJ dHMtPnRzX3Njb3JlID0gc2NvcmU7DQogfQ0KIA0KIC8qDQpAQCAtMTU1OSw3 ICsxNjEzLDcgQEANCiB7DQogDQogCS8qIENvbnZlcnQgc2NoZWRfc2xpY2Ug dG8gaHogKi8NCi0JcmV0dXJuIChoei8ocmVhbHN0YXRoei9zY2hlZF9zbGlj ZSkpOw0KKwlyZXR1cm4gKGh6LyhyZWFsc3RhdGh6L3NjaGVkX3NsaWNlX21h eCkpOw0KIH0NCiANCiAvKg0KQEAgLTE1OTgsMTYgKzE2NTIsMTkgQEANCiBz Y2hlZF90aHJlYWRfcHJpb3JpdHkoc3RydWN0IHRocmVhZCAqdGQsIHVfY2hh ciBwcmlvKQ0KIHsNCiAJc3RydWN0IHRkX3NjaGVkICp0czsNCisJc3RydWN0 IHRkcSAqdGRxOw0KIA0KIAlDVFI2KEtUUl9TQ0hFRCwgInNjaGVkX3ByaW86 ICVwKCVzKSBwcmlvICVkIG5ld3ByaW8gJWQgYnkgJXAoJXMpIiwNCiAJICAg IHRkLCB0ZC0+dGRfcHJvYy0+cF9jb21tLCB0ZC0+dGRfcHJpb3JpdHksIHBy aW8sIGN1cnRocmVhZCwNCiAJICAgIGN1cnRocmVhZC0+dGRfcHJvYy0+cF9j b21tKTsNCiAJdHMgPSB0ZC0+dGRfc2NoZWQ7DQorCXRkcSA9IFREUV9DUFUo dHMtPnRzX2NwdSk7DQogCVRIUkVBRF9MT0NLX0FTU0VSVCh0ZCwgTUFfT1dO RUQpOw0KLQlpZiAodGQtPnRkX3ByaW9yaXR5ID09IHByaW8pDQorCWlmICh0 ZC0+dGRfcHJpb3JpdHkgPD0gcHJpbykgew0KKwkJdGQtPnRkX3ByaW9yaXR5 ID0gcHJpbzsNCiAJCXJldHVybjsNCi0NCi0JaWYgKFREX09OX1JVTlEodGQp ICYmIHByaW8gPCB0ZC0+dGRfcHJpb3JpdHkpIHsNCisJfQ0KKwlpZiAoVERf T05fUlVOUSh0ZCkpIHsNCiAJCS8qDQogCQkgKiBJZiB0aGUgcHJpb3JpdHkg aGFzIGJlZW4gZWxldmF0ZWQgZHVlIHRvIHByaW9yaXR5DQogCQkgKiBwcm9w YWdhdGlvbiwgd2UgbWF5IGhhdmUgdG8gbW92ZSBvdXJzZWx2ZXMgdG8gYSBu ZXcNCkBAIC0xNjE3LDE2ICsxNjc0LDE0IEBADQogCQlzY2hlZF9yZW0odGQp Ow0KIAkJdGQtPnRkX3ByaW9yaXR5ID0gcHJpbzsNCiAJCXNjaGVkX2FkZCh0 ZCwgU1JRX0JPUlJPV0lORyk7DQotCX0gZWxzZSB7DQogI2lmZGVmIFNNUA0K LQkJc3RydWN0IHRkcSAqdGRxOw0KLQ0KLQkJdGRxID0gVERRX0NQVSh0cy0+ dHNfY3B1KTsNCisJfSBlbHNlIGlmIChURF9JU19SVU5OSU5HKHRkKSkgew0K IAkJaWYgKHByaW8gPCB0ZHEtPnRkcV9sb3dwcmkpDQogCQkJdGRxLT50ZHFf bG93cHJpID0gcHJpbzsNCisJCXRkLT50ZF9wcmlvcml0eSA9IHByaW87DQog I2VuZGlmDQorCX0gZWxzZQ0KIAkJdGQtPnRkX3ByaW9yaXR5ID0gcHJpbzsN Ci0JfQ0KIH0NCiANCiAvKg0KQEAgLTE3NzIsNiArMTgyNyw4IEBADQogDQog CXRkbiA9IFREUV9DUFUodGQtPnRkX3NjaGVkLT50c19jcHUpOw0KICNpZmRl ZiBTTVANCisJLyogVGhlIGxvYWQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9tIHRo ZSBjdXJyZW50IGNwdS4gKi8NCisJdGRxX2xvYWRfcmVtKHRkcSwgdGQtPnRk X3NjaGVkKTsNCiAJLyoNCiAJICogRG8gdGhlIGxvY2sgZGFuY2UgcmVxdWly ZWQgdG8gYXZvaWQgTE9SLiAgV2UgZ3JhYiBhbiBleHRyYQ0KIAkgKiBzcGlu bG9jayBuZXN0aW5nIHRvIHByZXZlbnQgcHJlZW1wdGlvbiB3aGlsZSB3ZSdy ZQ0KQEAgLTE4NjMsMTIgKzE5MjAsMTEgQEANCiAJCVREX1NFVF9DQU5fUlVO KHRkKTsNCiAJfSBlbHNlIGlmIChURF9JU19SVU5OSU5HKHRkKSkgew0KIAkJ TVBBU1ModGQtPnRkX2xvY2sgPT0gVERRX0xPQ0tQVFIodGRxKSk7DQotCQl0 ZHFfbG9hZF9yZW0odGRxLCB0cyk7DQogCQlzcnFmbGFnID0gKGZsYWdzICYg U1dfUFJFRU1QVCkgPw0KIAkJICAgIFNSUV9PVVJTRUxGfFNSUV9ZSUVMRElO R3xTUlFfUFJFRU1QVEVEIDoNCiAJCSAgICBTUlFfT1VSU0VMRnxTUlFfWUlF TERJTkc7DQogCQlpZiAodHMtPnRzX2NwdSA9PSBjcHVpZCkNCi0JCQl0ZHFf YWRkKHRkcSwgdGQsIHNycWZsYWcpOw0KKwkJCXRkcV9ydW5xX2FkZCh0ZHEs IHRzLCBzcnFmbGFnKTsNCiAJCWVsc2UNCiAJCQltdHggPSBzY2hlZF9zd2l0 Y2hfbWlncmF0ZSh0ZHEsIHRkLCBzcnFmbGFnKTsNCiAJfSBlbHNlIHsNCkBA IC0xOTcwLDIyICsyMDI2LDE4IEBADQogCVRIUkVBRF9MT0NLX0FTU0VSVCh0 ZCwgTUFfT1dORUQpOw0KIAl0cyA9IHRkLT50ZF9zY2hlZDsNCiAJLyoNCi0J ICogSWYgd2Ugc2xlcHQgZm9yIG1vcmUgdGhhbiBhIHRpY2sgdXBkYXRlIG91 ciBpbnRlcmFjdGl2aXR5IGFuZA0KLQkgKiBwcmlvcml0eS4NCisJICogVXBk YXRlIGludGVyYWN0aXZpdHkgYW5kIHByaW9yaXR5IGFmdGVyIGEgc2xlZXAu DQogCSAqLw0KIAlzbHB0aWNrID0gdGQtPnRkX3NscHRpY2s7DQogCXRkLT50 ZF9zbHB0aWNrID0gMDsNCi0JaWYgKHNscHRpY2sgJiYgc2xwdGljayAhPSB0 aWNrcykgew0KLQkJdV9pbnQgaHp0aWNrczsNCi0NCi0JCWh6dGlja3MgPSAo dGlja3MgLSBzbHB0aWNrKSA8PCBTQ0hFRF9USUNLX1NISUZUOw0KLQkJdHMt PnRzX3NscHRpbWUgKz0gaHp0aWNrczsNCisJaWYgKHNscHRpY2sgJiYgc2xw dGljayAhPSB0aWNrcykgIHsNCisJCXRzLT50c19zbHB0aW1lICs9ICh0aWNr cyAtIHNscHRpY2spIDw8IFNDSEVEX1RJQ0tfU0hJRlQ7DQogCQlzY2hlZF9p bnRlcmFjdF91cGRhdGUodGQpOw0KIAkJc2NoZWRfcGN0Y3B1X3VwZGF0ZSh0 cyk7DQogCQlzY2hlZF9wcmlvcml0eSh0ZCk7DQorCQkvKiBSZXNldCB0aGUg c2xpY2UgdmFsdWUgYWZ0ZXIgd2Ugc2xlZXAuICovDQorCQl0cy0+dHNfc2xp Y2UgPSAwOw0KIAl9DQotCS8qIFJlc2V0IHRoZSBzbGljZSB2YWx1ZSBhZnRl ciB3ZSBzbGVlcC4gKi8NCi0JdHMtPnRzX3NsaWNlID0gc2NoZWRfc2xpY2U7 DQogCXNjaGVkX2FkZCh0ZCwgU1JRX0JPUklORyk7DQogfQ0KIA0KQEAgLTIw NDAsNyArMjA5Miw2IEBADQogCSAqLw0KIAl0czItPnRzX3NscHRpbWUgPSB0 cy0+dHNfc2xwdGltZTsNCiAJdHMyLT50c19ydW50aW1lID0gdHMtPnRzX3J1 bnRpbWU7DQotCXRzMi0+dHNfc2xpY2UgPSAxOwkvKiBBdHRlbXB0IHRvIHF1 aWNrbHkgbGVhcm4gaW50ZXJhY3Rpdml0eS4gKi8NCiB9DQogDQogLyoNCkBA IC0yMTg4LDI1ICsyMjM5LDI2IEBADQogCX0NCiAJdHMgPSB0ZC0+dGRfc2No ZWQ7DQogCS8qDQotCSAqIFdlIG9ubHkgZG8gc2xpY2luZyBjb2RlIGZvciBU SU1FU0hBUkUgdGhyZWFkcy4NCi0JICovDQotCWlmICh0ZC0+dGRfcHJpX2Ns YXNzICE9IFBSSV9USU1FU0hBUkUpDQotCQlyZXR1cm47DQotCS8qDQogCSAq IFdlIHVzZWQgYSB0aWNrOyBjaGFyZ2UgaXQgdG8gdGhlIHRocmVhZCBzbyB0 aGF0IHdlIGNhbiBjb21wdXRlIG91cg0KIAkgKiBpbnRlcmFjdGl2aXR5Lg0K IAkgKi8NCiAJdGQtPnRkX3NjaGVkLT50c19ydW50aW1lICs9IHRpY2tpbmNy Ow0KIAlzY2hlZF9pbnRlcmFjdF91cGRhdGUodGQpOw0KIAkvKg0KKwkgKiBX ZSBvbmx5IGRvIHNsaWNpbmcgY29kZSBmb3IgVElNRVNIQVJFIHRocmVhZHMu DQorCSAqLw0KKwlpZiAodGQtPnRkX3ByaV9jbGFzcyAhPSBQUklfVElNRVNI QVJFKQ0KKwkJcmV0dXJuOw0KKwlzY2hlZF9wcmlvcml0eSh0ZCk7DQorCS8q DQogCSAqIFdlIHVzZWQgdXAgb25lIHRpbWUgc2xpY2UuDQogCSAqLw0KLQlp ZiAoLS10cy0+dHNfc2xpY2UgPiAwKQ0KKwlpZiAoKyt0cy0+dHNfc2xpY2Ug PCB0ZHFfc2xpY2UodGRxKSkNCiAJCXJldHVybjsNCiAJLyoNCi0JICogV2Un cmUgb3V0IG9mIHRpbWUsIHJlY29tcHV0ZSBwcmlvcml0aWVzIGFuZCByZXF1 ZXVlLg0KKwkgKiBXZSdyZSBvdXQgb2YgdGltZSwgZm9yY2UgYSByZXF1ZXVl IGxhdGVyLg0KIAkgKi8NCi0Jc2NoZWRfcHJpb3JpdHkodGQpOw0KKwl0cy0+ dHNfc2xpY2UgPSAwOw0KIAl0ZC0+dGRfZmxhZ3MgfD0gVERGX05FRURSRVND SEVEOw0KIH0NCiANCkBAIC0yMzI4LDExICsyMzgwLDEwIEBADQogdGRxX2Fk ZChzdHJ1Y3QgdGRxICp0ZHEsIHN0cnVjdCB0aHJlYWQgKnRkLCBpbnQgZmxh Z3MpDQogew0KIAlzdHJ1Y3QgdGRfc2NoZWQgKnRzOw0KLQlpbnQgY2xhc3M7 DQogI2lmZGVmIFNNUA0KKwlpbnQgY2xhc3M7DQogCWludCBjcHVtYXNrOw0K ICNlbmRpZg0KLQ0KIAlURFFfTE9DS19BU1NFUlQodGRxLCBNQV9PV05FRCk7 DQogCUtBU1NFUlQoKHRkLT50ZF9pbmhpYml0b3JzID09IDApLA0KIAkgICAg KCJzY2hlZF9hZGQ6IHRyeWluZyB0byBydW4gaW5oaWJpdGVkIHRocmVhZCIp KTsNCkBAIC0yMzQyLDIwICsyMzkzLDEwIEBADQogCSAgICAoInNjaGVkX2Fk ZDogdGhyZWFkIHN3YXBwZWQgb3V0IikpOw0KIA0KIAl0cyA9IHRkLT50ZF9z Y2hlZDsNCi0JY2xhc3MgPSBQUklfQkFTRSh0ZC0+dGRfcHJpX2NsYXNzKTsN Ci0gICAgICAgIFREX1NFVF9SVU5RKHRkKTsNCi0JaWYgKHRzLT50c19zbGlj ZSA9PSAwKQ0KLQkJdHMtPnRzX3NsaWNlID0gc2NoZWRfc2xpY2U7DQotCS8q DQotCSAqIFBpY2sgdGhlIHJ1biBxdWV1ZSBiYXNlZCBvbiBwcmlvcml0eS4N Ci0JICovDQotCWlmICh0ZC0+dGRfcHJpb3JpdHkgPD0gUFJJX01BWF9SRUFM VElNRSkNCi0JCXRzLT50c19ydW5xID0gJnRkcS0+dGRxX3JlYWx0aW1lOw0K LQllbHNlIGlmICh0ZC0+dGRfcHJpb3JpdHkgPD0gUFJJX01BWF9USU1FU0hB UkUpDQotCQl0cy0+dHNfcnVucSA9ICZ0ZHEtPnRkcV90aW1lc2hhcmU7DQot CWVsc2UNCi0JCXRzLT50c19ydW5xID0gJnRkcS0+dGRxX2lkbGU7DQorCXRk cV9ydW5xX2FkZCh0ZHEsIHRzLCBmbGFncyk7DQorCXRkcV9sb2FkX2FkZCh0 ZHEsIHRzKTsNCiAjaWZkZWYgU01QDQorCWNsYXNzID0gUFJJX0JBU0UodGQt PnRkX3ByaV9jbGFzcyk7DQogCWNwdW1hc2sgPSAxIDw8IHRzLT50c19jcHU7 DQogCS8qDQogCSAqIElmIHdlIGhhZCBiZWVuIGlkbGUsIGNsZWFyIG91ciBi aXQgaW4gdGhlIGdyb3VwIGFuZCBwb3RlbnRpYWxseQ0KQEAgLTIzNzgsOCAr MjQxOSw2IEBADQogCWlmICh0ZC0+dGRfcHJpb3JpdHkgPCB0ZHEtPnRkcV9s b3dwcmkpDQogCQl0ZHEtPnRkcV9sb3dwcmkgPSB0ZC0+dGRfcHJpb3JpdHk7 DQogI2VuZGlmDQotCXRkcV9ydW5xX2FkZCh0ZHEsIHRzLCBmbGFncyk7DQot CXRkcV9sb2FkX2FkZCh0ZHEsIHRzKTsNCiB9DQogDQogLyoNCkBAIC0yNjYw LDggKzI2OTksMTAgQEANCiAgICAgIlNjaGVkdWxlciIpOw0KIFNZU0NUTF9T VFJJTkcoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBuYW1lLCBDVExGTEFHX1JE LCAiVUxFIiwgMCwNCiAgICAgIlNjaGVkdWxlciBuYW1lIik7DQotU1lTQ1RM X0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIHNsaWNlLCBDVExGTEFHX1JX LCAmc2NoZWRfc2xpY2UsIDAsDQotICAgICJTbGljZSBzaXplIGZvciB0aW1l c2hhcmUgdGhyZWFkcyIpOw0KK1NZU0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9J RF9BVVRPLCBzbGljZSwgQ1RMRkxBR19SVywgJnNjaGVkX3NsaWNlX21heCwg MCwNCisgICAgIk1heGltdW0gc2xpY2Ugc2l6ZSBmb3IgdGltZXNoYXJlIHRo cmVhZHMiKTsNCitTWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBPSURfQVVUTywg c2xpY2VfbWluLCBDVExGTEFHX1JXLCAmc2NoZWRfc2xpY2VfbWluLCAwLA0K KyAgICAiTWluaW11bSBzbGljZSBzaXplIGZvciB0aW1lc2hhcmUgdGhyZWFk cyIpOw0KIFNZU0NUTF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBpbnRl cmFjdCwgQ1RMRkxBR19SVywgJnNjaGVkX2ludGVyYWN0LCAwLA0KICAgICAg IkludGVyYWN0aXZpdHkgc2NvcmUgdGhyZXNob2xkIik7DQogU1lTQ1RMX0lO VChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIHByZWVtcHRfdGhyZXNoLCBDVExG TEFHX1JXLCAmcHJlZW1wdF90aHJlc2gsDQpAQCAtMjY3MSw3ICsyNzEyLDYg QEANCiAgICAgIlBpY2sgdGhlIHRhcmdldCBjcHUgYmFzZWQgb24gcHJpb3Jp dHkgcmF0aGVyIHRoYW4gbG9hZC4iKTsNCiBTWVNDVExfSU5UKF9rZXJuX3Nj aGVkLCBPSURfQVVUTywgYWZmaW5pdHksIENUTEZMQUdfUlcsICZhZmZpbml0 eSwgMCwNCiAgICAgIk51bWJlciBvZiBoeiB0aWNrcyB0byBrZWVwIHRocmVh ZCBhZmZpbml0eSBmb3IiKTsNCi1TWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBP SURfQVVUTywgdHJ5c2VsZiwgQ1RMRkxBR19SVywgJnRyeXNlbGYsIDAsICIi KTsNCiBTWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBPSURfQVVUTywgYmFsYW5j ZSwgQ1RMRkxBR19SVywgJnJlYmFsYW5jZSwgMCwNCiAgICAgIkVuYWJsZXMg dGhlIGxvbmctdGVybSBsb2FkIGJhbGFuY2VyIik7DQogU1lTQ1RMX0lOVChf a2Vybl9zY2hlZCwgT0lEX0FVVE8sIGJhbGFuY2VfaW50ZXJ2YWwsIENUTEZM QUdfUlcsDQo= --0-799710710-1194208176=:544--