From mboxrd@z Thu Jan 1 00:00:00 1970 From: Xiaofeng Ling Subject: [PATCH]vbd/vnif paravirtulization driver hypervisor support] Date: Fri, 20 May 2005 14:25:33 +0800 Message-ID: <428D82DD.6000806@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080109020005040406040305" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------080109020005040406040305 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit This patch adds paravirutulization driver support for vmx domain in hypervisor. The VBD and VNIF frontend driver can then be used in unmodified kernel as a module to get better performance than device model. The backend driver needs no change and can work together with xeno-linux. The event channel mechanism works as a pci device in guest linux, so a event channel device driver will as basic module in guest kernel. What's the patch done is: 1.copy_to/from_guest support, which is used to copy context from/to guest space to hypervisor space. 2.copy_to/from_user will call copy_to/from_guest for a vmx domain. 3.A separate hypercall table for paravirutulization driver which mask some unused entries. 4.add hypercalls for address translation.and share page mapping (event channel and grant table) 5.clean some hypercalls path for vmx domain. --------------080109020005040406040305 Content-Type: message/rfc822; name="[PATCH]vbd/vnif paravirtulization driver hypervisor support" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="[PATCH]vbd/vnif paravirtulization driver hypervisor support" X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 Received: from pdsmsx404.ccr.corp.intel.com ([172.16.12.64]) by pdsmsx403.ccr.corp.intel.com with Microsoft SMTPSVC(6.0.3790.211); Fri, 20 May 2005 11:59:45 +0800 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----_=_NextPart_001_01C55CF1.0162A417" Received: from pgsmsx402.gar.corp.intel.com ([172.30.190.22]) by pdsmsx404.ccr.corp.intel.com with Microsoft SMTPSVC(6.0.3790.211); Fri, 20 May 2005 11:59:45 +0800 Received: from fmsmsx311.amr.corp.intel.com ([132.233.42.214]) by pgsmsx402.gar.corp.intel.com with Microsoft SMTPSVC(6.0.3790.211); Fri, 20 May 2005 11:59:43 +0800 Received: from fmsmsx331.amr.corp.intel.com ([132.233.42.156]) by fmsmsx311.amr.corp.intel.com with Microsoft SMTPSVC(6.0.3790.211); Thu, 19 May 2005 20:59:36 -0700 Received: from fmsmsxvs041.fm.intel.com ([132.233.42.126]) by fmsmsx331.amr.corp.intel.com with Microsoft SMTPSVC(6.0.3790.211); Thu, 19 May 2005 20:59:36 -0700 Received: from fmsfmr100.fm.intel.com ([10.1.192.58]) by fmsmsxvs041.fm.intel.com (SAVSMTP 3.1.7.47) with SMTP id M2005051920593605970 for ; Thu, 19 May 2005 20:59:36 -0700 Received: from intel.com (xling.sh.intel.com [172.16.219.75]) by fmsfmr100.fm.intel.com (8.12.10/8.12.10/d: major-inner.mc,v 1.2 2004/09/17 18:05:01 root Exp $) with ESMTP id j4K3xYjZ021445 for ; Fri, 20 May 2005 03:59:35 GMT Content-class: urn:content-classes:message Subject: [PATCH]vbd/vnif paravirtulization driver hypervisor support Date: Fri, 20 May 2005 12:04:22 +0800 Message-ID: <3ACA40606221794F80A5670F0AF15F840827EB3A@pdsmsx403> X-MS-Has-Attach: yes X-MS-TNEF-Correlator: Thread-Topic: [PATCH]vbd/vnif paravirtulization driver hypervisor support Thread-Index: AcVc8FwRT5+tiTB0Sp2X9xUmRah0Ww== From: "Ling, Xiaofeng" To: "Ling, Xiaofeng" This is a multi-part message in MIME format. ------_=_NextPart_001_01C55CF1.0162A417 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable This patch adds paravirutulization driver support for vmx domain in hypervisor. The VBD and VNIF frontend driver can then be used in=20 unmodified kernel as a module to get better performance than device = model. The backend driver needs no change and can work together with = xeno-linux. The event channel mechanism works as a pci device in guest linux, so a event channel device driver will as basic module in guest kernel. What's the patch done is: 1.copy_to/from_guest support, which is used to copy context from/to=20 guest space to hypervisor space. 2.copy_to/from_user will call copy_to/from_guest for a vmx domain. 3.A separate hypercall table for paravirutulization driver which mask some unused entries. 4.add hypercalls for address translation.and share page mapping(event=20 channel and grant table) 5.clean some hypercalls path for vmx domain. ------_=_NextPart_001_01C55CF1.0162A417 Content-Type: text/x-patch; name="paravirtulization-driver-hypervisor.patch" Content-Transfer-Encoding: base64 Content-Description: paravirtulization-driver-hypervisor.patch Content-Disposition: inline; filename="paravirtulization-driver-hypervisor.patch" IyBUaGlzIGlzIGEgQml0S2VlcGVyIGdlbmVyYXRlZCBkaWZmIC1OcnUgc3R5bGUgcGF0Y2guDQoj DQojIENoYW5nZVNldA0KIyAgIDIwMDUvMDUvMjAgMTE6Mjc6MDQrMDg6MDAgeGlhb2ZlbmcubGlu Z0BpbnRlbC5jb20gDQojICAgVGhpcyBwYXRjaCBhZGRzIHBhcmF2aXJ1dHVsaXphdGlvbiBkcml2 ZXIgc3VwcG9ydCBmb3Igdm14IGRvbWFpbiBpbiBoeXBlcnZpc29yLg0KIyAgIFRoZSBWQkQgYW5k IFZOSUYgZnJvbnRlbmQgZHJpdmVyIGNhbiB0aGVuIGJlIHVzZWQgaW4gdW5tb2RpZmllZCBrZXJu ZWwgYXMgYSBtb2R1bGUgdG8gZ2V0IA0KIyAgIGJldHRlciBwZXJmb3JtYW5jZSB0aGFuIGRldmlj ZSBtb2RlbC4NCiMgICBUaGUgYmFja2VuZCBkcml2ZXIgbmVlZHMgbm8gY2hhbmdlIGFuZCBjYW4g d29yayB0b2dldGhlciB3aXRoIHhlbm8tbGludXguDQojICAgVGhlIGV2ZW50IGNoYW5uZWwgbWVj aGFuaXNtIHdvcmtzIGFzIGEgcGNpIGRldmljZSBpbiBndWVzdCBsaW51eC4gDQojICAgDQojICAg U2lnbmVkLW9mZi1ieTogWGlhb2ZlbmcgTGluZyA8eGlhb2ZlbmcubGluZ0BpbnRlbC5jb20+DQoj IA0KIyBCaXRLZWVwZXIvZXRjL2xvZ2dpbmdfb2sNCiMgICAyMDA1LzA1LzIwIDExOjI3OjA0KzA4 OjAwIHhpYW9mZW5nLmxpbmdAaW50ZWwuY29tICsxIC0wDQojICAgTG9nZ2luZyB0byBsb2dnaW5n QG9wZW5sb2dnaW5nLm9yZyBhY2NlcHRlZA0KIyANCiMgeGVuL2luY2x1ZGUveGVuL2NvbmZpZy5o DQojICAgMjAwNS8wNS8yMCAxMToyNzowMSswODowMCB4aWFvZmVuZy5saW5nQGludGVsLmNvbSAr OCAtMA0KIyAgIEFkZCBkZWJ1ZyBwcmludCBmb3Igdm14IGRyaXZlcg0KIyANCiMgeGVuL2luY2x1 ZGUvcHVibGljL3hlbi5oDQojICAgMjAwNS8wNS8yMCAxMToyNzowMSswODowMCB4aWFvZmVuZy5s aW5nQGludGVsLmNvbSArMTMgLTENCiMgICBhZGQgdmlydHVhbCBkZXZpY2UgaHlwZXJjYWxsIGVu dHJ5DQojIA0KIyB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODZfMzIuaA0KIyAgIDIwMDUvMDUv MjAgMTE6Mjc6MDErMDg6MDAgeGlhb2ZlbmcubGluZ0BpbnRlbC5jb20gKzUgLTANCiMgICBhZGQg dm1jYWxsIHRvIGRvIGh5cGVyY2FsbCBpbiB2bXggZG9tYWluIA0KIyANCiMgeGVuL2luY2x1ZGUv YXNtLXg4Ni94ODZfNjQvdWFjY2Vzcy5oDQojICAgMjAwNS8wNS8yMCAxMToyNzowMSswODowMCB4 aWFvZmVuZy5saW5nQGludGVsLmNvbSArNSAtMA0KIyAgIGNvcHlfdG8vZnJvbV9ndWVzdCBmb3Ig dm14IGRvbWFpbi4NCiMgDQojIHhlbi9pbmNsdWRlL2FzbS14ODYveDg2XzMyL3VhY2Nlc3MuaA0K IyAgIDIwMDUvMDUvMjAgMTE6Mjc6MDErMDg6MDAgeGlhb2ZlbmcubGluZ0BpbnRlbC5jb20gKzUg LTANCiMgICBjb3B5X3RvL2Zyb21fZ3Vlc3QgZm9yIHZteCBkb21haW4uDQojIA0KIyB4ZW4vaW5j bHVkZS9hc20teDg2L3ZteF92bWNzLmgNCiMgICAyMDA1LzA1LzIwIDExOjI3OjAxKzA4OjAwIHhp YW9mZW5nLmxpbmdAaW50ZWwuY29tICsyIC0wDQojICAgZGVidWcgZm9yIFZNWCBWQkQgYW5kIFZO SUYNCiMgDQojIHhlbi9jb21tb24vbXVsdGljYWxsLmMNCiMgICAyMDA1LzA1LzIwIDExOjI3OjAx KzA4OjAwIHhpYW9mZW5nLmxpbmdAaW50ZWwuY29tICszNCAtOQ0KIyAgIHZteCBkb21haW4gaHlw ZXJjYWxsIHBhdGggDQojIA0KIyB4ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMNCiMgICAyMDA1LzA1 LzIwIDExOjI3OjAxKzA4OjAwIHhpYW9mZW5nLmxpbmdAaW50ZWwuY29tICsyOSAtNg0KIyAgIHNl dHVwIGdyYW50IHRhYmxlIGZvciB2bXggZG9tYWluDQojIA0KIyB4ZW4vY29tbW9uL2RvbV9tZW1f b3BzLmMNCiMgICAyMDA1LzA1LzIwIDExOjI3OjAxKzA4OjAwIHhpYW9mZW5nLmxpbmdAaW50ZWwu Y29tICsxMiAtNQ0KIyAgIGh5cGVyY2FsbCBwYXRoIGZvciB2bXggZG9tYWluDQojIA0KIyB4ZW4v YXJjaC94ODYveDg2XzY0L3VzZXJjb3B5LmMNCiMgICAyMDA1LzA1LzIwIDExOjI3OjAxKzA4OjAw IHhpYW9mZW5nLmxpbmdAaW50ZWwuY29tICsxNSAtMA0KIyAgIGNvcHlfdG8vZnJvbV9ndWVzdCBz dHViIGZvciB4ODZfNjQNCiMgDQojIHhlbi9hcmNoL3g4Ni94ODZfMzIvdXNlcmNvcHkuYw0KIyAg IDIwMDUvMDUvMjAgMTE6Mjc6MDErMDg6MDAgeGlhb2ZlbmcubGluZ0BpbnRlbC5jb20gKzk5IC0w DQojICAgY29weV90by9mcm9tX2d1ZXN0IGZvciB2bXggZG9tYWluDQojIA0KIyB4ZW4vYXJjaC94 ODYveDg2XzMyL2VudHJ5LlMNCiMgICAyMDA1LzA1LzIwIDExOjI3OjAxKzA4OjAwIHhpYW9mZW5n LmxpbmdAaW50ZWwuY29tICszNiAtMA0KIyAgIGFkZCBhbiBoeXBlcmNhbGwgdGFibGUgZm9yIHZt eCBkb2FtaW0sIG1hc2sgdW51c2VkIGh5cGVyY2FsbHMNCiMgDQojIHhlbi9hcmNoL3g4Ni92bXhf aW8uYw0KIyAgIDIwMDUvMDUvMjAgMTE6Mjc6MDErMDg6MDAgeGlhb2ZlbmcubGluZ0BpbnRlbC5j b20gKzUzIC03DQojICAgZGVsaWV2ZSBldmVudCB0byB2bXggZG9tYWluIGJ5IGlycQ0KIyANCiMg eGVuL2FyY2gveDg2L3ZteC5jDQojICAgMjAwNS8wNS8yMCAxMToyNzowMSswODowMCB4aWFvZmVu Zy5saW5nQGludGVsLmNvbSArODMgLTQNCiMgICBoeXBlcmNhbGwgZW50cnkgZm9yIHZteCBkb21h aW4gYnkgdm1jYWxsDQojIA0KIyB4ZW4vYXJjaC94ODYvc2hhZG93LmMNCiMgICAyMDA1LzA1LzIw IDExOjI3OjAxKzA4OjAwIHhpYW9mZW5nLmxpbmdAaW50ZWwuY29tICsyNSAtMg0KIyAgIHNldCBt YXAgZm9yIHZteCBkb21haW4NCiMgDQojIHhlbi9hcmNoL3g4Ni9tbS5jDQojICAgMjAwNS8wNS8y MCAxMToyNzowMSswODowMCB4aWFvZmVuZy5saW5nQGludGVsLmNvbSArMjcgLTEzDQojICAgY2xl YXIgdm14IGh5cGVyY2FsbCBwYXRoDQojIA0KIyB4ZW4vYXJjaC94ODYvZG9tYWluLmMNCiMgICAy MDA1LzA1LzIwIDExOjI3OjAxKzA4OjAwIHhpYW9mZW5nLmxpbmdAaW50ZWwuY29tICsxIC0wDQoj ICAgYWRkIGNhbGwgYmFjayBpcnEgbWVtYmVyDQojIA0KZGlmZiAtTnJ1IGEveGVuL2FyY2gveDg2 L2RvbWFpbi5jIGIveGVuL2FyY2gveDg2L2RvbWFpbi5jDQotLS0gYS94ZW4vYXJjaC94ODYvZG9t YWluLmMJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCisrKyBiL3hlbi9hcmNoL3g4Ni9kb21h aW4uYwkyMDA1LTA1LTIwIDExOjQwOjEyICswODowMA0KQEAgLTI2NSw2ICsyNjUsNyBAQA0KICAg ICBlZC0+YXJjaC5wZXJkb21haW5fcHRlc1tGSVJTVF9SRVNFUlZFRF9HRFRfUEFHRV0gPQ0KICAg ICAgICAgbDFlX2NyZWF0ZV9wYWdlKHZpcnRfdG9fcGFnZShnZHRfdGFibGUpLCBQQUdFX0hZUEVS VklTT1IpOw0KIA0KKyAgICBlZC0+YXJjaC5jYWxsYmFja19pcnEgPSAwOw0KICAgICBlZC0+YXJj aC5ndWVzdF92dGFibGUgID0gX19saW5lYXJfbDJfdGFibGU7DQogICAgIGVkLT5hcmNoLnNoYWRv d192dGFibGUgPSBfX3NoYWRvd19saW5lYXJfbDJfdGFibGU7DQogDQpkaWZmIC1OcnUgYS94ZW4v YXJjaC94ODYvbW0uYyBiL3hlbi9hcmNoL3g4Ni9tbS5jDQotLS0gYS94ZW4vYXJjaC94ODYvbW0u YwkyMDA1LTA1LTIwIDExOjQwOjEyICswODowMA0KKysrIGIveGVuL2FyY2gveDg2L21tLmMJMjAw NS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCkBAIC0xODQ4LDIxICsxODQ4LDMyIEBADQogDQogICAg IGlmICggdW5saWtlbHkoIWFycmF5X2FjY2Vzc19vayh1cmVxcywgY291bnQsIHNpemVvZihyZXEp KSkgKQ0KICAgICB7DQotICAgICAgICByYyA9IC1FRkFVTFQ7DQotICAgICAgICBnb3RvIG91dDsN CisgICAgICAgaWYoIVZNWF9ET01BSU4oY3VycmVudCkpew0KKyAgICAgICAgICAgcmMgPSAtRUZB VUxUOw0KKyAgICAgICAgICAgZ290byBvdXQ7DQorICAgICAgIH0NCiAgICAgfQ0KIA0KICAgICBm b3IgKCBpID0gMDsgaSA8IGNvdW50OyBpKysgKQ0KICAgICB7DQotICAgICAgICBpZiAoIGh5cGVy Y2FsbF9wcmVlbXB0X2NoZWNrKCkgKQ0KKyAgICAgICAgaWYoVk1YX0RPTUFJTihjdXJyZW50KSkN CiAgICAgICAgIHsNCi0gICAgICAgICAgICByYyA9IGh5cGVyY2FsbDRfY3JlYXRlX2NvbnRpbnVh dGlvbigNCi0gICAgICAgICAgICAgICAgX19IWVBFUlZJU09SX21tdV91cGRhdGUsIHVyZXFzLCAN Ci0gICAgICAgICAgICAgICAgKGNvdW50IC0gaSkgfCBNTVVfVVBEQVRFX1BSRUVNUFRFRCwgcGRv bmUsIGZvcmVpZ25kb20pOw0KLSAgICAgICAgICAgIGJyZWFrOw0KKw0KKyAgICAgICAgICAgICBy YyA9IGNvcHlfZnJvbV9ndWVzdCgmcmVxLCB1cmVxcywgc2l6ZW9mKHJlcSkpOw0KICAgICAgICAg fQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICggaHlwZXJjYWxs X3ByZWVtcHRfY2hlY2soKSApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICByYyA9 IGh5cGVyY2FsbDRfY3JlYXRlX2NvbnRpbnVhdGlvbigNCisgICAgICAgICAgICAgICAgICAgICAg ICBfX0hZUEVSVklTT1JfbW11X3VwZGF0ZSwgdXJlcXMsIA0KKyAgICAgICAgICAgICAgICAgICAg ICAgIChjb3VudCAtIGkpIHwgTU1VX1VQREFURV9QUkVFTVBURUQsIHBkb25lLCBmb3JlaWduZG9t KTsNCisgICAgICAgICAgICAgICAgYnJlYWs7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAg IHJjID0gX19jb3B5X2Zyb21fdXNlcigmcmVxLCB1cmVxcywgc2l6ZW9mKHJlcSkpOw0KIA0KLSAg ICAgICAgaWYgKCB1bmxpa2VseShfX2NvcHlfZnJvbV91c2VyKCZyZXEsIHVyZXFzLCBzaXplb2Yo cmVxKSkgIT0gMCkgKQ0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCB1bmxpa2VseShyYykgIT0g MCkgDQogICAgICAgICB7DQogICAgICAgICAgICAgTUVNX0xPRygiQmFkIF9fY29weV9mcm9tX3Vz ZXIiKTsNCiAgICAgICAgICAgICByYyA9IC1FRkFVTFQ7DQpAQCAtMjAwOCw3ICsyMDE5LDggQEAN CiAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgfQ0KIA0KLSAgICAgICAgICAg IGlmICggdW5saWtlbHkoc2hhZG93X21vZGVfdHJhbnNsYXRlKEZPUkVJR05ET00pICYmICFJU19Q UklWKGQpKSApDQorICAgICAgICAgICAgaWYgKCB1bmxpa2VseShzaGFkb3dfbW9kZV90cmFuc2xh dGUoRk9SRUlHTkRPTSkgJiYgIUlTX1BSSVYoZCkgDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAmJiAhc2hhZG93X21vZGVfZXh0ZXJuYWwoRk9SRUlHTkRPTSkpICkNCiAgICAgICAgICAgICB7 DQogICAgICAgICAgICAgICAgIE1FTV9MT0coImNhbid0IG11dGF0ZSB0aGUgbTJwIG9mIHRyYW5z bGF0ZWQgZ3Vlc3RzIik7DQogICAgICAgICAgICAgICAgIGJyZWFrOw0KQEAgLTIxMTUsNyArMjEy Nyw2IEBADQogICAgIHJldHVybiByYzsNCiB9DQogDQotDQogaW50IGRvX3VwZGF0ZV92YV9tYXBw aW5nKHVuc2lnbmVkIGxvbmcgdmEsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGwxX3BnZW50 cnlfdCAgdmFsLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFn cykNCkBAIC0yMTM4LDkgKzIxNDksMTIgQEANCiAgICAgaWYgKCB1bmxpa2VseShzaGFkb3dfbW9k ZV9lbmFibGVkKGQpKSApDQogICAgICAgICBjaGVja19wYWdldGFibGUoZWQsICJwcmUtdmEiKTsg LyogZGVidWcgKi8NCiANCi0gICAgaWYgKCB1bmxpa2VseSghbW9kX2wxX2VudHJ5KCZsaW5lYXJf cGdfdGFibGVbbDFfbGluZWFyX29mZnNldCh2YSldLA0KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmFsKSkgKQ0KLSAgICAgICAgcmMgPSAtRUlOVkFMOw0KKyAgICBpZiAoICFzaGFk b3dfbW9kZV9leHRlcm5hbChkKSApDQorICAgIHsNCisgICAgICAgIGlmICggdW5saWtlbHkoIW1v ZF9sMV9lbnRyeSgmbGluZWFyX3BnX3RhYmxlW2wxX2xpbmVhcl9vZmZzZXQodmEpXSwNCisgICAg ICAgICAgICAgICAgICAgICAgICB2YWwpKSApDQorICAgICAgICAgICAgcmMgPSAtRUlOVkFMOw0K KyAgICB9DQogDQogICAgIGlmICggbGlrZWx5KHJjID09IDApICYmIHVubGlrZWx5KHNoYWRvd19t b2RlX2VuYWJsZWQoZCkpICkNCiAgICAgew0KZGlmZiAtTnJ1IGEveGVuL2FyY2gveDg2L3NoYWRv dy5jIGIveGVuL2FyY2gveDg2L3NoYWRvdy5jDQotLS0gYS94ZW4vYXJjaC94ODYvc2hhZG93LmMJ MjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCisrKyBiL3hlbi9hcmNoL3g4Ni9zaGFkb3cuYwky MDA1LTA1LTIwIDExOjQwOjEyICswODowMA0KQEAgLTI3NDYsNiArMjc0Niw3IEBADQogICAgIHN0 cnVjdCBkb21haW4gKmQgPSBlZC0+ZG9tYWluOw0KICAgICBsMV9wZ2VudHJ5X3Qgc3B0ZTsNCiAg ICAgaW50IHJjID0gMDsNCisgICAgdW5zaWduZWQgbG9uZyBncGEsIG1mbjsNCiANCiAgICAgc2hh ZG93X2xvY2soZCk7DQogDQpAQCAtMjc1Niw5ICsyNzU3LDMxIEBADQogICAgIC8vIGxpbmVhcl9w Z190YWJsZVtsMV9saW5lYXJfb2Zmc2V0KHZhKV0gdG8gYmUgaW4gc3luYykuLi4NCiAgICAgLy8N CiAgICAgX19zaGFkb3dfc3luY192YShlZCwgdmEpOw0KKyAgICANCisgICAgaWYoIVZNWF9ET01B SU4oZWQpKQ0KKyAgICB7DQorICAgICAgICBsMXB0ZV9wcm9wYWdhdGVfZnJvbV9ndWVzdChkLCB2 YWwsICZzcHRlKTsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGdwYSA9IGd2 YV90b19ncGEodmEpOw0KKyAgICAgICAgbWZuID0gbDFlX2dldF9wZm4odmFsKTsNCisgICAgICAg IGlmKGdwYSkgDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYobDFlX2dldF92YWx1ZSh2YWwp KQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgc2V0X3BoeXN0b21hY2hpbmUoZ3Bh ID4+IFBBR0VfU0hJRlQsIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1mbik7DQorICAgICAg ICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgc2V0X3BoeXN0b21h Y2hpbmUoZ3BhID4+IFBBR0VfU0hJRlQsIElOVkFMSURfTUZOKTsNCisgICAgICAgIH0NCiANCi0g ICAgbDFwdGVfcHJvcGFnYXRlX2Zyb21fZ3Vlc3QoZCwgdmFsLCAmc3B0ZSk7DQotICAgIHNoYWRv d19zZXRfbDFlKHZhLCBzcHRlLCAwKTsNCisgICAgICAgIHNwdGUgPSB2YWw7DQorDQorICAgIH0N CisNCisgICAgc2hhZG93X3NldF9sMWUodmEsIHNwdGUsIFZNWF9ET01BSU4oZWQpKTsNCiANCiAg ICAgLyoNCiAgICAgICogSWYgd2UncmUgaW4gbG9nLWRpcnR5IG1vZGUgdGhlbiB3ZSBuZWVkIHRv IG5vdGUgdGhhdCB3ZSd2ZSB1cGRhdGVkDQpkaWZmIC1OcnUgYS94ZW4vYXJjaC94ODYvdm14LmMg Yi94ZW4vYXJjaC94ODYvdm14LmMNCi0tLSBhL3hlbi9hcmNoL3g4Ni92bXguYwkyMDA1LTA1LTIw IDExOjQwOjEyICswODowMA0KKysrIGIveGVuL2FyY2gveDg2L3ZteC5jCTIwMDUtMDUtMjAgMTE6 NDA6MTIgKzA4OjAwDQpAQCAtOTc2LDIwICs5NzYsNDkgQEANCiBjaGFyIHByaW50X2J1ZltCVUZf U0laXTsNCiBzdGF0aWMgaW50IGluZGV4Ow0KIA0KLXN0YXRpYyB2b2lkIHZteF9wcmludF9saW5l KGNvbnN0IGNoYXIgYywgc3RydWN0IGV4ZWNfZG9tYWluICpkKSANCithc21saW5rYWdlIHVuc2ln bmVkIGxvbmcgZG9fdm14X3ByaW50X2xpbmUodW5zaWduZWQgbG9uZyBjaCkgDQogew0KIA0KKyNp ZiBWTVhfREVCVUcNCisgICAgY2hhciBjID0gKGNoYXIpY2g7DQogICAgIGlmIChpbmRleCA9PSBN QVhfTElORSB8fCBjID09ICdcbicpIHsNCiAgICAgICAgIGlmIChpbmRleCA9PSBNQVhfTElORSkg ew0KICAgICAgICAgICAgIHByaW50X2J1ZltpbmRleCsrXSA9IGM7DQogICAgICAgICB9DQogICAg ICAgICBwcmludF9idWZbaW5kZXhdID0gJ1wwJzsNCi0gICAgICAgIHByaW50aygiKEdVRVNUOiAl dSkgJXNcbiIsIGQtPmRvbWFpbi0+ZG9tYWluX2lkLCAoY2hhciAqKSAmcHJpbnRfYnVmKTsNCisg ICAgICAgIHByaW50aygiKEdVRVNUOiAldSkgJXNcbiIsIGN1cnJlbnQtPmRvbWFpbi0+ZG9tYWlu X2lkLCAoY2hhciAqKSAmcHJpbnRfYnVmKTsNCiAgICAgICAgIGluZGV4ID0gMDsNCiAgICAgfQ0K ICAgICBlbHNlDQogICAgICAgICBwcmludF9idWZbaW5kZXgrK10gPSBjOw0KKyNlbmRpZg0KKyAg ICByZXR1cm4gMDsNCit9DQorDQorI2lmIGRlZmluZWQoX19pMzg2X18pDQordm9pZCB2bXhfZG9f aHlwZXJjYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpwcmVncykNCit7DQorCXVuc2lnbmVkIGxv bmcgcmV0Y29kZTsNCisJX19hc21fXyBfX3ZvbGF0aWxlX18oDQorCQkicHVzaGwgJTZcblx0Ig0K KwkJInB1c2hsICU1XG5cdCINCisJCSJwdXNobCAlNFxuXHQiDQorCQkicHVzaGwgJTNcblx0Ig0K KwkJInB1c2hsICUyXG5cdCINCisJCSJjYWxsICoodm14X2h5cGVyY2FsbF90YWJsZSkoLCUwLDQp XG5cdCINCisJCSJhZGRsICQyMCwgJSVlc3Bcblx0Ig0KKwkJOiI9JmEiKHJldGNvZGUpDQorCQk6 IjAiKHByZWdzLT5lYXgpLCAiciIocHJlZ3MtPmVieCksICJyIihwcmVncy0+ZWN4KSwNCisJCSAi ciIocHJlZ3MtPmVkeCksICJyIihwcmVncy0+ZXNpKSwgInIiKHByZWdzLT5lZGkpDQorCSk7DQor CXByZWdzLT5lYXggPSByZXRjb2RlOw0KKwlyZXR1cm47DQorfQ0KKyNlbHNlDQordm9pZCB2bXhf ZG9faHlwZXJjYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpwcmVncykNCit7DQogfQ0KKyNlbmRp Zg0KIA0KIHZvaWQgc2F2ZV92bXhfY3B1X3VzZXJfcmVncyhzdHJ1Y3QgY3B1X3VzZXJfcmVncyAq Y3R4dCkNCiB7DQpAQCAtMTIzMCw4ICsxMjU5LDcgQEANCiAgICAgICAgIF9fZ2V0X2luc3RydWN0 aW9uX2xlbmd0aChpbnN0X2xlbik7DQogICAgICAgICBfX3ZtcmVhZChHVUVTVF9FSVAsICZlaXAp Ow0KICAgICAgICAgX192bXJlYWQoRVhJVF9RVUFMSUZJQ0FUSU9OLCAmZXhpdF9xdWFsaWZpY2F0 aW9uKTsNCi0NCi0gICAgICAgIHZteF9wcmludF9saW5lKHJlZ3MuZWF4LCBlZCk7IC8qIHByb3Zp ZGVzIHRoZSBjdXJyZW50IGRvbWFpbiAqLw0KKyAgICAgICAgIHZteF9kb19oeXBlcmNhbGwoJnJl Z3MpOw0KICAgICAgICAgX191cGRhdGVfZ3Vlc3RfZWlwKGluc3RfbGVuKTsNCiAgICAgICAgIGJy ZWFrOw0KICAgICBjYXNlIEVYSVRfUkVBU09OX0NSX0FDQ0VTUzoNCkBAIC0xMjk1LDYgKzEzMjMs NTcgQEANCiAjZW5kaWYNCiANCiB9DQorDQoraW50IGRvX3VwZGF0ZV92YV9tYXBwaW5nKHVuc2ln bmVkIGxvbmcgdmEsDQorICAgICAgICAgICAgICAgICAgICAgICAgIGwxX3BnZW50cnlfdCAgdmFs LCANCisgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyk7DQorLyog DQorICogVGhlIHZhIG11c3QgYmUgYSBwYWdlIHN0YXJ0IGFkZHJlc3MNCisgKi8NCitpbnQgbWFw X3NoYXJlcGFnZV90b19ndWVzdCh1bnNpZ25lZCBsb25nIGd2YSwgdW5zaWduZWQgbG9uZyBzaGFy ZWQpDQorew0KKyAgICBsMV9wZ2VudHJ5X3QgdmFsLCBncHRlOyANCisNCisgICAgZ3B0ZSA9IGd2 YV90b19ncHRlKGd2YSk7DQorICAgIHZhbCA9IGwxZV9jcmVhdGVfcGh5cygoX19wYShzaGFyZWQp KSwgbDFlX2dldF9mbGFncyhncHRlKSk7DQorICAgIHJldHVybiBkb191cGRhdGVfdmFfbWFwcGlu ZyhndmEsIHZhbCwgMCk7DQorfQ0KKyAgDQorYXNtbGlua2FnZSB1bnNpZ25lZCBsb25nIGRvX3Zp cnR1YWxfZGV2aWNlX29wKHVuc2lnbmVkIGxvbmcgb3AsIA0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGFyZzEsIA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBhcmcyKQ0KK3sN CisJc3dpdGNoIChvcCkgDQorICAgIHsNCisgICAgICAgIGNhc2UgU0VUX1NIQVJFSU5GT19NQVA6 DQorCQkgICAgcmV0dXJuIG1hcF9zaGFyZXBhZ2VfdG9fZ3Vlc3QoYXJnMSwgDQorICAgICAgICAg ICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpY3VycmVudC0+ZG9tYWluLT5zaGFyZWRfaW5m byk7DQorICAgICAgICBjYXNlIFNFVF9DQUxMQkFDS19JUlE6DQorICAgICAgICAgICAgaWYoYXJn MSkNCisgICAgICAgICAgICAgICAgY3VycmVudC0+YXJjaC5jYWxsYmFja19pcnEgPSAweDIwK2Fy ZzE7DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgICAgICBjdXJyZW50LT5hcmNoLmNh bGxiYWNrX2lycSA9IDA7DQorICAgICAgICAgICAgcmV0dXJuIDA7DQorICAgICAgICBjYXNlIEFE RFJfTUFDSFRPUEhZUzogDQorICAgICAgICB7DQorICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBw aHlzID0gDQorICAgICAgICAgICAgICAgIF9fbWZuX3RvX2dwZm4oY3VycmVudC0+ZG9tYWluLCBh cmcxID4+IFBBR0VfU0hJRlQpOw0KKyAgICAgICAgICAgIHBoeXMgPSAocGh5cyA8PCBQQUdFX1NI SUZUKSB8IChhcmcxICYgflBBR0VfTUFTSyk7DQorICAgICAgICAgICAgcmV0dXJuIHBoeXM7DQor ICAgICAgICB9DQorICAgICAgICBjYXNlIEFERFJfUEhZU1RPTUFDSDoNCisgICAgICAgIHsNCisg ICAgICAgICAgICB1bnNpZ25lZCBsb25nIG1hY2hpbmUgPSANCisgICAgICAgICAgICAgICAgX19n cGZuX3RvX21mbihjdXJyZW50LT5kb21haW4sIGFyZzEgPj4gUEFHRV9TSElGVCk7DQorICAgICAg ICAgICAgbWFjaGluZSA9IChtYWNoaW5lIDw8IFBBR0VfU0hJRlQpIHwgKGFyZzEgJiB+UEFHRV9N QVNLKTsNCisgICAgICAgICAgICByZXR1cm4gbWFjaGluZTsNCisgICAgICAgIH0NCisgICAgICAg IGRlZmF1bHQ6DQorCSAgICAgICAgcHJpbnRrKCJOb3Qgc3VwcG9ydGVkIHZpcnR1YWwgZGV2aWNl IG9wZXJhdGlvblxuIik7DQorICAgIH0NCisgICAgcmV0dXJuIDBMOw0KK30NCisNCiANCiAjZW5k aWYgLyogQ09ORklHX1ZNWCAqLw0KIA0KZGlmZiAtTnJ1IGEveGVuL2FyY2gveDg2L3ZteF9pby5j IGIveGVuL2FyY2gveDg2L3ZteF9pby5jDQotLS0gYS94ZW4vYXJjaC94ODYvdm14X2lvLmMJMjAw NS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCisrKyBiL3hlbi9hcmNoL3g4Ni92bXhfaW8uYwkyMDA1 LTA1LTIwIDExOjQwOjEyICswODowMA0KQEAgLTE5NiwxMiArMTk2LDE0IEBADQogICAgIG1wY2lf cCA9ICZlZC0+YXJjaC5hcmNoX3ZteC52bXhfcGxhdGZvcm0ubXBjaTsNCiAgICAgaW5zdF9kZWNv ZGVyX3JlZ3MgPSBtcGNpX3AtPmluc3RfZGVjb2Rlcl9yZWdzOw0KIA0KLSAgICAvKiBjbGVhciB0 aGUgcGVuZGluZyBldmVudCAqLw0KLSAgICBlZC0+dmNwdV9pbmZvLT5ldnRjaG5fdXBjYWxsX3Bl bmRpbmcgPSAwOw0KICAgICAvKiBjbGVhciB0aGUgcGVuZGluZyBiaXQgZm9yIHBvcnQgMiAqLw0K LSAgICBjbGVhcl9iaXQoSU9QQUNLRVRfUE9SVD4+NSwgJmVkLT52Y3B1X2luZm8tPmV2dGNobl9w ZW5kaW5nX3NlbCk7DQogICAgIGNsZWFyX2JpdChJT1BBQ0tFVF9QT1JULCAmZC0+c2hhcmVkX2lu Zm8tPmV2dGNobl9wZW5kaW5nWzBdKTsNCiANCisgICAgaWYgKCFkLT5zaGFyZWRfaW5mby0+ZXZ0 Y2huX3BlbmRpbmdbSU9QQUNLRVRfUE9SVD4+NV0pDQorICAgICAgICBjbGVhcl9iaXQoSU9QQUNL RVRfUE9SVD4+NSwgJmVkLT52Y3B1X2luZm8tPmV2dGNobl9wZW5kaW5nX3NlbCk7ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCisgICAgaWYgKCFlZC0+dmNwdV9pbmZvLT5ldnRjaG5f cGVuZGluZ19zZWwpIA0KKyAgICAgICAgZWQtPnZjcHVfaW5mby0+ZXZ0Y2huX3VwY2FsbF9wZW5k aW5nID0gMDsNCisNCiAgICAgdmlvID0gKHZjcHVfaW9kYXRhX3QgKikgZWQtPmFyY2guYXJjaF92 bXgudm14X3BsYXRmb3JtLnNoYXJlZF9wYWdlX3ZhOw0KICAgICBpZiAodmlvID09IDApIHsNCiAg ICAgICAgIFZNWF9EQkdfTE9HKERCR19MRVZFTF8xLCANCkBAIC00MjcsNiArNDI5LDI1IEBADQog ICAgIHJldHVybjsNCiB9DQogDQoraW50IHZteF9ldmVudF90b19pcnEoc3RydWN0IGV4ZWNfZG9t YWluICplZCkgDQorew0KKyAgICB2Y3B1X2lvZGF0YV90ICp2aW87DQorDQorICAgIHZpbyA9ICh2 Y3B1X2lvZGF0YV90ICopIGVkLT5hcmNoLmFyY2hfdm14LnZteF9wbGF0Zm9ybS5zaGFyZWRfcGFn ZV92YTsNCisgICAgaWYgKHZpbyA9PSAwKSB7DQorICAgICAgICBWTVhfREJHX0xPRyhEQkdfTEVW RUxfVkJELCANCisgICAgICAgICAgICAgICAgImJhZCBzaGFyZWQgcGFnZTogJWx4XG4iLCAodW5z aWduZWQgbG9uZykgdmlvKTsNCisgICAgICAgIGRvbWFpbl9jcmFzaCgpOw0KKyAgICB9DQorICAg IC8qDQorICAgICAqIHRoZSBldmVudCBpcyBvbmx5IGZvciBndWVzdCwganVzdCBzZXQgY2FsbGJh Y2sgaW50ZXJydXB0IA0KKyAgICAgKiBiaXQgIGFuZCByZXR1cm4NCisgICAgICovDQorICAgIHJl dHVybiB0ZXN0X2FuZF9zZXRfYml0KGVkLT5hcmNoLmNhbGxiYWNrX2lycSwgJnZpby0+dnBfaW50 clswXSk7DQorDQorfQ0KKw0KKy8qIGZvciBkZWJ1ZyB1c2UqLw0KIHZvaWQgdm14X2RvX3Jlc3Vt ZShzdHJ1Y3QgZXhlY19kb21haW4gKmQpIA0KIHsNCiAgICAgdm14X3N0dHMoKTsNCkBAIC00NDAs MTIgKzQ2MSwzNCBAQA0KICAgICBfX3Ztd3JpdGUoSE9TVF9FU1AsICh1bnNpZ25lZCBsb25nKWdl dF9zdGFja19ib3R0b20oKSk7DQogDQogICAgIGlmIChldmVudF9wZW5kaW5nKGQpKSB7DQotICAg ICAgICBpZiAodGVzdF9iaXQoSU9QQUNLRVRfUE9SVCwgJmQtPmRvbWFpbi0+c2hhcmVkX2luZm8t PmV2dGNobl9wZW5kaW5nWzBdKSkgDQorICAgICAgICBpZiAodGVzdF9iaXQoSU9QQUNLRVRfUE9S VCwgJmQtPmRvbWFpbi0+c2hhcmVkX2luZm8tPmV2dGNobl9wZW5kaW5nWzBdKSkNCiAgICAgICAg ICAgICB2bXhfaW9fYXNzaXN0KGQpOw0KKyAgICAgICAgaWYoZXZlbnRfcGVuZGluZyhkKSAmJiAh ZC0+dmNwdV9pbmZvLT5jYWxsYmFja19tYXNrKSB7DQorICAgICAgICAgICAgVk1YX0RCR19MT0co REJHX0xFVkVMX1ZCRCwNCisgICAgICAgICAgICAgICAiPHZiZD5pbnNlcnQgY2FsbGJhY2sgaW50 ZXJydXB0XG4iKTsNCisNCisgICAgICAgICAgICB2bXhfZXZlbnRfdG9faXJxKGQpOyANCisgICAg ICAgICAgICBkLT52Y3B1X2luZm8tPmNhbGxiYWNrX21hc2sgPSANCisgICAgICAgICAgICAgICAg ZC0+ZG9tYWluLT5zaGFyZWRfaW5mby0+ZXZ0Y2huX3BlbmRpbmdbMF07DQorDQorICAgICAgICB9 ICAgICAgICAgICAgICAgDQorICAgICAgICBpZiAodGVzdF9iaXQoQVJDSF9WTVhfSU9fV0FJVCwg JmQtPmFyY2guYXJjaF92bXguZmxhZ3MpKSB7DQorICAgICAgICAgICAgLyoNCisgICAgICAgICAg ICAgKiBjbGVhciB0aGUgaW5kaWNhdG9yLCBzbyB0aGF0IGV2dGNobl9zZXRfcGVuZGluZyBjYW4g DQorICAgICAgICAgICAgICogdW5ibG9jayBkb21haW4gYWdhaW4gDQorICAgICAgICAgICAgICov DQorICAgICAgICAgICAgZC0+dmNwdV9pbmZvLT5ldnRjaG5fdXBjYWxsX3BlbmRpbmcgPSAwOw0K IA0KLSAgICAgICAgZWxzZSBpZiAodGVzdF9iaXQoQVJDSF9WTVhfSU9fV0FJVCwgJmQtPmFyY2gu YXJjaF92bXguZmxhZ3MpKSB7DQotICAgICAgICAgICAgcHJpbnRrKCJnb3QgYW4gZXZlbnQgd2hp bGUgYmxvY2tlZCBvbiBJL09cbiIpOw0KKyAgICAgICAgICAgIC8qY2xlYXIgdGhlIGJpdCwgc28g dGhhdCBkZXZpY2UtbW9kZWwgY2FuIHVuYmxvY2sgZG9tYWluIGFnYWluICovDQorICAgICAgICAg ICAgY2xlYXJfYml0KElPUEFDS0VUX1BPUlQ+PjUsICZkLT52Y3B1X2luZm8tPmV2dGNobl9wZW5k aW5nX3NlbCk7DQorDQorICAgICAgICAgICAgVk1YX0RCR19MT0coREJHX0xFVkVMX1ZCRCwNCisg ICAgICAgICAgICAgICAgIkkvTyBub3QgY29tcGxldGUsIGRvX2Jsb2NrXG4iKTsNCiAgICAgICAg ICAgICBkb19ibG9jaygpOw0KKw0KKyAgICAgICAgICAgIC8qIGRvX2Jsb2NrIHNoYWxsIG5vdCBy ZXR1cm4gYXQgdGhpcyB0aW1lKi8NCisgICAgICAgICAgICBwcmludGsoImRvX2Jsb2NrIHJldHVy biBpbiB2bXhfZG9fcmVzdW1lISEhXG4iKTsNCisNCiAgICAgICAgIH0NCiAgICAgICAgICAgICAg ICAgDQogICAgICAgICAvKiBBc3N1bXB0aW9uOiBkZXZpY2UgbW9kZWwgd2lsbCBub3QgaW5qZWN0 IGFuIGludGVycnVwdA0KQEAgLTQ1NCw4ICs0OTcsMTEgQEANCiAgICAgICAgICAqIGEgcmVzcG9u c2UgdG8gaW9yZXFfdCBpcyBub3Qgb2suDQogICAgICAgICAgKi8NCiAgICAgfQ0KLSAgICBpZiAo IXRlc3RfYml0KEFSQ0hfVk1YX0lPX1dBSVQsICZkLT5hcmNoLmFyY2hfdm14LmZsYWdzKSkNCisN CisgICAgaWYgKCF0ZXN0X2JpdChBUkNIX1ZNWF9JT19XQUlULCAmZC0+YXJjaC5hcmNoX3ZteC5m bGFncykpIA0KICAgICAgICAgdm14X2ludHJfYXNzaXN0KGQpOw0KKyAgICBlbHNlDQorICAgICAg ICBkb19ibG9jaygpOw0KIH0NCiANCiAjZW5kaWYgLyogQ09ORklHX1ZNWCAqLw0KZGlmZiAtTnJ1 IGEveGVuL2FyY2gveDg2L3g4Nl8zMi9lbnRyeS5TIGIveGVuL2FyY2gveDg2L3g4Nl8zMi9lbnRy eS5TDQotLS0gYS94ZW4vYXJjaC94ODYveDg2XzMyL2VudHJ5LlMJMjAwNS0wNS0yMCAxMTo0MDox MiArMDg6MDANCisrKyBiL3hlbi9hcmNoL3g4Ni94ODZfMzIvZW50cnkuUwkyMDA1LTA1LTIwIDEx OjQwOjEyICswODowMA0KQEAgLTc0OSw2ICs3NDksNDIgQEANCiAgICAgICAgIC5sb25nIGRvX2Jv b3RfdmNwdQ0KICAgICAgICAgLmxvbmcgZG9fbmlfaHlwZXJjYWxsICAgICAgIC8qIDI1ICovDQog ICAgICAgICAubG9uZyBkb19tbXVleHRfb3ANCisgICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2Fs bCAgICAgICANCisgICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbCAgICAgICAvKiB2aXJ1dGFs IGRldmljZSBvcCBmb3IgVk1YICovDQogICAgICAgICAucmVwdCBOUl9oeXBlcmNhbGxzLSgoLi1o eXBlcmNhbGxfdGFibGUpLzQpDQorICAgICAgICAubG9uZyBkb19uaV9oeXBlcmNhbGwNCisgICAg ICAgIC5lbmRyDQorDQorRU5UUlkodm14X2h5cGVyY2FsbF90YWJsZSkNCisgICAgICAgIC5sb25n IGRvX25pX2h5cGVyY2FsbCAgICAgICAvKiAgMCAqLw0KKyAgICAgICAgLmxvbmcgZG9fbW11X3Vw ZGF0ZQ0KKyAgICAgICAgLmxvbmcgZG9fbmlfaHlwZXJjYWxsDQorICAgICAgICAubG9uZyBkb19u aV9oeXBlcmNhbGwNCisgICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbA0KKyAgICAgICAgLmxv bmcgZG9fbmlfaHlwZXJjYWxsICAgICAgIC8qICA1ICovDQorICAgICAgICAubG9uZyBkb19uaV9o eXBlcmNhbGwNCisgICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbA0KKyAgICAgICAgLmxvbmcg ZG9fbmlfaHlwZXJjYWxsDQorICAgICAgICAubG9uZyBkb19uaV9oeXBlcmNhbGwNCisgICAgICAg IC5sb25nIGRvX25pX2h5cGVyY2FsbCAgICAgICAvKiAxMCAqLw0KKyAgICAgICAgLmxvbmcgZG9f dm14X3ByaW50X2xpbmUNCisgICAgICAgIC5sb25nIGRvX2RvbV9tZW1fb3ANCisgICAgICAgIC5s b25nIGRvX211bHRpY2FsbA0KKyAgICAgICAgLmxvbmcgZG9fdXBkYXRlX3ZhX21hcHBpbmcNCisg ICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbCAgICAgICAvKiAxNSAqLw0KKyAgICAgICAgLmxv bmcgZG9fZXZlbnRfY2hhbm5lbF9vcA0KKyAgICAgICAgLmxvbmcgZG9feGVuX3ZlcnNpb24NCisg ICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbA0KKyAgICAgICAgLmxvbmcgZG9fbmlfaHlwZXJj YWxsDQorICAgICAgICAubG9uZyBkb19ncmFudF90YWJsZV9vcCAgICAgLyogMjAgKi8NCisgICAg ICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbA0KKyAgICAgICAgLmxvbmcgZG9fbmlfaHlwZXJjYWxs DQorICAgICAgICAubG9uZyBkb19uaV9oeXBlcmNhbGwNCisgICAgICAgIC5sb25nIGRvX25pX2h5 cGVyY2FsbA0KKyAgICAgICAgLmxvbmcgZG9fbmlfaHlwZXJjYWxsICAgICAgIC8qIDI1ICovDQor ICAgICAgICAubG9uZyBkb19uaV9oeXBlcmNhbGwNCisgICAgICAgIC5sb25nIGRvX25pX2h5cGVy Y2FsbCAgICAgICANCisgICAgICAgIC5sb25nIGRvX3ZpcnR1YWxfZGV2aWNlX29wICAvKiAyOCAq Lw0KKyAgICAgICAgLnJlcHQgTlJfaHlwZXJjYWxscy0oKC4tdm14X2h5cGVyY2FsbF90YWJsZSkv NCkNCiAgICAgICAgIC5sb25nIGRvX25pX2h5cGVyY2FsbA0KICAgICAgICAgLmVuZHINCmRpZmYg LU5ydSBhL3hlbi9hcmNoL3g4Ni94ODZfMzIvdXNlcmNvcHkuYyBiL3hlbi9hcmNoL3g4Ni94ODZf MzIvdXNlcmNvcHkuYw0KLS0tIGEveGVuL2FyY2gveDg2L3g4Nl8zMi91c2VyY29weS5jCTIwMDUt MDUtMjAgMTE6NDA6MTIgKzA4OjAwDQorKysgYi94ZW4vYXJjaC94ODYveDg2XzMyL3VzZXJjb3B5 LmMJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCkBAIC04LDYgKzgsOCBAQA0KICNpbmNsdWRl IDx4ZW4vY29uZmlnLmg+DQogI2luY2x1ZGUgPHhlbi9tbS5oPg0KICNpbmNsdWRlIDxhc20vdWFj Y2Vzcy5oPg0KKyNpbmNsdWRlIDxhc20vZG9tYWluX3BhZ2UuaD4NCisjaW5jbHVkZSA8YXNtL3No YWRvdy5oPg0KIA0KIHN0YXRpYyBpbmxpbmUgaW50IF9fbW92c2xfaXNfb2sodW5zaWduZWQgbG9u ZyBhMSwgdW5zaWduZWQgbG9uZyBhMiwgdW5zaWduZWQgbG9uZyBuKQ0KIHsNCkBAIC0zOTQsNiAr Mzk2LDk4IEBADQogCXJldHVybiBuOw0KIH0NCiANCit2b2lkKiBtYXBfZG9tYWluX3ZhZGRyKHZv aWQgKiBndWVzdF92YWRkciwgdW5zaWduZWQgbG9uZyBsZW4pDQorew0KKyAgICBsMV9wZ2VudHJ5 X3QgZ3B0ZTsNCisgICAgdW5zaWduZWQgbG9uZyBtZm47DQorICAgIHVuc2lnbmVkIGxvbmcgbWE7 DQorICAgIHZvaWQgKiB2c3RhcnQ7DQorICAgIA0KKyAgICBpZiAobGVuID4gUEFHRV9TSVpFKSAN CisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgDQorICAgIGlmICgoKHVu c2lnbmVkIGxvbmcpZ3Vlc3RfdmFkZHIgJiBQQUdFX01BU0spID09IA0KKyAgICAgICAgKCgodW5z aWduZWQgbG9uZylndWVzdF92YWRkciArIGxlbiAtMSkgJiBQQUdFX01BU0spKSANCisgICAgew0K KyAgICAgICAgZ3B0ZSA9IGd2YV90b19ncHRlKCh1bnNpZ25lZCBsb25nKWd1ZXN0X3ZhZGRyKTsN CisgICAgICAgIG1mbiA9IHBoeXNfdG9fbWFjaGluZV9tYXBwaW5nKGwxZV9nZXRfcGZuKGdwdGUp KTsNCisgICAgICAgIG1hID0gKG1mbiA8PCBQQUdFX1NISUZUKSB8IA0KKyAgICAgICAgICAgICAo KHVuc2lnbmVkIGxvbmcpZ3Vlc3RfdmFkZHIgJiAoUEFHRV9TSVpFIC0gMSkpOw0KKyAgICAgICAg dnN0YXJ0ID0gKHZvaWQgKiltYXBfZG9tYWluX21lbShtYSk7DQorICAgIH0NCisgICAgZWxzZSAN CisgICAgew0KKyAgICAgICAgcmV0dXJuIE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIHZzdGFy dDsNCit9DQorDQordW5zaWduZWQgbG9uZw0KK2NvcHlfZnJvbV9ndWVzdCh2b2lkICp0bywgY29u c3Qgdm9pZCBfX3VzZXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgbikNCit7DQorICAgIHZvaWQgKmhm cm9tOyAgICANCisgICAgdW5zaWduZWQgbG9uZyBuY29weTsNCisgICAgaW50IG5sZWZ0Ow0KKyAg ICBuY29weSA9ICgoKHVuc2lnbmVkIGxvbmcpZnJvbSAgKyBQQUdFX1NJWkUpICYgUEFHRV9NQVNL KSAtIA0KKyAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWZyb207DQorICAgIG5jb3B5ID0gbmNv cHkgPiBuID8gbiA6IG5jb3B5OyAgDQorDQorICAgIGZvcihubGVmdCA9IG47IG5sZWZ0ID4gMDsg bmNvcHkgPSBubGVmdCA+IFBBR0VfU0laRSA/IFBBR0VfU0laRSA6IG5sZWZ0KSANCisgICAgew0K KyAgICAgICAgaGZyb20gPSBtYXBfZG9tYWluX3ZhZGRyKCh2b2lkKilmcm9tLCBuY29weSk7DQor ICAgICAgICBpZihoZnJvbSkgDQorICAgICAgICB7DQorICAgICAgICAgICAgbWVtY3B5KHRvLCBo ZnJvbSwgbmNvcHkpOw0KKyAgICAgICAgICAgIHVubWFwX2RvbWFpbl9tZW0oKHZvaWQqKWhmcm9t KTsgDQorICAgICAgICB9DQorICAgICAgICBlbHNlIA0KKyAgICAgICAgew0KKyAgICAgICAgICAg IHByaW50aygiZXJyb3IhLCBjb3B5IGZyb20gZ3Vlc3QgbWFwIGVycm9yLCBmcm9tOiVwLCBuY29w eTolbGRcbiIsIA0KKyAgICAgICAgICAgICAgICAgICBmcm9tLCBuY29weSk7DQorICAgICAgICAg ICAgIHJldHVybiBubGVmdDsNCisgICAgICAgIH0NCisgICAgICAgIG5sZWZ0IC09IG5jb3B5Ow0K KyAgICAgICAgZnJvbSArPSBuY29weTsNCisgICAgICAgIHRvICs9IG5jb3B5Ow0KKyAgICB9DQor ICAgIHJldHVybiBubGVmdDsNCit9DQorRVhQT1JUX1NZTUJPTChjb3B5X2Zyb21fZ3Vlc3QpOw0K Kw0KK3Vuc2lnbmVkIGxvbmcNCitjb3B5X3RvX2d1ZXN0KHZvaWQgX191c2VyICp0bywgY29uc3Qg dm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKQ0KK3sNCisgICAgdm9pZCAqaHRvOyAgDQorICAg IHVuc2lnbmVkIGxvbmcgbmNvcHk7DQorICAgIGludCBubGVmdDsNCisNCisgICAgbmNvcHkgPSAo KCh1bnNpZ25lZCBsb25nKXRvICArIFBBR0VfU0laRSkgJiBQQUdFX01BU0spIC0gKHVuc2lnbmVk IGxvbmcpdG87DQorICAgIG5jb3B5ID0gbmNvcHkgPiBuID8gbiA6IG5jb3B5OyAgDQorDQorICAg IGZvcihubGVmdCA9IG47IG5sZWZ0ID4gMDsgbmNvcHkgPSBubGVmdCA+IFBBR0VfU0laRSA/IFBB R0VfU0laRSA6IG5sZWZ0KSANCisgICAgew0KKyAgICAgICAgaHRvID0gbWFwX2RvbWFpbl92YWRk cigodm9pZCopdG8sIG5jb3B5KTsNCisgICAgICAgIGlmKGh0bykgDQorICAgICAgICB7DQorICAg ICAgICAgICAgbWVtY3B5KGh0bywgZnJvbSwgbmNvcHkpOw0KKyAgICAgICAgICAgIHVubWFwX2Rv bWFpbl9tZW0oKHZvaWQqKWh0byk7IA0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZSANCisgICAg ICAgIHsNCisgICAgICAgICAgICBwcmludGsoImVycm9yISwgY29weSB0byBndWVzdCBtYXAgZXJy b3IsIGZyb206JXAsIG5jb3B5OiVsZFxuIiwgDQorICAgICAgICAgICAgICAgICAgIGZyb20sIG5j b3B5KTsNCisgICAgICAgICAgICByZXR1cm4gbmxlZnQ7DQorICAgICAgICB9DQorICAgICAgICBu bGVmdCAtPSBuY29weTsNCisgICAgICAgIGZyb20gKz0gbmNvcHk7DQorICAgICAgICB0byArPSBu Y29weTsNCisgICAgfQ0KKyAgICByZXR1cm4gbmxlZnQ7DQorfQ0KK0VYUE9SVF9TWU1CT0woY29w eV90b19ndWVzdCk7DQorDQogLyoqDQogICogY29weV90b191c2VyOiAtIENvcHkgYSBibG9jayBv ZiBkYXRhIGludG8gdXNlciBzcGFjZS4NCiAgKiBAdG86ICAgRGVzdGluYXRpb24gYWRkcmVzcywg aW4gdXNlciBzcGFjZS4NCkBAIC00MTAsNiArNTA0LDggQEANCiB1bnNpZ25lZCBsb25nDQogY29w eV90b191c2VyKHZvaWQgX191c2VyICp0bywgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9u ZyBuKQ0KIHsNCisgICAgaWYoVk1YX0RPTUFJTihjdXJyZW50KSkNCisgICAgICAgIHJldHVybiBj b3B5X3RvX2d1ZXN0KHRvLCBmcm9tLCBuKTsNCiAJaWYgKGFjY2Vzc19vayh0bywgbikpDQogCQlu ID0gX19jb3B5X3RvX3VzZXIodG8sIGZyb20sIG4pOw0KIAlyZXR1cm4gbjsNCkBAIC00MzQsNiAr NTMwLDkgQEANCiB1bnNpZ25lZCBsb25nDQogY29weV9mcm9tX3VzZXIodm9pZCAqdG8sIGNvbnN0 IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pDQogew0KKw0KKyAgICBpZihWTVhf RE9NQUlOKGN1cnJlbnQpKQ0KKyAgICAgICAgcmV0dXJuIGNvcHlfZnJvbV9ndWVzdCh0bywgZnJv bSwgbik7DQogCWlmIChhY2Nlc3Nfb2soZnJvbSwgbikpDQogCQluID0gX19jb3B5X2Zyb21fdXNl cih0bywgZnJvbSwgbik7DQogCWVsc2UNCmRpZmYgLU5ydSBhL3hlbi9hcmNoL3g4Ni94ODZfNjQv dXNlcmNvcHkuYyBiL3hlbi9hcmNoL3g4Ni94ODZfNjQvdXNlcmNvcHkuYw0KLS0tIGEveGVuL2Fy Y2gveDg2L3g4Nl82NC91c2VyY29weS5jCTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQorKysg Yi94ZW4vYXJjaC94ODYveDg2XzY0L3VzZXJjb3B5LmMJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6 MDANCkBAIC0xMzIsNiArMTMyLDIxIEBADQogCXJldHVybiBuOw0KIH0NCiANCit1bnNpZ25lZCBs b25nDQorY29weV9mcm9tX2d1ZXN0KHZvaWQgKnRvLCBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwg dW5zaWduZWQgbG9uZyBuKQ0KK3sNCisgIHJldHVybiBuOw0KK30NCitFWFBPUlRfU1lNQk9MKGNv cHlfZnJvbV9ndWVzdCk7DQorDQordW5zaWduZWQgbG9uZw0KK2NvcHlfdG9fZ3Vlc3Qodm9pZCBf X3VzZXIgKnRvLCBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25lZCBsb25nIG4pDQorew0KKyAgICBy ZXR1cm4gbjsNCit9DQorRVhQT1JUX1NZTUJPTChjb3B5X3RvX2d1ZXN0KTsNCisNCisNCiAvKioN CiAgKiBjb3B5X3RvX3VzZXI6IC0gQ29weSBhIGJsb2NrIG9mIGRhdGEgaW50byB1c2VyIHNwYWNl Lg0KICAqIEB0bzogICBEZXN0aW5hdGlvbiBhZGRyZXNzLCBpbiB1c2VyIHNwYWNlLg0KZGlmZiAt TnJ1IGEveGVuL2NvbW1vbi9kb21fbWVtX29wcy5jIGIveGVuL2NvbW1vbi9kb21fbWVtX29wcy5j DQotLS0gYS94ZW4vY29tbW9uL2RvbV9tZW1fb3BzLmMJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6 MDANCisrKyBiL3hlbi9jb21tb24vZG9tX21lbV9vcHMuYwkyMDA1LTA1LTIwIDExOjQwOjEyICsw ODowMA0KQEAgLTgwLDE1ICs4MCwyMSBAQA0KICAgICBzdHJ1Y3QgcGZuX2luZm8gKnBhZ2U7DQog ICAgIHVuc2lnbmVkIGxvbmcgICAgaSwgaiwgbXBmbjsNCiANCi0gICAgaWYgKCAhYXJyYXlfYWNj ZXNzX29rKGV4dGVudF9saXN0LCBucl9leHRlbnRzLCBzaXplb2YoKmV4dGVudF9saXN0KSkgKQ0K KyAgICBpZiAoICFWTVhfRE9NQUlOKGN1cnJlbnQpICYmIA0KKyAgICAgICAgIHVubGlrZWx5KCFh cnJheV9hY2Nlc3Nfb2soZXh0ZW50X2xpc3QsIG5yX2V4dGVudHMsIA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpleHRlbnRfbGlzdCkpKSApDQogICAgICAgICBy ZXR1cm4gc3RhcnRfZXh0ZW50Ow0KIA0KICAgICBmb3IgKCBpID0gc3RhcnRfZXh0ZW50OyBpIDwg bnJfZXh0ZW50czsgaSsrICkNCiAgICAgew0KLSAgICAgICAgUFJFRU1QVF9DSEVDSyhNRU1PUF9k ZWNyZWFzZV9yZXNlcnZhdGlvbik7DQotDQotICAgICAgICBpZiAoIHVubGlrZWx5KF9fZ2V0X3Vz ZXIobXBmbiwgJmV4dGVudF9saXN0W2ldKSAhPSAwKSApDQotICAgICAgICAgICAgcmV0dXJuIGk7 DQorICAgICAgICBpZiggVk1YX0RPTUFJTihjdXJyZW50KSkgew0KKyAgICAgICAgICAgIGlmKGNv cHlfZnJvbV9ndWVzdCgmbXBmbiwgJmV4dGVudF9saXN0W2ldLCBzaXplb2YobXBmbikpICE9IDAp DQorICAgICAgICAgICAgICAgIHJldHVybiBpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAg ICAgICBQUkVFTVBUX0NIRUNLKE1FTU9QX2RlY3JlYXNlX3Jlc2VydmF0aW9uKTsNCisgICAgICAg ICAgIGlmICggdW5saWtlbHkoX19nZXRfdXNlcihtcGZuLCAmZXh0ZW50X2xpc3RbaV0pICE9IDAp ICkNCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7DQorICAgICAgICB9DQogDQogICAgICAgICBm b3IgKCBqID0gMDsgaiA8ICgxIDw8IGV4dGVudF9vcmRlcik7IGorKyApDQogICAgICAgICB7DQpA QCAtMTAwLDYgKzEwNiw3IEBADQogICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIA0KICAgICAg ICAgICAgIHBhZ2UgPSAmZnJhbWVfdGFibGVbbXBmbiArIGpdOw0KKw0KICAgICAgICAgICAgIGlm ICggdW5saWtlbHkoIWdldF9wYWdlKHBhZ2UsIGQpKSApDQogICAgICAgICAgICAgew0KICAgICAg ICAgICAgICAgICBEUFJJTlRLKCJCYWQgcGFnZSBmcmVlIGZvciBkb21haW4gJXVcbiIsIGQtPmRv bWFpbl9pZCk7DQpkaWZmIC1OcnUgYS94ZW4vY29tbW9uL2dyYW50X3RhYmxlLmMgYi94ZW4vY29t bW9uL2dyYW50X3RhYmxlLmMNCi0tLSBhL3hlbi9jb21tb24vZ3JhbnRfdGFibGUuYwkyMDA1LTA1 LTIwIDExOjQwOjEyICswODowMA0KKysrIGIveGVuL2NvbW1vbi9ncmFudF90YWJsZS5jCTIwMDUt MDUtMjAgMTE6NDA6MTIgKzA4OjAwDQpAQCAtMTU5LDcgKzE1OSwxMCBAQA0KIA0KICAgICAgICAg Lyogcm1iKCk7ICovIC8qIG5vdCBvbiB4ODYgKi8NCiANCi0gICAgICAgIGZyYW1lID0gX19ncGZu X3RvX21mbl9mb3JlaWduKGdyYW50aW5nX2QsIHNoYS0+ZnJhbWUpOw0KKyAgICAgICAgaWYoIXNo YWRvd19tb2RlX3RyYW5zbGF0ZShncmFudGluZ19kKSkNCisgICAgICAgICAgICBmcmFtZSA9IF9f Z3Bmbl90b19tZm5fZm9yZWlnbihncmFudGluZ19kLCBzaGEtPmZyYW1lKTsNCisgICAgICAgIGVs c2UNCisgICAgICAgICAgICBmcmFtZSA9IHNoYS0+ZnJhbWU7DQogDQogICAgICAgICBpZiAoIHVu bGlrZWx5KCFwZm5fdmFsaWQoZnJhbWUpKSB8fA0KICAgICAgICAgICAgICB1bmxpa2VseSghKChk ZXZfaHN0X3JvX2ZsYWdzICYgR05UTUFQX3JlYWRvbmx5KSA/DQpAQCAtNjY4LDcgKzY3MSw4IEBA DQogICAgIHsNCiAgICAgICAgIERQUklOVEsoIlhlbiBvbmx5IHN1cHBvcnRzIHVwIHRvICVkIGdy YW50LXRhYmxlIGZyYW1lcyBwZXIgZG9tYWluLlxuIiwNCiAgICAgICAgICAgICAgICAgTlJfR1JB TlRfRlJBTUVTKTsNCi0gICAgICAgICh2b2lkKXB1dF91c2VyKEdOVFNUX2dlbmVyYWxfZXJyb3Is ICZ1b3AtPnN0YXR1cyk7DQorICAgICAgICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9y Ow0KKyAgICAgICAgKHZvaWQpY29weV90b191c2VyKHVvcCwgJm9wLCBzaXplb2Yob3ApKTsNCiAg ICAgICAgIHJldHVybiAwOw0KICAgICB9DQogDQpAQCAtNjc4LDI1ICs2ODIsNDQgQEANCiAgICAg fQ0KICAgICBlbHNlIGlmICggdW5saWtlbHkoIUlTX1BSSVYoY3VycmVudC0+ZG9tYWluKSkgKQ0K ICAgICB7DQotICAgICAgICAodm9pZClwdXRfdXNlcihHTlRTVF9wZXJtaXNzaW9uX2RlbmllZCwg JnVvcC0+c3RhdHVzKTsNCisgICAgICAgIG9wLnN0YXR1cyA9IEdOVFNUX3Blcm1pc3Npb25fZGVu aWVkOw0KKyAgICAgICAgKHZvaWQpY29weV90b191c2VyKHVvcCwgJm9wLCBzaXplb2Yob3ApKTsN CiAgICAgICAgIHJldHVybiAwOw0KICAgICB9DQogDQogICAgIGlmICggdW5saWtlbHkoKGQgPSBm aW5kX2RvbWFpbl9ieV9pZChvcC5kb20pKSA9PSBOVUxMKSApDQogICAgIHsNCiAgICAgICAgIERQ UklOVEsoIkJhZCBkb21pZCAlZC5cbiIsIG9wLmRvbSk7DQotICAgICAgICAodm9pZClwdXRfdXNl cihHTlRTVF9iYWRfZG9tYWluLCAmdW9wLT5zdGF0dXMpOw0KKyAgICAgICAgb3Auc3RhdHVzID0g R05UU1RfYmFkX2RvbWFpbjsNCisgICAgICAgICh2b2lkKWNvcHlfdG9fdXNlcih1b3AsICZvcCwg c2l6ZW9mKG9wKSk7DQogICAgICAgICByZXR1cm4gMDsNCiAgICAgfQ0KIA0KICAgICBpZiAoIG9w Lm5yX2ZyYW1lcyA8PSBOUl9HUkFOVF9GUkFNRVMgKQ0KICAgICB7DQogICAgICAgICBBU1NFUlQo ZC0+Z3JhbnRfdGFibGUgIT0gTlVMTCk7DQotICAgICAgICAodm9pZClwdXRfdXNlcihHTlRTVF9v a2F5LCAmdW9wLT5zdGF0dXMpOw0KLSAgICAgICAgZm9yICggaSA9IDA7IGkgPCBvcC5ucl9mcmFt ZXM7IGkrKyApDQorICAgICAgICBpZighVk1YX0RPTUFJTihjdXJyZW50KSkNCisgICAgICAgIHsN CisgICAgICAgICAgICAodm9pZClwdXRfdXNlcihHTlRTVF9va2F5LCAmdW9wLT5zdGF0dXMpOw0K KyAgICAgICAgICAgIGZvciAoIGkgPSAwOyBpIDwgb3AubnJfZnJhbWVzOyBpKysgKQ0KICAgICAg ICAgICAgICh2b2lkKXB1dF91c2VyKA0KICAgICAgICAgICAgICAgICAodmlydF90b19waHlzKGQt PmdyYW50X3RhYmxlLT5zaGFyZWQpID4+IFBBR0VfU0hJRlQpICsgaSwNCiAgICAgICAgICAgICAg ICAgJnVvcC0+ZnJhbWVfbGlzdFtpXSk7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAg ICAgICB7DQorICAgICAgICAgICAgb3Auc3RhdHVzID0gR05UU1Rfb2theTsNCisgICAgICAgICAg ICBmb3IgKCBpID0gMDsgaSA8IG9wLm5yX2ZyYW1lczsgaSsrICkNCisgICAgICAgICAgICB7DQor ICAgICAgICAgICAgICAgaWYobWFwX3NoYXJlcGFnZV90b19ndWVzdCgodW5zaWduZWQgbG9uZylv cC5mcmFtZV9saXN0ICsgaSAqIFBBR0VfU0laRSwgKHVuc2lnbmVkIGxvbmcpZC0+Z3JhbnRfdGFi bGUtPnNoYXJlZCArIGkgKiBQQUdFX1NJWkUpKQ0KKyAgICAgICAgICAgICAgIHsNCisgICAgIA0K KyAgICAgICAgICAgICAgICAgICBvcC5zdGF0dXMgPSBHTlRTVF9nZW5lcmFsX2Vycm9yOw0KKyAg ICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAg fQ0KKyAgICAgICAgICAgICh2b2lkKWNvcHlfdG9fdXNlcih1b3AsICZvcCwgc2l6ZW9mKG9wKSk7 DQorICAgICAgICB9DQogICAgIH0NCiANCiAgICAgcHV0X2RvbWFpbihkKTsNCmRpZmYgLU5ydSBh L3hlbi9jb21tb24vbXVsdGljYWxsLmMgYi94ZW4vY29tbW9uL211bHRpY2FsbC5jDQotLS0gYS94 ZW4vY29tbW9uL211bHRpY2FsbC5jCTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQorKysgYi94 ZW4vY29tbW9uL211bHRpY2FsbC5jCTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQpAQCAtMTcs NiArMTcsNyBAQA0KIHsNCiAgICAgc3RydWN0IG1jX3N0YXRlICptY3MgPSAmbWNfc3RhdGVbc21w X3Byb2Nlc3Nvcl9pZCgpXTsNCiAgICAgdW5zaWduZWQgaW50ICAgICBpOw0KKyAgICBpbnQgcmM7 DQogDQogICAgIGlmICggdW5saWtlbHkoX190ZXN0X2FuZF9zZXRfYml0KF9NQ1NGX2luX211bHRp Y2FsbCwgJm1jcy0+ZmxhZ3MpKSApDQogICAgIHsNCkBAIC0yNCw3ICsyNSw4IEBADQogICAgICAg ICByZXR1cm4gLUVJTlZBTDsNCiAgICAgfQ0KIA0KLSAgICBpZiAoIHVubGlrZWx5KCFhcnJheV9h Y2Nlc3Nfb2soY2FsbF9saXN0LCBucl9jYWxscywgc2l6ZW9mKCpjYWxsX2xpc3QpKSkgKQ0KKyAg ICBpZiAobGlrZWx5KCFWTVhfRE9NQUlOKGN1cnJlbnQpKSAmJiANCisgICAgICAgIHVubGlrZWx5 KCFhcnJheV9hY2Nlc3Nfb2soY2FsbF9saXN0LCBucl9jYWxscywgc2l6ZW9mKCpjYWxsX2xpc3Qp KSkgKQ0KICAgICB7DQogICAgICAgICBEUFJJTlRLKCJCYWQgbWVtb3J5IHJhbmdlICVwIGZvciAl dSoldSBieXRlcy5cbiIsDQogICAgICAgICAgICAgICAgIGNhbGxfbGlzdCwgbnJfY2FsbHMsICh1 bnNpZ25lZCBpbnQpc2l6ZW9mKCpjYWxsX2xpc3QpKTsNCkBAIC0zMywyMyArMzUsNDAgQEANCiAN CiAgICAgZm9yICggaSA9IDA7IGkgPCBucl9jYWxsczsgaSsrICkNCiAgICAgew0KLSAgICAgICAg aWYgKCB1bmxpa2VseShfX2NvcHlfZnJvbV91c2VyKCZtY3MtPmNhbGwsICZjYWxsX2xpc3RbaV0s IA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqY2FsbF9s aXN0KSkpICkNCisgICAgICAgIGlmKFZNWF9ET01BSU4oY3VycmVudCkpIA0KICAgICAgICAgew0K LSAgICAgICAgICAgIERQUklOVEsoIkVycm9yIGNvcHlpbmcgZnJvbSB1c2VyIHJhbmdlICVwIGZv ciAldSBieXRlcy5cbiIsDQotICAgICAgICAgICAgICAgICAgICAmY2FsbF9saXN0W2ldLCAodW5z aWduZWQgaW50KXNpemVvZigqY2FsbF9saXN0KSk7DQorICAgICAgICAgICAgcmMgPSBjb3B5X2Zy b21fZ3Vlc3QoJm1jcy0+Y2FsbCwgJmNhbGxfbGlzdFtpXSwgDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpjYWxsX2xpc3QpKTsgDQorICAgICAgICB9DQor ICAgICAgICBlbHNlDQorICAgICAgICAgICAgcmMgPSBfX2NvcHlfZnJvbV91c2VyKCZtY3MtPmNh bGwsICZjYWxsX2xpc3RbaV0sIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHNpemVvZigqY2FsbF9saXN0KSk7DQorICAgICAgICBpZiAoIHVubGlrZWx5KHJjKSApDQor ICAgICAgICB7DQorICAgICAgICAgICAgRFBSSU5USygiRXJyb3IgY29weWluZyBmcm9tIHVzZXIg cmFuZ2UgJXAgZm9yICV1IGJ5dGVzLiVkLCAlZFxuIiwNCisgICAgICAgICAgICAgICAgICAgICZj YWxsX2xpc3RbaV0sIHNpemVvZigqY2FsbF9saXN0KSwgaSwgcmMpOw0KICAgICAgICAgICAgIGdv dG8gZmF1bHQ7DQogICAgICAgICB9DQogDQogICAgICAgICBkb19tdWx0aWNhbGxfY2FsbCgmbWNz LT5jYWxsKTsNCiANCi0gICAgICAgIGlmICggdW5saWtlbHkoX19wdXRfdXNlcihtY3MtPmNhbGwu YXJnc1s1XSwgJmNhbGxfbGlzdFtpXS5hcmdzWzVdKSkgKQ0KKyAgICAgICAgaWYoVk1YX0RPTUFJ TihjdXJyZW50KSkgDQorICAgICAgICB7DQorICAgICAgICAgICAgcmMgPSBjb3B5X3RvX2d1ZXN0 KCZjYWxsX2xpc3RbaV0uYXJnc1s1XSwgJm1jcy0+Y2FsbC5hcmdzWzVdLCANCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1jcy0+Y2FsbC5hcmdzWzVdKSk7DQorICAgICAg ICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgcmMgID0gX19wdXRf dXNlcihtY3MtPmNhbGwuYXJnc1s1XSwgJmNhbGxfbGlzdFtpXS5hcmdzWzVdKTsNCisgICAgICAg IH0NCisNCisgICAgICAgIGlmICggdW5saWtlbHkocmMpICkNCiAgICAgICAgIHsNCiAgICAgICAg ICAgICBEUFJJTlRLKCJFcnJvciB3cml0aW5nIHJlc3VsdCBiYWNrIHRvIG11bHRpY2FsbCBibG9j ay5cbiIpOw0KICAgICAgICAgICAgIGdvdG8gZmF1bHQ7DQogICAgICAgICB9DQogDQotICAgICAg ICBpZiAoIGh5cGVyY2FsbF9wcmVlbXB0X2NoZWNrKCkgKQ0KKyAgICAgICAgaWYgKCBoeXBlcmNh bGxfcHJlZW1wdF9jaGVjaygpICYmICFWTVhfRE9NQUlOKGN1cnJlbnQpKQ0KICAgICAgICAgew0K ICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICogQ29weSB0aGUgc3ViLWNhbGwgY29udGlu dWF0aW9uIGlmIGl0IHdhcyBwcmVlbXB0ZWQuDQpAQCAtNTcsOSArNzYsMTUgQEANCiAgICAgICAg ICAgICAgKi8NCiAgICAgICAgICAgICBpZiAoICF0ZXN0X2JpdChfTUNTRl9jYWxsX3ByZWVtcHRl ZCwgJm1jcy0+ZmxhZ3MpICkNCiAgICAgICAgICAgICAgICAgaSsrOw0KLSAgICAgICAgICAgIGVs c2UNCi0gICAgICAgICAgICAgICAgKHZvaWQpX19jb3B5X3RvX3VzZXIoJmNhbGxfbGlzdFtpXSwg Jm1jcy0+Y2FsbCwNCisgICAgICAgICAgICBlbHNlIA0KKyAgICAgICAgICAgIHsNCisgICAgICAg ICAgICAgICAgaWYoVk1YX0RPTUFJTihjdXJyZW50KSkNCisgICAgICAgICAgICAgICAgICAgICh2 b2lkKWNvcHlfdG9fZ3Vlc3QoJmNhbGxfbGlzdFtpXSwgJm1jcy0+Y2FsbCwNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCpjYWxsX2xpc3QpKTsNCisgICAgICAg ICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICAgICAgICAgICAodm9pZClfX2NvcHlfdG9fdXNl cigmY2FsbF9saXN0W2ldLCAmbWNzLT5jYWxsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaXplb2YoKmNhbGxfbGlzdCkpOw0KKyAgICAgICAgICAgIH0NCiANCiAgICAg ICAgICAgICAvKiBPbmx5IGNyZWF0ZSBhIGNvbnRpbnVhdGlvbiBpZiB0aGVyZSBpcyB3b3JrIGxl ZnQgdG8gYmUgZG9uZS4gKi8NCiAgICAgICAgICAgICBpZiAoIGkgPCBucl9jYWxscyApDQpkaWZm IC1OcnUgYS94ZW4vaW5jbHVkZS9hc20teDg2L3ZteF92bWNzLmggYi94ZW4vaW5jbHVkZS9hc20t eDg2L3ZteF92bWNzLmgNCi0tLSBhL3hlbi9pbmNsdWRlL2FzbS14ODYvdm14X3ZtY3MuaAkyMDA1 LTA1LTIwIDExOjQwOjEyICswODowMA0KKysrIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni92bXhfdm1j cy5oCTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQpAQCAtMTg1LDYgKzE4NSw4IEBADQogI2Rl ZmluZSBEQkdfTEVWRUxfMyAgICAgKDEgPDwgMykNCiAjZGVmaW5lIERCR19MRVZFTF9JTyAgICAo MSA8PCA0KQ0KICNkZWZpbmUgREJHX0xFVkVMX1ZNTVUgICgxIDw8IDUpDQorI2RlZmluZSBEQkdf TEVWRUxfVkJEICAoMSA8PCA2KQ0KKyNkZWZpbmUgREJHX0xFVkVMX1ZOSUYgICgxIDw8IDcpDQog DQogZXh0ZXJuIHVuc2lnbmVkIGludCBvcHRfdm14X2RlYnVnX2xldmVsOw0KICNkZWZpbmUgVk1Y X0RCR19MT0cobGV2ZWwsIF9mLCBfYS4uLikgICAgICAgICAgIFwNCmRpZmYgLU5ydSBhL3hlbi9p bmNsdWRlL2FzbS14ODYveDg2XzMyL3VhY2Nlc3MuaCBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2 XzMyL3VhY2Nlc3MuaA0KLS0tIGEveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZfMzIvdWFjY2Vzcy5o CTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQorKysgYi94ZW4vaW5jbHVkZS9hc20teDg2L3g4 Nl8zMi91YWNjZXNzLmgJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCkBAIC0zMzIsNiArMzMy LDExIEBADQogdW5zaWduZWQgbG9uZyBjb3B5X2Zyb21fdXNlcih2b2lkICp0bywNCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBs b25nIG4pOw0KIA0KK3Vuc2lnbmVkIGxvbmcgY29weV90b19ndWVzdCh2b2lkIF9fdXNlciAqdG8s IA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpmcm9tLCB1bnNpZ25l ZCBsb25nIG4pOw0KK3Vuc2lnbmVkIGxvbmcgY29weV9mcm9tX2d1ZXN0KHZvaWQgKnRvLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNp Z25lZCBsb25nIG4pOw0KKw0KIHVuc2lnbmVkIGxvbmcgY2xlYXJfdXNlcih2b2lkIF9fdXNlciAq bWVtLCB1bnNpZ25lZCBsb25nIGxlbik7DQogdW5zaWduZWQgbG9uZyBfX2NsZWFyX3VzZXIodm9p ZCBfX3VzZXIgKm1lbSwgdW5zaWduZWQgbG9uZyBsZW4pOw0KIA0KZGlmZiAtTnJ1IGEveGVuL2lu Y2x1ZGUvYXNtLXg4Ni94ODZfNjQvdWFjY2Vzcy5oIGIveGVuL2luY2x1ZGUvYXNtLXg4Ni94ODZf NjQvdWFjY2Vzcy5oDQotLS0gYS94ZW4vaW5jbHVkZS9hc20teDg2L3g4Nl82NC91YWNjZXNzLmgJ MjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCisrKyBiL3hlbi9pbmNsdWRlL2FzbS14ODYveDg2 XzY0L3VhY2Nlc3MuaAkyMDA1LTA1LTIwIDExOjQwOjEyICswODowMA0KQEAgLTIyNCw2ICsyMjQs MTEgQEANCiB1bnNpZ25lZCBsb25nIGNvcHlfdG9fdXNlcih2b2lkIF9fdXNlciAqdG8sIGNvbnN0 IHZvaWQgKmZyb20sIHVuc2lnbmVkIGxlbik7IA0KIHVuc2lnbmVkIGxvbmcgY29weV9mcm9tX3Vz ZXIodm9pZCAqdG8sIGNvbnN0IHZvaWQgX191c2VyICpmcm9tLCB1bnNpZ25lZCBsZW4pOyANCiAN Cit1bnNpZ25lZCBsb25nIGNvcHlfdG9fZ3Vlc3Qodm9pZCBfX3VzZXIgKnRvLCANCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZnJvbSwgdW5zaWduZWQgbG9uZyBuKTsN Cit1bnNpZ25lZCBsb25nIGNvcHlfZnJvbV9ndWVzdCh2b2lkICp0bywNCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb25zdCB2b2lkIF9fdXNlciAqZnJvbSwgdW5zaWduZWQgbG9uZyBu KTsNCisNCiBzdGF0aWMgYWx3YXlzX2lubGluZSBpbnQgX19jb3B5X2Zyb21fdXNlcih2b2lkICpk c3QsIGNvbnN0IHZvaWQgX191c2VyICpzcmMsIHVuc2lnbmVkIHNpemUpIA0KIHsgDQogICAgIGlu dCByZXQgPSAwOw0KZGlmZiAtTnJ1IGEveGVuL2luY2x1ZGUvcHVibGljL2FyY2gteDg2XzMyLmgg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC14ODZfMzIuaA0KLS0tIGEveGVuL2luY2x1ZGUvcHVi bGljL2FyY2gteDg2XzMyLmgJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCisrKyBiL3hlbi9p bmNsdWRlL3B1YmxpYy9hcmNoLXg4Nl8zMi5oCTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQpA QCAtNTcsNyArNTcsMTIgQEANCiAjZGVmaW5lIEZMQVRfVVNFUl9TUyAgICBGTEFUX1JJTkczX1NT DQogDQogLyogQW5kIHRoZSB0cmFwIHZlY3RvciBpcy4uLiAqLw0KKyNpZiBkZWZpbmVkIChDT05G SUdfVk1YX0dVRVNUKQ0KKy8qZm9yIFZNWCBwYXJhdmlydHVhbGl6ZWQgZHJpdmVyKi8NCisjZGVm aW5lIFRSQVBfSU5TVFIJIi5ieXRlIDB4MGYsMHgwMSwweGMxXG4iDQorI2Vsc2UNCiAjZGVmaW5l IFRSQVBfSU5TVFIgImludCAkMHg4MiINCisjZW5kaWYNCiANCiANCiAvKg0KZGlmZiAtTnJ1IGEv eGVuL2luY2x1ZGUvcHVibGljL3hlbi5oIGIveGVuL2luY2x1ZGUvcHVibGljL3hlbi5oDQotLS0g YS94ZW4vaW5jbHVkZS9wdWJsaWMveGVuLmgJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCisr KyBiL3hlbi9pbmNsdWRlL3B1YmxpYy94ZW4uaAkyMDA1LTA1LTIwIDExOjQwOjEyICswODowMA0K QEAgLTU4LDYgKzU4LDcgQEANCiAjZGVmaW5lIF9fSFlQRVJWSVNPUl9ib290X3ZjcHUgICAgICAg ICAgICAyNA0KICNkZWZpbmUgX19IWVBFUlZJU09SX3NldF9zZWdtZW50X2Jhc2UgICAgIDI1IC8q IHg4Ni82NCBvbmx5ICovDQogI2RlZmluZSBfX0hZUEVSVklTT1JfbW11ZXh0X29wICAgICAgICAg ICAgMjYNCisjZGVmaW5lIF9fSFlQRVJWSVNPUl92aXJ0dWFsX2RldmljZV9vcCAgICAyOAkNCiAN CiAvKg0KICAqIE1VTFRJQ0FMTFMNCkBAIC0yNDQsNiArMjQ1LDE2IEBADQogI2RlZmluZSBWTUFT U1RfVFlQRV93cml0YWJsZV9wYWdldGFibGVzICAyDQogI2RlZmluZSBNQVhfVk1BU1NUX1RZUEUg Mg0KIA0KKy8qDQorICogQ29tbWFuZHMgdG8gSFlQRVJWSVNPUl92aXJ0dWFsX2RldmljZV9vcCgp Lg0KKyAqLw0KKw0KKyNkZWZpbmUgU0VUX1NIQVJFSU5GT19NQVAgICAxDQorI2RlZmluZSBBRERS X01BQ0hUT1BIWVMgICAgIDINCisjZGVmaW5lIEFERFJfUEhZU1RPTUFDSCAgICAgMw0KKyNkZWZp bmUgU0VUX1BIWVNUT01BQ0ggICAgIDQNCisjZGVmaW5lIFNFVF9DQUxMQkFDS19JUlEgICAgNQ0K Kw0KICNpZm5kZWYgX19BU1NFTUJMWV9fDQogDQogdHlwZWRlZiB1MTYgZG9taWRfdDsNCkBAIC0z MzIsNyArMzQzLDggQEANCiAgICAgICovDQogICAgIHU4IGV2dGNobl91cGNhbGxfcGVuZGluZzsg ICAgICAgICAgIC8qIDAgKi8NCiAgICAgdTggZXZ0Y2huX3VwY2FsbF9tYXNrOyAgICAgICAgICAg ICAgLyogMSAqLw0KLSAgICB1OCBwYWQwLCBwYWQxOw0KKyAgICB1OCBjYWxsYmFja19tYXNrOyAg ICAgICAgICAgICAgICAgICAvKiAyICovIA0KKyAgICB1OCBwYWQxOw0KICAgICB1MzIgZXZ0Y2hu X3BlbmRpbmdfc2VsOyAgICAgICAgICAgICAvKiA0ICovDQogICAgIGFyY2hfdmNwdV9pbmZvX3Qg YXJjaDsgICAgICAgICAgICAgIC8qIDggKi8NCiB9IFBBQ0tFRCB2Y3B1X2luZm9fdDsgICAgICAg ICAgICAgICAgICAgLyogOCArIGFyY2ggKi8NCmRpZmYgLU5ydSBhL3hlbi9pbmNsdWRlL3hlbi9j b25maWcuaCBiL3hlbi9pbmNsdWRlL3hlbi9jb25maWcuaA0KLS0tIGEveGVuL2luY2x1ZGUveGVu L2NvbmZpZy5oCTIwMDUtMDUtMjAgMTE6NDA6MTIgKzA4OjAwDQorKysgYi94ZW4vaW5jbHVkZS94 ZW4vY29uZmlnLmgJMjAwNS0wNS0yMCAxMTo0MDoxMiArMDg6MDANCkBAIC0zNiw2ICszNiwxNCBA QA0KICNkZWZpbmUgRFBSSU5USyhfZiwgX2EuLi4pICgodm9pZCkwKQ0KICNlbmRpZg0KIA0KKyNp ZmRlZiBWRVJCT1NFDQorI2RlZmluZSBWTklGUFJJTlRLKF9hLi4uKSBcDQorICAgICBpZihWTVhf RE9NQUlOKGN1cnJlbnQpKSAgXA0KKyAgICAgICAgcHJpbnRrKF9hKTsNCisjZWxzZQ0KKyNkZWZp bmUgVk5JRlBSSU5USyhfYS4uLikgDQorI2VuZGlmDQorDQogI2lmbmRlZiBfX0FTU0VNQkxZX18N CiAjaW5jbHVkZSA8eGVuL2NvbXBpbGVyLmg+DQogI2VuZGlmDQo= ------_=_NextPart_001_01C55CF1.0162A417-- --------------080109020005040406040305 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------080109020005040406040305--