Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754846AbbFRKQX (ORCPT ); Thu, 18 Jun 2015 06:16:23 -0400 Received: from mail-bn1on0088.outbound.protection.outlook.com ([157.56.110.88]:24400 "EHLO na01-bn1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753318AbbFRKQL (ORCPT ); Thu, 18 Jun 2015 06:16:11 -0400 Authentication-Results: spf=pass (sender IP is 149.199.60.83) smtp.mailfrom=xilinx.com; lists.infradead.org; dkim=none (message not signed) header.d=none; From: Appana Durga Kedareswara Rao To: Nicolae Rosia CC: "vinod.koul@intel.com" , "dan.j.williams@intel.com" , Michal Simek , "Soren Brinkmann" , Anirudha Sarangi , Punnaiah Choudary Kalluri , "dmaengine@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , Srikanth Thokala Subject: RE: [PATCH v7] dma: Add Xilinx AXI Direct Memory Access Engine driver support Thread-Topic: [PATCH v7] dma: Add Xilinx AXI Direct Memory Access Engine driver support Thread-Index: AQHQon9A9kU/tLGXRkiyV8/V08t2PJ2vB6qAgAMRn3A= Date: Thu, 18 Jun 2015 10:16:01 +0000 Message-ID: References: <1433831736-18253-1-git-send-email-appanad@xilinx.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [172.23.96.13] Content-Type: multipart/mixed; boundary="_003_C246CAC1457055469EF09E3A7AC4E11A49A8FF04XAPPVEXMBX01xln_" MIME-Version: 1.0 X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.0.0.1202-21620.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11FD007;1:DKE1+yqcxyjNKJphJOliIZuNBHwJm5sagJ3ISbgrPwGp8Ci4uD+VSBL7s67JS0s8cNuNSaXazHf8XlbvWVaQO6rI2AekRM7iuPHOZvHOXidA1gYM0WXBqmfuyqLt2kd/+KwFA90+jb9vYhoFrmvE4Wz6LXUC+/T2ucMWMpIZdC3EB5ZPdl4Rf/uIayZmLsQH1+mWVQnwR13Y6Glt9yDk/MFKBgb1gnkfMt1B5NOpLcBXUTbfM26mPIxt+81/FE1J5cLO9swjbsd4HAlRwwjsYzYFPnS0CAnofk8LGgru3IV5PYWYOffk3WC+g2gJMGxT2ksHLoM17xDydiGtWwxFArVaPI/IwACgK+RAtVR6gXY= X-Forefront-Antispam-Report: CIP:149.199.60.83;CTRY:US;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(10009020)(979002)(6009001)(2980300002)(438002)(51914003)(24454002)(13464003)(50944005)(51704005)(164054003)(52314003)(377454003)(189002)(199003)(63266004)(92566002)(4610100001)(46102003)(551934003)(6806004)(33656002)(19580405001)(568964001)(77156002)(55846006)(50986999)(76176999)(99936001)(512874002)(84326002)(15395725005)(5260100001)(4810100001)(5250100002)(575784001)(86362001)(2656002)(87936001)(5003600100002)(107886002)(5001960100002)(2950100001)(1720100001)(62966003)(15975445007)(54356999)(102836002)(2920100001)(5890100001)(106116001)(189998001)(2900100001)(19580395003)(110136002)(106466001)(10126625002)(2004002)(107986001)(4001430100001)(579004)(559001)(969003)(989001)(999001)(1009001)(1019001);DIR:OUT;SFP:1101;SCL:1;SRVR:BN1AFFO11HUB034;H:xsj-pvapsmtpgw01;FPR:;SPF:Pass;MLV:ovrnspm;MX:1;A:1;PTR:unknown-60-83.xilinx.com;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB034;2:/cvkxQxAGYAVDNnHapPV73a8zfyF3bnipLvRe94lt2qJne7/N0qWs5394bfZGps0;2:rlnSVDUneryxsa+d+vi/54z9dNZtdrNGNFqLV8Vk+vW7Nb8mI8as0jXOTUa/hwsV9HYglUxqDgGBdKvhq2erFecWGpfvDwYjwL6kNNUEMqh1pYSbbSWAdq3HP39ew8mUt7i/VNpPGN/6FSBP4ujNIY9nI1c1fmk76Vrre1A9prF8m2GKWl1LCyFwBEE55YQPraR4wkmQCw77v6OHaUes8/QeaFlQtD+11th4ftdY3F8=;6:MJNO7tM6SWWRYNpxx3JL0+Gr45oQ8JAYNVTM17IfkN9XUtS2e3INK0oTLNv3BoqO9u5Hneyqd8iLgjDS9uV3CzOriHMFPRmhMkRz8RKfpdVeTqaQCQgnyGlf9DCCdLGG0C7bReYX2C3tUjNa5koK50zw0EUxwpvVbp9Nmhu0PKZJeRoTiNEyJ5tn+OWpONrZIdA56h6wQXVipNpiycJxHCy70GeYcRxhOBjdWASSVxL8MC7x8Ntj1jFM4Q9DRMTUBvm61tADM1li+LY81ZFJqTTJK4Zyq3koCAfUM+WWQCyVn/BpfCpHVSiuSWy8djesTTb3gMWNIXMZrH/8YQmO1sR9wDqLp/Y3UvLoZ/qwRNrSHbvI4LricisKL+hqPZIi+pHw3cVLtQzhdoUGpT3nmIUy9uywzP4g3ew2+XfaPuQpkoppN2Jiw2oXY45Oqc1wNrvCUomMo0PR8wKb+5/Vv/VXnjnx1JLnSUUhD89r4HEA7eBvSk5u7hN8Qb+Fy08J X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB034; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5005006)(520003)(3002001);SRVR:BN1AFFO11HUB034;BCL:0;PCL:0;RULEID:;SRVR:BN1AFFO11HUB034; X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB034;3:vSrE8gSFNndEhp71pgn86yJT4ARs+6VoRVQhHl0n+dE0Prhw0SkwHJ0X1iZ03FvQTn5K02c1UTAVmLGGrCx1TtT1wV/+Bj+JJvNfWcwI9bUUHHrPJhHvgKE+vBkCgxtVRTn70sZBWG980bX9/qQ8zMg/5DgSQsMFLtq/Jw1qgLVzI3Em8EIDhZ9Aessdtekx6W8YWY164apKWLZ4Oa5BoJo/ur1zSRIgDWWkdu+/l9sNsb57ZqEk1Dq8YHUjVJRNDu0qFnzUp/6jB4/A28gCA/mb1aDHqbti3n0I3aVjB3CwrDLwbkX6065EV67qKcWs X-Forefront-PRVS: 0611A21987 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;BN1AFFO11HUB034;9:KoUILcxFn/f+Hbf77LwPnnpiIcxa8N+5SvbYGx4R?= =?us-ascii?Q?4Q/Ef+VDPkDFwv82tBblgSO6djPNZGvN9UjQjnJjV3kb499CRhEYXIfKLDl4?= =?us-ascii?Q?KWY3tVub0rgGlVL+prPJmhtdlkaareLuW6FTiacvNAWogna/5otxPHssc73X?= =?us-ascii?Q?nM4UxDmDREdU2+LxGTGYbraEcChPiGE2TXPI4Iu7ta9QH2UzoT5krNS00I77?= =?us-ascii?Q?UBorLopylpz5npdDtNDQvgL6B8nV+KFdN6wPTbqvKdvbfFRBDKkgAeHtzosd?= =?us-ascii?Q?QYzXKHRBmxInWzeg+QWCG+49wFg/Wb5F4MFZt3CFrtzO3x/9n7YsmsERE1iB?= =?us-ascii?Q?9ljc1ugpoEuAOFHi1Kenh5m5rkSQ/a44KTNO3zmHffqB8JZKlM2YTcT5YTT+?= =?us-ascii?Q?K7puHr0YSuZi7aHgR+YX1F10f1GSgj+eNZpZ2r8VcessxQSkN4gf96PrfJKL?= =?us-ascii?Q?O+GOrz8r8WSvZELWDWDQE4iFWOgHvdEt7labATmed+oa3uc8dCIynVhRIJmS?= =?us-ascii?Q?JeNoc/s9JF/Yu6Ak3hPouwlZVu0dwEI23TyaHuub+5Yv5S2edvyc8wU5Ix9+?= =?us-ascii?Q?PobPpycv0rM7eH9or3PXpiXLpN5Ty9kPmIXGDdfFEyCt9gXoF1vp4F2iQJUf?= =?us-ascii?Q?KebpaD2lHoib5ORhNI0Bv+LD+YeuFpEXFcgY+uQT1x6mY0bo067S8ctWiuim?= =?us-ascii?Q?erm7ppXj66ZwCKlEqH6/nSKOZhMBUatOrqoBoi1fgJSnqhFGZSbE5OyDDOWs?= =?us-ascii?Q?IRnqXnIjF9626vRf9+FWS1qRoDlJf4KOV3MjvZHU8jNQbdGGPJTlLZKUyzk2?= =?us-ascii?Q?Sl31l8S/7VaIbxtaDAUMjW+hKkPJo90ifnDFqzwAhP4M5W7alcLqeoQhbyqU?= =?us-ascii?Q?x0/uiNqa9qDm/hix4nRhHp2ZRCEjpnrIv0Qt1n69VLPNhQ5IpTRbZIwa1L93?= =?us-ascii?Q?YRB5ZxAWm6cvkgIE4zXE5qRTA4SrzMRAjDK5fdxJ3DGqg+3FGusUtpQt4FCp?= =?us-ascii?Q?4YROeW1IGXEImM6bFtYs3FYrNpvSbXaa2JVweEv3oMDK64z/I97UccrSr3Ua?= =?us-ascii?Q?VpjeiYh15+i5cuMqn5XHl6NYKt6pT7aWwhbUQ97aTeKLp9mjm9Vp8cMj5T/y?= =?us-ascii?Q?rZvuWpfbOXjddls21/M3Wq07ETlA9zz9uh4S0Ov9tsYl9Gh61aQQI32+aDrM?= =?us-ascii?Q?YRBWA5H2UKli3Y0wyQLrs1sEppSh61DzwsIGg/kS+7PjlZIvEC8PqSSwTmq8?= =?us-ascii?Q?sPdCB7hwKpNwNXHWzU7OM5mYokTyqpJof5sYya9HkgUs7JDf2ZmEbgrCSA2a?= =?us-ascii?Q?u7lhDubzo8m0AB6aaBSt4WnI9/rt9Qzhz7TKm54wwkUV/yXw6P1pAiZwBmKR?= =?us-ascii?Q?n53HhiwO4S9q5riNUt7AlHHYRy7bmeo/INrBQFZst5UiblRuWvDbF4aOXD77?= =?us-ascii?Q?EZPVhWpeu/X2H4impUSqvirPrTA6Uu9UKugpWcdnIcOLyLnvvo5QvA/Z+LdN?= =?us-ascii?Q?0VpkTnX3sWYP3H8UyT53vFZ/x1puzBE5/f4Rjabqu8I9Cate0c8cHS7UaJCk?= =?us-ascii?Q?XNxP1yTqa2lk4xwI+9A046bKiK9WB1LYDz7ILVshDQmYZk+3RcrwOHwBBkL7?= =?us-ascii?Q?SlMbFHiMn12AD/XepOL+fA=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1;BN1AFFO11HUB034;3:BFKzvzSAvLapyVKjAcMOEP48NxW381ZDUgQ/XCUZNYjf3hYiREfXXbD5fsgJk/g4RPd0PP49Dp5aStgQpeZE+ROKfFY+uNGr/0G9/3m+S2qB3MCoH9nh4pUzgr2pa4rDx5XBIkfjng0TJrAcLbDujA==;10:EaS+MvWJSmRPoSa2XYSxwCUN4Wdz9VuBiijyGPmTtjAeNsJxRVjCa/Hs6yuabcwScq3MNHf0dGfg7UNCHS/hhCWlNfohXroAT5Y31oOuhVY= X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jun 2015 10:16:07.0785 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c;Ip=[149.199.60.83];Helo=[xsj-pvapsmtpgw01] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN1AFFO11HUB034 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 93514 Lines: 1230 --_003_C246CAC1457055469EF09E3A7AC4E11A49A8FF04XAPPVEXMBX01xln_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNClRoYW5rcyBmb3IgdGhlIGNvbW1lbnRzLg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2Fn ZS0tLS0tDQo+IEZyb206IE5pY29sYWUgUm9zaWEgW21haWx0bzpuaWNvbGFlLnJvc2lhQGdtYWls LmNvbV0NCj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDE3LCAyMDE1IDEyOjUwIEFNDQo+IFRvOiBB cHBhbmEgRHVyZ2EgS2VkYXJlc3dhcmEgUmFvDQo+IENjOiB2aW5vZC5rb3VsQGludGVsLmNvbTsg ZGFuLmoud2lsbGlhbXNAaW50ZWwuY29tOyBNaWNoYWwgU2ltZWs7IFNvcmVuDQo+IEJyaW5rbWFu bjsgQXBwYW5hIER1cmdhIEtlZGFyZXN3YXJhIFJhbzsgQW5pcnVkaGEgU2FyYW5naTsgUHVubmFp YWgNCj4gQ2hvdWRhcnkgS2FsbHVyaTsgZG1hZW5naW5lQHZnZXIua2VybmVsLm9yZzsgbGludXgt DQo+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFk ZWFkLm9yZzsgU3Jpa2FudGgNCj4gVGhva2FsYQ0KPiBTdWJqZWN0OiBSZTogW1BBVENIIHY3XSBk bWE6IEFkZCBYaWxpbnggQVhJIERpcmVjdCBNZW1vcnkgQWNjZXNzIEVuZ2luZQ0KPiBkcml2ZXIg c3VwcG9ydA0KPg0KPiBIaSwNCj4NCj4gSG93IGRvIEkgbWF0Y2ggdGhlIGRyaXZlcj8gVGhlIG9s ZCBvbmUsIGZyb20gWGlsaW54IGdpdCwgd2FzIHNldHRpbmcgdGhlDQo+IHByaXZhdGUgZmllbGQg c28gSSBjb3VsZCB1c2UgYSBmaWx0ZXIgZnVuY3Rpb24uDQoNCk5vIG5lZWQgdG8gdXNlIGZpbHRl ciBhbnltb3JlLiBZb3UgY2FuIHVzZSBhdHRhY2hlZCBwYXRjaGVzIHRvIHRlc3QgdGhlIHRlc3Qg Y2xpZW50IGRyaXZlci4NCkluIHRoZSBkdHMgZmlsZSB5b3UgbmVlZCB0byBhZGQgYSBjaGlsZCBu b2RlIGZvciB0aGUgdGVzdCBjbGllbnQgYXMgd2VsbC4NCg0KPg0KPiBPbiBUdWUsIEp1biA5LCAy MDE1IGF0IDk6MzUgQU0sIEtlZGFyZXN3YXJhIHJhbyBBcHBhbmENCj4gPGFwcGFuYS5kdXJnYS5y YW9AeGlsaW54LmNvbT4gd3JvdGU6DQo+ID4gVGhpcyBpcyB0aGUgZHJpdmVyIGZvciB0aGUgQVhJ IERpcmVjdCBNZW1vcnkgQWNjZXNzIChBWEkgRE1BKSBjb3JlLA0KPiA+IHdoaWNoIGlzIGEgc29m dCBYaWxpbnggSVAgY29yZSB0aGF0IHByb3ZpZGVzIGhpZ2gtIGJhbmR3aWR0aCBkaXJlY3QNCj4g PiBtZW1vcnkgYWNjZXNzIGJldHdlZW4gbWVtb3J5IGFuZCBBWEk0LVN0cmVhbSB0eXBlIHRhcmdl dA0KPiBwZXJpcGhlcmFscy4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFRob2th bGEgPHN0aG9rYWxAeGlsaW54LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBLZWRhcmVzd2FyYSBy YW8gQXBwYW5hIDxhcHBhbmFkQHhpbGlueC5jb20+DQo+ID4gLS0tDQo+ID4gVGhlIGRlaXZjZSB0 cmVlIGRvYyBnb3QgYXBwbGllZCBpbiB0aGUgc2xhdmUtZG1hZW5naW5lLmdpdC4NCj4gPg0KPiA+ IFRoaXMgcGF0Y2ggaXMgcmViYXNlZCBvbiB0aGUgY29tbWl0DQo+ID4gTWVyZ2UgZ2l0Oi8vZ2l0 Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2RhdmVtL25ldA0KPiA+DQo+ID4g LSBOZWVkJ3MgdG8gd29yayBvbiB0aGUgY29tbWVudCAibm90IG1ha2luZyBlZmZpY2llbnQgdXNl IG9mIERNQSdzDQo+ID4gY29hbGVzY2UgY2FwYWJpbGl0eSIgd2lsbCBzZW5kIHRoZSBwYXRjaCBm b3IgdGhhdCBzb29uLg0KPiBUaGlzIGNhbiBiZSBkb25lIGFmdGVyd2FyZHMuIEkgY2FuIHNlbmQg YSBwYXRjaCBpZiB5b3Ugd2FudC4NCj4gWy4uLl0NCj4gPiArLyoqDQo+ID4gKyAqIHhpbGlueF9k bWFfdHhfc3RhdHVzIC0gR2V0IGRtYSB0cmFuc2FjdGlvbiBzdGF0dXMNCj4gPiArICogQGRjaGFu OiBETUEgY2hhbm5lbA0KPiA+ICsgKiBAY29va2llOiBUcmFuc2FjdGlvbiBpZGVudGlmaWVyDQo+ ID4gKyAqIEB0eHN0YXRlOiBUcmFuc2FjdGlvbiBzdGF0ZQ0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1 cm46IERNQSB0cmFuc2FjdGlvbiBzdGF0dXMNCj4gPiArICovDQo+ID4gK3N0YXRpYyBlbnVtIGRt YV9zdGF0dXMgeGlsaW54X2RtYV90eF9zdGF0dXMoc3RydWN0IGRtYV9jaGFuICpkY2hhbiwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRtYV9jb29raWVf dCBjb29raWUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3QgZG1hX3R4X3N0YXRlDQo+ID4gKyp0eHN0YXRlKSB7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgeGlsaW54X2RtYV9jaGFuICpjaGFuID0gdG9feGlsaW54X2NoYW4oZGNoYW4pOw0KPiA+ICsg ICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfZGVzY3JpcHRvciAqZGVzYzsNCj4gPiArICAgICAg IHN0cnVjdCB4aWxpbnhfZG1hX3R4X3NlZ21lbnQgKnNlZ21lbnQ7DQo+ID4gKyAgICAgICBzdHJ1 Y3QgeGlsaW54X2RtYV9kZXNjX2h3ICpodzsNCj4gPiArICAgICAgIGVudW0gZG1hX3N0YXR1cyBy ZXQ7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ICsgICAgICAgdTMyIHJl c2lkdWU7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0ID0gZG1hX2Nvb2tpZV9zdGF0dXMoZGNoYW4s IGNvb2tpZSwgdHhzdGF0ZSk7DQo+ID4gKyAgICAgICBpZiAocmV0ID09IERNQV9DT01QTEVURSB8 fCAhdHhzdGF0ZSkNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPiArDQo+ID4g KyAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmY2hhbi0+bG9jaywgZmxhZ3MpOw0KPiA+ICsgICAg ICAgaWYgKGNoYW4tPmhhc19zZykgew0KPiA+ICsgICAgICAgICAgICAgICB3aGlsZSAoIWxpc3Rf ZW1wdHkoJmRlc2MtPnNlZ21lbnRzKSkgew0KPiBkZXNjIGlzIG5vdCBpbml0aWFsaXplZA0KT2sg d2lsbCBmaXgNCg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQgPSBsaXN0X2Zp cnN0X2VudHJ5KCZkZXNjLT5zZWdtZW50cywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfc2VnbWVudCwgbm9kZSk7DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgaHcgPSAmc2VnbWVudC0+aHc7DQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmVzaWR1ZSArPSAoaHctPmNvbnRyb2wgLSBody0+c3RhdHVzKSAmDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYSUxJTlhfRE1BX01BWF9UUkFO U19MRU47DQo+IHJlc2lkdWUgaXMgbm90IGluaXRpYWxpemVkDQoNCk9rIHdpbGwgZml4DQoNCj4g PiArICAgICAgICAgICAgICAgfQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGNo YW4tPnJlc2lkdWUgPSByZXNpZHVlOw0KPiByZXNpZHVlIGlzIG5vdCBpbml0aWFsaXplZA0KDQpP ayB3aWxsIGZpeA0KDQo+ID4gKyAgICAgICBkbWFfc2V0X3Jlc2lkdWUodHhzdGF0ZSwgY2hhbi0+ cmVzaWR1ZSk7DQo+ID4gKyAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGFuLT5sb2Nr LCBmbGFncyk7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIHJldDsNCj4gPiArfQ0KPg0KPiA+ ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9zdGFydF90cmFuc2ZlciAtIFN0YXJ0cyBETUEgdHJh bnNmZXINCj4gPiArICogQGNoYW46IERyaXZlciBzcGVjaWZpYyBjaGFubmVsIHN0cnVjdCBwb2lu dGVyICAqLyBzdGF0aWMgdm9pZA0KPiA+ICt4aWxpbnhfZG1hX3N0YXJ0X3RyYW5zZmVyKHN0cnVj dCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pIHsNCj4gPiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1h X3R4X2Rlc2NyaXB0b3IgKmRlc2M7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9z ZWdtZW50ICpoZWFkLCAqdGFpbCA9IE5VTEw7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGNoYW4t PmVycikNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsNCj4gPiArICAgICAgIGlm IChsaXN0X2VtcHR5KCZjaGFuLT5wZW5kaW5nX2xpc3QpKQ0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKCFjaGFuLT5pZGxlKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgZGVzYyA9IGxpc3RfZmlyc3RfZW50 cnkoJmNoYW4tPnBlbmRpbmdfbGlzdCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0cnVjdCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IsDQo+ID4gKyBub2RlKTsNCj4gPiAr DQo+ID4gKyAgICAgICBpZiAoY2hhbi0+aGFzX3NnICYmIHhpbGlueF9kbWFfaXNfcnVubmluZyhj aGFuKSAmJg0KPiA+ICsgICAgICAgICAgICF4aWxpbnhfZG1hX2lzX2lkbGUoY2hhbikpIHsNCj4g PiArICAgICAgICAgICAgICAgdGFpbCA9IGxpc3RfZW50cnkoZGVzYy0+c2VnbWVudHMucHJldiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhpbGlueF9kbWFf dHhfc2VnbWVudCwgbm9kZSk7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYV9jdHJsX3dyaXRlKGNo YW4sIFhJTElOWF9ETUFfUkVHX1RBSUxERVNDLCB0YWlsLT5waHlzKTsNCj4gPiArICAgICAgICAg ICAgICAgZ290byBvdXRfZnJlZV9kZXNjOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAg ICAgIGlmIChjaGFuLT5oYXNfc2cpIHsNCj4gPiArICAgICAgICAgICAgICAgaGVhZCA9IGxpc3Rf Zmlyc3RfZW50cnkoJmRlc2MtPnNlZ21lbnRzLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9zZWdtZW50LCBub2RlKTsNCj4g PiArICAgICAgICAgICAgICAgdGFpbCA9IGxpc3RfZW50cnkoZGVzYy0+c2VnbWVudHMucHJldiwN Cj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhpbGlueF9kbWFf dHhfc2VnbWVudCwgbm9kZSk7DQo+ID4gKyAgICAgICAgICAgICAgIGRtYV9jdHJsX3dyaXRlKGNo YW4sIFhJTElOWF9ETUFfUkVHX0NVUkRFU0MsDQo+ID4gKyBoZWFkLT5waHlzKTsNCj4gRXZlbiB0 aG91Z2ggd2UgaGF2ZSBTRywgd2UgYXJlIHVzaW5nIGl0IG9uIGEgZGVzY3JpcHRvciBiYXNpcy4N Cj4gSWYgdGhlIHVzZXIgcXVldWVzIDEwIGRlc2NyaXB0b3JzLCBlYWNoIHdpdGggb25lIHNlZ21l bnQsIHRoaXMgd2lsbCB3b3JrIGxpa2UgYQ0KPiBETUEgd2l0aG91dCBTRy4NCj4gV2h5IGRvbid0 IHdlIHNldCB0aGUgdGFpbCB0byB0aGUgbGFzdCBzZWdtZW50IG9mIHRoZSBsYXN0IGRlc2NyaXB0 b3IgcXVldWVkPw0KDQpPayB3aWxsIHdvcmsgb24gaXQuDQoNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gKyAgICAgICAvKiBFbmFibGUgaW50ZXJydXB0cyAqLw0KPiA+ICsgICAgICAgZG1hX2N0 cmxfc2V0KGNoYW4sIFhJTElOWF9ETUFfUkVHX0NPTlRST0wsDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgWElMSU5YX0RNQV9YUl9JUlFfQUxMX01BU0spOw0KPiA+ICsNCj4gPiArICAgICAgIHhp bGlueF9kbWFfc3RhcnQoY2hhbik7DQo+ID4gKyAgICAgICBpZiAoY2hhbi0+ZXJyKQ0KPiA+ICsg ICAgICAgICAgICAgICByZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgLyogU3RhcnQgdGhlIHRy YW5zZmVyICovDQo+ID4gKyAgICAgICBpZiAoY2hhbi0+aGFzX3NnKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIGRtYV9jdHJsX3dyaXRlKGNoYW4sIFhJTElOWF9ETUFfUkVHX1RBSUxERVNDLCB0YWls LT5waHlzKTsNCj4gPiArICAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICAgIHN0cnVj dCB4aWxpbnhfZG1hX3R4X3NlZ21lbnQgKnNlZ21lbnQ7DQo+ID4gKyAgICAgICAgICAgICAgIHN0 cnVjdCB4aWxpbnhfZG1hX2Rlc2NfaHcgKmh3Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg c2VnbWVudCA9IGxpc3RfZmlyc3RfZW50cnkoJmRlc2MtPnNlZ21lbnRzLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9z ZWdtZW50LCBub2RlKTsNCj4gPiArICAgICAgICAgICAgICAgaHcgPSAmc2VnbWVudC0+aHc7DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoZGVzYy0+ZGlyZWN0aW9uID09IERNQV9NRU1f VE9fREVWKQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYV9jdHJsX3dyaXRlKGNoYW4s IFhJTElOWF9ETUFfUkVHX1NSQ0FERFIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgaHctPmJ1Zl9hZGRyKTsNCj4gPiArICAgICAgICAgICAgICAgZWxzZQ0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYV9jdHJsX3dyaXRlKGNoYW4sIFhJTElOWF9ETUFf UkVHX0RTVEFERFIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aHctPmJ1Zl9hZGRyKTsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIC8qIFN0YXJ0IHRoZSB0 cmFuc2ZlciAqLw0KPiA+ICsgICAgICAgICAgICAgICBkbWFfY3RybF93cml0ZShjaGFuLCBYSUxJ TlhfRE1BX1JFR19CVFQsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3LT5j b250cm9sICYgWElMSU5YX0RNQV9NQVhfVFJBTlNfTEVOKTsNCj4gPiArICAgICAgIH0NCj4gPiAr DQo+ID4gK291dF9mcmVlX2Rlc2M6DQo+ID4gKyAgICAgICBsaXN0X2RlbCgmZGVzYy0+bm9kZSk7 DQo+ID4gKyAgICAgICBjaGFuLT5pZGxlID0gZmFsc2U7DQo+ID4gKyAgICAgICBjaGFuLT5hY3Rp dmVfZGVzYyA9IGRlc2M7DQo+ID4gK30NCj4gPiArDQo+IFdlIHNob3VsZCBjYWNoZSBYSUxJTlhf RE1BX1JFR19DT05UUk9MIHJlZ2lzdGVyIGluc3RlYWQgb2YgcmVhZGluZyBpdA0KPiBhZ2FpbiBh bmQgYWdhaW4sIGVzcGVjaWFsbHkgb24gaG90IHBhdGhzLCBzaW5jZSB0aGUgQVhJNCBidXMgaXMg cnVubmluZyBhdCBsb3cNCj4gc3BlZWRzLg0KPiBJIGhhdmUgYWRkcmVzc2VkIGFsbCB0aGVzZSBj b21tZW50cyBhdCBbMF0gYmFzZWQgb24gdGhlIFhpbGlueCBETUEgRHJpdmVyLA0KPiBidXQgaXQg aXMgbm90IHJlYWR5IGZvciBtYWlubGluaW5nIChJIGhhdmUgY29tbWVudGVkIGNvZGUvZGVhZCBj b2RlLCBubw0KPiBjb21tZW50cywgZXRjLikgYW5kIEkgZG9uJ3QgaGF2ZSB0aW1lIHRvIHdvcmsg b24gaXQgYW55bW9yZS4NCj4gWW91IGNhbiBjaGVycnkgcGljayBwYXJ0cyBmcm9tIGl0IGFuZCBh ZGFwdCB0aGVtIGhlcmUuDQo+DQo+IEFueXdheSwgSSdsbCB0cnkgdG8gdXNlIHRoaXMgZHJpdmVy IGluIG15IHdvcmtjYXNlICh0aG91c2FuZHMgb2YgcmVxdWVzdHMsIHZlcnkNCj4gaGlnaCBsb2Fk IGFuZCBoaWdoIElSUSBhY3Rpdml0eSkgYW5kIHJlcG9ydCBiYWNrLCBidXQgSSBkb24ndCBleHBl Y3QgbXVjaA0KPiBzaW5jZSBJIGhhZCB0aGVzZSBwcm9ibGVtcyB3aXRoIHRoZSBvcmlnaW5hbCBp bXBsZW1lbnRhdGlvbi4NCj4NCj4gWzBdIGh0dHA6Ly9wYXN0ZWJpbi5jb20vMGZRQUowcW0NCg0K T2sgd2lsbCBsb29rIGludG8gaXQgYW5kIHdpbGwgaW1wcm92ZSB0aGUgU0cgaGFuZGxpbmcgaW4g dGhlIG5leHQgdmVyc2lvbiBvZiB0aGUgcGF0Y2guDQpUaGFua3MgZm9yIHRoZSBwb2ludGVycy4N Cg0KVGhhbmtzLA0KS2VkYXIuDQoNCj4NCj4gT24gVHVlLCBKdW4gOSwgMjAxNSBhdCA5OjM1IEFN LCBLZWRhcmVzd2FyYSByYW8gQXBwYW5hDQo+IDxhcHBhbmEuZHVyZ2EucmFvQHhpbGlueC5jb20+ IHdyb3RlOg0KPiA+IFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEFYSSBEaXJlY3QgTWVtb3J5 IEFjY2VzcyAoQVhJIERNQSkgY29yZSwNCj4gPiB3aGljaCBpcyBhIHNvZnQgWGlsaW54IElQIGNv cmUgdGhhdCBwcm92aWRlcyBoaWdoLSBiYW5kd2lkdGggZGlyZWN0DQo+ID4gbWVtb3J5IGFjY2Vz cyBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJlYW0gdHlwZSB0YXJnZXQNCj4gcGVyaXBoZXJh bHMuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBTcmlrYW50aCBUaG9rYWxhIDxzdGhva2FsQHhp bGlueC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogS2VkYXJlc3dhcmEgcmFvIEFwcGFuYSA8YXBw YW5hZEB4aWxpbnguY29tPg0KPiA+IC0tLQ0KPiA+IFRoZSBkZWl2Y2UgdHJlZSBkb2MgZ290IGFw cGxpZWQgaW4gdGhlIHNsYXZlLWRtYWVuZ2luZS5naXQuDQo+ID4NCj4gPiBUaGlzIHBhdGNoIGlz IHJlYmFzZWQgb24gdGhlIGNvbW1pdA0KPiA+IE1lcmdlIGdpdDovL2dpdC5rZXJuZWwub3JnL3B1 Yi9zY20vbGludXgva2VybmVsL2dpdC9kYXZlbS9uZXQNCj4gPg0KPiA+IC0gTmVlZCdzIHRvIHdv cmsgb24gdGhlIGNvbW1lbnQgIm5vdCBtYWtpbmcgZWZmaWNpZW50IHVzZSBvZiBETUEncw0KPiA+ IGNvYWxlc2NlIGNhcGFiaWxpdHkiIHdpbGwgc2VuZCB0aGUgcGF0Y2ggZm9yIHRoYXQgc29vbi4N Cj4gPg0KPiA+IENoYW5nZXMgaW4gdjc6DQo+ID4gLSB1cGRhdGVkIGxpY2Vuc2UgaW4gdGhlIGRy aXZlciBhcyBzdWdnZXN0ZWQgYnkgUGF1bC4NCj4gPiAtIENvcnJlY3RlZCByZXR1cm4gdmFsdWUg aW4gaXNfaWRsZSBmdW50aW9uLg0KPiA+DQo+ID4gQ2hhbmdlcyBpbiB2NjoNCj4gPiAtIEZpeGVk IE9kZCBpbmRlbnRpb24gaW4gdGhlIEtjb25maWcuDQo+ID4gLSB1c2VkIEdGUF9OT1dBSVQgaW5z dGVhZCBvZiBHRlBfS0VSTkVMIGR1cmluZyB0aGUgZGVzYyBhbGxvY2F0aW9uDQo+ID4gLSBDYWxj dWxhdGVkIHJlc2lkdWUgaW4gdGhlIHR4X3N0YXR1cyBpbnN0ZWFkIG9mIGNvbXBsZXRlX2Rlc2Ny aXB0b3IuDQo+ID4gLSBVcGRhdGUgY29weSByaWdodCB0byAyMDE1Lg0KPiA+IC0gTW9kaWZpZWQg c3Bpbl9sb2NrIGhhbmRsaW5nIG1vdmVkIHRoZSBzcGluX2xvY2sgdG8gdGhlIGFwcHJvcHJpYXRl DQo+ID4gZnVuY3Rpb25zIChpbnN0ZWFkIG9mIHhpbGlueF9kbWFfc3RhcnRfdHJhbnNmZXIgZG9p bmcgaXQNCj4geGlsaW54X2RtYV9pc3N1ZV9wZW5kaW5nIGFwaSkuDQo+ID4gLSBkZXZpY2VfY29u dHJvbCBhbmQgZGVjbGFyZSBzbGF2ZSBjYXBzIHVwZGF0ZWQgYXMgcGVyIG5ld2VyIEFQaSdzLg0K PiA+IENoYW5nZXMgaW4gdjU6DQo+ID4gLSBNb2RpZmllZCB0aGUgeGlsaW54X2RtYS5oIGhlYWRl ciBmaWxlIGxvY2F0aW9uIHRvIHRoZQ0KPiA+ICAgaW5jbHVkZS9saW51eC9kbWEveGlsaW54X2Rt YS5oDQo+ID4gQ2hhbmdlcyBpbiB2NDoNCj4gPiAtIEFkZCBkaXJlY3Rpb24gZmllbGQgdG8gRE1B IGRlc2NyaXB0b3Igc3RydWN0dXJlIGFuZCByZW1vdmVkIGZyb20NCj4gPiAgIGNoYW5uZWwgc3Ry dWN0dXJlIHRvIGF2b2lkIGR1cGxpY2F0aW9uLg0KPiA+IC0gQ2hlY2sgZm9yIERNQSBpZGxlIGNv bmRpdGlvbiBiZWZvcmUgY2hhbmdpbmcgdGhlIGNvbmZpZ3VyYXRpb24uDQo+ID4gLSBSZXNpZHVl IGlzIGJlaW5nIGNhbGN1bGF0ZWQgaW4gY29tcGxldGVfZGVzY3JpcHRvcigpIGFuZCBpcyByZXBv cnRlZA0KPiA+ICAgdG8gc2xhdmUgZHJpdmVyLg0KPiA+IENoYW5nZXMgaW4gdjM6DQo+ID4gLSBS ZWJhc2VkIG9uIDMuMTYtcmM3DQo+ID4gQ2hhbmdlcyBpbiB2MjoNCj4gPiAtIFNpbXBsaWZpZWQg dGhlIGxvZ2ljIHRvIHNldCBTT1AgYW5kIEFQUCB3b3JkcyBpbiBwcmVwX3NsYXZlX3NnKCkuDQo+ ID4gLSBDb3JyZWN0ZWQgZnVuY3Rpb24gZGVzY3JpcHRpb24gY29tbWVudHMgdG8gbWF0Y2ggdGhl IHJldHVybiB0eXBlLg0KPiA+IC0gRml4ZWQgc29tZSBtaW5vciBjb21tZW50cyBhcyBzdWdnZXN0 ZWQgYnkgQW5keS4NCj4gPg0KPiA+ICBkcml2ZXJzL2RtYS9LY29uZmlnICAgICAgICAgICAgIHwg ICAxMyArDQo+ID4gIGRyaXZlcnMvZG1hL3hpbGlueC9NYWtlZmlsZSAgICAgfCAgICAxICsNCj4g PiAgZHJpdmVycy9kbWEveGlsaW54L3hpbGlueF9kbWEuYyB8IDExOTYNCj4gKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIGluY2x1ZGUvbGludXgvZG1hL3hpbGlu eF9kbWEuaCAgfCAgIDE0ICsNCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAxMjI0IGluc2VydGlvbnMo KykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZG1h LmMNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9LY29uZmlnIGIvZHJpdmVycy9k bWEvS2NvbmZpZyBpbmRleA0KPiA+IGJkYTJjYjAuLmNiNGZhNTcgMTAwNjQ0DQo+ID4gLS0tIGEv ZHJpdmVycy9kbWEvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvZG1hL0tjb25maWcNCj4gPiBA QCAtNDkyLDQgKzQ5MiwxNyBAQCBjb25maWcgUUNPTV9CQU1fRE1BDQo+ID4gICAgICAgICAgIEVu YWJsZSBzdXBwb3J0IGZvciB0aGUgUUNPTSBCQU0gRE1BIGNvbnRyb2xsZXIuICBUaGlzIGNvbnRy b2xsZXINCj4gPiAgICAgICAgICAgcHJvdmlkZXMgRE1BIGNhcGFiaWxpdGllcyBmb3IgYSB2YXJp ZXR5IG9mIG9uLWNoaXAgZGV2aWNlcy4NCj4gPg0KPiA+ICtjb25maWcgWElMSU5YX0RNQQ0KPiA+ ICsgICAgICAgIHRyaXN0YXRlICJYaWxpbnggQVhJIERNQSBFbmdpbmUiDQo+ID4gKyAgICAgICAg ZGVwZW5kcyBvbiAoQVJDSF9aWU5RIHx8IE1JQ1JPQkxBWkUpDQo+ID4gKyAgICAgICAgc2VsZWN0 IERNQV9FTkdJTkUNCj4gPiArICAgICAgICBoZWxwDQo+ID4gKyAgICAgICAgICBFbmFibGUgc3Vw cG9ydCBmb3IgWGlsaW54IEFYSSBETUEgU29mdCBJUC4NCj4gPiArDQo+ID4gKyAgICAgICAgICBU aGlzIGVuZ2luZSBwcm92aWRlcyBoaWdoLWJhbmR3aWR0aCBkaXJlY3QgbWVtb3J5IGFjY2Vzcw0K PiA+ICsgICAgICAgICAgYmV0d2VlbiBtZW1vcnkgYW5kIEFYSTQtU3RyZWFtIHR5cGUgdGFyZ2V0 IHBlcmlwaGVyYWxzLg0KPiA+ICsgICAgICAgICAgSXQgaGFzIHR3byBzdHJlYW0gaW50ZXJmYWNl cy9jaGFubmVscywgTWVtb3J5IE1hcHBlZCB0bw0KPiA+ICsgICAgICAgICAgU3RyZWFtIChNTTJT KSBhbmQgU3RyZWFtIHRvIE1lbW9yeSBNYXBwZWQgKFMyTU0pIGZvciB0aGUNCj4gPiArICAgICAg ICAgIGRhdGEgdHJhbnNmZXJzLg0KPiA+ICsNCj4gPiAgZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9kbWEveGlsaW54L01ha2VmaWxlIGIvZHJpdmVycy9kbWEveGlsaW54L01ha2VmaWxl DQo+ID4gaW5kZXggM2M0ZTlmMi4uNjIyNGE0OSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Rt YS94aWxpbngvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL2RtYS94aWxpbngvTWFrZWZpbGUN Cj4gPiBAQCAtMSArMSwyIEBADQo+ID4gIG9iai0kKENPTkZJR19YSUxJTlhfVkRNQSkgKz0geGls aW54X3ZkbWEubw0KPiA+ICtvYmotJChDT05GSUdfWElMSU5YX0RNQSkgKz0geGlsaW54X2RtYS5v DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZG1hLmMNCj4gPiBi L2RyaXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZG1hLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5k ZXgNCj4gPiAwMDAwMDAwLi41MzU4MmE3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2Ry aXZlcnMvZG1hL3hpbGlueC94aWxpbnhfZG1hLmMNCj4gPiBAQCAtMCwwICsxLDExOTYgQEANCj4g PiArLyoNCj4gPiArICogRE1BIGRyaXZlciBmb3IgWGlsaW54IERNQSBFbmdpbmUNCj4gPiArICoN Cj4gPiArICogQ29weXJpZ2h0IChDKSAyMDEwIC0gMjAxNSBYaWxpbngsIEluYy4gQWxsIHJpZ2h0 cyByZXNlcnZlZC4NCj4gPiArICoNCj4gPiArICogQmFzZWQgb24gdGhlIEZyZWVzY2FsZSBETUEg ZHJpdmVyLg0KPiA+ICsgKg0KPiA+ICsgKiBEZXNjcmlwdGlvbjoNCj4gPiArICogIFRoZSBBWEkg RE1BLCBpcyBhIHNvZnQgSVAsIHdoaWNoIHByb3ZpZGVzIGhpZ2gtYmFuZHdpZHRoIERpcmVjdA0K PiA+ICtNZW1vcnkNCj4gPiArICogIEFjY2VzcyBiZXR3ZWVuIG1lbW9yeSBhbmQgQVhJNC1TdHJl YW0tdHlwZSB0YXJnZXQgcGVyaXBoZXJhbHMuIEl0DQo+ID4gK2NhbiBiZQ0KPiA+ICsgKiAgY29u ZmlndXJlZCB0byBoYXZlIG9uZSBjaGFubmVsIG9yIHR3byBjaGFubmVscyBhbmQgaWYgY29uZmln dXJlZA0KPiA+ICthcyB0d28NCj4gPiArICogIGNoYW5uZWxzLCBvbmUgaXMgdG8gdHJhbnNtaXQg ZGF0YSBmcm9tIG1lbW9yeSB0byBhIGRldmljZSBhbmQNCj4gPiArYW5vdGhlciBpcw0KPiA+ICsg KiAgdG8gcmVjZWl2ZSBmcm9tIGEgZGV2aWNlLg0KPiA+ICsgKg0KPiA+ICsgKiBUaGlzIGlzIGZy ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCj4gPiAr ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2 ZXJzaW9uIDIgYXMNCj4gPiArICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24uDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L2JpdG9wcy5oPg0K PiA+ICsjaW5jbHVkZSA8bGludXgvZG1hL3hpbGlueF9kbWEuaD4NCj4gPiArI2luY2x1ZGUgPGxp bnV4L2luaXQuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L2ludGVycnVwdC5oPg0KPiA+ICsjaW5j bHVkZSA8bGludXgvaW8uaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ICsj aW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZG1h Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZl9pcnEuaD4NCj4gPiArI2luY2x1ZGUgPGxpbnV4 L29mX3BsYXRmb3JtLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSAiLi4vZG1hZW5naW5lLmgiDQo+ID4gKw0KPiA+ICsvKiBSZWdpc3RlciBPZmZz ZXRzICovDQo+ID4gKyNkZWZpbmUgWElMSU5YX0RNQV9SRUdfQ09OVFJPTCAgICAgICAgIDB4MDAN Cj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX1JFR19TVEFUVVMgICAgICAgICAgMHgwNA0KPiA+ICsj ZGVmaW5lIFhJTElOWF9ETUFfUkVHX0NVUkRFU0MgICAgICAgICAweDA4DQo+ID4gKyNkZWZpbmUg WElMSU5YX0RNQV9SRUdfVEFJTERFU0MgICAgICAgICAgICAgICAgMHgxMA0KPiA+ICsjZGVmaW5l IFhJTElOWF9ETUFfUkVHX1NSQ0FERFIgICAgICAgICAweDE4DQo+ID4gKyNkZWZpbmUgWElMSU5Y X0RNQV9SRUdfRFNUQUREUiAgICAgICAgIDB4MjANCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX1JF R19CVFQgICAgICAgICAgICAgMHgyOA0KPiA+ICsNCj4gPiArLyogQ2hhbm5lbC9EZXNjcmlwdG9y IE9mZnNldHMgKi8NCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX01NMlNfQ1RSTF9PRkZTRVQgICAg MHgwMA0KPiA+ICsjZGVmaW5lIFhJTElOWF9ETUFfUzJNTV9DVFJMX09GRlNFVCAgICAweDMwDQo+ ID4gKw0KPiA+ICsvKiBHZW5lcmFsIHJlZ2lzdGVyIGJpdHMgZGVmaW5pdGlvbnMgKi8NCj4gPiAr I2RlZmluZSBYSUxJTlhfRE1BX0NSX1JVTlNUT1BfTUFTSyAgICAgQklUKDApDQo+ID4gKyNkZWZp bmUgWElMSU5YX0RNQV9DUl9SRVNFVF9NQVNLICAgICAgIEJJVCgyKQ0KPiA+ICsNCj4gPiArI2Rl ZmluZSBYSUxJTlhfRE1BX0NSX0RFTEFZX1NISUZUICAgICAgMjQNCj4gPiArI2RlZmluZSBYSUxJ TlhfRE1BX0NSX0NPQUxFU0NFX1NISUZUICAgMTYNCj4gPiArDQo+ID4gKyNkZWZpbmUgWElMSU5Y X0RNQV9DUl9ERUxBWV9NQVggICAgICAgICAgICAgICAgR0VOTUFTSyg3LCAwKQ0KPiA+ICsjZGVm aW5lIFhJTElOWF9ETUFfQ1JfQ09BTEVTQ0VfTUFYICAgICBHRU5NQVNLKDcsIDApDQo+ID4gKw0K PiA+ICsjZGVmaW5lIFhJTElOWF9ETUFfU1JfSEFMVEVEX01BU0sgICAgICBCSVQoMCkNCj4gPiAr I2RlZmluZSBYSUxJTlhfRE1BX1NSX0lETEVfTUFTSyAgICAgICAgICAgICAgICBCSVQoMSkNCj4g PiArDQo+ID4gKyNkZWZpbmUgWElMSU5YX0RNQV9YUl9JUlFfSU9DX01BU0sgICAgIEJJVCgxMikN Cj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX1hSX0lSUV9ERUxBWV9NQVNLICAgQklUKDEzKQ0KPiA+ ICsjZGVmaW5lIFhJTElOWF9ETUFfWFJfSVJRX0VSUk9SX01BU0sgICBCSVQoMTQpDQo+ID4gKyNk ZWZpbmUgWElMSU5YX0RNQV9YUl9JUlFfQUxMX01BU0sgICAgIEdFTk1BU0soMTQsIDEyKQ0KPiA+ ICsNCj4gPiArLyogQkQgZGVmaW5pdGlvbnMgKi8NCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX0JE X1NUU19BTExfTUFTSyAgICAgR0VOTUFTSygzMSwgMjgpDQo+ID4gKyNkZWZpbmUgWElMSU5YX0RN QV9CRF9TT1AgICAgICAgICAgICAgIEJJVCgyNykNCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX0JE X0VPUCAgICAgICAgICAgICAgQklUKDI2KQ0KPiA+ICsNCj4gPiArLyogSHcgc3BlY2lmaWMgZGVm aW5pdGlvbnMgKi8NCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX01BWF9DSEFOU19QRVJfREVWSUNF ICAgICAgICAweDINCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX01BWF9UUkFOU19MRU4gICAgICAg R0VOTUFTSygyMiwgMCkNCj4gPiArDQo+ID4gKy8qIERlbGF5IGxvb3AgY291bnRlciB0byBwcmV2 ZW50IGhhcmR3YXJlIGZhaWx1cmUgKi8NCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX0xPT1BfQ09V TlQgICAgICAgICAgMTAwMDAwMA0KPiA+ICsNCj4gPiArLyogTWF4aW11bSBudW1iZXIgb2YgRGVz Y3JpcHRvcnMgKi8NCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX05VTV9ERVNDUyAgICAgICAgICAg NjQNCj4gPiArI2RlZmluZSBYSUxJTlhfRE1BX05VTV9BUFBfV09SRFMgICAgICAgNQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCB4aWxpbnhfZG1hX2Rlc2NfaHcgLSBIYXJkd2FyZSBE ZXNjcmlwdG9yDQo+ID4gKyAqIEBuZXh0X2Rlc2M6IE5leHQgRGVzY3JpcHRvciBQb2ludGVyIEAw eDAwDQo+ID4gKyAqIEBwYWQxOiBSZXNlcnZlZCBAMHgwNA0KPiA+ICsgKiBAYnVmX2FkZHI6IEJ1 ZmZlciBhZGRyZXNzIEAweDA4DQo+ID4gKyAqIEBwYWQyOiBSZXNlcnZlZCBAMHgwQw0KPiA+ICsg KiBAcGFkMzogUmVzZXJ2ZWQgQDB4MTANCj4gPiArICogQHBhZDQ6IFJlc2VydmVkIEAweDE0DQo+ ID4gKyAqIEBjb250cm9sOiBDb250cm9sIGZpZWxkIEAweDE4DQo+ID4gKyAqIEBzdGF0dXM6IFN0 YXR1cyBmaWVsZCBAMHgxQw0KPiA+ICsgKiBAYXBwOiBBUFAgRmllbGRzIEAweDIwIC0gMHgzMA0K PiA+ICsgKi8NCj4gPiArc3RydWN0IHhpbGlueF9kbWFfZGVzY19odyB7DQo+ID4gKyAgICAgICB1 MzIgbmV4dF9kZXNjOw0KPiA+ICsgICAgICAgdTMyIHBhZDE7DQo+ID4gKyAgICAgICB1MzIgYnVm X2FkZHI7DQo+ID4gKyAgICAgICB1MzIgcGFkMjsNCj4gPiArICAgICAgIHUzMiBwYWQzOw0KPiA+ ICsgICAgICAgdTMyIHBhZDQ7DQo+ID4gKyAgICAgICB1MzIgY29udHJvbDsNCj4gPiArICAgICAg IHUzMiBzdGF0dXM7DQo+ID4gKyAgICAgICB1MzIgYXBwW1hJTElOWF9ETUFfTlVNX0FQUF9XT1JE U107IH0gX19hbGlnbmVkKDY0KTsNCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiBzdHJ1Y3QgeGls aW54X2RtYV90eF9zZWdtZW50IC0gRGVzY3JpcHRvciBzZWdtZW50DQo+ID4gKyAqIEBodzogSGFy ZHdhcmUgZGVzY3JpcHRvcg0KPiA+ICsgKiBAbm9kZTogTm9kZSBpbiB0aGUgZGVzY3JpcHRvciBz ZWdtZW50cyBsaXN0DQo+ID4gKyAqIEBwaHlzOiBQaHlzaWNhbCBhZGRyZXNzIG9mIHNlZ21lbnQg ICovIHN0cnVjdA0KPiA+ICt4aWxpbnhfZG1hX3R4X3NlZ21lbnQgew0KPiA+ICsgICAgICAgc3Ry dWN0IHhpbGlueF9kbWFfZGVzY19odyBodzsNCj4gPiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQg bm9kZTsNCj4gPiArICAgICAgIGRtYV9hZGRyX3QgcGh5czsNCj4gPiArfSBfX2FsaWduZWQoNjQp Ow0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHN0cnVjdCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0 b3IgLSBQZXIgVHJhbnNhY3Rpb24gc3RydWN0dXJlDQo+ID4gKyAqIEBhc3luY190eDogQXN5bmMg dHJhbnNhY3Rpb24gZGVzY3JpcHRvcg0KPiA+ICsgKiBAc2VnbWVudHM6IFRYIHNlZ21lbnRzIGxp c3QNCj4gPiArICogQG5vZGU6IE5vZGUgaW4gdGhlIGNoYW5uZWwgZGVzY3JpcHRvcnMgbGlzdA0K PiA+ICsgKiBAZGlyZWN0aW9uOiBUcmFuc2ZlciBkaXJlY3Rpb24NCj4gPiArICovDQo+ID4gK3N0 cnVjdCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3Igew0KPiA+ICsgICAgICAgc3RydWN0IGRtYV9h c3luY190eF9kZXNjcmlwdG9yIGFzeW5jX3R4Ow0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVh ZCBzZWdtZW50czsNCj4gPiArICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgbm9kZTsNCj4gPiArICAg ICAgIGVudW0gZG1hX3RyYW5zZmVyX2RpcmVjdGlvbiBkaXJlY3Rpb247IH07DQo+ID4gKw0KPiA+ ICsvKioNCj4gPiArICogc3RydWN0IHhpbGlueF9kbWFfY2hhbiAtIERyaXZlciBzcGVjaWZpYyBE TUEgY2hhbm5lbCBzdHJ1Y3R1cmUNCj4gPiArICogQHhkZXY6IERyaXZlciBzcGVjaWZpYyBkZXZp Y2Ugc3RydWN0dXJlDQo+ID4gKyAqIEBjdHJsX29mZnNldDogQ29udHJvbCByZWdpc3RlcnMgb2Zm c2V0DQo+ID4gKyAqIEBsb2NrOiBEZXNjcmlwdG9yIG9wZXJhdGlvbiBsb2NrDQo+ID4gKyAqIEBw ZW5kaW5nX2xpc3Q6IERlc2NyaXB0b3JzIHdhaXRpbmcNCj4gPiArICogQGFjdGl2ZV9kZXNjOiBB Y3RpdmUgZGVzY3JpcHRvcg0KPiA+ICsgKiBAZG9uZV9saXN0OiBDb21wbGV0ZSBkZXNjcmlwdG9y cw0KPiA+ICsgKiBAZnJlZV9zZWdfbGlzdDogRnJlZSBkZXNjcmlwdG9ycw0KPiA+ICsgKiBAY29t bW9uOiBETUEgY29tbW9uIGNoYW5uZWwNCj4gPiArICogQHNlZ192OiBTdGF0aWNhbGx5IGFsbG9j YXRlZCBzZWdtZW50cyBiYXNlDQo+ID4gKyAqIEBzZWdfcDogUGh5c2ljYWwgYWxsb2NhdGVkIHNl Z21lbnRzIGJhc2UNCj4gPiArICogQGRldjogVGhlIGRtYSBkZXZpY2UNCj4gPiArICogQGlycTog Q2hhbm5lbCBJUlENCj4gPiArICogQGlkOiBDaGFubmVsIElEDQo+ID4gKyAqIEBoYXNfc2c6IFN1 cHBvcnQgc2NhdHRlciB0cmFuc2ZlcnMNCj4gPiArICogQGVycjogQ2hhbm5lbCBoYXMgZXJyb3Jz DQo+ID4gKyAqIEBpZGxlOiBDaGFubmVsIHN0YXR1cw0KPiA+ICsgKiBAdGFza2xldDogQ2xlYW51 cCB3b3JrIGFmdGVyIGlycQ0KPiA+ICsgKiBAcmVzaWR1ZTogUmVzaWR1ZQ0KPiA+ICsgKi8NCj4g PiArc3RydWN0IHhpbGlueF9kbWFfY2hhbiB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2Rt YV9kZXZpY2UgKnhkZXY7DQo+ID4gKyAgICAgICB1MzIgY3RybF9vZmZzZXQ7DQo+ID4gKyAgICAg ICBzcGlubG9ja190IGxvY2s7DQo+ID4gKyAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkIHBlbmRpbmdf bGlzdDsNCj4gPiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IgKmFjdGl2 ZV9kZXNjOw0KPiA+ICsgICAgICAgc3RydWN0IGxpc3RfaGVhZCBkb25lX2xpc3Q7DQo+ID4gKyAg ICAgICBzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfc2VnX2xpc3Q7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ZG1hX2NoYW4gY29tbW9uOw0KPiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfc2VnbWVu dCAqc2VnX3Y7DQo+ID4gKyAgICAgICBkbWFfYWRkcl90IHNlZ19wOw0KPiA+ICsgICAgICAgc3Ry dWN0IGRldmljZSAqZGV2Ow0KPiA+ICsgICAgICAgaW50IGlycTsNCj4gPiArICAgICAgIGludCBp ZDsNCj4gPiArICAgICAgIGJvb2wgaGFzX3NnOw0KPiA+ICsgICAgICAgaW50IGVycjsNCj4gPiAr ICAgICAgIGJvb2wgaWRsZTsNCj4gPiArICAgICAgIHN0cnVjdCB0YXNrbGV0X3N0cnVjdCB0YXNr bGV0Ow0KPiA+ICsgICAgICAgdTMyIHJlc2lkdWU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICogc3RydWN0IHhpbGlueF9kbWFfZGV2aWNlIC0gRE1BIGRldmljZSBzdHJ1Y3R1cmUN Cj4gPiArICogQHJlZ3M6IEkvTyBtYXBwZWQgYmFzZSBhZGRyZXNzDQo+ID4gKyAqIEBkZXY6IERl dmljZSBTdHJ1Y3R1cmUNCj4gPiArICogQGNvbW1vbjogRE1BIGRldmljZSBzdHJ1Y3R1cmUNCj4g PiArICogQGNoYW46IERyaXZlciBzcGVjaWZpYyBETUEgY2hhbm5lbA0KPiA+ICsgKiBAaGFzX3Nn OiBTcGVjaWZpZXMgd2hldGhlciBTY2F0dGVyLUdhdGhlciBpcyBwcmVzZW50IG9yIG5vdCAgKi8N Cj4gPiArc3RydWN0IHhpbGlueF9kbWFfZGV2aWNlIHsNCj4gPiArICAgICAgIHZvaWQgX19pb21l bSAqcmVnczsNCj4gPiArICAgICAgIHN0cnVjdCBkZXZpY2UgKmRldjsNCj4gPiArICAgICAgIHN0 cnVjdCBkbWFfZGV2aWNlIGNvbW1vbjsNCj4gPiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX2No YW4NCj4gKmNoYW5bWElMSU5YX0RNQV9NQVhfQ0hBTlNfUEVSX0RFVklDRV07DQo+ID4gKyAgICAg ICBib29sIGhhc19zZzsNCj4gPiArfTsNCj4gPiArDQo+ID4gKy8qIE1hY3JvcyAqLw0KPiA+ICsj ZGVmaW5lIHRvX3hpbGlueF9jaGFuKGNoYW4pIFwNCj4gPiArICAgICAgIGNvbnRhaW5lcl9vZihj aGFuLCBzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuLCBjb21tb24pICNkZWZpbmUNCj4gPiArdG9fZG1h X3R4X2Rlc2NyaXB0b3IodHgpIFwNCj4gPiArICAgICAgIGNvbnRhaW5lcl9vZih0eCwgc3RydWN0 IHhpbGlueF9kbWFfdHhfZGVzY3JpcHRvciwgYXN5bmNfdHgpDQo+ID4gKw0KPiA+ICsvKiBJTyBh Y2Nlc3NvcnMgKi8NCj4gPiArc3RhdGljIGlubGluZSB2b2lkIGRtYV93cml0ZShzdHJ1Y3QgeGls aW54X2RtYV9jaGFuICpjaGFuLCB1MzIgcmVnLA0KPiA+ICt1MzIgdmFsdWUpIHsNCj4gPiArICAg ICAgIGlvd3JpdGUzMih2YWx1ZSwgY2hhbi0+eGRldi0+cmVncyArIHJlZyk7IH0NCj4gPiArDQo+ ID4gK3N0YXRpYyBpbmxpbmUgdTMyIGRtYV9yZWFkKHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNo YW4sIHUzMiByZWcpIHsNCj4gPiArICAgICAgIHJldHVybiBpb3JlYWQzMihjaGFuLT54ZGV2LT5y ZWdzICsgcmVnKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB1MzIgZG1hX2N0cmxfcmVh ZChzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpjaGFuLCB1MzINCj4gPiArcmVnKSB7DQo+ID4gKyAg ICAgICByZXR1cm4gZG1hX3JlYWQoY2hhbiwgY2hhbi0+Y3RybF9vZmZzZXQgKyByZWcpOyB9DQo+ ID4gKw0KPiA+ICtzdGF0aWMgaW5saW5lIHZvaWQgZG1hX2N0cmxfd3JpdGUoc3RydWN0IHhpbGlu eF9kbWFfY2hhbiAqY2hhbiwgdTMyIHJlZywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdTMyIHZhbHVlKSB7DQo+ID4gKyAgICAgICBkbWFfd3JpdGUoY2hhbiwgY2hhbi0+ Y3RybF9vZmZzZXQgKyByZWcsIHZhbHVlKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIGlubGluZSB2 b2lkIGRtYV9jdHJsX2NscihzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpjaGFuLCB1MzINCj4gPiAr cmVnLCB1MzIgY2xyKSB7DQo+ID4gKyAgICAgICBkbWFfY3RybF93cml0ZShjaGFuLCByZWcsIGRt YV9jdHJsX3JlYWQoY2hhbiwgcmVnKSAmIH5jbHIpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW5s aW5lIHZvaWQgZG1hX2N0cmxfc2V0KHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4sIHUzMg0K PiA+ICtyZWcsIHUzMiBzZXQpIHsNCj4gPiArICAgICAgIGRtYV9jdHJsX3dyaXRlKGNoYW4sIHJl ZywgZG1hX2N0cmxfcmVhZChjaGFuLCByZWcpIHwgc2V0KTsgfQ0KPiA+ICsNCj4gPiArLyoNCj4g PiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+ID4gKy0tLS0tLS0tDQo+ID4gKyAqIERlc2NyaXB0b3JzIGFuZCBz ZWdtZW50cyBhbGxvYyBhbmQgZnJlZSAgKi8NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxp bnhfZG1hX2FsbG9jX3R4X3NlZ21lbnQgLSBBbGxvY2F0ZSB0cmFuc2FjdGlvbiBzZWdtZW50DQo+ ID4gKyAqIEBjaGFuOiBEcml2ZXIgc3BlY2lmaWMgZG1hIGNoYW5uZWwNCj4gPiArICoNCj4gPiAr ICogUmV0dXJuOiBUaGUgYWxsb2NhdGVkIHNlZ21lbnQgb24gc3VjY2VzcyBhbmQgTlVMTCBvbiBm YWlsdXJlLg0KPiA+ICsgKi8NCj4gPiArc3RhdGljIHN0cnVjdCB4aWxpbnhfZG1hX3R4X3NlZ21l bnQgKg0KPiA+ICt4aWxpbnhfZG1hX2FsbG9jX3R4X3NlZ21lbnQoc3RydWN0IHhpbGlueF9kbWFf Y2hhbiAqY2hhbikgew0KPiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfc2VnbWVudCAq c2VnbWVudCA9IE5VTEw7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ICsN Cj4gPiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT5sb2NrLCBmbGFncyk7DQo+ID4g KyAgICAgICBpZiAoIWxpc3RfZW1wdHkoJmNoYW4tPmZyZWVfc2VnX2xpc3QpKSB7DQo+ID4gKyAg ICAgICAgICAgICAgIHNlZ21lbnQgPSBsaXN0X2ZpcnN0X2VudHJ5KCZjaGFuLT5mcmVlX3NlZ19s aXN0LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgeGlsaW54X2RtYV90eF9zZWdtZW50LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBub2RlKTsNCj4gPiArICAgICAgICAgICAgICAgbGlzdF9kZWwoJnNl Z21lbnQtPm5vZGUpOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJx cmVzdG9yZSgmY2hhbi0+bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiBz ZWdtZW50Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9jbGVh bl9od19kZXNjIC0gQ2xlYW4gaGFyZHdhcmUgZGVzY3JpcHRvcg0KPiA+ICsgKiBAaHc6IEhXIGRl c2NyaXB0b3IgdG8gY2xlYW4NCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkIHhpbGlueF9kbWFf Y2xlYW5faHdfZGVzYyhzdHJ1Y3QgeGlsaW54X2RtYV9kZXNjX2h3ICpodykgew0KPiA+ICsgICAg ICAgdTMyIG5leHRfZGVzYyA9IGh3LT5uZXh0X2Rlc2M7DQo+ID4gKw0KPiA+ICsgICAgICAgbWVt c2V0KGh3LCAwLCBzaXplb2Yoc3RydWN0IHhpbGlueF9kbWFfZGVzY19odykpOw0KPiA+ICsNCj4g PiArICAgICAgIGh3LT5uZXh0X2Rlc2MgPSBuZXh0X2Rlc2M7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX2ZyZWVfdHhfc2VnbWVudCAtIEZyZWUgdHJhbnNhY3Rp b24gc2VnbWVudA0KPiA+ICsgKiBAY2hhbjogRHJpdmVyIHNwZWNpZmljIGRtYSBjaGFubmVsDQo+ ID4gKyAqIEBzZWdtZW50OiBkbWEgdHJhbnNhY3Rpb24gc2VnbWVudA0KPiA+ICsgKi8NCj4gPiAr c3RhdGljIHZvaWQgeGlsaW54X2RtYV9mcmVlX3R4X3NlZ21lbnQoc3RydWN0IHhpbGlueF9kbWFf Y2hhbiAqY2hhbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz dHJ1Y3QgeGlsaW54X2RtYV90eF9zZWdtZW50DQo+ID4gKypzZWdtZW50KSB7DQo+ID4gKyAgICAg ICB4aWxpbnhfZG1hX2NsZWFuX2h3X2Rlc2MoJnNlZ21lbnQtPmh3KTsNCj4gPiArDQo+ID4gKyAg ICAgICBsaXN0X2FkZF90YWlsKCZzZWdtZW50LT5ub2RlLCAmY2hhbi0+ZnJlZV9zZWdfbGlzdCk7 IH0NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IgLSBB bGxvY2F0ZSB0cmFuc2FjdGlvbiBkZXNjcmlwdG9yDQo+ID4gKyAqIEBjaGFuOiBEcml2ZXIgc3Bl Y2lmaWMgZG1hIGNoYW5uZWwNCj4gPiArICoNCj4gPiArICogUmV0dXJuOiBUaGUgYWxsb2NhdGVk IGRlc2NyaXB0b3Igb24gc3VjY2VzcyBhbmQgTlVMTCBvbiBmYWlsdXJlLg0KPiA+ICsgKi8NCj4g PiArc3RhdGljIHN0cnVjdCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IgKg0KPiA+ICt4aWxpbnhf ZG1hX2FsbG9jX3R4X2Rlc2NyaXB0b3Ioc3RydWN0IHhpbGlueF9kbWFfY2hhbiAqY2hhbikgew0K PiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfZGVzY3JpcHRvciAqZGVzYzsNCj4gPiAr DQo+ID4gKyAgICAgICBkZXNjID0ga3phbGxvYyhzaXplb2YoKmRlc2MpLCBHRlBfTk9XQUlUKTsN Cj4gPiArICAgICAgIGlmICghZGVzYykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7 DQo+ID4gKw0KPiA+ICsgICAgICAgSU5JVF9MSVNUX0hFQUQoJmRlc2MtPnNlZ21lbnRzKTsNCj4g PiArDQo+ID4gKyAgICAgICByZXR1cm4gZGVzYzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHhpbGlueF9kbWFfZnJlZV90eF9kZXNjcmlwdG9yIC0gRnJlZSB0cmFuc2FjdGlvbiBk ZXNjcmlwdG9yDQo+ID4gKyAqIEBjaGFuOiBEcml2ZXIgc3BlY2lmaWMgZG1hIGNoYW5uZWwNCj4g PiArICogQGRlc2M6IGRtYSB0cmFuc2FjdGlvbiBkZXNjcmlwdG9yDQo+ID4gKyAqLw0KPiA+ICtz dGF0aWMgdm9pZA0KPiA+ICt4aWxpbnhfZG1hX2ZyZWVfdHhfZGVzY3JpcHRvcihzdHJ1Y3QgeGls aW54X2RtYV9jaGFuICpjaGFuLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IgKmRlc2MpIHsNCj4gPiArICAgICAgIHN0cnVj dCB4aWxpbnhfZG1hX3R4X3NlZ21lbnQgKnNlZ21lbnQsICpuZXh0Ow0KPiA+ICsNCj4gPiArICAg ICAgIGlmICghZGVzYykNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsNCj4gPiAr ICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShzZWdtZW50LCBuZXh0LCAmZGVzYy0+c2Vn bWVudHMsIG5vZGUpIHsNCj4gPiArICAgICAgICAgICAgICAgbGlzdF9kZWwoJnNlZ21lbnQtPm5v ZGUpOw0KPiA+ICsgICAgICAgICAgICAgICB4aWxpbnhfZG1hX2ZyZWVfdHhfc2VnbWVudChjaGFu LCBzZWdtZW50KTsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICBrZnJlZShkZXNj KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhpbGlueF9kbWFfYWxsb2NfY2hh bl9yZXNvdXJjZXMgLSBBbGxvY2F0ZSBjaGFubmVsIHJlc291cmNlcw0KPiA+ICsgKiBAZGNoYW46 IERNQSBjaGFubmVsDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogJzAnIG9uIHN1Y2Nlc3MgYW5k IGZhaWx1cmUgdmFsdWUgb24gZXJyb3IgICovIHN0YXRpYyBpbnQNCj4gPiAreGlsaW54X2RtYV9h bGxvY19jaGFuX3Jlc291cmNlcyhzdHJ1Y3QgZG1hX2NoYW4gKmRjaGFuKSB7DQo+ID4gKyAgICAg ICBzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpjaGFuID0gdG9feGlsaW54X2NoYW4oZGNoYW4pOw0K PiA+ICsgICAgICAgaW50IGk7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogQWxsb2NhdGUgdGhlIGJ1 ZmZlciBkZXNjcmlwdG9ycy4gKi8NCj4gPiArICAgICAgIGNoYW4tPnNlZ192ID0gZG1hX3phbGxv Y19jb2hlcmVudChjaGFuLT5kZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2l6ZW9mKCpjaGFuLT5zZWdfdikgKg0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFhJTElOWF9ETUFfTlVNX0RFU0NTLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaGFuLT5zZWdfcCwgR0ZQX0tF Uk5FTCk7DQo+ID4gKyAgICAgICBpZiAoIWNoYW4tPnNlZ192KSB7DQo+ID4gKyAgICAgICAgICAg ICAgIGRldl9lcnIoY2hhbi0+ZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICJ1bmFi bGUgdG8gYWxsb2NhdGUgY2hhbm5lbCAlZCBkZXNjcmlwdG9yc1xuIiwNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBjaGFuLT5pZCk7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5P TUVNOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBY SUxJTlhfRE1BX05VTV9ERVNDUzsgaSsrKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGNoYW4tPnNl Z192W2ldLmh3Lm5leHRfZGVzYyA9DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBjaGFuLT5zZWdfcCArIHNpemVvZigqY2hhbi0+c2VnX3YpICoNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICgoaSArIDEpICUgWElMSU5YX0RNQV9OVU1fREVTQ1MpOw0KPiA+ ICsgICAgICAgICAgICAgICBjaGFuLT5zZWdfdltpXS5waHlzID0NCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNoYW4tPnNlZ19wICsgc2l6ZW9mKCpjaGFuLT5zZWdfdikgKiBp Ow0KPiA+ICsgICAgICAgICAgICAgICBsaXN0X2FkZF90YWlsKCZjaGFuLT5zZWdfdltpXS5ub2Rl LCAmY2hhbi0+ZnJlZV9zZWdfbGlzdCk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAg ICAgZG1hX2Nvb2tpZV9pbml0KGRjaGFuKTsNCj4gPiArICAgICAgIHJldHVybiAwOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9mcmVlX2Rlc2NfbGlzdCAtIEZy ZWUgZGVzY3JpcHRvcnMgbGlzdA0KPiA+ICsgKiBAY2hhbjogRHJpdmVyIHNwZWNpZmljIGRtYSBj aGFubmVsDQo+ID4gKyAqIEBsaXN0OiBMaXN0IHRvIHBhcnNlIGFuZCBkZWxldGUgdGhlIGRlc2Ny aXB0b3IgICovIHN0YXRpYyB2b2lkDQo+ID4gK3hpbGlueF9kbWFfZnJlZV9kZXNjX2xpc3Qoc3Ry dWN0IHhpbGlueF9kbWFfY2hhbiAqY2hhbiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHN0cnVjdCBsaXN0X2hlYWQgKmxpc3QpIHsNCj4gPiArICAgICAgIHN0cnVj dCB4aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IgKmRlc2MsICpuZXh0Ow0KPiA+ICsNCj4gPiArICAg ICAgIGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShkZXNjLCBuZXh0LCBsaXN0LCBub2RlKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIGxpc3RfZGVsKCZkZXNjLT5ub2RlKTsNCj4gPiArICAgICAgICAg ICAgICAgeGlsaW54X2RtYV9mcmVlX3R4X2Rlc2NyaXB0b3IoY2hhbiwgZGVzYyk7DQo+ID4gKyAg ICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX2ZyZWVf ZGVzY3JpcHRvcnMgLSBGcmVlIGNoYW5uZWwgZGVzY3JpcHRvcnMNCj4gPiArICogQGNoYW46IERy aXZlciBzcGVjaWZpYyBkbWEgY2hhbm5lbCAgKi8gc3RhdGljIHZvaWQNCj4gPiAreGlsaW54X2Rt YV9mcmVlX2Rlc2NyaXB0b3JzKHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pIHsNCj4gPiAr ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ID4gKw0KPiA+ICsgICAgICAgc3Bpbl9sb2Nr X2lycXNhdmUoJmNoYW4tPmxvY2ssIGZsYWdzKTsNCj4gPiArDQo+ID4gKyAgICAgICB4aWxpbnhf ZG1hX2ZyZWVfZGVzY19saXN0KGNoYW4sICZjaGFuLT5wZW5kaW5nX2xpc3QpOw0KPiA+ICsgICAg ICAgeGlsaW54X2RtYV9mcmVlX2Rlc2NfbGlzdChjaGFuLCAmY2hhbi0+ZG9uZV9saXN0KTsNCj4g PiArDQo+ID4gKyAgICAgICB4aWxpbnhfZG1hX2ZyZWVfdHhfZGVzY3JpcHRvcihjaGFuLCBjaGFu LT5hY3RpdmVfZGVzYyk7DQo+ID4gKyAgICAgICBjaGFuLT5hY3RpdmVfZGVzYyA9IE5VTEw7DQo+ ID4gKw0KPiA+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbi0+bG9jaywgZmxh Z3MpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9mcmVlX2NoYW5fcmVz b3VyY2VzIC0gRnJlZSBjaGFubmVsIHJlc291cmNlcw0KPiA+ICsgKiBAZGNoYW46IERNQSBjaGFu bmVsDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgdm9pZCB4aWxpbnhfZG1hX2ZyZWVfY2hhbl9yZXNv dXJjZXMoc3RydWN0IGRtYV9jaGFuICpkY2hhbikgew0KPiA+ICsgICAgICAgc3RydWN0IHhpbGlu eF9kbWFfY2hhbiAqY2hhbiA9IHRvX3hpbGlueF9jaGFuKGRjaGFuKTsNCj4gPiArDQo+ID4gKyAg ICAgICB4aWxpbnhfZG1hX2ZyZWVfZGVzY3JpcHRvcnMoY2hhbik7DQo+ID4gKw0KPiA+ICsgICAg ICAgZG1hX2ZyZWVfY29oZXJlbnQoY2hhbi0+ZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgc2l6ZW9mKCpjaGFuLT5zZWdfdikgKiBYSUxJTlhfRE1BX05VTV9ERVNDUywNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW4tPnNlZ192LCBjaGFuLT5zZWdfcCk7IH0NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX2NoYW5fZGVzY19jbGVhbnVwIC0gQ2xl YW4gY2hhbm5lbCBkZXNjcmlwdG9ycw0KPiA+ICsgKiBAY2hhbjogRHJpdmVyIHNwZWNpZmljIGRt YSBjaGFubmVsICAqLyBzdGF0aWMgdm9pZA0KPiA+ICt4aWxpbnhfZG1hX2NoYW5fZGVzY19jbGVh bnVwKHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pIHsNCj4gPiArICAgICAgIHN0cnVjdCB4 aWxpbnhfZG1hX3R4X2Rlc2NyaXB0b3IgKmRlc2MsICpuZXh0Ow0KPiA+ICsgICAgICAgdW5zaWdu ZWQgbG9uZyBmbGFnczsNCj4gPiArDQo+ID4gKyAgICAgICBzcGluX2xvY2tfaXJxc2F2ZSgmY2hh bi0+bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiArICAgICAgIGxpc3RfZm9yX2VhY2hfZW50cnlf c2FmZShkZXNjLCBuZXh0LCAmY2hhbi0+ZG9uZV9saXN0LCBub2RlKSB7DQo+ID4gKyAgICAgICAg ICAgICAgIGRtYV9hc3luY190eF9jYWxsYmFjayBjYWxsYmFjazsNCj4gPiArICAgICAgICAgICAg ICAgdm9pZCAqY2FsbGJhY2tfcGFyYW07DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAvKiBS ZW1vdmUgZnJvbSB0aGUgbGlzdCBvZiBydW5uaW5nIHRyYW5zYWN0aW9ucyAqLw0KPiA+ICsgICAg ICAgICAgICAgICBsaXN0X2RlbCgmZGVzYy0+bm9kZSk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAg ICAgICAvKiBSdW4gdGhlIGxpbmsgZGVzY3JpcHRvciBjYWxsYmFjayBmdW5jdGlvbiAqLw0KPiA+ ICsgICAgICAgICAgICAgICBjYWxsYmFjayA9IGRlc2MtPmFzeW5jX3R4LmNhbGxiYWNrOw0KPiA+ ICsgICAgICAgICAgICAgICBjYWxsYmFja19wYXJhbSA9IGRlc2MtPmFzeW5jX3R4LmNhbGxiYWNr X3BhcmFtOw0KPiA+ICsgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHsNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBzcGluX3VubG9ja19pcnFyZXN0b3JlKCZjaGFuLT5sb2NrLCBmbGFn cyk7DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soY2FsbGJhY2tfcGFyYW0p Ow0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT5s b2NrLCBmbGFncyk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAg ICAgICAgIC8qIFJ1biBhbnkgZGVwZW5kZW5jaWVzLCB0aGVuIGZyZWUgdGhlIGRlc2NyaXB0b3Ig Ki8NCj4gPiArICAgICAgICAgICAgICAgZG1hX3J1bl9kZXBlbmRlbmNpZXMoJmRlc2MtPmFzeW5j X3R4KTsNCj4gPiArICAgICAgICAgICAgICAgeGlsaW54X2RtYV9mcmVlX3R4X2Rlc2NyaXB0b3Io Y2hhbiwgZGVzYyk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmY2hhbi0+bG9jaywgZmxhZ3MpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4g PiArICogeGlsaW54X2RtYV90eF9zdGF0dXMgLSBHZXQgZG1hIHRyYW5zYWN0aW9uIHN0YXR1cw0K PiA+ICsgKiBAZGNoYW46IERNQSBjaGFubmVsDQo+ID4gKyAqIEBjb29raWU6IFRyYW5zYWN0aW9u IGlkZW50aWZpZXINCj4gPiArICogQHR4c3RhdGU6IFRyYW5zYWN0aW9uIHN0YXRlDQo+ID4gKyAq DQo+ID4gKyAqIFJldHVybjogRE1BIHRyYW5zYWN0aW9uIHN0YXR1cw0KPiA+ICsgKi8NCj4gPiAr c3RhdGljIGVudW0gZG1hX3N0YXR1cyB4aWxpbnhfZG1hX3R4X3N0YXR1cyhzdHJ1Y3QgZG1hX2No YW4gKmRjaGFuLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZG1hX2Nvb2tpZV90IGNvb2tpZSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfdHhfc3RhdGUNCj4gPiArKnR4c3RhdGUpIHsNCj4g PiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4gPSB0b194aWxpbnhfY2hhbihk Y2hhbik7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9kZXNjcmlwdG9yICpkZXNj Ow0KPiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfc2VnbWVudCAqc2VnbWVudDsNCj4g PiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX2Rlc2NfaHcgKmh3Ow0KPiA+ICsgICAgICAgZW51 bSBkbWFfc3RhdHVzIHJldDsNCj4gPiArICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+ID4g KyAgICAgICB1MzIgcmVzaWR1ZTsNCj4gPiArDQo+ID4gKyAgICAgICByZXQgPSBkbWFfY29va2ll X3N0YXR1cyhkY2hhbiwgY29va2llLCB0eHN0YXRlKTsNCj4gPiArICAgICAgIGlmIChyZXQgPT0g RE1BX0NPTVBMRVRFIHx8ICF0eHN0YXRlKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0 Ow0KPiA+ICsNCj4gPiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT5sb2NrLCBmbGFn cyk7DQo+ID4gKyAgICAgICBpZiAoY2hhbi0+aGFzX3NnKSB7DQo+ID4gKyAgICAgICAgICAgICAg IHdoaWxlICghbGlzdF9lbXB0eSgmZGVzYy0+c2VnbWVudHMpKSB7DQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgc2VnbWVudCA9IGxpc3RfZmlyc3RfZW50cnkoJmRlc2MtPnNlZ21lbnRzLA0K PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgeGlsaW54 X2RtYV90eF9zZWdtZW50LCBub2RlKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBodyA9 ICZzZWdtZW50LT5odzsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICByZXNpZHVlICs9ICho dy0+Y29udHJvbCAtIGh3LT5zdGF0dXMpICYNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFhJTElOWF9ETUFfTUFYX1RSQU5TX0xFTjsNCj4gPiArICAgICAgICAgICAgICAg fQ0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIGNoYW4tPnJlc2lkdWUgPSByZXNp ZHVlOw0KPiA+ICsgICAgICAgZG1hX3NldF9yZXNpZHVlKHR4c3RhdGUsIGNoYW4tPnJlc2lkdWUp Ow0KPiA+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbi0+bG9jaywgZmxhZ3Mp Ow0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8q Kg0KPiA+ICsgKiB4aWxpbnhfZG1hX2lzX3J1bm5pbmcgLSBDaGVjayBpZiBETUEgY2hhbm5lbCBp cyBydW5uaW5nDQo+ID4gKyAqIEBjaGFuOiBEcml2ZXIgc3BlY2lmaWMgRE1BIGNoYW5uZWwNCj4g PiArICoNCj4gPiArICogUmV0dXJuOiAndHJ1ZScgaWYgcnVubmluZywgJ2ZhbHNlJyBpZiBub3Qu DQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgYm9vbCB4aWxpbnhfZG1hX2lzX3J1bm5pbmcoc3RydWN0 IHhpbGlueF9kbWFfY2hhbiAqY2hhbikgew0KPiA+ICsgICAgICAgcmV0dXJuICEoZG1hX2N0cmxf cmVhZChjaGFuLCBYSUxJTlhfRE1BX1JFR19TVEFUVVMpICYNCj4gPiArICAgICAgICAgICAgICAg IFhJTElOWF9ETUFfU1JfSEFMVEVEX01BU0spICYmDQo+ID4gKyAgICAgICAgICAgICAgIChkbWFf Y3RybF9yZWFkKGNoYW4sIFhJTElOWF9ETUFfUkVHX0NPTlRST0wpICYNCj4gPiArICAgICAgICAg ICAgICAgIFhJTElOWF9ETUFfQ1JfUlVOU1RPUF9NQVNLKTsgfQ0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAqIHhpbGlueF9kbWFfaXNfaWRsZSAtIENoZWNrIGlmIERNQSBjaGFubmVsIGlzIGlkbGUN Cj4gPiArICogQGNoYW46IERyaXZlciBzcGVjaWZpYyBETUEgY2hhbm5lbA0KPiA+ICsgKg0KPiA+ ICsgKiBSZXR1cm46ICd0cnVlJyBpZiBpZGxlLCAnZmFsc2UnIGlmIG5vdC4NCj4gPiArICovDQo+ ID4gK3N0YXRpYyBib29sIHhpbGlueF9kbWFfaXNfaWRsZShzdHJ1Y3QgeGlsaW54X2RtYV9jaGFu ICpjaGFuKSB7DQo+ID4gKyAgICAgICByZXR1cm4gISEoZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJ TlhfRE1BX1JFR19TVEFUVVMpICYNCj4gPiArICAgICAgICAgICAgICAgWElMSU5YX0RNQV9TUl9J RExFX01BU0spOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9oYWx0IC0g SGFsdCBETUEgY2hhbm5lbA0KPiA+ICsgKiBAY2hhbjogRHJpdmVyIHNwZWNpZmljIERNQSBjaGFu bmVsICAqLyBzdGF0aWMgdm9pZA0KPiA+ICt4aWxpbnhfZG1hX2hhbHQoc3RydWN0IHhpbGlueF9k bWFfY2hhbiAqY2hhbikgew0KPiA+ICsgICAgICAgaW50IGxvb3AgPSBYSUxJTlhfRE1BX0xPT1Bf Q09VTlQ7DQo+ID4gKw0KPiA+ICsgICAgICAgZG1hX2N0cmxfY2xyKGNoYW4sIFhJTElOWF9ETUFf UkVHX0NPTlRST0wsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgWElMSU5YX0RNQV9DUl9SVU5T VE9QX01BU0spOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIFdhaXQgZm9yIHRoZSBoYXJkd2FyZSB0 byBoYWx0ICovDQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmIChkbWFf Y3RybF9yZWFkKGNoYW4sIFhJTElOWF9ETUFfUkVHX1NUQVRVUykgJg0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIFhJTElOWF9ETUFfU1JfSEFMVEVEX01BU0spDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgYnJlYWs7DQo+ID4gKyAgICAgICB9IHdoaWxlIChsb29wLS0pOw0KPiA+ICsN Cj4gPiArICAgICAgIGlmICghbG9vcCkgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGNo YW4tPmRldiwgIkNhbm5vdCBzdG9wIGNoYW5uZWwgJXA6ICV4XG4iLA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgIGNoYW4sIGRtYV9jdHJsX3JlYWQoY2hhbiwgWElMSU5YX0RNQV9SRUdfU1RB VFVTKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGNoYW4tPmVyciA9IHRydWU7DQo+ID4gKyAgICAg ICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX3N0YXJ0IC0g U3RhcnQgRE1BIGNoYW5uZWwNCj4gPiArICogQGNoYW46IERyaXZlciBzcGVjaWZpYyBETUEgY2hh bm5lbCAgKi8gc3RhdGljIHZvaWQNCj4gPiAreGlsaW54X2RtYV9zdGFydChzdHJ1Y3QgeGlsaW54 X2RtYV9jaGFuICpjaGFuKSB7DQo+ID4gKyAgICAgICBpbnQgbG9vcCA9IFhJTElOWF9ETUFfTE9P UF9DT1VOVDsNCj4gPiArDQo+ID4gKyAgICAgICBkbWFfY3RybF9zZXQoY2hhbiwgWElMSU5YX0RN QV9SRUdfQ09OVFJPTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICBYSUxJTlhfRE1BX0NSX1JV TlNUT1BfTUFTSyk7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogV2FpdCBmb3IgdGhlIGhhcmR3YXJl IHRvIHN0YXJ0ICovDQo+ID4gKyAgICAgICBkbyB7DQo+ID4gKyAgICAgICAgICAgICAgIGlmICgh ZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJTlhfRE1BX1JFR19TVEFUVVMpICYNCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICBYSUxJTlhfRE1BX1NSX0hBTFRFRF9NQVNLKQ0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGJyZWFrOw0KPiA+ICsgICAgICAgfSB3aGlsZSAobG9vcC0tKTsNCj4g PiArDQo+ID4gKyAgICAgICBpZiAoIWxvb3ApIHsNCj4gPiArICAgICAgICAgICAgICAgZGV2X2Vy cihjaGFuLT5kZXYsICJDYW5ub3Qgc3RhcnQgY2hhbm5lbCAlcDogJXhcbiIsDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgICAgIGNoYW4sIGRtYV9jdHJsX3JlYWQoY2hhbiwgWElMSU5YX0RNQV9S RUdfU1RBVFVTKSk7DQo+ID4gKyAgICAgICAgICAgICAgIGNoYW4tPmVyciA9IHRydWU7DQo+ID4g KyAgICAgICB9DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX3N0 YXJ0X3RyYW5zZmVyIC0gU3RhcnRzIERNQSB0cmFuc2Zlcg0KPiA+ICsgKiBAY2hhbjogRHJpdmVy IHNwZWNpZmljIGNoYW5uZWwgc3RydWN0IHBvaW50ZXIgICovIHN0YXRpYyB2b2lkDQo+ID4gK3hp bGlueF9kbWFfc3RhcnRfdHJhbnNmZXIoc3RydWN0IHhpbGlueF9kbWFfY2hhbiAqY2hhbikgew0K PiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfZGVzY3JpcHRvciAqZGVzYzsNCj4gPiAr ICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX3R4X3NlZ21lbnQgKmhlYWQsICp0YWlsID0gTlVMTDsN Cj4gPiArDQo+ID4gKyAgICAgICBpZiAoY2hhbi0+ZXJyKQ0KPiA+ICsgICAgICAgICAgICAgICBy ZXR1cm47DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGxpc3RfZW1wdHkoJmNoYW4tPnBlbmRpbmdf bGlzdCkpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiArDQo+ID4gKyAgICAgICBp ZiAoIWNoYW4tPmlkbGUpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybjsNCj4gPiArDQo+ID4g KyAgICAgICBkZXNjID0gbGlzdF9maXJzdF9lbnRyeSgmY2hhbi0+cGVuZGluZ19saXN0LA0KPiA+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfZGVz Y3JpcHRvciwNCj4gPiArIG5vZGUpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChjaGFuLT5oYXNf c2cgJiYgeGlsaW54X2RtYV9pc19ydW5uaW5nKGNoYW4pICYmDQo+ID4gKyAgICAgICAgICAgIXhp bGlueF9kbWFfaXNfaWRsZShjaGFuKSkgew0KPiA+ICsgICAgICAgICAgICAgICB0YWlsID0gbGlz dF9lbnRyeShkZXNjLT5zZWdtZW50cy5wcmV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9zZWdtZW50LCBub2RlKTsNCj4gPiArICAg ICAgICAgICAgICAgZG1hX2N0cmxfd3JpdGUoY2hhbiwgWElMSU5YX0RNQV9SRUdfVEFJTERFU0Ms IHRhaWwtPnBoeXMpOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIG91dF9mcmVlX2Rlc2M7DQo+ ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGNoYW4tPmhhc19zZykgew0KPiA+ ICsgICAgICAgICAgICAgICBoZWFkID0gbGlzdF9maXJzdF9lbnRyeSgmZGVzYy0+c2VnbWVudHMs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4aWxp bnhfZG1hX3R4X3NlZ21lbnQsIG5vZGUpOw0KPiA+ICsgICAgICAgICAgICAgICB0YWlsID0gbGlz dF9lbnRyeShkZXNjLT5zZWdtZW50cy5wcmV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9zZWdtZW50LCBub2RlKTsNCj4gPiArICAg ICAgICAgICAgICAgZG1hX2N0cmxfd3JpdGUoY2hhbiwgWElMSU5YX0RNQV9SRUdfQ1VSREVTQywg aGVhZC0+cGh5cyk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgLyogRW5hYmxl IGludGVycnVwdHMgKi8NCj4gPiArICAgICAgIGRtYV9jdHJsX3NldChjaGFuLCBYSUxJTlhfRE1B X1JFR19DT05UUk9MLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIFhJTElOWF9ETUFfWFJfSVJR X0FMTF9NQVNLKTsNCj4gPiArDQo+ID4gKyAgICAgICB4aWxpbnhfZG1hX3N0YXJ0KGNoYW4pOw0K PiA+ICsgICAgICAgaWYgKGNoYW4tPmVycikNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuOw0K PiA+ICsNCj4gPiArICAgICAgIC8qIFN0YXJ0IHRoZSB0cmFuc2ZlciAqLw0KPiA+ICsgICAgICAg aWYgKGNoYW4tPmhhc19zZykgew0KPiA+ICsgICAgICAgICAgICAgICBkbWFfY3RybF93cml0ZShj aGFuLCBYSUxJTlhfRE1BX1JFR19UQUlMREVTQywgdGFpbC0+cGh5cyk7DQo+ID4gKyAgICAgICB9 IGVsc2Ugew0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9zZWdtZW50 ICpzZWdtZW50Ow0KPiA+ICsgICAgICAgICAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV9kZXNjX2h3 ICpodzsNCj4gPiArDQo+ID4gKyAgICAgICAgICAgICAgIHNlZ21lbnQgPSBsaXN0X2ZpcnN0X2Vu dHJ5KCZkZXNjLT5zZWdtZW50cywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc3RydWN0IHhpbGlueF9kbWFfdHhfc2VnbWVudCwgbm9kZSk7DQo+ID4gKyAg ICAgICAgICAgICAgIGh3ID0gJnNlZ21lbnQtPmh3Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgaWYgKGRlc2MtPmRpcmVjdGlvbiA9PSBETUFfTUVNX1RPX0RFVikNCj4gPiArICAgICAgICAg ICAgICAgICAgICAgICBkbWFfY3RybF93cml0ZShjaGFuLCBYSUxJTlhfRE1BX1JFR19TUkNBRERS LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3LT5idWZfYWRk cik7DQo+ID4gKyAgICAgICAgICAgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICBkbWFfY3RybF93cml0ZShjaGFuLCBYSUxJTlhfRE1BX1JFR19EU1RBRERSLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh3LT5idWZfYWRkcik7DQo+ID4gKw0K PiA+ICsgICAgICAgICAgICAgICAvKiBTdGFydCB0aGUgdHJhbnNmZXIgKi8NCj4gPiArICAgICAg ICAgICAgICAgZG1hX2N0cmxfd3JpdGUoY2hhbiwgWElMSU5YX0RNQV9SRUdfQlRULA0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBody0+Y29udHJvbCAmIFhJTElOWF9ETUFfTUFY X1RSQU5TX0xFTik7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICtvdXRfZnJlZV9kZXNjOg0K PiA+ICsgICAgICAgbGlzdF9kZWwoJmRlc2MtPm5vZGUpOw0KPiA+ICsgICAgICAgY2hhbi0+aWRs ZSA9IGZhbHNlOw0KPiA+ICsgICAgICAgY2hhbi0+YWN0aXZlX2Rlc2MgPSBkZXNjOw0KPiA+ICt9 DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9pc3N1ZV9wZW5kaW5nIC0gSXNz dWUgcGVuZGluZyB0cmFuc2FjdGlvbnMNCj4gPiArICogQGRjaGFuOiBETUEgY2hhbm5lbA0KPiA+ ICsgKi8NCj4gPiArc3RhdGljIHZvaWQgeGlsaW54X2RtYV9pc3N1ZV9wZW5kaW5nKHN0cnVjdCBk bWFfY2hhbiAqZGNoYW4pIHsNCj4gPiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNo YW4gPSB0b194aWxpbnhfY2hhbihkY2hhbik7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZs YWdzOw0KPiA+ICsNCj4gPiArICAgICAgIHNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT5sb2NrLCBm bGFncyk7DQo+ID4gKyAgICAgICB4aWxpbnhfZG1hX3N0YXJ0X3RyYW5zZmVyKGNoYW4pOw0KPiA+ ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbi0+bG9jaywgZmxhZ3MpOyB9DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9jb21wbGV0ZV9kZXNjcmlwdG9yIC0g TWFyayB0aGUgYWN0aXZlIGRlc2NyaXB0b3IgYXMNCj4gPiArY29tcGxldGUNCj4gPiArICogQGNo YW4gOiB4aWxpbnggRE1BIGNoYW5uZWwNCj4gPiArICovDQo+ID4gK3N0YXRpYyB2b2lkIHhpbGlu eF9kbWFfY29tcGxldGVfZGVzY3JpcHRvcihzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuDQo+ID4gKypj aGFuKSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9kZXNjcmlwdG9yICpkZXNj Ow0KPiA+ICsNCj4gPiArICAgICAgIGRlc2MgPSBjaGFuLT5hY3RpdmVfZGVzYzsNCj4gPiArICAg ICAgIGlmICghZGVzYykgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZGJnKGNoYW4tPmRldiwg Im5vIHJ1bm5pbmcgZGVzY3JpcHRvcnNcbiIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm47 DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgZG1hX2Nvb2tpZV9jb21wbGV0ZSgm ZGVzYy0+YXN5bmNfdHgpOw0KPiA+ICsgICAgICAgbGlzdF9hZGRfdGFpbCgmZGVzYy0+bm9kZSwg JmNoYW4tPmRvbmVfbGlzdCk7DQo+ID4gKw0KPiA+ICsgICAgICAgY2hhbi0+YWN0aXZlX2Rlc2Mg PSBOVUxMOw0KPiA+ICsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhpbGlueF9k bWFfcmVzZXQgLSBSZXNldCBETUEgY2hhbm5lbA0KPiA+ICsgKiBAY2hhbjogRHJpdmVyIHNwZWNp ZmljIERNQSBjaGFubmVsDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogJzAnIG9uIHN1Y2Nlc3Mg YW5kIGZhaWx1cmUgdmFsdWUgb24gZXJyb3IgICovIHN0YXRpYyBpbnQNCj4gPiAreGlsaW54X2Rt YV9jaGFuX3Jlc2V0KHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4pIHsNCj4gPiArICAgICAg IGludCBsb29wID0gWElMSU5YX0RNQV9MT09QX0NPVU5UOw0KPiA+ICsgICAgICAgdTMyIHRtcDsN Cj4gPiArDQo+ID4gKyAgICAgICBkbWFfY3RybF9zZXQoY2hhbiwgWElMSU5YX0RNQV9SRUdfQ09O VFJPTCwNCj4gPiArICAgICAgICAgICAgICAgICAgICBYSUxJTlhfRE1BX0NSX1JFU0VUX01BU0sp Ow0KPiA+ICsNCj4gPiArICAgICAgIHRtcCA9IGRtYV9jdHJsX3JlYWQoY2hhbiwgWElMSU5YX0RN QV9SRUdfQ09OVFJPTCkgJg0KPiA+ICsgICAgICAgICAgICAgWElMSU5YX0RNQV9DUl9SRVNFVF9N QVNLOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIFdhaXQgZm9yIHRoZSBoYXJkd2FyZSB0byBmaW5p c2ggcmVzZXQgKi8NCj4gPiArICAgICAgIGRvIHsNCj4gPiArICAgICAgICAgICAgICAgdG1wID0g ZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJTlhfRE1BX1JFR19DT05UUk9MKSAmDQo+ID4gKyAgICAg ICAgICAgICAgICAgICAgIFhJTElOWF9ETUFfQ1JfUkVTRVRfTUFTSzsNCj4gPiArICAgICAgIH0g d2hpbGUgKGxvb3AtLSAmJiB0bXApOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICghbG9vcCkgew0K PiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGNoYW4tPmRldiwgInJlc2V0IHRpbWVvdXQsIGNy ICV4LCBzciAleFxuIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBkbWFfY3RybF9yZWFk KGNoYW4sIFhJTElOWF9ETUFfUkVHX0NPTlRST0wpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIGRtYV9jdHJsX3JlYWQoY2hhbiwgWElMSU5YX0RNQV9SRUdfU1RBVFVTKSk7DQo+ID4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgICAgY2hhbi0+ZXJyID0gZmFsc2U7DQo+ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX2lycV9oYW5kbGVyIC0g RE1BIEludGVycnVwdCBoYW5kbGVyDQo+ID4gKyAqIEBpcnE6IElSUSBudW1iZXINCj4gPiArICog QGRhdGE6IFBvaW50ZXIgdG8gdGhlIFhpbGlueCBETUEgY2hhbm5lbCBzdHJ1Y3R1cmUNCj4gPiAr ICoNCj4gPiArICogUmV0dXJuOiBJUlFfSEFORExFRC9JUlFfTk9ORQ0KPiA+ICsgKi8NCj4gPiAr c3RhdGljIGlycXJldHVybl90IHhpbGlueF9kbWFfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAq ZGF0YSkgew0KPiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9kbWFfY2hhbiAqY2hhbiA9IGRhdGE7 DQo+ID4gKyAgICAgICB1MzIgc3RhdHVzOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIFJlYWQgdGhl IHN0YXR1cyBhbmQgYWNrIHRoZSBpbnRlcnJ1cHRzLiAqLw0KPiA+ICsgICAgICAgc3RhdHVzID0g ZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJTlhfRE1BX1JFR19TVEFUVVMpOw0KPiA+ICsgICAgICAg aWYgKCEoc3RhdHVzICYgWElMSU5YX0RNQV9YUl9JUlFfQUxMX01BU0spKQ0KPiA+ICsgICAgICAg ICAgICAgICByZXR1cm4gSVJRX05PTkU7DQo+ID4gKw0KPiA+ICsgICAgICAgZG1hX2N0cmxfd3Jp dGUoY2hhbiwgWElMSU5YX0RNQV9SRUdfU1RBVFVTLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgc3RhdHVzICYgWElMSU5YX0RNQV9YUl9JUlFfQUxMX01BU0spOw0KPiA+ICsNCj4gPiArICAg ICAgIGlmIChzdGF0dXMgJiBYSUxJTlhfRE1BX1hSX0lSUV9FUlJPUl9NQVNLKSB7DQo+ID4gKyAg ICAgICAgICAgICAgIGRldl9lcnIoY2hhbi0+ZGV2LA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICJDaGFubmVsICVwIGhhcyBlcnJvcnMgJXgsIGNkciAleCB0ZHIgJXhcbiIsDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgY2hhbiwgZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJTlhfRE1B X1JFR19TVEFUVVMpLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGRtYV9jdHJsX3JlYWQo Y2hhbiwgWElMSU5YX0RNQV9SRUdfQ1VSREVTQyksDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgZG1hX2N0cmxfcmVhZChjaGFuLCBYSUxJTlhfRE1BX1JFR19UQUlMREVTQykpOw0KPiA+ICsg ICAgICAgICAgICAgICBjaGFuLT5lcnIgPSB0cnVlOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4g PiArICAgICAgIC8qDQo+ID4gKyAgICAgICAgKiBEZXZpY2UgdGFrZXMgdG9vIGxvbmcgdG8gZG8g dGhlIHRyYW5zZmVyIHdoZW4gdXNlciByZXF1aXJlcw0KPiA+ICsgICAgICAgICogcmVzcG9uc2l2 ZW5lc3MNCj4gPiArICAgICAgICAqLw0KPiA+ICsgICAgICAgaWYgKHN0YXR1cyAmIFhJTElOWF9E TUFfWFJfSVJRX0RFTEFZX01BU0spDQo+ID4gKyAgICAgICAgICAgICAgIGRldl9kYmcoY2hhbi0+ ZGV2LCAiSW50ZXItcGFja2V0IGxhdGVuY3kgdG9vIGxvbmdcbiIpOw0KPiA+ICsNCj4gPiArICAg ICAgIGlmIChzdGF0dXMgJiBYSUxJTlhfRE1BX1hSX0lSUV9JT0NfTUFTSykgew0KPiA+ICsgICAg ICAgICAgICAgICBzcGluX2xvY2soJmNoYW4tPmxvY2spOw0KPiA+ICsgICAgICAgICAgICAgICB4 aWxpbnhfZG1hX2NvbXBsZXRlX2Rlc2NyaXB0b3IoY2hhbik7DQo+ID4gKyAgICAgICAgICAgICAg IGNoYW4tPmlkbGUgPSB0cnVlOw0KPiA+ICsgICAgICAgICAgICAgICB4aWxpbnhfZG1hX3N0YXJ0 X3RyYW5zZmVyKGNoYW4pOw0KPiA+ICsgICAgICAgICAgICAgICBzcGluX3VubG9jaygmY2hhbi0+ bG9jayk7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgdGFza2xldF9zY2hlZHVs ZSgmY2hhbi0+dGFza2xldCk7DQo+ID4gKyAgICAgICByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+ID4g K30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX2RvX3Rhc2tsZXQgLSBTY2hl ZHVsZSBjb21wbGV0aW9uIHRhc2tsZXQNCj4gPiArICogQGRhdGE6IFBvaW50ZXIgdG8gdGhlIFhp bGlueCBkbWEgY2hhbm5lbCBzdHJ1Y3R1cmUgICovIHN0YXRpYyB2b2lkDQo+ID4gK3hpbGlueF9k bWFfZG9fdGFza2xldCh1bnNpZ25lZCBsb25nIGRhdGEpIHsNCj4gPiArICAgICAgIHN0cnVjdCB4 aWxpbnhfZG1hX2NoYW4gKmNoYW4gPSAoc3RydWN0IHhpbGlueF9kbWFfY2hhbiAqKWRhdGE7DQo+ ID4gKw0KPiA+ICsgICAgICAgeGlsaW54X2RtYV9jaGFuX2Rlc2NfY2xlYW51cChjaGFuKTsNCj4g PiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhpbGlueF9kbWFfdHhfc3VibWl0IC0gU3Vi bWl0IERNQSB0cmFuc2FjdGlvbg0KPiA+ICsgKiBAdHg6IEFzeW5jIHRyYW5zYWN0aW9uIGRlc2Ny aXB0b3INCj4gPiArICoNCj4gPiArICogUmV0dXJuOiBjb29raWUgdmFsdWUgb24gc3VjY2VzcyBh bmQgZmFpbHVyZSB2YWx1ZSBvbiBlcnJvciAgKi8NCj4gPiArc3RhdGljIGRtYV9jb29raWVfdCB4 aWxpbnhfZG1hX3R4X3N1Ym1pdChzdHJ1Y3QNCj4gPiArZG1hX2FzeW5jX3R4X2Rlc2NyaXB0b3Ig KnR4KSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV90eF9kZXNjcmlwdG9yICpkZXNj ID0gdG9fZG1hX3R4X2Rlc2NyaXB0b3IodHgpOw0KPiA+ICsgICAgICAgc3RydWN0IHhpbGlueF9k bWFfY2hhbiAqY2hhbiA9IHRvX3hpbGlueF9jaGFuKHR4LT5jaGFuKTsNCj4gPiArICAgICAgIGRt YV9jb29raWVfdCBjb29raWU7DQo+ID4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOw0KPiA+ ICsgICAgICAgaW50IGVycjsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoY2hhbi0+ZXJyKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICAgICAgICAqIElmIHJlc2V0IGZh aWxzLCBuZWVkIHRvIGhhcmQgcmVzZXQgdGhlIHN5c3RlbS4NCj4gPiArICAgICAgICAgICAgICAg ICogQ2hhbm5lbCBpcyBubyBsb25nZXIgZnVuY3Rpb25hbA0KPiA+ICsgICAgICAgICAgICAgICAg Ki8NCj4gPiArICAgICAgICAgICAgICAgZXJyID0geGlsaW54X2RtYV9jaGFuX3Jlc2V0KGNoYW4p Ow0KPiA+ICsgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gZXJyOw0KPiA+ICsgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgIHNw aW5fbG9ja19pcnFzYXZlKCZjaGFuLT5sb2NrLCBmbGFncyk7DQo+ID4gKw0KPiA+ICsgICAgICAg Y29va2llID0gZG1hX2Nvb2tpZV9hc3NpZ24odHgpOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIEFw cGVuZCB0aGUgdHJhbnNhY3Rpb24gdG8gdGhlIHBlbmRpbmcgdHJhbnNhY3Rpb25zIHF1ZXVlLiAq Lw0KPiA+ICsgICAgICAgbGlzdF9hZGRfdGFpbCgmZGVzYy0+bm9kZSwgJmNoYW4tPnBlbmRpbmdf bGlzdCk7DQo+ID4gKw0KPiA+ICsgICAgICAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbi0+ bG9jaywgZmxhZ3MpOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiBjb29raWU7DQo+ID4gK30N Cj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX3ByZXBfc2xhdmVfc2cgLSBwcmVw YXJlIGRlc2NyaXB0b3JzIGZvciBhIERNQV9TTEFWRQ0KPiA+ICt0cmFuc2FjdGlvbg0KPiA+ICsg KiBAZGNoYW46IERNQSBjaGFubmVsDQo+ID4gKyAqIEBzZ2w6IHNjYXR0ZXJsaXN0IHRvIHRyYW5z ZmVyIHRvL2Zyb20NCj4gPiArICogQHNnX2xlbjogbnVtYmVyIG9mIGVudHJpZXMgaW4gQHNjYXR0 ZXJsaXN0DQo+ID4gKyAqIEBkaXJlY3Rpb246IERNQSBkaXJlY3Rpb24NCj4gPiArICogQGZsYWdz OiB0cmFuc2ZlciBhY2sgZmxhZ3MNCj4gPiArICogQGNvbnRleHQ6IEFQUCB3b3JkcyBvZiB0aGUg ZGVzY3JpcHRvcg0KPiA+ICsgKg0KPiA+ICsgKiBSZXR1cm46IEFzeW5jIHRyYW5zYWN0aW9uIGRl c2NyaXB0b3Igb24gc3VjY2VzcyBhbmQgTlVMTCBvbg0KPiA+ICtmYWlsdXJlICAqLyBzdGF0aWMg c3RydWN0IGRtYV9hc3luY190eF9kZXNjcmlwdG9yDQo+ID4gKyp4aWxpbnhfZG1hX3ByZXBfc2xh dmVfc2coDQo+ID4gKyAgICAgICBzdHJ1Y3QgZG1hX2NoYW4gKmRjaGFuLCBzdHJ1Y3Qgc2NhdHRl cmxpc3QgKnNnbCwgdW5zaWduZWQgaW50IHNnX2xlbiwNCj4gPiArICAgICAgIGVudW0gZG1hX3Ry YW5zZmVyX2RpcmVjdGlvbiBkaXJlY3Rpb24sIHVuc2lnbmVkIGxvbmcgZmxhZ3MsDQo+ID4gKyAg ICAgICB2b2lkICpjb250ZXh0KQ0KPiA+ICt7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2Rt YV9jaGFuICpjaGFuID0gdG9feGlsaW54X2NoYW4oZGNoYW4pOw0KPiA+ICsgICAgICAgc3RydWN0 IHhpbGlueF9kbWFfdHhfZGVzY3JpcHRvciAqZGVzYzsNCj4gPiArICAgICAgIHN0cnVjdCB4aWxp bnhfZG1hX3R4X3NlZ21lbnQgKnNlZ21lbnQ7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2Rt YV9kZXNjX2h3ICpodzsNCj4gPiArICAgICAgIHUzMiAqYXBwX3cgPSAodTMyICopY29udGV4dDsN Cj4gPiArICAgICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2c7DQo+ID4gKyAgICAgICBzaXplX3Qg Y29weSwgc2dfdXNlZDsNCj4gPiArICAgICAgIGludCBpOw0KPiA+ICsNCj4gPiArICAgICAgIGlm ICghaXNfc2xhdmVfZGlyZWN0aW9uKGRpcmVjdGlvbikpDQo+ID4gKyAgICAgICAgICAgICAgIHJl dHVybiBOVUxMOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIEFsbG9jYXRlIGEgdHJhbnNhY3Rpb24g ZGVzY3JpcHRvci4gKi8NCj4gPiArICAgICAgIGRlc2MgPSB4aWxpbnhfZG1hX2FsbG9jX3R4X2Rl c2NyaXB0b3IoY2hhbik7DQo+ID4gKyAgICAgICBpZiAoIWRlc2MpDQo+ID4gKyAgICAgICAgICAg ICAgIHJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArICAgICAgIGRlc2MtPmRpcmVjdGlvbiA9IGRp cmVjdGlvbjsNCj4gPiArICAgICAgIGRtYV9hc3luY190eF9kZXNjcmlwdG9yX2luaXQoJmRlc2Mt PmFzeW5jX3R4LCAmY2hhbi0+Y29tbW9uKTsNCj4gPiArICAgICAgIGRlc2MtPmFzeW5jX3R4LnR4 X3N1Ym1pdCA9IHhpbGlueF9kbWFfdHhfc3VibWl0Ow0KPiA+ICsNCj4gPiArICAgICAgIC8qIEJ1 aWxkIHRyYW5zYWN0aW9ucyB1c2luZyBpbmZvcm1hdGlvbiBpbiB0aGUgc2NhdHRlciBnYXRoZXIg bGlzdCAqLw0KPiA+ICsgICAgICAgZm9yX2VhY2hfc2coc2dsLCBzZywgc2dfbGVuLCBpKSB7DQo+ ID4gKyAgICAgICAgICAgICAgIHNnX3VzZWQgPSAwOw0KPiA+ICsNCj4gPiArICAgICAgICAgICAg ICAgLyogTG9vcCB1bnRpbCB0aGUgZW50aXJlIHNjYXR0ZXJsaXN0IGVudHJ5IGlzIHVzZWQgKi8N Cj4gPiArICAgICAgICAgICAgICAgd2hpbGUgKHNnX3VzZWQgPCBzZ19kbWFfbGVuKHNnKSkgew0K PiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAvKiBHZXQgYSBmcmVlIHNlZ21lbnQg Ki8NCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50ID0geGlsaW54X2RtYV9hbGxv Y190eF9zZWdtZW50KGNoYW4pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2Vn bWVudCkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7DQo+ ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIC8qDQo+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICogQ2FsY3VsYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byB0cmFu c2ZlciwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgKiBtYWtpbmcgc3VyZSBpdCBpcyBs ZXNzIHRoYW4gdGhlIGh3IGxpbWl0DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICovDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgY29weSA9IG1pbl90KHNpemVfdCwgc2dfZG1hX2xl bihzZykgLSBzZ191c2VkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBYSUxJTlhfRE1BX01BWF9UUkFOU19MRU4pOw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAg IGh3ID0gJnNlZ21lbnQtPmh3Ow0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAv KiBGaWxsIGluIHRoZSBkZXNjcmlwdG9yICovDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg aHctPmJ1Zl9hZGRyID0gc2dfZG1hX2FkZHJlc3Moc2cpICsgc2dfdXNlZDsNCj4gPiArDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgaHctPmNvbnRyb2wgPSBjb3B5Ow0KPiA+ICsNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IERNQV9NRU1fVE9fREVWKSB7 DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXBwX3cpDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShody0+YXBwLCBhcHBf dywgc2l6ZW9mKHUzMikgKg0KPiA+ICsNCj4gPiArIFhJTElOWF9ETUFfTlVNX0FQUF9XT1JEUyk7 DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEZvciB0aGUgZmlyc3QgRE1BX01FTV9UT19E RVYgdHJhbnNmZXIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzZXQg U09QDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCj4gPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkNCj4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaHctPmNvbnRyb2wgfD0gWElMSU5YX0RNQV9CRF9TT1A7DQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiA+ICsNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICBzZ191c2VkICs9IGNvcHk7DQo+ID4gKw0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgIC8qDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICogSW5zZXJ0IHRoZSBzZWdtZW50 IGludG8gdGhlIGRlc2NyaXB0b3Igc2VnbWVudHMNCj4gPiArICAgICAgICAgICAgICAgICAgICAg ICAgKiBsaXN0Lg0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAqLw0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgIGxpc3RfYWRkX3RhaWwoJnNlZ21lbnQtPm5vZGUsICZkZXNjLT5zZWdt ZW50cyk7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgICAvKiBGb3IgdGhlIGxhc3QgRE1BX01FTV9UT19ERVYgdHJhbnNmZXIsIHNldCBFT1Ag Ki8NCj4gPiArICAgICAgIGlmIChkaXJlY3Rpb24gPT0gRE1BX01FTV9UT19ERVYpIHsNCj4gPiAr ICAgICAgICAgICAgICAgc2VnbWVudCA9IGxpc3RfbGFzdF9lbnRyeSgmZGVzYy0+c2VnbWVudHMs DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHhp bGlueF9kbWFfdHhfc2VnbWVudCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBub2RlKTsNCj4gPiArICAgICAgICAgICAgICAgc2VnbWVudC0+aHcuY29udHJv bCB8PSBYSUxJTlhfRE1BX0JEX0VPUDsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAg ICByZXR1cm4gJmRlc2MtPmFzeW5jX3R4Ow0KPiA+ICsNCj4gPiArZXJyb3I6DQo+ID4gKyAgICAg ICB4aWxpbnhfZG1hX2ZyZWVfdHhfZGVzY3JpcHRvcihjaGFuLCBkZXNjKTsNCj4gPiArICAgICAg IHJldHVybiBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogeGlsaW54X2Rt YV90ZXJtaW5hdGVfYWxsIC0gSGFsdCB0aGUgY2hhbm5lbCBhbmQgZnJlZSBkZXNjcmlwdG9ycw0K PiA+ICsgKiBAZGNoYW46IERNQSBDaGFubmVsIHBvaW50ZXINCj4gPiArICoNCj4gPiArICogUmV0 dXJuOiAnMCcgYWx3YXlzDQo+ID4gKyAqLw0KPiA+ICtzdGF0aWMgaW50IHhpbGlueF9kbWFfdGVy bWluYXRlX2FsbChzdHJ1Y3QgZG1hX2NoYW4gKmRjaGFuKSB7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg eGlsaW54X2RtYV9jaGFuICpjaGFuID0gdG9feGlsaW54X2NoYW4oZGNoYW4pOw0KPiA+ICsNCj4g PiArICAgICAgIC8qIEhhbHQgdGhlIERNQSBlbmdpbmUgKi8NCj4gPiArICAgICAgIHhpbGlueF9k bWFfaGFsdChjaGFuKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBSZW1vdmUgYW5kIGZyZWUgYWxs IG9mIHRoZSBkZXNjcmlwdG9ycyBpbiB0aGUgbGlzdHMgKi8NCj4gPiArICAgICAgIHhpbGlueF9k bWFfZnJlZV9kZXNjcmlwdG9ycyhjaGFuKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAqIHhpbGlueF9kbWFfY2hhbm5lbF9zZXRf Y29uZmlnIC0gQ29uZmlndXJlIERNQSBjaGFubmVsDQo+ID4gKyAqIEBkY2hhbjogRE1BIGNoYW5u ZWwNCj4gPiArICogQGNmZzogRE1BIGRldmljZSBjb25maWd1cmF0aW9uIHBvaW50ZXINCj4gPiAr ICogUmV0dXJuOiAnMCcgb24gc3VjY2VzcyBhbmQgZmFpbHVyZSB2YWx1ZSBvbiBlcnJvciAgKi8g aW50DQo+ID4gK3hpbGlueF9kbWFfY2hhbm5lbF9zZXRfY29uZmlnKHN0cnVjdCBkbWFfY2hhbiAq ZGNoYW4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4aWxp bnhfZG1hX2NvbmZpZyAqY2ZnKSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV9jaGFu ICpjaGFuID0gdG9feGlsaW54X2NoYW4oZGNoYW4pOw0KPiA+ICsgICAgICAgdTMyIHJlZyA9IGRt YV9jdHJsX3JlYWQoY2hhbiwgWElMSU5YX0RNQV9SRUdfQ09OVFJPTCk7DQo+ID4gKw0KPiA+ICsg ICAgICAgaWYgKCF4aWxpbnhfZG1hX2lzX2lkbGUoY2hhbikpDQo+ID4gKyAgICAgICAgICAgICAg IHJldHVybiAtRUJVU1k7DQo+ID4gKw0KPiA+ICsgICAgICAgaWYgKGNmZy0+cmVzZXQpDQo+ID4g KyAgICAgICAgICAgICAgIHJldHVybiB4aWxpbnhfZG1hX2NoYW5fcmVzZXQoY2hhbik7DQo+ID4g Kw0KPiA+ICsgICAgICAgaWYgKGNmZy0+Y29hbGVzYyA8PSBYSUxJTlhfRE1BX0NSX0NPQUxFU0NF X01BWCkNCj4gPiArICAgICAgICAgICAgICAgcmVnIHw9IGNmZy0+Y29hbGVzYyA8PCBYSUxJTlhf RE1BX0NSX0NPQUxFU0NFX1NISUZUOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChjZmctPmRlbGF5 IDw9IFhJTElOWF9ETUFfQ1JfREVMQVlfTUFYKQ0KPiA+ICsgICAgICAgICAgICAgICByZWcgfD0g Y2ZnLT5kZWxheSA8PCBYSUxJTlhfRE1BX0NSX0RFTEFZX1NISUZUOw0KPiA+ICsNCj4gPiArICAg ICAgIGRtYV9jdHJsX3dyaXRlKGNoYW4sIFhJTElOWF9ETUFfUkVHX0NPTlRST0wsIHJlZyk7DQo+ ID4gKw0KPiA+ICsgICAgICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArRVhQT1JUX1NZTUJPTCh4 aWxpbnhfZG1hX2NoYW5uZWxfc2V0X2NvbmZpZyk7DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICog eGlsaW54X2RtYV9jaGFuX3JlbW92ZSAtIFBlciBDaGFubmVsIHJlbW92ZSBmdW5jdGlvbg0KPiA+ ICsgKiBAY2hhbjogRHJpdmVyIHNwZWNpZmljIERNQSBjaGFubmVsICAqLyBzdGF0aWMgdm9pZA0K PiA+ICt4aWxpbnhfZG1hX2NoYW5fcmVtb3ZlKHN0cnVjdCB4aWxpbnhfZG1hX2NoYW4gKmNoYW4p IHsNCj4gPiArICAgICAgIC8qIERpc2FibGUgaW50ZXJydXB0cyAqLw0KPiA+ICsgICAgICAgZG1h X2N0cmxfY2xyKGNoYW4sIFhJTElOWF9ETUFfUkVHX0NPTlRST0wsDQo+ID4gK1hJTElOWF9ETUFf WFJfSVJRX0FMTF9NQVNLKTsNCj4gPiArDQo+ID4gKyAgICAgICBpZiAoY2hhbi0+aXJxID4gMCkN Cj4gPiArICAgICAgICAgICAgICAgZnJlZV9pcnEoY2hhbi0+aXJxLCBjaGFuKTsNCj4gPiArDQo+ ID4gKyAgICAgICB0YXNrbGV0X2tpbGwoJmNoYW4tPnRhc2tsZXQpOw0KPiA+ICsNCj4gPiArICAg ICAgIGxpc3RfZGVsKCZjaGFuLT5jb21tb24uZGV2aWNlX25vZGUpOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICsvKioNCj4gPiArICogeGlsaW54X2RtYV9jaGFuX3Byb2JlIC0gUGVyIENoYW5uZWwgUHJv YmluZw0KPiA+ICsgKiBJdCBnZXQgY2hhbm5lbCBmZWF0dXJlcyBmcm9tIHRoZSBkZXZpY2UgdHJl ZSBlbnRyeSBhbmQNCj4gPiArICogaW5pdGlhbGl6ZSBzcGVjaWFsIGNoYW5uZWwgaGFuZGxpbmcg cm91dGluZXMNCj4gPiArICoNCj4gPiArICogQHhkZXY6IERyaXZlciBzcGVjaWZpYyBkZXZpY2Ug c3RydWN0dXJlDQo+ID4gKyAqIEBub2RlOiBEZXZpY2Ugbm9kZQ0KPiA+ICsgKg0KPiA+ICsgKiBS ZXR1cm46ICcwJyBvbiBzdWNjZXNzIGFuZCBmYWlsdXJlIHZhbHVlIG9uIGVycm9yICAqLyBzdGF0 aWMgaW50DQo+ID4gK3hpbGlueF9kbWFfY2hhbl9wcm9iZShzdHJ1Y3QgeGlsaW54X2RtYV9kZXZp Y2UgKnhkZXYsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRl dmljZV9ub2RlICpub2RlKSB7DQo+ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV9jaGFuICpj aGFuOw0KPiA+ICsgICAgICAgaW50IGVycjsNCj4gPiArICAgICAgIGJvb2wgaGFzX2RyZTsNCj4g PiArICAgICAgIHUzMiB2YWx1ZSwgd2lkdGggPSAwOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIGFs bG9jIGNoYW5uZWwgKi8NCj4gPiArICAgICAgIGNoYW4gPSBkZXZtX2t6YWxsb2MoeGRldi0+ZGV2 LCBzaXplb2YoKmNoYW4pLCBHRlBfS0VSTkVMKTsNCj4gPiArICAgICAgIGlmICghY2hhbikNCj4g PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsgICAgICAgY2hh bi0+ZGV2ID0geGRldi0+ZGV2Ow0KPiA+ICsgICAgICAgY2hhbi0+eGRldiA9IHhkZXY7DQo+ID4g KyAgICAgICBjaGFuLT5oYXNfc2cgPSB4ZGV2LT5oYXNfc2c7DQo+ID4gKw0KPiA+ICsgICAgICAg aGFzX2RyZSA9IG9mX3Byb3BlcnR5X3JlYWRfYm9vbChub2RlLCAieGxueCxpbmNsdWRlLWRyZSIp Ow0KPiA+ICsNCj4gPiArICAgICAgIGVyciA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUsICJ4 bG54LGRhdGF3aWR0aCIsICZ2YWx1ZSk7DQo+ID4gKyAgICAgICBpZiAoZXJyKSB7DQo+ID4gKyAg ICAgICAgICAgICAgIGRldl9lcnIoeGRldi0+ZGV2LCAidW5hYmxlIHRvIHJlYWQgZGF0YXdpZHRo IHByb3BlcnR5Iik7DQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+ID4gKyAgICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgICAgd2lkdGggPSB2YWx1ZSA+PiAzOyAvKiBDb252ZXJ0IGJp dHMgdG8gYnl0ZXMgKi8NCj4gPiArDQo+ID4gKyAgICAgICAvKiBJZiBkYXRhIHdpZHRoIGlzIGdy ZWF0ZXIgdGhhbiA4IGJ5dGVzLCBEUkUgaXMgbm90IGluIGh3ICovDQo+ID4gKyAgICAgICBpZiAo d2lkdGggPiA4KQ0KPiA+ICsgICAgICAgICAgICAgICBoYXNfZHJlID0gZmFsc2U7DQo+ID4gKw0K PiA+ICsgICAgICAgaWYgKCFoYXNfZHJlKQ0KPiA+ICsgICAgICAgICAgICAgICB4ZGV2LT5jb21t b24uY29weV9hbGlnbiA9IGZscyh3aWR0aCAtIDEpOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChv Zl9kZXZpY2VfaXNfY29tcGF0aWJsZShub2RlLCAieGxueCxheGktZG1hLW1tMnMtY2hhbm5lbCIp KSB7DQo+ID4gKyAgICAgICAgICAgICAgIGNoYW4tPmlkID0gMDsNCj4gPiArICAgICAgICAgICAg ICAgY2hhbi0+Y3RybF9vZmZzZXQgPSBYSUxJTlhfRE1BX01NMlNfQ1RSTF9PRkZTRVQ7DQo+ID4g KyAgICAgICB9IGVsc2UgaWYgKG9mX2RldmljZV9pc19jb21wYXRpYmxlKG5vZGUsICJ4bG54LGF4 aS1kbWEtczJtbS0NCj4gY2hhbm5lbCIpKSB7DQo+ID4gKyAgICAgICAgICAgICAgIGNoYW4tPmlk ID0gMTsNCj4gPiArICAgICAgICAgICAgICAgY2hhbi0+Y3RybF9vZmZzZXQgPSBYSUxJTlhfRE1B X1MyTU1fQ1RSTF9PRkZTRVQ7DQo+ID4gKyAgICAgICB9IGVsc2Ugew0KPiA+ICsgICAgICAgICAg ICAgICBkZXZfZXJyKHhkZXYtPmRldiwgIkludmFsaWQgY2hhbm5lbCBjb21wYXRpYmxlIG5vZGVc biIpOw0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiArICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICB4ZGV2LT5jaGFuW2NoYW4tPmlkXSA9IGNoYW47DQo+ID4gKw0K PiA+ICsgICAgICAgLyogSW5pdGlhbGl6ZSB0aGUgY2hhbm5lbCAqLw0KPiA+ICsgICAgICAgZXJy ID0geGlsaW54X2RtYV9jaGFuX3Jlc2V0KGNoYW4pOw0KPiA+ICsgICAgICAgaWYgKGVycikgew0K PiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHhkZXYtPmRldiwgIlJlc2V0IGNoYW5uZWwgZmFp bGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIGVycjsNCj4gPiArICAgICAgIH0N Cj4gPiArDQo+ID4gKyAgICAgICBzcGluX2xvY2tfaW5pdCgmY2hhbi0+bG9jayk7DQo+ID4gKyAg ICAgICBJTklUX0xJU1RfSEVBRCgmY2hhbi0+cGVuZGluZ19saXN0KTsNCj4gPiArICAgICAgIElO SVRfTElTVF9IRUFEKCZjaGFuLT5kb25lX2xpc3QpOw0KPiA+ICsgICAgICAgSU5JVF9MSVNUX0hF QUQoJmNoYW4tPmZyZWVfc2VnX2xpc3QpOw0KPiA+ICsNCj4gPiArICAgICAgIGNoYW4tPmNvbW1v bi5kZXZpY2UgPSAmeGRldi0+Y29tbW9uOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIGZpbmQgdGhl IElSUSBsaW5lLCBpZiBpdCBleGlzdHMgaW4gdGhlIGRldmljZSB0cmVlICovDQo+ID4gKyAgICAg ICBjaGFuLT5pcnEgPSBpcnFfb2ZfcGFyc2VfYW5kX21hcChub2RlLCAwKTsNCj4gPiArICAgICAg IGVyciA9IHJlcXVlc3RfaXJxKGNoYW4tPmlycSwgeGlsaW54X2RtYV9pcnFfaGFuZGxlciwNCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgIElSUUZfU0hBUkVELA0KPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgInhpbGlueC1kbWEtY29udHJvbGxlciIsIGNoYW4pOw0KPiA+ICsgICAg ICAgaWYgKGVycikgew0KPiA+ICsgICAgICAgICAgICAgICBkZXZfZXJyKHhkZXYtPmRldiwgInVu YWJsZSB0byByZXF1ZXN0IElSUSAlZFxuIiwgY2hhbi0+aXJxKTsNCj4gPiArICAgICAgICAgICAg ICAgcmV0dXJuIGVycjsNCj4gPiArICAgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgICAvKiBJbml0 aWFsaXplIHRoZSB0YXNrbGV0ICovDQo+ID4gKyAgICAgICB0YXNrbGV0X2luaXQoJmNoYW4tPnRh c2tsZXQsIHhpbGlueF9kbWFfZG9fdGFza2xldCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAo dW5zaWduZWQgbG9uZyljaGFuKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBBZGQgdGhlIGNoYW5u ZWwgdG8gRE1BIGRldmljZSBjaGFubmVsIGxpc3QgKi8NCj4gPiArICAgICAgIGxpc3RfYWRkX3Rh aWwoJmNoYW4tPmNvbW1vbi5kZXZpY2Vfbm9kZSwNCj4gPiArICZ4ZGV2LT5jb21tb24uY2hhbm5l bHMpOw0KPiA+ICsNCj4gPiArICAgICAgIGNoYW4tPmlkbGUgPSB0cnVlOw0KPiA+ICsNCj4gPiAr ICAgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICogb2ZfZG1h X3hpbGlueF94bGF0ZSAtIFRyYW5zbGF0aW9uIGZ1bmN0aW9uDQo+ID4gKyAqIEBkbWFfc3BlYzog UG9pbnRlciB0byBETUEgc3BlY2lmaWVyIGFzIGZvdW5kIGluIHRoZSBkZXZpY2UgdHJlZQ0KPiA+ ICsgKiBAb2ZkbWE6IFBvaW50ZXIgdG8gRE1BIGNvbnRyb2xsZXIgZGF0YQ0KPiA+ICsgKg0KPiA+ ICsgKiBSZXR1cm46IERNQSBjaGFubmVsIHBvaW50ZXIgb24gc3VjY2VzcyBhbmQgTlVMTCBvbiBl cnJvciAgKi8NCj4gPiArc3RhdGljIHN0cnVjdCBkbWFfY2hhbiAqb2ZfZG1hX3hpbGlueF94bGF0 ZShzdHJ1Y3Qgb2ZfcGhhbmRsZV9hcmdzDQo+ICpkbWFfc3BlYywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBvZl9kbWEgKm9mZG1hKSB7DQo+ ID4gKyAgICAgICBzdHJ1Y3QgeGlsaW54X2RtYV9kZXZpY2UgKnhkZXYgPSBvZmRtYS0+b2ZfZG1h X2RhdGE7DQo+ID4gKyAgICAgICBpbnQgY2hhbl9pZCA9IGRtYV9zcGVjLT5hcmdzWzBdOw0KPiA+ ICsNCj4gPiArICAgICAgIGlmIChjaGFuX2lkID49IFhJTElOWF9ETUFfTUFYX0NIQU5TX1BFUl9E RVZJQ0UpDQo+ID4gKyAgICAgICAgICAgICAgIHJldHVybiBOVUxMOw0KPiA+ICsNCj4gPiArICAg ICAgIHJldHVybiBkbWFfZ2V0X3NsYXZlX2NoYW5uZWwoJnhkZXYtPmNoYW5bY2hhbl9pZF0tPmNv bW1vbik7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX3Byb2Jl IC0gRHJpdmVyIHByb2JlIGZ1bmN0aW9uDQo+ID4gKyAqIEBwZGV2OiBQb2ludGVyIHRvIHRoZSBw bGF0Zm9ybV9kZXZpY2Ugc3RydWN0dXJlDQo+ID4gKyAqDQo+ID4gKyAqIFJldHVybjogJzAnIG9u IHN1Y2Nlc3MgYW5kIGZhaWx1cmUgdmFsdWUgb24gZXJyb3IgICovIHN0YXRpYyBpbnQNCj4gPiAr eGlsaW54X2RtYV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAg ICAgICBzdHJ1Y3QgeGlsaW54X2RtYV9kZXZpY2UgKnhkZXY7DQo+ID4gKyAgICAgICBzdHJ1Y3Qg ZGV2aWNlX25vZGUgKmNoaWxkLCAqbm9kZTsNCj4gPiArICAgICAgIHN0cnVjdCByZXNvdXJjZSAq cmVzOw0KPiA+ICsgICAgICAgaW50IGksIHJldDsNCj4gPiArDQo+ID4gKyAgICAgICB4ZGV2ID0g ZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVvZigqeGRldiksIEdGUF9LRVJORUwpOw0KPiA+ ICsgICAgICAgaWYgKCF4ZGV2KQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsN Cj4gPiArDQo+ID4gKyAgICAgICB4ZGV2LT5kZXYgPSAmKHBkZXYtPmRldik7DQo+ID4gKyAgICAg ICBJTklUX0xJU1RfSEVBRCgmeGRldi0+Y29tbW9uLmNoYW5uZWxzKTsNCj4gPiArDQo+ID4gKyAg ICAgICBub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7DQo+ID4gKw0KPiA+ICsgICAgICAgLyogTWFw IHRoZSByZWdpc3RlcnMgKi8NCj4gPiArICAgICAgIHJlcyA9IHBsYXRmb3JtX2dldF9yZXNvdXJj ZShwZGV2LCBJT1JFU09VUkNFX01FTSwgMCk7DQo+ID4gKyAgICAgICB4ZGV2LT5yZWdzID0gZGV2 bV9pb3JlbWFwX3Jlc291cmNlKCZwZGV2LT5kZXYsIHJlcyk7DQo+ID4gKyAgICAgICBpZiAoSVNf RVJSKHhkZXYtPnJlZ3MpKQ0KPiA+ICsgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUih4ZGV2 LT5yZWdzKTsNCj4gPiArDQo+ID4gKyAgICAgICAvKiBDaGVjayBpZiBTRyBpcyBlbmFibGVkICov DQo+ID4gKyAgICAgICB4ZGV2LT5oYXNfc2cgPSBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobm9kZSwg InhsbngsaW5jbHVkZS1zZyIpOw0KPiA+ICsNCj4gPiArICAgICAgIC8qIEF4aSBETUEgb25seSBk byBzbGF2ZSB0cmFuc2ZlcnMgKi8NCj4gPiArICAgICAgIGRtYV9jYXBfc2V0KERNQV9TTEFWRSwg eGRldi0+Y29tbW9uLmNhcF9tYXNrKTsNCj4gPiArICAgICAgIGRtYV9jYXBfc2V0KERNQV9QUklW QVRFLCB4ZGV2LT5jb21tb24uY2FwX21hc2spOw0KPiA+ICsgICAgICAgeGRldi0+Y29tbW9uLmRl dmljZV9wcmVwX3NsYXZlX3NnID0geGlsaW54X2RtYV9wcmVwX3NsYXZlX3NnOw0KPiA+ICsgICAg ICAgeGRldi0+Y29tbW9uLmRldmljZV90ZXJtaW5hdGVfYWxsID0geGlsaW54X2RtYV90ZXJtaW5h dGVfYWxsOw0KPiA+ICsgICAgICAgeGRldi0+Y29tbW9uLmRldmljZV9pc3N1ZV9wZW5kaW5nID0g eGlsaW54X2RtYV9pc3N1ZV9wZW5kaW5nOw0KPiA+ICsgICAgICAgeGRldi0+Y29tbW9uLmRldmlj ZV9hbGxvY19jaGFuX3Jlc291cmNlcyA9DQo+ID4gKyAgICAgICAgICAgICAgIHhpbGlueF9kbWFf YWxsb2NfY2hhbl9yZXNvdXJjZXM7DQo+ID4gKyAgICAgICB4ZGV2LT5jb21tb24uZGV2aWNlX2Zy ZWVfY2hhbl9yZXNvdXJjZXMgPQ0KPiA+ICsgICAgICAgICAgICAgICB4aWxpbnhfZG1hX2ZyZWVf Y2hhbl9yZXNvdXJjZXM7DQo+ID4gKyAgICAgICB4ZGV2LT5jb21tb24uZGV2aWNlX3R4X3N0YXR1 cyA9IHhpbGlueF9kbWFfdHhfc3RhdHVzOw0KPiA+ICsgICAgICAgeGRldi0+Y29tbW9uLmRpcmVj dGlvbnMgPSBCSVQoRE1BX0RFVl9UT19NRU0pIHwNCj4gQklUKERNQV9NRU1fVE9fREVWKTsNCj4g PiArICAgICAgIHhkZXYtPmNvbW1vbi5yZXNpZHVlX2dyYW51bGFyaXR5ID0NCj4gRE1BX1JFU0lE VUVfR1JBTlVMQVJJVFlfU0VHTUVOVDsNCj4gPiArICAgICAgIHhkZXYtPmNvbW1vbi5kZXYgPSAm cGRldi0+ZGV2Ow0KPiA+ICsNCj4gPiArICAgICAgIHBsYXRmb3JtX3NldF9kcnZkYXRhKHBkZXYs IHhkZXYpOw0KPiA+ICsNCj4gPiArICAgICAgIGZvcl9lYWNoX2NoaWxkX29mX25vZGUobm9kZSwg Y2hpbGQpIHsNCj4gPiArICAgICAgICAgICAgICAgcmV0ID0geGlsaW54X2RtYV9jaGFuX3Byb2Jl KHhkZXYsIGNoaWxkKTsNCj4gPiArICAgICAgICAgICAgICAgaWYgKHJldCkgew0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIGRldl9lcnIoJnBkZXYtPmRldiwgIlByb2JpbmcgY2hhbm5lbHMg ZmFpbGVkXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZyZWVfY2hhbl9y ZXNvdXJjZXM7DQo+ID4gKyAgICAgICAgICAgICAgIH0NCj4gPiArICAgICAgIH0NCj4gPiArDQo+ ID4gKyAgICAgICBkbWFfYXN5bmNfZGV2aWNlX3JlZ2lzdGVyKCZ4ZGV2LT5jb21tb24pOw0KPiA+ ICsNCj4gPiArICAgICAgIHJldCA9IG9mX2RtYV9jb250cm9sbGVyX3JlZ2lzdGVyKG5vZGUsIG9m X2RtYV94aWxpbnhfeGxhdGUsIHhkZXYpOw0KPiA+ICsgICAgICAgaWYgKHJldCkgew0KPiA+ICsg ICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJVbmFibGUgdG8gcmVnaXN0ZXIgRE1B IHRvIERUXG4iKTsNCj4gPiArICAgICAgICAgICAgICAgZG1hX2FzeW5jX2RldmljZV91bnJlZ2lz dGVyKCZ4ZGV2LT5jb21tb24pOw0KPiA+ICsgICAgICAgICAgICAgICBnb3RvIGZyZWVfY2hhbl9y ZXNvdXJjZXM7DQo+ID4gKyAgICAgICB9DQo+ID4gKw0KPiA+ICsgICAgICAgZGV2X2luZm8oJnBk ZXYtPmRldiwgIlhpbGlueCBBWEkgRE1BIEVuZ2luZSBkcml2ZXINCj4gPiArIFByb2JlZCEhXG4i KTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArDQo+ID4gK2ZyZWVfY2hhbl9y ZXNvdXJjZXM6DQo+ID4gKyAgICAgICBmb3IgKGkgPSAwOyBpIDwgWElMSU5YX0RNQV9NQVhfQ0hB TlNfUEVSX0RFVklDRTsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgICBpZiAoeGRldi0+Y2hhbltp XSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICB4aWxpbnhfZG1hX2NoYW5fcmVtb3ZlKHhk ZXYtPmNoYW5baV0pOw0KPiA+ICsNCj4gPiArICAgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKg0KPiA+ICsgKiB4aWxpbnhfZG1hX3JlbW92ZSAtIERyaXZlciByZW1vdmUg ZnVuY3Rpb24NCj4gPiArICogQHBkZXY6IFBvaW50ZXIgdG8gdGhlIHBsYXRmb3JtX2RldmljZSBz dHJ1Y3R1cmUNCj4gPiArICoNCj4gPiArICogUmV0dXJuOiBBbHdheXMgJzAnDQo+ID4gKyAqLw0K PiA+ICtzdGF0aWMgaW50IHhpbGlueF9kbWFfcmVtb3ZlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpIHsNCj4gPiArICAgICAgIHN0cnVjdCB4aWxpbnhfZG1hX2RldmljZSAqeGRldiA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+ICsgICAgICAgaW50IGk7DQo+ID4gKw0KPiA+ ICsgICAgICAgb2ZfZG1hX2NvbnRyb2xsZXJfZnJlZShwZGV2LT5kZXYub2Zfbm9kZSk7DQo+ID4g KyAgICAgICBkbWFfYXN5bmNfZGV2aWNlX3VucmVnaXN0ZXIoJnhkZXYtPmNvbW1vbik7DQo+ID4g Kw0KPiA+ICsgICAgICAgZm9yIChpID0gMDsgaSA8IFhJTElOWF9ETUFfTUFYX0NIQU5TX1BFUl9E RVZJQ0U7IGkrKykNCj4gPiArICAgICAgICAgICAgICAgaWYgKHhkZXYtPmNoYW5baV0pDQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgeGlsaW54X2RtYV9jaGFuX3JlbW92ZSh4ZGV2LT5jaGFu W2ldKTsNCj4gPiArDQo+ID4gKyAgICAgICByZXR1cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgeGlsaW54X2RtYV9vZl9tYXRjaFtdID0g ew0KPiA+ICsgICAgICAgeyAuY29tcGF0aWJsZSA9ICJ4bG54LGF4aS1kbWEtMS4wMC5hIix9LA0K PiA+ICsgICAgICAge30NCj4gPiArfTsNCj4gPiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgeGls aW54X2RtYV9vZl9tYXRjaCk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IHBsYXRmb3JtX2Ry aXZlciB4aWxpbnhfZG1hX2RyaXZlciA9IHsNCj4gPiArICAgICAgIC5kcml2ZXIgPSB7DQo+ID4g KyAgICAgICAgICAgICAgIC5uYW1lID0gInhpbGlueC1kbWEiLA0KPiA+ICsgICAgICAgICAgICAg ICAub2ZfbWF0Y2hfdGFibGUgPSB4aWxpbnhfZG1hX29mX21hdGNoLA0KPiA+ICsgICAgICAgfSwN Cj4gPiArICAgICAgIC5wcm9iZSA9IHhpbGlueF9kbWFfcHJvYmUsDQo+ID4gKyAgICAgICAucmVt b3ZlID0geGlsaW54X2RtYV9yZW1vdmUsDQo+ID4gK307DQo+ID4gKw0KPiA+ICttb2R1bGVfcGxh dGZvcm1fZHJpdmVyKHhpbGlueF9kbWFfZHJpdmVyKTsNCj4gPiArDQo+ID4gK01PRFVMRV9BVVRI T1IoIlhpbGlueCwgSW5jLiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlhpbGlueCBETUEg ZHJpdmVyIik7IE1PRFVMRV9MSUNFTlNFKCJHUEwNCj4gdjIiKTsNCj4gPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9saW51eC9kbWEveGlsaW54X2RtYS5oDQo+ID4gYi9pbmNsdWRlL2xpbnV4L2RtYS94 aWxpbnhfZG1hLmggaW5kZXggMzRiOThmMi4uZGUzODU5OSAxMDA2NDQNCj4gPiAtLS0gYS9pbmNs dWRlL2xpbnV4L2RtYS94aWxpbnhfZG1hLmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2RtYS94 aWxpbnhfZG1hLmgNCj4gPiBAQCAtNDEsNyArNDEsMjEgQEAgc3RydWN0IHhpbGlueF92ZG1hX2Nv bmZpZyB7DQo+ID4gICAgICAgICBpbnQgZXh0X2ZzeW5jOw0KPiA+ICB9Ow0KPiA+DQo+ID4gKy8q Kg0KPiA+ICsgKiBzdHJ1Y3QgeGlsaW54X2RtYV9jb25maWcgLSBETUEgQ29uZmlndXJhdGlvbiBz dHJ1Y3R1cmUNCj4gPiArICogQGNvYWxlc2M6IEludGVycnVwdCBjb2FsZXNjaW5nIHRocmVzaG9s ZA0KPiA+ICsgKiBAZGVsYXk6IERlbGF5IGNvdW50ZXINCj4gPiArICogQHJlc2V0OiBSZXNldCBD aGFubmVsDQo+ID4gKyAqLw0KPiA+ICtzdHJ1Y3QgeGlsaW54X2RtYV9jb25maWcgew0KPiA+ICsg ICAgICAgaW50IGNvYWxlc2M7DQo+ID4gKyAgICAgICBpbnQgZGVsYXk7DQo+ID4gKyAgICAgICBp bnQgcmVzZXQ7DQo+ID4gK307DQo+ID4gKw0KPiA+ICBpbnQgeGlsaW54X3ZkbWFfY2hhbm5lbF9z ZXRfY29uZmlnKHN0cnVjdCBkbWFfY2hhbiAqZGNoYW4sDQo+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4aWxpbnhfdmRtYV9jb25maWcNCj4gPiAqY2Zn KTsNCj4gPiAraW50IHhpbGlueF9kbWFfY2hhbm5lbF9zZXRfY29uZmlnKHN0cnVjdCBkbWFfY2hh biAqZGNoYW4sDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 cnVjdCB4aWxpbnhfZG1hX2NvbmZpZw0KPiA+ICsqY2ZnKTsNCj4gPg0KPiA+ICAjZW5kaWYNCj4g PiAtLQ0KPiA+IDIuMS4yDQo+ID4NCj4gPg0KPiA+IF9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fDQo+ID4gbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxpc3QN Cj4gPiBsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcNCj4gPiBodHRwOi8vbGlz dHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwNCg0KDQpU aGlzIGVtYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgYXJlIGludGVuZGVkIGZvciB0aGUgc29sZSB1 c2Ugb2YgdGhlIG5hbWVkIHJlY2lwaWVudChzKSBhbmQgY29udGFpbihzKSBjb25maWRlbnRpYWwg aW5mb3JtYXRpb24gdGhhdCBtYXkgYmUgcHJvcHJpZXRhcnksIHByaXZpbGVnZWQgb3IgY29weXJp Z2h0ZWQgdW5kZXIgYXBwbGljYWJsZSBsYXcuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZCBy ZWNpcGllbnQsIGRvIG5vdCByZWFkLCBjb3B5LCBvciBmb3J3YXJkIHRoaXMgZW1haWwgbWVzc2Fn ZSBvciBhbnkgYXR0YWNobWVudHMuIERlbGV0ZSB0aGlzIGVtYWlsIG1lc3NhZ2UgYW5kIGFueSBh dHRhY2htZW50cyBpbW1lZGlhdGVseS4NCg0K --_003_C246CAC1457055469EF09E3A7AC4E11A49A8FF04XAPPVEXMBX01xln_ Content-Type: application/octet-stream; name="0002-dma-xilinx-Fix-axidmatest-driver-crashing-when-unloa.patch" Content-Description: 0002-dma-xilinx-Fix-axidmatest-driver-crashing-when-unloa.patch Content-Disposition: attachment; filename="0002-dma-xilinx-Fix-axidmatest-driver-crashing-when-unloa.patch"; size=4192; creation-date="Thu, 18 Jun 2015 10:12:28 GMT"; modification-date="Mon, 08 Jun 2015 12:40:58 GMT" Content-Transfer-Encoding: base64 RnJvbSA3N2NmY2JjNjYyYTljYzk1NzI1MjkyZDA2YmE0N2FiZTI1ZTRiM2M0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLZWRhcmVzd2FyYSByYW8gQXBwYW5hIDxhcHBhbmFkQHhpbGlu eC5jb20+CkRhdGU6IFN1biwgNyBKdW4gMjAxNSAxNjo0NDowMCArMDUzMApTdWJqZWN0OiBbTElO VVggUEFUQ0ggMi8yXSBkbWE6IHhpbGlueDogRml4IGF4aWRtYXRlc3QgZHJpdmVyIGNyYXNoaW5n IHdoZW4KIHVubG9hZGluZyBhcyBhIG1vZHVsZQoKVGhpcyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUg YXhpZG1hdGVzdApkcml2ZXIgY3Jhc2hpbmcgd2hlbiB1bmxvYWRpbmcgYXMgYSBtb2R1bGUuCgpn ZXRfdGFza19zdHJ1Y3QgYW5kIHB1dF90YXNrX3N0cnVjdCBtYW5hZ2UgYSB0aHJlYWQncyByZWZl cmVuY2UgY291bnQuCkFmdGVyIHdlIGRvbmUgZ2V0X3Rhc2tfc3RydWN0LCBpdCB3aWxsIGFsd2F5 cyBiZSBzYWZlIHRvIGFjY2VzcyB0aGF0IG1lbW9yeSwKdW50aWwgd2UgcmVsZWFzZSBpdC5JZiB3 ZSBjYWxsIHB1dF90YXNrX3N0cnVjdCBhbmQKV2UgYXJlIHRoZSBsYXN0IG9uZSB3aXRoIGEgcmVm ZXJlbmNlIGNvdW50LCBpdCBkb2VzIGEgYnVuY2ggb2YgY2xlYW51cC4KCmNyYXNoIGR1bXA6CiBy bW1vZCBheGlkbWF0ZXN0ClVuYWJsZSB0byBoYW5kbGUga2VybmVsIE5VTEwgcG9pbnRlciBkZXJl ZmVyZW5jZSBhdCB2aXJ0dWFsIGFkZHJlc3MgMDAwMDAwMDAKcGdkID0gN2UzNjgwMDAKWzAwMDAw MDAwXSAqcGdkPTNlMWE4ODMxLCAqcHRlPTAwMDAwMDAwLCAqcHB0ZT0wMDAwMDAwMApJbnRlcm5h bCBlcnJvcjogT29wcyAtIEJVRzogMTcgWyMxXSBQUkVFTVBUIFNNUCBBUk0KTW9kdWxlcyBsaW5r ZWQgaW46IGF4aWRtYXRlc3QoLSkKQ1BVOiAxIFBJRDogNjMyIENvbW06IHJtbW9kIE5vdCB0YWlu dGVkIDQuMC4wLXhpbGlueC0yNTA0Ny1nNTJhODRiZi1kaXJ0eSAjMzIKSGFyZHdhcmUgbmFtZTog WGlsaW54IFp5bnEgUGxhdGZvcm0KdGFzazogN2Q0MjExODAgdGk6IDdkYmFlMDAwIHRhc2sudGk6 IDdkYmFlMDAwClBDIGlzIGF0IGV4aXRfY3JlZHMrMHgxNC8weDg0CkxSIGlzIGF0IF9fcHV0X3Rh c2tfc3RydWN0KzB4MTAvMHg1OApwYyA6IFs8NDAwMzc1ZDA+XSAgICBsciA6IFs8NDAwMWVhZDQ+ XSAgICBwc3I6IDYwMDAwMDEzCnNwIDogN2RiYWZlYzggIGlwIDogMDAwMDAwMDAgIGZwIDogM2Yw MDE3ODQKcjEwOiA3ZTI1NDdmOCAgcjkgOiAwMDIwMDIwMCAgcjggOiAwMDEwMDEwMApyNyA6IDdl MGY2ZTBjICByNiA6IDAwMDAwMDAwICByNSA6IDdlMDdiMTg4ICByNCA6IDdlMDdiMTgwCnIzIDog MDAwMDAwMDAgIHIyIDogMDAwMDAwMDAgIHIxIDogNjAwMDAwMTMgIHIwIDogMDAwMDAwMDAKRmxh Z3M6IG5aQ3YgIElSUXMgb24gIEZJUXMgb24gIE1vZGUgU1ZDXzMyICBJU0EgQVJNICBTZWdtZW50 IHVzZXIKQ29udHJvbDogMThjNTM4N2QgIFRhYmxlOiAzZTM2ODA0YSAgREFDOiAwMDAwMDAxNQpQ cm9jZXNzIHJtbW9kIChwaWQ6IDYzMiwgc3RhY2sgbGltaXQgPSAweDdkYmFlMjEwKQpTdGFjazog KDB4N2RiYWZlYzggdG8gMHg3ZGJiMDAwMCkKZmVjMDogICAgICAgICAgICAgICAgICAgN2UwN2Ix ODAgNDAwMWVhZDQgN2UwN2IxODAgNDAwMzY0NDggN2UwZjZlMGMgN2UwZjZlMDAKZmVlMDogN2Uw YWRlYzAgN2UwYWRmMDAgN2UwZjZlMGMgM2YwMDA0ZjAgN2UxMjlhMDAgN2UwZjZlMGMgMDAwMDAw MDAgN2UxMjlhMTAKZmYwMDogM2YwMDE3YjQgN2UxMjlhNDQgMDAwMDAwODEgNDAwMGRmNjQgN2Ri YWUwMDAgMDAwMDAwMDAgMDAwMDAwMDAgNDAyNzA0NTgKZmYyMDogNDAyNzA0NDAgN2UxMjlhMTAg M2YwMDE3YjQgNDAyNmVjZTggM2YwMDE3YjQgN2UxMjlhMTAgM2YwMDE3YjQgNDAyNmYzMjAKZmY0 MDogM2YwMDE3YjQgMDAwMDA4ODAgM2U5YjNmNjYgNDAyNmVhODQgM2YwMDE3ZjggNDAwNmYyYTQg N2RjMzg3NzAgNjQ2OTc4NjEKZmY2MDogNjU3NDYxNmQgNTUwMDc0NzMgMDAwMDAwMjAgMDAwMDAw MDAgN2Q0MjExODAgN2Q0MjE1ODggMDAwMDAwMDAgMDAwMDAwMDYKZmY4MDogN2Q0MjExODAgN2Q0 MjE1ODggMDAwZjIwNDAgNDAwMzRkYTQgN2RiYWUwMDAgMDBiYWZmYjAgM2U5YjNmNjYgMDAwMDAw MDAKZmZhMDogMDAwMDAwMDEgNDAwMGRkZTAgM2U5YjNmNjYgMDAwMDAwMDAgM2U5YjNmNjYgMDAw MDA4ODAgMDAwZmEwZTAgMDAwMDAwMDAKZmZjMDogM2U5YjNmNjYgMDAwMDAwMDAgMDAwMDAwMDEg MDAwMDAwODEgMDAwMDAwMDEgMDAwMDAwMDAgM2U5YjNlOGMgMDAwMDAwMDAKZmZlMDogMDAwZmEw ZTAgM2U5YjNhZjAgMDAwMmNkNzQgMzZlMGRhM2MgNjAwMDAwMTAgM2U5YjNmNjYgMDAwMDAwMDAg MDAwMDAwMDAKWzw0MDAzNzVkMD5dIChleGl0X2NyZWRzKSBmcm9tIFs8NDAwMWVhZDQ+XSAoX19w dXRfdGFza19zdHJ1Y3QrMHgxMC8weDU4KQpbPDQwMDFlYWQ0Pl0gKF9fcHV0X3Rhc2tfc3RydWN0 KSBmcm9tIFs8NDAwMzY0NDg+XSAoa3RocmVhZF9zdG9wKzB4OTAvMHg5OCkKWzw0MDAzNjQ0OD5d IChrdGhyZWFkX3N0b3ApIGZyb20gWzwzZjAwMDRmMD5dICh4aWxpbnhfYXhpZG1hdGVzdF9yZW1v dmUrMHg1NC8weGNjIFtheGlkbWF0ZXN0XSkKWzwzZjAwMDRmMD5dICh4aWxpbnhfYXhpZG1hdGVz dF9yZW1vdmUgW2F4aWRtYXRlc3RdKSBmcm9tIFs8NDAyNzA0NTg+XSAocGxhdGZvcm1fZHJ2X3Jl bW92ZSsweDE4LzB4MzApCls8NDAyNzA0NTg+XSAocGxhdGZvcm1fZHJ2X3JlbW92ZSkgZnJvbSBb PDQwMjZlY2U4Pl0gKF9fZGV2aWNlX3JlbGVhc2VfZHJpdmVyKzB4N2MvMHhjMCkKWzw0MDI2ZWNl OD5dIChfX2RldmljZV9yZWxlYXNlX2RyaXZlcikgZnJvbSBbPDQwMjZmMzIwPl0gKGRyaXZlcl9k ZXRhY2grMHg4NC8weGFjKQpbPDQwMjZmMzIwPl0gKGRyaXZlcl9kZXRhY2gpIGZyb20gWzw0MDI2 ZWE4ND5dIChidXNfcmVtb3ZlX2RyaXZlcisweDY0LzB4OGMpCls8NDAyNmYzMjA+XSAoZHJpdmVy X2RldGFjaCkgZnJvbSBbPDQwMjZlYTg0Pl0gKGJ1c19yZW1vdmVfZHJpdmVyKzB4NjQvMHg4YykK Wzw0MDI2ZWE4ND5dIChidXNfcmVtb3ZlX2RyaXZlcikgZnJvbSBbPDQwMDZmMmE0Pl0gKFN5U19k ZWxldGVfbW9kdWxlKzB4MTU0LzB4MWQwKQpbPDQwMDZmMmE0Pl0gKFN5U19kZWxldGVfbW9kdWxl KSBmcm9tIFs8NDAwMGRkZTA+XSAocmV0X2Zhc3Rfc3lzY2FsbCsweDAvMHgzNCkKQ29kZTogZTFh MDQwMDAgZTU5MDMzMDQgZTNhMDIwMDAgZTU5MDAzMDAgKGU1OTMzMDAwKQotLS1bIGVuZCB0cmFj ZSA1NjU3OTVlNjk2M2Q1MDEwIF0tLS0KU2VnbWVudGF0aW9uIGZhdWx0CgpTaWduZWQtb2ZmLWJ5 OiBLZWRhcmVzd2FyYSByYW8gQXBwYW5hIDxhcHBhbmFkQHhpbGlueC5jb20+Ci0tLQogZHJpdmVy cy9kbWEveGlsaW54L2F4aWRtYXRlc3QuYyB8IDMgKystCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNl cnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEveGlsaW54 L2F4aWRtYXRlc3QuYyBiL2RyaXZlcnMvZG1hL3hpbGlueC9heGlkbWF0ZXN0LmMKaW5kZXggM2Q1 NzBiMS4uYTc2MjdkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEveGlsaW54L2F4aWRtYXRlc3Qu YworKysgYi9kcml2ZXJzL2RtYS94aWxpbngvYXhpZG1hdGVzdC5jCkBAIC01MDksNiArNTA5LDcg QEAgc3RhdGljIHZvaWQgZG1hdGVzdF9jbGVhbnVwX2NoYW5uZWwoc3RydWN0IGRtYXRlc3RfY2hh biAqZHRjKQogCQlwcl9kZWJ1ZygiZG1hdGVzdDogdGhyZWFkICVzIGV4aXRlZCB3aXRoIHN0YXR1 cyAlZFxuIiwKIAkJCQl0aHJlYWQtPnRhc2stPmNvbW0sIHJldCk7CiAJCWxpc3RfZGVsKCZ0aHJl YWQtPm5vZGUpOworCQlwdXRfdGFza19zdHJ1Y3QodGhyZWFkLT50YXNrKTsKIAkJa2ZyZWUodGhy ZWFkKTsKIAl9CiAJa2ZyZWUoZHRjKTsKQEAgLTU0Miw3ICs1NDMsNyBAQCBzdGF0aWMgaW50IGRt YXRlc3RfYWRkX3NsYXZlX3RocmVhZHMoc3RydWN0IGRtYXRlc3RfY2hhbiAqdHhfZHRjLAogCX0K IAogCS8qIHNyY2J1ZiBhbmQgZHN0YnVmIGFyZSBhbGxvY2F0ZWQgYnkgdGhlIHRocmVhZCBpdHNl bGYgKi8KLQorCWdldF90YXNrX3N0cnVjdCh0aHJlYWQtPnRhc2spOwogCWxpc3RfYWRkX3RhaWwo JnRocmVhZC0+bm9kZSwgJnR4X2R0Yy0+dGhyZWFkcyk7CiAKIAkvKiBBZGRlZCBvbmUgdGhyZWFk IHdpdGggMiBjaGFubmVscyAqLwotLSAKMi4xLjIKCg== --_003_C246CAC1457055469EF09E3A7AC4E11A49A8FF04XAPPVEXMBX01xln_ Content-Type: application/octet-stream; name="0001-dma-xilinx-Use-of_dma-framework-in-dma-test-client.patch" Content-Description: 0001-dma-xilinx-Use-of_dma-framework-in-dma-test-client.patch Content-Disposition: attachment; filename="0001-dma-xilinx-Use-of_dma-framework-in-dma-test-client.patch"; size=7075; creation-date="Thu, 18 Jun 2015 10:12:28 GMT"; modification-date="Mon, 08 Jun 2015 12:40:58 GMT" Content-Transfer-Encoding: base64 RnJvbSAwOGI2ZmZjNTRhNGIyOWUyMDcyZjdiNGRjNjE5YmEzYTJhNTYwMmMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLZWRhcmVzd2FyYSByYW8gQXBwYW5hIDxhcHBhbmFkQHhpbGlu eC5jb20+CkRhdGU6IFN1biwgNyBKdW4gMjAxNSAxNjozMDowOCArMDUzMApTdWJqZWN0OiBbTElO VVggUEFUQ0ggMS8yXSBkbWE6IHhpbGlueDogVXNlIG9mX2RtYSBmcmFtZXdvcmsgaW4gZG1hIHRl c3QKIGNsaWVudAoKVGhpcyBwYXRjaCBkb2VzIGZvbGxvd2luZyB0aGluZ3M6Ci0gVXNlcyBvZl9k bWEgZnJhbWV3b3JrIGluIGRtYSB0ZXN0IGNsaWVudC4KLSBEb2N1bWVudCB0aGUgZGV2aWNlIG5v ZGUgZm9yIGRtYSB0ZXN0IGNsaWVudC4KClNpZ25lZC1vZmYtYnk6IEtlZGFyZXN3YXJhIHJhbyBB cHBhbmEgPGFwcGFuYWRAeGlsaW54LmNvbT4KLS0tCiAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9k bWEveGlsaW54L2F4aS1kbWEudHh0ICAgICB8ICA0NiArKysrLS0tLS0KIGRyaXZlcnMvZG1hL3hp bGlueC9heGlkbWF0ZXN0LmMgICAgICAgICAgICAgICAgICAgIHwgMTE0ICsrKysrKysrKystLS0t LS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA3NiBpbnNlcnRpb25zKCspLCA4NCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3hp bGlueC9heGktZG1hLnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEv eGlsaW54L2F4aS1kbWEudHh0CmluZGV4IDgwYzQ2MzMuLjc0MTk5Y2MgMTAwNjQ0Ci0tLSBhL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L2F4aS1kbWEudHh0Cisr KyBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEveGlsaW54L2F4aS1kbWEu dHh0CkBAIC0xLDQ2ICsxLDM4IEBACi1YaWxpbnggQVhJIERNQSBlbmdpbmUsIGl0IGRvZXMgdHJh bnNmZXJzIGJldHdlZW4gbWVtb3J5IGFuZCBkZXZpY2UuIEl0IGNhbiBiZQotY29uZmlndXJlZCB0 byBoYXZlIG9uZSBjaGFubmVsIG9yIHR3byBjaGFubmVscy4gSWYgY29uZmlndXJlZCBhcyB0d28K LWNoYW5uZWxzLCBvbmUgaXMgdG8gdHJhbnNtaXQgdG8gZGV2aWNlIGFuZCBhbm90aGVyIGlzIHRv IHJlY2VpdmUgZnJvbQotZGV2aWNlLgorKiBYaWxpbnggQVhJIERNQSBUZXN0IGNsaWVudAogCiBS ZXF1aXJlZCBwcm9wZXJ0aWVzOgotLSBjb21wYXRpYmxlOiBTaG91bGQgYmUgInhsbngsYXhpLWRt YSIKLS0gcmVnOiBTaG91bGQgY29udGFpbiBETUEgcmVnaXN0ZXJzIGxvY2F0aW9uIGFuZCBsZW5n dGguCistIGNvbXBhdGlibGU6IFNob3VsZCBiZSAieGxueCxheGktZG1hLXRlc3QtMS4wMC5hIgor LSBkbWFzOiBhIGxpc3Qgb2YgPFtETUEgZGV2aWNlIHBoYW5kbGVdIFtDaGFubmVsIElEXT4gcGFp cnMsCisJd2hlcmUgQ2hhbm5lbCBJRCBpcyAnMCcgZm9yIHdyaXRlL3R4IGFuZCAnMScgZm9yIHJl YWQvcngKKwljaGFubmVsLgorLSBkbWEtbmFtZXM6IGEgbGlzdCBvZiBETUEgY2hhbm5lbCBuYW1l cywgb25lIHBlciAiZG1hcyIgZW50cnkKIAotT3B0aW9uIG5vZGUgcHJvcGVydGllczoKLS0geGxu eCxpbmNsdWRlLXNnOiBUZWxscyB3aGV0aGVyIGNvbmZpZ3VyZWQgZm9yIFNjYXR0ZXItbW9kZSBp bgotCXRoZSBoYXJkd2FyZS4KK0V4YW1wbGU6CisrKysrKysrKwogCi1SZXF1aXJlZCBjaGlsZCBu b2RlIHByb3BlcnRpZXM6Ci0tIGNvbXBhdGlibGU6IEl0IHNob3VsZCBiZSBlaXRoZXIgInhsbngs YXhpLWRtYS1tbTJzLWNoYW5uZWwiIG9yCi0JInhsbngsYXhpLWRtYS1zMm1tLWNoYW5uZWwiLiBJ dCBkZXBlbmRzIG9uIHRoZSBoYXJkd2FyZSBkZXNpZ24gYW5kIGl0Ci0JY2FuIGFsc28gaGF2ZSBi b3RoIGNoYW5uZWxzLgotLSBpbnRlcnJ1cHRzOiBTaG91bGQgY29udGFpbiBwZXIgY2hhbm5lbCBE TUEgaW50ZXJydXB0cy4KLS0geGxueCxkYXRhLXdpZHRoOiBTaG91bGQgY29udGFpbiB0aGUgc3Ry ZWFtIGRhdGEgd2lkdGgsIHRha2UgdmFsdWVzCi0JezMyLDY0Li4uMTAyNH0uCi0tIHhsbngsZGV2 aWNlLWlkOiBTaG91bGQgY29udGFpbiBkZXZpY2UgbnVtYmVyIGluIGVhY2ggY2hhbm5lbC4gSXQg c2hvdWxkIGJlCi0JezAsMSwyLi4uc28gb259IHRvIHRoZSBudW1iZXIgb2YgRE1BIGRldmljZXMg Y29uZmlndXJlZCBpbiBoYXJkd2FyZS4KK2RtYXRlc3RfMDogZG1hdGVzdEAwIHsKKwljb21wYXRp YmxlID0ieGxueCxheGktZG1hLXRlc3QtMS4wMC5hIjsKKwlkbWFzID0gPCZheGlfZG1hXzAgMAor CQkmYXhpX2RtYV8wIDE+OworCWRtYS1uYW1lcyA9ICJheGlkbWEwIiwgImF4aWRtYTEiOworfSA7 CiAKLU9wdGlvbmFsIGNoaWxkIG5vZGUgcHJvcGVydGllczoKLS0geGxueCxpbmNsdWRlLWRyZTog VGVsbHMgd2hldGhlciBoYXJkd2FyZSBpcyBjb25maWd1cmVkIGZvciBEYXRhCi0JUmVhbGlnbm1l bnQgRW5naW5lLgogCi1FeGFtcGxlOgotKysrKysrKysKK1hpbGlueCBBWEkgRE1BIERldmljZSBO b2RlIEV4YW1wbGUKKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogCiBheGlf ZG1hXzA6IGF4aWRtYUA0MDQwMDAwMCB7Ci0JY29tcGF0aWJsZSA9ICJ4bG54LGF4aS1kbWEiOwor CWNvbXBhdGlibGUgPSAieGxueCxheGktZG1hLTEuMDAuYSI7CisJI2RtYV9jZWxscyA9IDwxPjsK IAlyZWcgPSA8IDB4NDA0MDAwMDAgMHgxMDAwMCA+OwogCWRtYS1jaGFubmVsQDQwNDAwMDAwIHsK IAkJY29tcGF0aWJsZSA9ICJ4bG54LGF4aS1kbWEtbW0ycy1jaGFubmVsIjsKIAkJaW50ZXJydXB0 cyA9IDwgMCA1OSA0ID47CiAJCXhsbngsZGF0YXdpZHRoID0gPDB4NDA+OwotCQl4bG54LGRldmlj ZS1pZCA9IDwweDA+OwogCX0gOwotCWRtYS1jaGFubmVsQDQwMDMwMDMwIHsKKwlkbWEtY2hhbm5l bEA0MDQwMDAzMCB7CiAJCWNvbXBhdGlibGUgPSAieGxueCxheGktZG1hLXMybW0tY2hhbm5lbCI7 CiAJCWludGVycnVwdHMgPSA8IDAgNTggNCA+OwogCQl4bG54LGRhdGF3aWR0aCA9IDwweDQwPjsK LQkJeGxueCxkZXZpY2UtaWQgPSA8MHgwPjsKIAl9IDsKIH0gOwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9kbWEveGlsaW54L2F4aWRtYXRlc3QuYyBiL2RyaXZlcnMvZG1hL3hpbGlueC9heGlkbWF0ZXN0 LmMKaW5kZXggYmJjODhkNy4uM2Q1NzBiMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEveGlsaW54 L2F4aWRtYXRlc3QuYworKysgYi9kcml2ZXJzL2RtYS94aWxpbngvYXhpZG1hdGVzdC5jCkBAIC0x NCw2ICsxNCw4IEBACiAjaW5jbHVkZSA8bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2t0 aHJlYWQuaD4KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KKyNpbmNsdWRlIDxsaW51eC9vZl9k bWEuaD4KKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KICNpbmNsdWRlIDxsaW51 eC9yYW5kb20uaD4KICNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CiAjaW5jbHVkZSA8bGludXgvd2Fp dC5oPgpAQCAtNTg5LDcxICs1OTEsNDEgQEAgc3RhdGljIGludCBkbWF0ZXN0X2FkZF9zbGF2ZV9j aGFubmVscyhzdHJ1Y3QgZG1hX2NoYW4gKnR4X2NoYW4sCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRp YyBib29sIHhkbWFfZmlsdGVyKHN0cnVjdCBkbWFfY2hhbiAqY2hhbiwgdm9pZCAqcGFyYW0pCitz dGF0aWMgaW50IHhpbGlueF9heGlkbWF0ZXN0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2Ug KnBkZXYpCiB7Ci0JcHJfZGVidWcoImRtYXRlc3Q6IFByaXZhdGUgaXMgJXhcbiIsICooKGludCAq KWNoYW4tPnByaXZhdGUpKTsKKwlzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sICpyeF9jaGFuOworCWlu dCBlcnI7CiAKLQlpZiAoKigoaW50ICopY2hhbi0+cHJpdmF0ZSkgPT0gKihpbnQgKilwYXJhbSkK LQkJcmV0dXJuIHRydWU7CisJY2hhbiA9IGRtYV9yZXF1ZXN0X3NsYXZlX2NoYW5uZWwoJnBkZXYt PmRldiwgImF4aWRtYTAiKTsKKwlpZiAoSVNfRVJSKGNoYW4pKSB7CisJCXByX2VycigieGlsaW54 X2RtYXRlc3Q6IE5vIFR4IGNoYW5uZWxcbiIpOworCQlyZXR1cm4gUFRSX0VSUihjaGFuKTsKKwl9 CiAKLQlyZXR1cm4gZmFsc2U7Ci19CisJcnhfY2hhbiA9IGRtYV9yZXF1ZXN0X3NsYXZlX2NoYW5u ZWwoJnBkZXYtPmRldiwgImF4aWRtYTEiKTsKKwlpZiAoSVNfRVJSKHJ4X2NoYW4pKSB7CisJCWVy ciA9IFBUUl9FUlIocnhfY2hhbik7CisJCXByX2VycigieGlsaW54X2RtYXRlc3Q6IE5vIFJ4IGNo YW5uZWxcbiIpOworCQlnb3RvIGZyZWVfdHg7CisJfQogCi1zdGF0aWMgaW50IF9faW5pdCBkbWF0 ZXN0X2luaXQodm9pZCkKLXsKLQlkbWFfY2FwX21hc2tfdCBtYXNrOwotCXN0cnVjdCBkbWFfY2hh biAqY2hhbjsKLQlpbnQgZXJyID0gMDsKKwllcnIgPSBkbWF0ZXN0X2FkZF9zbGF2ZV9jaGFubmVs cyhjaGFuLCByeF9jaGFuKTsKKwlpZiAoZXJyKSB7CisJCXByX2VycigieGlsaW54X2RtYXRlc3Q6 IFVuYWJsZSB0byBhZGQgY2hhbm5lbHNcbiIpOworCQlnb3RvIGZyZWVfcng7CisJfQogCi0JLyog SlogZm9yIHNsYXZlIHRyYW5zZmVyIGNoYW5uZWxzICovCi0JZW51bSBkbWFfZGF0YV9kaXJlY3Rp b24gZGlyZWN0aW9uOwotCXN0cnVjdCBkbWFfY2hhbiAqcnhfY2hhbjsKLQl1MzIgbWF0Y2gsIGRl dmljZV9pZCA9IDA7Ci0KLQlkbWFfY2FwX3plcm8obWFzayk7Ci0JZG1hX2NhcF9zZXQoRE1BX1NM QVZFIHwgRE1BX1BSSVZBVEUsIG1hc2spOwotCi0JZm9yICg7OykgewotCQlkaXJlY3Rpb24gPSBE TUFfTUVNX1RPX0RFVjsKLQkJbWF0Y2ggPSAoZGlyZWN0aW9uICYgMHhGRikgfCBYSUxJTlhfRE1B X0lQX0RNQSB8Ci0JCQkJKGRldmljZV9pZCA8PCBYSUxJTlhfRE1BX0RFVklDRV9JRF9TSElGVCk7 Ci0JCXByX2RlYnVnKCJkbWF0ZXN0OiBtYXRjaCBpcyAleFxuIiwgbWF0Y2gpOwotCi0JCWNoYW4g PSBkbWFfcmVxdWVzdF9jaGFubmVsKG1hc2ssIHhkbWFfZmlsdGVyLCAodm9pZCAqKSZtYXRjaCk7 Ci0KLQkJaWYgKGNoYW4pCi0JCQlwcl9kZWJ1ZygiZG1hdGVzdDogRm91bmQgdHggZGV2aWNlXG4i KTsKLQkJZWxzZQotCQkJcHJfZGVidWcoImRtYXRlc3Q6IE5vIG1vcmUgdHggY2hhbm5lbHMgYXZh aWxhYmxlXG4iKTsKLQotCQlkaXJlY3Rpb24gPSBETUFfREVWX1RPX01FTTsKLQkJbWF0Y2ggPSAo ZGlyZWN0aW9uICYgMHhGRikgfCBYSUxJTlhfRE1BX0lQX0RNQSB8Ci0JCQkJKGRldmljZV9pZCA8 PCBYSUxJTlhfRE1BX0RFVklDRV9JRF9TSElGVCk7Ci0JCXJ4X2NoYW4gPSBkbWFfcmVxdWVzdF9j aGFubmVsKG1hc2ssIHhkbWFfZmlsdGVyLCAmbWF0Y2gpOwotCi0JCWlmIChyeF9jaGFuKQotCQkJ cHJfZGVidWcoImRtYXRlc3Q6IEZvdW5kIHJ4IGRldmljZVxuIik7Ci0JCWVsc2UKLQkJCXByX2Rl YnVnKCJkbWF0ZXN0OiBObyBtb3JlIHJ4IGNoYW5uZWxzIGF2YWlsYWJsZVxuIik7Ci0KLQkJaWYg KGNoYW4gJiYgcnhfY2hhbikgewotCQkJZXJyID0gZG1hdGVzdF9hZGRfc2xhdmVfY2hhbm5lbHMo Y2hhbiwgcnhfY2hhbik7Ci0JCQlpZiAoZXJyKSB7Ci0JCQkJZG1hX3JlbGVhc2VfY2hhbm5lbChj aGFuKTsKLQkJCQlkbWFfcmVsZWFzZV9jaGFubmVsKHJ4X2NoYW4pOwotCQkJfQotCQl9IGVsc2UK LQkJCWJyZWFrOworCXJldHVybiAwOwogCi0JCWRldmljZV9pZCsrOwotCX0KK2ZyZWVfcng6CisJ ZG1hX3JlbGVhc2VfY2hhbm5lbChyeF9jaGFuKTsKK2ZyZWVfdHg6CisJZG1hX3JlbGVhc2VfY2hh bm5lbChjaGFuKTsKIAogCXJldHVybiBlcnI7CiB9Ci0vKiB3aGVuIGNvbXBpbGVkLWluIHdhaXQg Zm9yIGRyaXZlcnMgdG8gbG9hZCBmaXJzdCAqLwotbGF0ZV9pbml0Y2FsbChkbWF0ZXN0X2luaXQp OwogCi1zdGF0aWMgdm9pZCBfX2V4aXQgZG1hdGVzdF9leGl0KHZvaWQpCitzdGF0aWMgaW50IHhp bGlueF9heGlkbWF0ZXN0X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQogewog CXN0cnVjdCBkbWF0ZXN0X2NoYW4gKmR0YywgKl9kdGM7CiAJc3RydWN0IGRtYV9jaGFuICpjaGFu OwpAQCAtNjYyLDEyICs2MzQsNDAgQEAgc3RhdGljIHZvaWQgX19leGl0IGRtYXRlc3RfZXhpdCh2 b2lkKQogCQlsaXN0X2RlbCgmZHRjLT5ub2RlKTsKIAkJY2hhbiA9IGR0Yy0+Y2hhbjsKIAkJZG1h dGVzdF9jbGVhbnVwX2NoYW5uZWwoZHRjKTsKLQkJcHJfZGVidWcoImRtYXRlc3Q6IGRyb3BwZWQg Y2hhbm5lbCAlc1xuIiwKKwkJcHJfaW5mbygieGlsaW54X2RtYXRlc3Q6IGRyb3BwZWQgY2hhbm5l bCAlc1xuIiwKIAkJCWRtYV9jaGFuX25hbWUoY2hhbikpOwogCQlkbWFfcmVsZWFzZV9jaGFubmVs KGNoYW4pOwogCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZp Y2VfaWQgeGlsaW54X2F4aWRtYXRlc3Rfb2ZfaWRzW10gPSB7CisJeyAuY29tcGF0aWJsZSA9ICJ4 bG54LGF4aS1kbWEtdGVzdC0xLjAwLmEiLH0sCisJe30KK307CisKK3N0YXRpYyBzdHJ1Y3QgcGxh dGZvcm1fZHJpdmVyIHhpbGlueF9heGlkbWF0ZXN0X2RyaXZlciA9IHsKKwkuZHJpdmVyID0gewor CQkubmFtZSA9ICJ4aWxpbnhfYXhpZG1hdGVzdCIsCisJCS5vd25lciA9IFRISVNfTU9EVUxFLAor CQkub2ZfbWF0Y2hfdGFibGUgPSB4aWxpbnhfYXhpZG1hdGVzdF9vZl9pZHMsCisJfSwKKwkucHJv YmUgPSB4aWxpbnhfYXhpZG1hdGVzdF9wcm9iZSwKKwkucmVtb3ZlID0geGlsaW54X2F4aWRtYXRl c3RfcmVtb3ZlLAorfTsKKworc3RhdGljIGludCBfX2luaXQgYXhpZG1hX2luaXQodm9pZCkKK3sK KwlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZ4aWxpbnhfYXhpZG1hdGVzdF9kcml2 ZXIpOworCit9CitsYXRlX2luaXRjYWxsKGF4aWRtYV9pbml0KTsKKworc3RhdGljIHZvaWQgX19l eGl0IGF4aWRtYV9leGl0KHZvaWQpCit7CisJcGxhdGZvcm1fZHJpdmVyX3VucmVnaXN0ZXIoJnhp bGlueF9heGlkbWF0ZXN0X2RyaXZlcik7CiB9Ci1tb2R1bGVfZXhpdChkbWF0ZXN0X2V4aXQpOwor bW9kdWxlX2V4aXQoYXhpZG1hX2V4aXQpCiAKIE1PRFVMRV9BVVRIT1IoIlhpbGlueCwgSW5jLiIp OwogTU9EVUxFX0RFU0NSSVBUSU9OKCJYaWxpbnggQVhJIERNQSBUZXN0IENsaWVudCIpOwotLSAK Mi4xLjIKCg== --_003_C246CAC1457055469EF09E3A7AC4E11A49A8FF04XAPPVEXMBX01xln_-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/