Received: by 2002:a25:d7c1:0:0:0:0:0 with SMTP id o184csp4038669ybg; Fri, 25 Oct 2019 12:26:02 -0700 (PDT) X-Google-Smtp-Source: APXvYqx3shgaovXMOK7OL3QZkeCFQ0AexVkOBOyLRHgQHtlv0AtTCoOb/Z3Xc33EhpQoy9sD3X+F X-Received: by 2002:a17:906:557:: with SMTP id k23mr4950186eja.165.1572031562665; Fri, 25 Oct 2019 12:26:02 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1572031562; cv=pass; d=google.com; s=arc-20160816; b=cGOfa8BT4Z4iZVgWlJbxBGO6EM8CSouYX5R913Y9dl15W/W7RyzSIOYC6kEZo6qGdQ Hya28tt6MEXqHtcNzjEhHctXmM2m9+lZSqDVcnkI8rEP3FHRvvZ2m0R9vOyMIZkpSAmB tt2OfzbUUtTYnwy2UmnLo2mU/HVf7GA1sYFVt4TEPdWx8ZcMO8IJOgm90c+5OdGGlP6u LXuXT5NAFby6heAAVOlNcubv++QAvOFX7TJsWX2+ScFQZ3S+nfty4m+7hctSQdGCahnL wtPRtZnHJs1NzhIiVhsQOd+OFv4K6d9/YWuqlYbdxLs6h98Pl2cJZALeuxO2O71Yyjxj S0wA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :content-id:content-language:accept-language:in-reply-to:references :message-id:date:thread-index:thread-topic:subject:cc:to:from :dkim-signature; bh=NXOcuAtkJ2x1NPiy4MDE9eyUfHC+MmDqWyVhlyistj0=; b=tnyxhqrHX4VqDF56k4ZbXfWC9p/TscuUPzmJqVSDd1487NqH0G5jq/cFSfxbAJTbVa cZH02HzZBr6CstEPfwjbb7rt4FBOnu9Dr9F1XDpJE/CGYSX2yIMEeEBbKUEu1U+z9Gnl j37V0yJiIhkrA0McmUPTFUCkzaLvFTelbwlJdTb45ZCdwLw+xWBGguwKOodjzNR1I93b xS4EfnM4soA2ECAumsc6pcuv7Mf9URBdOzUW7iHlJk73TwMWxii4rA9rLdSl1eDRREiZ s54T6+oRXRXqRQXnuBmcLWG9ZzTTBYHYcgxd/SrJ8uedEMIEKAUvlhw4E1dPWynccH/u WroQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amdcloud.onmicrosoft.com header.s=selector2-amdcloud-onmicrosoft-com header.b=a9FlOTAA; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id fi30si1823691ejb.257.2019.10.25.12.25.39; Fri, 25 Oct 2019 12:26:02 -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=@amdcloud.onmicrosoft.com header.s=selector2-amdcloud-onmicrosoft-com header.b=a9FlOTAA; arc=pass (i=1 spf=pass spfdomain=amd.com dkim=pass dkdomain=amd.com dmarc=pass fromdomain=amd.com); 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406369AbfJYHID (ORCPT + 99 others); Fri, 25 Oct 2019 03:08:03 -0400 Received: from mail-eopbgr800044.outbound.protection.outlook.com ([40.107.80.44]:19072 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2405059AbfJYHID (ORCPT ); Fri, 25 Oct 2019 03:08:03 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Veon2RSGgejAoVGyjACkYaV84eCw2Gsb4TRbOeYh33UZjPkRl40fm9HTIzeYcI9PbyHYekm93XmxqexX9ShpuHXbIZmR9aEAwulYj2lvTtaPHd78uc5rjf8cibM5/cc6vK7X83Mer/uOCUK1gYocycDT+VQmMFj9pqovs4ZrIJv87MzazAnSpVcEjIV5LwbNYv5rPHsIPxnUX8yPgMDoOw1aRryccBVCtB+S+ijPxkACFP+IDLahMuUH5VkKELQK/nE4x1Uut0b+ozv38bYg/hUep+8ZdrtblhmC2OLTmXR5GadhWoLKMkyYGCgXniaCiV0F9WkrjJC6pHiMLLfoAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NXOcuAtkJ2x1NPiy4MDE9eyUfHC+MmDqWyVhlyistj0=; b=MrnjWed7axHbFqLxoOD9M59rpiWISqgicUWDyTfy0dnooUqeKWQNFXYy1VtqUGiljVqv3YlNPP3oiFqji214KnhiyUPsz+xSVoMo0v5tFi8Q6j9KtqC+UU1NrYzHKrTFlFUuqWVMB9ZE9+JpsZomNosYCGJtyJhuqGAgNZZsVibvdrufDVxcS0dtN+UuOl7VNwt2iags7K6snZsndl//XCX6pgzIPEJhgfi1R8CFKqR3TcGODviujFMVw5jEZqYBqgNAHXjvBTL6ZJni7O0avpN2okeYg5+Y3j0VylIBDuVPEenCsvEp/AdSu4oYEeb1OVxjtji8H9uvEdfgkBeWmg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NXOcuAtkJ2x1NPiy4MDE9eyUfHC+MmDqWyVhlyistj0=; b=a9FlOTAA1VTHgWwisI6ruuZlW9A3LnDONom5ecCjiQdMkdQmQXZ1q4dY7hqDRE/yJIAbpqL9QqdZm99HoQPoDzwYPqEriwxvLt2s+mMParHMr7n14sLoM0Xs8O60g8CP8ZVzGwVp+b0yM4wxr4NIT9G+mWN5qSK+zsp54gy0J8g= Received: from DM6PR12MB3868.namprd12.prod.outlook.com (10.255.173.213) by DM6PR12MB2747.namprd12.prod.outlook.com (20.176.116.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2387.20; Fri, 25 Oct 2019 07:06:06 +0000 Received: from DM6PR12MB3868.namprd12.prod.outlook.com ([fe80::64dd:646d:6fa1:15a1]) by DM6PR12MB3868.namprd12.prod.outlook.com ([fe80::64dd:646d:6fa1:15a1%4]) with mapi id 15.20.2387.021; Fri, 25 Oct 2019 07:06:06 +0000 From: vishnu To: "RAVULAPATI, VISHNU VARDHAN RAO" CC: "Deucher, Alexander" , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , "Mukunda, Vijendar" , Maruthi Bayyavarapu , Colin Ian King , YueHaibing , Kuninori Morimoto , "Mehta, Sanju" , open list , "moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM..." Subject: Re: [PATCH 2/7] ASoC: amd: Refactoring of DAI from DMA driver Thread-Topic: [PATCH 2/7] ASoC: amd: Refactoring of DAI from DMA driver Thread-Index: AQHVhZyxoEuZJxMTjUqPnFEMUM335Kdq+ogA Date: Fri, 25 Oct 2019 07:06:05 +0000 Message-ID: <7ff2bf91-127d-3b13-54d1-4c5dddb17fd5@amd.com> References: <1571432760-3008-1-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com> <1571432760-3008-2-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com> In-Reply-To: <1571432760-3008-2-git-send-email-Vishnuvardhanrao.Ravulapati@amd.com> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: MAXPR01CA0082.INDPRD01.PROD.OUTLOOK.COM (2603:1096:a00:49::24) To DM6PR12MB3868.namprd12.prod.outlook.com (2603:10b6:5:1c8::21) authentication-results: spf=none (sender IP is ) smtp.mailfrom=Vishnuvardhanrao.Ravulapati@amd.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [165.204.159.251] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 778b83ce-70b4-4894-7e27-08d75919cda7 x-ms-traffictypediagnostic: DM6PR12MB2747:|DM6PR12MB2747: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:163; x-forefront-prvs: 02015246A9 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(4636009)(396003)(376002)(39860400002)(136003)(366004)(346002)(189003)(199004)(52116002)(102836004)(53546011)(71200400001)(30864003)(386003)(6506007)(486006)(26005)(71190400001)(6862004)(36756003)(229853002)(8936002)(6512007)(81156014)(4326008)(6486002)(6246003)(6436002)(256004)(14444005)(6636002)(478600001)(99286004)(66446008)(66556008)(76176011)(316002)(8676002)(31686004)(2906002)(64756008)(66476007)(31696002)(66946007)(7736002)(3846002)(186003)(54906003)(37006003)(11346002)(305945005)(2616005)(476003)(446003)(5660300002)(6116002)(66066001)(14454004)(81166006)(25786009)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:DM6PR12MB2747;H:DM6PR12MB3868.namprd12.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: amd.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: UP3KqbxNGcaIlTX2ubPz53mID21hKti1U7nvQN2IwlGZaerSiRZWg2pGN7ebQs5MhW+cpMSw/iBj0Mqrtf95i5xh2ZdWMBs2f2yg0sD6qhKKh5rcRSC76/GeG5Xfx411kMq3RMXAj+MNndfHibk3bzC9lQa3KrRt2MU2Bkxj8xyROzhEk4U599oPnTZokZtwqlMVdKXk26tcrOfDRTUdnAQNqoJEoJxLlYYUG5uACEhj6buidnW6EX4D58yPrqcHlGrIKJRL5LBFHZlhf3qM6fYW3PMZQ0jX7MLPeEl8mhqzNagv846UuMDtN9kHpq3DIefpnVonMYGddpgMK7ZwOk86n91SmW6OVtx/3zS4xsD9Aw4ViEvZJvgUkrxsDkcEhsOgFN9NaN3jNYmZZKR1/1HaabI1EKdgq1WaSHhu9UCacCEQBCHuT8S4Gw6sV4SG Content-Type: text/plain; charset="utf-8" Content-ID: <0CA2003C4D466C4C8A32DC8600BFA609@namprd12.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 778b83ce-70b4-4894-7e27-08d75919cda7 X-MS-Exchange-CrossTenant-originalarrivaltime: 25 Oct 2019 07:06:05.9642 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: y9fDpH7wiuibvcAUbM8b0SRjxHI/ZeXbfaLhP3xf2pFcRmOTBDdk8Hwxcp7/fNa9VuCT/uWgf3BAjstIgT7rFA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR12MB2747 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTWFyaywNCg0KQW55IHVwZGF0ZXMgb24gdGhpcyBwYXRjaC4NCg0KUmVnYXJkcywNClZpc2hu dQ0KDQpPbiAxOS8xMC8xOSAyOjM1IEFNLCBSYXZ1bGFwYXRpIFZpc2hudSB2YXJkaGFuIHJhbyB3 cm90ZToNCj4gQXNvYzogUENNIERNQSBkcml2ZXIgc2hvdWxkIG9ubHkgaGF2ZSBkbWEgb3BzLg0K PiBTbyBSZW1vdmVkIGFsbCBEQUkgcmVsYXRlZCBmdW5jdGlvbmFsaXR5Lg0KPiBSZWZhY3Rvcmlu ZyB0aGUgUENNIERNQSBkaXZlciBjb2RlLg0KPiBBZGRlZCBuZXcgZmlsZSBjb250YWluaW5nIG9u bHkgREFJIG9wcy4NCj4gDQo+IFNpZ25lZC1vZmYtYnk6IFJhdnVsYXBhdGkgVmlzaG51IHZhcmRo YW4gcmFvIDxWaXNobnV2YXJkaGFucmFvLlJhdnVsYXBhdGlAYW1kLmNvbT4NCj4gLS0tDQo+ICAg c291bmQvc29jL2FtZC9yYXZlbi9NYWtlZmlsZSAgICAgICAgfCAgIDIgKw0KPiAgIHNvdW5kL3Nv Yy9hbWQvcmF2ZW4vYWNwM3gtaTJzLmMgICAgIHwgMjY4ICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKw0KPiAgIHNvdW5kL3NvYy9hbWQvcmF2ZW4vYWNwM3gtcGNtLWRtYS5jIHwg MjMyICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gICBzb3VuZC9zb2MvYW1kL3Jh dmVuL2FjcDN4LmggICAgICAgICB8ICA0MiArKysrKysNCj4gICA0IGZpbGVzIGNoYW5nZWQsIDMy NiBpbnNlcnRpb25zKCspLCAyMTggZGVsZXRpb25zKC0pDQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0 IHNvdW5kL3NvYy9hbWQvcmF2ZW4vYWNwM3gtaTJzLmMNCj4gDQo+IGRpZmYgLS1naXQgYS9zb3Vu ZC9zb2MvYW1kL3JhdmVuL01ha2VmaWxlIGIvc291bmQvc29jL2FtZC9yYXZlbi9NYWtlZmlsZQ0K PiBpbmRleCAxMDhkMWFjLi44ZWVmMjkyIDEwMDY0NA0KPiAtLS0gYS9zb3VuZC9zb2MvYW1kL3Jh dmVuL01ha2VmaWxlDQo+ICsrKyBiL3NvdW5kL3NvYy9hbWQvcmF2ZW4vTWFrZWZpbGUNCj4gQEAg LTEsNiArMSw4IEBADQo+ICAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsNCj4g ICAjIFJhdmVuIFJpZGdlIHBsYXRmb3JtIFN1cHBvcnQNCj4gICBzbmQtcGNpLWFjcDN4LW9ianMJ Oj0gcGNpLWFjcDN4Lm8NCj4gK3NuZC1hY3AzeC1pMnMtb2Jqcwk6PSBhY3AzeC1pMnMubw0KPiAg IHNuZC1hY3AzeC1wY20tZG1hLW9ianMJOj0gYWNwM3gtcGNtLWRtYS5vDQo+ICAgb2JqLSQoQ09O RklHX1NORF9TT0NfQU1EX0FDUDN4KQkgKz0gc25kLXBjaS1hY3AzeC5vDQo+ICtvYmotJChDT05G SUdfU05EX1NPQ19BTURfQUNQM3gpCSArPSBzbmQtYWNwM3gtaTJzLm8NCj4gICBvYmotJChDT05G SUdfU05EX1NPQ19BTURfQUNQM3gpCSArPSBzbmQtYWNwM3gtcGNtLWRtYS5vDQo+IGRpZmYgLS1n aXQgYS9zb3VuZC9zb2MvYW1kL3JhdmVuL2FjcDN4LWkycy5jIGIvc291bmQvc29jL2FtZC9yYXZl bi9hY3AzeC1pMnMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwLi43 MjhlNzU3DQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvc291bmQvc29jL2FtZC9yYXZlbi9hY3Az eC1pMnMuYw0KPiBAQCAtMCwwICsxLDI2OCBAQA0KPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjArDQo+ICsvLw0KPiArLy8gQU1EIEFMU0EgU29DIFBDTSBEcml2ZXINCj4gKy8v DQo+ICsvL0NvcHlyaWdodCAyMDE2IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4NCj4gKw0K PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L21vZHVsZS5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2lvLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5oPg0KPiArI2luY2x1ZGUgPHNv dW5kL3BjbS5oPg0KPiArI2luY2x1ZGUgPHNvdW5kL3BjbV9wYXJhbXMuaD4NCj4gKyNpbmNsdWRl IDxzb3VuZC9zb2MuaD4NCj4gKyNpbmNsdWRlIDxzb3VuZC9zb2MtZGFpLmg+DQo+ICsjaW5jbHVk ZSA8bGludXgvZG1hLW1hcHBpbmcuaD4NCj4gKw0KPiArI2luY2x1ZGUgImFjcDN4LmgiDQo+ICsN Cj4gKyNkZWZpbmUgRFJWX05BTUUgImFjcDN4LWkycyINCj4gKw0KPiArc3RhdGljIGludCBhY3Az eF9pMnNfc2V0X2ZtdChzdHJ1Y3Qgc25kX3NvY19kYWkgKmNwdV9kYWksIHVuc2lnbmVkIGludCBm bXQpDQo+ICt7DQo+ICsNCj4gKwlzdHJ1Y3QgaTJzX2Rldl9kYXRhICphZGF0YSA9IHNuZF9zb2Nf ZGFpX2dldF9kcnZkYXRhKGNwdV9kYWkpOw0KPiArDQo+ICsJc3dpdGNoIChmbXQgJiBTTkRfU09D X0RBSUZNVF9GT1JNQVRfTUFTSykgew0KPiArDQo+ICsJY2FzZSBTTkRfU09DX0RBSUZNVF9JMlM6 DQo+ICsJCWFkYXRhLT50ZG1fbW9kZSA9IGZhbHNlOw0KPiArCQlicmVhazsNCj4gKwljYXNlIFNO RF9TT0NfREFJRk1UX0RTUF9BOg0KPiArCQkJYWRhdGEtPnRkbV9tb2RlID0gdHJ1ZTsNCj4gKwkJ CWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ICsJCXJldHVybiAtRUlOVkFMOw0KPiArCX0NCj4gKw0K PiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGFjcDN4X2kyc19zZXRfdGRt X3Nsb3Qoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFpLCB1MzIgdHhfbWFzaywNCj4gKwkJdTMy IHJ4X21hc2ssIGludCBzbG90cywgaW50IHNsb3Rfd2lkdGgpDQo+ICt7DQo+ICsJdTMyIHZhbCA9 IDA7DQo+ICsJdTE2IHNsb3RfbGVuOw0KPiArDQo+ICsJc3RydWN0IGkyc19kZXZfZGF0YSAqYWRh dGEgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShjcHVfZGFpKTsNCj4gKw0KPiArCXN3aXRjaCAo c2xvdF93aWR0aCkgew0KPiArCWNhc2UgU0xPVF9XSURUSF84Og0KPiArCQlzbG90X2xlbiA9IDg7 DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgU0xPVF9XSURUSF8xNjoNCj4gKwkJc2xvdF9sZW4gPSAx NjsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBTTE9UX1dJRFRIXzI0Og0KPiArCQlzbG90X2xlbiA9 IDI0Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIFNMT1RfV0lEVEhfMzI6DQo+ICsJCXNsb3RfbGVu ID0gMDsNCj4gKwkJYnJlYWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ ICsJfQ0KPiArDQo+ICsJdmFsID0gcnZfcmVhZGwoYWRhdGEtPmFjcDN4X2Jhc2UgKyBtbUFDUF9C VFRETV9JVEVSKTsNCj4gKwlydl93cml0ZWwoKHZhbCB8IDB4MiksIGFkYXRhLT5hY3AzeF9iYXNl ICsgbW1BQ1BfQlRURE1fSVRFUik7DQo+ICsJdmFsID0gcnZfcmVhZGwoYWRhdGEtPmFjcDN4X2Jh c2UgKyBtbUFDUF9CVFRETV9JUkVSKTsNCj4gKwlydl93cml0ZWwoKHZhbCB8IDB4MiksIGFkYXRh LT5hY3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVJFUik7DQo+ICsNCj4gKwl2YWwgPSAoRlJNX0xF TiB8IChzbG90cyA8PCAxNSkgfCAoc2xvdF9sZW4gPDwgMTgpKTsNCj4gKwlydl93cml0ZWwodmFs LCBhZGF0YS0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX1RYRlJNVCk7DQo+ICsJcnZfd3JpdGVs KHZhbCwgYWRhdGEtPmFjcDN4X2Jhc2UgKyBtbUFDUF9CVFRETV9SWEZSTVQpOw0KPiArDQo+ICsJ YWRhdGEtPnRkbV9mbXQgPSB2YWw7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRp YyBpbnQgYWNwM3hfaTJzX2h3cGFyYW1zKHN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqc3Vic3Ry ZWFtLA0KPiArCQlzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgKnBhcmFtcywNCj4gKwkJc3RydWN0 IHNuZF9zb2NfZGFpICpkYWkpDQo+ICt7DQo+ICsJdTMyIHZhbCA9IDA7DQo+ICsJc3RydWN0IGky c19zdHJlYW1faW5zdGFuY2UgKnJ0ZCA9IHN1YnN0cmVhbS0+cnVudGltZS0+cHJpdmF0ZV9kYXRh Ow0KPiArDQo+ICsJc3dpdGNoIChwYXJhbXNfZm9ybWF0KHBhcmFtcykpIHsNCj4gKwljYXNlIFNO RFJWX1BDTV9GT1JNQVRfVTg6DQo+ICsJY2FzZSBTTkRSVl9QQ01fRk9STUFUX1M4Og0KPiArCQly dGQtPnhmZXJfcmVzb2x1dGlvbiA9IDB4MDsNCj4gKwkJYnJlYWs7DQo+ICsJY2FzZSBTTkRSVl9Q Q01fRk9STUFUX1MxNl9MRToNCj4gKwkJcnRkLT54ZmVyX3Jlc29sdXRpb24gPSAweDAyOw0KPiAr CQlicmVhazsNCj4gKwljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzI0X0xFOg0KPiArCQlydGQtPnhm ZXJfcmVzb2x1dGlvbiA9IDB4MDQ7DQo+ICsJCWJyZWFrOw0KPiArCWNhc2UgU05EUlZfUENNX0ZP Uk1BVF9TMzJfTEU6DQo+ICsJCXJ0ZC0+eGZlcl9yZXNvbHV0aW9uID0gMHgwNTsNCj4gKwkJYnJl YWs7DQo+ICsJZGVmYXVsdDoNCj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ICsJfQ0KPiArCXZhbCA9 IHJ2X3JlYWRsKHJ0ZC0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lURVIpOw0KPiArCXZhbCA9 IHZhbCB8IChydGQtPnhmZXJfcmVzb2x1dGlvbiAgPDwgMyk7DQo+ICsJaWYgKHN1YnN0cmVhbS0+ c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spDQo+ICsJCXJ2X3dyaXRlbCh2YWws IHJ0ZC0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lURVIpOw0KPiArCWVsc2UNCj4gKwkJcnZf d3JpdGVsKHZhbCwgcnRkLT5hY3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVJFUik7DQo+ICsNCj4g KwlyZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIGludCBhY3AzeF9pMnNfdHJpZ2dlcihz dHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCj4gKwkJaW50IGNtZCwgc3RydWN0 IHNuZF9zb2NfZGFpICpkYWkpDQo+ICt7DQo+ICsJaW50IHJldCA9IDA7DQo+ICsJc3RydWN0IGky c19zdHJlYW1faW5zdGFuY2UgKnJ0ZCA9IHN1YnN0cmVhbS0+cnVudGltZS0+cHJpdmF0ZV9kYXRh Ow0KPiArCXUzMiB2YWwsIHBlcmlvZF9ieXRlczsNCj4gKw0KPiArCXBlcmlvZF9ieXRlcyA9IGZy YW1lc190b19ieXRlcyhzdWJzdHJlYW0tPnJ1bnRpbWUsDQo+ICsJCQlzdWJzdHJlYW0tPnJ1bnRp bWUtPnBlcmlvZF9zaXplKTsNCj4gKwlzd2l0Y2ggKGNtZCkgew0KPiArCWNhc2UgU05EUlZfUENN X1RSSUdHRVJfU1RBUlQ6DQo+ICsJY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9SRVNVTUU6DQo+ICsJ Y2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9QQVVTRV9SRUxFQVNFOg0KPiArCQlydGQtPmJ5dGVzY291 bnQgPSBhY3BfZ2V0X2J5dGVfY291bnQocnRkLA0KPiArCQkJCQkJc3Vic3RyZWFtLT5zdHJlYW0p Ow0KPiArCQlpZiAoc3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFD Sykgew0KPiArCQkJcnZfd3JpdGVsKHBlcmlvZF9ieXRlcywgcnRkLT5hY3AzeF9iYXNlICsNCj4g KwkJCQkJbW1BQ1BfQlRfVFhfSU5UUl9XQVRFUk1BUktfU0laRSk7DQo+ICsJCQl2YWwgPSBydl9y ZWFkbChydGQtPmFjcDN4X2Jhc2UgKyBtbUFDUF9CVFRETV9JVEVSKTsNCj4gKwkJCXZhbCA9IHZh bCB8IEJJVCgwKTsNCj4gKwkJCXJ2X3dyaXRlbCh2YWwsIHJ0ZC0+YWNwM3hfYmFzZSArIG1tQUNQ X0JUVERNX0lURVIpOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJcnZfd3JpdGVsKHBlcmlvZF9ieXRl cywgcnRkLT5hY3AzeF9iYXNlICsNCj4gKwkJCQkJbW1BQ1BfQlRfUlhfSU5UUl9XQVRFUk1BUktf U0laRSk7DQo+ICsJCQl2YWwgPSBydl9yZWFkbChydGQtPmFjcDN4X2Jhc2UgKyBtbUFDUF9CVFRE TV9JUkVSKTsNCj4gKwkJCXZhbCA9IHZhbCB8IEJJVCgwKTsNCj4gKwkJCXJ2X3dyaXRlbCh2YWws IHJ0ZC0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lSRVIpOw0KPiArCQl9DQo+ICsJCXJ2X3dy aXRlbCgxLCBydGQtPmFjcDN4X2Jhc2UgKyBtbUFDUF9CVFRETV9JRVIpOw0KPiArCQlicmVhazsN Cj4gKwljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NUT1A6DQo+ICsJY2FzZSBTTkRSVl9QQ01fVFJJ R0dFUl9TVVNQRU5EOg0KPiArCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfUEFVU0VfUFVTSDoNCj4g KwkJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spIHsN Cj4gKwkJCXZhbCA9IHJ2X3JlYWRsKHJ0ZC0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lURVIp Ow0KPiArCQkJdmFsID0gdmFsICYgfkJJVCgwKTsNCj4gKwkJCXJ2X3dyaXRlbCh2YWwsIHJ0ZC0+ YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lURVIpOw0KPiArCQl9IGVsc2Ugew0KPiArCQkJdmFs ID0gcnZfcmVhZGwocnRkLT5hY3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVJFUik7DQo+ICsJCQl2 YWwgPSB2YWwgJiB+QklUKDApOw0KPiArCQkJcnZfd3JpdGVsKHZhbCwgcnRkLT5hY3AzeF9iYXNl ICsgbW1BQ1BfQlRURE1fSVJFUik7DQo+ICsJCX0NCj4gKwkJcnZfd3JpdGVsKDAsIHJ0ZC0+YWNw M3hfYmFzZSArIG1tQUNQX0JUVERNX0lFUik7DQo+ICsJCWJyZWFrOw0KPiArCWRlZmF1bHQ6DQo+ ICsJCXJldCA9IC1FSU5WQUw7DQo+ICsJCWJyZWFrOw0KPiArCX0NCj4gKw0KPiArCXJldHVybiBy ZXQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfb3BzIGFjcDN4X2ky c19kYWlfb3BzID0gew0KPiArCS5od19wYXJhbXMgPSBhY3AzeF9pMnNfaHdwYXJhbXMsDQo+ICsJ LnRyaWdnZXIgICA9IGFjcDN4X2kyc190cmlnZ2VyLA0KPiArCS5zZXRfZm10ID0gYWNwM3hfaTJz X3NldF9mbXQsDQo+ICsJLnNldF90ZG1fc2xvdCA9IGFjcDN4X2kyc19zZXRfdGRtX3Nsb3QsDQo+ ICt9Ow0KPiArDQo+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50X2RyaXZl ciBhY3AzeF9kYWlfY29tcG9uZW50ID0gew0KPiArCS5uYW1lICAgICAgICAgICA9ICJhY3AzeC1p MnMiLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9kcml2ZXIgYWNw M3hfaTJzX2RhaSA9IHsNCj4gKwkucGxheWJhY2sgPSB7DQo+ICsJCS5yYXRlcyA9IFNORFJWX1BD TV9SQVRFXzgwMDBfOTYwMDAsDQo+ICsJCS5mb3JtYXRzID0gU05EUlZfUENNX0ZNVEJJVF9TMTZf TEUgfCBTTkRSVl9QQ01fRk1UQklUX1M4IHwNCj4gKwkJCVNORFJWX1BDTV9GTVRCSVRfVTggfA0K PiArCQkJU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUgfA0KPiArCQkJU05EUlZfUENNX0ZNVEJJVF9T MzJfTEUsDQo+ICsJCS5jaGFubmVsc19taW4gPSAyLA0KPiArCQkuY2hhbm5lbHNfbWF4ID0gOCwN Cj4gKw0KPiArCQkucmF0ZV9taW4gPSA4MDAwLA0KPiArCQkucmF0ZV9tYXggPSA5NjAwMCwNCj4g Kwl9LA0KPiArCS5jYXB0dXJlID0gew0KPiArCQkucmF0ZXMgPSBTTkRSVl9QQ01fUkFURV84MDAw XzQ4MDAwLA0KPiArCQkuZm9ybWF0cyA9IFNORFJWX1BDTV9GTVRCSVRfUzE2X0xFIHwgU05EUlZf UENNX0ZNVEJJVF9TOCB8DQo+ICsJCQlTTkRSVl9QQ01fRk1UQklUX1U4IHwNCj4gKwkJCVNORFJW X1BDTV9GTVRCSVRfUzI0X0xFIHwNCj4gKwkJCVNORFJWX1BDTV9GTVRCSVRfUzMyX0xFLA0KPiAr CQkuY2hhbm5lbHNfbWluID0gMiwNCj4gKwkJLmNoYW5uZWxzX21heCA9IDIsDQo+ICsJCS5yYXRl X21pbiA9IDgwMDAsDQo+ICsJCS5yYXRlX21heCA9IDQ4MDAwLA0KPiArCX0sDQo+ICsJLm9wcyA9 ICZhY3AzeF9pMnNfZGFpX29wcywNCj4gK307DQo+ICsNCj4gKw0KPiArc3RhdGljIGludCBhY3Az eF9kYWlfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwlpbnQg c3RhdHVzOw0KPiArCXN0cnVjdCByZXNvdXJjZSAqcmVzOw0KPiArCXN0cnVjdCBpMnNfZGV2X2Rh dGEgKmFkYXRhOw0KPiArDQo+ICsJaWYgKCFwZGV2LT5kZXYucGxhdGZvcm1fZGF0YSkgew0KPiAr CQlkZXZfZXJyKCZwZGV2LT5kZXYsICJwbGF0Zm9ybV9kYXRhIG5vdCByZXRyaWV2ZWRcbiIpOw0K PiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKwl9DQo+ICsNCj4gKwlhZGF0YSA9IGRldm1fa3phbGxv YygmcGRldi0+ZGV2LCBzaXplb2Yoc3RydWN0IGkyc19kZXZfZGF0YSksDQo+ICsJCQlHRlBfS0VS TkVMKTsNCj4gKwlyZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9N RU0sIDApOw0KPiArCWlmICghcmVzKSB7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIklPUkVT T1VSQ0VfTUVNIEZBSUxFRFxuIik7DQo+ICsJCXJldHVybiAtRU5PREVWOw0KPiArCX0NCj4gKw0K PiArCWFkYXRhLT5hY3AzeF9iYXNlID0gZGV2bV9pb3JlbWFwKCZwZGV2LT5kZXYsIHJlcy0+c3Rh cnQsDQo+ICsJCQlyZXNvdXJjZV9zaXplKHJlcykpOw0KPiArCWlmIChJU19FUlIoYWRhdGEtPmFj cDN4X2Jhc2UpKQ0KPiArCQlyZXR1cm4gUFRSX0VSUihhZGF0YS0+YWNwM3hfYmFzZSk7DQo+ICsN Cj4gKw0KPiArDQo+ICsJYWRhdGEtPmkyc19pcnEgPSByZXMtPnN0YXJ0Ow0KPiArCWFkYXRhLT5w bGF5X3N0cmVhbSA9IE5VTEw7DQo+ICsJYWRhdGEtPmNhcHR1cmVfc3RyZWFtID0gTlVMTDsNCj4g Kw0KPiArCWRldl9zZXRfZHJ2ZGF0YSgmcGRldi0+ZGV2LCBhZGF0YSk7DQo+ICsJc3RhdHVzID0g ZGV2bV9zbmRfc29jX3JlZ2lzdGVyX2NvbXBvbmVudCgmcGRldi0+ZGV2LA0KPiArCQkJJmFjcDN4 X2RhaV9jb21wb25lbnQsDQo+ICsJCQkmYWNwM3hfaTJzX2RhaSwgMSk7DQo+ICsJaWYgKHN0YXR1 cykgew0KPiArCQlkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsIHRvIHJlZ2lzdGVyIGFjcCBpMnMg ZGFpXG4iKTsNCj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ICsJfQ0KPiArDQo+ICsJcG1fcnVudGlt ZV9zZXRfYXV0b3N1c3BlbmRfZGVsYXkoJnBkZXYtPmRldiwgMTAwMDApOw0KPiArCXBtX3J1bnRp bWVfdXNlX2F1dG9zdXNwZW5kKCZwZGV2LT5kZXYpOw0KPiArCXBtX3J1bnRpbWVfZW5hYmxlKCZw ZGV2LT5kZXYpOw0KPiArCXJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGFjcDN4 X2RhaV9yZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gK3sNCj4gKwlwbV9y dW50aW1lX2Rpc2FibGUoJnBkZXYtPmRldik7DQo+ICsJcmV0dXJuIDA7DQo+ICt9DQo+ICtzdGF0 aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciBhY3AzeF9kYWlfZHJpdmVyID0gew0KPiArCS5wcm9i ZSA9IGFjcDN4X2RhaV9wcm9iZSwNCj4gKwkucmVtb3ZlID0gYWNwM3hfZGFpX3JlbW92ZSwNCj4g KwkuZHJpdmVyID0gew0KPiArCQkubmFtZSA9ICJhY3AzeF9pMnNfcGxheWNhcCIsDQo+ICsJfSwN Cj4gK307DQo+ICsNCj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIoYWNwM3hfZGFpX2RyaXZlcik7 DQo+ICsNCj4gK01PRFVMRV9BVVRIT1IoIlZpc2hudXZhcmRoYW5yYW8uUmF2dWxhcGF0aUBhbWQu Y29tIik7DQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFNRCBBQ1AgMy54IFBDTSBEcml2ZXIiKTsN Cj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4gK01PRFVMRV9BTElBUygicGxhdGZvcm06 IiBEUlZfTkFNRSk7DQo+IGRpZmYgLS1naXQgYS9zb3VuZC9zb2MvYW1kL3JhdmVuL2FjcDN4LXBj bS1kbWEuYyBiL3NvdW5kL3NvYy9hbWQvcmF2ZW4vYWNwM3gtcGNtLWRtYS5jDQo+IGluZGV4IDYw NzA5ZTMuLmY1ZTRjN2IgMTAwNjQ0DQo+IC0tLSBhL3NvdW5kL3NvYy9hbWQvcmF2ZW4vYWNwM3gt cGNtLWRtYS5jDQo+ICsrKyBiL3NvdW5kL3NvYy9hbWQvcmF2ZW4vYWNwM3gtcGNtLWRtYS5jDQo+ IEBAIC0xOCwyNCArMTgsNiBAQA0KPiAgIA0KPiAgICNkZWZpbmUgRFJWX05BTUUgImFjcDN4LWky cy1hdWRpbyINCj4gICANCj4gLXN0cnVjdCBpMnNfZGV2X2RhdGEgew0KPiAtCWJvb2wgdGRtX21v ZGU7DQo+IC0JdW5zaWduZWQgaW50IGkyc19pcnE7DQo+IC0JdTMyIHRkbV9mbXQ7DQo+IC0Jdm9p ZCBfX2lvbWVtICphY3AzeF9iYXNlOw0KPiAtCXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGxh eV9zdHJlYW07DQo+IC0Jc3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpjYXB0dXJlX3N0cmVhbTsN Cj4gLX07DQo+IC0NCj4gLXN0cnVjdCBpMnNfc3RyZWFtX2luc3RhbmNlIHsNCj4gLQl1MTYgbnVt X3BhZ2VzOw0KPiAtCXUxNiBjaGFubmVsczsNCj4gLQl1MzIgeGZlcl9yZXNvbHV0aW9uOw0KPiAt CXU2NCBieXRlc2NvdW50Ow0KPiAtCWRtYV9hZGRyX3QgZG1hX2FkZHI7DQo+IC0Jdm9pZCBfX2lv bWVtICphY3AzeF9iYXNlOw0KPiAtfTsNCj4gLQ0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc25k X3BjbV9oYXJkd2FyZSBhY3AzeF9wY21faGFyZHdhcmVfcGxheWJhY2sgPSB7DQo+ICAgCS5pbmZv ID0gU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQgfA0KPiAgIAkJU05EUlZfUENNX0lORk9fQkxP Q0tfVFJBTlNGRVIgfA0KPiBAQCAtMjc5LDcgKzI2MSwxMSBAQCBzdGF0aWMgaW50IGFjcDN4X2Rt YV9vcGVuKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LA0KPiAgIAkJCSAgc3Ry dWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0pDQo+ICAgew0KPiAgIAlpbnQgcmV0ID0g MDsNCj4gKw0KPiAgIAlzdHJ1Y3Qgc25kX3BjbV9ydW50aW1lICpydW50aW1lID0gc3Vic3RyZWFt LT5ydW50aW1lOw0KPiArCXN0cnVjdCBzbmRfc29jX3BjbV9ydW50aW1lICpwcnRkID0gc3Vic3Ry ZWFtLT5wcml2YXRlX2RhdGE7DQo+ICsNCj4gKwljb21wb25lbnQgPSBzbmRfc29jX3J0ZGNvbV9s b29rdXAocHJ0ZCwgRFJWX05BTUUpOw0KPiAgIAlzdHJ1Y3QgaTJzX2Rldl9kYXRhICphZGF0YSA9 IGRldl9nZXRfZHJ2ZGF0YShjb21wb25lbnQtPmRldik7DQo+ICAgCXN0cnVjdCBpMnNfc3RyZWFt X2luc3RhbmNlICppMnNfZGF0YSA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBpMnNfc3RyZWFtX2lu c3RhbmNlKSwNCj4gICAJCQkJCQkgICAgICAgR0ZQX0tFUk5FTCk7DQo+IEBAIC0zMTIsMjMgKzI5 OCw2IEBAIHN0YXRpYyBpbnQgYWNwM3hfZG1hX29wZW4oc3RydWN0IHNuZF9zb2NfY29tcG9uZW50 ICpjb21wb25lbnQsDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB1NjQg YWNwX2dldF9ieXRlX2NvdW50KHN0cnVjdCBpMnNfc3RyZWFtX2luc3RhbmNlICpydGQsIGludCBk aXJlY3Rpb24pDQo+IC17DQo+IC0JdTY0IGJ5dGVfY291bnQ7DQo+IC0NCj4gLQlpZiAoZGlyZWN0 aW9uID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0spIHsNCj4gLQkJYnl0ZV9jb3VudCA9IHJ2 X3JlYWRsKHJ0ZC0+YWNwM3hfYmFzZSArDQo+IC0JCQkJICAgICAgbW1BQ1BfQlRfVFhfTElORUFS UE9TSVRJT05DTlRSX0hJR0gpOw0KPiAtCQlieXRlX2NvdW50IHw9IHJ2X3JlYWRsKHJ0ZC0+YWNw M3hfYmFzZSArDQo+IC0JCQkJICAgICAgIG1tQUNQX0JUX1RYX0xJTkVBUlBPU0lUSU9OQ05UUl9M T1cpOw0KPiAtCX0gZWxzZSB7DQo+IC0JCWJ5dGVfY291bnQgPSBydl9yZWFkbChydGQtPmFjcDN4 X2Jhc2UgKw0KPiAtCQkJCSAgICAgIG1tQUNQX0JUX1JYX0xJTkVBUlBPU0lUSU9OQ05UUl9ISUdI KTsNCj4gLQkJYnl0ZV9jb3VudCB8PSBydl9yZWFkbChydGQtPmFjcDN4X2Jhc2UgKw0KPiAtCQkJ CSAgICAgICBtbUFDUF9CVF9SWF9MSU5FQVJQT1NJVElPTkNOVFJfTE9XKTsNCj4gLQl9DQo+IC0J cmV0dXJuIGJ5dGVfY291bnQ7DQo+IC19DQo+ICAgDQo+ICAgc3RhdGljIGludCBhY3AzeF9kbWFf aHdfcGFyYW1zKHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LA0KPiAgIAkJCSAg ICAgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0gKnN1YnN0cmVhbSwNCj4gQEAgLTM4MCw2ICsz NDksNyBAQCBzdGF0aWMgc25kX3BjbV91ZnJhbWVzX3QgYWNwM3hfZG1hX3BvaW50ZXIoc3RydWN0 IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQsDQo+ICAgc3RhdGljIGludCBhY3AzeF9kbWFf bmV3KHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50LA0KPiAgIAkJCSBzdHJ1Y3Qg c25kX3NvY19wY21fcnVudGltZSAqcnRkKQ0KPiAgIHsNCj4gKwljb21wb25lbnQgPSBzbmRfc29j X3J0ZGNvbV9sb29rdXAocnRkLCBEUlZfTkFNRSk7DQo+ICAgCXN0cnVjdCBkZXZpY2UgKnBhcmVu dCA9IGNvbXBvbmVudC0+ZGV2LT5wYXJlbnQ7DQo+ICAgCXNuZF9wY21fbGliX3ByZWFsbG9jYXRl X3BhZ2VzX2Zvcl9hbGwocnRkLT5wY20sIFNORFJWX0RNQV9UWVBFX0RFViwNCj4gICAJCQkJCSAg ICAgIHBhcmVudCwgTUlOX0JVRkZFUiwgTUFYX0JVRkZFUik7DQo+IEBAIC00MDIsNyArMzcyLDkg QEAgc3RhdGljIGludCBhY3AzeF9kbWFfbW1hcChzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNv bXBvbmVudCwNCj4gICBzdGF0aWMgaW50IGFjcDN4X2RtYV9jbG9zZShzdHJ1Y3Qgc25kX3NvY19j b21wb25lbnQgKmNvbXBvbmVudCwNCj4gICAJCQkgICBzdHJ1Y3Qgc25kX3BjbV9zdWJzdHJlYW0g KnN1YnN0cmVhbSkNCj4gICB7DQo+ICsJc3RydWN0IHNuZF9zb2NfcGNtX3J1bnRpbWUgKnBydGQg PSBzdWJzdHJlYW0tPnByaXZhdGVfZGF0YTsNCj4gICAJc3RydWN0IGkyc19zdHJlYW1faW5zdGFu Y2UgKnJ0ZCA9IHN1YnN0cmVhbS0+cnVudGltZS0+cHJpdmF0ZV9kYXRhOw0KPiArCWNvbXBvbmVu dCA9IHNuZF9zb2NfcnRkY29tX2xvb2t1cChwcnRkLCBEUlZfTkFNRSk7DQo+ICAgCXN0cnVjdCBp MnNfZGV2X2RhdGEgKmFkYXRhID0gZGV2X2dldF9kcnZkYXRhKGNvbXBvbmVudC0+ZGV2KTsNCj4g ICANCj4gICAJaWYgKHN1YnN0cmVhbS0+c3RyZWFtID09IFNORFJWX1BDTV9TVFJFQU1fUExBWUJB Q0spDQo+IEBAIC00MTksMTgyICszOTEsNiBAQCBzdGF0aWMgaW50IGFjcDN4X2RtYV9jbG9zZShz dHJ1Y3Qgc25kX3NvY19jb21wb25lbnQgKmNvbXBvbmVudCwNCj4gICAJcmV0dXJuIDA7DQo+ICAg fQ0KPiAgIA0KPiAtc3RhdGljIGludCBhY3AzeF9kYWlfaTJzX3NldF9mbXQoc3RydWN0IHNuZF9z b2NfZGFpICpjcHVfZGFpLCB1bnNpZ25lZCBpbnQgZm10KQ0KPiAtew0KPiAtDQo+IC0Jc3RydWN0 IGkyc19kZXZfZGF0YSAqYWRhdGEgPSBzbmRfc29jX2RhaV9nZXRfZHJ2ZGF0YShjcHVfZGFpKTsN Cj4gLQ0KPiAtCXN3aXRjaCAoZm10ICYgU05EX1NPQ19EQUlGTVRfRk9STUFUX01BU0spIHsNCj4g LQljYXNlIFNORF9TT0NfREFJRk1UX0kyUzoNCj4gLQkJYWRhdGEtPnRkbV9tb2RlID0gZmFsc2U7 DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgU05EX1NPQ19EQUlGTVRfRFNQX0E6DQo+IC0JCWFkYXRh LT50ZG1fbW9kZSA9IHRydWU7DQo+IC0JCWJyZWFrOw0KPiAtCWRlZmF1bHQ6DQo+IC0JCXJldHVy biAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0KPiAtCXJldHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0 aWMgaW50IGFjcDN4X2RhaV9zZXRfdGRtX3Nsb3Qoc3RydWN0IHNuZF9zb2NfZGFpICpjcHVfZGFp LCB1MzIgdHhfbWFzaywNCj4gLQkJCQkgIHUzMiByeF9tYXNrLCBpbnQgc2xvdHMsIGludCBzbG90 X3dpZHRoKQ0KPiAtew0KPiAtCXUzMiB2YWwgPSAwOw0KPiAtCXUxNiBzbG90X2xlbjsNCj4gLQ0K PiAtCXN0cnVjdCBpMnNfZGV2X2RhdGEgKmFkYXRhID0gc25kX3NvY19kYWlfZ2V0X2RydmRhdGEo Y3B1X2RhaSk7DQo+IC0NCj4gLQlzd2l0Y2ggKHNsb3Rfd2lkdGgpIHsNCj4gLQljYXNlIFNMT1Rf V0lEVEhfODoNCj4gLQkJc2xvdF9sZW4gPSA4Ow0KPiAtCQlicmVhazsNCj4gLQljYXNlIFNMT1Rf V0lEVEhfMTY6DQo+IC0JCXNsb3RfbGVuID0gMTY7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgU0xP VF9XSURUSF8yNDoNCj4gLQkJc2xvdF9sZW4gPSAyNDsNCj4gLQkJYnJlYWs7DQo+IC0JY2FzZSBT TE9UX1dJRFRIXzMyOg0KPiAtCQlzbG90X2xlbiA9IDA7DQo+IC0JCWJyZWFrOw0KPiAtCWRlZmF1 bHQ6DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQ0KPiAtCXZhbCA9IHJ2X3JlYWRs KGFkYXRhLT5hY3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVRFUik7DQo+IC0JcnZfd3JpdGVsKCh2 YWwgfCAweDIpLCBhZGF0YS0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lURVIpOw0KPiAtCXZh bCA9IHJ2X3JlYWRsKGFkYXRhLT5hY3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVJFUik7DQo+IC0J cnZfd3JpdGVsKCh2YWwgfCAweDIpLCBhZGF0YS0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lS RVIpOw0KPiAtDQo+IC0JdmFsID0gKEZSTV9MRU4gfCAoc2xvdHMgPDwgMTUpIHwgKHNsb3RfbGVu IDw8IDE4KSk7DQo+IC0JcnZfd3JpdGVsKHZhbCwgYWRhdGEtPmFjcDN4X2Jhc2UgKyBtbUFDUF9C VFRETV9UWEZSTVQpOw0KPiAtCXJ2X3dyaXRlbCh2YWwsIGFkYXRhLT5hY3AzeF9iYXNlICsgbW1B Q1BfQlRURE1fUlhGUk1UKTsNCj4gLQ0KPiAtCWFkYXRhLT50ZG1fZm10ID0gdmFsOw0KPiAtCXJl dHVybiAwOw0KPiAtfQ0KPiAtDQo+IC1zdGF0aWMgaW50IGFjcDN4X2RhaV9pMnNfaHdwYXJhbXMo c3RydWN0IHNuZF9wY21fc3Vic3RyZWFtICpzdWJzdHJlYW0sDQo+IC0JCQkJICBzdHJ1Y3Qgc25k X3BjbV9od19wYXJhbXMgKnBhcmFtcywNCj4gLQkJCQkgIHN0cnVjdCBzbmRfc29jX2RhaSAqZGFp KQ0KPiAtew0KPiAtCXUzMiB2YWwgPSAwOw0KPiAtCXN0cnVjdCBpMnNfc3RyZWFtX2luc3RhbmNl ICpydGQgPSBzdWJzdHJlYW0tPnJ1bnRpbWUtPnByaXZhdGVfZGF0YTsNCj4gLQ0KPiAtCXN3aXRj aCAocGFyYW1zX2Zvcm1hdChwYXJhbXMpKSB7DQo+IC0JY2FzZSBTTkRSVl9QQ01fRk9STUFUX1U4 Og0KPiAtCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TODoNCj4gLQkJcnRkLT54ZmVyX3Jlc29sdXRp b24gPSAweDA7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2UgU05EUlZfUENNX0ZPUk1BVF9TMTZfTEU6 DQo+IC0JCXJ0ZC0+eGZlcl9yZXNvbHV0aW9uID0gMHgwMjsNCj4gLQkJYnJlYWs7DQo+IC0JY2Fz ZSBTTkRSVl9QQ01fRk9STUFUX1MyNF9MRToNCj4gLQkJcnRkLT54ZmVyX3Jlc29sdXRpb24gPSAw eDA0Ow0KPiAtCQlicmVhazsNCj4gLQljYXNlIFNORFJWX1BDTV9GT1JNQVRfUzMyX0xFOg0KPiAt CQlydGQtPnhmZXJfcmVzb2x1dGlvbiA9IDB4MDU7DQo+IC0JCWJyZWFrOw0KPiAtCWRlZmF1bHQ6 DQo+IC0JCXJldHVybiAtRUlOVkFMOw0KPiAtCX0NCj4gLQl2YWwgPSBydl9yZWFkbChydGQtPmFj cDN4X2Jhc2UgKyBtbUFDUF9CVFRETV9JVEVSKTsNCj4gLQl2YWwgPSB2YWwgfCAocnRkLT54ZmVy X3Jlc29sdXRpb24gIDw8IDMpOw0KPiAtCWlmIChzdWJzdHJlYW0tPnN0cmVhbSA9PSBTTkRSVl9Q Q01fU1RSRUFNX1BMQVlCQUNLKQ0KPiAtCQlydl93cml0ZWwodmFsLCBydGQtPmFjcDN4X2Jhc2Ug KyBtbUFDUF9CVFRETV9JVEVSKTsNCj4gLQllbHNlDQo+IC0JCXJ2X3dyaXRlbCh2YWwsIHJ0ZC0+ YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lSRVIpOw0KPiAtDQo+IC0JcmV0dXJuIDA7DQo+IC19 DQo+IC0NCj4gLXN0YXRpYyBpbnQgYWNwM3hfZGFpX2kyc190cmlnZ2VyKHN0cnVjdCBzbmRfcGNt X3N1YnN0cmVhbSAqc3Vic3RyZWFtLA0KPiAtCQkJCSBpbnQgY21kLCBzdHJ1Y3Qgc25kX3NvY19k YWkgKmRhaSkNCj4gLXsNCj4gLQlpbnQgcmV0ID0gMDsNCj4gLQlzdHJ1Y3QgaTJzX3N0cmVhbV9p bnN0YW5jZSAqcnRkID0gc3Vic3RyZWFtLT5ydW50aW1lLT5wcml2YXRlX2RhdGE7DQo+IC0JdTMy IHZhbCwgcGVyaW9kX2J5dGVzOw0KPiAtDQo+IC0JcGVyaW9kX2J5dGVzID0gZnJhbWVzX3RvX2J5 dGVzKHN1YnN0cmVhbS0+cnVudGltZSwNCj4gLQkJCQkgICAgICAgc3Vic3RyZWFtLT5ydW50aW1l LT5wZXJpb2Rfc2l6ZSk7DQo+IC0Jc3dpdGNoIChjbWQpIHsNCj4gLQljYXNlIFNORFJWX1BDTV9U UklHR0VSX1NUQVJUOg0KPiAtCWNhc2UgU05EUlZfUENNX1RSSUdHRVJfUkVTVU1FOg0KPiAtCWNh c2UgU05EUlZfUENNX1RSSUdHRVJfUEFVU0VfUkVMRUFTRToNCj4gLQkJcnRkLT5ieXRlc2NvdW50 ID0gYWNwX2dldF9ieXRlX2NvdW50KHJ0ZCwgc3Vic3RyZWFtLT5zdHJlYW0pOw0KPiAtCQlpZiAo c3Vic3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgew0KPiAtCQkJ cnZfd3JpdGVsKHBlcmlvZF9ieXRlcywgcnRkLT5hY3AzeF9iYXNlICsNCj4gLQkJCQkgIG1tQUNQ X0JUX1RYX0lOVFJfV0FURVJNQVJLX1NJWkUpOw0KPiAtCQkJdmFsID0gcnZfcmVhZGwocnRkLT5h Y3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVRFUik7DQo+IC0JCQl2YWwgPSB2YWwgfCBCSVQoMCk7 DQo+IC0JCQlydl93cml0ZWwodmFsLCBydGQtPmFjcDN4X2Jhc2UgKyBtbUFDUF9CVFRETV9JVEVS KTsNCj4gLQkJfSBlbHNlIHsNCj4gLQkJCXJ2X3dyaXRlbChwZXJpb2RfYnl0ZXMsIHJ0ZC0+YWNw M3hfYmFzZSArDQo+IC0JCQkJICBtbUFDUF9CVF9SWF9JTlRSX1dBVEVSTUFSS19TSVpFKTsNCj4g LQkJCXZhbCA9IHJ2X3JlYWRsKHJ0ZC0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lSRVIpOw0K PiAtCQkJdmFsID0gdmFsIHwgQklUKDApOw0KPiAtCQkJcnZfd3JpdGVsKHZhbCwgcnRkLT5hY3Az eF9iYXNlICsgbW1BQ1BfQlRURE1fSVJFUik7DQo+IC0JCX0NCj4gLQkJcnZfd3JpdGVsKDEsIHJ0 ZC0+YWNwM3hfYmFzZSArIG1tQUNQX0JUVERNX0lFUik7DQo+IC0JCWJyZWFrOw0KPiAtCWNhc2Ug U05EUlZfUENNX1RSSUdHRVJfU1RPUDoNCj4gLQljYXNlIFNORFJWX1BDTV9UUklHR0VSX1NVU1BF TkQ6DQo+IC0JY2FzZSBTTkRSVl9QQ01fVFJJR0dFUl9QQVVTRV9QVVNIOg0KPiAtCQlpZiAoc3Vi c3RyZWFtLT5zdHJlYW0gPT0gU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSykgew0KPiAtCQkJdmFs ID0gcnZfcmVhZGwocnRkLT5hY3AzeF9iYXNlICsgbW1BQ1BfQlRURE1fSVRFUik7DQo+IC0JCQl2 YWwgPSB2YWwgJiB+QklUKDApOw0KPiAtCQkJcnZfd3JpdGVsKHZhbCwgcnRkLT5hY3AzeF9iYXNl ICsgbW1BQ1BfQlRURE1fSVRFUik7DQo+IC0JCX0gZWxzZSB7DQo+IC0JCQl2YWwgPSBydl9yZWFk bChydGQtPmFjcDN4X2Jhc2UgKyBtbUFDUF9CVFRETV9JUkVSKTsNCj4gLQkJCXZhbCA9IHZhbCAm IH5CSVQoMCk7DQo+IC0JCQlydl93cml0ZWwodmFsLCBydGQtPmFjcDN4X2Jhc2UgKyBtbUFDUF9C VFRETV9JUkVSKTsNCj4gLQkJfQ0KPiAtCQlydl93cml0ZWwoMCwgcnRkLT5hY3AzeF9iYXNlICsg bW1BQ1BfQlRURE1fSUVSKTsNCj4gLQkJYnJlYWs7DQo+IC0JZGVmYXVsdDoNCj4gLQkJcmV0ID0g LUVJTlZBTDsNCj4gLQkJYnJlYWs7DQo+IC0JfQ0KPiAtDQo+IC0JcmV0dXJuIHJldDsNCj4gLX0N Cj4gLQ0KPiAtc3RhdGljIHN0cnVjdCBzbmRfc29jX2RhaV9vcHMgYWNwM3hfZGFpX2kyc19vcHMg PSB7DQo+IC0JLmh3X3BhcmFtcyA9IGFjcDN4X2RhaV9pMnNfaHdwYXJhbXMsDQo+IC0JLnRyaWdn ZXIgICA9IGFjcDN4X2RhaV9pMnNfdHJpZ2dlciwNCj4gLQkuc2V0X2ZtdCA9IGFjcDN4X2RhaV9p MnNfc2V0X2ZtdCwNCj4gLQkuc2V0X3RkbV9zbG90ID0gYWNwM3hfZGFpX3NldF90ZG1fc2xvdCwN Cj4gLX07DQo+IC0NCj4gLXN0YXRpYyBzdHJ1Y3Qgc25kX3NvY19kYWlfZHJpdmVyIGFjcDN4X2ky c19kYWlfZHJpdmVyID0gew0KPiAtCS5wbGF5YmFjayA9IHsNCj4gLQkJLnJhdGVzID0gU05EUlZf UENNX1JBVEVfODAwMF85NjAwMCwNCj4gLQkJLmZvcm1hdHMgPSBTTkRSVl9QQ01fRk1UQklUX1Mx Nl9MRSB8IFNORFJWX1BDTV9GTVRCSVRfUzggfA0KPiAtCQkJCQlTTkRSVl9QQ01fRk1UQklUX1U4 IHwNCj4gLQkJCQkJU05EUlZfUENNX0ZNVEJJVF9TMjRfTEUgfA0KPiAtCQkJCQlTTkRSVl9QQ01f Rk1UQklUX1MzMl9MRSwNCj4gLQkJLmNoYW5uZWxzX21pbiA9IDIsDQo+IC0JCS5jaGFubmVsc19t YXggPSA4LA0KPiAtDQo+IC0JCS5yYXRlX21pbiA9IDgwMDAsDQo+IC0JCS5yYXRlX21heCA9IDk2 MDAwLA0KPiAtCX0sDQo+IC0JLmNhcHR1cmUgPSB7DQo+IC0JCS5yYXRlcyA9IFNORFJWX1BDTV9S QVRFXzgwMDBfNDgwMDAsDQo+IC0JCS5mb3JtYXRzID0gU05EUlZfUENNX0ZNVEJJVF9TMTZfTEUg fCBTTkRSVl9QQ01fRk1UQklUX1M4IHwNCj4gLQkJCQkJU05EUlZfUENNX0ZNVEJJVF9VOCB8DQo+ IC0JCQkJCVNORFJWX1BDTV9GTVRCSVRfUzI0X0xFIHwNCj4gLQkJCQkJU05EUlZfUENNX0ZNVEJJ VF9TMzJfTEUsDQo+IC0JCS5jaGFubmVsc19taW4gPSAyLA0KPiAtCQkuY2hhbm5lbHNfbWF4ID0g MiwNCj4gLQkJLnJhdGVfbWluID0gODAwMCwNCj4gLQkJLnJhdGVfbWF4ID0gNDgwMDAsDQo+IC0J fSwNCj4gLQkub3BzID0gJmFjcDN4X2RhaV9pMnNfb3BzLA0KPiAtfTsNCj4gLQ0KPiAgIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19jb21wb25lbnRfZHJpdmVyIGFjcDN4X2kyc19jb21wb25l bnQgPSB7DQo+ICAgCS5uYW1lCQk9IERSVl9OQU1FLA0KPiAgIAkub3BlbgkJPSBhY3AzeF9kbWFf b3BlbiwNCj4gQEAgLTYxOSw2ICs0MTUsOSBAQCBzdGF0aWMgaW50IGFjcDN4X2F1ZGlvX3Byb2Jl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAgCQlyZXR1cm4gLUVOT0RFVjsNCj4g ICAJfQ0KPiAgIAlpcnFmbGFncyA9ICooKHVuc2lnbmVkIGludCAqKShwZGV2LT5kZXYucGxhdGZv cm1fZGF0YSkpOw0KPiArCWFkYXRhID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigq YWRhdGEpLCBHRlBfS0VSTkVMKTsNCj4gKwlpZiAoIWFkYXRhKQ0KPiArCQlyZXR1cm4gLUVOT01F TTsNCj4gICANCj4gICAJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVTT1VS Q0VfTUVNLCAwKTsNCj4gICAJaWYgKCFyZXMpIHsNCj4gQEAgLTYyNiwxMCArNDI1LDYgQEAgc3Rh dGljIGludCBhY3AzeF9hdWRpb19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0K PiAgIAkJcmV0dXJuIC1FTk9ERVY7DQo+ICAgCX0NCj4gICANCj4gLQlhZGF0YSA9IGRldm1fa3ph bGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKmFkYXRhKSwgR0ZQX0tFUk5FTCk7DQo+IC0JaWYgKCFh ZGF0YSkNCj4gLQkJcmV0dXJuIC1FTk9NRU07DQo+IC0NCj4gICAJYWRhdGEtPmFjcDN4X2Jhc2Ug PSBkZXZtX2lvcmVtYXAoJnBkZXYtPmRldiwgcmVzLT5zdGFydCwNCj4gICAJCQkJCSByZXNvdXJj ZV9zaXplKHJlcykpOw0KPiAgIA0KPiBAQCAtNjUwLDkgKzQ0NSw5IEBAIHN0YXRpYyBpbnQgYWNw M3hfYXVkaW9fcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gICAJCXJldHVy biAtRU5PREVWOw0KPiAgIAlzdGF0dXMgPSBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50 KCZwZGV2LT5kZXYsDQo+ICAgCQkJCQkJICZhY3AzeF9pMnNfY29tcG9uZW50LA0KPiAtCQkJCQkJ ICZhY3AzeF9pMnNfZGFpX2RyaXZlciwgMSk7DQo+ICsJCQkJCQkgTlVMTCwgMCk7DQo+ICAgCWlm IChzdGF0dXMpIHsNCj4gLQkJZGV2X2VycigmcGRldi0+ZGV2LCAiRmFpbCB0byByZWdpc3RlciBh Y3AgaTJzIGRhaVxuIik7DQo+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkZhaWwgdG8gcmVnaXN0 ZXIgYWNwIGkycyBjb21wb25lbnRcbiIpOw0KPiAgIAkJZ290byBkZXZfZXJyOw0KPiAgIAl9DQo+ ICAgCXN0YXR1cyA9IGRldm1fcmVxdWVzdF9pcnEoJnBkZXYtPmRldiwgYWRhdGEtPmkyc19pcnEs IGkyc19pcnFfaGFuZGxlciwNCj4gQEAgLTc3NCwxMyArNTY5LDE0IEBAIHN0YXRpYyBzdHJ1Y3Qg cGxhdGZvcm1fZHJpdmVyIGFjcDN4X2RtYV9kcml2ZXIgPSB7DQo+ICAgCS5wcm9iZSA9IGFjcDN4 X2F1ZGlvX3Byb2JlLA0KPiAgIAkucmVtb3ZlID0gYWNwM3hfYXVkaW9fcmVtb3ZlLA0KPiAgIAku ZHJpdmVyID0gew0KPiAtCQkubmFtZSA9ICJhY3AzeF9ydl9pMnMiLA0KPiArCQkubmFtZSA9ICJh Y3AzeF9ydl9pMnNfZG1hIiwNCj4gICAJCS5wbSA9ICZhY3AzeF9wbV9vcHMsDQo+ICAgCX0sDQo+ ICAgfTsNCj4gICANCj4gICBtb2R1bGVfcGxhdGZvcm1fZHJpdmVyKGFjcDN4X2RtYV9kcml2ZXIp Ow0KPiAgIA0KPiArTU9EVUxFX0FVVEhPUigiVmlzaG51dmFyZGhhbnJhby5SYXZ1bGFwYXRpQGFt ZC5jb20iKTsNCj4gICBNT0RVTEVfQVVUSE9SKCJNYXJ1dGhpLkJheXlhdmFyYXB1QGFtZC5jb20i KTsNCj4gICBNT0RVTEVfQVVUSE9SKCJWaWplbmRhci5NdWt1bmRhQGFtZC5jb20iKTsNCj4gICBN T0RVTEVfREVTQ1JJUFRJT04oIkFNRCBBQ1AgMy54IFBDTSBEcml2ZXIiKTsNCj4gZGlmZiAtLWdp dCBhL3NvdW5kL3NvYy9hbWQvcmF2ZW4vYWNwM3guaCBiL3NvdW5kL3NvYy9hbWQvcmF2ZW4vYWNw M3guaA0KPiBpbmRleCAyZjE1ZmUxLi43MmMxYTIzIDEwMDY0NA0KPiAtLS0gYS9zb3VuZC9zb2Mv YW1kL3JhdmVuL2FjcDN4LmgNCj4gKysrIGIvc291bmQvc29jL2FtZC9yYXZlbi9hY3AzeC5oDQo+ IEBAIC01MSw2ICs1MSwyOSBAQA0KPiAgICNkZWZpbmUgU0xPVF9XSURUSF8yNCAweDE4DQo+ICAg I2RlZmluZSBTTE9UX1dJRFRIXzMyIDB4MjANCj4gICANCj4gK3N0cnVjdCBhY3AzeF9wbGF0Zm9y bV9pbmZvIHsNCj4gKwl1MTYgcGxheV9pMnNfaW5zdGFuY2U7DQo+ICsJdTE2IGNhcF9pMnNfaW5z dGFuY2U7DQo+ICsJdTE2IGNhcHR1cmVfY2hhbm5lbDsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBp MnNfZGV2X2RhdGEgew0KPiArCWJvb2wgdGRtX21vZGU7DQo+ICsJdW5zaWduZWQgaW50IGkyc19p cnE7DQo+ICsJdTMyIHRkbV9mbXQ7DQo+ICsJdm9pZCBfX2lvbWVtICphY3AzeF9iYXNlOw0KPiAr CXN0cnVjdCBzbmRfcGNtX3N1YnN0cmVhbSAqcGxheV9zdHJlYW07DQo+ICsJc3RydWN0IHNuZF9w Y21fc3Vic3RyZWFtICpjYXB0dXJlX3N0cmVhbTsNCj4gK307DQo+ICsNCj4gK3N0cnVjdCBpMnNf c3RyZWFtX2luc3RhbmNlIHsNCj4gKwl1MTYgbnVtX3BhZ2VzOw0KPiArCXUxNiBjaGFubmVsczsN Cj4gKwl1MzIgeGZlcl9yZXNvbHV0aW9uOw0KPiArCXU2NCBieXRlc2NvdW50Ow0KPiArCWRtYV9h ZGRyX3QgZG1hX2FkZHI7DQo+ICsJdm9pZCBfX2lvbWVtICphY3AzeF9iYXNlOw0KPiArfTsNCj4g ICANCj4gICBzdGF0aWMgaW5saW5lIHUzMiBydl9yZWFkbCh2b2lkIF9faW9tZW0gKmJhc2VfYWRk cikNCj4gICB7DQo+IEBAIC02MSwzICs4NCwyMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcnZfd3Jp dGVsKHUzMiB2YWwsIHZvaWQgX19pb21lbSAqYmFzZV9hZGRyKQ0KPiAgIHsNCj4gICAJd3JpdGVs KHZhbCwgYmFzZV9hZGRyIC0gQUNQM3hfUEhZX0JBU0VfQUREUkVTUyk7DQo+ICAgfQ0KPiArDQo+ ICtzdGF0aWMgaW5saW5lIHU2NCBhY3BfZ2V0X2J5dGVfY291bnQoc3RydWN0IGkyc19zdHJlYW1f aW5zdGFuY2UgKnJ0ZCwNCj4gKwkJCQkJCQlpbnQgZGlyZWN0aW9uKQ0KPiArew0KPiArCXU2NCBi eXRlX2NvdW50Ow0KPiArDQo+ICsJaWYgKGRpcmVjdGlvbiA9PSBTTkRSVl9QQ01fU1RSRUFNX1BM QVlCQUNLKSB7DQo+ICsJCWJ5dGVfY291bnQgPSBydl9yZWFkbChydGQtPmFjcDN4X2Jhc2UgKw0K PiArCQkJCW1tQUNQX0JUX1RYX0xJTkVBUlBPU0lUSU9OQ05UUl9ISUdIKTsNCj4gKwkJYnl0ZV9j b3VudCB8PSBydl9yZWFkbChydGQtPmFjcDN4X2Jhc2UgKw0KPiArCQkJCW1tQUNQX0JUX1RYX0xJ TkVBUlBPU0lUSU9OQ05UUl9MT1cpOw0KPiArCX0gZWxzZSB7DQo+ICsJCWJ5dGVfY291bnQgPSBy dl9yZWFkbChydGQtPmFjcDN4X2Jhc2UgKw0KPiArCQkJCW1tQUNQX0JUX1JYX0xJTkVBUlBPU0lU SU9OQ05UUl9ISUdIKTsNCj4gKwkJYnl0ZV9jb3VudCB8PSBydl9yZWFkbChydGQtPmFjcDN4X2Jh c2UgKw0KPiArCQkJCW1tQUNQX0JUX1JYX0xJTkVBUlBPU0lUSU9OQ05UUl9MT1cpOw0KPiArCX0N Cj4gKwlyZXR1cm4gYnl0ZV9jb3VudDsNCj4gK30NCj4gDQo=