Received: by 2002:ac0:950c:0:0:0:0:0 with SMTP id f12csp3663296imc; Thu, 14 Mar 2019 02:20:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqyVhaWvHgdPu0c0Oxol3W/GY6NETVDE+9agycG4yd58s38VdRJaBL60plhj/B9Xla/Qxzb+ X-Received: by 2002:a63:94:: with SMTP id 142mr44194983pga.277.1552555210995; Thu, 14 Mar 2019 02:20:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1552555210; cv=none; d=google.com; s=arc-20160816; b=q5KFTQNNIot21CJHgST24XKv8q9jv3lPxRva6W1ncLMNlKkLYGXYOOObruLEmNClJL qaVY5adw4Cfrrh73JUgCC0weyRJ2GBzlQzLFp+XHxvLJ8So5MIWwYkU94Dom0wBJuHTH OXzQJP4VBNiZT3BG7U4UJ15nOBR1xWLMUSyWy/TBJpqeYlxab5/t7Vp7N1+BwQtw0drr btNAQShZiRfB5OKL4zcyx+XzVZ6L3KO4W3wpC9zoTDT+tMv9Yy1/6B26GHGpiV+heOX9 ZLo4hpE0YkCJ6vgei7W43/iWGSNgL+J320QKsQz6/zUW0tfhyGiuQYGHYQKlTRTy3QBP rYew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=f+uLi/aaFLXucIxMB4lM5DLPcFk4X7r10h0i9EvN3XI=; b=uMgjg5ThHfSYgxOKrP5C9hQkwXMdh/zcWXgwsTNGDjVge7Dn62Oj09pcZdIIdMDHV7 /kBuku9SaDjeG8QcMErBIGOnGUccnplWUHD5wbN7ZE2zABnHPbQeMcf4LI+FTpyFMgUm dvPmtIE2OOdeoH6KcuhYxkwUYNnppWGhr0EYGAylPvSbpVQWqo2Dg1a5Axu1ce6/gv3V 0HLqIuOmbZQlin14ust5OA5PYunHniBUTA4FNyiuqzdwBN5Tc0HaUObzxgg2/DSmH9tH Nm+mqSCkWZFxsqwEAhC+WqhuArqexKxt/afKxEum7HU2obAHCxuMaW6SAu92lmuzEcg8 /RVA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=jrlQOP4N; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f11si6415171plm.213.2019.03.14.02.19.56; Thu, 14 Mar 2019 02:20:10 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector1 header.b=jrlQOP4N; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727100AbfCNJTC (ORCPT + 99 others); Thu, 14 Mar 2019 05:19:02 -0400 Received: from mail-eopbgr70052.outbound.protection.outlook.com ([40.107.7.52]:9933 "EHLO EUR04-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726677AbfCNJTB (ORCPT ); Thu, 14 Mar 2019 05:19:01 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=f+uLi/aaFLXucIxMB4lM5DLPcFk4X7r10h0i9EvN3XI=; b=jrlQOP4NJ2Zp3WTdKQg3r/wt9lP8mEUtZ0MmfyWu9ZsdLIXhSIKXjalwwFNACDafPmDn3KIxT27QYVdxoCQ+VMG0lTxKKuAluFW6/WE5csgkSHsgkySYmuZ1sYQg3+P9F7IjBs6mUH2t346x6MfuTVDS0+JvSQ6c1wgmGzQQyQE= Received: from AM0PR0402MB3570.eurprd04.prod.outlook.com (52.133.46.11) by AM0PR0402MB3729.eurprd04.prod.outlook.com (52.133.39.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1709.13; Thu, 14 Mar 2019 09:18:42 +0000 Received: from AM0PR0402MB3570.eurprd04.prod.outlook.com ([fe80::c9e:21a8:3eae:bdeb]) by AM0PR0402MB3570.eurprd04.prod.outlook.com ([fe80::c9e:21a8:3eae:bdeb%3]) with mapi id 15.20.1709.011; Thu, 14 Mar 2019 09:18:42 +0000 From: Richard Zhu To: Andrey Smirnov CC: "bhelgaas@google.com" , "lorenzo.pieralisi@arm.com" , "l.stach@pengutronix.de" , "linux-pci@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" Subject: RE: [RFC 2/2] PCI: imx6: Add support for i.MX8QM/QXP PCIe Thread-Topic: [RFC 2/2] PCI: imx6: Add support for i.MX8QM/QXP PCIe Thread-Index: AQHU2X1O5tXI+QNdtk+AGc08yLg3pKYKAU2AgACYQfA= Date: Thu, 14 Mar 2019 09:18:42 +0000 Message-ID: References: <1552467452-538-1-git-send-email-hongxing.zhu@nxp.com> <1552467452-538-2-git-send-email-hongxing.zhu@nxp.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [119.31.174.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2f2ff8d0-621c-440b-2402-08d6a85e0d92 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020);SRVR:AM0PR0402MB3729; x-ms-traffictypediagnostic: AM0PR0402MB3729: x-microsoft-antispam-prvs: x-forefront-prvs: 09760A0505 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(346002)(376002)(366004)(136003)(396003)(13464003)(199004)(189003)(316002)(71190400001)(11346002)(4326008)(102836004)(8936002)(476003)(71200400001)(2906002)(97736004)(54906003)(486006)(446003)(76176011)(66066001)(6116002)(3846002)(53546011)(256004)(14444005)(5024004)(52536014)(86362001)(305945005)(7736002)(74316002)(25786009)(6506007)(53936002)(6916009)(105586002)(99286004)(8676002)(33656002)(6246003)(5660300002)(186003)(478600001)(53946003)(81166006)(14454004)(9686003)(81156014)(55016002)(6346003)(7696005)(30864003)(26005)(106356001)(68736007)(229853002)(6436002)(559001)(569006);DIR:OUT;SFP:1101;SCL:1;SRVR:AM0PR0402MB3729;H:AM0PR0402MB3570.eurprd04.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) authentication-results: spf=none (sender IP is ) smtp.mailfrom=hongxing.zhu@nxp.com; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ybw0i5h93mtp+v8qfsO3RFWxrp3TfscB+ReKteSwzFWcikyTVv34iYBikwBGEwG8t/xBFdJxrIm6nijeY8SB3AOK2oK8/NhEwmn8ItrXnOZLdQrtv7Vg67Y6q4x6dlR4iSCh/bsc5oyBQY7TIMHJm1L4dU0836dy51rpzNF288S70uKvQMkiKMP0aHPY9ZIGyY1x3UYCHoVs+JhOC4+omPjCibvl/kF1ar1Erc9M1MUGCSLFsXdDFEzl13c4gdCSwKEmeDvqlbhVK4PkvoXcaOk5753r3QOGe8yPlos0WpF5LKQhm8JNybk4+RGq5PtKO96MdPMLXLKdnMgbxtDASG5jLCUHauTKkMQ66oSj1m/QqQg7WJyfVWSu5AJJtv+2TowqUYSWiXOIK2RAugEmyUZVEjUeVmmZtqYNrch+08s= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f2ff8d0-621c-440b-2402-08d6a85e0d92 X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Mar 2019 09:18:42.6496 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR0402MB3729 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQW5kcmV5Og0KVGhhbmtzIGEgbG90IGZvciB5b3VyIHJldmlldyBjb21tZW50cy4NCg0KQmVz dCBSZWdhcmRzDQpSaWNoYXJkIFpodQ0KT2ZmaWNlOiA4Ni0yMS0yODkzNzE4OQ0KTW9iaWxlOiA4 Ni0xMzM4NjA1OTc4Ng0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog QW5kcmV5IFNtaXJub3YgW21haWx0bzphbmRyZXcuc21pcm5vdkBnbWFpbC5jb21dDQo+IFNlbnQ6 IDIwMTnlubQz5pyIMTTml6UgNDoyMA0KPiBUbzogUmljaGFyZCBaaHUgPGhvbmd4aW5nLnpodUBu eHAuY29tPg0KPiBDYzogYmhlbGdhYXNAZ29vZ2xlLmNvbTsgbG9yZW56by5waWVyYWxpc2lAYXJt LmNvbTsNCj4gbC5zdGFjaEBwZW5ndXRyb25peC5kZTsgbGludXgtcGNpQHZnZXIua2VybmVsLm9y ZzsNCj4gbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnOyBsaW51eC1rZXJuZWxA dmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUkZDIDIvMl0gUENJOiBpbXg2OiBBZGQg c3VwcG9ydCBmb3IgaS5NWDhRTS9RWFAgUENJZQ0KPiANCj4gT24gV2VkLCBNYXIgMTMsIDIwMTkg YXQgMjoxNSBBTSBSaWNoYXJkIFpodSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+IHdyb3RlOg0K PiA+DQo+ID4gQWRkIGNvZGVzIG5lZWRlZCB0byBzdXBwb3J0IGkuTVg4UU0vUVhQIFBDSWUuDQo+ ID4gLSBIU0lPKEhpZ2ggU3BlZWQgSU8pIHN1YnN5c3RlbSBpcyBuZXcgZGVmaW5lZCBvbiBpLk1Y OFFNL1FYUC4NCj4gPiAgIFRoZSBQQ0llIGFuZCBTQVRBIG1vZHVsZXMgYXJlIGNvbnRhaW5lZCBp biB0aGUgSFNJTyBzdWJzeXN0ZW0uIFRoZXJlDQo+ID4gICBhcmUgdHdvIFBDSWUsIG9uZSBTQVRB IGNvbnRyb2xsZXJzIGFuZCB0aHJlZSBtaXhlZCBsYW5lIFBIWXMgb24NCj4gPiAgIGkuTVg4UU0u IFRoZXJlIGFyZSB0aHJlZSB1c2UgY2FzZXMgb2YgdGhlIEhTSU8gc3Vic3lzdGVtIG9uDQo+IGku TVg4UU0uDQo+ID4gICAxLiBQQ0llYSAyIGxhbmVzIGFuZCBvbmUgU0FUQSBBSENJIHBvcnQuDQo+ ID4gICAyLiBQQ0llYSAxIGxhbmUsIFBDSWViIDEgbGFuZSBhbmQgb25lIFNBVEEgQUhDSSBwb3J0 Lg0KPiA+ICAgMy4gUENJZWEgMiBsYW5lcywgUENJZWIgMSBsYW5lLg0KPiA+ICAgaS5NWDhRWFAg b25seSBoYXMgUENJZWIgY29udHJvbGxlciBhbmQgb25lIGxhbmUgUEhZLg0KPiA+IC0gVGhlIEhT SU8gYWRkcmVzcyBtYXAgYXMgdmlld2VkIGZyb20gc3lzdGVtIGxldmVsIGlzIGFzIHNob3duIGJl bG93Lg0KPiA+ICAgYWRkcmVzcyBbMzE6MjRdICAgIExvY2FsIGFkZHJlc3MgICAgVGFyZ2V0ICAg IEFkZHJlc3MgU2l6ZQ0KPiA+ICAgNUYgICAgICAgICAgICAgICAgIDAgICAgICAgICAgICAgICAg SFNJTyAgICAgIDE2TUINCj4gPiAgIDYwLTZGICAgICAgICAgICAgICA0MC00RiAgICAgICAgICAg IEhTSU8gICAgICAyNTZNQg0KPiA+ICAgNzAtN0YgICAgICAgICAgICAgIDgwLThGICAgICAgICAg ICAgSFNJTyAgICAgIDI1Nk1CDQo+ID4gICBTbywgdGhlIGNwdV9hZGRyX2ZpeHVwIGlzIHJlcXVp cmVkIHRvIGVuYWJsZSBpLk1YOFFNL1FYUCBQQ0llLg0KPiA+IC0gQm90aCBleHRlcm5hbCBPU0Mg YW5kIGludGVybmFsIFBMTCBjYW4gYmUgdXNlZCBhcyBQQ0llIHJlZmVyZW5jZQ0KPiA+ICAgY2xv Y2suDQo+ID4gLSBjbG9jayByZXF1ZXN0IEdQSU8gZm9yIGNvbnRyb2xsaW5nIHRoZSBQQ0kgcmVm ZXJlbmNlIGNsb2NrIHJlcXVlc3QNCj4gPiAgIHNpZ25hbC4gQW5kIHNob3VsZCBiZSBjb25maWd1 cmUgT0Qgd2hlbiBMMVNTIG1heWJlIGVuYWJsZWQgbGF0ZXIuDQo+ID4gLSBPbmUgbW9yZSBwb3dl ciBkb21haW4gSFNJT19HUElPIGFuZCBjbG9jayBQQ0lFX1BFUiBhcmUgcmVxdWlyZWQgYnkNCj4g PiAgIGkuTVg4UU0vUVhQIFBDSWUuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFpo dSA8aG9uZ3hpbmcuemh1QG54cC5jb20+DQo+ID4gLS0tDQo+ID4gIGRyaXZlcnMvcGNpL2NvbnRy b2xsZXIvZHdjL3BjaS1pbXg2LmMgfCAzOTINCj4gPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAzODcgaW5zZXJ0aW9ucygrKSwgNSBkZWxl dGlvbnMoLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3 Yy9wY2ktaW14Ni5jDQo+ID4gYi9kcml2ZXJzL3BjaS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5j DQo+ID4gaW5kZXggYWFhOTQ4OS4uYWFjZWZiNiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3Bj aS9jb250cm9sbGVyL2R3Yy9wY2ktaW14Ni5jDQo+ID4gKysrIGIvZHJpdmVycy9wY2kvY29udHJv bGxlci9kd2MvcGNpLWlteDYuYw0KPiA+IEBAIC0zOSw2ICszOSw3IEBADQo+ID4gICNkZWZpbmUg SU1YOE1RX0dQUl9QQ0lFX0NMS19SRVFfT1ZFUlJJREUgICAgICAgQklUKDExKQ0KPiA+ICAjZGVm aW5lIElNWDhNUV9HUFIxMl9QQ0lFMl9DVFJMX0RFVklDRV9UWVBFICAgIEdFTk1BU0soMTEsDQo+ IDgpDQo+ID4gICNkZWZpbmUgSU1YOE1RX1BDSUUyX0JBU0VfQUREUiAgICAgICAgICAgICAgICAg MHgzM2MwMDAwMA0KPiA+ICsjZGVmaW5lIElNWDhfSFNJT19QQ0lFQl9CQVNFX0FERFIgICAgICAg ICAgICAgIDB4NWYwMTAwMDANCj4gPg0KPiA+ICAjZGVmaW5lIHRvX2lteDZfcGNpZSh4KSAgICAg ICAgZGV2X2dldF9kcnZkYXRhKCh4KS0+ZGV2KQ0KPiA+DQo+ID4gQEAgLTQ4LDEwICs0OSwxMyBA QCBlbnVtIGlteDZfcGNpZV92YXJpYW50cyB7DQo+ID4gICAgICAgICBJTVg2UVAsDQo+ID4gICAg ICAgICBJTVg3RCwNCj4gPiAgICAgICAgIElNWDhNUSwNCj4gPiArICAgICAgIElNWDhRTSwNCj4g PiArICAgICAgIElNWDhRWFAsDQo+ID4gIH07DQo+ID4NCj4gPiAgI2RlZmluZSBJTVg2X1BDSUVf RkxBR19JTVg2X1BIWSAgICAgICAgICAgICAgICAgICAgICAgIEJJVCgwKQ0KPiA+ICAjZGVmaW5l IElNWDZfUENJRV9GTEFHX0lNWDZfU1BFRURfQ0hBTkdFICAgICAgIEJJVCgxKQ0KPiA+ICsjZGVm aW5lIElNWDZfUENJRV9GTEFHX0lNWDZfQ1BVX0FERFJfRklYVVAgICAgIEJJVCgyKQ0KPiANCj4g VGhpcyBpcyBhbiBJTVg4USogc3BlY2lmaWMgZmxhZywgc28gaXQgcHJvYmFibHkgc2hvdWxkIGJl IGNhbGxlZCBzb21ldGhpbmcgbGlrZQ0KPiBJTVg2X1BDSUVfRkxBR19JTVg4UXhfQ1BVX0FERF9G SVhVUC4NCltSaWNoYXJkIFpodV0gT2theSwgd291bGQgY2hhbmdlIGl0IGxhdGVyLg0KPiANCj4g Pg0KPiA+ICBzdHJ1Y3QgaW14Nl9wY2llX2RydmRhdGEgew0KPiA+ICAgICAgICAgZW51bSBpbXg2 X3BjaWVfdmFyaWFudHMgdmFyaWFudDsgQEAgLTYwLDEwICs2NCwxMiBAQCBzdHJ1Y3QNCj4gPiBp bXg2X3BjaWVfZHJ2ZGF0YSB7DQo+ID4NCj4gPiAgc3RydWN0IGlteDZfcGNpZSB7DQo+ID4gICAg ICAgICBzdHJ1Y3QgZHdfcGNpZSAgICAgICAgICAqcGNpOw0KPiA+ICsgICAgICAgaW50ICAgICAg ICAgICAgICAgICAgICAgY2xrcmVxX2dwaW87DQo+IA0KPiBJcyB0aGlzIHJlYWxseSBuZWNlc3Nh cnk/IE9uIGkuTVg4TVEgdmVuZG9yIHRyZWUgZm9yIHNvbWUgdW5rbm93biByZWFzb24NCj4gd291 bGQgcmVjb25maWd1cmUgYSBkZWRpY2F0ZWQgQ0xLUkVRX0Igc2lnbmFsIGFzIGEgR1BJTyBhbmQg dGhlbiB1c2UgaXQgYXMNCj4gQ0xLUkVRIHNpZ25hbCB0aGF0IHdheSBpbnN0ZWFkIG9mIGNvbnRy b2xsaW5nIGl0IHZpYSBkZWRpY2F0ZWQgYml0cyBpbiByZWdpc3Rlcg0KPiBmaWxlLCBzbyBJIGFt IHdvbmRlcmluZyBpZiB0aGF0IGlzIHRoZSBjYXNlIHdpdGggUU0gYW5kIFFYUC4NCltSaWNoYXJk IFpodV0gVGhlcmUgaXMgYSBzYW1lIG1lY2hhbmlzbSBvZiB0aGUgQ0xLUkVRIG9uIGlNWDhRTS9R WFAvTVEuDQpVcCB0byBub3csIHRoaXMgcGluIGlzIGNvbmZpZ3VyZWQgYXMgR1BJTywgYmVjYXVz ZSB0aGF0IHRoaXMgcGluIHdvdWxkIGJlIHB1bGwgdXAgd2hlbiBPRCBpcyBzZXQNCmFuZCB0aGUg RVAgZGV2aWNlIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgTDFTUyBhdCBhbGwuDQpUaHVzLCB0aGUgZXh0 ZXJuYWwgQ0xLIHdvdWxkIGJlIHR1cm5lZCBvZmYgaW4gdGhpcyBzY2VuYXJpby4NClRoaXMgcGlu IHdvdWxkIGJlIHVzZWQgaW4gT0QoT3BlbiBEcmFpbikgbW9kZSB3aGVuIEwxU1MgaXMgZW5hYmxl ZC4NClRoZSBMMVNTIGhhcyBiZWVuIHZlcmlmaWVkIG9uIGlNWDhNUS4gQnV0IEkgZG9uJ3QgaGF2 ZSBhIGR5bmFtaWMgbWV0aG9kIHRvDQp0dXJuIHRoZSBMMVNTIGZlYXR1cmUgb24gYXQgUkMgc2lk ZSB5ZXQgd2hlbiB0aGUgTDFTUyBpcyBzdXBwb3J0ZWQgYnkgRVAuDQpDb25maWd1cmUgQ0xLX1JF USBhcyBHUElPIGhlcmUgY3VycmVudGx5LCBhbmQgaG9wZSB0byBmaWd1cmUgb3V0IG9uZSBzb2x1 dGlvbiBpbiBmdXR1cmUuDQoNCj4gDQo+ID4gICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAg ICByZXNldF9ncGlvOw0KPiA+ICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgZ3Bpb19h Y3RpdmVfaGlnaDsNCj4gPiAgICAgICAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICpwY2llX2J1 czsNCj4gPiAgICAgICAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICpwY2llX3BoeTsNCj4gPiAr ICAgICAgIHN0cnVjdCBjbGsgICAgICAgICAgICAgICpwY2llX3BlcjsNCj4gPiAgICAgICAgIHN0 cnVjdCBjbGsgICAgICAgICAgICAgICpwY2llX2luYm91bmRfYXhpOw0KPiA+ICAgICAgICAgc3Ry dWN0IGNsayAgICAgICAgICAgICAgKnBjaWU7DQo+ID4gICAgICAgICBzdHJ1Y3QgY2xrICAgICAg ICAgICAgICAqcGNpZV9hdXg7DQo+ID4gQEAgLTc3LDYgKzgzLDkgQEAgc3RydWN0IGlteDZfcGNp ZSB7DQo+ID4gICAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICB0eF9kZWVtcGhfZ2VuMl82 ZGI7DQo+ID4gICAgICAgICB1MzIgICAgICAgICAgICAgICAgICAgICB0eF9zd2luZ19mdWxsOw0K PiA+ICAgICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgdHhfc3dpbmdfbG93Ow0KPiA+ICsg ICAgICAgdTMyICAgICAgICAgICAgICAgICAgICAgaHNpb19jZmc7DQo+ID4gKyAgICAgICB1MzIg ICAgICAgICAgICAgICAgICAgICBleHRfb3NjOw0KPiA+ICsgICAgICAgdTMyICAgICAgICAgICAg ICAgICAgICAgbG9jYWxfYWRkcjsNCj4gPiAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAg IGxpbmtfZ2VuOw0KPiA+ICAgICAgICAgc3RydWN0IHJlZ3VsYXRvciAgICAgICAgKnZwY2llOw0K PiA+ICAgICAgICAgdm9pZCBfX2lvbWVtICAgICAgICAgICAgKnBoeV9iYXNlOw0KPiA+IEBAIC04 NSw2ICs5NCw4IEBAIHN0cnVjdCBpbXg2X3BjaWUgew0KPiA+ICAgICAgICAgc3RydWN0IGRldmlj ZSAgICAgICAgICAgKnBkX3BjaWU7DQo+ID4gICAgICAgICAvKiBwb3dlciBkb21haW4gZm9yIHBj aWUgcGh5ICovDQo+ID4gICAgICAgICBzdHJ1Y3QgZGV2aWNlICAgICAgICAgICAqcGRfcGNpZV9w aHk7DQo+ID4gKyAgICAgICAvKiBwb3dlciBkb21haW4gZm9yIGhzaW8gZ3BpbyB1c2VkIGJ5IHBj aWUgKi8NCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgICAgICAgICAgICpwZF9oc2lvX2dwaW87 DQo+ID4gICAgICAgICBjb25zdCBzdHJ1Y3QgaW14Nl9wY2llX2RydmRhdGEgKmRydmRhdGE7ICB9 Ow0KPiA+DQo+ID4gQEAgLTkyLDYgKzEwMyw3IEBAIHN0cnVjdCBpbXg2X3BjaWUgew0KPiA+ICAj ZGVmaW5lIFBIWV9QTExfTE9DS19XQUlUX01BWF9SRVRSSUVTICAyMDAwDQo+ID4gICNkZWZpbmUg UEhZX1BMTF9MT0NLX1dBSVRfVVNMRUVQX01JTiAgIDUwDQo+ID4gICNkZWZpbmUgUEhZX1BMTF9M T0NLX1dBSVRfVVNMRUVQX01BWCAgIDIwMA0KPiA+ICsjZGVmaW5lIEwyX0VOVFJZX1dBSVRfTUFY X1JFVFJJRVMgICAgICAxMDAwMA0KPiA+DQo+ID4gIC8qIFBDSWUgUm9vdCBDb21wbGV4IHJlZ2lz dGVycyAobWVtb3J5LW1hcHBlZCkgKi8NCj4gPiAgI2RlZmluZSBQQ0lFX1JDX0lNWDZfTVNJX0NB UCAgICAgICAgICAgICAgICAgICAweDUwDQo+ID4gQEAgLTE1Nyw2ICsxNjksNDMgQEAgc3RydWN0 IGlteDZfcGNpZSB7ICAjZGVmaW5lDQo+ID4gUEhZX1JYX09WUkRfSU5fTE9fUlhfREFUQV9FTiAo MSA8PCA1KSAgI2RlZmluZQ0KPiA+IFBIWV9SWF9PVlJEX0lOX0xPX1JYX1BMTF9FTiAoMSA8PCAz KQ0KPiA+DQo+ID4gKy8qIGlNWDggSFNJTyByZWdpc3RlcnMgKi8NCj4gPiArI2RlZmluZSBJTVg4 UU1fQ1NSX1BIWVgyX09GRlNFVA0KPiAweDAwMDAwDQo+ID4gKyNkZWZpbmUgSU1YOFFNX0NTUl9Q SFlYMV9PRkZTRVQNCj4gMHgxMDAwMA0KPiA+ICsjZGVmaW5lIElNWDhRTV9DU1JfUEhZWF9TVFRT MF9PRkZTRVQgICAgICAgICAgIDB4NA0KPiA+ICsjZGVmaW5lIElNWDhRTV9DU1JfUENJRUFfT0ZG U0VUDQo+IDB4MjAwMDANCj4gPiArI2RlZmluZSBJTVg4UU1fQ1NSX1BDSUVCX09GRlNFVA0KPiAw eDMwMDAwDQo+ID4gKyNkZWZpbmUgSU1YOFFNX0NTUl9QQ0lFX0NUUkwxX09GRlNFVCAgICAgICAg ICAgMHg0DQo+ID4gKyNkZWZpbmUgSU1YOFFNX0NTUl9QQ0lFX0NUUkwyX09GRlNFVCAgICAgICAg ICAgMHg4DQo+ID4gKyNkZWZpbmUgSU1YOFFNX0NTUl9QQ0lFX1NUVFMwX09GRlNFVCAgICAgICAg ICAgMHhDDQo+ID4gKyNkZWZpbmUgSU1YOFFNX0NTUl9NSVNDX09GRlNFVCAgICAgICAgICAgICAg ICAgMHg1MDAwMA0KPiA+ICsNCj4gPiArI2RlZmluZSBJTVg4UU1fQ1RSTF9MVFNTTV9FTkFCTEUg ICAgICAgICAgICAgICBCSVQoNCkNCj4gPiArI2RlZmluZSBJTVg4UU1fQ1RSTF9SRUFEWV9FTlRS X0wyMyAgICAgICAgICAgICBCSVQoNSkNCj4gPiArI2RlZmluZSBJTVg4UU1fQ1RSTF9QTV9YTVRf VFVSTk9GRiAgICAgICAgICAgICBCSVQoOSkNCj4gPiArI2RlZmluZSBJTVg4UU1fQ1RSTF9CVVRU T05fUlNUX04gICAgICAgICAgICAgICBCSVQoMjEpDQo+ID4gKyNkZWZpbmUgSU1YOFFNX0NUUkxf UEVSU1RfTiAgICAgICAgICAgICAgICAgICAgQklUKDIyKQ0KPiA+ICsjZGVmaW5lIElNWDhRTV9D VFJMX1BPV0VSX1VQX1JTVF9OICAgICAgICAgICAgIEJJVCgyMykNCj4gPiArDQo+ID4gKyNkZWZp bmUgSU1YOFFNX0NUUkxfU1RUUzBfUE1fTElOS1NUX0lOX0wyICAgICAgQklUKDEzKQ0KPiA+ICsj ZGVmaW5lIElNWDhRTV9DVFJMX1NUVFMwX1BNX1JFUV9DT1JFX1JTVCAgICAgIEJJVCgxOSkNCj4g PiArI2RlZmluZSBJTVg4UU1fU1RUUzBfTEFORTBfVFhfUExMX0xPQ0sgICAgICAgICBCSVQoNCkN Cj4gPiArI2RlZmluZSBJTVg4UU1fU1RUUzBfTEFORTFfVFhfUExMX0xPQ0sgICAgICAgICBCSVQo MTIpDQo+ID4gKw0KPiA+ICsjZGVmaW5lIElNWDhRTV9QQ0lFX1RZUEVfTUFTSyAgICAgICAgICAg ICAgICAgIEdFTk1BU0soMjcsDQo+IDI0KQ0KPiA+ICsNCj4gPiArI2RlZmluZSBJTVg4UU1fUEhZ WDJfQ1RSTDBfQVBCX01BU0sgICAgICAgICAgICBHRU5NQVNLKDEsDQo+IDApDQo+ID4gKyNkZWZp bmUgSU1YOFFNX1BIWV9BUEJfUlNUTl8wICAgICAgICAgICAgICAgICAgQklUKDApDQo+ID4gKyNk ZWZpbmUgSU1YOFFNX1BIWV9BUEJfUlNUTl8xICAgICAgICAgICAgICAgICAgQklUKDEpDQo+ID4g Kw0KPiA+ICsjZGVmaW5lIElNWDhRTV9NSVNDX0lPQl9SWEVOQSAgICAgICAgICAgICAgICAgIEJJ VCgwKQ0KPiA+ICsjZGVmaW5lIElNWDhRTV9NSVNDX0lPQl9UWEVOQSAgICAgICAgICAgICAgICAg IEJJVCgxKQ0KPiA+ICsjZGVmaW5lIElNWDhRTV9DU1JfTUlTQ19JT0JfQV8wX1RYT0UgICAgICAg ICAgIEJJVCgyKQ0KPiA+ICsjZGVmaW5lIElNWDhRTV9DU1JfTUlTQ19JT0JfQV8wX00xTTBfTUFT SyAgICAgIEdFTk1BU0soNCwNCj4gMykNCj4gPiArI2RlZmluZSBJTVg4UU1fQ1NSX01JU0NfSU9C X0FfMF9NMU0wXzIgICAgICAgICBCSVQoNCkNCj4gPiArI2RlZmluZSBJTVg4UU1fTUlTQ19QSFlY MV9FUENTX1NFTCAgICAgICAgICAgICBCSVQoMTIpDQo+ID4gKyNkZWZpbmUgSU1YOFFNX01JU0Nf UENJRV9BQl9TRUxFQ1QgICAgICAgICAgICAgQklUKDEzKQ0KPiA+ICsNCj4gPiAgc3RhdGljIGlu dCBwY2llX3BoeV9wb2xsX2FjayhzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUsIGludA0KPiA+ IGV4cF92YWwpICB7DQo+ID4gICAgICAgICBzdHJ1Y3QgZHdfcGNpZSAqcGNpID0gaW14Nl9wY2ll LT5wY2k7IEBAIC0zNzMsMTQgKzQyMiw2NSBAQA0KPiA+IHN0YXRpYyBpbnQgaW14Nl9wY2llX2F0 dGFjaF9wZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gICAgICAgICAgICAgICAgIHJldHVybiBQ VFJfRVJSKGxpbmspOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ID4gKyAgICAgICBzd2l0Y2ggKGlt eDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgew0KPiA+ICsgICAgICAgY2FzZSBJTVg4UU06DQo+ ID4gKyAgICAgICBjYXNlIElNWDhRWFA6DQo+ID4gKyAgICAgICAgICAgICAgIGlteDZfcGNpZS0+ cGRfaHNpb19ncGlvID0NCj4gZGV2X3BtX2RvbWFpbl9hdHRhY2hfYnlfbmFtZShkZXYsDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHNpb19ncGlvIik7DQo+ID4gKyAgICAg ICAgICAgICAgIGlmIChJU19FUlIoaW14Nl9wY2llLT5wZF9oc2lvX2dwaW8pKQ0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGlteDZfcGNpZS0+cGRfaHNpb19ncGlv KTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGxpbmsgPSBkZXZpY2VfbGlua19hZGQoZGV2 LCBpbXg2X3BjaWUtPnBkX2hzaW9fZ3BpbywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERMX0ZMQUdfU1RBVEVMRVNTIHwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIERMX0ZMQUdfUE1fUlVOVElNRSB8DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBETF9GTEFHX1JQTV9BQ1RJVkUpOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoIWxp bmspIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkZhaWxlZCB0 byBhZGQgZGV2aWNlX2xpbmsgdG8gZ3Bpbw0KPiBwZC5cbiIpOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGRlZmF1bHQ6DQo+ID4gKyAg ICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiAgICAgICAgIHJl dHVybiAwOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2Fzc2VydF9j b3JlX3Jlc2V0KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkNCj4gPiB7DQo+ID4gKyAgICAg ICB1MzIgYWRkcjsNCj4gPiArICAgICAgIGludCBpOw0KPiA+ICAgICAgICAgc3RydWN0IGRldmlj ZSAqZGV2ID0gaW14Nl9wY2llLT5wY2ktPmRldjsNCj4gPg0KPiA+ICAgICAgICAgc3dpdGNoIChp bXg2X3BjaWUtPmRydmRhdGEtPnZhcmlhbnQpIHsNCj4gPiArICAgICAgIGNhc2UgSU1YOFFYUDoN Cj4gPiArICAgICAgICAgICAgICAgYWRkciA9IElNWDhRTV9DU1JfUENJRUJfT0ZGU0VUICsNCj4g PiArIElNWDhRTV9DU1JfUENJRV9DVFJMMl9PRkZTRVQ7DQo+IA0KPiBUaGlzIGFuZCBzaW1pbGFy ICJJTVg4UU1fQ1NSX1BDSUVBX09GRlNFVCArIGkgKiBTWl82NEsiIHBhdHRlcm4ga2VlcHMNCj4g cG9wcGluZyB1cCBxdWl0ZSBmcmVxdWVudGx5IGluIHRoZSBjb2RlLiBJIHRoaW5rIGF0IHRoZSB2 ZXJ5IGxlYXN0IGl0IHdvdWxkIGJlDQo+IGdvb2QgdG8gY2FsY3VsYXRlIHRoaXMgb2Zmc2V0IGlu IHByb2JlIGFuZCBzdG9yZSBpdCBhcyBhIG1lbWJlciBvZiBzdHJ1Y3QNCj4gaW14Nl9wY2llLiBI b3dldmVyIEkgZG8gd29uZGVyIGlmIHRoaXMgc2hvdWxkIGFjdHVhbGx5IGJlIGhhbmRsZSBieSBl aXRoZXINCj4gZGVjbGFyaW5nIGFuIGFkZGl0aW9uYWwgc3lzY29uIHJlZ21hcCBvZiBhZGRpdGlv bmFsIHJlZy9yZWctbmFtZSBwcm9wZXJ0eS4NCj4gDQpbUmljaGFyZCBaaHVdIElNSE8sIEkganVz dCByZWR1Y2Ugc29tZSBtb3JlIE1BQ1JPIGRlZmluaXRpb25zIGluIHRoZSBjb2Rlcy4NCkFjdHVh bGx5LCB0aGUgIklNWDhRTV9DU1JfUENJRUFfT0ZGU0VUICsgU1pfNjRLIiBzaG91bGQgYmUgdGhl IElNWDhRTV9DU1JfUENJRUJfT0ZGU0VULg0KSSBjYW4gYWRkIHNvbWUgbW9yZSBtYWNyby1kZWZp bml0aW9ucywgZm9yIGV4YW1wbGUgIiBJTVg4UU1fQ1NSX1BDSUVCX09GRlNFVCAiIHRvIHJlbW92 ZSB0aGUgY2FsY3VsYXRpb25zIGxhdGVyLg0KSG93IGRvIHlvdSB0aGluayBhYm91dCB0aGF0Pw0K DQo+ID4gKyAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4 Y19ncHIsIGFkZHIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4UU1f Q1RSTF9CVVRUT05fUlNUX04sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJ TVg4UU1fQ1RSTF9CVVRUT05fUlNUX04pOw0KPiA+ICsgICAgICAgICAgICAgICByZWdtYXBfdXBk YXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBhZGRyLA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSU1YOFFNX0NUUkxfUEVSU1RfTiwNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIElNWDhRTV9DVFJMX1BFUlNUX04pOw0KPiA+ICsgICAgICAgICAg ICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLCBhZGRyLA0KPiA+ ICsNCj4gSU1YOFFNX0NUUkxfUE9XRVJfVVBfUlNUX04sDQo+ID4gKw0KPiBJTVg4UU1fQ1RSTF9Q T1dFUl9VUF9SU1RfTik7DQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAg Y2FzZSBJTVg4UU06DQo+ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gaW14Nl9w Y2llLT5jb250cm9sbGVyX2lkOyBpKyspIHsNCj4gDQo+IFRoaXMgbG9vcCBpcyBhIGJpdCBzdXJw cmlzaW5nIHRvIG1lLiBJdCdzIGhhcmQgdG8gdGVsbCB3aHkgeW91J2QgaXRlcmF0ZSBmcm9tIDAg dG8NCj4gY29udHJvbGxlcl9pZC4gSSB0aGluayBpdCdkIGJlIGdvb2QgdG8gYWRkIGEgY29tbWVu dCBleHBsYWluaW5nIHRoZSBsb2dpYw0KPiBiZWhpbmQgdGhpcyBjb2RlLg0KPiANCltSaWNoYXJk IFpodV0gT2theSwgY29tbWVudHMgd291bGQgYmUgYWRkZWQgaGVyZS4NCi8qDQogKiAgSW4gaS5N WDhRTSwgdHdvIGxhbmVzIFBIWSBhbmQgb25lIGxhbmUgUEhZIHNoYXJlIHRoZQ0KICogIHNhbWUg Y2FsaWJyYXRpb24gc2lnbmFsLiBBbmQgb25lIGxhbmUgUEhZIHdvdWxkIHVzZQ0KICogIHRoZSBj YWxpYnJhdGlvbiBvdXRwdXQgZnJvbSB0d28gbGFuZXMgUEhZLiBTbyBQQ0llQQ0KICogIHJlbGF0 ZWQgcmVzZXRzIGFyZSBjb25maWd1cmVkIGJlZm9yZSBjb25maWd1cmF0aW5nIFBDSWVCLg0KICov DQo+IA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGFkZHIgPSBJTVg4UU1fQ1NSX1BDSUVB X09GRlNFVCArIGkgKg0KPiBTWl82NEs7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYWRk ciArPSBJTVg4UU1fQ1NSX1BDSUVfQ1RSTDJfT0ZGU0VUOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+IGFkZHIs DQo+ID4gKw0KPiBJTVg4UU1fQ1RSTF9CVVRUT05fUlNUX04sDQo+ID4gKw0KPiBJTVg4UU1fQ1RS TF9CVVRUT05fUlNUX04pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZ21hcF91cGRh dGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+IGFkZHIsDQo+ID4gKw0KPiBJTVg4UU1f Q1RSTF9QRVJTVF9OLA0KPiA+ICsNCj4gSU1YOFFNX0NUUkxfUEVSU1RfTik7DQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dw ciwNCj4gYWRkciwNCj4gPiArDQo+IElNWDhRTV9DVFJMX1BPV0VSX1VQX1JTVF9OLA0KPiA+ICsN Cj4gSU1YOFFNX0NUUkxfUE9XRVJfVVBfUlNUX04pOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgY2FzZSBJTVg3RDoNCj4gPiAg ICAgICAgIGNhc2UgSU1YOE1ROg0KPiA+ICAgICAgICAgICAgICAgICByZXNldF9jb250cm9sX2Fz c2VydChpbXg2X3BjaWUtPnBjaWVwaHlfcmVzZXQpOw0KPiA+IEBAIC00NzcsNiArNTc3LDIxIEBA IHN0YXRpYyBpbnQgaW14Nl9wY2llX2VuYWJsZV9yZWZfY2xrKHN0cnVjdA0KPiBpbXg2X3BjaWUg KmlteDZfcGNpZSkNCj4gPg0KPiBJTVg4TVFfR1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklERV9FTiwN Cj4gPg0KPiBJTVg4TVFfR1BSX1BDSUVfQ0xLX1JFUV9PVkVSUklERV9FTik7DQo+ID4gICAgICAg ICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBJTVg4UVhQOg0KPiA+ICsgICAgICAg Y2FzZSBJTVg4UU06DQo+ID4gKyAgICAgICAgICAgICAgIHJldCA9DQo+IGNsa19wcmVwYXJlX2Vu YWJsZShpbXg2X3BjaWUtPnBjaWVfaW5ib3VuZF9heGkpOw0KPiA+ICsgICAgICAgICAgICAgICBp ZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJ1bmFi bGUgdG8gZW5hYmxlIHBjaWVfYXhpDQo+IGNsb2NrXG4iKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4gPiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgICAgICAg ICByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoaW14Nl9wY2llLT5wY2llX3Blcik7DQo+ID4gKyAg ICAgICAgICAgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZf ZXJyKGRldiwgInVuYWJsZSB0byBlbmFibGUgcGNpZV9wZXINCj4gY2xvY2tcbiIpOw0KPiA+ICsN Cj4gY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGlteDZfcGNpZS0+cGNpZV9pbmJvdW5kX2F4aSk7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICAgICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICAgICAgICAgfQ0KPiA+DQo+ ID4gICAgICAgICByZXR1cm4gcmV0Ow0KPiA+IEBAIC01MDEsNiArNjE2LDYzIEBAIHN0YXRpYyB2 b2lkDQo+IGlteDdkX3BjaWVfd2FpdF9mb3JfcGh5X3BsbF9sb2NrKHN0cnVjdCBpbXg2X3BjaWUg KmlteDZfcGNpZSkNCj4gPiAgICAgICAgIGRldl9lcnIoZGV2LCAiUENJZSBQTEwgbG9jayB0aW1l b3V0XG4iKTsgIH0NCj4gPg0KPiA+ICtzdGF0aWMgaW50IGlteDhfaHNpb19wY2llX3dhaXRfZm9y X3BoeV9wbGxfbG9jayhzdHJ1Y3QgaW14Nl9wY2llDQo+ID4gKyppbXg2X3BjaWUpIHsNCj4gPiAr ICAgICAgIHUzMiByZXRyaWVzLCBhZGRyLCB2YWwsIGxvY2sgPSAwOw0KPiA+ICsgICAgICAgaW50 IHJldDsNCj4gPiArICAgICAgIHN0cnVjdCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsN Cj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldiA9IHBjaS0+ZGV2Ow0KPiA+ICsNCj4gPiAr ICAgICAgIGFkZHIgPSBJTVg4UU1fQ1NSX1BDSUVBX09GRlNFVCArIGlteDZfcGNpZS0+Y29udHJv bGxlcl9pZA0KPiAqIFNaXzY0SzsNCj4gPiArICAgICAgIGFkZHIgKz0gSU1YOFFNX0NTUl9QQ0lF X1NUVFMwX09GRlNFVDsNCj4gPiArICAgICAgIGZvciAocmV0cmllcyA9IDA7IHJldHJpZXMgPCBQ SFlfUExMX0xPQ0tfV0FJVF9NQVhfUkVUUklFUzsNCj4gcmV0cmllcysrKSB7DQo+ID4gKyAgICAg ICAgICAgICAgIHJlZ21hcF9yZWFkKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgYWRkciwgJnZhbCk7 DQo+ID4gKyAgICAgICAgICAgICAgIGlmICgodmFsICYgSU1YOFFNX0NUUkxfU1RUUzBfUE1fUkVR X0NPUkVfUlNUKQ0KPiA9PSAwKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgICAgICAgICAgICB1ZGVsYXkoMSk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ ICsgICAgICAgaWYgKCh2YWwgJiBJTVg4UU1fQ1RSTF9TVFRTMF9QTV9SRVFfQ09SRV9SU1QpICE9 IDApIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJFUlJPUjogUE1fUkVRX0NP UkVfUlNUIGlzIHN0aWxsDQo+IHNldC5cbiIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4g LUVOT0RFVjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+IA0KPiBZb3UgY2FuIHJlYWxseSBjdXQg ZG93biBvbiBib2lsZXJwbGF0ZSBoZXJlIGJ5IHVzaW5nDQo+IHJlZ21hcF9yZWFkX3BvbGxfdGlt ZW91dCgpDQo+IA0KW1JpY2hhcmQgWmh1XSBPa2F5LCB3b3VsZCBjaGFuZ2UgaXQgbGF0ZXIuDQoN Cj4gPiArICAgICAgIGFkZHIgPSBJTVg4UU1fQ1NSX1BIWVgyX09GRlNFVCArIGlteDZfcGNpZS0+ Y29udHJvbGxlcl9pZA0KPiAqIFNaXzY0SzsNCj4gPiArICAgICAgIGFkZHIgKz0gSU1YOFFNX0NT Ul9QSFlYX1NUVFMwX09GRlNFVDsNCj4gPiArICAgICAgIGZvciAocmV0cmllcyA9IDA7IHJldHJp ZXMgPCBQSFlfUExMX0xPQ0tfV0FJVF9NQVhfUkVUUklFUzsNCj4gcmV0cmllcysrKSB7DQo+ID4g KyAgICAgICAgICAgICAgIHJlZ21hcF9yZWFkKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgYWRkciwg JnZhbCk7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChpbXg2X3BjaWUtPmhzaW9fY2ZnID09IDIp IHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW14Nl9wY2llLT5jb250cm9sbGVy X2lkID09IDApDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrID0NCj4g SU1YOFFNX1NUVFMwX0xBTkUwX1RYX1BMTF9MT0NLOw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2sgPQ0KPiBJ TVg4UU1fU1RUUzBfTEFORTFfVFhfUExMX0xPQ0s7DQo+ID4gKyAgICAgICAgICAgICAgIH0gZWxz ZSBpZiAoaW14Nl9wY2llLT5oc2lvX2NmZyA9PSAzKSB7DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgbG9jayA9DQo+IElNWDhRTV9TVFRTMF9MQU5FMF9UWF9QTExfTE9DSzsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAoaW14Nl9wY2llLT5jb250cm9sbGVyX2lkID09IDApDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NrIHw9DQo+IElNWDhRTV9TVFRT MF9MQU5FMV9UWF9QTExfTE9DSzsNCj4gPiArICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbXg2 X3BjaWUtPmhzaW9fY2ZnID09IDEpIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBsb2Nr ID0NCj4gSU1YOFFNX1NUVFMwX0xBTkUwX1RYX1BMTF9MT0NLOw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgIGxvY2sgfD0NCj4gSU1YOFFNX1NUVFMwX0xBTkUxX1RYX1BMTF9MT0NLOw0KPiA+ ICsgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRl dl9lcnIoZGV2LCAiRVJST1I6IGlsbGVnYWwgaHNpb19jZmcNCj4gdmFsdWUuXG4iKTsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgICAgICAgICB2YWwgJj0gbG9jazsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKHZhbCA9PSBsb2NrKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0K PiA+ICsgICAgICAgICAgICAgICB1ZGVsYXkoMTApOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIGlmIChyZXRyaWVzID49IFBIWV9QTExfTE9DS19XQUlUX01BWF9SRVRSSUVTKSB7 DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGRldiwgInBjaWUgcGh5IHBsbCBjYW4ndCBi ZSBsb2NrZWQuXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0gLUVOT0RFVjsNCj4gPiAr ICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIGRldl9pbmZvKGRldiwgInBjaWUg cGh5IHBsbCBpcyBsb2NrZWQuXG4iKTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+IA0KPiBEaXR0 by4NCltSaWNoYXJkIFpodV0gR290IHRoYXQuIFRoYW5rcy4NCj4gDQo+ID4gKyAgICAgICByZXR1 cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfZGVhc3Nl cnRfY29yZV9yZXNldChzdHJ1Y3QgaW14Nl9wY2llDQo+ID4gKmlteDZfcGNpZSkgIHsNCj4gPiAg ICAgICAgIHN0cnVjdCBkd19wY2llICpwY2kgPSBpbXg2X3BjaWUtPnBjaTsgQEAgLTU1Myw2ICs3 MjUsMTEgQEANCj4gPiBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfZGVhc3NlcnRfY29yZV9yZXNldChz dHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpDQo+ID4gICAgICAgICB9DQo+ID4NCj4gPiAgICAg ICAgIHN3aXRjaCAoaW14Nl9wY2llLT5kcnZkYXRhLT52YXJpYW50KSB7DQo+ID4gKyAgICAgICBj YXNlIElNWDhRWFA6DQo+ID4gKyAgICAgICBjYXNlIElNWDhRTToNCj4gPiArICAgICAgICAgICAg ICAgLyogd2FpdCBmb3IgcGh5IHBsbCBsb2NrIGZpcnN0bHkuICovDQo+ID4gKyAgICAgICAgICAg ICAgIGlteDhfaHNpb19wY2llX3dhaXRfZm9yX3BoeV9wbGxfbG9jayhpbXg2X3BjaWUpOw0KPiA+ ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIGNhc2UgSU1YOE1ROg0KPiA+ICAg ICAgICAgICAgICAgICByZXNldF9jb250cm9sX2RlYXNzZXJ0KGlteDZfcGNpZS0+cGNpZXBoeV9y ZXNldCk7DQo+ID4gICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+IEBAIC02MTMsMjUgKzc5MCwx MTQgQEAgc3RhdGljIHZvaWQNCj4gPiBpbXg2X3BjaWVfZGVhc3NlcnRfY29yZV9yZXNldChzdHJ1 Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpDQo+ID4NCj4gPiAgc3RhdGljIHZvaWQgaW14Nl9wY2ll X2NvbmZpZ3VyZV90eXBlKHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkgIHsNCj4gPiAtICAg ICAgIHVuc2lnbmVkIGludCBtYXNrLCB2YWw7DQo+ID4gLQ0KPiA+IC0gICAgICAgaWYgKGlteDZf cGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCA9PSBJTVg4TVEgJiYNCj4gPiArICAgICAgIHVuc2lnbmVk IGludCBvZmZzZXQsIG1hc2ssIHZhbDsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoaW14Nl9wY2ll LT5kcnZkYXRhLT52YXJpYW50ID09IElNWDhRTSB8fA0KPiA+ICsgICAgICAgICAgIGlteDZfcGNp ZS0+ZHJ2ZGF0YS0+dmFyaWFudCA9PSBJTVg4UVhQKSB7DQo+IA0KPiBTaW5jZSB0aGVyZSdzIG5v dyBtb3JlIHRoYW4gdHdvIHBvc3NpYmlsaXRpZXMsIGl0J2QgcHJvYmFibHkgbWFrZSBzZW5zZSB0 bw0KPiBjb252ZXJ0IHRoaXMgY29kZSB0byB1c2Ugc3dpdGNoIHN0YXRlbWVudC4NCltSaWNoYXJk IFpodV0gT2theSwgd291bGQgdXNlIHN3aXRjaCBzdGF0ZW1lbnQgbGF0ZXIuDQoNCj4gDQo+ID4g KyAgICAgICAgICAgICAgIG9mZnNldCA9IElNWDhRTV9DU1JfUENJRUFfT0ZGU0VUICsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBpbXg2X3BjaWUtPmNvbnRyb2xsZXJfaWQgKiBTWl82NEs7 DQo+ID4gKyAgICAgICAgICAgICAgIG1hc2sgICA9IElNWDhRTV9QQ0lFX1RZUEVfTUFTSzsNCj4g PiArICAgICAgICAgICAgICAgdmFsICAgID0gRklFTERfUFJFUChJTVg4UU1fUENJRV9UWVBFX01B U0ssDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0VYUF9UWVBF X1JPT1RfUE9SVCk7DQo+ID4gKyAgICAgICB9IGVsc2UgaWYgKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+ dmFyaWFudCA9PSBJTVg4TVEgJiYNCj4gPiAgICAgICAgICAgICBpbXg2X3BjaWUtPmNvbnRyb2xs ZXJfaWQgPT0gMSkgew0KPiA+ICsgICAgICAgICAgICAgICBvZmZzZXQgPSBJT01VWENfR1BSMTI7 DQo+ID4gICAgICAgICAgICAgICAgIG1hc2sgICA9DQo+IElNWDhNUV9HUFIxMl9QQ0lFMl9DVFJM X0RFVklDRV9UWVBFOw0KPiA+ICAgICAgICAgICAgICAgICB2YWwgICAgPQ0KPiBGSUVMRF9QUkVQ KElNWDhNUV9HUFIxMl9QQ0lFMl9DVFJMX0RFVklDRV9UWVBFLA0KPiA+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFBDSV9FWFBfVFlQRV9ST09UX1BPUlQpOw0KPiA+ICAgICAg ICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgICAgb2Zmc2V0ID0gSU9NVVhDX0dQUjEyOw0K PiA+ICAgICAgICAgICAgICAgICBtYXNrID0gSU1YNlFfR1BSMTJfREVWSUNFX1RZUEU7DQo+ID4g ICAgICAgICAgICAgICAgIHZhbCAgPSBGSUVMRF9QUkVQKElNWDZRX0dQUjEyX0RFVklDRV9UWVBF LA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQ0lfRVhQX1RZUEVfUk9P VF9QT1JUKTsNCj4gPiAgICAgICAgIH0NCj4gPg0KPiA+IC0gICAgICAgcmVnbWFwX3VwZGF0ZV9i aXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgSU9NVVhDX0dQUjEyLA0KPiBtYXNrLCB2YWwpOw0K PiA+ICsgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwgb2Zm c2V0LCBtYXNrLCB2YWwpOw0KPiA+ICB9DQo+ID4NCj4gPiAgc3RhdGljIHZvaWQgaW14Nl9wY2ll X2luaXRfcGh5KHN0cnVjdCBpbXg2X3BjaWUgKmlteDZfcGNpZSkgIHsNCj4gPiAgICAgICAgIHN3 aXRjaCAoaW14Nl9wY2llLT5kcnZkYXRhLT52YXJpYW50KSB7DQo+ID4gKyAgICAgICBjYXNlIElN WDhRWFA6DQo+ID4gKyAgICAgICBjYXNlIElNWDhRTToNCj4gPiArICAgICAgICAgICAgICAgaWYg KGlteDZfcGNpZS0+aHNpb19jZmcgPT0gMSkgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJTVg4UU1fQ1NSX1BIWVgyX09GRlNFVCwNCj4gPiArDQo+ IElNWDhRTV9QSFlYMl9DVFJMMF9BUEJfTUFTSywNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIElNWDhRTV9QSFlfQVBCX1JTVE5fMCB8DQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBJTVg4UU1fUEhZX0FQQl9SU1ROXzEpOw0KPiA+ICsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3By LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX0NTUl9NSVNDX09G RlNFVCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9NSVNDX1BI WVgxX0VQQ1NfU0VMLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFN X01JU0NfUEhZWDFfRVBDU19TRUwpOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJlZ21h cF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJTVg4UU1fQ1NSX01JU0NfT0ZGU0VULA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfUENJRV9BQl9TRUxFQ1QsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsNCj4gPiArICAgICAgICAgICAgICAgfSBl bHNlIGlmIChpbXg2X3BjaWUtPmhzaW9fY2ZnID09IDIpIHsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX0NTUl9QSFlYMl9PRkZTRVQsDQo+ ID4gKw0KPiBJTVg4UU1fUEhZWDJfQ1RSTDBfQVBCX01BU0ssDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJTVg4UU1fUEhZX0FQQl9SU1ROXzAgfA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX1BIWV9BUEJfUlNUTl8xKTsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9t dXhjX2dwciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9DU1Jf TUlTQ19PRkZTRVQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4UU1f TUlTQ19QSFlYMV9FUENTX1NFTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElNWDhRTV9NSVNDX1BIWVgxX0VQQ1NfU0VMKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX0NTUl9NSVNDX09GRlNFVCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9NSVNDX1BDSUVfQUJfU0VMRUNULA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfUENJRV9BQl9T RUxFQ1QpOw0KPiA+ICsgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlteDZfcGNpZS0+aHNpb19j ZmcgPT0gMykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbXg2X3BjaWUtPmNv bnRyb2xsZXJfaWQpDQo+ID4gKw0KPiByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211 eGNfZ3ByLA0KPiA+ICsNCj4gSU1YOFFNX0NTUl9QSFlYMV9PRkZTRVQsDQo+ID4gKw0KPiBJTVg4 UU1fUEhZX0FQQl9SU1ROXzAsDQo+ID4gKw0KPiBJTVg4UU1fUEhZX0FQQl9SU1ROXzApOw0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGVsc2UNCj4gPiArDQo+IHJlZ21hcF91cGRhdGVfYml0 cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKw0KPiBJTVg4UU1fQ1NSX1BIWVgyX09GRlNF VCwNCj4gPiArDQo+IElNWDhRTV9QSFlYMl9DVFJMMF9BUEJfTUFTSywNCj4gPiArDQo+IElNWDhR TV9QSFlfQVBCX1JTVE5fMCB8DQo+ID4gKw0KPiBJTVg4UU1fUEhZX0FQQl9SU1ROXzEpOw0KPiA+ ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9w Y2llLT5pb211eGNfZ3ByLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1Y OFFNX0NTUl9NSVNDX09GRlNFVCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IElNWDhRTV9NSVNDX1BIWVgxX0VQQ1NfU0VMLA0KPiAwKTsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX0NTUl9NSVNDX09GRlNFVCwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9NSVNDX1BDSUVfQUJfU0VM RUNULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfUENJ RV9BQl9TRUxFQ1QpOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+ID4gKw0KPiANCj4gVGhpcyBk b2Vzbid0IGxvb2sgY29udHJvbGxlciBpbmRlcGVuZGVudC9sb2NhbC4gV2hhdCB3b3VsZCBoYXBw ZW4gaWYNCj4gY29udHJvbGxlciAwIHNwZWNpZmllcyBoc2lvX2NmZyA9PSAyIGFuZCBjb250cm9s bGVyIDEgc3BlY2lmaWVzIGhzaW9fY2ZnID09IDE/DQo+IA0KW1JpY2hhcmQgWmh1XVllcywgaXQg aXMuIFRoZXJlIGFyZSB1c2FnZSBkZXBlbmRlbmNlcyBiZXR3ZWVuIFBDSWVBL1BDSWVCIGFuZCBT QVRBIGluIEhTSU8gc3Vic3lzdGVtLg0KQlRXLCBJdCdzIGltcG9zc2libGUgZm9yIGNvbnRyb2xs ZXIgMSB0byBzcGVjaWZ5IHRoZSBoc2lvX2NmZyB0byAiMSIsIHdoZW4gY29udHJvbGxlciAwIHNw ZWNpZmllcyBoc2lvX2NmZz09Mi4NClRoZXJlIGFyZSB0aHJlZSB1c2FnZSBjYXNlcyBvZiB0aGUg SFNJTy4NCkhzaW9fY2ZnICAgIHBjaWVhICAgIHBjaWViICAgIHNhdGENCjEgICAgICAgICAgMmxh bmVzICAgTm8gICAgICBFbmFibGVkDQoyICAgICAgICAgIDFsYW5lICAgIDFsYW5lICAgIEVuYWJs ZWQNCjMgICAgICAgICAgMmxhbmVzICAgMWxhbmUgICAgTm8NClNvLCB0aGUgcG9zc2libGUgaHNp b19jZmcgdmFsdWVzIGZvciBQQ0llQiBpcyAyIG9yIDMuDQoNCj4gPiArICAgICAgICAgICAgICAg aWYgKGlteDZfcGNpZS0+ZXh0X29zYykgew0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHJl Z21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBJTVg4UU1fQ1NSX01JU0NfT0ZGU0VULA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfSU9CX1JYRU5BLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfSU9CX1JYRU5BKTsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211 eGNfZ3ByLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX0NTUl9N SVNDX09GRlNFVCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9N SVNDX0lPQl9UWEVOQSwgMCk7DQo+ID4gKyAgICAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgLyogVHJ5IHRvIHVzZWQgdGhlIGludGVybmFsIHBsbCBhcyBy ZWYgY2xrICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgcmVnbWFwX3VwZGF0ZV9iaXRz KGlteDZfcGNpZS0+aW9tdXhjX2dwciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElNWDhRTV9DU1JfTUlTQ19PRkZTRVQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBJTVg4UU1fTUlTQ19JT0JfUlhFTkEsIDApOw0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4UU1fQ1NSX01JU0NfT0ZGU0VULA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfSU9CX1RYRU5BLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1YOFFNX01JU0NfSU9CX1RYRU5B KTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9w Y2llLT5pb211eGNfZ3ByLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU1Y OFFNX0NTUl9NSVNDX09GRlNFVCwNCj4gPiArDQo+IElNWDhRTV9DU1JfTUlTQ19JT0JfQV8wX1RY T0UgfA0KPiA+ICsNCj4gSU1YOFFNX0NTUl9NSVNDX0lPQl9BXzBfTTFNMF9NQVNLLA0KPiA+ICsN Cj4gSU1YOFFNX0NTUl9NSVNDX0lPQl9BXzBfVFhPRSB8DQo+ID4gKw0KPiBJTVg4UU1fQ1NSX01J U0NfSU9CX0FfMF9NMU0wXzIpOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+IA0KPiBTYW1lIGhl cmUuIEl0IGxvb2tzIGxpa2Ugc3BlY2lmeWluZyAiZXh0X29zYyIgZm9yIG9uZSBjb250cm9sbGVy IGFuZCBsZWF2aW5nIGl0DQo+IG91dCBmb3IgYW5vdGhlciB3b3VsZCBsZWFkIHRvIGRpZmZlcmVu dCBvdXRjb21lIGJhc2VkIG9uIHdoaWNoIGNvbnRyb2xsZXINCj4gZ2V0cyBpbml0aWFsaXplZCBm aXJzdC4NCj4gDQo+IEl0IHNlZW1zIHRoYXQgbWF5YmUgYWJzdHJhY3RpbmcgYWxsIG9mIHRoaXMg YXdheSB2aWEgYSBnZW5lcmljIFBIWSBzdWJzeXN0ZW0NCj4gd291bGQgYmUgYSBiZXR0ZXIgcGF0 aC4gU2VlIGZvciBleGFtcGxlIHBjaS1kcmE3eHguYyB3aGljaCBsb29rcyBsaWtlIGl0IG1pZ2h0 DQo+IGJlIGEgZ29vZCBleGFtcGxlLg0KPiANCltSaWNoYXJkIFpodV0gT2theSwgd291bGQgZm9s bG93aW5nIHlvdXIgc3VnZ2VzdGlvbnMuDQpUaGFua3MgYSBsb3QuDQo+ID4gKw0KPiA+ICsgICAg ICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIGNhc2UgSU1YOE1ROg0KPiA+ICAgICAgICAg ICAgICAgICAvKg0KPiA+ICAgICAgICAgICAgICAgICAgKiBUT0RPOiBDdXJyZW50bHkgdGhpcyBj b2RlIGFzc3VtZXMgZXh0ZXJuYWwgQEANCj4gPiAtNzYzLDYgKzEwMjksNyBAQCBzdGF0aWMgaW50 IGlteDZfcGNpZV93YWl0X2Zvcl9zcGVlZF9jaGFuZ2Uoc3RydWN0DQo+ID4gaW14Nl9wY2llICpp bXg2X3BjaWUpDQo+ID4NCj4gPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2x0c3NtX2VuYWJsZShz dHJ1Y3QgZGV2aWNlICpkZXYpICB7DQo+ID4gKyAgICAgICB1MzIgdmFsOw0KPiA+ICAgICAgICAg c3RydWN0IGlteDZfcGNpZSAqaW14Nl9wY2llID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4N Cj4gPiAgICAgICAgIHN3aXRjaCAoaW14Nl9wY2llLT5kcnZkYXRhLT52YXJpYW50KSB7IEBAIC03 NzcsNiArMTA0NCwxNQ0KPiBAQA0KPiA+IHN0YXRpYyB2b2lkIGlteDZfcGNpZV9sdHNzbV9lbmFi bGUoc3RydWN0IGRldmljZSAqZGV2KQ0KPiA+ICAgICAgICAgY2FzZSBJTVg4TVE6DQo+ID4gICAg ICAgICAgICAgICAgIHJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaW14Nl9wY2llLT5hcHBzX3Jlc2V0 KTsNCj4gPiAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIElNWDhRWFA6 DQo+ID4gKyAgICAgICBjYXNlIElNWDhRTToNCj4gPiArICAgICAgICAgICAgICAgdmFsID0gSU1Y OFFNX0NTUl9QQ0lFQV9PRkZTRVQgKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlteDZf cGNpZS0+Y29udHJvbGxlcl9pZCAqIFNaXzY0SzsNCj4gPiArICAgICAgICAgICAgICAgcmVnbWFw X3VwZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHZhbCArDQo+IElNWDhRTV9DU1JfUENJRV9DVFJMMl9PRkZTRVQsDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4UU1fQ1RSTF9MVFNTTV9FTkFC TEUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTVg4UU1fQ1RSTF9MVFNT TV9FTkFCTEUpOw0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIH0NCj4g PiAgfQ0KPiA+DQo+ID4gQEAgLTkwOCwxMyArMTE4NCwyNSBAQCBzdGF0aWMgaW50IGlteDZfYWRk X3BjaWVfcG9ydChzdHJ1Y3QgaW14Nl9wY2llDQo+ICppbXg2X3BjaWUsDQo+ID4gICAgICAgICBy ZXR1cm4gMDsNCj4gPiAgfQ0KPiA+DQo+ID4gK3N0YXRpYyB1NjQgaW14Nl9wY2llX2NwdV9hZGRy X2ZpeHVwKHN0cnVjdCBkd19wY2llICpwY2llLCB1NjQNCj4gPiArY3B1X2FkZHIpIHsNCj4gPiAr ICAgICAgIHN0cnVjdCBwY2llX3BvcnQgKnBwID0gJnBjaWUtPnBwOw0KPiA+ICsgICAgICAgc3Ry dWN0IGlteDZfcGNpZSAqaW14Nl9wY2llID0gdG9faW14Nl9wY2llKHBjaWUpOw0KPiA+ICsNCj4g PiArICAgICAgIGlmIChpbXg2X3BjaWUtPmRydmRhdGEtPmZsYWdzICYNCj4gSU1YNl9QQ0lFX0ZM QUdfSU1YNl9DUFVfQUREUl9GSVhVUCkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIChjcHVf YWRkciArIGlteDZfcGNpZS0+bG9jYWxfYWRkciAtDQo+ID4gKyBwcC0+bWVtX2Jhc2UpOw0KPiAN Cj4gSWYgeW91IGRvDQo+IA0KPiBjcHVfYWRkciArPSBteDZfcGNpZS0+bG9jYWxfYWRkciAtIHBw LT5tZW1fYmFzZTsNCj4gDQo+IHlvdSB3b24ndCBuZWVkIGFuIGVsc2UgYmVsb3cuDQo+IA0KW1Jp Y2hhcmQgWmh1XSBZb3UncmUgcmlnaHQuIFRoYW5rcy4NCg0KPiA+ICsgICAgICAgZWxzZQ0KPiA+ ICsgICAgICAgICAgICAgICByZXR1cm4gY3B1X2FkZHI7DQo+ID4gK30NCj4gPiArDQo+ID4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHdfcGNpZV9vcHMgZHdfcGNpZV9vcHMgPSB7DQo+ID4gLSAgICAg ICAvKiBObyBzcGVjaWFsIG9wcyBuZWVkZWQsIGJ1dCBwY2llLWRlc2lnbndhcmUgc3RpbGwgZXhw ZWN0cyB0aGlzDQo+IHN0cnVjdCAqLw0KPiA+ICsgICAgICAgLmNwdV9hZGRyX2ZpeHVwID0gaW14 Nl9wY2llX2NwdV9hZGRyX2ZpeHVwLA0KPiA+ICB9Ow0KPiA+DQo+ID4gICNpZmRlZiBDT05GSUdf UE1fU0xFRVANCj4gPiAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2x0c3NtX2Rpc2FibGUoc3RydWN0 IGRldmljZSAqZGV2KSAgew0KPiA+ICsgICAgICAgdTMyIHZhbDsNCj4gPiAgICAgICAgIHN0cnVj dCBpbXg2X3BjaWUgKmlteDZfcGNpZSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOw0KPiA+DQo+ID4g ICAgICAgICBzd2l0Y2ggKGlteDZfcGNpZS0+ZHJ2ZGF0YS0+dmFyaWFudCkgeyBAQCAtOTI2LDYg KzEyMTQsMTcNCj4gQEANCj4gPiBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfbHRzc21fZGlzYWJsZShz dHJ1Y3QgZGV2aWNlICpkZXYpDQo+ID4gICAgICAgICBjYXNlIElNWDdEOg0KPiA+ICAgICAgICAg ICAgICAgICByZXNldF9jb250cm9sX2Fzc2VydChpbXg2X3BjaWUtPmFwcHNfcmVzZXQpOw0KPiA+ ICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiArICAgICAgIGNhc2UgSU1YOFFYUDoNCj4gPiAr ICAgICAgIGNhc2UgSU1YOFFNOg0KPiA+ICsgICAgICAgICAgICAgICB2YWwgPSBJTVg4UU1fQ1NS X1BDSUVBX09GRlNFVCArDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgaW14Nl9wY2llLT5j b250cm9sbGVyX2lkICogU1pfNjRLOw0KPiA+ICsgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRl X2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3ByLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmFsICsNCj4gSU1YOFFNX0NTUl9QQ0lFX0NUUkwyX09GRlNFVCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9DVFJMX0xUU1NNX0VOQUJMRSwgMCk7 DQo+ID4gKyAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4 Y19ncHIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgKw0KPiBJTVg4 UU1fQ1NSX1BDSUVfQ1RSTDJfT0ZGU0VULA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgSU1YOFFNX0NUUkxfUkVBRFlfRU5UUl9MMjMsDQo+IDApOw0KPiA+ICsgICAgICAgICAg ICAgICBicmVhazsNCj4gPiAgICAgICAgIGRlZmF1bHQ6DQo+ID4gICAgICAgICAgICAgICAgIGRl dl9lcnIoZGV2LCAibHRzc21fZGlzYWJsZSBub3Qgc3VwcG9ydGVkXG4iKTsNCj4gPiAgICAgICAg IH0NCj4gPiBAQCAtOTMzLDYgKzEyMzIsOCBAQCBzdGF0aWMgdm9pZCBpbXg2X3BjaWVfbHRzc21f ZGlzYWJsZShzdHJ1Y3QgZGV2aWNlDQo+ID4gKmRldikNCj4gPg0KPiA+ICBzdGF0aWMgdm9pZCBp bXg2X3BjaWVfcG1fdHVybm9mZihzdHJ1Y3QgaW14Nl9wY2llICppbXg2X3BjaWUpICB7DQo+ID4g KyAgICAgICBpbnQgaTsNCj4gPiArICAgICAgIHUzMiBhZGRyLCB2YWw7DQo+ID4gICAgICAgICBz dHJ1Y3QgZGV2aWNlICpkZXYgPSBpbXg2X3BjaWUtPnBjaS0+ZGV2Ow0KPiA+DQo+ID4gICAgICAg ICAvKiBTb21lIHZhcmlhbnRzIGhhdmUgYSB0dXJub2ZmIHJlc2V0IGluIERUICovIEBAIC05NTEs Ng0KPiA+ICsxMjUyLDM0IEBAIHN0YXRpYyB2b2lkIGlteDZfcGNpZV9wbV90dXJub2ZmKHN0cnVj dCBpbXg2X3BjaWUNCj4gKmlteDZfcGNpZSkNCj4gPiAgICAgICAgICAgICAgICAgcmVnbWFwX3Vw ZGF0ZV9iaXRzKGlteDZfcGNpZS0+aW9tdXhjX2dwciwNCj4gSU9NVVhDX0dQUjEyLA0KPiA+DQo+ IElNWDZTWF9HUFIxMl9QQ0lFX1BNX1RVUk5fT0ZGLCAwKTsNCj4gPiAgICAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gKyAgICAgICBjYXNlIElNWDhRWFA6DQo+ID4gKyAgICAgICBjYXNlIElNWDhR TToNCj4gPiArICAgICAgICAgICAgICAgYWRkciA9IElNWDhRTV9DU1JfUENJRUFfT0ZGU0VUICsN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICBpbXg2X3BjaWUtPmNvbnRyb2xsZXJfaWQgKiBT Wl82NEs7DQo+ID4gKyAgICAgICAgICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUt PmlvbXV4Y19ncHIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyICsN Cj4gSU1YOFFNX0NTUl9QQ0lFX0NUUkwyX09GRlNFVCwNCj4gPiArDQo+IElNWDhRTV9DVFJMX1BN X1hNVF9UVVJOT0ZGLA0KPiA+ICsNCj4gSU1YOFFNX0NUUkxfUE1fWE1UX1RVUk5PRkYpOw0KPiA+ ICsgICAgICAgICAgICAgICByZWdtYXBfdXBkYXRlX2JpdHMoaW14Nl9wY2llLT5pb211eGNfZ3By LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkciArDQo+IElNWDhRTV9D U1JfUENJRV9DVFJMMl9PRkZTRVQsDQo+ID4gKw0KPiBJTVg4UU1fQ1RSTF9QTV9YTVRfVFVSTk9G RiwgMCk7DQo+IA0KPiBJcyBzZXR0aW5nIElNWDhRTV9DVFJMX1BNX1hNVF9UVVJOT0ZGIG9uIGFu ZCB0aGVuIG9mZiBuZWNlc3Nhcnk/IEknZA0KPiBhZGQgYSBjb21tZW50IHRvIGhpZ2hsaWdodCB0 aGF0IHRoaXMgaXMgaW50ZW50aW9uYWwuDQo+IA0KW1JpY2hhcmQgWmh1XSBEZXNpZ25lciBzdWdn ZXN0IHRvIGRvIHNvLiBPbmUgUE1FIG1lc3NhZ2Ugd291bGQgYmUga2lja2VkIG9mZiBvbiB0aGUg bGluayBhZnRlciB0aGVzZSB0dXJuIG9uL29mZiBvcGVyYXRpb25zLg0KDQo+ID4gKyAgICAgICAg ICAgICAgIHJlZ21hcF91cGRhdGVfYml0cyhpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyICsNCj4gSU1YOFFNX0NTUl9QQ0lFX0NU UkwyX09GRlNFVCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElNWDhRTV9D VFJMX1JFQURZX0VOVFJfTDIzLA0KPiA+ICsNCj4gSU1YOFFNX0NUUkxfUkVBRFlfRU5UUl9MMjMp Ow0KPiA+ICsgICAgICAgICAgICAgICAvKiBjaGVjayB0aGUgTDIgaXMgZW50ZXJlZCBvciBub3Qu ICovDQo+ID4gKyAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBMMl9FTlRSWV9XQUlUX01B WF9SRVRSSUVTOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZWdtYXBfcmVh ZChpbXg2X3BjaWUtPmlvbXV4Y19ncHIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGFkZHIgKw0KPiBJTVg4UU1fQ1NSX1BDSUVfU1RUUzBfT0ZGU0VULA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFsKTsNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICBpZiAodmFsICYNCj4gSU1YOFFNX0NUUkxfU1RUUzBfUE1fTElO S1NUX0lOX0wyKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgdWRlbGF5KDEwKTsNCj4gPiArICAgICAgICAgICAg ICAgfQ0KPiA+ICsgICAgICAgICAgICAgICBpZiAoKHZhbCAmIElNWDhRTV9DVFJMX1NUVFMwX1BN X0xJTktTVF9JTl9MMikgPT0NCj4gMCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkZXZf ZXJyKGRldiwgIlBDSUUlZCBjYW4ndCBlbnRlciBpbnRvIEwyLlxuIiwNCj4gPiArDQo+IGlteDZf cGNpZS0+Y29udHJvbGxlcl9pZCk7DQo+IA0KPiByZWdtYXBfcmVhZF9wb2xsX3RpbWVvdXQoKQ0K PiANCltSaWNoYXJkIFpodV0gT2theSwgd291bGQgdXNlIHJlZ21hcF9yZWFkX3BvbGxfdGltZW91 dCgpIGluIG5leHQgdmVyc2lvbi4NCg0KPiA+ICsgICAgICAgICAgICAgICBicmVhazsNCj4gPiAg ICAgICAgIGRlZmF1bHQ6DQo+ID4gICAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiUE1FX1R1 cm5fT2ZmIG5vdCBpbXBsZW1lbnRlZFxuIik7DQo+ID4gICAgICAgICAgICAgICAgIHJldHVybjsN Cj4gPiBAQCAtOTg1LDYgKzEzMTQsMTEgQEAgc3RhdGljIHZvaWQgaW14Nl9wY2llX2Nsa19kaXNh YmxlKHN0cnVjdA0KPiBpbXg2X3BjaWUgKmlteDZfcGNpZSkNCj4gPiAgICAgICAgIGNhc2UgSU1Y OE1ROg0KPiA+ICAgICAgICAgICAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoaW14Nl9wY2ll LT5wY2llX2F1eCk7DQo+ID4gICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2Fz ZSBJTVg4UVhQOg0KPiA+ICsgICAgICAgY2FzZSBJTVg4UU06DQo+ID4gKyAgICAgICAgICAgICAg IGNsa19kaXNhYmxlX3VucHJlcGFyZShpbXg2X3BjaWUtPnBjaWVfcGVyKTsNCj4gPiArICAgICAg ICAgICAgICAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGlteDZfcGNpZS0+cGNpZV9pbmJvdW5kX2F4 aSk7DQo+IA0KPiBZb3UgY2FuIHByb2JhYmx5IHBpZ2d5IGJhY2sgb24gSU1YNlNYIHNpbmNlIGl0 IGhhcyAicGNpZV9pbmJvdW5kX2F4aSIgYXMNCj4gd2VsbC4NCj4gDQpbUmljaGFyZCBaaHVdIE9r YXksIHdvdWxkIGZvbGxvdyB5b3VyIHN1Z2dlc3Rpb24uIFRoYW5rcy4NCldvdWxkIGNoYW5nZSBs aWtlIGJlbG93Lg0KICAgICAgICBjYXNlIElNWDhRWFA6DQogICAgICAgIGNhc2UgSU1YOFFNOg0K ICAgICAgICAgICAgICAgIGNsa19kaXNhYmxlX3VucHJlcGFyZShpbXg2X3BjaWUtPnBjaWVfcGVy KTsNCiAgICAgICAgY2FzZSBJTVg2U1g6DQogICAgICAgICAgICAgICAgY2xrX2Rpc2FibGVfdW5w cmVwYXJlKGlteDZfcGNpZS0+cGNpZV9pbmJvdW5kX2F4aSk7DQogICAgICAgICAgICAgICAgYnJl YWs7DQoNCj4gPiArICAgICAgICAgICAgICAgYnJlYWs7DQo+ID4gICAgICAgICBkZWZhdWx0Og0K PiA+ICAgICAgICAgICAgICAgICBicmVhazsNCj4gPiAgICAgICAgIH0NCj4gPiBAQCAtMTA4NCw3 ICsxNDE4LDI2IEBAIHN0YXRpYyBpbnQgaW14Nl9wY2llX3Byb2JlKHN0cnVjdA0KPiBwbGF0Zm9y bV9kZXZpY2UgKnBkZXYpDQo+ID4gICAgICAgICBpZiAoSVNfRVJSKHBjaS0+ZGJpX2Jhc2UpKQ0K PiA+ICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwY2ktPmRiaV9iYXNlKTsNCj4gPg0K PiA+ICsgICAgICAgaWYgKG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJoc2lvLWNmZyIsDQo+ ICZpbXg2X3BjaWUtPmhzaW9fY2ZnKSkNCj4gPiArICAgICAgICAgICAgICAgaW14Nl9wY2llLT5o c2lvX2NmZyA9IDA7DQo+ID4gKyAgICAgICBpZiAob2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwg ImV4dF9vc2MiLCAmaW14Nl9wY2llLT5leHRfb3NjKQ0KPiA8IDApDQo+ID4gKyAgICAgICAgICAg ICAgIGlteDZfcGNpZS0+ZXh0X29zYyA9IDA7DQo+ID4gKyAgICAgICBpZiAob2ZfcHJvcGVydHlf cmVhZF91MzIobm9kZSwgImxvY2FsLWFkZHIiLA0KPiAmaW14Nl9wY2llLT5sb2NhbF9hZGRyKSkN Cj4gPiArICAgICAgICAgICAgICAgaW14Nl9wY2llLT5sb2NhbF9hZGRyID0gMDsNCj4gDQo+IEFs bCBvZiB0aGVzZSBwcm9wZXJ0aWVzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgdG8gemVybyBieSBremFs bG9jIGFuZA0KPiBvZl9wcm9wZXJ0eV9yZWFkX3UzMigpIHdvbid0IG1vZGlmeSBvdXRwdXQgdmFy aWFibGUgdW5sZXNzIGl0IGlzIHN1Y2Nlc3NmdWwsDQo+IHNvIHlvdSBjYW4gcHJvYmFibHkgc2tp cCBlcnJvciBjaGVja2luZy4NCltSaWNoYXJkIFpodV0gT2theSwgd291bGQgcmVtb3ZlIHRoZSBl cnJvciBjaGVja2luZy4NCg0KPiANCj4gPiArDQo+ID4gICAgICAgICAvKiBGZXRjaCBHUElPcyAq Lw0KPiA+ICsgICAgICAgaW14Nl9wY2llLT5jbGtyZXFfZ3BpbyA9IG9mX2dldF9uYW1lZF9ncGlv KG5vZGUsICJjbGtyZXEtZ3BpbyIsDQo+IDApOw0KPiA+ICsgICAgICAgaWYgKGdwaW9faXNfdmFs aWQoaW14Nl9wY2llLT5jbGtyZXFfZ3BpbykpIHsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0g ZGV2bV9ncGlvX3JlcXVlc3Rfb25lKCZwZGV2LT5kZXYsDQo+IGlteDZfcGNpZS0+Y2xrcmVxX2dw aW8sDQo+ID4gKw0KPiBHUElPRl9PVVRfSU5JVF9MT1csICJQQ0llIENMS1JFUSIpOw0KPiA+ICsg ICAgICAgICAgICAgICBpZiAocmV0KSB7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2 X2VycigmcGRldi0+ZGV2LCAidW5hYmxlIHRvIGdldCBjbGtyZXENCj4gZ3Bpb1xuIik7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiA+ICsgICAgICAgfSBlbHNlIGlmIChpbXg2X3BjaWUtPmNsa3JlcV9ncGlvID09IC1FUFJP QkVfREVGRVIpIHsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGlteDZfcGNpZS0+Y2xrcmVx X2dwaW87DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICAgICAgICAgaW14Nl9wY2llLT5yZXNl dF9ncGlvID0gb2ZfZ2V0X25hbWVkX2dwaW8obm9kZSwgInJlc2V0LWdwaW8iLA0KPiAwKTsNCj4g PiAgICAgICAgIGlteDZfcGNpZS0+Z3Bpb19hY3RpdmVfaGlnaCA9IG9mX3Byb3BlcnR5X3JlYWRf Ym9vbChub2RlLA0KPiA+DQo+ID4gInJlc2V0LWdwaW8tYWN0aXZlLWhpZ2giKTsgQEAgLTExNTUs NiArMTUwOCwyNSBAQCBzdGF0aWMgaW50DQo+IGlteDZfcGNpZV9wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBQVFJf RVJSKGlteDZfcGNpZS0+cGNpZV9hdXgpOw0KPiA+ICAgICAgICAgICAgICAgICB9DQo+ID4gICAg ICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgY2FzZSBJTVg4UU06DQo+ID4gKyAgICAg ICBjYXNlIElNWDhRWFA6DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChkYmlfYmFzZS0+c3RhcnQg PT0gSU1YOF9IU0lPX1BDSUVCX0JBU0VfQUREUikNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBpbXg2X3BjaWUtPmNvbnRyb2xsZXJfaWQgPSAxOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgaW14Nl9wY2llLT5wY2llX3BlciA9IGRldm1fY2xrX2dldChkZXYsICJwY2llX3BlciIpOw0K PiA+ICsgICAgICAgICAgICAgICBpZiAoSVNfRVJSKGlteDZfcGNpZS0+cGNpZV9wZXIpKSB7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJwY2llX3BlciBjbG9jayBz b3VyY2UgbWlzc2luZw0KPiBvciBpbnZhbGlkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICByZXR1cm4gUFRSX0VSUihpbXg2X3BjaWUtPnBjaWVfcGVyKTsNCj4gPiArICAgICAgICAg ICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgaW14Nl9wY2llLT5wY2llX2luYm91 bmRfYXhpID0NCj4gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicGNpZV9pbmJvdW5kX2F4aSIpOw0KPiA+ICsgICAgICAgICAgICAg ICBpZiAoSVNfRVJSKGlteDZfcGNpZS0+cGNpZV9pbmJvdW5kX2F4aSkpIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicGNpZSBjbG9jayBzb3VyY2UgbWlzc2luZyBvcg0KPiBpbnZhbGlk XG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4NCj4gUFRSX0VSUihpbXg2 X3BjaWUtPnBjaWVfaW5ib3VuZF9heGkpOw0KPiA+ICsgICAgICAgICAgICAgICB9DQo+IA0KPiBP biBpLk1YOE1RICJwY2llX2J1cyIgY2xvY2sgaW4gdmVuZG9yIHRyZWUgd2Fzbid0IGFjdHVhbGx5 IHBvaW50aW5nIHRvDQo+IGFjdHVhbCBQQ0lFIGJ1cyBjbG9jaywgc28gaXQgbWlnaHQgYmUgd29y dGggY2hlY2tpbmcgaWYgdGhhdCdzIHRoZSBjYXNlIGZvcg0KPiBpLk1YOFFNL1ggYW5kIHlvdSBh Y3R1YWxseSBuZWVkIG9uZSBtb3JlIGNsb2NrLg0KW1JpY2hhcmQgWmh1XSBSZWdhcmRpbmcgdG8g bXkgdW5kZXJzdGFuZGluZywgaU1YIFBDSWUgbW9kdWxlIGlzIGNvbm5lY3RlZCB0byBBWEkgYnVz Lg0KVGh1cywgdGhlIEFYSSByZWxhdGVkIGNsb2NrIGNhbiBiZSB0cmVhdGVkIGFzIGJ1cyBjbG9j ay4gQ29ycmVjdCBtZSBpZiBteSB1bmRlcnN0YW5kIGlzIHdyb25nLg0KU28sIEkgdXNlIHRoZSBw Y2llX2J1cyBjbG9jayBmb3IgaS5NWDhRTS9RWFAgUENJZSBpbiB0aGUgZHRzIGJpbmRpbmcuDQpP dGhlcndpc2UsIEkgY2FuIHVzZSBhbm90aGVyIG5ldyBjbG9jayBpbiBjb2RlcyB0byBzdXBwb3J0 IGkuTVg4UU0vUVhQIFBDSWVzLg0KDQpUaGFua3MgYSBsb3QgZm9yIHlvdXIga2luZGx5IHJldmll dy4NCg0KPiANCj4gVGhhbmtzLA0KPiBBbmRyZXkgU21pcm5vdg0K