Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757278AbYCYGkM (ORCPT ); Tue, 25 Mar 2008 02:40:12 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753317AbYCYGj5 (ORCPT ); Tue, 25 Mar 2008 02:39:57 -0400 Received: from mga02.intel.com ([134.134.136.20]:57288 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753244AbYCYGjz (ORCPT ); Tue, 25 Mar 2008 02:39:55 -0400 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="4.25,551,1199692800"; d="scan'208";a="360069369" X-MimeOLE: Produced By Microsoft Exchange V6.5 Content-class: urn:content-classes:message MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C88E42.5B725E99" Subject: RE: Xen common code across architecture Date: Tue, 25 Mar 2008 14:35:02 +0800 Message-ID: <10EA09EFD8728347A513008B6B0DA77A02F3794B@pdsmsx411.ccr.corp.intel.com> In-Reply-To: <10EA09EFD8728347A513008B6B0DA77A02F37916@pdsmsx411.ccr.corp.intel.com> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: Xen common code across architecture Thread-Index: AciKlqAqwLMcP6aLS4O0oDWnPHKEagDo/2fgAAG40JA= References: <12047411453864-git-send-email-yamahata@valinux.co.jp> <12047411473158-git-send-email-yamahata@valinux.co.jp> <10EA09EFD8728347A513008B6B0DA77A02EF8C3A@pdsmsx411.ccr.corp.intel.com> <47E27348.5090705@goop.org> <10EA09EFD8728347A513008B6B0DA77A02F37916@pdsmsx411.ccr.corp.intel.com> From: "Dong, Eddie" To: "Dong, Eddie" , "Jeremy Fitzhardinge" Cc: , , "Andrew Morton" , , , X-OriginalArrivalTime: 25 Mar 2008 06:35:44.0770 (UTC) FILETIME=[74261E20:01C88E42] Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 44046 Lines: 615 This is a multi-part message in MIME format. ------_=_NextPart_001_01C88E42.5B725E99 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Dong, Eddie wrote: > Jeremy/Andrew: >=20 > Isaku Yamahata, I and some other IA64/Xen community memebers are >=20 > working together to enable pv_ops for IA64 Linux. This patch is a > preparation to > move common arch/x86/xen/events.c to drivers/xen (contents are > identical) against > mm tree, it is based on Yamahata's IA64/pv_ops patch serie. > In case you want to have a brief view of whole pv_ops/IA64 patch > serie, > please refer to IA64 Linux mailinglist. >=20 > Thanks, Eddie >=20 >=20 Fix a typo. Merged one is attached too. Signed-off-by: Yaozu (Eddie) Dong --- drivers/xen/events_old.c 2008-03-25 14:31:40.503525471 +0800 +++ drivers/xen/events.c 2008-03-25 14:19:39.841851430 +0800 @@ -37,7 +37,7 @@ #include #include =20 -#include "xen-ops.h" +#include =20 /* * This lock protects updates to the following mapping and reference-count ------_=_NextPart_001_01C88E42.5B725E99 Content-Type: application/octet-stream; name="typo" Content-Transfer-Encoding: base64 Content-Description: typo Content-Disposition: attachment; filename="typo" LS0tIGRyaXZlcnMveGVuL2V2ZW50c19vbGQuYwkyMDA4LTAzLTI1IDE0OjMxOjQwLjUwMzUyNTQ3 MSArMDgwMAorKysgZHJpdmVycy94ZW4vZXZlbnRzLmMJMjAwOC0wMy0yNSAxNDoxOTozOS44NDE4 NTE0MzAgKzA4MDAKQEAgLTM3LDcgKzM3LDcgQEAKICNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL3hl bi5oPgogI2luY2x1ZGUgPHhlbi9pbnRlcmZhY2UvZXZlbnRfY2hhbm5lbC5oPgogCi0jaW5jbHVk ZSAieGVuLW9wcy5oIgorI2luY2x1ZGUgPHhlbi94ZW4tb3BzLmg+CiAKIC8qCiAgKiBUaGlzIGxv Y2sgcHJvdGVjdHMgdXBkYXRlcyB0byB0aGUgZm9sbG93aW5nIG1hcHBpbmcgYW5kIHJlZmVyZW5j ZS1jb3VudAo= ------_=_NextPart_001_01C88E42.5B725E99 Content-Type: application/octet-stream; name="move_xenirq3.patch" Content-Transfer-Encoding: base64 Content-Description: move_xenirq3.patch Content-Disposition: attachment; filename="move_xenirq3.patch" ICAgIE1vdmUgZXZlbnRzLmMgdG8gZHJpdmVycy94ZW4gZm9yIElBNjQvWGVuCiAgICBzdXBwb3J0 LgoKCiAgICBTaWduZWQtb2ZmLWJ5OiBZYW96dSAoRWRkaWUpIERvbmcgPGVkZGllLmRvbmdAaW50 ZWwuY29tPgoKZGlmZiAtdXJOIG9sZC9hcmNoL3g4Ni94ZW4vZXZlbnRzLmMgbGludXgvYXJjaC94 ODYveGVuL2V2ZW50cy5jCi0tLSBvbGQvYXJjaC94ODYveGVuL2V2ZW50cy5jCTIwMDgtMDMtMTAg MTM6MjI6MjcuMDAwMDAwMDAwICswODAwCisrKyBsaW51eC9hcmNoL3g4Ni94ZW4vZXZlbnRzLmMJ MTk3MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKQEAgLTEsNTkxICswLDAgQEAKLS8q Ci0gKiBYZW4gZXZlbnQgY2hhbm5lbHMKLSAqCi0gKiBYZW4gbW9kZWxzIGludGVycnVwdHMgd2l0 aCBhYnN0cmFjdCBldmVudCBjaGFubmVscy4gIEJlY2F1c2UgZWFjaAotICogZG9tYWluIGdldHMg MTAyNCBldmVudCBjaGFubmVscywgYnV0IE5SX0lSUSBpcyBub3QgdGhhdCBsYXJnZSwgd2UKLSAq IG11c3QgZHluYW1pY2FsbHkgbWFwIGlycXM8LT5ldmVudCBjaGFubmVscy4gIFRoZSBldmVudCBj aGFubmVscwotICogaW50ZXJmYWNlIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBieSBkZWZp bmluZyBhIHhlbiBpbnRlcnJ1cHQKLSAqIGNoaXAuICBXaGVuIGFuIGV2ZW50IGlzIHJlY2lldmVk LCBpdCBpcyBtYXBwZWQgdG8gYW4gaXJxIGFuZCBzZW50Ci0gKiB0aHJvdWdoIHRoZSBub3JtYWwg aW50ZXJydXB0IHByb2Nlc3NpbmcgcGF0aC4KLSAqCi0gKiBUaGVyZSBhcmUgZm91ciBraW5kcyBv ZiBldmVudHMgd2hpY2ggY2FuIGJlIG1hcHBlZCB0byBhbiBldmVudAotICogY2hhbm5lbDoKLSAq Ci0gKiAxLiBJbnRlci1kb21haW4gbm90aWZpY2F0aW9ucy4gIFRoaXMgaW5jbHVkZXMgYWxsIHRo ZSB2aXJ0dWFsCi0gKiAgICBkZXZpY2UgZXZlbnRzLCBzaW5jZSB0aGV5J3JlIGRyaXZlbiBieSBm cm9udC1lbmRzIGluIGFub3RoZXIgZG9tYWluCi0gKiAgICAodHlwaWNhbGx5IGRvbTApLgotICog Mi4gVklSUXMsIHR5cGljYWxseSB1c2VkIGZvciB0aW1lcnMuICBUaGVzZSBhcmUgcGVyLWNwdSBl dmVudHMuCi0gKiAzLiBJUElzLgotICogNC4gSGFyZHdhcmUgaW50ZXJydXB0cy4gTm90IHN1cHBv cnRlZCBhdCBwcmVzZW50LgotICoKLSAqIEplcmVteSBGaXR6aGFyZGluZ2UgPGplcmVteUB4ZW5z b3VyY2UuY29tPiwgWGVuU291cmNlIEluYywgMjAwNwotICovCi0KLSNpbmNsdWRlIDxsaW51eC9s aW5rYWdlLmg+Ci0jaW5jbHVkZSA8bGludXgvaW50ZXJydXB0Lmg+Ci0jaW5jbHVkZSA8bGludXgv aXJxLmg+Ci0jaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Ci0jaW5jbHVkZSA8bGludXgvc3RyaW5n Lmg+Ci0KLSNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0jaW5jbHVkZSA8YXNtL2lycS5oPgotI2lu Y2x1ZGUgPGFzbS9zeW5jX2JpdG9wcy5oPgotI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJjYWxsLmg+ Ci0jaW5jbHVkZSA8YXNtL3hlbi9oeXBlcnZpc29yLmg+Ci0KLSNpbmNsdWRlIDx4ZW4vZXZlbnRz Lmg+Ci0jaW5jbHVkZSA8eGVuL2ludGVyZmFjZS94ZW4uaD4KLSNpbmNsdWRlIDx4ZW4vaW50ZXJm YWNlL2V2ZW50X2NoYW5uZWwuaD4KLQotI2luY2x1ZGUgInhlbi1vcHMuaCIKLQotLyoKLSAqIFRo aXMgbG9jayBwcm90ZWN0cyB1cGRhdGVzIHRvIHRoZSBmb2xsb3dpbmcgbWFwcGluZyBhbmQgcmVm ZXJlbmNlLWNvdW50Ci0gKiBhcnJheXMuIFRoZSBsb2NrIGRvZXMgbm90IG5lZWQgdG8gYmUgYWNx dWlyZWQgdG8gcmVhZCB0aGUgbWFwcGluZyB0YWJsZXMuCi0gKi8KLXN0YXRpYyBERUZJTkVfU1BJ TkxPQ0soaXJxX21hcHBpbmdfdXBkYXRlX2xvY2spOwotCi0vKiBJUlEgPC0+IFZJUlEgbWFwcGlu Zy4gKi8KLXN0YXRpYyBERUZJTkVfUEVSX0NQVShpbnQsIHZpcnFfdG9faXJxW05SX1ZJUlFTXSkg PSB7WzAgLi4uIE5SX1ZJUlFTLTFdID0gLTF9OwotCi0vKiBJUlEgPC0+IElQSSBtYXBwaW5nICov Ci1zdGF0aWMgREVGSU5FX1BFUl9DUFUoaW50LCBpcGlfdG9faXJxW1hFTl9OUl9JUElTXSkgPSB7 WzAgLi4uIFhFTl9OUl9JUElTLTFdID0gLTF9OwotCi0vKiBQYWNrZWQgSVJRIGluZm9ybWF0aW9u OiBiaW5kaW5nIHR5cGUsIHN1Yi10eXBlIGluZGV4LCBhbmQgZXZlbnQgY2hhbm5lbC4gKi8KLXN0 cnVjdCBwYWNrZWRfaXJxCi17Ci0JdW5zaWduZWQgc2hvcnQgZXZ0Y2huOwotCXVuc2lnbmVkIGNo YXIgaW5kZXg7Ci0JdW5zaWduZWQgY2hhciB0eXBlOwotfTsKLQotc3RhdGljIHN0cnVjdCBwYWNr ZWRfaXJxIGlycV9pbmZvW05SX0lSUVNdOwotCi0vKiBCaW5kaW5nIHR5cGVzLiAqLwotZW51bSB7 Ci0JSVJRVF9VTkJPVU5ELAotCUlSUVRfUElSUSwKLQlJUlFUX1ZJUlEsCi0JSVJRVF9JUEksCi0J SVJRVF9FVlRDSE4KLX07Ci0KLS8qIENvbnZlbmllbnQgc2hvcnRoYW5kIGZvciBwYWNrZWQgcmVw cmVzZW50YXRpb24gb2YgYW4gdW5ib3VuZCBJUlEuICovCi0jZGVmaW5lIElSUV9VTkJPVU5ECW1r X2lycV9pbmZvKElSUVRfVU5CT1VORCwgMCwgMCkKLQotc3RhdGljIGludCBldnRjaG5fdG9faXJx W05SX0VWRU5UX0NIQU5ORUxTXSA9IHsKLQlbMCAuLi4gTlJfRVZFTlRfQ0hBTk5FTFMtMV0gPSAt MQotfTsKLXN0YXRpYyB1bnNpZ25lZCBsb25nIGNwdV9ldnRjaG5fbWFza1tOUl9DUFVTXVtOUl9F VkVOVF9DSEFOTkVMUy9CSVRTX1BFUl9MT05HXTsKLXN0YXRpYyB1OCBjcHVfZXZ0Y2huW05SX0VW RU5UX0NIQU5ORUxTXTsKLQotLyogUmVmZXJlbmNlIGNvdW50cyBmb3IgYmluZGluZ3MgdG8gSVJR cy4gKi8KLXN0YXRpYyBpbnQgaXJxX2JpbmRjb3VudFtOUl9JUlFTXTsKLQotLyogWGVuIHdpbGwg bmV2ZXIgYWxsb2NhdGUgcG9ydCB6ZXJvIGZvciBhbnkgcHVycG9zZS4gKi8KLSNkZWZpbmUgVkFM SURfRVZUQ0hOKGNobikJKChjaG4pICE9IDApCi0KLS8qCi0gKiBGb3JjZSBhIHByb3BlciBldmVu dC1jaGFubmVsIGNhbGxiYWNrIGZyb20gWGVuIGFmdGVyIGNsZWFyaW5nIHRoZQotICogY2FsbGJh Y2sgbWFzay4gV2UgZG8gdGhpcyBpbiBhIHZlcnkgc2ltcGxlIG1hbm5lciwgYnkgbWFraW5nIGEg Y2FsbAotICogZG93biBpbnRvIFhlbi4gVGhlIHBlbmRpbmcgZmxhZyB3aWxsIGJlIGNoZWNrZWQg YnkgWGVuIG9uIHJldHVybi4KLSAqLwotdm9pZCBmb3JjZV9ldnRjaG5fY2FsbGJhY2sodm9pZCkK LXsKLQkodm9pZClIWVBFUlZJU09SX3hlbl92ZXJzaW9uKDAsIE5VTEwpOwotfQotRVhQT1JUX1NZ TUJPTF9HUEwoZm9yY2VfZXZ0Y2huX2NhbGxiYWNrKTsKLQotc3RhdGljIHN0cnVjdCBpcnFfY2hp cCB4ZW5fZHluYW1pY19jaGlwOwotCi0vKiBDb25zdHJ1Y3RvciBmb3IgcGFja2VkIElSUSBpbmZv cm1hdGlvbi4gKi8KLXN0YXRpYyBpbmxpbmUgc3RydWN0IHBhY2tlZF9pcnEgbWtfaXJxX2luZm8o dTMyIHR5cGUsIHUzMiBpbmRleCwgdTMyIGV2dGNobikKLXsKLQlyZXR1cm4gKHN0cnVjdCBwYWNr ZWRfaXJxKSB7IGV2dGNobiwgaW5kZXgsIHR5cGUgfTsKLX0KLQotLyoKLSAqIEFjY2Vzc29ycyBm b3IgcGFja2VkIElSUSBpbmZvcm1hdGlvbi4KLSAqLwotc3RhdGljIGlubGluZSB1bnNpZ25lZCBp bnQgZXZ0Y2huX2Zyb21faXJxKGludCBpcnEpCi17Ci0JcmV0dXJuIGlycV9pbmZvW2lycV0uZXZ0 Y2huOwotfQotCi1zdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBpbmRleF9mcm9tX2lycShpbnQg aXJxKQotewotCXJldHVybiBpcnFfaW5mb1tpcnFdLmluZGV4OwotfQotCi1zdGF0aWMgaW5saW5l IHVuc2lnbmVkIGludCB0eXBlX2Zyb21faXJxKGludCBpcnEpCi17Ci0JcmV0dXJuIGlycV9pbmZv W2lycV0udHlwZTsKLX0KLQotc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGFjdGl2ZV9ldnRj aG5zKHVuc2lnbmVkIGludCBjcHUsCi0JCQkJCSAgIHN0cnVjdCBzaGFyZWRfaW5mbyAqc2gsCi0J CQkJCSAgIHVuc2lnbmVkIGludCBpZHgpCi17Ci0JcmV0dXJuIChzaC0+ZXZ0Y2huX3BlbmRpbmdb aWR4XSAmCi0JCWNwdV9ldnRjaG5fbWFza1tjcHVdW2lkeF0gJgotCQl+c2gtPmV2dGNobl9tYXNr W2lkeF0pOwotfQotCi1zdGF0aWMgdm9pZCBiaW5kX2V2dGNobl90b19jcHUodW5zaWduZWQgaW50 IGNobiwgdW5zaWduZWQgaW50IGNwdSkKLXsKLQlpbnQgaXJxID0gZXZ0Y2huX3RvX2lycVtjaG5d OwotCi0JQlVHX09OKGlycSA9PSAtMSk7Ci0jaWZkZWYgQ09ORklHX1NNUAotCWlycV9kZXNjW2ly cV0uYWZmaW5pdHkgPSBjcHVtYXNrX29mX2NwdShjcHUpOwotI2VuZGlmCi0KLQlfX2NsZWFyX2Jp dChjaG4sIGNwdV9ldnRjaG5fbWFza1tjcHVfZXZ0Y2huW2Nobl1dKTsKLQlfX3NldF9iaXQoY2hu LCBjcHVfZXZ0Y2huX21hc2tbY3B1XSk7Ci0KLQljcHVfZXZ0Y2huW2Nobl0gPSBjcHU7Ci19Ci0K LXN0YXRpYyB2b2lkIGluaXRfZXZ0Y2huX2NwdV9iaW5kaW5ncyh2b2lkKQotewotI2lmZGVmIENP TkZJR19TTVAKLQlpbnQgaTsKLQkvKiBCeSBkZWZhdWx0IGFsbCBldmVudCBjaGFubmVscyBub3Rp ZnkgQ1BVIzAuICovCi0JZm9yIChpID0gMDsgaSA8IE5SX0lSUVM7IGkrKykKLQkJaXJxX2Rlc2Nb aV0uYWZmaW5pdHkgPSBjcHVtYXNrX29mX2NwdSgwKTsKLSNlbmRpZgotCi0JbWVtc2V0KGNwdV9l dnRjaG4sIDAsIHNpemVvZihjcHVfZXZ0Y2huKSk7Ci0JbWVtc2V0KGNwdV9ldnRjaG5fbWFza1sw XSwgfjAsIHNpemVvZihjcHVfZXZ0Y2huX21hc2tbMF0pKTsKLX0KLQotc3RhdGljIGlubGluZSB1 bnNpZ25lZCBpbnQgY3B1X2Zyb21fZXZ0Y2huKHVuc2lnbmVkIGludCBldnRjaG4pCi17Ci0JcmV0 dXJuIGNwdV9ldnRjaG5bZXZ0Y2huXTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIGNsZWFyX2V2 dGNobihpbnQgcG9ydCkKLXsKLQlzdHJ1Y3Qgc2hhcmVkX2luZm8gKnMgPSBIWVBFUlZJU09SX3No YXJlZF9pbmZvOwotCXN5bmNfY2xlYXJfYml0KHBvcnQsICZzLT5ldnRjaG5fcGVuZGluZ1swXSk7 Ci19Ci0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfZXZ0Y2huKGludCBwb3J0KQotewotCXN0cnVj dCBzaGFyZWRfaW5mbyAqcyA9IEhZUEVSVklTT1Jfc2hhcmVkX2luZm87Ci0Jc3luY19zZXRfYml0 KHBvcnQsICZzLT5ldnRjaG5fcGVuZGluZ1swXSk7Ci19Ci0KLQotLyoqCi0gKiBub3RpZnlfcmVt b3RlX3ZpYV9pcnEgLSBzZW5kIGV2ZW50IHRvIHJlbW90ZSBlbmQgb2YgZXZlbnQgY2hhbm5lbCB2 aWEgaXJxCi0gKiBAaXJxOiBpcnEgb2YgZXZlbnQgY2hhbm5lbCB0byBzZW5kIGV2ZW50IHRvCi0g KgotICogVW5saWtlIG5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobigpLCB0aGlzIGlzIHNhZmUgdG8g dXNlIGFjcm9zcwotICogc2F2ZS9yZXN0b3JlLiBOb3RpZmljYXRpb25zIG9uIGEgYnJva2VuIGNv bm5lY3Rpb24gYXJlIHNpbGVudGx5Ci0gKiBkcm9wcGVkLgotICovCi12b2lkIG5vdGlmeV9yZW1v dGVfdmlhX2lycShpbnQgaXJxKQotewotCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoaXJx KTsKLQotCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKLQkJbm90aWZ5X3JlbW90ZV92aWFfZXZ0 Y2huKGV2dGNobik7Ci19Ci1FWFBPUlRfU1lNQk9MX0dQTChub3RpZnlfcmVtb3RlX3ZpYV9pcnEp OwotCi1zdGF0aWMgdm9pZCBtYXNrX2V2dGNobihpbnQgcG9ydCkKLXsKLQlzdHJ1Y3Qgc2hhcmVk X2luZm8gKnMgPSBIWVBFUlZJU09SX3NoYXJlZF9pbmZvOwotCXN5bmNfc2V0X2JpdChwb3J0LCAm cy0+ZXZ0Y2huX21hc2tbMF0pOwotfQotCi1zdGF0aWMgdm9pZCB1bm1hc2tfZXZ0Y2huKGludCBw b3J0KQotewotCXN0cnVjdCBzaGFyZWRfaW5mbyAqcyA9IEhZUEVSVklTT1Jfc2hhcmVkX2luZm87 Ci0JdW5zaWduZWQgaW50IGNwdSA9IGdldF9jcHUoKTsKLQotCUJVR19PTighaXJxc19kaXNhYmxl ZCgpKTsKLQotCS8qIFNsb3cgcGF0aCAoaHlwZXJjYWxsKSBpZiB0aGlzIGlzIGEgbm9uLWxvY2Fs IHBvcnQuICovCi0JaWYgKHVubGlrZWx5KGNwdSAhPSBjcHVfZnJvbV9ldnRjaG4ocG9ydCkpKSB7 Ci0JCXN0cnVjdCBldnRjaG5fdW5tYXNrIHVubWFzayA9IHsgLnBvcnQgPSBwb3J0IH07Ci0JCSh2 b2lkKUhZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF91bm1hc2ssICZ1bm1hc2sp OwotCX0gZWxzZSB7Ci0JCXN0cnVjdCB2Y3B1X2luZm8gKnZjcHVfaW5mbyA9IF9fZ2V0X2NwdV92 YXIoeGVuX3ZjcHUpOwotCi0JCXN5bmNfY2xlYXJfYml0KHBvcnQsICZzLT5ldnRjaG5fbWFza1sw XSk7Ci0KLQkJLyoKLQkJICogVGhlIGZvbGxvd2luZyBpcyBiYXNpY2FsbHkgdGhlIGVxdWl2YWxl bnQgb2YKLQkJICogJ2h3X3Jlc2VuZF9pcnEnLiBKdXN0IGxpa2UgYSByZWFsIElPLUFQSUMgd2Ug J2xvc2UKLQkJICogdGhlIGludGVycnVwdCBlZGdlJyBpZiB0aGUgY2hhbm5lbCBpcyBtYXNrZWQu Ci0JCSAqLwotCQlpZiAoc3luY190ZXN0X2JpdChwb3J0LCAmcy0+ZXZ0Y2huX3BlbmRpbmdbMF0p ICYmCi0JCSAgICAhc3luY190ZXN0X2FuZF9zZXRfYml0KHBvcnQgLyBCSVRTX1BFUl9MT05HLAot CQkJCQkgICAmdmNwdV9pbmZvLT5ldnRjaG5fcGVuZGluZ19zZWwpKQotCQkJdmNwdV9pbmZvLT5l dnRjaG5fdXBjYWxsX3BlbmRpbmcgPSAxOwotCX0KLQotCXB1dF9jcHUoKTsKLX0KLQotc3RhdGlj IGludCBmaW5kX3VuYm91bmRfaXJxKHZvaWQpCi17Ci0JaW50IGlycTsKLQotCS8qIE9ubHkgYWxs b2NhdGUgZnJvbSBkeW5pcnEgcmFuZ2UgKi8KLQlmb3IgKGlycSA9IDA7IGlycSA8IE5SX0lSUVM7 IGlycSsrKQotCQlpZiAoaXJxX2JpbmRjb3VudFtpcnFdID09IDApCi0JCQlicmVhazsKLQotCWlm IChpcnEgPT0gTlJfSVJRUykKLQkJcGFuaWMoIk5vIGF2YWlsYWJsZSBJUlEgdG8gYmluZCB0bzog aW5jcmVhc2UgTlJfSVJRUyFcbiIpOwotCi0JcmV0dXJuIGlycTsKLX0KLQotaW50IGJpbmRfZXZ0 Y2huX3RvX2lycSh1bnNpZ25lZCBpbnQgZXZ0Y2huKQotewotCWludCBpcnE7Ci0KLQlzcGluX2xv Y2soJmlycV9tYXBwaW5nX3VwZGF0ZV9sb2NrKTsKLQotCWlycSA9IGV2dGNobl90b19pcnFbZXZ0 Y2huXTsKLQotCWlmIChpcnEgPT0gLTEpIHsKLQkJaXJxID0gZmluZF91bmJvdW5kX2lycSgpOwot Ci0JCWR5bmFtaWNfaXJxX2luaXQoaXJxKTsKLQkJc2V0X2lycV9jaGlwX2FuZF9oYW5kbGVyX25h bWUoaXJxLCAmeGVuX2R5bmFtaWNfY2hpcCwKLQkJCQkJICAgICAgaGFuZGxlX2xldmVsX2lycSwg ImV2ZW50Iik7Ci0KLQkJZXZ0Y2huX3RvX2lycVtldnRjaG5dID0gaXJxOwotCQlpcnFfaW5mb1tp cnFdID0gbWtfaXJxX2luZm8oSVJRVF9FVlRDSE4sIDAsIGV2dGNobik7Ci0JfQotCi0JaXJxX2Jp bmRjb3VudFtpcnFdKys7Ci0KLQlzcGluX3VubG9jaygmaXJxX21hcHBpbmdfdXBkYXRlX2xvY2sp OwotCi0JcmV0dXJuIGlycTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BMKGJpbmRfZXZ0Y2huX3RvX2ly cSk7Ci0KLXN0YXRpYyBpbnQgYmluZF9pcGlfdG9faXJxKHVuc2lnbmVkIGludCBpcGksIHVuc2ln bmVkIGludCBjcHUpCi17Ci0Jc3RydWN0IGV2dGNobl9iaW5kX2lwaSBiaW5kX2lwaTsKLQlpbnQg ZXZ0Y2huLCBpcnE7Ci0KLQlzcGluX2xvY2soJmlycV9tYXBwaW5nX3VwZGF0ZV9sb2NrKTsKLQot CWlycSA9IHBlcl9jcHUoaXBpX3RvX2lycSwgY3B1KVtpcGldOwotCWlmIChpcnEgPT0gLTEpIHsK LQkJaXJxID0gZmluZF91bmJvdW5kX2lycSgpOwotCQlpZiAoaXJxIDwgMCkKLQkJCWdvdG8gb3V0 OwotCi0JCWR5bmFtaWNfaXJxX2luaXQoaXJxKTsKLQkJc2V0X2lycV9jaGlwX2FuZF9oYW5kbGVy X25hbWUoaXJxLCAmeGVuX2R5bmFtaWNfY2hpcCwKLQkJCQkJICAgICAgaGFuZGxlX2xldmVsX2ly cSwgImlwaSIpOwotCi0JCWJpbmRfaXBpLnZjcHUgPSBjcHU7Ci0JCWlmIChIWVBFUlZJU09SX2V2 ZW50X2NoYW5uZWxfb3AoRVZUQ0hOT1BfYmluZF9pcGksCi0JCQkJCQkmYmluZF9pcGkpICE9IDAp Ci0JCQlCVUcoKTsKLQkJZXZ0Y2huID0gYmluZF9pcGkucG9ydDsKLQotCQlldnRjaG5fdG9faXJx W2V2dGNobl0gPSBpcnE7Ci0JCWlycV9pbmZvW2lycV0gPSBta19pcnFfaW5mbyhJUlFUX0lQSSwg aXBpLCBldnRjaG4pOwotCi0JCXBlcl9jcHUoaXBpX3RvX2lycSwgY3B1KVtpcGldID0gaXJxOwot Ci0JCWJpbmRfZXZ0Y2huX3RvX2NwdShldnRjaG4sIGNwdSk7Ci0JfQotCi0JaXJxX2JpbmRjb3Vu dFtpcnFdKys7Ci0KLSBvdXQ6Ci0Jc3Bpbl91bmxvY2soJmlycV9tYXBwaW5nX3VwZGF0ZV9sb2Nr KTsKLQlyZXR1cm4gaXJxOwotfQotCi0KLXN0YXRpYyBpbnQgYmluZF92aXJxX3RvX2lycSh1bnNp Z25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IGNwdSkKLXsKLQlzdHJ1Y3QgZXZ0Y2huX2JpbmRf dmlycSBiaW5kX3ZpcnE7Ci0JaW50IGV2dGNobiwgaXJxOwotCi0Jc3Bpbl9sb2NrKCZpcnFfbWFw cGluZ191cGRhdGVfbG9jayk7Ci0KLQlpcnEgPSBwZXJfY3B1KHZpcnFfdG9faXJxLCBjcHUpW3Zp cnFdOwotCi0JaWYgKGlycSA9PSAtMSkgewotCQliaW5kX3ZpcnEudmlycSA9IHZpcnE7Ci0JCWJp bmRfdmlycS52Y3B1ID0gY3B1OwotCQlpZiAoSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVW VENITk9QX2JpbmRfdmlycSwKLQkJCQkJCSZiaW5kX3ZpcnEpICE9IDApCi0JCQlCVUcoKTsKLQkJ ZXZ0Y2huID0gYmluZF92aXJxLnBvcnQ7Ci0KLQkJaXJxID0gZmluZF91bmJvdW5kX2lycSgpOwot Ci0JCWR5bmFtaWNfaXJxX2luaXQoaXJxKTsKLQkJc2V0X2lycV9jaGlwX2FuZF9oYW5kbGVyX25h bWUoaXJxLCAmeGVuX2R5bmFtaWNfY2hpcCwKLQkJCQkJICAgICAgaGFuZGxlX2xldmVsX2lycSwg InZpcnEiKTsKLQotCQlldnRjaG5fdG9faXJxW2V2dGNobl0gPSBpcnE7Ci0JCWlycV9pbmZvW2ly cV0gPSBta19pcnFfaW5mbyhJUlFUX1ZJUlEsIHZpcnEsIGV2dGNobik7Ci0KLQkJcGVyX2NwdSh2 aXJxX3RvX2lycSwgY3B1KVt2aXJxXSA9IGlycTsKLQotCQliaW5kX2V2dGNobl90b19jcHUoZXZ0 Y2huLCBjcHUpOwotCX0KLQotCWlycV9iaW5kY291bnRbaXJxXSsrOwotCi0Jc3Bpbl91bmxvY2so JmlycV9tYXBwaW5nX3VwZGF0ZV9sb2NrKTsKLQotCXJldHVybiBpcnE7Ci19Ci0KLXN0YXRpYyB2 b2lkIHVuYmluZF9mcm9tX2lycSh1bnNpZ25lZCBpbnQgaXJxKQotewotCXN0cnVjdCBldnRjaG5f Y2xvc2UgY2xvc2U7Ci0JaW50IGV2dGNobiA9IGV2dGNobl9mcm9tX2lycShpcnEpOwotCi0Jc3Bp bl9sb2NrKCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7Ci0KLQlpZiAoVkFMSURfRVZUQ0hOKGV2 dGNobikgJiYgKC0taXJxX2JpbmRjb3VudFtpcnFdID09IDApKSB7Ci0JCWNsb3NlLnBvcnQgPSBl dnRjaG47Ci0JCWlmIChIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3AoRVZUQ0hOT1BfY2xvc2Us ICZjbG9zZSkgIT0gMCkKLQkJCUJVRygpOwotCi0JCXN3aXRjaCAodHlwZV9mcm9tX2lycShpcnEp KSB7Ci0JCWNhc2UgSVJRVF9WSVJROgotCQkJcGVyX2NwdSh2aXJxX3RvX2lycSwgY3B1X2Zyb21f ZXZ0Y2huKGV2dGNobikpCi0JCQkJW2luZGV4X2Zyb21faXJxKGlycSldID0gLTE7Ci0JCQlicmVh azsKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOwotCQl9Ci0KLQkJLyogQ2xvc2VkIHBvcnRzIGFyZSBp bXBsaWNpdGx5IHJlLWJvdW5kIHRvIFZDUFUwLiAqLwotCQliaW5kX2V2dGNobl90b19jcHUoZXZ0 Y2huLCAwKTsKLQotCQlldnRjaG5fdG9faXJxW2V2dGNobl0gPSAtMTsKLQkJaXJxX2luZm9baXJx XSA9IElSUV9VTkJPVU5EOwotCi0JCWR5bmFtaWNfaXJxX2luaXQoaXJxKTsKLQl9Ci0KLQlzcGlu X3VubG9jaygmaXJxX21hcHBpbmdfdXBkYXRlX2xvY2spOwotfQotCi1pbnQgYmluZF9ldnRjaG5f dG9faXJxaGFuZGxlcih1bnNpZ25lZCBpbnQgZXZ0Y2huLAotCQkJICAgICAgaXJxX2hhbmRsZXJf dCBoYW5kbGVyLAotCQkJICAgICAgdW5zaWduZWQgbG9uZyBpcnFmbGFncywKLQkJCSAgICAgIGNv bnN0IGNoYXIgKmRldm5hbWUsIHZvaWQgKmRldl9pZCkKLXsKLQl1bnNpZ25lZCBpbnQgaXJxOwot CWludCByZXR2YWw7Ci0KLQlpcnEgPSBiaW5kX2V2dGNobl90b19pcnEoZXZ0Y2huKTsKLQlyZXR2 YWwgPSByZXF1ZXN0X2lycShpcnEsIGhhbmRsZXIsIGlycWZsYWdzLCBkZXZuYW1lLCBkZXZfaWQp OwotCWlmIChyZXR2YWwgIT0gMCkgewotCQl1bmJpbmRfZnJvbV9pcnEoaXJxKTsKLQkJcmV0dXJu IHJldHZhbDsKLQl9Ci0KLQlyZXR1cm4gaXJxOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoYmluZF9l dnRjaG5fdG9faXJxaGFuZGxlcik7Ci0KLWludCBiaW5kX3ZpcnFfdG9faXJxaGFuZGxlcih1bnNp Z25lZCBpbnQgdmlycSwgdW5zaWduZWQgaW50IGNwdSwKLQkJCSAgICBpcnFfaGFuZGxlcl90IGhh bmRsZXIsCi0JCQkgICAgdW5zaWduZWQgbG9uZyBpcnFmbGFncywgY29uc3QgY2hhciAqZGV2bmFt ZSwgdm9pZCAqZGV2X2lkKQotewotCXVuc2lnbmVkIGludCBpcnE7Ci0JaW50IHJldHZhbDsKLQot CWlycSA9IGJpbmRfdmlycV90b19pcnEodmlycSwgY3B1KTsKLQlyZXR2YWwgPSByZXF1ZXN0X2ly cShpcnEsIGhhbmRsZXIsIGlycWZsYWdzLCBkZXZuYW1lLCBkZXZfaWQpOwotCWlmIChyZXR2YWwg IT0gMCkgewotCQl1bmJpbmRfZnJvbV9pcnEoaXJxKTsKLQkJcmV0dXJuIHJldHZhbDsKLQl9Ci0K LQlyZXR1cm4gaXJxOwotfQotRVhQT1JUX1NZTUJPTF9HUEwoYmluZF92aXJxX3RvX2lycWhhbmRs ZXIpOwotCi1pbnQgYmluZF9pcGlfdG9faXJxaGFuZGxlcihlbnVtIGlwaV92ZWN0b3IgaXBpLAot CQkJICAgdW5zaWduZWQgaW50IGNwdSwKLQkJCSAgIGlycV9oYW5kbGVyX3QgaGFuZGxlciwKLQkJ CSAgIHVuc2lnbmVkIGxvbmcgaXJxZmxhZ3MsCi0JCQkgICBjb25zdCBjaGFyICpkZXZuYW1lLAot CQkJICAgdm9pZCAqZGV2X2lkKQotewotCWludCBpcnEsIHJldHZhbDsKLQotCWlycSA9IGJpbmRf aXBpX3RvX2lycShpcGksIGNwdSk7Ci0JaWYgKGlycSA8IDApCi0JCXJldHVybiBpcnE7Ci0KLQly ZXR2YWwgPSByZXF1ZXN0X2lycShpcnEsIGhhbmRsZXIsIGlycWZsYWdzLCBkZXZuYW1lLCBkZXZf aWQpOwotCWlmIChyZXR2YWwgIT0gMCkgewotCQl1bmJpbmRfZnJvbV9pcnEoaXJxKTsKLQkJcmV0 dXJuIHJldHZhbDsKLQl9Ci0KLQlyZXR1cm4gaXJxOwotfQotCi12b2lkIHVuYmluZF9mcm9tX2ly cWhhbmRsZXIodW5zaWduZWQgaW50IGlycSwgdm9pZCAqZGV2X2lkKQotewotCWZyZWVfaXJxKGly cSwgZGV2X2lkKTsKLQl1bmJpbmRfZnJvbV9pcnEoaXJxKTsKLX0KLUVYUE9SVF9TWU1CT0xfR1BM KHVuYmluZF9mcm9tX2lycWhhbmRsZXIpOwotCi12b2lkIHhlbl9zZW5kX0lQSV9vbmUodW5zaWdu ZWQgaW50IGNwdSwgZW51bSBpcGlfdmVjdG9yIHZlY3RvcikKLXsKLQlpbnQgaXJxID0gcGVyX2Nw dShpcGlfdG9faXJxLCBjcHUpW3ZlY3Rvcl07Ci0JQlVHX09OKGlycSA8IDApOwotCW5vdGlmeV9y ZW1vdGVfdmlhX2lycShpcnEpOwotfQotCi0KLS8qCi0gKiBTZWFyY2ggdGhlIENQVXMgcGVuZGlu ZyBldmVudHMgYml0bWFza3MuICBGb3IgZWFjaCBvbmUgZm91bmQsIG1hcAotICogdGhlIGV2ZW50 IG51bWJlciB0byBhbiBpcnEsIGFuZCBmZWVkIGl0IGludG8gZG9fSVJRKCkgZm9yCi0gKiBoYW5k bGluZy4KLSAqCi0gKiBYZW4gdXNlcyBhIHR3by1sZXZlbCBiaXRtYXAgdG8gc3BlZWQgc2VhcmNo aW5nLiAgVGhlIGZpcnN0IGxldmVsIGlzCi0gKiBhIGJpdHNldCBvZiB3b3JkcyB3aGljaCBjb250 YWluIHBlbmRpbmcgZXZlbnQgYml0cy4gIFRoZSBzZWNvbmQKLSAqIGxldmVsIGlzIGEgYml0c2V0 IG9mIHBlbmRpbmcgZXZlbnRzIHRoZW1zZWx2ZXMuCi0gKi8KLXZvaWQgeGVuX2V2dGNobl9kb191 cGNhbGwoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpCi17Ci0JaW50IGNwdSA9IGdldF9jcHUoKTsKLQlz dHJ1Y3Qgc2hhcmVkX2luZm8gKnMgPSBIWVBFUlZJU09SX3NoYXJlZF9pbmZvOwotCXN0cnVjdCB2 Y3B1X2luZm8gKnZjcHVfaW5mbyA9IF9fZ2V0X2NwdV92YXIoeGVuX3ZjcHUpOwotCXVuc2lnbmVk IGxvbmcgcGVuZGluZ193b3JkczsKLQotCXZjcHVfaW5mby0+ZXZ0Y2huX3VwY2FsbF9wZW5kaW5n ID0gMDsKLQotCS8qIE5CLiBObyBuZWVkIGZvciBhIGJhcnJpZXIgaGVyZSAtLSBYQ0hHIGlzIGEg YmFycmllciBvbiB4ODYuICovCi0JcGVuZGluZ193b3JkcyA9IHhjaGcoJnZjcHVfaW5mby0+ZXZ0 Y2huX3BlbmRpbmdfc2VsLCAwKTsKLQl3aGlsZSAocGVuZGluZ193b3JkcyAhPSAwKSB7Ci0JCXVu c2lnbmVkIGxvbmcgcGVuZGluZ19iaXRzOwotCQlpbnQgd29yZF9pZHggPSBfX2ZmcyhwZW5kaW5n X3dvcmRzKTsKLQkJcGVuZGluZ193b3JkcyAmPSB+KDFVTCA8PCB3b3JkX2lkeCk7Ci0KLQkJd2hp bGUgKChwZW5kaW5nX2JpdHMgPSBhY3RpdmVfZXZ0Y2hucyhjcHUsIHMsIHdvcmRfaWR4KSkgIT0g MCkgewotCQkJaW50IGJpdF9pZHggPSBfX2ZmcyhwZW5kaW5nX2JpdHMpOwotCQkJaW50IHBvcnQg PSAod29yZF9pZHggKiBCSVRTX1BFUl9MT05HKSArIGJpdF9pZHg7Ci0JCQlpbnQgaXJxID0gZXZ0 Y2huX3RvX2lycVtwb3J0XTsKLQotCQkJaWYgKGlycSAhPSAtMSkgewotCQkJCXJlZ3MtPm9yaWdf YXggPSB+aXJxOwotCQkJCWRvX0lSUShyZWdzKTsKLQkJCX0KLQkJfQotCX0KLQotCXB1dF9jcHUo KTsKLX0KLQotLyogUmViaW5kIGFuIGV2dGNobiBzbyB0aGF0IGl0IGdldHMgZGVsaXZlcmVkIHRv IGEgc3BlY2lmaWMgY3B1ICovCi1zdGF0aWMgdm9pZCByZWJpbmRfaXJxX3RvX2NwdSh1bnNpZ25l ZCBpcnEsIHVuc2lnbmVkIHRjcHUpCi17Ci0Jc3RydWN0IGV2dGNobl9iaW5kX3ZjcHUgYmluZF92 Y3B1OwotCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoaXJxKTsKLQotCWlmICghVkFMSURf RVZUQ0hOKGV2dGNobikpCi0JCXJldHVybjsKLQotCS8qIFNlbmQgZnV0dXJlIGluc3RhbmNlcyBv ZiB0aGlzIGludGVycnVwdCB0byBvdGhlciB2Y3B1LiAqLwotCWJpbmRfdmNwdS5wb3J0ID0gZXZ0 Y2huOwotCWJpbmRfdmNwdS52Y3B1ID0gdGNwdTsKLQotCS8qCi0JICogSWYgdGhpcyBmYWlscywg aXQgdXN1YWxseSBqdXN0IGluZGljYXRlcyB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBhCi0JICog dmlycSBvciBJUEkgY2hhbm5lbCwgd2hpY2ggZG9uJ3QgYWN0dWFsbHkgbmVlZCB0byBiZSByZWJv dW5kLiBJZ25vcmUKLQkgKiBpdCwgYnV0IGRvbid0IGRvIHRoZSB4ZW5saW51eC1sZXZlbCByZWJp bmQgaW4gdGhhdCBjYXNlLgotCSAqLwotCWlmIChIWVBFUlZJU09SX2V2ZW50X2NoYW5uZWxfb3Ao RVZUQ0hOT1BfYmluZF92Y3B1LCAmYmluZF92Y3B1KSA+PSAwKQotCQliaW5kX2V2dGNobl90b19j cHUoZXZ0Y2huLCB0Y3B1KTsKLX0KLQotCi1zdGF0aWMgdm9pZCBzZXRfYWZmaW5pdHlfaXJxKHVu c2lnbmVkIGlycSwgY3B1bWFza190IGRlc3QpCi17Ci0JdW5zaWduZWQgdGNwdSA9IGZpcnN0X2Nw dShkZXN0KTsKLQlyZWJpbmRfaXJxX3RvX2NwdShpcnEsIHRjcHUpOwotfQotCi1zdGF0aWMgdm9p ZCBlbmFibGVfZHluaXJxKHVuc2lnbmVkIGludCBpcnEpCi17Ci0JaW50IGV2dGNobiA9IGV2dGNo bl9mcm9tX2lycShpcnEpOwotCi0JaWYgKFZBTElEX0VWVENITihldnRjaG4pKQotCQl1bm1hc2tf ZXZ0Y2huKGV2dGNobik7Ci19Ci0KLXN0YXRpYyB2b2lkIGRpc2FibGVfZHluaXJxKHVuc2lnbmVk IGludCBpcnEpCi17Ci0JaW50IGV2dGNobiA9IGV2dGNobl9mcm9tX2lycShpcnEpOwotCi0JaWYg KFZBTElEX0VWVENITihldnRjaG4pKQotCQltYXNrX2V2dGNobihldnRjaG4pOwotfQotCi1zdGF0 aWMgdm9pZCBhY2tfZHluaXJxKHVuc2lnbmVkIGludCBpcnEpCi17Ci0JaW50IGV2dGNobiA9IGV2 dGNobl9mcm9tX2lycShpcnEpOwotCi0JbW92ZV9uYXRpdmVfaXJxKGlycSk7Ci0KLQlpZiAoVkFM SURfRVZUQ0hOKGV2dGNobikpCi0JCWNsZWFyX2V2dGNobihldnRjaG4pOwotfQotCi1zdGF0aWMg aW50IHJldHJpZ2dlcl9keW5pcnEodW5zaWduZWQgaW50IGlycSkKLXsKLQlpbnQgZXZ0Y2huID0g ZXZ0Y2huX2Zyb21faXJxKGlycSk7Ci0JaW50IHJldCA9IDA7Ci0KLQlpZiAoVkFMSURfRVZUQ0hO KGV2dGNobikpIHsKLQkJc2V0X2V2dGNobihldnRjaG4pOwotCQlyZXQgPSAxOwotCX0KLQotCXJl dHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgeGVuX2R5bmFtaWNfY2hpcCBf X3JlYWRfbW9zdGx5ID0gewotCS5uYW1lCQk9ICJ4ZW4tZHluIiwKLQkubWFzawkJPSBkaXNhYmxl X2R5bmlycSwKLQkudW5tYXNrCQk9IGVuYWJsZV9keW5pcnEsCi0JLmFjawkJPSBhY2tfZHluaXJx LAotCS5zZXRfYWZmaW5pdHkJPSBzZXRfYWZmaW5pdHlfaXJxLAotCS5yZXRyaWdnZXIJPSByZXRy aWdnZXJfZHluaXJxLAotfTsKLQotdm9pZCBfX2luaXQgeGVuX2luaXRfSVJRKHZvaWQpCi17Ci0J aW50IGk7Ci0KLQlpbml0X2V2dGNobl9jcHVfYmluZGluZ3MoKTsKLQotCS8qIE5vIGV2ZW50IGNo YW5uZWxzIGFyZSAnbGl2ZScgcmlnaHQgbm93LiAqLwotCWZvciAoaSA9IDA7IGkgPCBOUl9FVkVO VF9DSEFOTkVMUzsgaSsrKQotCQltYXNrX2V2dGNobihpKTsKLQotCS8qIER5bmFtaWMgSVJRIHNw YWNlIGlzIGN1cnJlbnRseSB1bmJvdW5kLiBaZXJvIHRoZSByZWZjbnRzLiAqLwotCWZvciAoaSA9 IDA7IGkgPCBOUl9JUlFTOyBpKyspCi0JCWlycV9iaW5kY291bnRbaV0gPSAwOwotCi0JaXJxX2N0 eF9pbml0KHNtcF9wcm9jZXNzb3JfaWQoKSk7Ci19CmRpZmYgLXVyTiBvbGQvYXJjaC94ODYveGVu L01ha2VmaWxlIGxpbnV4L2FyY2gveDg2L3hlbi9NYWtlZmlsZQotLS0gb2xkL2FyY2gveDg2L3hl bi9NYWtlZmlsZQkyMDA4LTAzLTEwIDEzOjIyOjI3LjAwMDAwMDAwMCArMDgwMAorKysgbGludXgv YXJjaC94ODYveGVuL01ha2VmaWxlCTIwMDgtMDMtMjUgMTM6NTY6NDEuMzY3NzY0NDQ4ICswODAw CkBAIC0xLDQgKzEsNCBAQAogb2JqLXkJCTo9IGVubGlnaHRlbi5vIHNldHVwLm8gZmVhdHVyZXMu byBtdWx0aWNhbGxzLm8gbW11Lm8gXAotCQkJZXZlbnRzLm8gdGltZS5vIG1hbmFnZS5vIHhlbi1h c20ubworCQkJdGltZS5vIG1hbmFnZS5vIHhlbi1hc20ubwogCiBvYmotJChDT05GSUdfU01QKQkr PSBzbXAubwpkaWZmIC11ck4gb2xkL2FyY2gveDg2L3hlbi94ZW4tb3BzLmggbGludXgvYXJjaC94 ODYveGVuL3hlbi1vcHMuaAotLS0gb2xkL2FyY2gveDg2L3hlbi94ZW4tb3BzLmgJMjAwOC0wMy0y NSAxMzoyMTowOS45OTY1Mjc2MDQgKzA4MDAKKysrIGxpbnV4L2FyY2gveDg2L3hlbi94ZW4tb3Bz LmgJMjAwOC0wMy0yNSAxMzo1OToxNi4zNDk4MDkxMzcgKzA4MDAKQEAgLTIsNiArMiw3IEBACiAj ZGVmaW5lIFhFTl9PUFNfSAogCiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgorI2luY2x1ZGUgPHhl bi94ZW4tb3BzLmg+CiAKIC8qIFRoZXNlIGFyZSBjb2RlLCBidXQgbm90IGZ1bmN0aW9ucy4gIERl ZmluZWQgaW4gZW50cnkuUyAqLwogZXh0ZXJuIGNvbnN0IGNoYXIgeGVuX2h5cGVydmlzb3JfY2Fs bGJhY2tbXTsKQEAgLTksNyArMTAsNiBAQAogCiB2b2lkIHhlbl9jb3B5X3RyYXBfaW5mbyhzdHJ1 Y3QgdHJhcF9pbmZvICp0cmFwcyk7CiAKLURFQ0xBUkVfUEVSX0NQVShzdHJ1Y3QgdmNwdV9pbmZv ICosIHhlbl92Y3B1KTsKIERFQ0xBUkVfUEVSX0NQVSh1bnNpZ25lZCBsb25nLCB4ZW5fY3IzKTsK IERFQ0xBUkVfUEVSX0NQVSh1bnNpZ25lZCBsb25nLCB4ZW5fY3VycmVudF9jcjMpOwogCmRpZmYg LXVyTiBvbGQvZHJpdmVycy94ZW4vZXZlbnRzLmMgbGludXgvZHJpdmVycy94ZW4vZXZlbnRzLmMK LS0tIG9sZC9kcml2ZXJzL3hlbi9ldmVudHMuYwkxOTcwLTAxLTAxIDA4OjAwOjAwLjAwMDAwMDAw MCArMDgwMAorKysgbGludXgvZHJpdmVycy94ZW4vZXZlbnRzLmMJMjAwOC0wMy0yNSAxMzo1Njo0 MS4zNjg3NjQyODcgKzA4MDAKQEAgLTAsMCArMSw1OTEgQEAKKy8qCisgKiBYZW4gZXZlbnQgY2hh bm5lbHMKKyAqCisgKiBYZW4gbW9kZWxzIGludGVycnVwdHMgd2l0aCBhYnN0cmFjdCBldmVudCBj aGFubmVscy4gIEJlY2F1c2UgZWFjaAorICogZG9tYWluIGdldHMgMTAyNCBldmVudCBjaGFubmVs cywgYnV0IE5SX0lSUSBpcyBub3QgdGhhdCBsYXJnZSwgd2UKKyAqIG11c3QgZHluYW1pY2FsbHkg bWFwIGlycXM8LT5ldmVudCBjaGFubmVscy4gIFRoZSBldmVudCBjaGFubmVscworICogaW50ZXJm YWNlIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBieSBkZWZpbmluZyBhIHhlbiBpbnRlcnJ1 cHQKKyAqIGNoaXAuICBXaGVuIGFuIGV2ZW50IGlzIHJlY2lldmVkLCBpdCBpcyBtYXBwZWQgdG8g YW4gaXJxIGFuZCBzZW50CisgKiB0aHJvdWdoIHRoZSBub3JtYWwgaW50ZXJydXB0IHByb2Nlc3Np bmcgcGF0aC4KKyAqCisgKiBUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBldmVudHMgd2hpY2ggY2Fu IGJlIG1hcHBlZCB0byBhbiBldmVudAorICogY2hhbm5lbDoKKyAqCisgKiAxLiBJbnRlci1kb21h aW4gbm90aWZpY2F0aW9ucy4gIFRoaXMgaW5jbHVkZXMgYWxsIHRoZSB2aXJ0dWFsCisgKiAgICBk ZXZpY2UgZXZlbnRzLCBzaW5jZSB0aGV5J3JlIGRyaXZlbiBieSBmcm9udC1lbmRzIGluIGFub3Ro ZXIgZG9tYWluCisgKiAgICAodHlwaWNhbGx5IGRvbTApLgorICogMi4gVklSUXMsIHR5cGljYWxs eSB1c2VkIGZvciB0aW1lcnMuICBUaGVzZSBhcmUgcGVyLWNwdSBldmVudHMuCisgKiAzLiBJUElz LgorICogNC4gSGFyZHdhcmUgaW50ZXJydXB0cy4gTm90IHN1cHBvcnRlZCBhdCBwcmVzZW50Lgor ICoKKyAqIEplcmVteSBGaXR6aGFyZGluZ2UgPGplcmVteUB4ZW5zb3VyY2UuY29tPiwgWGVuU291 cmNlIEluYywgMjAwNworICovCisKKyNpbmNsdWRlIDxsaW51eC9saW5rYWdlLmg+CisjaW5jbHVk ZSA8bGludXgvaW50ZXJydXB0Lmg+CisjaW5jbHVkZSA8bGludXgvaXJxLmg+CisjaW5jbHVkZSA8 bGludXgvbW9kdWxlLmg+CisjaW5jbHVkZSA8bGludXgvc3RyaW5nLmg+CisKKyNpbmNsdWRlIDxh c20vcHRyYWNlLmg+CisjaW5jbHVkZSA8YXNtL2lycS5oPgorI2luY2x1ZGUgPGFzbS9zeW5jX2Jp dG9wcy5oPgorI2luY2x1ZGUgPGFzbS94ZW4vaHlwZXJjYWxsLmg+CisjaW5jbHVkZSA8YXNtL3hl bi9oeXBlcnZpc29yLmg+CisKKyNpbmNsdWRlIDx4ZW4vZXZlbnRzLmg+CisjaW5jbHVkZSA8eGVu L2ludGVyZmFjZS94ZW4uaD4KKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2V2ZW50X2NoYW5uZWwu aD4KKworI2luY2x1ZGUgPHhlbi94ZW4tb3BzLmg+CisKKy8qCisgKiBUaGlzIGxvY2sgcHJvdGVj dHMgdXBkYXRlcyB0byB0aGUgZm9sbG93aW5nIG1hcHBpbmcgYW5kIHJlZmVyZW5jZS1jb3VudAor ICogYXJyYXlzLiBUaGUgbG9jayBkb2VzIG5vdCBuZWVkIHRvIGJlIGFjcXVpcmVkIHRvIHJlYWQg dGhlIG1hcHBpbmcgdGFibGVzLgorICovCitzdGF0aWMgREVGSU5FX1NQSU5MT0NLKGlycV9tYXBw aW5nX3VwZGF0ZV9sb2NrKTsKKworLyogSVJRIDwtPiBWSVJRIG1hcHBpbmcuICovCitzdGF0aWMg REVGSU5FX1BFUl9DUFUoaW50LCB2aXJxX3RvX2lycVtOUl9WSVJRU10pID0ge1swIC4uLiBOUl9W SVJRUy0xXSA9IC0xfTsKKworLyogSVJRIDwtPiBJUEkgbWFwcGluZyAqLworc3RhdGljIERFRklO RV9QRVJfQ1BVKGludCwgaXBpX3RvX2lycVtYRU5fTlJfSVBJU10pID0ge1swIC4uLiBYRU5fTlJf SVBJUy0xXSA9IC0xfTsKKworLyogUGFja2VkIElSUSBpbmZvcm1hdGlvbjogYmluZGluZyB0eXBl LCBzdWItdHlwZSBpbmRleCwgYW5kIGV2ZW50IGNoYW5uZWwuICovCitzdHJ1Y3QgcGFja2VkX2ly cQoreworCXVuc2lnbmVkIHNob3J0IGV2dGNobjsKKwl1bnNpZ25lZCBjaGFyIGluZGV4OworCXVu c2lnbmVkIGNoYXIgdHlwZTsKK307CisKK3N0YXRpYyBzdHJ1Y3QgcGFja2VkX2lycSBpcnFfaW5m b1tOUl9JUlFTXTsKKworLyogQmluZGluZyB0eXBlcy4gKi8KK2VudW0geworCUlSUVRfVU5CT1VO RCwKKwlJUlFUX1BJUlEsCisJSVJRVF9WSVJRLAorCUlSUVRfSVBJLAorCUlSUVRfRVZUQ0hOCit9 OworCisvKiBDb252ZW5pZW50IHNob3J0aGFuZCBmb3IgcGFja2VkIHJlcHJlc2VudGF0aW9uIG9m IGFuIHVuYm91bmQgSVJRLiAqLworI2RlZmluZSBJUlFfVU5CT1VORAlta19pcnFfaW5mbyhJUlFU X1VOQk9VTkQsIDAsIDApCisKK3N0YXRpYyBpbnQgZXZ0Y2huX3RvX2lycVtOUl9FVkVOVF9DSEFO TkVMU10gPSB7CisJWzAgLi4uIE5SX0VWRU5UX0NIQU5ORUxTLTFdID0gLTEKK307CitzdGF0aWMg dW5zaWduZWQgbG9uZyBjcHVfZXZ0Y2huX21hc2tbTlJfQ1BVU11bTlJfRVZFTlRfQ0hBTk5FTFMv QklUU19QRVJfTE9OR107CitzdGF0aWMgdTggY3B1X2V2dGNobltOUl9FVkVOVF9DSEFOTkVMU107 CisKKy8qIFJlZmVyZW5jZSBjb3VudHMgZm9yIGJpbmRpbmdzIHRvIElSUXMuICovCitzdGF0aWMg aW50IGlycV9iaW5kY291bnRbTlJfSVJRU107CisKKy8qIFhlbiB3aWxsIG5ldmVyIGFsbG9jYXRl IHBvcnQgemVybyBmb3IgYW55IHB1cnBvc2UuICovCisjZGVmaW5lIFZBTElEX0VWVENITihjaG4p CSgoY2huKSAhPSAwKQorCisvKgorICogRm9yY2UgYSBwcm9wZXIgZXZlbnQtY2hhbm5lbCBjYWxs YmFjayBmcm9tIFhlbiBhZnRlciBjbGVhcmluZyB0aGUKKyAqIGNhbGxiYWNrIG1hc2suIFdlIGRv IHRoaXMgaW4gYSB2ZXJ5IHNpbXBsZSBtYW5uZXIsIGJ5IG1ha2luZyBhIGNhbGwKKyAqIGRvd24g aW50byBYZW4uIFRoZSBwZW5kaW5nIGZsYWcgd2lsbCBiZSBjaGVja2VkIGJ5IFhlbiBvbiByZXR1 cm4uCisgKi8KK3ZvaWQgZm9yY2VfZXZ0Y2huX2NhbGxiYWNrKHZvaWQpCit7CisJKHZvaWQpSFlQ RVJWSVNPUl94ZW5fdmVyc2lvbigwLCBOVUxMKTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGZvcmNl X2V2dGNobl9jYWxsYmFjayk7CisKK3N0YXRpYyBzdHJ1Y3QgaXJxX2NoaXAgeGVuX2R5bmFtaWNf Y2hpcDsKKworLyogQ29uc3RydWN0b3IgZm9yIHBhY2tlZCBJUlEgaW5mb3JtYXRpb24uICovCitz dGF0aWMgaW5saW5lIHN0cnVjdCBwYWNrZWRfaXJxIG1rX2lycV9pbmZvKHUzMiB0eXBlLCB1MzIg aW5kZXgsIHUzMiBldnRjaG4pCit7CisJcmV0dXJuIChzdHJ1Y3QgcGFja2VkX2lycSkgeyBldnRj aG4sIGluZGV4LCB0eXBlIH07Cit9CisKKy8qCisgKiBBY2Nlc3NvcnMgZm9yIHBhY2tlZCBJUlEg aW5mb3JtYXRpb24uCisgKi8KK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGV2dGNobl9mcm9t X2lycShpbnQgaXJxKQoreworCXJldHVybiBpcnFfaW5mb1tpcnFdLmV2dGNobjsKK30KKworc3Rh dGljIGlubGluZSB1bnNpZ25lZCBpbnQgaW5kZXhfZnJvbV9pcnEoaW50IGlycSkKK3sKKwlyZXR1 cm4gaXJxX2luZm9baXJxXS5pbmRleDsKK30KKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBpbnQg dHlwZV9mcm9tX2lycShpbnQgaXJxKQoreworCXJldHVybiBpcnFfaW5mb1tpcnFdLnR5cGU7Cit9 CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBhY3RpdmVfZXZ0Y2hucyh1bnNpZ25lZCBp bnQgY3B1LAorCQkJCQkgICBzdHJ1Y3Qgc2hhcmVkX2luZm8gKnNoLAorCQkJCQkgICB1bnNpZ25l ZCBpbnQgaWR4KQoreworCXJldHVybiAoc2gtPmV2dGNobl9wZW5kaW5nW2lkeF0gJgorCQljcHVf ZXZ0Y2huX21hc2tbY3B1XVtpZHhdICYKKwkJfnNoLT5ldnRjaG5fbWFza1tpZHhdKTsKK30KKwor c3RhdGljIHZvaWQgYmluZF9ldnRjaG5fdG9fY3B1KHVuc2lnbmVkIGludCBjaG4sIHVuc2lnbmVk IGludCBjcHUpCit7CisJaW50IGlycSA9IGV2dGNobl90b19pcnFbY2huXTsKKworCUJVR19PTihp cnEgPT0gLTEpOworI2lmZGVmIENPTkZJR19TTVAKKwlpcnFfZGVzY1tpcnFdLmFmZmluaXR5ID0g Y3B1bWFza19vZl9jcHUoY3B1KTsKKyNlbmRpZgorCisJX19jbGVhcl9iaXQoY2huLCBjcHVfZXZ0 Y2huX21hc2tbY3B1X2V2dGNobltjaG5dXSk7CisJX19zZXRfYml0KGNobiwgY3B1X2V2dGNobl9t YXNrW2NwdV0pOworCisJY3B1X2V2dGNobltjaG5dID0gY3B1OworfQorCitzdGF0aWMgdm9pZCBp bml0X2V2dGNobl9jcHVfYmluZGluZ3Modm9pZCkKK3sKKyNpZmRlZiBDT05GSUdfU01QCisJaW50 IGk7CisJLyogQnkgZGVmYXVsdCBhbGwgZXZlbnQgY2hhbm5lbHMgbm90aWZ5IENQVSMwLiAqLwor CWZvciAoaSA9IDA7IGkgPCBOUl9JUlFTOyBpKyspCisJCWlycV9kZXNjW2ldLmFmZmluaXR5ID0g Y3B1bWFza19vZl9jcHUoMCk7CisjZW5kaWYKKworCW1lbXNldChjcHVfZXZ0Y2huLCAwLCBzaXpl b2YoY3B1X2V2dGNobikpOworCW1lbXNldChjcHVfZXZ0Y2huX21hc2tbMF0sIH4wLCBzaXplb2Yo Y3B1X2V2dGNobl9tYXNrWzBdKSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGNw dV9mcm9tX2V2dGNobih1bnNpZ25lZCBpbnQgZXZ0Y2huKQoreworCXJldHVybiBjcHVfZXZ0Y2hu W2V2dGNobl07Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBjbGVhcl9ldnRjaG4oaW50IHBvcnQp Cit7CisJc3RydWN0IHNoYXJlZF9pbmZvICpzID0gSFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsKKwlz eW5jX2NsZWFyX2JpdChwb3J0LCAmcy0+ZXZ0Y2huX3BlbmRpbmdbMF0pOworfQorCitzdGF0aWMg aW5saW5lIHZvaWQgc2V0X2V2dGNobihpbnQgcG9ydCkKK3sKKwlzdHJ1Y3Qgc2hhcmVkX2luZm8g KnMgPSBIWVBFUlZJU09SX3NoYXJlZF9pbmZvOworCXN5bmNfc2V0X2JpdChwb3J0LCAmcy0+ZXZ0 Y2huX3BlbmRpbmdbMF0pOworfQorCisKKy8qKgorICogbm90aWZ5X3JlbW90ZV92aWFfaXJxIC0g c2VuZCBldmVudCB0byByZW1vdGUgZW5kIG9mIGV2ZW50IGNoYW5uZWwgdmlhIGlycQorICogQGly cTogaXJxIG9mIGV2ZW50IGNoYW5uZWwgdG8gc2VuZCBldmVudCB0bworICoKKyAqIFVubGlrZSBu b3RpZnlfcmVtb3RlX3ZpYV9ldnRjaG4oKSwgdGhpcyBpcyBzYWZlIHRvIHVzZSBhY3Jvc3MKKyAq IHNhdmUvcmVzdG9yZS4gTm90aWZpY2F0aW9ucyBvbiBhIGJyb2tlbiBjb25uZWN0aW9uIGFyZSBz aWxlbnRseQorICogZHJvcHBlZC4KKyAqLwordm9pZCBub3RpZnlfcmVtb3RlX3ZpYV9pcnEoaW50 IGlycSkKK3sKKwlpbnQgZXZ0Y2huID0gZXZ0Y2huX2Zyb21faXJxKGlycSk7CisKKwlpZiAoVkFM SURfRVZUQ0hOKGV2dGNobikpCisJCW5vdGlmeV9yZW1vdGVfdmlhX2V2dGNobihldnRjaG4pOwor fQorRVhQT1JUX1NZTUJPTF9HUEwobm90aWZ5X3JlbW90ZV92aWFfaXJxKTsKKworc3RhdGljIHZv aWQgbWFza19ldnRjaG4oaW50IHBvcnQpCit7CisJc3RydWN0IHNoYXJlZF9pbmZvICpzID0gSFlQ RVJWSVNPUl9zaGFyZWRfaW5mbzsKKwlzeW5jX3NldF9iaXQocG9ydCwgJnMtPmV2dGNobl9tYXNr WzBdKTsKK30KKworc3RhdGljIHZvaWQgdW5tYXNrX2V2dGNobihpbnQgcG9ydCkKK3sKKwlzdHJ1 Y3Qgc2hhcmVkX2luZm8gKnMgPSBIWVBFUlZJU09SX3NoYXJlZF9pbmZvOworCXVuc2lnbmVkIGlu dCBjcHUgPSBnZXRfY3B1KCk7CisKKwlCVUdfT04oIWlycXNfZGlzYWJsZWQoKSk7CisKKwkvKiBT bG93IHBhdGggKGh5cGVyY2FsbCkgaWYgdGhpcyBpcyBhIG5vbi1sb2NhbCBwb3J0LiAqLworCWlm ICh1bmxpa2VseShjcHUgIT0gY3B1X2Zyb21fZXZ0Y2huKHBvcnQpKSkgeworCQlzdHJ1Y3QgZXZ0 Y2huX3VubWFzayB1bm1hc2sgPSB7IC5wb3J0ID0gcG9ydCB9OworCQkodm9pZClIWVBFUlZJU09S X2V2ZW50X2NoYW5uZWxfb3AoRVZUQ0hOT1BfdW5tYXNrLCAmdW5tYXNrKTsKKwl9IGVsc2Ugewor CQlzdHJ1Y3QgdmNwdV9pbmZvICp2Y3B1X2luZm8gPSBfX2dldF9jcHVfdmFyKHhlbl92Y3B1KTsK KworCQlzeW5jX2NsZWFyX2JpdChwb3J0LCAmcy0+ZXZ0Y2huX21hc2tbMF0pOworCisJCS8qCisJ CSAqIFRoZSBmb2xsb3dpbmcgaXMgYmFzaWNhbGx5IHRoZSBlcXVpdmFsZW50IG9mCisJCSAqICdo d19yZXNlbmRfaXJxJy4gSnVzdCBsaWtlIGEgcmVhbCBJTy1BUElDIHdlICdsb3NlCisJCSAqIHRo ZSBpbnRlcnJ1cHQgZWRnZScgaWYgdGhlIGNoYW5uZWwgaXMgbWFza2VkLgorCQkgKi8KKwkJaWYg KHN5bmNfdGVzdF9iaXQocG9ydCwgJnMtPmV2dGNobl9wZW5kaW5nWzBdKSAmJgorCQkgICAgIXN5 bmNfdGVzdF9hbmRfc2V0X2JpdChwb3J0IC8gQklUU19QRVJfTE9ORywKKwkJCQkJICAgJnZjcHVf aW5mby0+ZXZ0Y2huX3BlbmRpbmdfc2VsKSkKKwkJCXZjcHVfaW5mby0+ZXZ0Y2huX3VwY2FsbF9w ZW5kaW5nID0gMTsKKwl9CisKKwlwdXRfY3B1KCk7Cit9CisKK3N0YXRpYyBpbnQgZmluZF91bmJv dW5kX2lycSh2b2lkKQoreworCWludCBpcnE7CisKKwkvKiBPbmx5IGFsbG9jYXRlIGZyb20gZHlu aXJxIHJhbmdlICovCisJZm9yIChpcnEgPSAwOyBpcnEgPCBOUl9JUlFTOyBpcnErKykKKwkJaWYg KGlycV9iaW5kY291bnRbaXJxXSA9PSAwKQorCQkJYnJlYWs7CisKKwlpZiAoaXJxID09IE5SX0lS UVMpCisJCXBhbmljKCJObyBhdmFpbGFibGUgSVJRIHRvIGJpbmQgdG86IGluY3JlYXNlIE5SX0lS UVMhXG4iKTsKKworCXJldHVybiBpcnE7Cit9CisKK2ludCBiaW5kX2V2dGNobl90b19pcnEodW5z aWduZWQgaW50IGV2dGNobikKK3sKKwlpbnQgaXJxOworCisJc3Bpbl9sb2NrKCZpcnFfbWFwcGlu Z191cGRhdGVfbG9jayk7CisKKwlpcnEgPSBldnRjaG5fdG9faXJxW2V2dGNobl07CisKKwlpZiAo aXJxID09IC0xKSB7CisJCWlycSA9IGZpbmRfdW5ib3VuZF9pcnEoKTsKKworCQlkeW5hbWljX2ly cV9pbml0KGlycSk7CisJCXNldF9pcnFfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSwgJnhlbl9k eW5hbWljX2NoaXAsCisJCQkJCSAgICAgIGhhbmRsZV9sZXZlbF9pcnEsICJldmVudCIpOworCisJ CWV2dGNobl90b19pcnFbZXZ0Y2huXSA9IGlycTsKKwkJaXJxX2luZm9baXJxXSA9IG1rX2lycV9p bmZvKElSUVRfRVZUQ0hOLCAwLCBldnRjaG4pOworCX0KKworCWlycV9iaW5kY291bnRbaXJxXSsr OworCisJc3Bpbl91bmxvY2soJmlycV9tYXBwaW5nX3VwZGF0ZV9sb2NrKTsKKworCXJldHVybiBp cnE7Cit9CitFWFBPUlRfU1lNQk9MX0dQTChiaW5kX2V2dGNobl90b19pcnEpOworCitzdGF0aWMg aW50IGJpbmRfaXBpX3RvX2lycSh1bnNpZ25lZCBpbnQgaXBpLCB1bnNpZ25lZCBpbnQgY3B1KQor eworCXN0cnVjdCBldnRjaG5fYmluZF9pcGkgYmluZF9pcGk7CisJaW50IGV2dGNobiwgaXJxOwor CisJc3Bpbl9sb2NrKCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7CisKKwlpcnEgPSBwZXJfY3B1 KGlwaV90b19pcnEsIGNwdSlbaXBpXTsKKwlpZiAoaXJxID09IC0xKSB7CisJCWlycSA9IGZpbmRf dW5ib3VuZF9pcnEoKTsKKwkJaWYgKGlycSA8IDApCisJCQlnb3RvIG91dDsKKworCQlkeW5hbWlj X2lycV9pbml0KGlycSk7CisJCXNldF9pcnFfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSwgJnhl bl9keW5hbWljX2NoaXAsCisJCQkJCSAgICAgIGhhbmRsZV9sZXZlbF9pcnEsICJpcGkiKTsKKwor CQliaW5kX2lwaS52Y3B1ID0gY3B1OworCQlpZiAoSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29w KEVWVENITk9QX2JpbmRfaXBpLAorCQkJCQkJJmJpbmRfaXBpKSAhPSAwKQorCQkJQlVHKCk7CisJ CWV2dGNobiA9IGJpbmRfaXBpLnBvcnQ7CisKKwkJZXZ0Y2huX3RvX2lycVtldnRjaG5dID0gaXJx OworCQlpcnFfaW5mb1tpcnFdID0gbWtfaXJxX2luZm8oSVJRVF9JUEksIGlwaSwgZXZ0Y2huKTsK KworCQlwZXJfY3B1KGlwaV90b19pcnEsIGNwdSlbaXBpXSA9IGlycTsKKworCQliaW5kX2V2dGNo bl90b19jcHUoZXZ0Y2huLCBjcHUpOworCX0KKworCWlycV9iaW5kY291bnRbaXJxXSsrOworCisg b3V0OgorCXNwaW5fdW5sb2NrKCZpcnFfbWFwcGluZ191cGRhdGVfbG9jayk7CisJcmV0dXJuIGly cTsKK30KKworCitzdGF0aWMgaW50IGJpbmRfdmlycV90b19pcnEodW5zaWduZWQgaW50IHZpcnEs IHVuc2lnbmVkIGludCBjcHUpCit7CisJc3RydWN0IGV2dGNobl9iaW5kX3ZpcnEgYmluZF92aXJx OworCWludCBldnRjaG4sIGlycTsKKworCXNwaW5fbG9jaygmaXJxX21hcHBpbmdfdXBkYXRlX2xv Y2spOworCisJaXJxID0gcGVyX2NwdSh2aXJxX3RvX2lycSwgY3B1KVt2aXJxXTsKKworCWlmIChp cnEgPT0gLTEpIHsKKwkJYmluZF92aXJxLnZpcnEgPSB2aXJxOworCQliaW5kX3ZpcnEudmNwdSA9 IGNwdTsKKwkJaWYgKEhZUEVSVklTT1JfZXZlbnRfY2hhbm5lbF9vcChFVlRDSE5PUF9iaW5kX3Zp cnEsCisJCQkJCQkmYmluZF92aXJxKSAhPSAwKQorCQkJQlVHKCk7CisJCWV2dGNobiA9IGJpbmRf dmlycS5wb3J0OworCisJCWlycSA9IGZpbmRfdW5ib3VuZF9pcnEoKTsKKworCQlkeW5hbWljX2ly cV9pbml0KGlycSk7CisJCXNldF9pcnFfY2hpcF9hbmRfaGFuZGxlcl9uYW1lKGlycSwgJnhlbl9k eW5hbWljX2NoaXAsCisJCQkJCSAgICAgIGhhbmRsZV9sZXZlbF9pcnEsICJ2aXJxIik7CisKKwkJ ZXZ0Y2huX3RvX2lycVtldnRjaG5dID0gaXJxOworCQlpcnFfaW5mb1tpcnFdID0gbWtfaXJxX2lu Zm8oSVJRVF9WSVJRLCB2aXJxLCBldnRjaG4pOworCisJCXBlcl9jcHUodmlycV90b19pcnEsIGNw dSlbdmlycV0gPSBpcnE7CisKKwkJYmluZF9ldnRjaG5fdG9fY3B1KGV2dGNobiwgY3B1KTsKKwl9 CisKKwlpcnFfYmluZGNvdW50W2lycV0rKzsKKworCXNwaW5fdW5sb2NrKCZpcnFfbWFwcGluZ191 cGRhdGVfbG9jayk7CisKKwlyZXR1cm4gaXJxOworfQorCitzdGF0aWMgdm9pZCB1bmJpbmRfZnJv bV9pcnEodW5zaWduZWQgaW50IGlycSkKK3sKKwlzdHJ1Y3QgZXZ0Y2huX2Nsb3NlIGNsb3NlOwor CWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoaXJxKTsKKworCXNwaW5fbG9jaygmaXJxX21h cHBpbmdfdXBkYXRlX2xvY2spOworCisJaWYgKFZBTElEX0VWVENITihldnRjaG4pICYmICgtLWly cV9iaW5kY291bnRbaXJxXSA9PSAwKSkgeworCQljbG9zZS5wb3J0ID0gZXZ0Y2huOworCQlpZiAo SFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2Nsb3NlLCAmY2xvc2UpICE9IDAp CisJCQlCVUcoKTsKKworCQlzd2l0Y2ggKHR5cGVfZnJvbV9pcnEoaXJxKSkgeworCQljYXNlIElS UVRfVklSUToKKwkJCXBlcl9jcHUodmlycV90b19pcnEsIGNwdV9mcm9tX2V2dGNobihldnRjaG4p KQorCQkJCVtpbmRleF9mcm9tX2lycShpcnEpXSA9IC0xOworCQkJYnJlYWs7CisJCWRlZmF1bHQ6 CisJCQlicmVhazsKKwkJfQorCisJCS8qIENsb3NlZCBwb3J0cyBhcmUgaW1wbGljaXRseSByZS1i b3VuZCB0byBWQ1BVMC4gKi8KKwkJYmluZF9ldnRjaG5fdG9fY3B1KGV2dGNobiwgMCk7CisKKwkJ ZXZ0Y2huX3RvX2lycVtldnRjaG5dID0gLTE7CisJCWlycV9pbmZvW2lycV0gPSBJUlFfVU5CT1VO RDsKKworCQlkeW5hbWljX2lycV9pbml0KGlycSk7CisJfQorCisJc3Bpbl91bmxvY2soJmlycV9t YXBwaW5nX3VwZGF0ZV9sb2NrKTsKK30KKworaW50IGJpbmRfZXZ0Y2huX3RvX2lycWhhbmRsZXIo dW5zaWduZWQgaW50IGV2dGNobiwKKwkJCSAgICAgIGlycV9oYW5kbGVyX3QgaGFuZGxlciwKKwkJ CSAgICAgIHVuc2lnbmVkIGxvbmcgaXJxZmxhZ3MsCisJCQkgICAgICBjb25zdCBjaGFyICpkZXZu YW1lLCB2b2lkICpkZXZfaWQpCit7CisJdW5zaWduZWQgaW50IGlycTsKKwlpbnQgcmV0dmFsOwor CisJaXJxID0gYmluZF9ldnRjaG5fdG9faXJxKGV2dGNobik7CisJcmV0dmFsID0gcmVxdWVzdF9p cnEoaXJxLCBoYW5kbGVyLCBpcnFmbGFncywgZGV2bmFtZSwgZGV2X2lkKTsKKwlpZiAocmV0dmFs ICE9IDApIHsKKwkJdW5iaW5kX2Zyb21faXJxKGlycSk7CisJCXJldHVybiByZXR2YWw7CisJfQor CisJcmV0dXJuIGlycTsKK30KK0VYUE9SVF9TWU1CT0xfR1BMKGJpbmRfZXZ0Y2huX3RvX2lycWhh bmRsZXIpOworCitpbnQgYmluZF92aXJxX3RvX2lycWhhbmRsZXIodW5zaWduZWQgaW50IHZpcnEs IHVuc2lnbmVkIGludCBjcHUsCisJCQkgICAgaXJxX2hhbmRsZXJfdCBoYW5kbGVyLAorCQkJICAg IHVuc2lnbmVkIGxvbmcgaXJxZmxhZ3MsIGNvbnN0IGNoYXIgKmRldm5hbWUsIHZvaWQgKmRldl9p ZCkKK3sKKwl1bnNpZ25lZCBpbnQgaXJxOworCWludCByZXR2YWw7CisKKwlpcnEgPSBiaW5kX3Zp cnFfdG9faXJxKHZpcnEsIGNwdSk7CisJcmV0dmFsID0gcmVxdWVzdF9pcnEoaXJxLCBoYW5kbGVy LCBpcnFmbGFncywgZGV2bmFtZSwgZGV2X2lkKTsKKwlpZiAocmV0dmFsICE9IDApIHsKKwkJdW5i aW5kX2Zyb21faXJxKGlycSk7CisJCXJldHVybiByZXR2YWw7CisJfQorCisJcmV0dXJuIGlycTsK K30KK0VYUE9SVF9TWU1CT0xfR1BMKGJpbmRfdmlycV90b19pcnFoYW5kbGVyKTsKKworaW50IGJp bmRfaXBpX3RvX2lycWhhbmRsZXIoZW51bSBpcGlfdmVjdG9yIGlwaSwKKwkJCSAgIHVuc2lnbmVk IGludCBjcHUsCisJCQkgICBpcnFfaGFuZGxlcl90IGhhbmRsZXIsCisJCQkgICB1bnNpZ25lZCBs b25nIGlycWZsYWdzLAorCQkJICAgY29uc3QgY2hhciAqZGV2bmFtZSwKKwkJCSAgIHZvaWQgKmRl dl9pZCkKK3sKKwlpbnQgaXJxLCByZXR2YWw7CisKKwlpcnEgPSBiaW5kX2lwaV90b19pcnEoaXBp LCBjcHUpOworCWlmIChpcnEgPCAwKQorCQlyZXR1cm4gaXJxOworCisJcmV0dmFsID0gcmVxdWVz dF9pcnEoaXJxLCBoYW5kbGVyLCBpcnFmbGFncywgZGV2bmFtZSwgZGV2X2lkKTsKKwlpZiAocmV0 dmFsICE9IDApIHsKKwkJdW5iaW5kX2Zyb21faXJxKGlycSk7CisJCXJldHVybiByZXR2YWw7CisJ fQorCisJcmV0dXJuIGlycTsKK30KKwordm9pZCB1bmJpbmRfZnJvbV9pcnFoYW5kbGVyKHVuc2ln bmVkIGludCBpcnEsIHZvaWQgKmRldl9pZCkKK3sKKwlmcmVlX2lycShpcnEsIGRldl9pZCk7CisJ dW5iaW5kX2Zyb21faXJxKGlycSk7Cit9CitFWFBPUlRfU1lNQk9MX0dQTCh1bmJpbmRfZnJvbV9p cnFoYW5kbGVyKTsKKwordm9pZCB4ZW5fc2VuZF9JUElfb25lKHVuc2lnbmVkIGludCBjcHUsIGVu dW0gaXBpX3ZlY3RvciB2ZWN0b3IpCit7CisJaW50IGlycSA9IHBlcl9jcHUoaXBpX3RvX2lycSwg Y3B1KVt2ZWN0b3JdOworCUJVR19PTihpcnEgPCAwKTsKKwlub3RpZnlfcmVtb3RlX3ZpYV9pcnEo aXJxKTsKK30KKworCisvKgorICogU2VhcmNoIHRoZSBDUFVzIHBlbmRpbmcgZXZlbnRzIGJpdG1h c2tzLiAgRm9yIGVhY2ggb25lIGZvdW5kLCBtYXAKKyAqIHRoZSBldmVudCBudW1iZXIgdG8gYW4g aXJxLCBhbmQgZmVlZCBpdCBpbnRvIGRvX0lSUSgpIGZvcgorICogaGFuZGxpbmcuCisgKgorICog WGVuIHVzZXMgYSB0d28tbGV2ZWwgYml0bWFwIHRvIHNwZWVkIHNlYXJjaGluZy4gIFRoZSBmaXJz dCBsZXZlbCBpcworICogYSBiaXRzZXQgb2Ygd29yZHMgd2hpY2ggY29udGFpbiBwZW5kaW5nIGV2 ZW50IGJpdHMuICBUaGUgc2Vjb25kCisgKiBsZXZlbCBpcyBhIGJpdHNldCBvZiBwZW5kaW5nIGV2 ZW50cyB0aGVtc2VsdmVzLgorICovCit2b2lkIHhlbl9ldnRjaG5fZG9fdXBjYWxsKHN0cnVjdCBw dF9yZWdzICpyZWdzKQoreworCWludCBjcHUgPSBnZXRfY3B1KCk7CisJc3RydWN0IHNoYXJlZF9p bmZvICpzID0gSFlQRVJWSVNPUl9zaGFyZWRfaW5mbzsKKwlzdHJ1Y3QgdmNwdV9pbmZvICp2Y3B1 X2luZm8gPSBfX2dldF9jcHVfdmFyKHhlbl92Y3B1KTsKKwl1bnNpZ25lZCBsb25nIHBlbmRpbmdf d29yZHM7CisKKwl2Y3B1X2luZm8tPmV2dGNobl91cGNhbGxfcGVuZGluZyA9IDA7CisKKwkvKiBO Qi4gTm8gbmVlZCBmb3IgYSBiYXJyaWVyIGhlcmUgLS0gWENIRyBpcyBhIGJhcnJpZXIgb24geDg2 LiAqLworCXBlbmRpbmdfd29yZHMgPSB4Y2hnKCZ2Y3B1X2luZm8tPmV2dGNobl9wZW5kaW5nX3Nl bCwgMCk7CisJd2hpbGUgKHBlbmRpbmdfd29yZHMgIT0gMCkgeworCQl1bnNpZ25lZCBsb25nIHBl bmRpbmdfYml0czsKKwkJaW50IHdvcmRfaWR4ID0gX19mZnMocGVuZGluZ193b3Jkcyk7CisJCXBl bmRpbmdfd29yZHMgJj0gfigxVUwgPDwgd29yZF9pZHgpOworCisJCXdoaWxlICgocGVuZGluZ19i aXRzID0gYWN0aXZlX2V2dGNobnMoY3B1LCBzLCB3b3JkX2lkeCkpICE9IDApIHsKKwkJCWludCBi aXRfaWR4ID0gX19mZnMocGVuZGluZ19iaXRzKTsKKwkJCWludCBwb3J0ID0gKHdvcmRfaWR4ICog QklUU19QRVJfTE9ORykgKyBiaXRfaWR4OworCQkJaW50IGlycSA9IGV2dGNobl90b19pcnFbcG9y dF07CisKKwkJCWlmIChpcnEgIT0gLTEpIHsKKwkJCQlyZWdzLT5vcmlnX2F4ID0gfmlycTsKKwkJ CQlkb19JUlEocmVncyk7CisJCQl9CisJCX0KKwl9CisKKwlwdXRfY3B1KCk7Cit9CisKKy8qIFJl YmluZCBhbiBldnRjaG4gc28gdGhhdCBpdCBnZXRzIGRlbGl2ZXJlZCB0byBhIHNwZWNpZmljIGNw dSAqLworc3RhdGljIHZvaWQgcmViaW5kX2lycV90b19jcHUodW5zaWduZWQgaXJxLCB1bnNpZ25l ZCB0Y3B1KQoreworCXN0cnVjdCBldnRjaG5fYmluZF92Y3B1IGJpbmRfdmNwdTsKKwlpbnQgZXZ0 Y2huID0gZXZ0Y2huX2Zyb21faXJxKGlycSk7CisKKwlpZiAoIVZBTElEX0VWVENITihldnRjaG4p KQorCQlyZXR1cm47CisKKwkvKiBTZW5kIGZ1dHVyZSBpbnN0YW5jZXMgb2YgdGhpcyBpbnRlcnJ1 cHQgdG8gb3RoZXIgdmNwdS4gKi8KKwliaW5kX3ZjcHUucG9ydCA9IGV2dGNobjsKKwliaW5kX3Zj cHUudmNwdSA9IHRjcHU7CisKKwkvKgorCSAqIElmIHRoaXMgZmFpbHMsIGl0IHVzdWFsbHkganVz dCBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBkZWFsaW5nIHdpdGggYQorCSAqIHZpcnEgb3IgSVBJIGNo YW5uZWwsIHdoaWNoIGRvbid0IGFjdHVhbGx5IG5lZWQgdG8gYmUgcmVib3VuZC4gSWdub3JlCisJ ICogaXQsIGJ1dCBkb24ndCBkbyB0aGUgeGVubGludXgtbGV2ZWwgcmViaW5kIGluIHRoYXQgY2Fz ZS4KKwkgKi8KKwlpZiAoSFlQRVJWSVNPUl9ldmVudF9jaGFubmVsX29wKEVWVENITk9QX2JpbmRf dmNwdSwgJmJpbmRfdmNwdSkgPj0gMCkKKwkJYmluZF9ldnRjaG5fdG9fY3B1KGV2dGNobiwgdGNw dSk7Cit9CisKKworc3RhdGljIHZvaWQgc2V0X2FmZmluaXR5X2lycSh1bnNpZ25lZCBpcnEsIGNw dW1hc2tfdCBkZXN0KQoreworCXVuc2lnbmVkIHRjcHUgPSBmaXJzdF9jcHUoZGVzdCk7CisJcmVi aW5kX2lycV90b19jcHUoaXJxLCB0Y3B1KTsKK30KKworc3RhdGljIHZvaWQgZW5hYmxlX2R5bmly cSh1bnNpZ25lZCBpbnQgaXJxKQoreworCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoaXJx KTsKKworCWlmIChWQUxJRF9FVlRDSE4oZXZ0Y2huKSkKKwkJdW5tYXNrX2V2dGNobihldnRjaG4p OworfQorCitzdGF0aWMgdm9pZCBkaXNhYmxlX2R5bmlycSh1bnNpZ25lZCBpbnQgaXJxKQorewor CWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEoaXJxKTsKKworCWlmIChWQUxJRF9FVlRDSE4o ZXZ0Y2huKSkKKwkJbWFza19ldnRjaG4oZXZ0Y2huKTsKK30KKworc3RhdGljIHZvaWQgYWNrX2R5 bmlycSh1bnNpZ25lZCBpbnQgaXJxKQoreworCWludCBldnRjaG4gPSBldnRjaG5fZnJvbV9pcnEo aXJxKTsKKworCW1vdmVfbmF0aXZlX2lycShpcnEpOworCisJaWYgKFZBTElEX0VWVENITihldnRj aG4pKQorCQljbGVhcl9ldnRjaG4oZXZ0Y2huKTsKK30KKworc3RhdGljIGludCByZXRyaWdnZXJf ZHluaXJxKHVuc2lnbmVkIGludCBpcnEpCit7CisJaW50IGV2dGNobiA9IGV2dGNobl9mcm9tX2ly cShpcnEpOworCWludCByZXQgPSAwOworCisJaWYgKFZBTElEX0VWVENITihldnRjaG4pKSB7CisJ CXNldF9ldnRjaG4oZXZ0Y2huKTsKKwkJcmV0ID0gMTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQor CitzdGF0aWMgc3RydWN0IGlycV9jaGlwIHhlbl9keW5hbWljX2NoaXAgX19yZWFkX21vc3RseSA9 IHsKKwkubmFtZQkJPSAieGVuLWR5biIsCisJLm1hc2sJCT0gZGlzYWJsZV9keW5pcnEsCisJLnVu bWFzawkJPSBlbmFibGVfZHluaXJxLAorCS5hY2sJCT0gYWNrX2R5bmlycSwKKwkuc2V0X2FmZmlu aXR5CT0gc2V0X2FmZmluaXR5X2lycSwKKwkucmV0cmlnZ2VyCT0gcmV0cmlnZ2VyX2R5bmlycSwK K307CisKK3ZvaWQgX19pbml0IHhlbl9pbml0X0lSUSh2b2lkKQoreworCWludCBpOworCisJaW5p dF9ldnRjaG5fY3B1X2JpbmRpbmdzKCk7CisKKwkvKiBObyBldmVudCBjaGFubmVscyBhcmUgJ2xp dmUnIHJpZ2h0IG5vdy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgTlJfRVZFTlRfQ0hBTk5FTFM7IGkr KykKKwkJbWFza19ldnRjaG4oaSk7CisKKwkvKiBEeW5hbWljIElSUSBzcGFjZSBpcyBjdXJyZW50 bHkgdW5ib3VuZC4gWmVybyB0aGUgcmVmY250cy4gKi8KKwlmb3IgKGkgPSAwOyBpIDwgTlJfSVJR UzsgaSsrKQorCQlpcnFfYmluZGNvdW50W2ldID0gMDsKKworCWlycV9jdHhfaW5pdChzbXBfcHJv Y2Vzc29yX2lkKCkpOworfQpkaWZmIC11ck4gb2xkL2RyaXZlcnMveGVuL01ha2VmaWxlIGxpbnV4 L2RyaXZlcnMveGVuL01ha2VmaWxlCi0tLSBvbGQvZHJpdmVycy94ZW4vTWFrZWZpbGUJMjAwOC0w My0xMCAxMzoyMjoyNy4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4L2RyaXZlcnMveGVuL01ha2Vm aWxlCTIwMDgtMDMtMjUgMTM6NTY6NDEuMzY4NzY0Mjg3ICswODAwCkBAIC0xLDIgKzEsMiBAQAot b2JqLXkJKz0gZ3JhbnQtdGFibGUubworb2JqLXkJKz0gZ3JhbnQtdGFibGUubyBldmVudHMubwog b2JqLXkJKz0geGVuYnVzLwpkaWZmIC11ck4gb2xkL2luY2x1ZGUveGVuL3hlbi1vcHMuaCBsaW51 eC9pbmNsdWRlL3hlbi94ZW4tb3BzLmgKLS0tIG9sZC9pbmNsdWRlL3hlbi94ZW4tb3BzLmgJMTk3 MC0wMS0wMSAwODowMDowMC4wMDAwMDAwMDAgKzA4MDAKKysrIGxpbnV4L2luY2x1ZGUveGVuL3hl bi1vcHMuaAkyMDA4LTAzLTI1IDE0OjAwOjA5LjA0MTMyMTU0NiArMDgwMApAQCAtMCwwICsxLDYg QEAKKyNpZm5kZWYgSU5DTFVERV9YRU5fT1BTX0gKKyNkZWZpbmUgSU5DTFVERV9YRU5fT1BTX0gK KworREVDTEFSRV9QRVJfQ1BVKHN0cnVjdCB2Y3B1X2luZm8gKiwgeGVuX3ZjcHUpOworCisjZW5k aWYgLyogSU5DTFVERV9YRU5fT1BTX0ggKi8K ------_=_NextPart_001_01C88E42.5B725E99-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/