From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 6EF2EC54E58 for ; Mon, 18 Mar 2024 16:09:50 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 2517010EE5A; Mon, 18 Mar 2024 16:09:50 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="BqSc/kTi"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.18]) by gabe.freedesktop.org (Postfix) with ESMTPS id CD6E610EE5A for ; Mon, 18 Mar 2024 16:09:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710778189; x=1742314189; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=ZDm1fZEwWBjP5jYEg4AGbMHGHx4LqAexMqAz+X/ofBA=; b=BqSc/kTi1w3Zgc73ZXqjT3A4EyEVbpDmqfsvtZOYvISwWvtCBvrEnQAk m1R3MEwWAukUnJYnseOX31c90Liit0qPXLyJ9ETSctX+mj9MCTKOLX0Ui VPJ/drA9QmngD3d5y0dP+0wqtJQt2pVLYhDJc4a6W3A7Ar0W3Wb3vd7Po J6N93esmDzLTitq8yrVTTKoAiOMrBqz+kIp8bjb2RrfYtiwhIiSu571mH BagR9UVJFIE3gqOo01IN6wsojRARvz7a5JySyLsHSYWg/70MFZxts90iW JK9krAqFhPd+aMUnn677OLNy7a8p+MceBSsss9CSaSUqBzjF2eQXZldje A==; X-IronPort-AV: E=McAfee;i="6600,9927,11017"; a="5729442" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5729442" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa110.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 09:09:48 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="44441134" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orviesa002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 18 Mar 2024 09:09:48 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 18 Mar 2024 09:09:47 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 18 Mar 2024 09:09:47 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 18 Mar 2024 09:09:47 -0700 Received: from NAM10-DM6-obe.outbound.protection.outlook.com (104.47.58.100) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 18 Mar 2024 09:09:47 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N71ZbfSHkEifcNtl0F3YvsZSQMqvDSFaSWyo7VYyUlNoXlIns/GL0h5FwWWxZy6PMwwR3mE4+N4ZtXYl3W+1NwLaMztVyAsSH2gnMImHSFTlSm42vSXKt0TpHotU8MbgWIrp6JkwUrO5GwNXzPk2fgJWnew32i8Ox6Ss89fJZnBo7FHFi3q8h+HwSgsUV0TQhKMQ6/hiaUVj2Zj0cyasT75YHfVn45RI6BFSIK2W082kUh7UIhM5np+kxhbVAKKCmrEbvqIzCztcnRVELOJdp+4F99mrmNdd5ABz5c2tLlv2taKucxSDvs2oVd+PxTiyN1Y5PKiP8EvmOUpkcdbHoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZDm1fZEwWBjP5jYEg4AGbMHGHx4LqAexMqAz+X/ofBA=; b=VpihYBJ8zQtv6q8Gw2Dr7JBYg/2pM5KcVtYPn9q0tEp5gbZORINusOUpk3/HFPcjaBHSPWbCDIMDWcT96aWQJf6egeC39L3iNwLLhZVGYGcuXe2UE1s+MBc0zrPPxXujEoLgk5ULrI4560hokwWxN6cNFpbx8NB8uzUqlYXZxVVv6oqLcELApHWugOcl2GWVMgwkmfZB5K+wocBis2Q9nZ9+qkhe0DIYO58NtvynIdMusZincEGCcgP7QFijcgE8UfbXwdC6v+zo9r6QwyVyt3Nw/FRe2sGE+MXFc+904+ns+fkj0LLvK9NpEd/trBGhb1gcQxSM6Ofndvk4EIyv4g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SA1PR11MB6991.namprd11.prod.outlook.com (2603:10b6:806:2b8::21) by SJ0PR11MB5056.namprd11.prod.outlook.com (2603:10b6:a03:2d5::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.12; Mon, 18 Mar 2024 16:09:45 +0000 Received: from SA1PR11MB6991.namprd11.prod.outlook.com ([fe80::c06c:bf95:b3f4:198d]) by SA1PR11MB6991.namprd11.prod.outlook.com ([fe80::c06c:bf95:b3f4:198d%5]) with mapi id 15.20.7362.017; Mon, 18 Mar 2024 16:09:45 +0000 From: "Zeng, Oak" To: "Hellstrom, Thomas" , "intel-xe@lists.freedesktop.org" CC: "Brost, Matthew" , "Welty, Brian" , "airlied@gmail.com" , "Ghimiray, Himal Prasad" Subject: RE: [PATCH 4/5] drm/xe: Helper to populate a userptr or hmmptr Thread-Topic: [PATCH 4/5] drm/xe: Helper to populate a userptr or hmmptr Thread-Index: AQHadb8bm7LA7U9/N0+DYhDF3MBxjbE9gGKAgAAaCpCAAA84gIAACAwg Date: Mon, 18 Mar 2024 16:09:45 +0000 Message-ID: References: <20240314033553.1379444-1-oak.zeng@intel.com> <20240314033553.1379444-5-oak.zeng@intel.com> <2a350dbef1a1aac1bbd260811bc347866b47cc9e.camel@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA1PR11MB6991:EE_|SJ0PR11MB5056:EE_ x-ms-office365-filtering-correlation-id: bb2d3e6d-321c-4cc0-0514-08dc4765d407 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 7U7hmvsTrFZENBgLJP4vRcrQBlmW3L0Oft6bABspLXuHt/WDCoHkwox8JaiiXr24MHlQTtY6S02D7NMnOanPe+e7K1tyGYSUFi47ikGQM+L/sZZBXzMxk6OqFjkOZG1ZEMrvoEkfT6rIhxPqhLT2Q1bY/YNUE184593AFdhbEfENHREWnolKCiRTh08P2OFo9Z74D2oUcyz8xrPlz0Evmoxa0vfbj3vmTvHIRFnwVeb1K0aHGh4E2eiVeg0cedbeZiTgqINW106dzIKBwu9eFmj+L6Nb/on+WOlT4Luw+sS55LQl9sJojx6NQ5iO2rdbBuo+3IBBKmlsR1mviVJ13T9FMNqp8+nRCG8QWStw2CR5JfHXN7fjzAOtdxYI5QdYCXPSkiHpCS9o67+bukAOcBJtU6G/QMdT1BqtBpqa7b2aQIJGcEnRg334rch8w9u6MyhPWANsPmw0328kvK3dmjuwv/zhsrjoPNjt4N0vfk6tbapie6QbZjt5wJAoU/9DMWr72FMN45Z9Wv/rIXGLp9ksq9NMdNYn64W/wTBxftZ7eRcbTdmaNf9EOjsuF8WqEIb+TG8Qsw1p7K3owpdgKZw+cJ+aqCFjJd7AYiedA+wWQ1ntFwa6MIh/idgIP162eT/UW7eKTnYSApExB88VB/tN7FZEa/0erA8Nw7LOMP20/UWdnQ8IxTrETTlHRS5naY2JrDYfN1VgE4mhq+p23Nv7h09m7+cDSISc36HXSgI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SA1PR11MB6991.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(1800799015)(366007)(376005)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?WXQ1VGJMd1ZCeWs2Y3dkQlI0S3dTWTNjOGd1UjlOV01RNVRhaUh6SEpsckJa?= =?utf-8?B?QlJxMHM2SGE3UlNhUW5XRENQaG1aWXkxNzl5WWtma2pLZGhXUkg1R2lYZmpa?= =?utf-8?B?cDJINzVSNUNTdGk2V2pqcytMN0hoaFgrV2JLVWlPL1VJU1hJT214b1k2MFhM?= =?utf-8?B?Q0NtMEk2d290Q1BEa3Q1b1dLcTF5UjRJMDVtdXRsckhQOUpEdG93RVB2UjRK?= =?utf-8?B?N2ZxZldtNU5iTzdwdU82NjBleVZzTXdFbDFITmpLK0lPZ3hGcG9OaUpQKzlE?= =?utf-8?B?eW1GWUdUTHFSNVcwR1BDVkcrTGM4Z2lhOVp3WklIYU9Rd2tOOS9PcmxpUUZE?= =?utf-8?B?RjhiaUQxYmRENXk0L09rdlFmKzQxZkYzdEJhblNwTXlnaUxUTmRLWXJjQXhL?= =?utf-8?B?LzRzS2pyRFU1ckVRQnhjc0xLc3R3U1R4Z0dRUjFtbTQ5US9ESzVyVzk2TnR6?= =?utf-8?B?RnRYUTNNRWFpU0FPcTdWT2hrN0tOU3hiNW8zcnJZdXB1b1BlWHliV1NTVzBY?= =?utf-8?B?a3pNQTRpa3pNbVREUFpkcUI3TlZaTndPMDlmZ0RTMlZWOUdrcXRlUThRMUNC?= =?utf-8?B?bjlDMEd5U1JMczNha3NyMlN1Z3ZCTWFpYktIa1RtYWRmeDJRV2JkTXdPNFk5?= =?utf-8?B?Tm0wYjJReHNMUUZZYUJKQzdZSVpwUXZyZ0x4V3JYdElzT3ZmUS9NYklrd0NP?= =?utf-8?B?WDdtUzFESWpzbk5aMmo2RU95a3dqajRWcDc3VEZOeU9FU1B1a3kremxwNGpX?= =?utf-8?B?QXFXMVBBSE5kb3ZwQUNUVHk0bExQaG0vMHo3ckQvd1lPTUIwbWdXWDZ1NEZM?= =?utf-8?B?YlB2MzhTR3pySUZJbnAyM3Y2cXdzTStBNk44NEZYMERzM211TGZkUzV3YTFF?= =?utf-8?B?THg0TXdSYTJPNjZ2eENRdnkwRm51VEZ5N2FhL0kyeXhiUzZLdEh6YmtJQTM5?= =?utf-8?B?U1pLdTg4TDBLd3QzbVBRV0hJREpXY0Nrd3BiSm91TTVtd1lmSGpka1FJZnZJ?= =?utf-8?B?UU10dVpXWlp6RXFrbVpSbnhEQUxJM0ExdW9RTHRMT0hUWDFHc3pUTFc0Z0hn?= =?utf-8?B?OTRLY3h6WjdhNkoyOTR1VkY4a0IvVjg3aEtMNFIwZTlGMEZmSnAzekIrWTdh?= =?utf-8?B?YXlxSE5tdGY0aGNzK1ByUkVrMVhLZ29oZnRwRzNnTDdHZGRZYVZncWhYS0hD?= =?utf-8?B?L2h6dy9CdUNPVDFDZ0E1Zm9JcmdiV2hLZ3kzSjNMWXZ1NTF2VFY1VUxOSHdP?= =?utf-8?B?cS9oNzJPK3A2cHdWNEZSY2dCNVJETlR0aG56dzRSNGlteEU2OVBqS2p4UTIy?= =?utf-8?B?RlVZU05JTW9pQ0h4SXRVSUFqNmg5OElQZmpTY1FCUXhrc3gzN3JnRWpjc0hk?= =?utf-8?B?TWxOdW9LelpsRDF3NzVzajVhalRocXhMNXBqMGFyb253TGtkMXM4ZUhSRVUr?= =?utf-8?B?ZWpNOTNIUkhnM1VIWER5eWwyUnJoNmM1V24yMVJ5Mmk0OTNFOUUyaERZVFVN?= =?utf-8?B?ME13RDJ2Tzc5NGRnY3dCWnZxU215bXVsN1BsNWhLL2JSWC8zOVJlbk9FaGN3?= =?utf-8?B?elpxcGpYNE1XdmxJMVR2UzNUTHArMHB1aWRRc2lRSGIwcEdLdnN5UVRQakRY?= =?utf-8?B?N0Y3aTRhNEtqSG9tNmx3aVlDckR3a1ZaemdTS0tkN0t5eVo2R2RVVXZudjhC?= =?utf-8?B?WWpybld4U3F3T2R4VWVMZjVndGVHdDhRbWlTeGZncWpvdzNhQWQvanpnK2Z1?= =?utf-8?B?MmwrS0RqaGo4UW1LQlAvN1M3SkIwL1ZQbnZzbXNmM0NQMWdCT09SdmhpUUhJ?= =?utf-8?B?UmtMdzV2VXpBaWdtdzhkSFRiOTBRbnRHZmk0WVR1RHlaSENYdXJ4dngwOExz?= =?utf-8?B?QmJXcURubktNaDY1K2dwSmJkbTZVY2xET0liZUFNT2tGbnYwWWdNOVdrK0lr?= =?utf-8?B?UFJ3c1FWSnRJM3ZjOXdUZWNhR05nNVRRS0ovalNWMktmZDIvUFYzcHc2VE1W?= =?utf-8?B?V05Ca2N3c3Z0dnBJbEJwbFVzRXZENkxNTDlCZmgrR2o2RGV2UkN2cUhXMThD?= =?utf-8?B?Q2diRXRZdWRPaTl3amZNTWltRVMyVzFEQ3k5VjY0ODFNWmk1SFI4WDhqcWFN?= =?utf-8?Q?jPUs=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA1PR11MB6991.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb2d3e6d-321c-4cc0-0514-08dc4765d407 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2024 16:09:45.4065 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 4n3o4Pkm/+oTZ39Rof7JyVc7FWpaWh80fQ3cEgiERwldNAI3nXcjH0ABvMy0Kg/rn8pDTxbln/mzDhzwRJQaAQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ0PR11MB5056 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogSGVsbHN0cm9tLCBUaG9t YXMgPHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPg0KPiBTZW50OiBNb25kYXksIE1hcmNoIDE4 LCAyMDI0IDExOjQwIEFNDQo+IFRvOiBpbnRlbC14ZUBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IFpl bmcsIE9hayA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiBDYzogQnJvc3QsIE1hdHRoZXcgPG1hdHRo ZXcuYnJvc3RAaW50ZWwuY29tPjsgV2VsdHksIEJyaWFuDQo+IDxicmlhbi53ZWx0eUBpbnRlbC5j b20+OyBhaXJsaWVkQGdtYWlsLmNvbTsgR2hpbWlyYXksIEhpbWFsIFByYXNhZA0KPiA8aGltYWwu cHJhc2FkLmdoaW1pcmF5QGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCA0LzVdIGRy bS94ZTogSGVscGVyIHRvIHBvcHVsYXRlIGEgdXNlcnB0ciBvciBobW1wdHINCj4gDQo+IEhpLA0K PiANCj4gT24gTW9uLCAyMDI0LTAzLTE4IGF0IDE0OjQ5ICswMDAwLCBaZW5nLCBPYWsgd3JvdGU6 DQo+ID4NCj4gPg0KPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206 IEhlbGxzdHJvbSwgVGhvbWFzIDx0aG9tYXMuaGVsbHN0cm9tQGludGVsLmNvbT4NCj4gPiA+IFNl bnQ6IE1vbmRheSwgTWFyY2ggMTgsIDIwMjQgOToxMyBBTQ0KPiA+ID4gVG86IGludGVsLXhlQGxp c3RzLmZyZWVkZXNrdG9wLm9yZzsgWmVuZywgT2FrIDxvYWsuemVuZ0BpbnRlbC5jb20+DQo+ID4g PiBDYzogQnJvc3QsIE1hdHRoZXcgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPjsgV2VsdHksIEJy aWFuDQo+ID4gPiA8YnJpYW4ud2VsdHlAaW50ZWwuY29tPjsgYWlybGllZEBnbWFpbC5jb207IEdo aW1pcmF5LCBIaW1hbCBQcmFzYWQNCj4gPiA+IDxoaW1hbC5wcmFzYWQuZ2hpbWlyYXlAaW50ZWwu Y29tPg0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCA0LzVdIGRybS94ZTogSGVscGVyIHRvIHBv cHVsYXRlIGEgdXNlcnB0ciBvcg0KPiA+ID4gaG1tcHRyDQo+ID4gPg0KPiA+ID4gSGksIE9haywN Cj4gPiA+DQo+ID4gPiBGb3VuZCBhbm90aGVyIHRoaW5nLCBzZWUgYmVsb3c6DQo+ID4gPg0KPiA+ ID4gT24gV2VkLCAyMDI0LTAzLTEzIGF0IDIzOjM1IC0wNDAwLCBPYWsgWmVuZyB3cm90ZToNCj4g PiA+ID4gQWRkIGEgaGVscGVyIGZ1bmN0aW9uIHhlX2htbV9wb3B1bGF0ZV9yYW5nZSB0byBwb3B1 bGF0ZQ0KPiA+ID4gPiBhIGEgdXNlcnB0ciBvciBobW1wdHIgcmFuZ2UuIFRoaXMgZnVuY3Rpb25z IGNhbGxzIGhtbV9yYW5nZV9mYXVsdA0KPiA+ID4gPiB0byByZWFkIENQVSBwYWdlIHRhYmxlcyBh bmQgcG9wdWxhdGUgYWxsIHBmbnMvcGFnZXMgb2YgdGhpcw0KPiA+ID4gPiB2aXJ0dWFsIGFkZHJl c3MgcmFuZ2UuDQo+ID4gPiA+DQo+ID4gPiA+IElmIHRoZSBwb3B1bGF0ZWQgcGFnZSBpcyBzeXN0 ZW0gbWVtb3J5IHBhZ2UsIGRtYS1tYXBwaW5nIGlzDQo+ID4gPiA+IHBlcmZvcm1lZA0KPiA+ID4g PiB0byBnZXQgYSBkbWEtYWRkcmVzcyB3aGljaCBjYW4gYmUgdXNlZCBsYXRlciBmb3IgR1BVIHRv IGFjY2Vzcw0KPiA+ID4gPiBwYWdlcy4NCj4gPiA+ID4NCj4gPiA+ID4gSWYgdGhlIHBvcHVsYXRl ZCBwYWdlIGlzIGRldmljZSBwcml2YXRlIHBhZ2UsIHdlIGNhbGN1bGF0ZSB0aGUNCj4gPiA+ID4g ZHBhICgNCj4gPiA+ID4gZGV2aWNlIHBoeXNpY2FsIGFkZHJlc3MpIG9mIHRoZSBwYWdlLg0KPiA+ ID4gPg0KPiA+ID4gPiBUaGUgZG1hLWFkZHJlc3Mgb3IgZHBhIGlzIHRoZW4gc2F2ZWQgaW4gdXNl cnB0cidzIHNnIHRhYmxlLiBUaGlzDQo+ID4gPiA+IGlzDQo+ID4gPiA+IHByZXBhcmUgd29yayB0 byByZXBsYWNlIHRoZSBnZXRfdXNlcl9wYWdlc19mYXN0IGNvZGUgaW4gdXNlcnB0cg0KPiA+ID4g PiBjb2RlDQo+ID4gPiA+IHBhdGguIFRoZSBoZWxwZXIgZnVuY3Rpb24gd2lsbCBhbHNvIGJlIHVz ZWQgdG8gcG9wdWxhdGUgaG1tcHRyDQo+ID4gPiA+IGxhdGVyLg0KPiA+ID4gPg0KPiA+ID4gPiBT aWduZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiA+ID4gPiBDby1k ZXZlbG9wZWQtYnk6IE5pcmFuamFuYSBWaXNod2FuYXRoYXB1cmENCj4gPiA+ID4gPG5pcmFuamFu YS52aXNod2FuYXRoYXB1cmFAaW50ZWwuY29tPg0KPiA+ID4gPiBTaWduZWQtb2ZmLWJ5OiBOaXJh bmphbmEgVmlzaHdhbmF0aGFwdXJhDQo+ID4gPiA+IDxuaXJhbmphbmEudmlzaHdhbmF0aGFwdXJh QGludGVsLmNvbT4NCj4gPiA+ID4gQ2M6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50 ZWwuY29tPg0KPiA+ID4gPiBDYzogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21A aW50ZWwuY29tPg0KPiA+ID4gPiBDYzogQnJpYW4gV2VsdHkgPGJyaWFuLndlbHR5QGludGVsLmNv bT4NCj4gPiA+ID4gLS0tDQo+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlIHzC oMKgIDMgKy0NCj4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0veGUveGVfaG1tLmMgfCAyMTMNCj4g PiA+ID4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ID4gPiA+IMKgZHJp dmVycy9ncHUvZHJtL3hlL3hlX2htbS5oIHzCoCAxMiArKw0KPiA+ID4gPiDCoDMgZmlsZXMgY2hh bmdlZCwgMjI3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPiA+ID4gwqBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlL3hlX2htbS5jDQo+ID4gPiA+IMKgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9obW0uaA0KPiA+ID4gPg0KPiA+ID4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlDQo+ID4gPiA+IGIvZHJp dmVycy9ncHUvZHJtL3hlL01ha2VmaWxlDQo+ID4gPiA+IGluZGV4IDg0MDQ2NzA4MGU1OS4uMjlk Y2JjOTM4YjAxIDEwMDY0NA0KPiA+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUvTWFrZWZp bGUNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL01ha2VmaWxlDQo+ID4gPiA+IEBA IC0xNDMsNyArMTQzLDggQEAgeGUteSArPSB4ZV9iYi5vIFwNCj4gPiA+ID4gwqAJeGVfd2FpdF91 c2VyX2ZlbmNlLm8gXA0KPiA+ID4gPiDCoAl4ZV93YS5vIFwNCj4gPiA+ID4gwqAJeGVfd29wY20u byBcDQo+ID4gPiA+IC0JeGVfc3ZtX2Rldm1lbS5vDQo+ID4gPiA+ICsJeGVfc3ZtX2Rldm1lbS5v IFwNCj4gPiA+ID4gKwl4ZV9obW0ubw0KPiA+ID4gPg0KPiA+ID4gPiDCoCMgZ3JhcGhpY3MgaGFy ZHdhcmUgbW9uaXRvcmluZyAoSFdNT04pIHN1cHBvcnQNCj4gPiA+ID4gwqB4ZS0kKENPTkZJR19I V01PTikgKz0geGVfaHdtb24ubw0KPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L3hlL3hlX2htbS5jDQo+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2htbS5jDQo+ID4g PiA+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uYzQ1 YzI0NDdkMzg2DQo+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3hlL3hlX2htbS5jDQo+ID4gPiA+IEBAIC0wLDAgKzEsMjEzIEBADQo+ID4gPiA+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUDQo+ID4gPiA+ICsvKg0KPiA+ID4gPiArICog Q29weXJpZ2h0IMKpIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ID4gKyAqLw0KPiA+ID4g PiArDQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvbW11X25vdGlmaWVyLmg+DQo+ID4gPiA+ICsj aW5jbHVkZSA8bGludXgvZG1hLW1hcHBpbmcuaD4NCj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9t ZW1yZW1hcC5oPg0KPiA+ID4gPiArI2luY2x1ZGUgPGxpbnV4L3N3YXAuaD4NCj4gPiA+ID4gKyNp bmNsdWRlIDxsaW51eC9tbS5oPg0KPiA+ID4gPiArI2luY2x1ZGUgInhlX2htbS5oIg0KPiA+ID4g PiArI2luY2x1ZGUgInhlX3ZtLmgiDQo+ID4gPiA+ICsNCj4gPiA+ID4gKy8qKg0KPiA+ID4gPiAr ICogbWFya19yYW5nZV9hY2Nlc3NlZCgpIC0gbWFyayBhIHJhbmdlIGlzIGFjY2Vzc2VkLCBzbyBj b3JlIG1tDQo+ID4gPiA+ICsgKiBoYXZlIHN1Y2ggaW5mb3JtYXRpb24gZm9yIG1lbW9yeSBldmlj dGlvbiBvciB3cml0ZSBiYWNrIHRvDQo+ID4gPiA+ICsgKiBoYXJkIGRpc2sNCj4gPiA+ID4gKyAq DQo+ID4gPiA+ICsgKiBAcmFuZ2U6IHRoZSByYW5nZSB0byBtYXJrDQo+ID4gPiA+ICsgKiBAd3Jp dGU6IGlmIHdyaXRlIHRvIHRoaXMgcmFuZ2UsIHdlIG1hcmsgcGFnZXMgaW4gdGhpcyByYW5nZQ0K PiA+ID4gPiArICogYXMgZGlydHkNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIHZvaWQg bWFya19yYW5nZV9hY2Nlc3NlZChzdHJ1Y3QgaG1tX3JhbmdlICpyYW5nZSwgYm9vbA0KPiA+ID4g PiB3cml0ZSkNCj4gPiA+ID4gK3sNCj4gPiA+ID4gKwlzdHJ1Y3QgcGFnZSAqcGFnZTsNCj4gPiA+ ID4gKwl1NjQgaSwgbnBhZ2VzOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJbnBhZ2VzID0gKChyYW5n ZS0+ZW5kIC0gMSkgPj4gUEFHRV9TSElGVCkgLSAocmFuZ2UtDQo+ID4gPiA+ID5zdGFydCA+Pg0K PiA+ID4gPiBQQUdFX1NISUZUKSArIDE7DQo+ID4gPiA+ICsJZm9yIChpID0gMDsgaSA8IG5wYWdl czsgaSsrKSB7DQo+ID4gPiA+ICsJCXBhZ2UgPSBobW1fcGZuX3RvX3BhZ2UocmFuZ2UtPmhtbV9w Zm5zW2ldKTsNCj4gPiA+ID4gKwkJaWYgKHdyaXRlKSB7DQo+ID4gPiA+ICsJCQlsb2NrX3BhZ2Uo cGFnZSk7DQo+ID4gPiA+ICsJCQlzZXRfcGFnZV9kaXJ0eShwYWdlKTsNCj4gPiA+ID4gKwkJCXVu bG9ja19wYWdlKHBhZ2UpOw0KPiA+ID4gPiArCQl9DQo+ID4gPiA+ICsJCW1hcmtfcGFnZV9hY2Nl c3NlZChwYWdlKTsNCj4gPiA+ID4gKwl9DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4g Ky8qKg0KPiA+ID4gPiArICogYnVpbGRfc2coKSAtIGJ1aWxkIGEgc2NhdHRlciBnYXRoZXIgdGFi bGUgZm9yIGFsbCB0aGUNCj4gPiA+ID4gcGh5c2ljYWwNCj4gPiA+ID4gcGFnZXMvcGZuDQo+ID4g PiA+ICsgKiBpbiBhIGhtbV9yYW5nZS4gZG1hLWFkZHJlc3MgaXMgc2F2ZSBpbiBzZyB0YWJsZSBh bmQgd2lsbCBiZQ0KPiA+ID4gPiB1c2VkDQo+ID4gPiA+IHRvIHByb2dyYW0NCj4gPiA+ID4gKyAq IEdQVSBwYWdlIHRhYmxlIGxhdGVyLg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIEB4ZTogdGhl IHhlIGRldmljZSB3aG8gd2lsbCBhY2Nlc3MgdGhlIGRtYS1hZGRyZXNzIGluIHNnDQo+ID4gPiA+ IHRhYmxlDQo+ID4gPiA+ICsgKiBAcmFuZ2U6IHRoZSBobW0gcmFuZ2UgdGhhdCB3ZSBidWlsZCB0 aGUgc2cgdGFibGUgZnJvbS4gcmFuZ2UtDQo+ID4gPiA+ID4gaG1tX3BmbnNbXQ0KPiA+ID4gPiAr ICogaGFzIHRoZSBwZm4gbnVtYmVycyBvZiBwYWdlcyB0aGF0IGJhY2sgdXAgdGhpcyBobW0gYWRk cmVzcw0KPiA+ID4gPiByYW5nZS4NCj4gPiA+ID4gKyAqIEBzdDogcG9pbnRlciB0byB0aGUgc2cg dGFibGUuDQo+ID4gPiA+ICsgKiBAd3JpdGU6IHdoZXRoZXIgd2Ugd3JpdGUgdG8gdGhpcyByYW5n ZS4gVGhpcyBkZWNpZGVzIGRtYSBtYXANCj4gPiA+ID4gZGlyZWN0aW9uDQo+ID4gPiA+ICsgKiBm b3Igc3lzdGVtIHBhZ2VzLiBJZiB3cml0ZSB3ZSBtYXAgaXQgYmktZGlyZXRpb25hbDsgb3RoZXJ3 aXNlDQo+ID4gPiA+ICsgKiBETUFfVE9fREVWSUNFDQo+ID4gPiA+ICsgKg0KPiA+ID4gPiArICog QWxsIHRoZSBjb250aWd1b3VzIHBmbnMgd2lsbCBiZSBjb2xsYXBzZWQgaW50byBvbmUgZW50cnkg aW4NCj4gPiA+ID4gKyAqIHRoZSBzY2F0dGVyIGdhdGhlciB0YWJsZS4gVGhpcyBpcyBmb3IgdGhl IGNvbnZlbmllbmNlIG9mDQo+ID4gPiA+ICsgKiBsYXRlciBvbiBvcGVyYXRpb25zIHRvIGJpbmQg YWRkcmVzcyByYW5nZSB0byBHUFUgcGFnZSB0YWJsZS4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsg KiBUaGUgZG1hX2FkZHJlc3MgaW4gdGhlIHNnIHRhYmxlIHdpbGwgbGF0ZXIgYmUgdXNlZCBieSBH UFUgdG8NCj4gPiA+ID4gKyAqIGFjY2VzcyBtZW1vcnkuIFNvIGlmIHRoZSBtZW1vcnkgaXMgc3lz dGVtIG1lbW9yeSwgd2UgbmVlZCB0bw0KPiA+ID4gPiArICogZG8gYSBkbWEtbWFwcGluZyBzbyBp dCBjYW4gYmUgYWNjZXNzZWQgYnkgR1BVL0RNQS4gSWYgdGhlDQo+ID4gPiA+IG1lbW9yeQ0KPiA+ ID4gPiArICogaXMgR1BVIGxvY2FsIG1lbW9yeSAob2YgdGhlIEdQVSB3aG8gaXMgZ29pbmcgdG8g YWNjZXNzDQo+ID4gPiA+IG1lbW9yeSksDQo+ID4gPiA+ICsgKiB3ZSBuZWVkIGdwdSBkcGEgKGRl dmljZSBwaHlzaWNhbCBhZGRyZXNzKSwgYW5kIHRoZXJlIGlzIG5vDQo+ID4gPiA+IG5lZWQNCj4g PiA+ID4gKyAqIG9mIGRtYS1tYXBwaW5nLg0KPiA+ID4gPiArICoNCj4gPiA+ID4gKyAqIEZJWE1F OiBkbWEtbWFwcGluZyBmb3IgcGVlciBncHUgZGV2aWNlIHRvIGFjY2VzcyByZW1vdGUgZ3B1J3MN Cj4gPiA+ID4gKyAqIG1lbW9yeS4gQWRkIHRoaXMgd2hlbiB5b3Ugc3VwcG9ydCBwMnANCj4gPiA+ ID4gKyAqDQo+ID4gPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgc3RvcmFnZSBv ZiB0aGUgc2cgdGFibGUuIEl0IGlzDQo+ID4gPiA+ICsgKiBjYWxsZXIncyByZXNwb25zaWJpbGl0 eSB0byBmcmVlIGl0IGNhbGxpbmcgc2dfZnJlZV90YWJsZS4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ ICsgKiBSZXR1cm5zIDAgaWYgc3VjY2Vzc2Z1bDsgLUVOT01FTSBpZiBmYWlscyB0byBhbGxvY2F0 ZSBtZW1vcnkNCj4gPiA+ID4gKyAqLw0KPiA+ID4gPiArc3RhdGljIGludCBidWlsZF9zZyhzdHJ1 Y3QgeGVfZGV2aWNlICp4ZSwgc3RydWN0IGhtbV9yYW5nZQ0KPiA+ID4gPiAqcmFuZ2UsDQo+ID4g PiA+ICsJCQnCoMKgwqDCoCBzdHJ1Y3Qgc2dfdGFibGUgKnN0LCBib29sIHdyaXRlKQ0KPiA+ID4g PiArew0KPiA+ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IHhlLT5kcm0uZGV2Ow0KPiA+ID4g PiArCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7DQo+ID4gPiA+ICsJdTY0IGksIG5wYWdlczsNCj4g PiA+ID4gKw0KPiA+ID4gPiArCXNnID0gTlVMTDsNCj4gPiA+ID4gKwlzdC0+bmVudHMgPSAwOw0K PiA+ID4gPiArCW5wYWdlcyA9ICgocmFuZ2UtPmVuZCAtIDEpID4+IFBBR0VfU0hJRlQpIC0gKHJh bmdlLQ0KPiA+ID4gPiA+c3RhcnQgPj4NCj4gPiA+ID4gUEFHRV9TSElGVCkgKyAxOw0KPiA+ID4g PiArDQo+ID4gPiA+ICsJaWYgKHVubGlrZWx5KHNnX2FsbG9jX3RhYmxlKHN0LCBucGFnZXMsIEdG UF9LRVJORUwpKSkNCj4gPiA+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gPiA+ICsNCj4gPiA+ ID4gKwlmb3IgKGkgPSAwOyBpIDwgbnBhZ2VzOyBpKyspIHsNCj4gPiA+ID4gKwkJc3RydWN0IHBh Z2UgKnBhZ2U7DQo+ID4gPiA+ICsJCXVuc2lnbmVkIGxvbmcgYWRkcjsNCj4gPiA+ID4gKwkJc3Ry dWN0IHhlX21lbV9yZWdpb24gKm1yOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJCXBhZ2UgPSBobW1f cGZuX3RvX3BhZ2UocmFuZ2UtPmhtbV9wZm5zW2ldKTsNCj4gPiA+ID4gKwkJaWYgKGlzX2Rldmlj ZV9wcml2YXRlX3BhZ2UocGFnZSkpIHsNCj4gPiA+ID4gKwkJCW1yID0gcGFnZV90b19tZW1fcmVn aW9uKHBhZ2UpOw0KPiA+ID4gPiArCQkJYWRkciA9IHZyYW1fcGZuX3RvX2RwYShtciwgcmFuZ2Ut DQo+ID4gPiA+ID4gaG1tX3BmbnNbaV0pOw0KPiA+ID4gPiArCQl9IGVsc2Ugew0KPiA+ID4gPiAr CQkJYWRkciA9IGRtYV9tYXBfcGFnZShkZXYsIHBhZ2UsIDAsDQo+ID4gPiA+IFBBR0VfU0laRSwN Cj4gPiA+ID4gKwkJCQkJd3JpdGUgPw0KPiA+ID4gPiBETUFfQklESVJFQ1RJT05BTCA6DQo+ID4g PiA+IERNQV9UT19ERVZJQ0UpOw0KPiA+ID4gPiArCQl9DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwkJ aWYgKHNnICYmIChhZGRyID09IChzZ19kbWFfYWRkcmVzcyhzZykgKyBzZy0NCj4gPiA+ID4gPiBs ZW5ndGgpKSkgew0KPiA+ID4gPiArCQkJc2ctPmxlbmd0aCArPSBQQUdFX1NJWkU7DQo+ID4gPiA+ ICsJCQlzZ19kbWFfbGVuKHNnKSArPSBQQUdFX1NJWkU7DQo+ID4gPiA+ICsJCQljb250aW51ZTsN Cj4gPiA+ID4gKwkJfQ0KPiA+ID4gPiArDQo+ID4gPiA+ICsJCXNnID3CoCBzZyA/IHNnX25leHQo c2cpIDogc3QtPnNnbDsNCj4gPiA+ID4gKwkJc2dfZG1hX2FkZHJlc3Moc2cpID0gYWRkcjsNCj4g PiA+ID4gKwkJc2dfZG1hX2xlbihzZykgPSBQQUdFX1NJWkU7DQo+ID4gPiA+ICsJCXNnLT5sZW5n dGggPSBQQUdFX1NJWkU7DQo+ID4gPiA+ICsJCXN0LT5uZW50cysrOw0KPiA+ID4gPiArCX0NCj4g PiA+ID4gKw0KPiA+ID4gPiArCXNnX21hcmtfZW5kKHNnKTsNCj4gPiA+ID4gKwlyZXR1cm4gMDsN Cj4gPiA+ID4gK30NCj4gPiA+ID4gKw0KPiA+ID4gPiArLyoqDQo+ID4gPiA+ICsgKiB4ZV9obW1f cG9wdWxhdGVfcmFuZ2UoKSAtIFBvcHVsYXRlIHBoeXNpY2FsIHBhZ2VzIG9mIGENCj4gPiA+ID4g dmlydHVhbA0KPiA+ID4gPiArICogYWRkcmVzcyByYW5nZQ0KPiA+ID4gPiArICoNCj4gPiA+ID4g KyAqIEB2bWE6IHZtYSBoYXMgaW5mb3JtYXRpb24gb2YgdGhlIHJhbmdlIHRvIHBvcHVsYXRlLiBv bmx5IHZtYQ0KPiA+ID4gPiArICogb2YgdXNlcnB0ciBhbmQgaG1tcHRyIHR5cGUgY2FuIGJlIHBv cHVsYXRlZC4NCj4gPiA+ID4gKyAqIEBobW1fcmFuZ2U6IHBvaW50ZXIgdG8gaG1tX3JhbmdlIHN0 cnVjdC4gaG1tX3JhbmctPmhtbV9wZm5zDQo+ID4gPiA+ICsgKiB3aWxsIGhvbGQgdGhlIHBvcHVs YXRlZCBwZm5zLg0KPiA+ID4gPiArICogQHdyaXRlOiBwb3B1bGF0ZSBwYWdlcyB3aXRoIHdyaXRl IHBlcm1pc3Npb24NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBUaGlzIGZ1bmN0aW9uIHBvcHVs YXRlIHRoZSBwaHlzaWNhbCBwYWdlcyBvZiBhIHZpcnR1YWwNCj4gPiA+ID4gKyAqIGFkZHJlc3Mg cmFuZ2UuIFRoZSBwb3B1bGF0ZWQgcGh5c2ljYWwgcGFnZXMgaXMgc2F2ZWQgaW4NCj4gPiA+ID4g KyAqIHVzZXJwdHIncyBzZyB0YWJsZS4gSXQgaXMgc2ltaWxhciB0byBnZXRfdXNlcl9wYWdlcyBi dXQgY2FsbA0KPiA+ID4gPiArICogaG1tX3JhbmdlX2ZhdWx0Lg0KPiA+ID4gPiArICoNCj4gPiA+ ID4gKyAqIFRoaXMgZnVuY3Rpb24gYWxzbyByZWFkIG1tdSBub3RpZmllciBzZXF1ZW5jZSAjICgN Cj4gPiA+ID4gKyAqIG1tdV9pbnRlcnZhbF9yZWFkX2JlZ2luKSwgZm9yIHRoZSBwdXJwb3NlIG9m IGxhdGVyDQo+ID4gPiA+ICsgKiBjb21wYXJpc29uICh0aHJvdWdoIG1tdV9pbnRlcnZhbF9yZWFk X3JldHJ5KS4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsgKiBUaGlzIG11c3QgYmUgY2FsbGVkIHdp dGggbW1hcCByZWFkIG9yIHdyaXRlIGxvY2sgaGVsZC4NCj4gPiA+ID4gKyAqDQo+ID4gPiA+ICsg KiBUaGlzIGZ1bmN0aW9uIGFsbG9jYXRlcyB0aGUgc3RvcmFnZSBvZiB0aGUgdXNlcnB0ciBzZyB0 YWJsZS4NCj4gPiA+ID4gKyAqIEl0IGlzIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5IHRvIGZyZWUg aXQgY2FsbGluZw0KPiA+ID4gPiBzZ19mcmVlX3RhYmxlLg0KPiA+ID4gPiArICoNCj4gPiA+ID4g KyAqIHJldHVybnM6IDAgZm9yIHN1Y2N1c3M7IG5lZ2F0aXZlIGVycm9yIG5vIG9uIGZhaWx1cmUN Cj4gPiA+ID4gKyAqLw0KPiA+ID4gPiAraW50IHhlX2htbV9wb3B1bGF0ZV9yYW5nZShzdHJ1Y3Qg eGVfdm1hICp2bWEsIHN0cnVjdCBobW1fcmFuZ2UNCj4gPiA+ID4gKmhtbV9yYW5nZSwNCj4gPiA+ ID4gKwkJCQkJCWJvb2wgd3JpdGUpDQo+ID4gPiA+ICt7DQo+ID4gPiA+ICsJdW5zaWduZWQgbG9u ZyB0aW1lb3V0ID0NCj4gPiA+ID4gKwkJamlmZmllcyArDQo+ID4gPiA+IG1zZWNzX3RvX2ppZmZp ZXMoSE1NX1JBTkdFX0RFRkFVTFRfVElNRU9VVCk7DQo+ID4gPiA+ICsJdW5zaWduZWQgbG9uZyAq cGZucywgZmxhZ3MgPSBITU1fUEZOX1JFUV9GQVVMVDsNCj4gPiA+ID4gKwlzdHJ1Y3QgeGVfdXNl cnB0cl92bWEgKnVzZXJwdHJfdm1hOw0KPiA+ID4gPiArCXN0cnVjdCB4ZV91c2VycHRyICp1c2Vy cHRyOw0KPiA+ID4gPiArCXU2NCBzdGFydCA9IHZtYS0+Z3B1dmEudmEuYWRkcjsNCj4gPiA+ID4g Kwl1NjQgZW5kID0gc3RhcnQgKyB2bWEtPmdwdXZhLnZhLnJhbmdlOw0KPiA+ID4gPiArCXN0cnVj dCB4ZV92bSAqdm0gPSB4ZV92bWFfdm0odm1hKTsNCj4gPiA+ID4gKwl1NjQgbnBhZ2VzOw0KPiA+ ID4gPiArCWludCByZXQ7DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwl1c2VycHRyX3ZtYSA9IHRvX3Vz ZXJwdHJfdm1hKHZtYSk7DQo+ID4gPiA+ICsJdXNlcnB0ciA9ICZ1c2VycHRyX3ZtYS0+dXNlcnB0 cjsNCj4gPiA+ID4gKwltbWFwX2Fzc2VydF9sb2NrZWQodXNlcnB0ci0+bm90aWZpZXIubW0pOw0K PiA+ID4gPiArDQo+ID4gPiA+ICsJbnBhZ2VzID0gKChlbmQgLSAxKSA+PiBQQUdFX1NISUZUKSAt IChzdGFydCA+Pg0KPiA+ID4gPiBQQUdFX1NISUZUKSArDQo+ID4gPiA+IDE7DQo+ID4gPiA+ICsJ cGZucyA9IGt2bWFsbG9jX2FycmF5KG5wYWdlcywgc2l6ZW9mKCpwZm5zKSwNCj4gPiA+ID4gR0ZQ X0tFUk5FTCk7DQo+ID4gPiA+ICsJaWYgKHVubGlrZWx5KCFwZm5zKSkNCj4gPiA+ID4gKwkJcmV0 dXJuIC1FTk9NRU07DQo+ID4gPiA+ICsNCj4gPiA+ID4gKwlpZiAod3JpdGUpDQo+ID4gPiA+ICsJ CWZsYWdzIHw9IEhNTV9QRk5fUkVRX1dSSVRFOw0KPiA+ID4gPiArDQo+ID4gPiA+ICsJbWVtc2V0 NjQoKHU2NCAqKXBmbnMsICh1NjQpZmxhZ3MsIG5wYWdlcyk7DQo+ID4gPiA+ICsJaG1tX3Jhbmdl LT5obW1fcGZucyA9IHBmbnM7DQo+ID4gPiA+ICsJaG1tX3JhbmdlLT5ub3RpZmllcl9zZXEgPQ0K PiA+ID4gPiBtbXVfaW50ZXJ2YWxfcmVhZF9iZWdpbigmdXNlcnB0ci0NCj4gPiA+ID4gPiBub3Rp Zmllcik7DQo+ID4gPiA+ICsJaG1tX3JhbmdlLT5ub3RpZmllciA9ICZ1c2VycHRyLT5ub3RpZmll cjsNCj4gPiA+ID4gKwlobW1fcmFuZ2UtPnN0YXJ0ID0gc3RhcnQ7DQo+ID4gPiA+ICsJaG1tX3Jh bmdlLT5lbmQgPSBlbmQ7DQo+ID4gPiA+ICsJaG1tX3JhbmdlLT5wZm5fZmxhZ3NfbWFzayA9IEhN TV9QRk5fUkVRX0ZBVUxUIHwNCj4gPiA+ID4gSE1NX1BGTl9SRVFfV1JJVEU7DQo+ID4gPiA+ICsJ LyoqDQo+ID4gPiA+ICsJICogRklYTUU6DQo+ID4gPiA+ICsJICogU2V0IHRoZSB0aGUgZGV2X3By aXZhdGVfb3duZXIgY2FuIHByZXZlbnQNCj4gPiA+ID4gaG1tX3JhbmdlX2ZhdWx0DQo+ID4gPiA+ IHRvIGZhdWx0DQo+ID4gPiA+ICsJICogaW4gdGhlIGRldmljZSBwcml2YXRlIHBhZ2VzIG93bmVk IGJ5IGNhbGxlci4gU2VlDQo+ID4gPiA+IGZ1bmN0aW9uDQo+ID4gPiA+ICsJICogaG1tX3ZtYV9o YW5kbGVfcHRlLiBJbiBtdWx0aXBsZSBHUFUgY2FzZSwgdGhpcyBzaG91bGQNCj4gPiA+ID4gYmUN Cj4gPiA+ID4gc2V0IHRvIHRoZQ0KPiA+ID4gPiArCSAqIGRldmljZSBvd25lciBvZiB0aGUgYmVz dCBtaWdyYXRpb24gZGVzdGluYXRpb24uIGUuZy4sDQo+ID4gPiA+IGRldmljZTAvdm0wDQo+ID4g PiA+ICsJICogaGFzIGEgcGFnZSBmYXVsdCwgYnV0IHdlIGhhdmUgZGV0ZXJtaW5lZCB0aGUgYmVz dA0KPiA+ID4gPiBwbGFjZW1lbnQgb2YNCj4gPiA+ID4gKwkgKiB0aGUgZmF1bHQgYWRkcmVzcyBz aG91bGQgYmUgb24gZGV2aWNlMSwgd2Ugc2hvdWxkIHNldA0KPiA+ID4gPiBiZWxvdyB0bw0KPiA+ ID4gPiArCSAqIGRldmljZTEgaW5zdGVhZCBvZiBkZXZpY2UwLg0KPiA+ID4gPiArCSAqLw0KPiA+ ID4gPiArCWhtbV9yYW5nZS0+ZGV2X3ByaXZhdGVfb3duZXIgPSB2bS0+eGUtPmRybS5kZXY7DQo+ ID4gPiA+ICsNCj4gPiA+ID4gKwl3aGlsZSAodHJ1ZSkgew0KPiA+ID4gPiArCQlyZXQgPSBobW1f cmFuZ2VfZmF1bHQoaG1tX3JhbmdlKTsNCj4gPiA+ID4gKwkJaWYgKHRpbWVfYWZ0ZXIoamlmZmll cywgdGltZW91dCkpDQo+ID4gPiA+ICsJCQlicmVhazsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCQlp ZiAocmV0ID09IC1FQlVTWSkNCj4gPiA+ID4gKwkJCWNvbnRpbnVlOw0KPiA+ID4NCj4gPiA+IElm IChyZXQgPT0gLUVCVVNZKSBpdCBsb29rcyBmcm9tIHRoZSBobW1fcmFuZ2VfZmF1bHQoKQ0KPiA+ ID4gaW1wbGVtZW50YXRpb24NCj4gPiA+IGxpa2UgaG1tX3JhbmdlLT5ub3RpZmllcl9zZXEgaGFz IGJlY29tZSBpbnZhbGlkIGFuZCB3aXRob3V0IGNhbGxpbmcNCj4gPiA+IG1tdV9pbnRlcnZhbF9y ZWFkX2JlZ2luKCkgYWdhaW4sIHdlIHdpbGwgZW5kIHVwIGluIGFuIGluZmluaXRlDQo+ID4gPiBs b29wPw0KPiA+ID4NCj4gPg0KPiA+IEkgbm90aWNlZCB0aGlzIHRoaW5nIGJlZm9yZSBhbmQgaGFk IGEgcmVhZF9iZWdpbiBpbiB0aGUgd2hpbGUgbG9vcC4NCj4gPiBCdXQgYWZ0ZXIgYSBzZWNvbmQg dGhvdWdodCwgZnVuY3Rpb24geGVfaG1tX3BvcHVsYXRlX3JhbmdlIGlzIGNhbGxlZA0KPiA+IGlu c2lkZSBhIG1tYXAgbG9jaywgc28gYWZ0ZXIgdGhlIHJlYWRfYmVnaW4gaXMgY2FsbGVkIGFib3Zl LCB0aGVyZQ0KPiA+IGNhbid0IGJlIGEgaW52YWxpZGF0aW9uIGJlZm9yZSBtbWFwIHVubG9jay4g U28gdGhlb3JldGljYWxseSBFQlVTWQ0KPiA+IGNhbid0IGhhcHBlbj8NCj4gPg0KPiA+IE9haw0K PiANCj4gSW52YWxpZGF0aW9ucyBjYW4gaGFwcGVuIGR1ZSB0byBtYW55IGRpZmZlcmVudCB0aGlu Z3MgdGhhdCBkb24ndCBuZWVkDQo+IHRoZSBtbWFwIGxvY2suIEZpbGUgdHJ1bmNhdGlvbiBhbmQg SSB0aGluayBwYWdlIHJlY2xhaW0gYXJlIHR5cGljYWwNCj4gZXhhbXBsZXMuDQoNCkkgc2VlLiBJ IHdpbGwgbW92ZSB0aGUgcmVhZF9iZWdpbiBpbnRvIHRoZSBsb29wIHRoZW4uIFRoYW5rcyENCg0K T2FrDQoNCj4gDQo+IC9UaG9tYXMNCj4gDQo+IA0KPiA+DQo+ID4gPiAvVGhvbWFzDQo+ID4gPg0K PiA+ID4NCj4gPiA+DQo+ID4gPiA+ICsJCWJyZWFrOw0KPiA+ID4gPiArCX0NCj4gPiA+ID4gKw0K PiA+ID4gPiArCWlmIChyZXQpDQo+ID4gPiA+ICsJCWdvdG8gZnJlZV9wZm5zOw0KPiA+ID4gPiAr DQo+ID4gPiA+ICsJcmV0ID0gYnVpbGRfc2codm0tPnhlLCBobW1fcmFuZ2UsICZ1c2VycHRyLT5z Z3QsIHdyaXRlKTsNCj4gPiA+ID4gKwlpZiAocmV0KQ0KPiA+ID4gPiArCQlnb3RvIGZyZWVfcGZu czsNCj4gPiA+ID4gKw0KPiA+ID4gPiArCW1hcmtfcmFuZ2VfYWNjZXNzZWQoaG1tX3JhbmdlLCB3 cml0ZSk7DQo+ID4gPiA+ICsJdXNlcnB0ci0+c2cgPSAmdXNlcnB0ci0+c2d0Ow0KPiA+ID4gPiAr CXVzZXJwdHItPm5vdGlmaWVyX3NlcSA9IGhtbV9yYW5nZS0+bm90aWZpZXJfc2VxOw0KPiA+ID4g PiArDQo+ID4gPiA+ICtmcmVlX3BmbnM6DQo+ID4gPiA+ICsJa3ZmcmVlKHBmbnMpOw0KPiA+ID4g PiArCXJldHVybiByZXQ7DQo+ID4gPiA+ICt9DQo+ID4gPiA+ICsNCj4gPiA+ID4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9obW0uaA0KPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2Ry bS94ZS94ZV9obW0uaA0KPiA+ID4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiBpbmRl eCAwMDAwMDAwMDAwMDAuLjk2MGYzZjZkMzZhZQ0KPiA+ID4gPiAtLS0gL2Rldi9udWxsDQo+ID4g PiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9obW0uaA0KPiA+ID4gPiBAQCAtMCwwICsx LDEyIEBADQo+ID4gPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUDQo+ID4gPiA+ ICsvKg0KPiA+ID4gPiArICogQ29weXJpZ2h0IMKpIDIwMjQgSW50ZWwgQ29ycG9yYXRpb24NCj4g PiA+ID4gKyAqLw0KPiA+ID4gPiArDQo+ID4gPiA+ICsjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4N Cj4gPiA+ID4gKyNpbmNsdWRlIDxsaW51eC9obW0uaD4NCj4gPiA+ID4gKyNpbmNsdWRlICJ4ZV92 bV90eXBlcy5oIg0KPiA+ID4gPiArI2luY2x1ZGUgInhlX3N2bS5oIg0KPiA+ID4gPiArDQo+ID4g PiA+ICtpbnQgeGVfaG1tX3BvcHVsYXRlX3JhbmdlKHN0cnVjdCB4ZV92bWEgKnZtYSwgc3RydWN0 IGhtbV9yYW5nZQ0KPiA+ID4gPiAqaG1tX3JhbmdlLA0KPiA+ID4gPiArCQkJCQkJYm9vbCB3cml0 ZSk7DQo+ID4NCg0K