From owner-freebsd-performance@FreeBSD.ORG Sun Nov 4 23:30:57 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 A0C9A16A419 for ; Sun, 4 Nov 2007 23:30:57 +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 E8E6213C4B6 for ; Sun, 4 Nov 2007 23:30:56 +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 lA4NHZgM047526 (version=TLSv1/SSLv3 cipher=DHE-DSS-AES256-SHA bits=256 verify=NO); Sun, 4 Nov 2007 18:17:36 -0500 (EST) (envelope-from jroberson@chesapeake.net) Date: Sun, 4 Nov 2007 15:19:32 -0800 (PST) From: Jeff Roberson X-X-Sender: jroberson@10.0.0.1 To: Josh Carroll In-Reply-To: <8cb6106e0711041243s37ef92e3i9c5c79827f547dbb@mail.gmail.com> Message-ID: <20071104151722.M544@10.0.0.1> References: <8cb6106e0710230902x4edf2c8eu2d912d5de1f5d4a2@mail.gmail.com> <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> <20071104122546.S544@10.0.0.1> <8cb6106e0711041243s37ef92e3i9c5c79827f547dbb@mail.gmail.com> MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="0-603731913-1194218372=: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 23:30:57 -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-603731913-1194218372=:544 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed On Sun, 4 Nov 2007, Josh Carroll wrote: >> 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. > > Sure, I can run through them. Should I change the slice_min value at > all during testing to compare different values? Or is that part of the > other patch that is not included in this (haven't fetched and grep'd > it yet). :) > > I'll get the benchmark numbers as soon as I can. Turns out the last patch I posted had a small compile error because I edited it by hand to remove one section. Here's an updated patch that fixes that and changes the min/max slice values to something more reasonable. Slice min should be around 4 with a max of 12. Also looks like 4BSD's slice handling got more precise recently as well. jhb changed it from using a callout to an actual counter based on runtime. Thanks, Jeff > > 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-603731913-1194218372=:544 Content-Type: TEXT/x-diff; charset=US-ASCII; name=uleslice.diff Content-Transfer-Encoding: BASE64 Content-ID: <20071104151932.T544@10.0.0.1> Content-Description: Content-Disposition: attachment; filename=uleslice.diff SW5kZXg6IHNjaGVkX3VsZS5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpS Q1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tlcm4vc2NoZWRfdWxlLmMs dg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjIxNg0KZGlmZiAtdSAtcjEuMjE2 IHNjaGVkX3VsZS5jDQotLS0gc2NoZWRfdWxlLmMJMjMgT2N0IDIwMDcgMDA6 NTI6MjQgLTAwMDAJMS4yMTYNCisrKyBzY2hlZF91bGUuYwk0IE5vdiAyMDA3 IDIzOjE2OjMwIC0wMDAwDQpAQCAtODgsNyArODgsOCBAQA0KIAlzaG9ydAkJ 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 IDwgMTAwKQ0KKwkJcmV0dXJuIChzY2hlZF9zbGljZV9tYXgpOw0KKwkvKg0K KwkgKiBBbiBpbnRlcmxvYWQgb2YgMTAwIGlzIHJvdWdobHkgZXF1aXZhbGVu dCB0byAxMDAlIGNwdSB1dGlsaXphdGlvbg0KKwkgKiByZXF1ZXN0ZWQuICBD YWxjdWxhdGUgaG93IG1hbnkgdGltZXMgb3ZlcmxvYWRlZCB3ZSBhcmUgYW5k IHRoZW4NCisJICogZGl2aWRlIHRoZSBtYXhpbXVtIHNsaWNlIGJ5IHRoaXMg bnVtYmVyLiAgTm9uZSBvZiB0aGlzIGlzIHByZWNpc2UNCisJICogYnV0IGl0 IGRvZXMgeWllbGQgZGVjcmVhc2luZyBzbGljZSB2YWx1ZXMgd2l0aGluIHRo ZSBbbWluLCBtYXhdDQorCSAqIHJhbmdlIGFzIGxvYWQgaW5jcmVhc2VzLg0K KwkgKi8NCisJbG9hZCA9ICh0ZHEtPnRkcV9pbnRlcmxvYWQgKyA5OSkgLyAx MDA7DQorCXNsaWNlID0gc2NoZWRfc2xpY2VfbWF4IC8gbG9hZDsNCisJc2xp Y2UgPSBtYXgoc2xpY2UsIHNjaGVkX3NsaWNlX21pbik7DQorCXJldHVybiAo c2xpY2UpOw0KIH0NCiANCiAjaWZkZWYgU01QDQpAQCAtMTA3MCwxNCArMTEy Nyw2IEBADQogCWNwdSA9IHNlbGYgPSBQQ1BVX0dFVChjcHVpZCk7DQogCWlm IChzbXBfc3RhcnRlZCA9PSAwKQ0KIAkJcmV0dXJuIChzZWxmKTsNCi0JLyoN Ci0JICogRG9uJ3QgbWlncmF0ZSBhIHJ1bm5pbmcgdGhyZWFkIGZyb20gc2No ZWRfc3dpdGNoKCkuDQotCSAqLw0KLQlpZiAoZmxhZ3MgJiBTUlFfT1VSU0VM Rikgew0KLQkJQ1RSMShLVFJfVUxFLCAiWUlFTERJTkcgJWQiLA0KLQkJICAg IGN1cnRocmVhZC0+dGRfcHJpb3JpdHkpOw0KLQkJcmV0dXJuIChzZWxmKTsN Ci0JfQ0KIAlwcmkgPSB0cy0+dHNfdGhyZWFkLT50ZF9wcmlvcml0eTsNCiAJ Y3B1ID0gdHMtPnRzX2NwdTsNCiAJLyoNCkBAIC0xMTEzLDkgKzExNjIsOCBA QA0KIAkgKiBUaGlzIG1heSBpbXByb3ZlIGxvY2FsaXR5IGFtb25nIHNsZWVw ZXJzIGFuZCB3YWtlcnMgd2hlbiB0aGVyZQ0KIAkgKiBpcyBzaGFyZWQgZGF0 YS4NCiAJICovDQotCWlmICh0cnlzZWxmICYmIHByaSA8IGN1cnRocmVhZC0+ dGRfcHJpb3JpdHkpIHsNCi0JCUNUUjEoS1RSX1VMRSwgInRyeXNlbGYgJWQi LA0KLQkJICAgIGN1cnRocmVhZC0+dGRfcHJpb3JpdHkpOw0KKwlpZiAocHJp IDwgY3VydGhyZWFkLT50ZF9wcmlvcml0eSkgew0KKwkJQ1RSMShLVFJfVUxF LCAidHJ5c2VsZiAlZCIsIGN1cnRocmVhZC0+dGRfcHJpb3JpdHkpOw0KIAkJ cmV0dXJuIChzZWxmKTsNCiAJfQ0KIAkvKg0KQEAgLTExNzUsNiArMTIyMyw3 IEBADQogCXJ1bnFfaW5pdCgmdGRxLT50ZHFfdGltZXNoYXJlKTsNCiAJcnVu cV9pbml0KCZ0ZHEtPnRkcV9pZGxlKTsNCiAJdGRxLT50ZHFfbG9hZCA9IDA7 DQorCXRkcS0+dGRxX2ludGVybG9hZCA9IDA7DQogfQ0KIA0KICNpZmRlZiBT TVANCkBAIC0xMzI0LDEyICsxMzczLDEyIEBADQogCSAqIGluIGNhc2Ugd2hp Y2ggc2NoZWRfY2xvY2soKSBjYWxsZWQgYmVmb3JlIHNjaGVkX2luaXR0aWNr cygpLg0KIAkgKi8NCiAJcmVhbHN0YXRoeiA9IGh6Ow0KLQlzY2hlZF9zbGlj ZSA9IChyZWFsc3RhdGh6LzEwKTsJLyogfjEwMG1zICovDQogCXRpY2tpbmNy ID0gMSA8PCBTQ0hFRF9USUNLX1NISUZUOw0KIA0KIAkvKiBBZGQgdGhyZWFk MCdzIGxvYWQgc2luY2UgaXQncyBydW5uaW5nLiAqLw0KIAlURFFfTE9DSyh0 ZHEpOw0KIAl0aHJlYWQwLnRkX2xvY2sgPSBURFFfTE9DS1BUUihURFFfU0VM RigpKTsNCisJdGRfc2NoZWQwLnRzX3Njb3JlID0gMDsNCiAJdGRxX2xvYWRf YWRkKHRkcSwgJnRkX3NjaGVkMCk7DQogCVREUV9VTkxPQ0sodGRxKTsNCiB9 DQpAQCAtMTM0NCw3ICsxMzkzLDggQEANCiAJaW50IGluY3I7DQogDQogCXJl YWxzdGF0aHogPSBzdGF0aHogPyBzdGF0aHogOiBoejsNCi0Jc2NoZWRfc2xp Y2UgPSAocmVhbHN0YXRoei8xMCk7CS8qIH4xMDBtcyAqLw0KKwlzY2hlZF9z bGljZV9tYXggPSByZWFsc3RhdGh6IC8gMTA7CS8qIH4xMDBtcyAqLw0KKwlz Y2hlZF9zbGljZV9taW4gPSByZWFsc3RhdGh6IC8gMjU7CS8qIH40MG1zICov DQogDQogCS8qDQogCSAqIHRpY2tpbmNyIGlzIHNoaWZ0ZWQgb3V0IGJ5IDEw IHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycyBkdWUgdG8NCkBAIC0xMzc0LDcg KzE0MjQsNiBAQA0KICNlbmRpZg0KIH0NCiANCi0NCiAvKg0KICAqIFRoaXMg aXMgdGhlIGNvcmUgb2YgdGhlIGludGVyYWN0aXZpdHkgYWxnb3JpdGhtLiAg RGV0ZXJtaW5lcyBhIHNjb3JlIGJhc2VkDQogICogb24gcGFzdCBiZWhhdmlv ci4gIEl0IGlzIHRoZSByYXRpbyBvZiBzbGVlcCB0aW1lIHRvIHJ1biB0aW1l IHNjYWxlZCB0bw0KQEAgLTEzODksMTUgKzE0MzgsNiBAQA0KIAlpbnQgZGl2 Ow0KIA0KIAl0cyA9IHRkLT50ZF9zY2hlZDsNCi0JLyoNCi0JICogVGhlIHNj b3JlIGlzIG9ubHkgbmVlZGVkIGlmIHRoaXMgaXMgbGlrZWx5IHRvIGJlIGFu IGludGVyYWN0aXZlDQotCSAqIHRhc2suICBEb24ndCBnbyB0aHJvdWdoIHRo ZSBleHBlbnNlIG9mIGNvbXB1dGluZyBpdCBpZiB0aGVyZSdzDQotCSAqIG5v IGNoYW5jZS4NCi0JICovDQotCWlmIChzY2hlZF9pbnRlcmFjdCA8PSBTQ0hF RF9JTlRFUkFDVF9IQUxGICYmDQotCQl0cy0+dHNfcnVudGltZSA+PSB0cy0+ dHNfc2xwdGltZSkNCi0JCQlyZXR1cm4gKFNDSEVEX0lOVEVSQUNUX0hBTEYp Ow0KLQ0KIAlpZiAodHMtPnRzX3J1bnRpbWUgPiB0cy0+dHNfc2xwdGltZSkg ew0KIAkJZGl2ID0gbWF4KDEsIHRzLT50c19ydW50aW1lIC8gU0NIRURfSU5U RVJBQ1RfSEFMRik7DQogCQlyZXR1cm4gKFNDSEVEX0lOVEVSQUNUX0hBTEYg Kw0KQEAgLTE0NDMsNyArMTQ4Myw3IEBADQogCSAqIHNjb3JlLiAgTmVnYXRp dmUgbmljZSB2YWx1ZXMgbWFrZSBpdCBlYXNpZXIgZm9yIGEgdGhyZWFkIHRv IGJlDQogCSAqIGNvbnNpZGVyZWQgaW50ZXJhY3RpdmUuDQogCSAqLw0KLQlz Y29yZSA9IGltYXgoMCwgc2NoZWRfaW50ZXJhY3Rfc2NvcmUodGQpIC0gdGQt PnRkX3Byb2MtPnBfbmljZSk7DQorCXNjb3JlID0gaW1heCgwLCB0ZC0+dGRf c2NoZWQtPnRzX3Njb3JlIC0gdGQtPnRkX3Byb2MtPnBfbmljZSk7DQogCWlm IChzY29yZSA8IHNjaGVkX2ludGVyYWN0KSB7DQogCQlwcmkgPSBQUklfTUlO X1JFQUxUSU1FOw0KIAkJcHJpICs9ICgoUFJJX01BWF9SRUFMVElNRSAtIFBS SV9NSU5fUkVBTFRJTUUpIC8gc2NoZWRfaW50ZXJhY3QpDQpAQCAtMTQ3Nywx MiArMTUxNywxNSBAQA0KIHNjaGVkX2ludGVyYWN0X3VwZGF0ZShzdHJ1Y3Qg dGhyZWFkICp0ZCkNCiB7DQogCXN0cnVjdCB0ZF9zY2hlZCAqdHM7DQorCXN0 cnVjdCB0ZHEgKnRkcTsNCiAJdV9pbnQgc3VtOw0KKwlpbnQgc2NvcmU7DQog DQorCVRIUkVBRF9MT0NLX0FTU0VSVCh0ZCwgTUFfT1dORUQpOw0KIAl0cyA9 IHRkLT50ZF9zY2hlZDsNCiAJc3VtID0gdHMtPnRzX3J1bnRpbWUgKyB0cy0+ dHNfc2xwdGltZTsNCiAJaWYgKHN1bSA8IFNDSEVEX1NMUF9SVU5fTUFYKQ0K LQkJcmV0dXJuOw0KKwkJZ290byBzY29yZTsNCiAJLyoNCiAJICogVGhpcyBv bmx5IGhhcHBlbnMgZnJvbSB0d28gcGxhY2VzOg0KIAkgKiAxKSBXZSBoYXZl IGFkZGVkIGFuIHVudXN1YWwgYW1vdW50IG9mIHJ1biB0aW1lIGZyb20gZm9y a19leGl0Lg0KQEAgLTE0OTAsMTMgKzE1MzMsMTMgQEANCiAJICovDQogCWlm IChzdW0gPiBTQ0hFRF9TTFBfUlVOX01BWCAqIDIpIHsNCiAJCWlmICh0cy0+ dHNfcnVudGltZSA+IHRzLT50c19zbHB0aW1lKSB7DQotCQkJdHMtPnRzX3J1 bnRpbWUgPSBTQ0hFRF9TTFBfUlVOX01BWDsNCisJCQl0cy0+dHNfcnVudGlt ZSA9IFNDSEVEX1NMUF9SVU5fTUFYIC8gMjsNCiAJCQl0cy0+dHNfc2xwdGlt ZSA9IDE7DQogCQl9IGVsc2Ugew0KLQkJCXRzLT50c19zbHB0aW1lID0gU0NI RURfU0xQX1JVTl9NQVg7DQorCQkJdHMtPnRzX3NscHRpbWUgPSBTQ0hFRF9T TFBfUlVOX01BWCAvIDI7DQogCQkJdHMtPnRzX3J1bnRpbWUgPSAxOw0KIAkJ fQ0KLQkJcmV0dXJuOw0KKwkJZ290byBzY29yZTsNCiAJfQ0KIAkvKg0KIAkg KiBJZiB3ZSBoYXZlIGV4Y2VlZGVkIGJ5IG1vcmUgdGhhbiAxLzV0aCB0aGVu IHRoZSBhbGdvcml0aG0gYmVsb3cNCkBAIC0xNTA2LDEwICsxNTQ5LDE5IEBA DQogCWlmIChzdW0gPiAoU0NIRURfU0xQX1JVTl9NQVggLyA1KSAqIDYpIHsN CiAJCXRzLT50c19ydW50aW1lIC89IDI7DQogCQl0cy0+dHNfc2xwdGltZSAv PSAyOw0KLQkJcmV0dXJuOw0KKwkJZ290byBzY29yZTsNCiAJfQ0KIAl0cy0+ dHNfcnVudGltZSA9ICh0cy0+dHNfcnVudGltZSAvIDUpICogNDsNCiAJdHMt PnRzX3NscHRpbWUgPSAodHMtPnRzX3NscHRpbWUgLyA1KSAqIDQ7DQorc2Nv cmU6DQorCXNjb3JlID0gc2NoZWRfaW50ZXJhY3Rfc2NvcmUodGQpOw0KKwlp ZiAodHMtPnRzX2ZsYWdzICYgVFNGX0lOVEVSTE9BRCkgew0KKwkJdGRxID0g VERRX0NQVSh0cy0+dHNfY3B1KTsNCisJCVREUV9MT0NLX0FTU0VSVCh0ZHEs IE1BX09XTkVEKTsNCisJCXRkcS0+dGRxX2ludGVybG9hZCAtPSB0cy0+dHNf c2NvcmU7DQorCQl0ZHEtPnRkcV9pbnRlcmxvYWQgKz0gc2NvcmU7DQorCX0N CisJdHMtPnRzX3Njb3JlID0gc2NvcmU7DQogfQ0KIA0KIC8qDQpAQCAtMTU1 OSw3ICsxNjExLDcgQEANCiB7DQogDQogCS8qIENvbnZlcnQgc2NoZWRfc2xp Y2UgdG8gaHogKi8NCi0JcmV0dXJuIChoei8ocmVhbHN0YXRoei9zY2hlZF9z bGljZSkpOw0KKwlyZXR1cm4gKGh6LyhyZWFsc3RhdGh6L3NjaGVkX3NsaWNl X21heCkpOw0KIH0NCiANCiAvKg0KQEAgLTE1OTgsMTYgKzE2NTAsMTkgQEAN CiBzY2hlZF90aHJlYWRfcHJpb3JpdHkoc3RydWN0IHRocmVhZCAqdGQsIHVf Y2hhciBwcmlvKQ0KIHsNCiAJc3RydWN0IHRkX3NjaGVkICp0czsNCisJc3Ry dWN0IHRkcSAqdGRxOw0KIA0KIAlDVFI2KEtUUl9TQ0hFRCwgInNjaGVkX3By aW86ICVwKCVzKSBwcmlvICVkIG5ld3ByaW8gJWQgYnkgJXAoJXMpIiwNCiAJ ICAgIHRkLCB0ZC0+dGRfcHJvYy0+cF9jb21tLCB0ZC0+dGRfcHJpb3JpdHks IHByaW8sIGN1cnRocmVhZCwNCiAJICAgIGN1cnRocmVhZC0+dGRfcHJvYy0+ cF9jb21tKTsNCiAJdHMgPSB0ZC0+dGRfc2NoZWQ7DQorCXRkcSA9IFREUV9D UFUodHMtPnRzX2NwdSk7DQogCVRIUkVBRF9MT0NLX0FTU0VSVCh0ZCwgTUFf T1dORUQpOw0KLQlpZiAodGQtPnRkX3ByaW9yaXR5ID09IHByaW8pDQorCWlm ICh0ZC0+dGRfcHJpb3JpdHkgPD0gcHJpbykgew0KKwkJdGQtPnRkX3ByaW9y aXR5ID0gcHJpbzsNCiAJCXJldHVybjsNCi0NCi0JaWYgKFREX09OX1JVTlEo dGQpICYmIHByaW8gPCB0ZC0+dGRfcHJpb3JpdHkpIHsNCisJfQ0KKwlpZiAo VERfT05fUlVOUSh0ZCkpIHsNCiAJCS8qDQogCQkgKiBJZiB0aGUgcHJpb3Jp dHkgaGFzIGJlZW4gZWxldmF0ZWQgZHVlIHRvIHByaW9yaXR5DQogCQkgKiBw cm9wYWdhdGlvbiwgd2UgbWF5IGhhdmUgdG8gbW92ZSBvdXJzZWx2ZXMgdG8g YSBuZXcNCkBAIC0xNjE3LDE2ICsxNjcyLDE0IEBADQogCQlzY2hlZF9yZW0o dGQpOw0KIAkJdGQtPnRkX3ByaW9yaXR5ID0gcHJpbzsNCiAJCXNjaGVkX2Fk ZCh0ZCwgU1JRX0JPUlJPV0lORyk7DQotCX0gZWxzZSB7DQogI2lmZGVmIFNN UA0KLQkJc3RydWN0IHRkcSAqdGRxOw0KLQ0KLQkJdGRxID0gVERRX0NQVSh0 cy0+dHNfY3B1KTsNCisJfSBlbHNlIGlmIChURF9JU19SVU5OSU5HKHRkKSkg ew0KIAkJaWYgKHByaW8gPCB0ZHEtPnRkcV9sb3dwcmkpDQogCQkJdGRxLT50 ZHFfbG93cHJpID0gcHJpbzsNCisJCXRkLT50ZF9wcmlvcml0eSA9IHByaW87 DQogI2VuZGlmDQorCX0gZWxzZQ0KIAkJdGQtPnRkX3ByaW9yaXR5ID0gcHJp bzsNCi0JfQ0KIH0NCiANCiAvKg0KQEAgLTE3NzIsNiArMTgyNSw4IEBADQog DQogCXRkbiA9IFREUV9DUFUodGQtPnRkX3NjaGVkLT50c19jcHUpOw0KICNp ZmRlZiBTTVANCisJLyogVGhlIGxvYWQgaXMgYmVpbmcgcmVtb3ZlZCBmcm9t IHRoZSBjdXJyZW50IGNwdS4gKi8NCisJdGRxX2xvYWRfcmVtKHRkcSwgdGQt PnRkX3NjaGVkKTsNCiAJLyoNCiAJICogRG8gdGhlIGxvY2sgZGFuY2UgcmVx dWlyZWQgdG8gYXZvaWQgTE9SLiAgV2UgZ3JhYiBhbiBleHRyYQ0KIAkgKiBz cGlubG9jayBuZXN0aW5nIHRvIHByZXZlbnQgcHJlZW1wdGlvbiB3aGlsZSB3 ZSdyZQ0KQEAgLTE4NjMsMTIgKzE5MTgsMTEgQEANCiAJCVREX1NFVF9DQU5f UlVOKHRkKTsNCiAJfSBlbHNlIGlmIChURF9JU19SVU5OSU5HKHRkKSkgew0K IAkJTVBBU1ModGQtPnRkX2xvY2sgPT0gVERRX0xPQ0tQVFIodGRxKSk7DQot CQl0ZHFfbG9hZF9yZW0odGRxLCB0cyk7DQogCQlzcnFmbGFnID0gKGZsYWdz ICYgU1dfUFJFRU1QVCkgPw0KIAkJICAgIFNSUV9PVVJTRUxGfFNSUV9ZSUVM RElOR3xTUlFfUFJFRU1QVEVEIDoNCiAJCSAgICBTUlFfT1VSU0VMRnxTUlFf WUlFTERJTkc7DQogCQlpZiAodHMtPnRzX2NwdSA9PSBjcHVpZCkNCi0JCQl0 ZHFfYWRkKHRkcSwgdGQsIHNycWZsYWcpOw0KKwkJCXRkcV9ydW5xX2FkZCh0 ZHEsIHRzLCBzcnFmbGFnKTsNCiAJCWVsc2UNCiAJCQltdHggPSBzY2hlZF9z d2l0Y2hfbWlncmF0ZSh0ZHEsIHRkLCBzcnFmbGFnKTsNCiAJfSBlbHNlIHsN CkBAIC0xOTcwLDIyICsyMDI0LDE4IEBADQogCVRIUkVBRF9MT0NLX0FTU0VS VCh0ZCwgTUFfT1dORUQpOw0KIAl0cyA9IHRkLT50ZF9zY2hlZDsNCiAJLyoN Ci0JICogSWYgd2Ugc2xlcHQgZm9yIG1vcmUgdGhhbiBhIHRpY2sgdXBkYXRl IG91ciBpbnRlcmFjdGl2aXR5IGFuZA0KLQkgKiBwcmlvcml0eS4NCisJICog VXBkYXRlIGludGVyYWN0aXZpdHkgYW5kIHByaW9yaXR5IGFmdGVyIGEgc2xl ZXAuDQogCSAqLw0KIAlzbHB0aWNrID0gdGQtPnRkX3NscHRpY2s7DQogCXRk LT50ZF9zbHB0aWNrID0gMDsNCi0JaWYgKHNscHRpY2sgJiYgc2xwdGljayAh PSB0aWNrcykgew0KLQkJdV9pbnQgaHp0aWNrczsNCi0NCi0JCWh6dGlja3Mg PSAodGlja3MgLSBzbHB0aWNrKSA8PCBTQ0hFRF9USUNLX1NISUZUOw0KLQkJ dHMtPnRzX3NscHRpbWUgKz0gaHp0aWNrczsNCisJaWYgKHNscHRpY2sgJiYg c2xwdGljayAhPSB0aWNrcykgIHsNCisJCXRzLT50c19zbHB0aW1lICs9ICh0 aWNrcyAtIHNscHRpY2spIDw8IFNDSEVEX1RJQ0tfU0hJRlQ7DQogCQlzY2hl ZF9pbnRlcmFjdF91cGRhdGUodGQpOw0KIAkJc2NoZWRfcGN0Y3B1X3VwZGF0 ZSh0cyk7DQogCQlzY2hlZF9wcmlvcml0eSh0ZCk7DQorCQkvKiBSZXNldCB0 aGUgc2xpY2UgdmFsdWUgYWZ0ZXIgd2Ugc2xlZXAuICovDQorCQl0cy0+dHNf c2xpY2UgPSAwOw0KIAl9DQotCS8qIFJlc2V0IHRoZSBzbGljZSB2YWx1ZSBh ZnRlciB3ZSBzbGVlcC4gKi8NCi0JdHMtPnRzX3NsaWNlID0gc2NoZWRfc2xp Y2U7DQogCXNjaGVkX2FkZCh0ZCwgU1JRX0JPUklORyk7DQogfQ0KIA0KQEAg LTIwNDAsNyArMjA5MCw2IEBADQogCSAqLw0KIAl0czItPnRzX3NscHRpbWUg PSB0cy0+dHNfc2xwdGltZTsNCiAJdHMyLT50c19ydW50aW1lID0gdHMtPnRz X3J1bnRpbWU7DQotCXRzMi0+dHNfc2xpY2UgPSAxOwkvKiBBdHRlbXB0IHRv IHF1aWNrbHkgbGVhcm4gaW50ZXJhY3Rpdml0eS4gKi8NCiB9DQogDQogLyoN CkBAIC0yMTg4LDI1ICsyMjM3LDI2IEBADQogCX0NCiAJdHMgPSB0ZC0+dGRf c2NoZWQ7DQogCS8qDQotCSAqIFdlIG9ubHkgZG8gc2xpY2luZyBjb2RlIGZv ciBUSU1FU0hBUkUgdGhyZWFkcy4NCi0JICovDQotCWlmICh0ZC0+dGRfcHJp X2NsYXNzICE9IFBSSV9USU1FU0hBUkUpDQotCQlyZXR1cm47DQotCS8qDQog CSAqIFdlIHVzZWQgYSB0aWNrOyBjaGFyZ2UgaXQgdG8gdGhlIHRocmVhZCBz byB0aGF0IHdlIGNhbiBjb21wdXRlIG91cg0KIAkgKiBpbnRlcmFjdGl2aXR5 Lg0KIAkgKi8NCiAJdGQtPnRkX3NjaGVkLT50c19ydW50aW1lICs9IHRpY2tp bmNyOw0KIAlzY2hlZF9pbnRlcmFjdF91cGRhdGUodGQpOw0KIAkvKg0KKwkg KiBXZSBvbmx5IGRvIHNsaWNpbmcgY29kZSBmb3IgVElNRVNIQVJFIHRocmVh ZHMuDQorCSAqLw0KKwlpZiAodGQtPnRkX3ByaV9jbGFzcyAhPSBQUklfVElN RVNIQVJFKQ0KKwkJcmV0dXJuOw0KKwlzY2hlZF9wcmlvcml0eSh0ZCk7DQor CS8qDQogCSAqIFdlIHVzZWQgdXAgb25lIHRpbWUgc2xpY2UuDQogCSAqLw0K LQlpZiAoLS10cy0+dHNfc2xpY2UgPiAwKQ0KKwlpZiAoKyt0cy0+dHNfc2xp Y2UgPCB0ZHFfc2xpY2UodGRxKSkNCiAJCXJldHVybjsNCiAJLyoNCi0JICog V2UncmUgb3V0IG9mIHRpbWUsIHJlY29tcHV0ZSBwcmlvcml0aWVzIGFuZCBy ZXF1ZXVlLg0KKwkgKiBXZSdyZSBvdXQgb2YgdGltZSwgZm9yY2UgYSByZXF1 ZXVlIGxhdGVyLg0KIAkgKi8NCi0Jc2NoZWRfcHJpb3JpdHkodGQpOw0KKwl0 cy0+dHNfc2xpY2UgPSAwOw0KIAl0ZC0+dGRfZmxhZ3MgfD0gVERGX05FRURS RVNDSEVEOw0KIH0NCiANCkBAIC0yMjkwLDM1ICsyMzQwLDYgQEANCiAjZW5k aWYNCiAJcmV0dXJuIChQQ1BVX0dFVChpZGxldGhyZWFkKSk7DQogfQ0KLQ0K LS8qDQotICogU2V0IG93ZXByZWVtcHQgaWYgbmVjZXNzYXJ5LiAgUHJlZW1w dGlvbiBuZXZlciBoYXBwZW5zIGRpcmVjdGx5IGluIFVMRSwNCi0gKiB3ZSBh bHdheXMgcmVxdWVzdCBpdCBvbmNlIHdlIGV4aXQgYSBjcml0aWNhbCBzZWN0 aW9uLg0KLSAqLw0KLXN0YXRpYyBpbmxpbmUgdm9pZA0KLXNjaGVkX3NldHBy ZWVtcHQoc3RydWN0IHRocmVhZCAqdGQpDQotew0KLQlzdHJ1Y3QgdGhyZWFk ICpjdGQ7DQotCWludCBjcHJpOw0KLQlpbnQgcHJpOw0KLQ0KLQljdGQgPSBj dXJ0aHJlYWQ7DQotCXByaSA9IHRkLT50ZF9wcmlvcml0eTsNCi0JY3ByaSA9 IGN0ZC0+dGRfcHJpb3JpdHk7DQotCWlmICh0ZC0+dGRfcHJpb3JpdHkgPCBj dGQtPnRkX3ByaW9yaXR5KQ0KLQkJY3VydGhyZWFkLT50ZF9mbGFncyB8PSBU REZfTkVFRFJFU0NIRUQ7DQotCWlmIChwYW5pY3N0ciAhPSBOVUxMIHx8IHBy aSA+PSBjcHJpIHx8IGNvbGQgfHwgVERfSVNfSU5ISUJJVEVEKGN0ZCkpDQot CQlyZXR1cm47DQotCS8qDQotCSAqIEFsd2F5cyBwcmVlbXB0IElETEUgdGhy ZWFkcy4gIE90aGVyd2lzZSBvbmx5IGlmIHRoZSBwcmVlbXB0aW5nDQotCSAq IHRocmVhZCBpcyBhbiBpdGhyZWFkLg0KLQkgKi8NCi0JaWYgKHByaSA+IHBy ZWVtcHRfdGhyZXNoICYmIGNwcmkgPCBQUklfTUlOX0lETEUpDQotCQlyZXR1 cm47DQotCWN0ZC0+dGRfb3dlcHJlZW1wdCA9IDE7DQotCXJldHVybjsNCi19 DQotDQogLyoNCiAgKiBBZGQgYSB0aHJlYWQgdG8gYSB0aHJlYWQgcXVldWUu ICBJbml0aWFsaXplcyBwcmlvcml0eSwgc2xpY2UsIHJ1bnEsIGFuZA0KICAq IGFkZCBpdCB0byB0aGUgYXBwcm9wcmlhdGUgcXVldWUuICBUaGlzIGlzIHRo ZSBpbnRlcm5hbCBmdW5jdGlvbiBjYWxsZWQNCkBAIC0yMzI4LDExICsyMzQ5 LDEwIEBADQogdGRxX2FkZChzdHJ1Y3QgdGRxICp0ZHEsIHN0cnVjdCB0aHJl YWQgKnRkLCBpbnQgZmxhZ3MpDQogew0KIAlzdHJ1Y3QgdGRfc2NoZWQgKnRz Ow0KLQlpbnQgY2xhc3M7DQogI2lmZGVmIFNNUA0KKwlpbnQgY2xhc3M7DQog CWludCBjcHVtYXNrOw0KICNlbmRpZg0KLQ0KIAlURFFfTE9DS19BU1NFUlQo dGRxLCBNQV9PV05FRCk7DQogCUtBU1NFUlQoKHRkLT50ZF9pbmhpYml0b3Jz ID09IDApLA0KIAkgICAgKCJzY2hlZF9hZGQ6IHRyeWluZyB0byBydW4gaW5o aWJpdGVkIHRocmVhZCIpKTsNCkBAIC0yMzQyLDIwICsyMzYyLDEwIEBADQog CSAgICAoInNjaGVkX2FkZDogdGhyZWFkIHN3YXBwZWQgb3V0IikpOw0KIA0K IAl0cyA9IHRkLT50ZF9zY2hlZDsNCi0JY2xhc3MgPSBQUklfQkFTRSh0ZC0+ dGRfcHJpX2NsYXNzKTsNCi0gICAgICAgIFREX1NFVF9SVU5RKHRkKTsNCi0J aWYgKHRzLT50c19zbGljZSA9PSAwKQ0KLQkJdHMtPnRzX3NsaWNlID0gc2No ZWRfc2xpY2U7DQotCS8qDQotCSAqIFBpY2sgdGhlIHJ1biBxdWV1ZSBiYXNl ZCBvbiBwcmlvcml0eS4NCi0JICovDQotCWlmICh0ZC0+dGRfcHJpb3JpdHkg PD0gUFJJX01BWF9SRUFMVElNRSkNCi0JCXRzLT50c19ydW5xID0gJnRkcS0+ dGRxX3JlYWx0aW1lOw0KLQllbHNlIGlmICh0ZC0+dGRfcHJpb3JpdHkgPD0g UFJJX01BWF9USU1FU0hBUkUpDQotCQl0cy0+dHNfcnVucSA9ICZ0ZHEtPnRk cV90aW1lc2hhcmU7DQotCWVsc2UNCi0JCXRzLT50c19ydW5xID0gJnRkcS0+ dGRxX2lkbGU7DQorCXRkcV9ydW5xX2FkZCh0ZHEsIHRzLCBmbGFncyk7DQor CXRkcV9sb2FkX2FkZCh0ZHEsIHRzKTsNCiAjaWZkZWYgU01QDQorCWNsYXNz ID0gUFJJX0JBU0UodGQtPnRkX3ByaV9jbGFzcyk7DQogCWNwdW1hc2sgPSAx IDw8IHRzLT50c19jcHU7DQogCS8qDQogCSAqIElmIHdlIGhhZCBiZWVuIGlk bGUsIGNsZWFyIG91ciBiaXQgaW4gdGhlIGdyb3VwIGFuZCBwb3RlbnRpYWxs eQ0KQEAgLTIzNzgsOCArMjM4OCw2IEBADQogCWlmICh0ZC0+dGRfcHJpb3Jp dHkgPCB0ZHEtPnRkcV9sb3dwcmkpDQogCQl0ZHEtPnRkcV9sb3dwcmkgPSB0 ZC0+dGRfcHJpb3JpdHk7DQogI2VuZGlmDQotCXRkcV9ydW5xX2FkZCh0ZHEs IHRzLCBmbGFncyk7DQotCXRkcV9sb2FkX2FkZCh0ZHEsIHRzKTsNCiB9DQog DQogLyoNCkBAIC0yMzkwLDYgKzIzOTgsNyBAQA0KIHNjaGVkX2FkZChzdHJ1 Y3QgdGhyZWFkICp0ZCwgaW50IGZsYWdzKQ0KIHsNCiAJc3RydWN0IHRkX3Nj aGVkICp0czsNCisJc3RydWN0IHRocmVhZCAqY3RkOw0KIAlzdHJ1Y3QgdGRx ICp0ZHE7DQogI2lmZGVmIFNNUA0KIAlpbnQgY3B1aWQ7DQpAQCAtMjQzNCw4 ICsyNDQzLDE5IEBADQogCXRocmVhZF9sb2NrX3NldCh0ZCwgVERRX0xPQ0tQ VFIodGRxKSk7DQogCXRkcV9hZGQodGRxLCB0ZCwgZmxhZ3MpOw0KICNlbmRp Zg0KLQlpZiAoIShmbGFncyAmIFNSUV9ZSUVMRElORykpDQotCQlzY2hlZF9z ZXRwcmVlbXB0KHRkKTsNCisJaWYgKGNvbGQgfHwgcGFuaWNzdHIpDQorCQly ZXR1cm47DQorCS8qDQorCSAqIEFsd2F5cyBwcmVlbXB0IElETEUgdGhyZWFk cy4gIE90aGVyd2lzZSBvbmx5IGlmIHRoZSBwcmVlbXB0aW5nDQorCSAqIHRo cmVhZCBpcyBhbiBpdGhyZWFkLg0KKwkgKi8NCisJY3RkID0gY3VydGhyZWFk Ow0KKwlpZiAodGQtPnRkX3ByaW9yaXR5IDwgY3RkLT50ZF9wcmlvcml0eSkg ew0KKwkJY3RkLT50ZF9mbGFncyB8PSBUREZfTkVFRFJFU0NIRUQ7DQorCQlp ZiAodGQtPnRkX3ByaW9yaXR5IDw9IHByZWVtcHRfdGhyZXNoIHx8DQorCQkg ICAgY3RkLT50ZF9wcmlvcml0eSA+IFBSSV9NSU5fSURMRSkNCisJCQljdGQt PnRkX293ZXByZWVtcHQgPSAxOw0KKwl9DQogfQ0KIA0KIC8qDQpAQCAtMjY2 MCw4ICsyNjgwLDEwIEBADQogICAgICJTY2hlZHVsZXIiKTsNCiBTWVNDVExf U1RSSU5HKF9rZXJuX3NjaGVkLCBPSURfQVVUTywgbmFtZSwgQ1RMRkxBR19S RCwgIlVMRSIsIDAsDQogICAgICJTY2hlZHVsZXIgbmFtZSIpOw0KLVNZU0NU TF9JTlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBzbGljZSwgQ1RMRkxBR19S VywgJnNjaGVkX3NsaWNlLCAwLA0KLSAgICAiU2xpY2Ugc2l6ZSBmb3IgdGlt ZXNoYXJlIHRocmVhZHMiKTsNCitTWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBP SURfQVVUTywgc2xpY2UsIENUTEZMQUdfUlcsICZzY2hlZF9zbGljZV9tYXgs IDAsDQorICAgICJNYXhpbXVtIHNsaWNlIHNpemUgZm9yIHRpbWVzaGFyZSB0 aHJlYWRzIik7DQorU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8s IHNsaWNlX21pbiwgQ1RMRkxBR19SVywgJnNjaGVkX3NsaWNlX21pbiwgMCwN CisgICAgIk1pbmltdW0gc2xpY2Ugc2l6ZSBmb3IgdGltZXNoYXJlIHRocmVh ZHMiKTsNCiBTWVNDVExfSU5UKF9rZXJuX3NjaGVkLCBPSURfQVVUTywgaW50 ZXJhY3QsIENUTEZMQUdfUlcsICZzY2hlZF9pbnRlcmFjdCwgMCwNCiAgICAg ICJJbnRlcmFjdGl2aXR5IHNjb3JlIHRocmVzaG9sZCIpOw0KIFNZU0NUTF9J TlQoX2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBwcmVlbXB0X3RocmVzaCwgQ1RM RkxBR19SVywgJnByZWVtcHRfdGhyZXNoLA0KQEAgLTI2NzEsNyArMjY5Myw2 IEBADQogICAgICJQaWNrIHRoZSB0YXJnZXQgY3B1IGJhc2VkIG9uIHByaW9y aXR5IHJhdGhlciB0aGFuIGxvYWQuIik7DQogU1lTQ1RMX0lOVChfa2Vybl9z Y2hlZCwgT0lEX0FVVE8sIGFmZmluaXR5LCBDVExGTEFHX1JXLCAmYWZmaW5p dHksIDAsDQogICAgICJOdW1iZXIgb2YgaHogdGlja3MgdG8ga2VlcCB0aHJl YWQgYWZmaW5pdHkgZm9yIik7DQotU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwg T0lEX0FVVE8sIHRyeXNlbGYsIENUTEZMQUdfUlcsICZ0cnlzZWxmLCAwLCAi Iik7DQogU1lTQ1RMX0lOVChfa2Vybl9zY2hlZCwgT0lEX0FVVE8sIGJhbGFu Y2UsIENUTEZMQUdfUlcsICZyZWJhbGFuY2UsIDAsDQogICAgICJFbmFibGVz IHRoZSBsb25nLXRlcm0gbG9hZCBiYWxhbmNlciIpOw0KIFNZU0NUTF9JTlQo X2tlcm5fc2NoZWQsIE9JRF9BVVRPLCBiYWxhbmNlX2ludGVydmFsLCBDVExG TEFHX1JXLA0K --0-603731913-1194218372=:544--