From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from IND01-BMX-obe.outbound.protection.outlook.com (mail-bmxind01olkn2091.outbound.protection.outlook.com [40.92.103.91]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CA83C139587; Fri, 27 Sep 2024 16:49:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.92.103.91 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727455764; cv=fail; b=fAQLa2OdKRo14EEkU6X+BRgCdxbZHDJVcg+Hs9Bd/gkTPT5Bn7OWfaQ9VGVU5vuYJEZpDxovPQgIxnMfSmHItpCey26hHLiLPYeJLteD4eupLsOi5XvhZXFibq7jI/B4zvNMyiNFikvbfQi0XxsfrwNn+YCx5SY5Y7wrQ2Q4eUA= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1727455764; c=relaxed/simple; bh=3OkubUfQZhP200yCpXJS/v4jgzGI8lg/jORL6SkB138=; h=From:To:CC:Subject:Date:Message-ID:References:In-Reply-To: Content-Type:MIME-Version; b=qAyCGdqp/q/dgvH6GkFhO3MRJ3rN517L3gYRIuYWSZR83zaTT9tZSbnqN/aNx1Tjl87OMLVTI0buPG/eXYpNU0JzHr8YMgGAKQsBH3l4Th8EjyBiZDd0uz5csG8DDKw4kgx4cTGtR4lfNsn7wFsKt6bgL3WIzHlyRkwdAVtfIsk= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=live.com; spf=pass smtp.mailfrom=live.com; dkim=pass (2048-bit key) header.d=live.com header.i=@live.com header.b=m7QbXDRW; arc=fail smtp.client-ip=40.92.103.91 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=live.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=live.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=live.com header.i=@live.com header.b="m7QbXDRW" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=vUjxJrVOFsPpi6XJ1hP/KSqKeYAHgMP4yCOPrTvRQKWTIxbW2gq89DFbiEYJUCI163LIKnVzwx1LtMzhHTzmXwgaBN9OW7i5NfEwa5ylLZamKNjn1Fhr/LZ/tgZ5Ef2VD4CWBQsBCLJwJ/ynpHfmdLA/ikIyBYXkKQ6ABloNlOucT4AzdV7B1443PTB+qGbm3YIkO4Mccoc6eRwND0B4l62fZ28eGRKG1+4Ql2+LhBcL+qM31JN0M6z5jAI3U/HyTofnmSH4wtik5JfjSDiQMEwXInSwkqaoxOAmFpVMGir4iKN7H18T0fT1f/oBemcncjpkXT9Ke9SUqmXJ5Gf/TA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3OkubUfQZhP200yCpXJS/v4jgzGI8lg/jORL6SkB138=; b=YLwMiVV6Vn4frC54x+Ob/QcusA9K/DzcgAk3kTUyWQ7OocCMC2RysHaNEAiaNXu6xbwJixHa+v9kvIXwnJBg+Y4+pjyrtZ8D+9nMMR7qYYJAwLB2rWzf5L9nAjueZiI9AO+Wouluxz+y6/ORpNy3wfjn7ks98JPtIh4uL5+oCfNeEUBT0OonUXy/+M3Dl6Rdb1c72PoIBPcW4y76lPvMTGZcuaMGwwwiJTGp1rKDVva6AjKbIG7m6X6kLVIqSYe4uyJZ68SkIqV/Os2VIUuGokmFgrko2R4mnuujY4GgcJ2XmZInBdUK1GHhxzdL1HwGzjd5GEMnp4OjsnfBHHF+WQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=live.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3OkubUfQZhP200yCpXJS/v4jgzGI8lg/jORL6SkB138=; b=m7QbXDRWX+PZaHlLPlj60uz0+xb3yJcJYX8AL567hbgxRrojhAXLE7DqGBfwHjEfnyLWu5OeU7Mp+oqnKmPH7T+50lEky69Ejq/N3xLb/eVI6Y3jeUJ+NDw7Qu43V7+dPvgR7fqglTz0aUBnWcoVIHH8y2MAICAZwr2gUFWsQaRH+dbDBsxuTGRnSyaDEwCuvfn9M60kUBM71yFgwY6L4zgkBTTgBfYabwUPmfPSwLf11P8HhXHHxWU6Pvy5kO5cDKaISIm4t1h7EH0MqZUtZYMLP0YdBr7xyB8Lbu1Ox6hZZpP6ok56R3xK5Ql4YCIp/sbwmWYxZHVE0kDXYqm7xA== Received: from MA0P287MB0217.INDP287.PROD.OUTLOOK.COM (2603:1096:a01:b3::9) by PN0P287MB0742.INDP287.PROD.OUTLOOK.COM (2603:1096:c01:10a::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8005.20; Fri, 27 Sep 2024 16:49:15 +0000 Received: from MA0P287MB0217.INDP287.PROD.OUTLOOK.COM ([fe80::98d2:3610:b33c:435a]) by MA0P287MB0217.INDP287.PROD.OUTLOOK.COM ([fe80::98d2:3610:b33c:435a%6]) with mapi id 15.20.8005.020; Fri, 27 Sep 2024 16:49:15 +0000 From: Aditya Garg To: Thomas Zimmermann CC: "maarten.lankhorst@linux.intel.com" , "mripard@kernel.org" , "airlied@gmail.com" , "daniel@ffwll.ch" , Jiri Kosina , "bentiss@kernel.org" , =?utf-8?B?VGhvbWFzIFdlacOfc2NodWg=?= , Orlando Chamberlain , Kerem Karabay , Linux Kernel Mailing List , "linux-input@vger.kernel.org" , "dri-devel@lists.freedesktop.org" Subject: Re: [PATCH v5 10/10] drm/tiny: add driver for Apple Touch Bars in x86 Macs Thread-Topic: [PATCH v5 10/10] drm/tiny: add driver for Apple Touch Bars in x86 Macs Thread-Index: AQHa8JvrscgdqA2wlUu74jjWDGz2sbJrgiAAgACW+YA= Date: Fri, 27 Sep 2024 16:49:15 +0000 Message-ID: References: <3C9E8938-32EC-44AC-A783-3BFDE2F01290@live.com> <8d0296fe-536f-4a9a-bd9e-624bb4cd8703@suse.de> In-Reply-To: <8d0296fe-536f-4a9a-bd9e-624bb4cd8703@suse.de> Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: MA0P287MB0217:EE_|PN0P287MB0742:EE_ x-ms-office365-filtering-correlation-id: e83654e3-5cd4-480b-0ce8-08dcdf14524f x-microsoft-antispam: BCL:0;ARA:14566002|8060799006|19110799003|15080799006|461199028|8062599003|7092599003|102099032|440099028|4302099013|3412199025|10035399004|1602099012; x-microsoft-antispam-message-info: 8Iv5b4GscheeXQDHERRDQeR6sMFmUaW33MrDMrOPT3g1CWB9ha4c0nP5W+ifzpg/y3Tj+VgzjDqyTTb+3qxFiA7Cm4IrHeOZT35SAszMGZYkNNQzmSGezjP9FaMHds882CNYsr/4h51FqHP3Ecc7/Rh3PVWMt3ehCwAdvOz2lXibFgcHMkAl0Fa3+tKE6wTZRF0fJ44pY0ENndT7zgJPnWMYcTY+aqhH3z0P060q0BASeNz2h/h2DYVuvpYA36GBaSY4TcHaQtfGH8gMS9LzZ9+61mNLyt0KdfgrKt2qTzDqeTcFmMybbjZXBBZFknk3ot9dKXCBjCoA9ObBvT8HX91zSCHAC7XrIeAL16EWcOlKjDE4PZqskT7mBUDHQMVrsB/XKHHS6zSYuttd6956xetDkXm2wQnbKUfnDjy6H2Eta/Hq1eveL0jR9Gra005yWIYhVJ2bj1RScJHH3ELevHBejSdbcdtKgu/bCK2qLOBm7DDBXQWKDa6ESnsSLJO5/xXlLfENicCMs1aG1gkdZ2A8hNvcbViBSXzyqbheGIdn43VYyOSrkxi6907KM0P8sCq/lwDhWsI8bBjjX8NPircTsGNahihubT/N9MgPTjxjpG58EH7ZqKVKaCd5H9lKPYVtIa127t9QOE4PtFR0MSy7bonEYIevvveyFZXtJPOc35zcEqDSedef23RdKio0ddQ+lar4kjB8YZbysihG077M7sFExwCbCs3dDzW7TN4eSR1UWeskwvF0Au6HhpPAsIvYADhBh3DcVM+u0wmm1N+s4yxm8M4uC6+yMrj7blxyjGti8OX4NorTnpgQRObAs1B+RLcjUecas3EoRS6qpSYvrWN1i20CJLCLLPh2/S7GLIGma5eB/W5ng8mzZLkS x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?Y2dvK2NtWEJvWXZVdkl5SmxHZkg0RkpLelRuQWV2TXBZcDFCbDBQRnFYbEhx?= =?utf-8?B?ekdaeER2bDlsS1NDSGpIVjJ2SVpFejVVS1VISUZnV0t2WkRQRlVOSFRxa0Rm?= =?utf-8?B?VWdPOFJmSVJudUZ4NmpITmdCRGViYWhaMElUL0s5VjNEWkt6THZCaWRJUlpN?= =?utf-8?B?eDFVUmk0NXlsakVkZmJ6a1d0MEt3aEJaKytUWXg4ck82SkV4Lyttc1FmemZw?= =?utf-8?B?RFZFeWs1SDYrK29ZakMwY1pYVXU3ZXpKUHZTVnpFK1JLQTRyNVpva1RCbEts?= =?utf-8?B?ZGpJTTl5cThHVGl0VnFneDRQUFpLSy9pZm1OSGlUV1U5YzI2UWc1VmVVZlpX?= =?utf-8?B?Wkp0ekpHazBsVEdmSG9CczZFN0xycU5hUU55djZGeitTbGo4TGF6TmRueTRv?= =?utf-8?B?S25Cd0ZwcjlDS3dldkUvcXEzNXFMNzdhZ0tDbFdmZFkxUTllL1p6dmNUdGYy?= =?utf-8?B?V3dybFlpY2VNSk5ZWjE0L2hGejJLU1ZjY09XZ25Ebm9SenpoZWxucER1QlRO?= =?utf-8?B?VHZGV00yVFdVVG1rU1h3bzlGeWg4NDFMZzdSUndIaEVHdzA0Z1ZxaTM3ak9u?= =?utf-8?B?bFhmeGVhK2E4UVQyZTNROUVJOFZZaktXcExHS000OFYwMm0rdDUwaVdURGhl?= =?utf-8?B?dXBZdzI2aFNncm44ZUVTcXgyWEJEa3lkeE9ET0RNbm9VR1R1S251VVlGeDhX?= =?utf-8?B?V3B1T1NuNytzQUxUbkhOUmZPWlFZQjFQWEpIUmVyWHFyK3g3eUhyWmVYbFhj?= =?utf-8?B?Sk9LTU9YRm1YRHZ1VFRmMGlMT2k4Q2xEQ281MlV2RjRmWmtQb0Ura2Z2UXVa?= =?utf-8?B?a0ZHaTh1Z0k5N1l4TGUxNXoyUkdSS2lTRnc5elhZbXphLzJmY1orWHV3Uzkx?= =?utf-8?B?R05tTEJiMmRTRkNCRjQ1S3BVVmJaKzIvQ3VoT2pqenV5Z0RPanVUOWczZHFj?= =?utf-8?B?RmpicEZMcVBESW9iREEwNTYzNVFJb0lZSHJyVlQyckJZMkk1dnVBRlVReXJB?= =?utf-8?B?QXpsK2hFZDV0MzdqL2IzSGtQcHltclk2bkUzOUJzQjI0YUJHaC92ZzgrSWwx?= =?utf-8?B?aGd3bWJkQ0RZV2VLWVVxamRTd3lUWE80cWp2TU5UVkdZVlNnNjY4ZGwwN0NC?= =?utf-8?B?OGRJOGJmYmFLbmdla2pnZ1pCempkMnpMdWNjNUo5c3lGNFg0Q1k2WWN0UjBx?= =?utf-8?B?L1hVeXYrSENZd3VJZkNxZkUwYzBWMnNnamNIdFExek50c3BldFd6eDYwZmZL?= =?utf-8?B?cDJCdTVsVFFhYzRZcmc2VGFGa205TmhCSHIxTGR2cnh3WkF2ODFWakVqMUZi?= =?utf-8?B?OW1ic2lhUDdqdGN2Uk9rajNVU29xRElkNnhZaWZZbWtnMmtEY0VJUDBpNkVD?= =?utf-8?B?Zy9DYnd2U3c4NUxuVDExMXVCMmJ5dDRrM1FjS2hQMmdHTVVNeEJDZ0F5VHZO?= =?utf-8?B?MisrSi84VUs1Ty80N2ErdjYyR3d1a1JodklqaVo5ZDRvTTAvTFdrZFQvVXIv?= =?utf-8?B?OFRwYmlHSGNUKzFlSnRxazZQRnJnbTByR3JOS1hZeW9NRzVERHo2MUV4UWd4?= =?utf-8?B?ZlJLQWFQcTZoQmQySUpVYVV2aFdqc2xiZUxuZ1MyMUpkcVVuTlk4ZXphTldV?= =?utf-8?B?WTl0dWlwNDJXb1hKY3d3QVBWdmxLV3lOZXZLOGtDQ1dLT1gxU2pvZ3FEa3Jk?= =?utf-8?B?Vi9BUThWWVE0cjhLQngwMC8rM1NZSWdGOFZvM3pWUEdvaVgwV1FBcVVySXo0?= =?utf-8?Q?gJD/odYrAw/D3BX3F7PvhrlPptF8/dRMn8MgQLo?= Content-Type: text/plain; charset="utf-8" Content-ID: <3DCE1FA93A9B534F85F00DA83CDEA84C@INDP287.PROD.OUTLOOK.COM> Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: sct-15-20-7719-20-msonline-outlook-24072.templateTenant X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MA0P287MB0217.INDP287.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-Network-Message-Id: e83654e3-5cd4-480b-0ce8-08dcdf14524f X-MS-Exchange-CrossTenant-rms-persistedconsumerorg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Sep 2024 16:49:15.2692 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: PN0P287MB0742 SGkgVGhvbWFzDQoNClRoYW5rcyBmb3IgdGhlIHJldmlldywgSeKAmWxsIHNvb24gZ2V0IHRvIHdv cmsuDQoNCj4gT24gMjcgU2VwIDIwMjQsIGF0IDE6MTjigK9QTSwgVGhvbWFzIFppbW1lcm1hbm4g PHR6aW1tZXJtYW5uQHN1c2UuZGU+IHdyb3RlOg0KPiANCj4gSGkNCj4gDQo+IEFtIDE3LjA4LjI0 IHVtIDEzOjUyIHNjaHJpZWIgQWRpdHlhIEdhcmc6DQo+PiBGcm9tOiBLZXJlbSBLYXJhYmF5IDxr ZWtyYnlAZ21haWwuY29tPg0KPj4gDQo+PiBUaGUgVG91Y2ggQmFycyBmb3VuZCBvbiB4ODYgTWFj cyBzdXBwb3J0IHR3byBVU0IgY29uZmlndXJhdGlvbnM6IG9uZQ0KPj4gd2hlcmUgdGhlIGRldmlj ZSBwcmVzZW50cyBpdHNlbGYgYXMgYSBISUQga2V5Ym9hcmQgYW5kIGNhbiBkaXNwbGF5DQo+PiBw cmVkZWZpbmVkIHNldHMgb2Yga2V5cywgYW5kIG9uZSB3aGVyZSB0aGUgb3BlcmF0aW5nIHN5c3Rl bSBoYXMgZnVsbA0KPj4gY29udHJvbCBvdmVyIHdoYXQgaXMgZGlzcGxheWVkLiBUaGlzIGNvbW1p dCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBkaXNwbGF5DQo+PiBmdW5jdGlvbmFsaXR5IG9mIHRoZSBz ZWNvbmQgY29uZmlndXJhdGlvbi4NCj4+IA0KPj4gTm90ZSB0aGF0IHRoaXMgZHJpdmVyIGhhcyBv bmx5IGJlZW4gdGVzdGVkIG9uIFQyIE1hY3MsIGFuZCBvbmx5IGluY2x1ZGVzDQo+PiB0aGUgVVNC IGRldmljZSBJRCBmb3IgdGhlc2UgZGV2aWNlcy4gVGVzdGluZyBvbiBUMSBNYWNzIHdvdWxkIGJl DQo+PiBhcHByZWNpYXRlZC4NCj4+IA0KPj4gQ3JlZGl0IGdvZXMgdG8gQGltYnVzaHVvIG9uIEdp dEh1YiBmb3IgcmV2ZXJzZSBlbmdpbmVlcmluZyBtb3N0IG9mIHRoZQ0KPj4gcHJvdG9jb2wuDQo+ PiANCj4+IFNpZ25lZC1vZmYtYnk6IEtlcmVtIEthcmFiYXkgPGtla3JieUBnbWFpbC5jb20+DQo+ PiBTaWduZWQtb2ZmLWJ5OiBBZGl0eWEgR2FyZyA8Z2FyZ2FkaXR5YTA4QGxpdmUuY29tPg0KPj4g LS0tDQo+PiAgTUFJTlRBSU5FUlMgICAgICAgICAgICAgICAgICAgICAgIHwgICA2ICsNCj4+ICBk cml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnICAgICAgfCAgMTIgKw0KPj4gIGRyaXZlcnMvZ3B1 L2RybS90aW55L01ha2VmaWxlICAgICB8ICAgMSArDQo+PiAgZHJpdmVycy9ncHUvZHJtL3Rpbnkv YXBwbGV0YmRybS5jIHwgNjI0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPj4gIDQg ZmlsZXMgY2hhbmdlZCwgNjQzIGluc2VydGlvbnMoKykNCj4+ICBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL3RpbnkvYXBwbGV0YmRybS5jDQo+PiANCj4+IGRpZmYgLS1naXQgYS9N QUlOVEFJTkVSUyBiL01BSU5UQUlORVJTDQo+PiBpbmRleCA4NzY2ZjNlNWUuLjI2NjVlNmM1NyAx MDA2NDQNCj4+IC0tLSBhL01BSU5UQUlORVJTDQo+PiArKysgYi9NQUlOVEFJTkVSUw0KPj4gQEAg LTY4ODksNiArNjg4OSwxMiBAQCBTOiBTdXBwb3J0ZWQNCj4+ICBUOiBnaXQgaHR0cHM6Ly9naXRs YWIuZnJlZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQNCj4+ICBGOiBkcml2ZXJzL2dw dS9kcm0vc3VuNGkvc3VuOGkqDQo+PiAgK0RSTSBEUklWRVIgRk9SIEFQUExFIFRPVUNIIEJBUlMN Cj4+ICtNOiBLZXJlbSBLYXJhYmF5IDxrZWtyYnlAZ21haWwuY29tPg0KPj4gK0w6IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcNCj4+ICtTOiBNYWludGFpbmVkDQo+PiArRjogZHJpdmVy cy9ncHUvZHJtL3RpbnkvYXBwbGV0YmRybS5jDQo+PiArDQo+PiAgRFJNIERSSVZFUiBGT1IgQVJN IFBMMTExIENMQ0QNCj4+ICBTOiBPcnBoYW4NCj4+ICBUOiBnaXQgaHR0cHM6Ly9naXRsYWIuZnJl ZWRlc2t0b3Aub3JnL2RybS9taXNjL2tlcm5lbC5naXQNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vdGlueS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvS2NvbmZpZw0KPj4g aW5kZXggZjY4ODlmNjQ5Li41NTlhOTdiY2UgMTAwNjQ0DQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vdGlueS9LY29uZmlnDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9LY29uZmlnDQo+ PiBAQCAtMSw1ICsxLDE3IEBADQo+PiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MC1vbmx5DQo+PiAgK2NvbmZpZyBEUk1fQVBQTEVUQkRSTQ0KPj4gKyB0cmlzdGF0ZSAiRFJNIHN1 cHBvcnQgZm9yIEFwcGxlIFRvdWNoIEJhcnMiDQo+PiArIGRlcGVuZHMgb24gRFJNICYmIFVTQiAm JiBNTVUNCj4+ICsgc2VsZWN0IERSTV9LTVNfSEVMUEVSDQo+PiArIHNlbGVjdCBEUk1fR0VNX1NI TUVNX0hFTFBFUg0KPiANCj4gbml0OiBTZWxlY3RzIHNvcnRlZCBhbHBoYWJldGljYWxseS4NCj4g DQo+PiArIGhlbHANCj4+ICsgICBTYXkgWSBoZXJlIGlmIHlvdSB3YW50IHN1cHBvcnQgZm9yIHRo ZSBkaXNwbGF5IG9mIFRvdWNoIEJhcnMgb24geDg2DQo+PiArICAgTWFjQm9vayBQcm9zLg0KPj4g Kw0KPj4gKyAgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhl cmU6IHRoZQ0KPj4gKyAgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhcHBsZXRiZHJtLg0KPj4gKw0K Pj4gIGNvbmZpZyBEUk1fQVJDUEdVDQo+PiAgIHRyaXN0YXRlICJBUkMgUEdVIg0KPj4gICBkZXBl bmRzIG9uIERSTSAmJiBPRg0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L01h a2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZpbGUNCj4+IGluZGV4IDc2ZGRlODlh MC4uOWExYjQxMmU3IDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvTWFrZWZp bGUNCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90aW55L01ha2VmaWxlDQo+PiBAQCAtMSw1ICsx LDYgQEANCj4+ICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4+ICAr b2JqLSQoQ09ORklHX0RSTV9BUFBMRVRCRFJNKSArPSBhcHBsZXRiZHJtLm8NCj4+ICBvYmotJChD T05GSUdfRFJNX0FSQ1BHVSkgKz0gYXJjcGd1Lm8NCj4+ICBvYmotJChDT05GSUdfRFJNX0JPQ0hT KSArPSBib2Nocy5vDQo+PiAgb2JqLSQoQ09ORklHX0RSTV9DSVJSVVNfUUVNVSkgKz0gY2lycnVz Lm8NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9hcHBsZXRiZHJtLmMgYi9k cml2ZXJzL2dwdS9kcm0vdGlueS9hcHBsZXRiZHJtLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0 DQo+PiBpbmRleCAwMDAwMDAwMDAuLmI5NDQwY2UwMA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3RpbnkvYXBwbGV0YmRybS5jDQo+PiBAQCAtMCwwICsxLDYyNCBA QA0KPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+PiArLyoNCj4+ICsg KiBBcHBsZSBUb3VjaCBCYXIgRFJNIERyaXZlcg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChj KSAyMDIzIEtlcmVtIEthcmFiYXkgPGtla3JieUBnbWFpbC5jb20+DQo+PiArICovDQo+PiArDQo+ PiArI2RlZmluZSBwcl9mbXQoZm10KSBLQlVJTERfTU9ETkFNRSAiOiAiIGZtdA0KPj4gKw0KPj4g KyNpbmNsdWRlIDxhc20vdW5hbGlnbmVkLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPGxpbnV4L3Vz Yi5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4gDQo+IEluY2x1ZGUgc3RhdGVt ZW50cyBzaG91bGQgYmUgc29ydGVkIGFscGhhYmV0aWNhbGx5Lg0KPiANCj4+ICsNCj4+ICsjaW5j bHVkZSA8ZHJtL2RybV9kcnYuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9mb3VyY2MuaD4NCj4+ ICsjaW5jbHVkZSA8ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fZGFtYWdlX2hlbHBlci5o Pg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2Zvcm1hdF9oZWxwZXIuaD4NCj4+ICsjaW5jbHVkZSA8 ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmg+DQo+PiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX2F0 b21pY19oZWxwZXIuaD4NCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9zaW1wbGVfa21zX2hlbHBlci5o Pg0KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaD4NCj4gDQo+ IFNvcnRpbmcuDQo+IA0KPj4gKw0KPj4gKyNkZWZpbmUgX0FQUExFVEJEUk1fRk9VUkNDKHMpICgo KHMpWzBdIDw8IDI0KSB8ICgocylbMV0gPDwgMTYpIHwgKChzKVsyXSA8PCA4KSB8IChzKVszXSkN Cj4+ICsjZGVmaW5lIEFQUExFVEJEUk1fRk9VUkNDKHMpIF9BUFBMRVRCRFJNX0ZPVVJDQygjcykN Cj4+ICsNCj4+ICsjZGVmaW5lIEFQUExFVEJEUk1fUElYRUxfRk9STUFUIEFQUExFVEJEUk1fRk9V UkNDKFJHQkEpIC8qIFRoZSBhY3R1YWwgZm9ybWF0IGlzIEJHUjg4OCAqLw0KPiANCj4gUGxlYXNl ZG9uJ3QgY2FsbCBpdCBGT1VSQ0MgKGJlY2F1c2UgaXQgaXNuJ3QpLiBSYXRoZXIgZG8gc29tZXRo aW5nIGxpa2UNCj4gDQo+ICNkZWZpbmUgX19BUFBMRVRCRFJNX01TR19TVFI0KHN0cjQpICAgICgo X19sZTMyIF9fZm9yY2UpIC8qIGJpdCBzaGlmdGluZyBoZXJlICovKQ0KPiAjZGVmaW5lIF9fQVBQ TEVUQkRSTV9NU0dfVE9LNCh0b2s0KSAgICBfX0FQUExFVEJEUk1fTVNHX1NUUjQoI3RvazQpDQo+ IA0KPiAodHdvIHVuZGVyc2NvcmVzKQ0KPiANCj4+ICsjZGVmaW5lIEFQUExFVEJEUk1fQklUU19Q RVJfUElYRUwgMjQNCj4+ICsNCj4+ICsjZGVmaW5lIEFQUExFVEJEUk1fTVNHX0NMRUFSX0RJU1BM QVkgQVBQTEVUQkRSTV9GT1VSQ0MoQ0xSRCkNCj4+ICsjZGVmaW5lIEFQUExFVEJEUk1fTVNHX0dF VF9JTkZPUk1BVElPTiBBUFBMRVRCRFJNX0ZPVVJDQyhHSU5GKQ0KPj4gKyNkZWZpbmUgQVBQTEVU QkRSTV9NU0dfVVBEQVRFX0NPTVBMRVRFIEFQUExFVEJEUk1fRk9VUkNDKFVEQ0wpDQo+PiArI2Rl ZmluZSBBUFBMRVRCRFJNX01TR19TSUdOQUxfUkVBRElORVNTIEFQUExFVEJEUk1fRk9VUkNDKFJF RFkpDQo+IA0KPiBNYXliZSBpbmZpeCBhbGwgc3VjaCBjb25zdGFudHMgd2l0aCBfTVNHXyBvciBf UFJPVE9fIHNvIHRoYXQgaXQncyBjbGVhciB0aGF0IHRoZXNlIGFyZSBwYXJ0IG9mIHRoZSBkZXZp Y2UgcHJvdG9jb2wuDQo+IA0KPiBJJ2QgYWxzbyBjaGFuZ2UgdGhlIHN0eWxlIGEgYml0IHRvIHNv bWV0aGluZyBsaWtlDQo+IEFQUExFVEJEUk1fTVNHX1JFRFkgX19BUFBMRVRCRFJNX01TR19UT0s0 KFJFRFkpIC8qIGRldmljZSBzaWduYWxzIHJlYWRpbmVzcyAqLw0KPiANCj4+ICsNCj4+ICsjZGVm aW5lIEFQUExFVEJEUk1fQlVMS19NU0dfVElNRU9VVCAxMDAwDQo+PiArDQo+PiArI2RlZmluZSBk cm1fdG9fYWRldihfZHJtKSBjb250YWluZXJfb2YoX2RybSwgc3RydWN0IGFwcGxldGJkcm1fZGV2 aWNlLCBkcm0pDQo+PiArI2RlZmluZSBhZGV2X3RvX3VkZXYoYWRldikgaW50ZXJmYWNlX3RvX3Vz YmRldih0b191c2JfaW50ZXJmYWNlKGFkZXYtPmRldikpDQo+PiArDQo+PiArc3RydWN0IGFwcGxl dGJkcm1fZGV2aWNlIHsNCj4+ICsgc3RydWN0IGRldmljZSAqZGV2Ow0KPj4gKw0KPj4gKyB1OCBp bl9lcDsNCj4+ICsgdTggb3V0X2VwOw0KPj4gKw0KPj4gKyB1MzIgd2lkdGg7DQo+PiArIHUzMiBo ZWlnaHQ7DQo+IA0KPiBGb3Igc29mdHdhcmUgc3RhdGUsIGl0J3MgY29tbW9uIHRvIHVzZSByZWd1 bGFyIHR5cGVzICh1bnNpZ25lZCBpbnQpIHdpdGhvdXQgYSBzcGVjaWZpYyBzaXplLg0KPiANCj4+ ICsNCj4+ICsgc3RydWN0IGRybV9kZXZpY2UgZHJtOw0KPj4gKyBzdHJ1Y3QgZHJtX2Rpc3BsYXlf bW9kZSBtb2RlOw0KPj4gKyBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+PiArIHN0 cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSBwaXBlOw0KPiANCj4gU2ltcGxlLWRpc3BsYXkg cGlwZSBpcyBkZXByZWNhdGVkLiBQbGVhc2UgZG9uJ3QgYWRkIGFueSBuZXcgZHJpdmVycyB1c2lu ZyBpdC4gWW91IGNhbiBlYXNpbHkgcmVwbGFjZSBpdCBieSB0YWtpbmcgaXRzIGNvZGUgYW5kIGRh dGEgc3RydWN0dXJlcyBhbmQgaW5saW5lIHRoZW0gaW50byB0aGUgZHJpdmVyLiBDaGFuZ2UgdGhl IG5hbWluZyB0byBmaXQgdGhlIGRyaXZlciBhbmQgaXQgc2hvdWxkIGJlIGdvb2QuDQo+IA0KPj4g Kw0KPj4gKyBib29sIHJlYWRpbmVzc19zaWduYWxfcmVjZWl2ZWQ7DQo+PiArfTsNCj4+ICsNCj4+ ICtzdHJ1Y3QgYXBwbGV0YmRybV9yZXF1ZXN0X2hlYWRlciB7DQo+PiArIF9fbGUxNiB1bmtfMDA7 DQo+PiArIF9fbGUxNiB1bmtfMDI7DQo+PiArIF9fbGUzMiB1bmtfMDQ7DQo+PiArIF9fbGUzMiB1 bmtfMDg7DQo+PiArIF9fbGUzMiBzaXplOw0KPj4gK30gX19wYWNrZWQ7DQo+PiArDQo+PiArc3Ry dWN0IGFwcGxldGJkcm1fcmVzcG9uc2VfaGVhZGVyIHsNCj4+ICsgdTggdW5rXzAwWzE2XTsNCj4+ ICsgdTMyIG1zZzsNCj4gDQo+IFRoZXNlIHUzMiBhcmUgaW4gaG9zdCBieXRlIG9yZGVyLiBUaGUg cHJvdG9jb2wgdXNlcyBsaXR0bGUgZW5kaWFuPyBUaGVuIGl0J3MgX19sZTMyLiBNeSBfTVNHX1NU UjQgbWFjcm8gYWJvdmUgYWRkcyBhIGZvcmNlZCBjYXN0IHRvIF9fbGUzMiBhbHJlYWR5Lg0KPiAN Cj4+ICt9IF9fcGFja2VkOw0KPj4gKw0KPj4gK3N0cnVjdCBhcHBsZXRiZHJtX3NpbXBsZV9yZXF1 ZXN0IHsNCj4+ICsgc3RydWN0IGFwcGxldGJkcm1fcmVxdWVzdF9oZWFkZXIgaGVhZGVyOw0KPj4g KyB1MzIgbXNnOw0KPiANCj4gU2FtZSBoZXJlIGFuZCBiZWxvdy4NCj4gDQo+PiArIHU4IHVua18x NFs4XTsNCj4+ICsgX19sZTMyIHNpemU7DQo+PiArfSBfX3BhY2tlZDsNCj4+ICsNCj4+ICtzdHJ1 Y3QgYXBwbGV0YmRybV9pbmZvcm1hdGlvbiB7DQo+PiArIHN0cnVjdCBhcHBsZXRiZHJtX3Jlc3Bv bnNlX2hlYWRlciBoZWFkZXI7DQo+PiArIHU4IHVua18xNFsxMl07DQo+PiArIF9fbGUzMiB3aWR0 aDsNCj4+ICsgX19sZTMyIGhlaWdodDsNCj4+ICsgdTggYml0c19wZXJfcGl4ZWw7DQo+PiArIF9f bGUzMiBieXRlc19wZXJfcm93Ow0KPj4gKyBfX2xlMzIgb3JpZW50YXRpb247DQo+PiArIF9fbGUz MiBiaXRtYXBfaW5mbzsNCj4+ICsgdTMyIHBpeGVsX2Zvcm1hdDsNCj4+ICsgX19sZTMyIHdpZHRo X2luY2hlczsgLyogZmxvYXRpbmcgcG9pbnQgKi8NCj4+ICsgX19sZTMyIGhlaWdodF9pbmNoZXM7 IC8qIGZsb2F0aW5nIHBvaW50ICovDQo+PiArfSBfX3BhY2tlZDsNCj4+ICsNCj4+ICtzdHJ1Y3Qg YXBwbGV0YmRybV9mcmFtZSB7DQo+PiArIF9fbGUxNiBiZWdpbl94Ow0KPj4gKyBfX2xlMTYgYmVn aW5feTsNCj4+ICsgX19sZTE2IHdpZHRoOw0KPj4gKyBfX2xlMTYgaGVpZ2h0Ow0KPj4gKyBfX2xl MzIgYnVmX3NpemU7DQo+PiArIHU4IGJ1ZltdOw0KPj4gK30gX19wYWNrZWQ7DQo+PiArDQo+PiAr c3RydWN0IGFwcGxldGJkcm1fZmJfcmVxdWVzdF9mb290ZXIgew0KPj4gKyB1OCB1bmtfMDBbMTJd Ow0KPj4gKyBfX2xlMzIgdW5rXzBjOw0KPj4gKyB1OCB1bmtfMTBbMTJdOw0KPj4gKyBfX2xlMzIg dW5rXzFjOw0KPj4gKyBfX2xlNjQgdGltZXN0YW1wOw0KPj4gKyB1OCB1bmtfMjhbMTJdOw0KPj4g KyBfX2xlMzIgdW5rXzM0Ow0KPj4gKyB1OCB1bmtfMzhbMjBdOw0KPj4gKyBfX2xlMzIgdW5rXzRj Ow0KPj4gK30gX19wYWNrZWQ7DQo+PiArDQo+PiArc3RydWN0IGFwcGxldGJkcm1fZmJfcmVxdWVz dCB7DQo+PiArIHN0cnVjdCBhcHBsZXRiZHJtX3JlcXVlc3RfaGVhZGVyIGhlYWRlcjsNCj4+ICsg X19sZTE2IHVua18xMDsNCj4+ICsgdTggbXNnX2lkOw0KPj4gKyB1OCB1bmtfMTNbMjldOw0KPj4g KyAvKg0KPj4gKyAgKiBDb250ZW50cyBvZiBgZGF0YWA6DQo+PiArICAqIC0gc3RydWN0IGFwcGxl dGJkcm1fZnJhbWUgZnJhbWVzW107DQo+PiArICAqIC0gc3RydWN0IGFwcGxldGJkcm1fZmJfcmVx dWVzdF9mb290ZXIgZm9vdGVyOw0KPj4gKyAgKiAtIHBhZGRpbmcgdG8gbWFrZSB0aGUgdG90YWwg c2l6ZSBhIG11bHRpcGxlIG9mIDE2DQo+PiArICAqLw0KPj4gKyB1OCBkYXRhW107DQo+PiArfSBf X3BhY2tlZDsNCj4+ICsNCj4+ICtzdHJ1Y3QgYXBwbGV0YmRybV9mYl9yZXF1ZXN0X3Jlc3BvbnNl IHsNCj4+ICsgc3RydWN0IGFwcGxldGJkcm1fcmVzcG9uc2VfaGVhZGVyIGhlYWRlcjsNCj4+ICsg dTggdW5rXzE0WzEyXTsNCj4+ICsgX19sZTY0IHRpbWVzdGFtcDsNCj4+ICt9IF9fcGFja2VkOw0K PiANCj4gWW91IHNob3VsZCBwcm9iYWJseSBtb3ZlIGFsbCB0aGVzZSBzdHJ1Y3RzIGFuZCB0aGUg cmVsYXRlZCBjb25zdGFudHMgdG8gdGhlIHRvcCBvZiB0aGUgZmlsZSBhbmQgYWRkIGFuIF9tc2df IGluZml4LiBTbyBpdCdzIGNsZWFyIHRoYXQgdGhpcyBpcyBwcm90b2NvbCBhbmQgbm90IERSTSBk cml2ZXIgc3RhdGUuDQo+IA0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgYXBwbGV0YmRybV9zZW5kX3Jl cXVlc3Qoc3RydWN0IGFwcGxldGJkcm1fZGV2aWNlICphZGV2LA0KPj4gKyAgICBzdHJ1Y3QgYXBw bGV0YmRybV9yZXF1ZXN0X2hlYWRlciAqcmVxdWVzdCwgc2l6ZV90IHNpemUpDQo+PiArew0KPj4g KyBzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IGFkZXZfdG9fdWRldihhZGV2KTsNCj4+ICsgc3Ry dWN0IGRybV9kZXZpY2UgKmRybSA9ICZhZGV2LT5kcm07DQo+PiArIGludCByZXQsIGFjdHVhbF9z aXplOw0KPj4gKw0KPj4gKyByZXQgPSB1c2JfYnVsa19tc2codWRldiwgdXNiX3NuZGJ1bGtwaXBl KHVkZXYsIGFkZXYtPm91dF9lcCksDQo+PiArICAgIHJlcXVlc3QsIHNpemUsICZhY3R1YWxfc2l6 ZSwgQVBQTEVUQkRSTV9CVUxLX01TR19USU1FT1VUKTsNCj4+ICsgaWYgKHJldCkgew0KPj4gKyBk cm1fZXJyKGRybSwgIkZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgKCVwZSlcbiIsIEVSUl9QVFIocmV0 KSk7DQo+IA0KPiBJcyB0aGVyZSBhIHJlYXNvbiBmb3IgJXBlPyAlZCB3aXRoIHJldCBzaG91bGQg YmUgZmluZS4gKD8pDQo+IA0KPj4gKyByZXR1cm4gcmV0Ow0KPj4gKyB9DQo+PiArDQo+PiArIGlm IChhY3R1YWxfc2l6ZSAhPSBzaXplKSB7DQo+PiArIGRybV9lcnIoZHJtLCAiQWN0dWFsIHNpemUg KCVkKSBkb2Vzbid0IG1hdGNoIGV4cGVjdGVkIHNpemUgKCVsdSlcbiIsDQo+PiArIGFjdHVhbF9z aXplLCBzaXplKTsNCj4+ICsgcmV0dXJuIC1FSU87DQo+PiArIH0NCj4+ICsNCj4+ICsgcmV0dXJu IHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBhcHBsZXRiZHJtX3JlYWRfcmVzcG9u c2Uoc3RydWN0IGFwcGxldGJkcm1fZGV2aWNlICphZGV2LA0KPj4gKyAgICAgc3RydWN0IGFwcGxl dGJkcm1fcmVzcG9uc2VfaGVhZGVyICpyZXNwb25zZSwNCj4+ICsgICAgIHNpemVfdCBzaXplLCB1 MzIgZXhwZWN0ZWRfcmVzcG9uc2UpDQo+PiArew0KPj4gKyBzdHJ1Y3QgdXNiX2RldmljZSAqdWRl diA9IGFkZXZfdG9fdWRldihhZGV2KTsNCj4+ICsgc3RydWN0IGRybV9kZXZpY2UgKmRybSA9ICZh ZGV2LT5kcm07DQo+PiArIGludCByZXQsIGFjdHVhbF9zaXplOw0KPj4gKw0KPj4gK3JldHJ5Og0K Pj4gKyByZXQgPSB1c2JfYnVsa19tc2codWRldiwgdXNiX3JjdmJ1bGtwaXBlKHVkZXYsIGFkZXYt PmluX2VwKSwNCj4+ICsgICAgcmVzcG9uc2UsIHNpemUsICZhY3R1YWxfc2l6ZSwgQVBQTEVUQkRS TV9CVUxLX01TR19USU1FT1VUKTsNCj4+ICsgaWYgKHJldCkgew0KPj4gKyBkcm1fZXJyKGRybSwg IkZhaWxlZCB0byByZWFkIHJlc3BvbnNlICglcGUpXG4iLCBFUlJfUFRSKHJldCkpOw0KPj4gKyBy ZXR1cm4gcmV0Ow0KPj4gKyB9DQo+PiArDQo+PiArIC8qDQo+PiArICAqIFRoZSBkZXZpY2UgcmVz cG9uZHMgdG8gdGhlIGZpcnN0IHJlcXVlc3Qgc2VudCBpbiBhIHBhcnRpY3VsYXINCj4+ICsgICog dGltZWZyYW1lIGFmdGVyIHRoZSBVU0IgZGV2aWNlIGNvbmZpZ3VyYXRpb24gaXMgc2V0IHdpdGgg YSByZWFkaW5lc3MNCj4+ICsgICogc2lnbmFsLCBpbiB3aGljaCBjYXNlIHRoZSByZXNwb25zZSBz aG91bGQgYmUgcmVhZCBhZ2Fpbg0KPj4gKyAgKi8NCj4gDQo+IElJVUMgdGhlIGRldmljZSBzaWdu YWxzICgxKSByZWFkaW5lc3MgYXQgY2VydGFpbiBpbnRlcnZhbHM/IE9yICgyKSBqdXN0IGF0IHRo ZSBiZWdpbm5pbmcgYWZ0ZXIgYXBwbGV0YmRybV9zaWduYWxfcmVhZGluZXNzKCkgSWYgKDEpLCBJ J2QgbWFrZSByZWFkaW5lc3Nfc2lnbmFsX3JlY2VpdmVkIGEgbG9jYWwgdmFyaWFibGUuIElmIHlv dSByZWNlaXZlIFJFRFkgdHJ5IGFnYWluIG9uY2UuIE5vIG5lZWQgZm9yIHBlci1kcml2ZXIgc3Rh dGUuIElmICgyKSwgd2FpdCBmb3IgUkVEWSBhZnRlciBhcHBsZXRiZHJtX3NpZ25hbF9yZWFkaW5l c3MoKSBhbmQgcmVtb3ZlIHRoZSB3aG9sZSBsb2dpYyBmb3JtIHRoaXMgZnVuY3Rpb24uDQo+PiAr IGlmIChyZXNwb25zZS0+bXNnID09IEFQUExFVEJEUk1fTVNHX1NJR05BTF9SRUFESU5FU1MpIHsN Cj4+ICsgaWYgKCFhZGV2LT5yZWFkaW5lc3Nfc2lnbmFsX3JlY2VpdmVkKSB7DQo+PiArIGFkZXYt PnJlYWRpbmVzc19zaWduYWxfcmVjZWl2ZWQgPSB0cnVlOw0KPj4gKyBnb3RvIHJldHJ5Ow0KPj4g KyB9DQo+PiArDQo+PiArIGRybV9lcnIoZHJtLCAiRW5jb3VudGVyZWQgdW5leHBlY3RlZCByZWFk aW5lc3Mgc2lnbmFsXG4iKTsNCj4+ICsgcmV0dXJuIC1FSU87DQo+PiArIH0NCj4+ICsNCj4+ICsg aWYgKGFjdHVhbF9zaXplICE9IHNpemUpIHsNCj4+ICsgZHJtX2Vycihkcm0sICJBY3R1YWwgc2l6 ZSAoJWQpIGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgc2l6ZSAoJWx1KVxuIiwNCj4+ICsgYWN0dWFs X3NpemUsIHNpemUpOw0KPj4gKyByZXR1cm4gLUVJTzsNCj4+ICsgfQ0KPj4gKw0KPj4gKyBpZiAo cmVzcG9uc2UtPm1zZyAhPSBleHBlY3RlZF9yZXNwb25zZSkgew0KPj4gKyBkcm1fZXJyKGRybSwg IlVuZXhwZWN0ZWQgcmVzcG9uc2UgZnJvbSBkZXZpY2UgKGV4cGVjdGVkICVwNGNoIGZvdW5kICVw NGNoKVxuIiwNCj4+ICsgJmV4cGVjdGVkX3Jlc3BvbnNlLCAmcmVzcG9uc2UtPm1zZyk7DQo+PiAr IHJldHVybiAtRUlPOw0KPj4gKyB9DQo+PiArDQo+PiArIHJldHVybiAwOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgaW50IGFwcGxldGJkcm1fc2VuZF9tc2coc3RydWN0IGFwcGxldGJkcm1fZGV2 aWNlICphZGV2LCB1MzIgbXNnKQ0KPj4gK3sNCj4+ICsgc3RydWN0IGFwcGxldGJkcm1fc2ltcGxl X3JlcXVlc3QgKnJlcXVlc3Q7DQo+PiArIGludCByZXQ7DQo+PiArDQo+PiArIHJlcXVlc3QgPSBr emFsbG9jKHNpemVvZigqcmVxdWVzdCksIEdGUF9LRVJORUwpOw0KPj4gKyBpZiAoIXJlcXVlc3Qp DQo+PiArIHJldHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKyByZXF1ZXN0LT5oZWFkZXIudW5rXzAw ID0gY3B1X3RvX2xlMTYoMik7DQo+PiArIHJlcXVlc3QtPmhlYWRlci51bmtfMDIgPSBjcHVfdG9f bGUxNigweDE1MTIpOw0KPiANCj4gTWFnaWMgbnVtYmVycz8gRG8geW91IGtub3cgd2hhdCB0aGV5 IG1lYW4/DQo+IA0KPj4gKyByZXF1ZXN0LT5oZWFkZXIuc2l6ZSA9IGNwdV90b19sZTMyKHNpemVv ZigqcmVxdWVzdCkgLSBzaXplb2YocmVxdWVzdC0+aGVhZGVyKSk7DQo+PiArIHJlcXVlc3QtPm1z ZyA9IG1zZzsNCj4+ICsgcmVxdWVzdC0+c2l6ZSA9IHJlcXVlc3QtPmhlYWRlci5zaXplOw0KPj4g Kw0KPj4gKyByZXQgPSBhcHBsZXRiZHJtX3NlbmRfcmVxdWVzdChhZGV2LCAmcmVxdWVzdC0+aGVh ZGVyLCBzaXplb2YoKnJlcXVlc3QpKTsNCj4+ICsNCj4+ICsga2ZyZWUocmVxdWVzdCk7DQo+PiAr DQo+PiArIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgYXBwbGV0YmRy bV9jbGVhcl9kaXNwbGF5KHN0cnVjdCBhcHBsZXRiZHJtX2RldmljZSAqYWRldikNCj4+ICt7DQo+ PiArIHJldHVybiBhcHBsZXRiZHJtX3NlbmRfbXNnKGFkZXYsIEFQUExFVEJEUk1fTVNHX0NMRUFS X0RJU1BMQVkpOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IGFwcGxldGJkcm1fc2lnbmFs X3JlYWRpbmVzcyhzdHJ1Y3QgYXBwbGV0YmRybV9kZXZpY2UgKmFkZXYpDQo+PiArew0KPj4gKyBy ZXR1cm4gYXBwbGV0YmRybV9zZW5kX21zZyhhZGV2LCBBUFBMRVRCRFJNX01TR19TSUdOQUxfUkVB RElORVNTKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBhcHBsZXRiZHJtX2dldF9pbmZv cm1hdGlvbihzdHJ1Y3QgYXBwbGV0YmRybV9kZXZpY2UgKmFkZXYpDQo+PiArew0KPj4gKyBzdHJ1 Y3QgYXBwbGV0YmRybV9pbmZvcm1hdGlvbiAqaW5mbzsNCj4+ICsgc3RydWN0IGRybV9kZXZpY2Ug KmRybSA9ICZhZGV2LT5kcm07DQo+PiArIHU4IGJpdHNfcGVyX3BpeGVsOw0KPj4gKyB1MzIgcGl4 ZWxfZm9ybWF0Ow0KPj4gKyBpbnQgcmV0Ow0KPj4gKw0KPj4gKyBpbmZvID0ga3phbGxvYyhzaXpl b2YoKmluZm8pLCBHRlBfS0VSTkVMKTsNCj4+ICsgaWYgKCFpbmZvKQ0KPj4gKyByZXR1cm4gLUVO T01FTTsNCj4+ICsNCj4+ICsgcmV0ID0gYXBwbGV0YmRybV9zZW5kX21zZyhhZGV2LCBBUFBMRVRC RFJNX01TR19HRVRfSU5GT1JNQVRJT04pOw0KPj4gKyBpZiAocmV0KQ0KPj4gKyByZXR1cm4gcmV0 Ow0KPj4gKw0KPj4gKyByZXQgPSBhcHBsZXRiZHJtX3JlYWRfcmVzcG9uc2UoYWRldiwgJmluZm8t PmhlYWRlciwgc2l6ZW9mKCppbmZvKSwNCj4+ICsgICAgICAgIEFQUExFVEJEUk1fTVNHX0dFVF9J TkZPUk1BVElPTik7DQo+PiArIGlmIChyZXQpDQo+PiArIGdvdG8gZnJlZV9pbmZvOw0KPj4gKw0K Pj4gKyBiaXRzX3Blcl9waXhlbCA9IGluZm8tPmJpdHNfcGVyX3BpeGVsOw0KPj4gKyBwaXhlbF9m b3JtYXQgPSBnZXRfdW5hbGlnbmVkKCZpbmZvLT5waXhlbF9mb3JtYXQpOw0KPj4gKw0KPj4gKyBh ZGV2LT53aWR0aCA9IGdldF91bmFsaWduZWRfbGUzMigmaW5mby0+d2lkdGgpOw0KPj4gKyBhZGV2 LT5oZWlnaHQgPSBnZXRfdW5hbGlnbmVkX2xlMzIoJmluZm8tPmhlaWdodCk7DQo+PiArDQo+PiAr IGlmIChiaXRzX3Blcl9waXhlbCAhPSBBUFBMRVRCRFJNX0JJVFNfUEVSX1BJWEVMKSB7DQo+PiAr IGRybV9lcnIoZHJtLCAiRW5jb3VudGVyZWQgdW5leHBlY3RlZCBiaXRzIHBlciBwaXhlbCB2YWx1 ZSAoJWQpXG4iLCBiaXRzX3Blcl9waXhlbCk7DQo+PiArIHJldCA9IC1FSU5WQUw7DQo+PiArIGdv dG8gZnJlZV9pbmZvOw0KPj4gKyB9DQo+PiArDQo+PiArIGlmIChwaXhlbF9mb3JtYXQgIT0gQVBQ TEVUQkRSTV9QSVhFTF9GT1JNQVQpIHsNCj4+ICsgZHJtX2Vycihkcm0sICJFbmNvdW50ZXJlZCB1 bmtub3duIHBpeGVsIGZvcm1hdCAoJXA0Y2gpXG4iLCAmcGl4ZWxfZm9ybWF0KTsNCj4+ICsgcmV0 ID0gLUVJTlZBTDsNCj4+ICsgZ290byBmcmVlX2luZm87DQo+PiArIH0NCj4+ICsNCj4+ICtmcmVl X2luZm86DQo+PiArIGtmcmVlKGluZm8pOw0KPj4gKw0KPj4gKyByZXR1cm4gcmV0Ow0KPj4gK30N Cj4+ICsNCj4+ICtzdGF0aWMgdTMyIHJlY3Rfc2l6ZShzdHJ1Y3QgZHJtX3JlY3QgKnJlY3QpDQo+ PiArew0KPj4gKyByZXR1cm4gZHJtX3JlY3Rfd2lkdGgocmVjdCkgKiBkcm1fcmVjdF9oZWlnaHQo cmVjdCkgKiAoQVBQTEVUQkRSTV9CSVRTX1BFUl9QSVhFTCAvIDgpOw0KPj4gK30NCj4+ICsNCj4+ ICtzdGF0aWMgaW50IGFwcGxldGJkcm1fZmx1c2hfZGFtYWdlKHN0cnVjdCBhcHBsZXRiZHJtX2Rl dmljZSAqYWRldiwNCj4+ICsgICAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3N0YXRlLA0K Pj4gKyAgICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSkNCj4+ICt7DQo+PiArIHN0cnVj dCBkcm1fc2hhZG93X3BsYW5lX3N0YXRlICpzaGFkb3dfcGxhbmVfc3RhdGUgPSB0b19kcm1fc2hh ZG93X3BsYW5lX3N0YXRlKHN0YXRlKTsNCj4+ICsgc3RydWN0IGFwcGxldGJkcm1fZmJfcmVxdWVz dF9yZXNwb25zZSAqcmVzcG9uc2U7DQo+PiArIHN0cnVjdCBhcHBsZXRiZHJtX2ZiX3JlcXVlc3Rf Zm9vdGVyICpmb290ZXI7DQo+PiArIHN0cnVjdCBkcm1fYXRvbWljX2hlbHBlcl9kYW1hZ2VfaXRl ciBpdGVyOw0KPj4gKyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IHN0YXRlLT5mYjsNCj4+ ICsgc3RydWN0IGFwcGxldGJkcm1fZmJfcmVxdWVzdCAqcmVxdWVzdDsNCj4+ICsgc3RydWN0IGRy bV9kZXZpY2UgKmRybSA9ICZhZGV2LT5kcm07DQo+PiArIHN0cnVjdCBhcHBsZXRiZHJtX2ZyYW1l ICpmcmFtZTsNCj4+ICsgdTY0IHRpbWVzdGFtcCA9IGt0aW1lX2dldF9ucygpOw0KPj4gKyBzdHJ1 Y3QgZHJtX3JlY3QgZGFtYWdlOw0KPj4gKyBzaXplX3QgZnJhbWVzX3NpemUgPSAwOw0KPj4gKyBz aXplX3QgcmVxdWVzdF9zaXplOw0KPj4gKyBpbnQgcmV0Ow0KPj4gKw0KPj4gKyBkcm1fYXRvbWlj X2hlbHBlcl9kYW1hZ2VfaXRlcl9pbml0KCZpdGVyLCBvbGRfc3RhdGUsIHN0YXRlKTsNCj4+ICsg ZHJtX2F0b21pY19mb3JfZWFjaF9wbGFuZV9kYW1hZ2UoJml0ZXIsICZkYW1hZ2UpIHsNCj4+ICsg ZnJhbWVzX3NpemUgKz0gc3RydWN0X3NpemUoZnJhbWUsIGJ1ZiwgcmVjdF9zaXplKCZkYW1hZ2Up KTsNCj4+ICsgfQ0KPj4gKw0KPj4gKyBpZiAoIWZyYW1lc19zaXplKQ0KPj4gKyByZXR1cm4gMDsN Cj4+ICsNCj4+ICsgcmVxdWVzdF9zaXplID0gQUxJR04oc2l6ZW9mKCpyZXF1ZXN0KSArIGZyYW1l c19zaXplICsgc2l6ZW9mKCpmb290ZXIpLCAxNik7DQo+PiArDQo+PiArIHJlcXVlc3QgPSBremFs bG9jKHJlcXVlc3Rfc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+PiArIGlmICghcmVxdWVzdCkNCj4+ICsg cmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArIHJlc3BvbnNlID0ga3phbGxvYyhzaXplb2YoKnJl c3BvbnNlKSwgR0ZQX0tFUk5FTCk7DQo+PiArIGlmICghcmVzcG9uc2UpIHsNCj4+ICsgcmV0ID0g LUVOT01FTTsNCj4+ICsgZ290byBmcmVlX3JlcXVlc3Q7DQo+PiArIH0NCj4+ICsNCj4+ICsgcmV0 ID0gZHJtX2dlbV9mYl9iZWdpbl9jcHVfYWNjZXNzKGZiLCBETUFfRlJPTV9ERVZJQ0UpOw0KPj4g KyBpZiAocmV0KSB7DQo+PiArIGRybV9lcnIoZHJtLCAiRmFpbGVkIHRvIHN0YXJ0IENQVSBmcmFt ZWJ1ZmZlciBhY2Nlc3MgKCVwZSlcbiIsIEVSUl9QVFIocmV0KSk7DQo+PiArIGdvdG8gZnJlZV9y ZXNwb25zZTsNCj4+ICsgfQ0KPj4gKw0KPj4gKyByZXF1ZXN0LT5oZWFkZXIudW5rXzAwID0gY3B1 X3RvX2xlMTYoMik7DQo+PiArIHJlcXVlc3QtPmhlYWRlci51bmtfMDIgPSBjcHVfdG9fbGUxNigw eDEyKTsNCj4+ICsgcmVxdWVzdC0+aGVhZGVyLnVua18wNCA9IGNwdV90b19sZTMyKDkpOw0KPj4g KyByZXF1ZXN0LT5oZWFkZXIuc2l6ZSA9IGNwdV90b19sZTMyKHJlcXVlc3Rfc2l6ZSAtIHNpemVv ZihyZXF1ZXN0LT5oZWFkZXIpKTsNCj4+ICsgcmVxdWVzdC0+dW5rXzEwID0gY3B1X3RvX2xlMTYo MSk7DQo+PiArIHJlcXVlc3QtPm1zZ19pZCA9IHRpbWVzdGFtcCAmIDB4ZmY7DQo+PiArDQo+PiAr IGZyYW1lID0gKHN0cnVjdCBhcHBsZXRiZHJtX2ZyYW1lICopcmVxdWVzdC0+ZGF0YTsNCj4+ICsN Cj4+ICsgZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5pdCgmaXRlciwgb2xkX3N0YXRl LCBzdGF0ZSk7DQo+PiArIGRybV9hdG9taWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAm ZGFtYWdlKSB7DQo+PiArIHN0cnVjdCBpb3N5c19tYXAgZHN0ID0gSU9TWVNfTUFQX0lOSVRfVkFE RFIoZnJhbWUtPmJ1Zik7DQo+PiArIHUzMiBidWZfc2l6ZSA9IHJlY3Rfc2l6ZSgmZGFtYWdlKTsN Cj4+ICsNCj4+ICsgLyoNCj4+ICsgICogVGhlIGNvb3JkaW5hdGVzIG5lZWQgdG8gYmUgdHJhbnNs YXRlZCB0byB0aGUgY29vcmRpbmF0ZQ0KPj4gKyAgKiBzeXN0ZW0gdGhlIGRldmljZSBleHBlY3Rz LCBzZWUgdGhlIGNvbW1lbnQgaW4NCj4+ICsgICogYXBwbGV0YmRybV9zZXR1cF9tb2RlX2NvbmZp Zw0KPj4gKyAgKi8NCj4+ICsgZnJhbWUtPmJlZ2luX3ggPSBjcHVfdG9fbGUxNihkYW1hZ2UueTEp Ow0KPj4gKyBmcmFtZS0+YmVnaW5feSA9IGNwdV90b19sZTE2KGFkZXYtPmhlaWdodCAtIGRhbWFn ZS54Mik7DQo+PiArIGZyYW1lLT53aWR0aCA9IGNwdV90b19sZTE2KGRybV9yZWN0X2hlaWdodCgm ZGFtYWdlKSk7DQo+PiArIGZyYW1lLT5oZWlnaHQgPSBjcHVfdG9fbGUxNihkcm1fcmVjdF93aWR0 aCgmZGFtYWdlKSk7DQo+PiArIGZyYW1lLT5idWZfc2l6ZSA9IGNwdV90b19sZTMyKGJ1Zl9zaXpl KTsNCj4+ICsNCj4+ICsgcmV0ID0gZHJtX2ZiX2JsaXQoJmRzdCwgTlVMTCwgRFJNX0ZPUk1BVF9C R1I4ODgsDQo+PiArICAgJnNoYWRvd19wbGFuZV9zdGF0ZS0+ZGF0YVswXSwgZmIsICZkYW1hZ2Us ICZzaGFkb3dfcGxhbmVfc3RhdGUtPmZtdGNudl9zdGF0ZSk7DQo+PiArIGlmIChyZXQpIHsNCj4+ ICsgZHJtX2Vycihkcm0sICJGYWlsZWQgdG8gY29weSBkYW1hZ2UgY2xpcCAoJXBlKVxuIiwgRVJS X1BUUihyZXQpKTsNCj4+ICsgZ290byBlbmRfZmJfY3B1X2FjY2VzczsNCj4+ICsgfQ0KPj4gKw0K Pj4gKyBmcmFtZSA9ICh2b2lkICopZnJhbWUgKyBzdHJ1Y3Rfc2l6ZShmcmFtZSwgYnVmLCBidWZf c2l6ZSk7DQo+PiArIH0NCj4+ICsNCj4+ICsgZm9vdGVyID0gKHN0cnVjdCBhcHBsZXRiZHJtX2Zi X3JlcXVlc3RfZm9vdGVyICopJnJlcXVlc3QtPmRhdGFbZnJhbWVzX3NpemVdOw0KPj4gKw0KPj4g KyBmb290ZXItPnVua18wYyA9IGNwdV90b19sZTMyKDB4ZmZmZSk7DQo+PiArIGZvb3Rlci0+dW5r XzFjID0gY3B1X3RvX2xlMzIoMHg4MDAwMSk7DQo+PiArIGZvb3Rlci0+dW5rXzM0ID0gY3B1X3Rv X2xlMzIoMHg4MDAwMik7DQo+PiArIGZvb3Rlci0+dW5rXzRjID0gY3B1X3RvX2xlMzIoMHhmZmZm KTsNCj4+ICsgZm9vdGVyLT50aW1lc3RhbXAgPSBjcHVfdG9fbGU2NCh0aW1lc3RhbXApOw0KPj4g Kw0KPj4gKyByZXQgPSBhcHBsZXRiZHJtX3NlbmRfcmVxdWVzdChhZGV2LCAmcmVxdWVzdC0+aGVh ZGVyLCByZXF1ZXN0X3NpemUpOw0KPj4gKyBpZiAocmV0KQ0KPj4gKyBnb3RvIGVuZF9mYl9jcHVf YWNjZXNzOw0KPj4gKw0KPj4gKyByZXQgPSBhcHBsZXRiZHJtX3JlYWRfcmVzcG9uc2UoYWRldiwg JnJlc3BvbnNlLT5oZWFkZXIsIHNpemVvZigqcmVzcG9uc2UpLA0KPj4gKyAgICAgICAgQVBQTEVU QkRSTV9NU0dfVVBEQVRFX0NPTVBMRVRFKTsNCj4+ICsgaWYgKHJldCkNCj4+ICsgZ290byBlbmRf ZmJfY3B1X2FjY2VzczsNCj4+ICsNCj4+ICsgaWYgKHJlc3BvbnNlLT50aW1lc3RhbXAgIT0gZm9v dGVyLT50aW1lc3RhbXApIHsNCj4+ICsgZHJtX2Vycihkcm0sICJSZXNwb25zZSB0aW1lc3RhbXAg KCVsbHUpIGRvZXNuJ3QgbWF0Y2ggcmVxdWVzdCB0aW1lc3RhbXAgKCVsbHUpXG4iLA0KPj4gKyBs ZTY0X3RvX2NwdShyZXNwb25zZS0+dGltZXN0YW1wKSwgdGltZXN0YW1wKTsNCj4+ICsgZ290byBl bmRfZmJfY3B1X2FjY2VzczsNCj4+ICsgfQ0KPj4gKw0KPj4gK2VuZF9mYl9jcHVfYWNjZXNzOg0K Pj4gKyBkcm1fZ2VtX2ZiX2VuZF9jcHVfYWNjZXNzKGZiLCBETUFfRlJPTV9ERVZJQ0UpOw0KPj4g K2ZyZWVfcmVzcG9uc2U6DQo+PiArIGtmcmVlKHJlc3BvbnNlKTsNCj4+ICtmcmVlX3JlcXVlc3Q6 DQo+PiArIGtmcmVlKHJlcXVlc3QpOw0KPj4gKw0KPj4gKyByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ ICsNCj4+ICtzdGF0aWMgaW50IGFwcGxldGJkcm1fY29ubmVjdG9yX2hlbHBlcl9nZXRfbW9kZXMo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikNCj4+ICt7DQo+PiArIHN0cnVjdCBhcHBs ZXRiZHJtX2RldmljZSAqYWRldiA9IGRybV90b19hZGV2KGNvbm5lY3Rvci0+ZGV2KTsNCj4+ICsN Cj4+ICsgcmV0dXJuIGRybV9jb25uZWN0b3JfaGVscGVyX2dldF9tb2Rlc19maXhlZChjb25uZWN0 b3IsICZhZGV2LT5tb2RlKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGVudW0gZHJtX21vZGVf c3RhdHVzIGFwcGxldGJkcm1fcGlwZV9tb2RlX3ZhbGlkKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3Bs YXlfcGlwZSAqcGlwZSwNCj4+ICsgICAgICAgIGNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2Rl ICptb2RlKQ0KPj4gK3sNCj4+ICsgc3RydWN0IGRybV9jcnRjICpjcnRjID0gJnBpcGUtPmNydGM7 DQo+PiArIHN0cnVjdCBhcHBsZXRiZHJtX2RldmljZSAqYWRldiA9IGRybV90b19hZGV2KGNydGMt PmRldik7DQo+PiArDQo+PiArIHJldHVybiBkcm1fY3J0Y19oZWxwZXJfbW9kZV92YWxpZF9maXhl ZChjcnRjLCBtb2RlLCAmYWRldi0+bW9kZSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk IGFwcGxldGJkcm1fcGlwZV9kaXNhYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAq cGlwZSkNCj4+ICt7DQo+PiArIHN0cnVjdCBhcHBsZXRiZHJtX2RldmljZSAqYWRldiA9IGRybV90 b19hZGV2KHBpcGUtPmNydGMuZGV2KTsNCj4+ICsgaW50IGlkeDsNCj4+ICsNCj4+ICsgaWYgKCFk cm1fZGV2X2VudGVyKCZhZGV2LT5kcm0sICZpZHgpKQ0KPj4gKyByZXR1cm47DQo+PiArDQo+PiAr IGFwcGxldGJkcm1fY2xlYXJfZGlzcGxheShhZGV2KTsNCj4+ICsNCj4+ICsgZHJtX2Rldl9leGl0 KGlkeCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGFwcGxldGJkcm1fcGlwZV91cGRh dGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlLA0KPj4gKyAgICBzdHJ1Y3Qg ZHJtX3BsYW5lX3N0YXRlICpvbGRfc3RhdGUpDQo+PiArew0KPj4gKyBzdHJ1Y3QgZHJtX2NydGMg KmNydGMgPSAmcGlwZS0+Y3J0YzsNCj4+ICsgc3RydWN0IGFwcGxldGJkcm1fZGV2aWNlICphZGV2 ID0gZHJtX3RvX2FkZXYoY3J0Yy0+ZGV2KTsNCj4+ICsgaW50IGlkeDsNCj4+ICsNCj4+ICsgaWYg KCFjcnRjLT5zdGF0ZS0+YWN0aXZlIHx8ICFkcm1fZGV2X2VudGVyKCZhZGV2LT5kcm0sICZpZHgp KQ0KPj4gKyByZXR1cm47DQo+PiArDQo+PiArIGFwcGxldGJkcm1fZmx1c2hfZGFtYWdlKGFkZXYs IG9sZF9zdGF0ZSwgcGlwZS0+cGxhbmUuc3RhdGUpOw0KPj4gKw0KPj4gKyBkcm1fZGV2X2V4aXQo aWR4KTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0IHUzMiBhcHBsZXRiZHJtX2Zvcm1h dHNbXSA9IHsNCj4+ICsgRFJNX0ZPUk1BVF9CR1I4ODgsDQo+PiArIERSTV9GT1JNQVRfWFJHQjg4 ODgsIC8qIGVtdWxhdGVkICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9tb2RlX2NvbmZpZ19mdW5jcyBhcHBsZXRiZHJtX21vZGVfY29uZmlnX2Z1bmNzID0gew0K Pj4gKyAuZmJfY3JlYXRlID0gZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9kaXJ0eSwNCj4+ICsgLmF0 b21pY19jaGVjayA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrLA0KPj4gKyAuYXRvbWljX2NvbW1p dCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBhcHBsZXRiZHJtX2Nvbm5lY3Rvcl9mdW5j cyA9IHsNCj4+ICsgLnJlc2V0ID0gZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0K Pj4gKyAuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwNCj4+ICsgLmZpbGxfbW9kZXMg PSBkcm1faGVscGVyX3Byb2JlX3NpbmdsZV9jb25uZWN0b3JfbW9kZXMsDQo+PiArIC5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRl LA0KPj4gKyAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5l Y3Rvcl9kdXBsaWNhdGVfc3RhdGUsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIGFwcGxldGJkcm1fY29ubmVjdG9yX2hlbHBl cl9mdW5jcyA9IHsNCj4+ICsgLmdldF9tb2RlcyA9IGFwcGxldGJkcm1fY29ubmVjdG9yX2hlbHBl cl9nZXRfbW9kZXMsDQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9z aW1wbGVfZGlzcGxheV9waXBlX2Z1bmNzIGFwcGxldGJkcm1fcGlwZV9mdW5jcyA9IHsNCj4+ICsg RFJNX0dFTV9TSU1QTEVfRElTUExBWV9QSVBFX1NIQURPV19QTEFORV9GVU5DUywNCj4+ICsgLnVw ZGF0ZSA9IGFwcGxldGJkcm1fcGlwZV91cGRhdGUsDQo+PiArIC5kaXNhYmxlID0gYXBwbGV0YmRy bV9waXBlX2Rpc2FibGUsDQo+PiArIC5tb2RlX3ZhbGlkID0gYXBwbGV0YmRybV9waXBlX21vZGVf dmFsaWQsDQo+PiArfTsNCj4+ICsNCj4+ICtERUZJTkVfRFJNX0dFTV9GT1BTKGFwcGxldGJkcm1f ZHJtX2ZvcHMpOw0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2RyaXZlciBhcHBs ZXRiZHJtX2RybV9kcml2ZXIgPSB7DQo+PiArIERSTV9HRU1fU0hNRU1fRFJJVkVSX09QUywNCj4+ ICsgLm5hbWUgPSAiYXBwbGV0YmRybSIsDQo+PiArIC5kZXNjID0gIkFwcGxlIFRvdWNoIEJhciBE Uk0gRHJpdmVyIiwNCj4+ICsgLmRhdGUgPSAiMjAyMzA5MTAiLA0KPj4gKyAubWFqb3IgPSAxLA0K Pj4gKyAubWlub3IgPSAwLA0KPj4gKyAuZHJpdmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQg fCBEUklWRVJfR0VNIHwgRFJJVkVSX0FUT01JQywNCj4+ICsgLmZvcHMgPSAmYXBwbGV0YmRybV9k cm1fZm9wcywNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgYXBwbGV0YmRybV9zZXR1cF9t b2RlX2NvbmZpZyhzdHJ1Y3QgYXBwbGV0YmRybV9kZXZpY2UgKmFkZXYpDQo+PiArew0KPj4gKyBz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmFkZXYtPmNvbm5lY3RvcjsNCj4+ICsg c3RydWN0IGRybV9kZXZpY2UgKmRybSA9ICZhZGV2LT5kcm07DQo+PiArIHN0cnVjdCBkZXZpY2Ug KmRldiA9IGFkZXYtPmRldjsNCj4+ICsgaW50IHJldDsNCj4+ICsNCj4+ICsgcmV0ID0gZHJtbV9t b2RlX2NvbmZpZ19pbml0KGRybSk7DQo+PiArIGlmIChyZXQpDQo+PiArIHJldHVybiBkZXZfZXJy X3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRvIGluaXRpYWxpemUgbW9kZSBjb25maWd1cmF0aW9u XG4iKTsNCj4+ICsNCj4+ICsgLyoNCj4+ICsgICogVGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQg YnkgdGhlIGRldmljZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUNCj4+ICsgICogY29vcmRpbmF0ZSBz eXN0ZW0gb2YgdGhlIGZyYW1lYnVmZmVyIGluIHRoYXQgdGhlIHggYW5kIHkgYXhlcyBhcmUNCj4+ ICsgICogc3dhcHBlZCwgYW5kIHRoYXQgdGhlIHkgYXhpcyBpcyBpbnZlcnRlZDsgc28gd2hhdCB0 aGUgZGV2aWNlIHJlcG9ydHMNCj4+ICsgICogYXMgdGhlIGhlaWdodCBpcyBhY3R1YWxseSB0aGUg d2lkdGggb2YgdGhlIGZyYW1lYnVmZmVyIGFuZCB2aWNlDQo+PiArICAqIHZlcnNhDQo+PiArICAq Lw0KPj4gKyBkcm0tPm1vZGVfY29uZmlnLm1pbl93aWR0aCA9IDA7DQo+PiArIGRybS0+bW9kZV9j b25maWcubWluX2hlaWdodCA9IDA7DQo+PiArIGRybS0+bW9kZV9jb25maWcubWF4X3dpZHRoID0g bWF4KGFkZXYtPmhlaWdodCwgRFJNX1NIQURPV19QTEFORV9NQVhfV0lEVEgpOw0KPj4gKyBkcm0t Pm1vZGVfY29uZmlnLm1heF9oZWlnaHQgPSBtYXgoYWRldi0+d2lkdGgsIERSTV9TSEFET1dfUExB TkVfTUFYX0hFSUdIVCk7DQo+PiArIGRybS0+bW9kZV9jb25maWcucHJlZmVycmVkX2RlcHRoID0g QVBQTEVUQkRSTV9CSVRTX1BFUl9QSVhFTDsNCj4+ICsgZHJtLT5tb2RlX2NvbmZpZy5mdW5jcyA9 ICZhcHBsZXRiZHJtX21vZGVfY29uZmlnX2Z1bmNzOw0KPj4gKw0KPj4gKyBhZGV2LT5tb2RlID0g KHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlKSB7DQo+PiArIERSTV9NT0RFX0lOSVQoNjAsIGFkZXYt PmhlaWdodCwgYWRldi0+d2lkdGgsDQo+PiArICAgICAgIERSTV9NT0RFX1JFU19NTShhZGV2LT5o ZWlnaHQsIDIxOCksDQo+PiArICAgICAgIERSTV9NT0RFX1JFU19NTShhZGV2LT53aWR0aCwgMjE4 KSkNCj4+ICsgfTsNCj4+ICsNCj4+ICsgcmV0ID0gZHJtX2Nvbm5lY3Rvcl9pbml0KGRybSwgY29u bmVjdG9yLA0KPj4gKyAgJmFwcGxldGJkcm1fY29ubmVjdG9yX2Z1bmNzLCBEUk1fTU9ERV9DT05O RUNUT1JfVVNCKTsNCj4+ICsgaWYgKHJldCkNCj4+ICsgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2 LCByZXQsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBjb25uZWN0b3JcbiIpOw0KPj4gKw0KPj4gKyBk cm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmYXBwbGV0YmRybV9jb25uZWN0b3Jf aGVscGVyX2Z1bmNzKTsNCj4+ICsNCj4+ICsgcmV0ID0gZHJtX2Nvbm5lY3Rvcl9zZXRfcGFuZWxf b3JpZW50YXRpb24oY29ubmVjdG9yLA0KPj4gKyAgIERSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9O X1JJR0hUX1VQKTsNCj4+ICsgaWYgKHJldCkNCj4+ICsgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2 LCByZXQsICJGYWlsZWQgdG8gc2V0IHBhbmVsIG9yaWVudGF0aW9uXG4iKTsNCj4+ICsNCj4+ICsg Y29ubmVjdG9yLT5kaXNwbGF5X2luZm8ubm9uX2Rlc2t0b3AgPSB0cnVlOw0KPj4gKyByZXQgPSBk cm1fb2JqZWN0X3Byb3BlcnR5X3NldF92YWx1ZSgmY29ubmVjdG9yLT5iYXNlLA0KPj4gKyAgICAg ZHJtLT5tb2RlX2NvbmZpZy5ub25fZGVza3RvcF9wcm9wZXJ0eSwgdHJ1ZSk7DQo+PiArIGlmIChy ZXQpDQo+PiArIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRvIHNldCBu b24tZGVza3RvcCBwcm9wZXJ0eVxuIik7DQo+PiArDQo+PiArIHJldCA9IGRybV9zaW1wbGVfZGlz cGxheV9waXBlX2luaXQoZHJtLCAmYWRldi0+cGlwZSwgJmFwcGxldGJkcm1fcGlwZV9mdW5jcywN Cj4+ICsgICAgYXBwbGV0YmRybV9mb3JtYXRzLCBBUlJBWV9TSVpFKGFwcGxldGJkcm1fZm9ybWF0 cyksDQo+PiArICAgIE5VTEwsICZhZGV2LT5jb25uZWN0b3IpOw0KPj4gKyBpZiAocmV0KQ0KPj4g KyByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBpbml0aWFsaXplIHNp bXBsZSBkaXNwbGF5IHBpcGVcbiIpOw0KPj4gKw0KPj4gKyBkcm1fcGxhbmVfZW5hYmxlX2ZiX2Rh bWFnZV9jbGlwcygmYWRldi0+cGlwZS5wbGFuZSk7DQo+PiArDQo+PiArIGRybV9tb2RlX2NvbmZp Z19yZXNldChkcm0pOw0KPj4gKw0KPj4gKyByZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRybSwgMCk7 DQo+IA0KPiBUaGlzIGxpbmUgYmVsb25ncyBpbnRvIHRoZSBjYWxsZXIuDQo+IA0KPiBJJ2xsIGRv IGFub3RoZXIgcmV2aWV3IGZvciB0aGUgbmV4dCBpdGVyYXRpb24uDQo+IA0KPiBCZXN0IHJlZ2Fy ZHMNCj4gVGhvbWFzDQo+IA0KPj4gKyBpZiAocmV0KQ0KPj4gKyByZXR1cm4gZGV2X2Vycl9wcm9i ZShkZXYsIHJldCwgIkZhaWxlZCB0byByZWdpc3RlciBEUk0gZGV2aWNlXG4iKTsNCj4+ICsNCj4+ ICsgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgYXBwbGV0YmRybV9wcm9i ZShzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZiwNCj4+ICsgICAgIGNvbnN0IHN0cnVjdCB1c2Jf ZGV2aWNlX2lkICppZCkNCj4+ICt7DQo+PiArIHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRv ciAqYnVsa19pbiwgKmJ1bGtfb3V0Ow0KPj4gKyBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmaW50Zi0+ ZGV2Ow0KPj4gKyBzdHJ1Y3QgYXBwbGV0YmRybV9kZXZpY2UgKmFkZXY7DQo+PiArIGludCByZXQ7 DQo+PiArDQo+PiArIHJldCA9IHVzYl9maW5kX2NvbW1vbl9lbmRwb2ludHMoaW50Zi0+Y3VyX2Fs dHNldHRpbmcsICZidWxrX2luLCAmYnVsa19vdXQsIE5VTEwsIE5VTEwpOw0KPj4gKyBpZiAocmV0 KQ0KPj4gKyByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBmaW5kIGJ1 bGsgZW5kcG9pbnRzXG4iKTsNCj4+ICsNCj4+ICsgYWRldiA9IGRldm1fZHJtX2Rldl9hbGxvYyhk ZXYsICZhcHBsZXRiZHJtX2RybV9kcml2ZXIsIHN0cnVjdCBhcHBsZXRiZHJtX2RldmljZSwgZHJt KTsNCj4+ICsgaWYgKElTX0VSUihhZGV2KSkNCj4+ICsgcmV0dXJuIFBUUl9FUlIoYWRldik7DQo+ PiArDQo+PiArIGFkZXYtPmRldiA9IGRldjsNCj4+ICsgYWRldi0+aW5fZXAgPSBidWxrX2luLT5i RW5kcG9pbnRBZGRyZXNzOw0KPj4gKyBhZGV2LT5vdXRfZXAgPSBidWxrX291dC0+YkVuZHBvaW50 QWRkcmVzczsNCj4+ICsNCj4+ICsgdXNiX3NldF9pbnRmZGF0YShpbnRmLCBhZGV2KTsNCj4+ICsN Cj4+ICsgcmV0ID0gYXBwbGV0YmRybV9nZXRfaW5mb3JtYXRpb24oYWRldik7DQo+PiArIGlmIChy ZXQpDQo+PiArIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAiRmFpbGVkIHRvIGdldCBk aXNwbGF5IGluZm9ybWF0aW9uXG4iKTsNCj4+ICsNCj4+ICsgcmV0ID0gYXBwbGV0YmRybV9zaWdu YWxfcmVhZGluZXNzKGFkZXYpOw0KPj4gKyBpZiAocmV0KQ0KPj4gKyByZXR1cm4gZGV2X2Vycl9w cm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBzaWduYWwgcmVhZGluZXNzXG4iKTsNCj4+ICsNCj4+ ICsgcmV0ID0gYXBwbGV0YmRybV9jbGVhcl9kaXNwbGF5KGFkZXYpOw0KPj4gKyBpZiAocmV0KQ0K Pj4gKyByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIHJldCwgIkZhaWxlZCB0byBjbGVhciBkaXNw bGF5XG4iKTsNCj4+ICsNCj4+ICsgcmV0dXJuIGFwcGxldGJkcm1fc2V0dXBfbW9kZV9jb25maWco YWRldik7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIGFwcGxldGJkcm1fZGlzY29ubmVj dChzdHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikNCj4+ICt7DQo+PiArIHN0cnVjdCBhcHBsZXRi ZHJtX2RldmljZSAqYWRldiA9IHVzYl9nZXRfaW50ZmRhdGEoaW50Zik7DQo+PiArIHN0cnVjdCBk cm1fZGV2aWNlICpkcm0gPSAmYWRldi0+ZHJtOw0KPj4gKw0KPj4gKyBkcm1fZGV2X3VucGx1Zyhk cm0pOw0KPj4gKyBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihkcm0pOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgdm9pZCBhcHBsZXRiZHJtX3NodXRkb3duKHN0cnVjdCB1c2JfaW50ZXJmYWNl ICppbnRmKQ0KPj4gK3sNCj4+ICsgc3RydWN0IGFwcGxldGJkcm1fZGV2aWNlICphZGV2ID0gdXNi X2dldF9pbnRmZGF0YShpbnRmKTsNCj4+ICsNCj4+ICsgLyoNCj4+ICsgICogVGhlIGZyYW1lYnVm ZmVyIG5lZWRzIHRvIGJlIGNsZWFyZWQgb24gc2h1dGRvd24gc2luY2UgaXRzIGNvbnRlbnQNCj4+ ICsgICogcGVyc2lzdHMgYWNyb3NzIGJvb3RzDQo+PiArICAqLw0KPj4gKyBkcm1fYXRvbWljX2hl bHBlcl9zaHV0ZG93bigmYWRldi0+ZHJtKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCB1c2JfZGV2aWNlX2lkIGFwcGxldGJkcm1fdXNiX2lkX3RhYmxlW10gPSB7DQo+PiAr IHsgVVNCX0RFVklDRV9JTlRFUkZBQ0VfQ0xBU1MoMHgwNWFjLCAweDgzMDIsIFVTQl9DTEFTU19B VURJT19WSURFTykgfSwNCj4+ICsge30NCj4+ICt9Ow0KPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUo dXNiLCBhcHBsZXRiZHJtX3VzYl9pZF90YWJsZSk7DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCB1 c2JfZHJpdmVyIGFwcGxldGJkcm1fdXNiX2RyaXZlciA9IHsNCj4+ICsgLm5hbWUgPSAiYXBwbGV0 YmRybSIsDQo+PiArIC5wcm9iZSA9IGFwcGxldGJkcm1fcHJvYmUsDQo+PiArIC5kaXNjb25uZWN0 ID0gYXBwbGV0YmRybV9kaXNjb25uZWN0LA0KPj4gKyAuc2h1dGRvd24gPSBhcHBsZXRiZHJtX3No dXRkb3duLA0KPj4gKyAuaWRfdGFibGUgPSBhcHBsZXRiZHJtX3VzYl9pZF90YWJsZSwNCj4+ICt9 Ow0KPj4gK21vZHVsZV91c2JfZHJpdmVyKGFwcGxldGJkcm1fdXNiX2RyaXZlcik7DQo+PiArDQo+ PiArTU9EVUxFX0FVVEhPUigiS2VyZW0gS2FyYWJheSA8a2VrcmJ5QGdtYWlsLmNvbT4iKTsNCj4+ ICtNT0RVTEVfREVTQ1JJUFRJT04oIkFwcGxlIFRvdWNoIEJhciBEUk0gRHJpdmVyIik7DQo+PiAr TU9EVUxFX0xJQ0VOU0UoIkdQTCIpOw0KPiANCj4gLS0gDQo+IC0tDQo+IFRob21hcyBaaW1tZXJt YW5uDQo+IEdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlv bnMgR2VybWFueSBHbWJIDQo+IEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJnLCBH ZXJtYW55DQo+IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVycywgQW5kcmV3IE1jRG9uYWxkLCBC b3VkaWVuIE1vZXJtYW4NCj4gSFJCIDM2ODA5IChBRyBOdWVybmJlcmcpDQoNCg0K