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 kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 67C13C64EC4 for ; Wed, 15 Feb 2023 18:19:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8AE2E6B0078; Wed, 15 Feb 2023 13:19:37 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 85EE46B007B; Wed, 15 Feb 2023 13:19:37 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6FFBA6B007D; Wed, 15 Feb 2023 13:19:37 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 5D5666B0078 for ; Wed, 15 Feb 2023 13:19:37 -0500 (EST) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 148CEC0952 for ; Wed, 15 Feb 2023 18:19:37 +0000 (UTC) X-FDA: 80470339194.14.CB88E99 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by imf04.hostedemail.com (Postfix) with ESMTP id 9894140019 for ; Wed, 15 Feb 2023 18:19:33 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=af5KnsXG; spf=none (imf04.hostedemail.com: domain of thomas.hellstrom@linux.intel.com has no SPF policy when checking 192.55.52.88) smtp.mailfrom=thomas.hellstrom@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676485173; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=rhug9NPRA55wKkSPQN3b/MJZoZ++rIQqJGwyZOK/+U4=; b=EBtECBqu6y9tMJRpFk60U/9k73VSzQ68r1WBn0qvfRjTU/mbYEC78NuFE18uKA/64LQQX8 OGP3QtmknBDjzkLq33QQfqsd796jL5TIggUxjIZtkJn2HBdAJakGGDvfBW5gF4uEdoSfjB rx03MOEphlAlRFcjIVHSkNYUyYFpJPI= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=af5KnsXG; spf=none (imf04.hostedemail.com: domain of thomas.hellstrom@linux.intel.com has no SPF policy when checking 192.55.52.88) smtp.mailfrom=thomas.hellstrom@linux.intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676485173; a=rsa-sha256; cv=none; b=mY8DVFSGYuS7N3n36apEjzf81jN4ag8feLbloE09Me4fZmuAIlY3qRH+dYzkPgFitDVOqG r9wxQfvJ6NcC0NN9dkcUCXp8hdknt8qI5tlZBv9So61tekZuXVnbt4CefBZwx6CemoQ2s/ fyItottzarzG1nnr4miWaSDfQd113PE= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1676485173; x=1708021173; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=rhug9NPRA55wKkSPQN3b/MJZoZ++rIQqJGwyZOK/+U4=; b=af5KnsXGFkJtFREjjlvMLQncsvNNZZaEJ+otTy60jf2/SpWUdbXW49TP hrYE2jA2e/bJG/5zs1QbUOpPUjVO3j7dbA4Mcx21hj5fYvo+uo1ISORA2 AI+WqdWLaRHtqIeQn7BVpT0w6J9A/LkFZgXy31Uaz/UVbKAVttmmALrUC Nqrp4gLhOoZF67X10//+MCIOaB2G3TjYgM88/U8Iva3qB4sFgxUWGhN0s MDDw/DDTne8GKViWHgs8Op6U22yoBLcsy9xhPaULTyQFOOyLPZPeXzT1P 8Tg0F4zUKlMzAL4nqWz/IH9R+KLrHjnCBQ3DoexRS4LUuJRtUg2nDLZBQ Q==; X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="358928067" X-IronPort-AV: E=Sophos;i="5.97,300,1669104000"; d="scan'208";a="358928067" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2023 10:19:29 -0800 X-IronPort-AV: E=McAfee;i="6500,9779,10622"; a="647324154" X-IronPort-AV: E=Sophos;i="5.97,300,1669104000"; d="scan'208";a="647324154" Received: from auliel-mobl1.ger.corp.intel.com (HELO [10.249.254.14]) ([10.249.254.14]) by orsmga006-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 15 Feb 2023 10:19:25 -0800 Message-ID: <41da479cf98041ce5affb90ac5305628169f3e02.camel@linux.intel.com> Subject: Re: [RFC PATCH 04/16] drm/ttm, drm/vmwgfx: Update the TTM swapout interface From: Thomas =?ISO-8859-1?Q?Hellstr=F6m?= To: Christian =?ISO-8859-1?Q?K=F6nig?= , dri-devel@lists.freedesktop.org Cc: linux-graphics-maintainer@vmware.com, Andrew Morton , "Matthew Wilcox (Oracle)" , Miaohe Lin , David Hildenbrand , Johannes Weiner , Peter Xu , NeilBrown , Daniel Vetter , Dave Airlie , Dave Hansen , Matthew Auld , linux-mm@kvack.org, intel-gfx@lists.freedesktop.org Date: Wed, 15 Feb 2023 19:19:23 +0100 In-Reply-To: References: <20230215161405.187368-1-thomas.hellstrom@linux.intel.com> <20230215161405.187368-5-thomas.hellstrom@linux.intel.com> Organization: Intel Sweden AB, Registration Number: 556189-6027 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 (3.44.4-2.fc36) MIME-Version: 1.0 X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 9894140019 X-Rspam-User: X-Stat-Signature: ndf635bzkehsddn91aybyiwg1g9b7yyc X-HE-Tag: 1676485173-811122 X-HE-Meta: U2FsdGVkX19DhkKTzn5SVgfJs8cbPpfl8BROCySwk5ctx/dQZGYlIGxpfCDwgvPD+hWiShHPOS5jKHn9i4jnGC4UbjBZqW18BPf2kqKSgwuWCdYD99FnoqSRaDa2aoGpE1j/7XtH2Ecr/dBhAFklJ+jnakJpp74gaV3Q92RJJDm629qRxWGWFXT3uJlLZ/9ZMR65rd52QJ8VI90idd0s0zu9GL8xonuNMA5iydPvdCM5CyXEECA0F45LfEi/wLKrrFElU7PVu1GvzrQJ09UViU6hpro9Ag9r6pociq3/Z+D1466eva/gyUXFTmSnEAz0i6oSjs+Pj+7I1JiQ7FCD3B2i4vnCofIOieGIK+VdVAjvQVQ+38fNmZ+7imWgMvcwmTUpVo4lIe4LkGv8zJqjHjGje3PAWZSl4da2Dw2YT8+hK/UYR4mgo4ZpE2kA+x3D3ys91JWh/8eA8qhiYD6ASI3p4wh1de4oYd7CevjNy0ERYnMSNL9bU+9VHoWfEfq1XZk3XOCVstnFofbVsjTqYErHDTmPyaqrGqaQLQ3BvAZbcN04Pyo+3GlBm78MgLgS5MRRVN/6/vCKp8mk93zUV2DTPF3F2T1DYUX+SHBIskeYUboGTqRmglbpIl0oLraTZgy7/01lbJTlcDyHKrLLAqJOm0ZGzlXMRbdFTKGVXfZkWqje+Jd24iJF4wb+BRA07uQnLILxeDY+5Eg+eitNWboV/pf1FfCgH0mYp2kCdwrW+7Djdg9BBMa/MmK95jvjh2RptkWZtvRSWcCaVUn6Mrk3TscKerf3/g8zRZwWiXgasBM6pdry+LUpX/lresQuSWiNrFocDudLjMhsGa4/LHUzcXPyPQRSvBcLIV1/mL1dd5W5Ii9TbWbMBfH2UiUkawp/N6u4CL0sOwEwDGszbCzRK8nutcdOZjen6DKv763hz4Kt6tAAJIJIG7JimfR3jZkWFNR0Hk99DPDV8I2 WNL7xEP9 jE6StSUPvH50TDOpQ+OuR2JoWF44U70qOZbCT4xC8WWx5Oor9lvLC0aDAoBnfotXOOMAcJNwV+y/xrwQfk+dAoLa0evqIGoMrtlJgVZuIfbQG7/hPZoBdTGIKQeKSAneUEadAP+vDlrfNAfK3nnFIsD9fnUggTcuEeX/rbdYNtVUdw+xr1ff+MBZMZgFUlDb4cnJsB6AnwIxanwBQacanas5AcbEHVW8KS41tgBrZHgtn+oT24REN0NzFu3I+qLrquZAPCdE5d4EtRO3AKB7ZWAZG76ZRzlyl9cdiYlcDQYxAsVISJdduCHCEwbJYdaTniuSAOWmHOtGniur8DdIzCtqmaA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: T24gV2VkLCAyMDIzLTAyLTE1IGF0IDE4OjM5ICswMTAwLCBDaHJpc3RpYW4gS8O2bmlnIHdyb3Rl Ogo+IEFtIDE1LjAyLjIzIHVtIDE3OjEzIHNjaHJpZWIgVGhvbWFzIEhlbGxzdHLDtm06Cj4gPiBV cGRhdGUgdGhlIFRUTSBzd2Fwb3V0IGludGVyZmFjZXMgZm9yIGJldHRlciBjb21wYXRpYmlsaXR5 IHdpdGggYQo+ID4gc2hyaW5rZXIuCj4gPiAtIFJlcGxhY2UgbnVtYmVyLW9mLXBhZ2VzIGludCBy ZXR1cm4gd2l0aCBhIGxvbmcgdG8gYmV0dGVyIG1hdGNoCj4gPiB0aGUKPiA+IMKgwqAga2VybmVs J3Mgc2hyaW5rZXIgaW50ZXJmYWNlLgo+ID4gLSBUaGUgZ2ZwX2ZsYWdzIHBhcmFtZXRlciB0byB0 dG1feHhfc3dhcG91dCgpIGN1cnJlbnRseSBvbmx5IHRha2VzCj4gPiB0aGUKPiA+IMKgwqAgR0ZQ X0tFUk5FTCB2YWx1ZSBhbmQgc2hvdWxkbid0IHJlYWxseSBiZSBuZWVkZWQgc2luY2UgdGhlCj4g PiBzaHJpbmtlciB3ZQo+ID4gwqDCoCBob29rIHVwIGluIHVwY29taW5nIHBhdGNoZXMgc2V0cyBh IGFsbG9jYXRpb24gY29udGV4dCB0byBtYXRjaAo+ID4gcmVjbGFpbS4KPiAKPiA+IC0gSW50cm9k dWNlIGEgc2hyaW5rIHJlYXNvbiBlbnVtZXJhdGlvbiBhbmQgYSBkcml2ZXIgY2FsbGJhY2sgdG8K PiA+IHNocmluawo+ID4gwqDCoCBidWZmZXIgb2JqZWN0cy4KPiAKPiBJcyB0aGF0IHJlYWxseSBu ZWNlc3Nhcnk/IFRoaXMgaXMgbWlkLWxheWVyaW5nIG9uY2UgbW9yZS4KPiAKPiBJZiBkcml2ZXJz IHdhbnQgdG8gaW1wbGVtZW50IGRyaXZlciBzcGVjaWZpYyBzaHJpbmtpbmcgdGhleSBzaG91bGQg Cj4gcmVnaXN0ZXIgdGhlaXIgb3duIHNocmlua2VyIGNhbGxiYWNrLgoKWWVzLCBhIGNob2ljZSBu ZWVkcyB0byBiZSBtYWRlIGhlcmUuIElmIFRUTSByZWdpc3RlcnMgdGhlIHNocmlua2VyLCB0aGUK ZHJpdmVyIG5lZWRzIHRvIGJlIGNhbGxlZCBhdCBsZWFzdCB0byB1bmJpbmQgYW5kIHRvIHJlbW92 ZSBkbWEtCm1hcHBpbmdzLgoKSWYgdGhlIGRyaXZlciByZWdpc3RlcnMgdGhlIHNocmlua2VyIGl0 IGNhbiBzdGlsbCAoSSB0aGluaykgdXNlIHRoZQpwb29sIGhlbHBlcnMsIGJ1dCBuZWVkcyBUVE0g Zm9yIExSVSB0cmF2ZXJzYWwgYW5kIGFjY291bnRpbmcuCgpJIGNhbiBoYXZlIGEgbG9vayBhdCB0 aGUgbGF0dGVyIGlmIHlvdXQgdGhpbmsgdGhhdCB3aWxsIGJlIGEgYmV0dGVyCnNvbHV0aW9uLgoK L1Rob21hcwoKCj4gCj4gQ2hyaXN0aWFuLgo+IAo+IAo+ID4gwqDCoCBUaGUgVFRNX1NIUklOS19X QVRFUk1BUksgcmVhc29uIGlzIGdvaW5nIHRvIHN0aWxsIGJlIGhhbmRsZWQKPiA+IHVzaW5nIHRo ZQo+ID4gwqDCoCBleGlzdGluZyBzaG1lbSBjb3B5LCBhbmQgd2lsbCBiZSB1c2VkIGJ5IHBvb2wg dHlwZXMgdGhhdCBkb24ndAo+ID4gbGVuZAo+ID4gwqDCoCB0aGVtc2VsdmVzIHdlbGwgdG8gc2hp bmtpbmcgKGRtYV9hbGxvYyBwb29sKSBhbmQgd2hlbiBkcml2ZXJzCj4gPiBleHBsaWNpdGx5Cj4g PiDCoMKgIHJlcXVlc3RzIHN3YXBvdXQuCj4gPiDCoMKgIFRoZSBUVE1fU0hSSU5LX1NXQVAgYW5k IFRUTV9TSFJJTktfUFVSR0UgcmVhc29ucyBvcmlnaW5hdGUgZnJvbQo+ID4gYQo+ID4gwqDCoCBz aHJpbmtlciBhbmQgaXMgdG8gYmUgaGFuZGxlZCBieSBhIG5ldyBkcml2ZXIgY2FsbGJhY2ssCj4g PiBib19zaHJpbmsoKS4KPiA+IMKgwqAgSGVscGVycyBmb3IgdGhlIG5ldyBkcml2ZXIgY2FsbGJh Y2sgYXJlIHByb3ZpZGVkIGluIHVwY29taW5nCj4gPiBwYXRjaGVzLgo+ID4gCj4gPiBDYzogbGlu dXgtZ3JhcGhpY3MtbWFpbnRhaW5lckB2bXdhcmUuY29tCj4gPiBTaWduZWQtb2ZmLWJ5OiBUaG9t YXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+Cj4gPiAtLS0K PiA+IMKgIGRyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmPCoMKgwqDCoMKgwqDCoCB8IDM4ICsr KysrKysrKysrKysrKystLS0tCj4gPiDCoCBkcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9kZXZpY2Uu Y8KgwqDCoCB8IDU1ICsrKysrKysrKysrKysrKysrKysrKy0tLQo+ID4gLS0tLS0KPiA+IMKgIGRy aXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmPCoMKgwqDCoMKgwqDCoCB8IDIzICsrKysrKy0tLS0t LQo+ID4gwqAgZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMgfMKgIDMgKy0KPiA+ IMKgIGluY2x1ZGUvZHJtL3R0bS90dG1fYm8uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDQg Ky0tCj4gPiDCoCBpbmNsdWRlL2RybS90dG0vdHRtX2RldmljZS5owqDCoMKgwqDCoMKgwqAgfCAz NiArKysrKysrKysrKysrKysrKy0tCj4gPiDCoCBpbmNsdWRlL2RybS90dG0vdHRtX3R0LmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgMTcgKysrKysrKy0tCj4gPiDCoCA3IGZpbGVzIGNoYW5nZWQs IDEzNiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3R0bS90 dG1fYm8uYwo+ID4gaW5kZXggODgyYzJmYTM0NmYzLi5lNWMwOTcwNTY0YzAgMTAwNjQ0Cj4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vdHRtL3R0bV9iby5jCj4gPiBAQCAtMTExNCwxMyArMTExNCwyOSBAQCBpbnQgdHRtX2JvX3dh aXRfY3R4KHN0cnVjdAo+ID4gdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgdHRtX29wZXJh dGlvbl9jdHggKmN0eCkKPiA+IMKgIH0KPiA+IMKgIEVYUE9SVF9TWU1CT0wodHRtX2JvX3dhaXRf Y3R4KTsKPiA+IMKgIAo+ID4gLWludCB0dG1fYm9fc3dhcG91dChzdHJ1Y3QgdHRtX2J1ZmZlcl9v YmplY3QgKmJvLCBzdHJ1Y3QKPiA+IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsCj4gPiAtwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnZnBfdCBnZnBfZmxhZ3MpCj4gPiArLyoqCj4g PiArICogdHRtX2JvX3N3YXBvdXQoKSAtIFN3YXAgb3V0IG9yIHB1cmdlIGEgYnVmZmVyIG9iamVj dAo+ID4gKyAqIEBibzogVGhlIGJ1ZmZlciBvYmplY3QuCj4gPiArICogQGN0eDogVGhlIHR0bSBv cGVyYXRpb24gY29udGV4dC4KPiA+ICsgKiBAcmVhc29uOiBUaGUgc3dhcG91dCByZWFzb24uCj4g PiArICoKPiA+ICsgKiBUcnkgdG8gc3dhcCBvdXQgb3IgcHVyZ2UgdGhlIGNvbnRlbnRzIG9mIGEg c3lzdGVtIG1lbW9yeSBiYWNrZWQKPiA+IGJ1ZmZlcgo+ID4gKyAqIG9iamVjdC4gVGhlIGZ1bmN0 aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHRoZSBkZXZpY2UncyBMUlUKPiA+IGxvY2sgaGVs ZC4KPiA+ICsgKgo+ID4gKyAqIFJldHVybjogLUVCVVNZIGlmIHRoZSBibyBsb2NrIGNvdWxkIG5v dCBiZSBncmFiYmVkIG9yIHRoZQo+ID4gb2JqZWN0IHdhcwo+ID4gKyAqIG90aGVyd2lzZSBidXN5 LiBPdGhlcndpc2UgdGhlIG51bWJlciBvZiBwYWdlcyBzd2FwcGVkIG91dCBvcgo+ID4gbmVnYXRp dmUKPiA+ICsgKiBlcnJvciBjb2RlIG9uIGVycm9yLiBJZmYgdGhlIGZ1bmN0aW9uIGRpZG4ndCBy ZXR1cm4gLUVCVVNZLCB0aGUKPiA+ICsgKiBMUlUgbG9jayB3YXMgZHJvcHBlZCwgYW5kIExSVSB0 cmF2ZXJzYWwgbmVlZHMgdG8gcmVzdGFydC4KPiA+ICsgKi8KPiA+ICtsb25nIHR0bV9ib19zd2Fw b3V0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdAo+ID4gdHRtX29wZXJhdGlv bl9jdHggKmN0eCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51 bSB0dG1fc2hyaW5rX3JlYXNvbiByZWFzb24pCj4gPiDCoCB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg c3RydWN0IHR0bV9wbGFjZSBwbGFjZTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBib29sIGxvY2tlZDsK PiA+IMKgwqDCoMKgwqDCoMKgwqBsb25nIHJldDsKPiA+IMKgIAo+ID4gK8KgwqDCoMKgwqDCoMKg bG9ja2RlcF9hc3NlcnRfaGVsZCgmYm8tPmJkZXYtPmxydV9sb2NrKTsKPiA+ICsKPiA+IMKgwqDC oMKgwqDCoMKgwqAvKgo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIFdoaWxlIHRoZSBibyBtYXkgYWxy ZWFkeSByZXNpZGUgaW4gU1lTVEVNIHBsYWNlbWVudCwgc2V0Cj4gPiDCoMKgwqDCoMKgwqDCoMKg ICogU1lTVEVNIGFzIG5ldyBwbGFjZW1lbnQgdG8gY292ZXIgYWxzbyB0aGUgbW92ZSBmdXJ0aGVy Cj4gPiBiZWxvdy4KPiA+IEBAIC0xMTQyLDggKzExNTgsMTIgQEAgaW50IHR0bV9ib19zd2Fwb3V0 KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdAo+ID4gKmJvLCBzdHJ1Y3QgdHRtX29wZXJhdGlvbl9j dHggKmN0eCwKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoCAKPiA+IMKgwqDCoMKgwqDCoMKg wqBpZiAoYm8tPmRlbGV0ZWQpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBs b25nIG51bV9wYWdlcyA9IGJvLT50dG0tPm51bV9wYWdlczsKPiA+ICsKPiA+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gdHRtX2JvX2NsZWFudXBfcmVmcyhibywgZmFsc2Us IGZhbHNlLAo+ID4gbG9ja2VkKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg dHRtX2JvX3B1dChibyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKCFy ZXQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBudW1fcGFnZXM7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVy biByZXQgPT0gLUVCVVNZID8gLUVOT1NQQyA6IHJldDsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4g PiDCoCAKPiA+IEBAIC0xMTg0LDEzICsxMjA0LDE3IEBAIGludCB0dG1fYm9fc3dhcG91dChzdHJ1 Y3QgdHRtX2J1ZmZlcl9vYmplY3QKPiA+ICpibywgc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpj dHgsCj4gPiDCoMKgwqDCoMKgwqDCoMKgICogU3dhcCBvdXQuIEJ1ZmZlciB3aWxsIGJlIHN3YXBw ZWQgaW4gYWdhaW4gYXMgc29vbiBhcwo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIGFueW9uZSB0cmll cyB0byBhY2Nlc3MgYSB0dG0gcGFnZS4KPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+IC3CoMKg wqDCoMKgwqDCoGlmIChiby0+YmRldi0+ZnVuY3MtPnN3YXBfbm90aWZ5KQo+ID4gLcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvLT5iZGV2LT5mdW5jcy0+c3dhcF9ub3RpZnkoYm8pOwo+ ID4gK8KgwqDCoMKgwqDCoMKgaWYgKGJvLT5iZGV2LT5mdW5jcy0+Ym9fc2hyaW5rICYmIHJlYXNv biAhPQo+ID4gVFRNX1NIUklOS19XQVRFUk1BUkspIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXQgPSBiby0+YmRldi0+ZnVuY3MtPmJvX3NocmluayhibywgY3R4KTsKPiA+ ICvCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgaWYgKGJvLT5iZGV2LT5mdW5jcy0+c3dhcF9ub3RpZnkpCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJvLT5iZGV2LT5mdW5jcy0+c3dhcF9ub3Rp ZnkoYm8pOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHR0bV90dF9z d2Fwb3V0KGJvLT5iZGV2LCBiby0+dHRtKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZiAoIXJldCkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0ID0gYm8tPnR0bS0+bnVtX3BhZ2VzOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ ID4gwqAgCj4gPiAtwqDCoMKgwqDCoMKgwqBpZiAodHRtX3R0X2lzX3BvcHVsYXRlZChiby0+dHRt KSkKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSB0dG1fdHRfc3dhcG91 dChiby0+YmRldiwgYm8tPnR0bSwgZ2ZwX2ZsYWdzKTsKPiA+IMKgIG91dDoKPiA+IC0KPiA+IMKg wqDCoMKgwqDCoMKgwqAvKgo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqIFVucmVzZXJ2ZSB3aXRob3V0 IHB1dHRpbmcgb24gTFJVIHRvIGF2b2lkIHN3YXBwaW5nIG91dAo+ID4gYW4KPiA+IMKgwqDCoMKg wqDCoMKgwqAgKiBhbHJlYWR5IHN3YXBwZWQgYnVmZmVyLgo+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS90dG0vdHRtX2RldmljZS5jCj4gPiBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRt X2RldmljZS5jCj4gPiBpbmRleCBhZTJmMTlkYzlmODEuLjdlYWRlYTA3MDI3ZiAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2RldmljZS5jCj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vdHRtL3R0bV9kZXZpY2UuYwo+ID4gQEAgLTExNiwxOSArMTE2LDI4IEBAIHN0YXRp YyBpbnQgdHRtX2dsb2JhbF9pbml0KHZvaWQpCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIHJl dDsKPiA+IMKgIH0KPiA+IMKgIAo+ID4gLS8qCj4gPiAtICogQSBidWZmZXIgb2JqZWN0IHNocmlu ayBtZXRob2QgdGhhdCB0cmllcyB0byBzd2FwIG91dCB0aGUgZmlyc3QKPiA+IC0gKiBidWZmZXIg b2JqZWN0IG9uIHRoZSBnbG9iYWw6OnN3YXBfbHJ1IGxpc3QuCj4gPiArLyoqCj4gPiArICogdHRt X2dsb2JhbF9zd2Fwb3V0KCkgLSBTZWxlY3QgYW5kIHN3YXAgb3V0IGEgc3lzdGVtLW1lbW9yeS0K PiA+IGJhY2tlZCBiby4KPiA+ICsgKiBAY3R4OiBUaGUgb3BlcmF0aW9uIGNvbnRleHQuCj4gPiAr ICogQHJlYXNvbjogVGhlIHJlYXNvbiBmb3Igc3dhcG91dC4KPiA+ICsgKgo+ID4gKyAqIFNlbGVj dCwgYmFzZWQgb24gcm91bmQtcm9iaW4gYSBUVE0gZGV2aWNlIGFuZCB0cmF2ZXJzZSB0aGUgTFJV cwo+ID4gb2YKPiA+ICsgKiB0aGF0IHNwZWNpZmljIGRldmljZSB1bnRpbCBhIHN1aXRhYmxlIGJv IGJhY2tlZCBieSBzeXN0ZW0KPiA+IG1lbW9yeSBpcyBmb3VuZAo+ID4gKyAqIGFuZCBzd2FwcGVk LW91dCBvciBwdXJnZWQuCj4gPiArICoKPiA+ICsgKiBSZXR1cm46IFBvc2l0aXZlIHZhbHVlIG9y IHplcm8gaW5kaWNhdGluZyB0aGUgc2l6ZSBpbiBwYWdlcyBvZgo+ID4gdGhlCj4gPiArICogYm8g c3dhcHBlZCBvdXQuIE5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZXJyb3IuCj4gPiDCoMKgICovCj4g PiAtaW50IHR0bV9nbG9iYWxfc3dhcG91dChzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCwg Z2ZwX3QKPiA+IGdmcF9mbGFncykKPiA+ICtsb25nIHR0bV9nbG9iYWxfc3dhcG91dChzdHJ1Y3Qg dHRtX29wZXJhdGlvbl9jdHggKmN0eCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZW51bSB0dG1fc2hyaW5rX3JlYXNvbiByZWFzb24pCj4gPiDCoCB7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR0bV9nbG9iYWwgKmdsb2IgPSAmdHRtX2dsb2I7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHR0bV9kZXZpY2UgKmJkZXY7Cj4gPiAtwqDCoMKg wqDCoMKgwqBpbnQgcmV0ID0gMDsKPiA+ICvCoMKgwqDCoMKgwqDCoGxvbmcgcmV0ID0gMDsKPiA+ IMKgIAo+ID4gwqDCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJnR0bV9nbG9iYWxfbXV0ZXgpOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoGxpc3RfZm9yX2VhY2hfZW50cnkoYmRldiwgJmdsb2ItPmRldmlj ZV9saXN0LCBkZXZpY2VfbGlzdCkKPiA+IHsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqByZXQgPSB0dG1fZGV2aWNlX3N3YXBvdXQoYmRldiwgY3R4LCBnZnBfZmxhZ3MpOwo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHR0bV9kZXZpY2Vfc3dhcG91dChi ZGV2LCBjdHgsIHJlYXNvbik7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChyZXQgPiAwKSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBsaXN0X21vdmVfdGFpbCgmYmRldi0+ZGV2aWNlX2xpc3QsICZnbG9iLQo+ID4gPmRl dmljZV9saXN0KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGJyZWFrOwo+ID4gQEAgLTEzOSwxNCArMTQ4LDI5IEBAIGludCB0dG1fZ2xvYmFsX3N3 YXBvdXQoc3RydWN0Cj4gPiB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LCBnZnBfdCBnZnBfZmxhZ3Mp Cj4gPiDCoCB9Cj4gPiDCoCBFWFBPUlRfU1lNQk9MKHR0bV9nbG9iYWxfc3dhcG91dCk7Cj4gPiDC oCAKPiA+IC1pbnQgdHRtX2RldmljZV9zd2Fwb3V0KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBz dHJ1Y3QKPiA+IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdmcF90IGdmcF9mbGFncykKPiA+ICsvKioKPiA+ICsg KiB0dG1fZGV2aWNlX3N3YXBvdXQoKSAtIFNlbGVjdCBhbmQgc3dhcCBvdXQgYSBzeXN0ZW0tbWVt b3J5LQo+ID4gYmFja2VkIGJvLgo+ID4gKyAqIEBiZGV2OiBUaGUgZGV2aWNlIHdob3MgYm9zIGFy ZSBjb25zaWRlcmVkIGZvciBzd2Fwb3V0Lgo+ID4gKyAqIEBjdHg6IFRoZSBvcGVyYXRpb24gY29u dGV4dC4KPiA+ICsgKiBAcmVhc29uOiBUaGUgcmVhc29uIGZvciBzd2Fwb3V0Lgo+ID4gKyAqCj4g PiArICogVHJhdmVyc2UgdGhlIExSVXMgb2YgYSBzcGVjaWZpYyBkZXZpY2UgdW50aWwgYSBzdWl0 YWJsZSBibwo+ID4gYmFja2VkIGJ5Cj4gPiArICogc3lzdGVtIG1lbW9yeSBpcyBmb3VuZCBhbmQg c3dhcHBlZC1vdXQgb3IgcHVyZ2VkLgo+ID4gKyAqCj4gPiArICogUmV0dXJuOiBQb3NpdGl2ZSB2 YWx1ZSBvciB6ZXJvIGluZGljYXRpbmcgdGhlIHNpemUgaW4gcGFnZXMgb2YKPiA+IHRoZQo+ID4g KyAqIGJvIHN3YXBwZWQgb3V0LiBOZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGVycm9yLgo+ID4gKyAq Lwo+ID4gK2xvbmcgdHRtX2RldmljZV9zd2Fwb3V0KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBz dHJ1Y3QKPiA+IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVudW0gdHRtX3Nocmlua19yZWFzb24gcmVhc29u KQo+ID4gwqAgewo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0dG1fcmVzb3VyY2VfY3Vyc29y IGN1cnNvcjsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIg Km1hbjsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHRtX3Jlc291cmNlICpyZXM7Cj4gPiDC oMKgwqDCoMKgwqDCoMKgdW5zaWduZWQgaTsKPiA+IC3CoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4g PiArwqDCoMKgwqDCoMKgwqBsb25nIHJldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChy ZWFzb24gIT0gVFRNX1NIUklOS19XQVRFUk1BUksgJiYgIWJkZXYtPmZ1bmNzLQo+ID4gPmJvX3No cmluaykKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+IMKg IAo+ID4gwqDCoMKgwqDCoMKgwqDCoHNwaW5fbG9jaygmYmRldi0+bHJ1X2xvY2spOwo+ID4gwqDC oMKgwqDCoMKgwqDCoGZvciAoaSA9IFRUTV9QTF9TWVNURU07IGkgPCBUVE1fTlVNX01FTV9UWVBF UzsgKytpKSB7Cj4gPiBAQCAtMTU2LDE2ICsxODAsMTkgQEAgaW50IHR0bV9kZXZpY2Vfc3dhcG91 dChzdHJ1Y3QgdHRtX2RldmljZQo+ID4gKmJkZXYsIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAq Y3R4LAo+ID4gwqAgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHR0bV9yZXNv dXJjZV9tYW5hZ2VyX2Zvcl9lYWNoX3JlcyhtYW4sICZjdXJzb3IsCj4gPiByZXMpIHsKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0dG1f YnVmZmVyX29iamVjdCAqYm8gPSByZXMtPmJvOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1aW50MzJfdCBudW1fcGFnZXM7Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB0dG1fdHQgKnR0Owo+ ID4gwqAgCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZiAoIWJvIHx8IGJvLT5yZXNvdXJjZSAhPSByZXMpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7Cj4g PiDCoCAKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg bnVtX3BhZ2VzID0gUEZOX1VQKGJvLT5iYXNlLnNpemUpOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSB0dG1fYm9fc3dhcG91dChibywgY3R4 LCBnZnBfZmxhZ3MpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB0dCA9IGJvLT50dG07Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlmICghdHQgfHwgKHJlYXNvbiA9PSBUVE1fU0hSSU5LX1BVUkdFICYm Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgIXR0bV90dF9wdXJnZWFibGUodHQpKSkKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRp bnVlOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXQgPSB0dG1fYm9fc3dhcG91dChibywgY3R4LCByZWFzb24pOwo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgLyogdHRtX2JvX3N3YXBvdXQgaGFzIGRy b3BwZWQgdGhlIGxydV9sb2NrCj4gPiAqLwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoIXJldCkKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBudW1fcGFnZXM7 Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChy ZXQgPj0gMCkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0ICE9IC1FQlVTWSkKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBy ZXR1cm4gcmV0Owo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3R0bS90dG1fdHQuYwo+ID4gYi9kcml2ZXJzL2dwdS9k cm0vdHRtL3R0bV90dC5jCj4gPiBpbmRleCBhYjcyNWQ5ZDE0YTYuLmE2OGMxNGRlMDE2MSAxMDA2 NDQKPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS90dG0vdHRtX3R0LmMKPiA+IEBAIC0yMzksMjIgKzIzOSwyMSBAQCBpbnQgdHRt X3R0X3N3YXBpbihzdHJ1Y3QgdHRtX3R0ICp0dG0pCj4gPiDCoCAKPiA+IMKgIC8qKgo+ID4gwqDC oCAqIHR0bV90dF9zd2Fwb3V0IC0gc3dhcCBvdXQgdHQgb2JqZWN0Cj4gPiAtICoKPiA+IMKgwqAg KiBAYmRldjogVFRNIGRldmljZSBzdHJ1Y3R1cmUuCj4gPiDCoMKgICogQHR0bTogVGhlIHN0cnVj dCB0dG1fdHQuCj4gPiAtICogQGdmcF9mbGFnczogRmxhZ3MgdG8gdXNlIGZvciBtZW1vcnkgYWxs b2NhdGlvbi4KPiA+IMKgwqAgKgo+ID4gLSAqIFN3YXBvdXQgYSBUVCBvYmplY3QgdG8gYSBzaG1l bV9maWxlLCByZXR1cm4gbnVtYmVyIG9mIHBhZ2VzCj4gPiBzd2FwcGVkIG91dCBvcgo+ID4gLSAq IG5lZ2F0aXZlIGVycm9yIGNvZGUuCj4gPiArICogU3dhcG91dCBhIFRUIG9iamVjdCB0byBhIHNo bWVtX2ZpbGUuCj4gPiArICoKPiA+ICsgKiBSZXR1cm46IG51bWJlciBvZiBwYWdlcyBzd2FwcGVk IG91dCBvciBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uCj4gPiBlcnJvci4KPiA+IMKgwqAgKi8KPiA+ IC1pbnQgdHRtX3R0X3N3YXBvdXQoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1f dHQgKnR0bSwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdmcF90IGdm cF9mbGFncykKPiA+ICtpbnQgdHRtX3R0X3N3YXBvdXQoc3RydWN0IHR0bV9kZXZpY2UgKmJkZXYs IHN0cnVjdCB0dG1fdHQgKnR0bSkKPiA+IMKgIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqBsb2ZmX3Qg c2l6ZSA9IChsb2ZmX3QpdHRtLT5udW1fcGFnZXMgPDwgUEFHRV9TSElGVDsKPiA+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqc3dhcF9zcGFjZTsKPiA+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgZmlsZSAqc3dhcF9zdG9yYWdlOwo+ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVj dCBwYWdlICpmcm9tX3BhZ2U7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHBhZ2UgKnRvX3Bh Z2U7Cj4gPiArwqDCoMKgwqDCoMKgwqBnZnBfdCBnZnBfZmxhZ3M7Cj4gPiDCoMKgwqDCoMKgwqDC oMKgaW50IGksIHJldDsKPiA+IMKgIAo+ID4gwqDCoMKgwqDCoMKgwqDCoHN3YXBfc3RvcmFnZSA9 IHNobWVtX2ZpbGVfc2V0dXAoInR0bSBzd2FwIiwgc2l6ZSwgMCk7Cj4gPiBAQCAtMjY0LDcgKzI2 Myw3IEBAIGludCB0dG1fdHRfc3dhcG91dChzdHJ1Y3QgdHRtX2RldmljZSAqYmRldiwKPiA+IHN0 cnVjdCB0dG1fdHQgKnR0bSwKPiA+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiDCoCAKPiA+IMKgwqDC oMKgwqDCoMKgwqBzd2FwX3NwYWNlID0gc3dhcF9zdG9yYWdlLT5mX21hcHBpbmc7Cj4gPiAtwqDC oMKgwqDCoMKgwqBnZnBfZmxhZ3MgJj0gbWFwcGluZ19nZnBfbWFzayhzd2FwX3NwYWNlKTsKPiA+ ICvCoMKgwqDCoMKgwqDCoGdmcF9mbGFncyA9IEdGUF9LRVJORUwgJiBtYXBwaW5nX2dmcF9tYXNr KHN3YXBfc3BhY2UpOwo+ID4gwqAgCj4gPiDCoMKgwqDCoMKgwqDCoMKgZm9yIChpID0gMDsgaSA8 IHR0bS0+bnVtX3BhZ2VzOyArK2kpIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZnJvbV9wYWdlID0gdHRtLT5wYWdlc1tpXTsKPiA+IEBAIC0zMTUsMTIgKzMxNCwxNCBAQCBp bnQgdHRtX3R0X3BvcHVsYXRlKHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LAo+ID4gwqDCoMKgwqDC oMKgwqDCoHdoaWxlIChhdG9taWNfbG9uZ19yZWFkKCZ0dG1fcGFnZXNfYWxsb2NhdGVkKSA+Cj4g PiB0dG1fcGFnZXNfbGltaXQgfHwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXRv bWljX2xvbmdfcmVhZCgmdHRtX2RtYTMyX3BhZ2VzX2FsbG9jYXRlZCkgPgo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB0dG1fZG1hMzJfcGFnZXNfbGltaXQpIHsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsb25nIHIgPSB0dG1fZ2xvYmFsX3N3YXBvdXQoY3R4LAo+ ID4gVFRNX1NIUklOS19XQVRFUk1BUkspOwo+ID4gwqAgCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcmV0ID0gdHRtX2dsb2JhbF9zd2Fwb3V0KGN0eCwgR0ZQX0tFUk5FTCk7Cj4g PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCA9PSAwKQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghcikKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJyZWFrOwo+ID4gLcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmIChyZXQgPCAwKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChyIDwgMCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqByZXQgPSByOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZ290byBlcnJvcjsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqB9Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfQo+ID4gwqAgCj4gPiDCoMKgwqDCoMKgwqDCoMKg aWYgKGJkZXYtPmZ1bmNzLT50dG1fdHRfcG9wdWxhdGUpCj4gPiBAQCAtMzc5LDcgKzM4MCw3IEBA IHN0YXRpYyBpbnQgdHRtX3R0X2RlYnVnZnNfc2hyaW5rX3Nob3coc3RydWN0Cj4gPiBzZXFfZmls ZSAqbSwgdm9pZCAqZGF0YSkKPiA+IMKgIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdHRt X29wZXJhdGlvbl9jdHggY3R4ID0geyBmYWxzZSwgZmFsc2UgfTsKPiA+IMKgIAo+ID4gLcKgwqDC oMKgwqDCoMKgc2VxX3ByaW50ZihtLCAiJWRcbiIsIHR0bV9nbG9iYWxfc3dhcG91dCgmY3R4LAo+ ID4gR0ZQX0tFUk5FTCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgc2VxX3ByaW50ZihtLCAiJWxkXG4i LCB0dG1fZ2xvYmFsX3N3YXBvdXQoJmN0eCwKPiA+IFRUTV9TSFJJTktfU1dBUCkpOwo+ID4gwqDC oMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gwqAgfQo+ID4gwqAgREVGSU5FX1NIT1dfQVRUUklC VVRFKHR0bV90dF9kZWJ1Z2ZzX3Nocmluayk7Cj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdn ZnhfZHJ2LmMKPiA+IGluZGV4IDI1ODg2MTVhMmEzOC4uMjkyYzUxOTlkMmNjIDEwMDY0NAo+ID4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL3Ztd2dmeC92bXdnZnhfZHJ2LmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS92bXdnZngvdm13Z2Z4X2Rydi5jCj4gPiBAQCAtMTUxNCw3ICsxNTE0LDggQEAg c3RhdGljIGludCB2bXdfcG1fZnJlZXplKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gPiDCoMKgwqDC oMKgwqDCoMKgdm13X2V4ZWNidWZfcmVsZWFzZV9waW5uZWRfYm8oZGV2X3ByaXYpOwo+ID4gwqDC oMKgwqDCoMKgwqDCoHZtd19yZXNvdXJjZV9ldmljdF9hbGwoZGV2X3ByaXYpOwo+ID4gwqDCoMKg wqDCoMKgwqDCoHZtd19yZWxlYXNlX2RldmljZV9lYXJseShkZXZfcHJpdik7Cj4gPiAtwqDCoMKg wqDCoMKgwqB3aGlsZSAodHRtX2RldmljZV9zd2Fwb3V0KCZkZXZfcHJpdi0+YmRldiwgJmN0eCwK PiA+IEdGUF9LRVJORUwpID4gMCk7Cj4gPiArwqDCoMKgwqDCoMKgwqB3aGlsZSAodHRtX2Rldmlj ZV9zd2Fwb3V0KCZkZXZfcHJpdi0+YmRldiwgJmN0eCwKPiA+IFRUTV9TSFJJTktfV0FURVJNQVJL KSA+IDApCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgOwo+ID4gwqDCoMKgwqDC oMKgwqDCoHZtd19maWZvX3Jlc291cmNlX2RlYyhkZXZfcHJpdik7Cj4gPiDCoMKgwqDCoMKgwqDC oMKgaWYgKGF0b21pY19yZWFkKCZkZXZfcHJpdi0+bnVtX2ZpZm9fcmVzb3VyY2VzKSAhPSAwKSB7 Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoERSTV9FUlJPUigiQ2FuJ3QgaGli ZXJuYXRlIHdoaWxlIDNEIHJlc291cmNlcyBhcmUKPiA+IGFjdGl2ZS5cbiIpOwo+ID4gZGlmZiAt LWdpdCBhL2luY2x1ZGUvZHJtL3R0bS90dG1fYm8uaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm8u aAo+ID4gaW5kZXggOGIxMTNjMzg0MjM2Li42YjQ1ZTBiNjM5ZTAgMTAwNjQ0Cj4gPiAtLS0gYS9p bmNsdWRlL2RybS90dG0vdHRtX2JvLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fYm8u aAo+ID4gQEAgLTM3NSw4ICszNzUsOCBAQCB2b2lkIHR0bV9ib19rdW5tYXAoc3RydWN0IHR0bV9i b19rbWFwX29iago+ID4gKm1hcCk7Cj4gPiDCoCBpbnQgdHRtX2JvX3ZtYXAoc3RydWN0IHR0bV9i dWZmZXJfb2JqZWN0ICpibywgc3RydWN0IGlvc3lzX21hcAo+ID4gKm1hcCk7Cj4gPiDCoCB2b2lk IHR0bV9ib192dW5tYXAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IGlvc3lz X21hcAo+ID4gKm1hcCk7Cj4gPiDCoCBpbnQgdHRtX2JvX21tYXBfb2JqKHN0cnVjdCB2bV9hcmVh X3N0cnVjdCAqdm1hLCBzdHJ1Y3QKPiA+IHR0bV9idWZmZXJfb2JqZWN0ICpibyk7Cj4gPiAtaW50 IHR0bV9ib19zd2Fwb3V0KHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdAo+ID4g dHRtX29wZXJhdGlvbl9jdHggKmN0eCwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGdmcF90IGdmcF9mbGFncyk7Cj4gPiArbG9uZyB0dG1fYm9fc3dhcG91dChzdHJ1Y3Qg dHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QKPiA+IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgs Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gdHRtX3Nocmlu a19yZWFzb24gcmVhc29uKTsKPiA+IMKgIHZvaWQgdHRtX2JvX3BpbihzdHJ1Y3QgdHRtX2J1ZmZl cl9vYmplY3QgKmJvKTsKPiA+IMKgIHZvaWQgdHRtX2JvX3VucGluKHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdCAqYm8pOwo+ID4gwqAgaW50IHR0bV9tZW1fZXZpY3RfZmlyc3Qoc3RydWN0IHR0bV9k ZXZpY2UgKmJkZXYsCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9kZXZpY2Uu aAo+ID4gYi9pbmNsdWRlL2RybS90dG0vdHRtX2RldmljZS5oCj4gPiBpbmRleCA0ZjNlODFlYWM2 ZjMuLjZiZDJhYmY3MTJhYiAxMDA2NDQKPiA+IC0tLSBhL2luY2x1ZGUvZHJtL3R0bS90dG1fZGV2 aWNlLmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fZGV2aWNlLmgKPiA+IEBAIC0zNSw2 ICszNSwyMSBAQCBzdHJ1Y3QgdHRtX3BsYWNlbWVudDsKPiA+IMKgIHN0cnVjdCB0dG1fYnVmZmVy X29iamVjdDsKPiA+IMKgIHN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eDsKPiA+IMKgIAo+ID4gKy8q Kgo+ID4gKyAqIGVudW0gdHRtX3Nocmlua19yZWFzb24gLSBSZWFzb24gZm9yIHNocmlua2luZyBz eXN0ZW0gbWVtb3J5Cj4gPiArICogQFRUTV9TSFJJTktfV0FURVJNQVJLIC0gQSB3YXRlcm1hcmsg bGltaXQgd2FzIHJlYWNoZWQuIE5vdCBmcm9tCj4gPiByZWNsYWltLgo+ID4gKyAqIEBUVE1fU0hS SU5LX1BVUkdFIC0gQSByZXF1ZXN0IGZvciBzaHJpbmtpbmcgb25seSBwdXJnZWQKPiA+IG9iamVj dHMuCj4gPiArICogQFRUTV9TSFJJTktfU1dBUCAtIEEgcmVxdWVzdCBmb3Igc2hyaW5raW5nIGFu eSBvYmplY3QuCj4gPiArICoKPiA+ICsgKiBUaGlzIGVudW0gaXMgaW50ZW5kZWQgZm9yIHRoZSBi dWZmZXIgb2JqZWN0LSBhbmQgc2hyaW5rIG1ldGhvZAo+ID4gc2VsZWN0aW9uCj4gPiArICogYWxn b3JpdGhtcy4gSXQncyBub3QgaW50ZW5kZWQgdG8gbGVhayB0byBvciBiZSB1c2VkIGJ5IFRUTQo+ ID4gZHJpdmVycy4KPiA+ICsgKi8KPiA+ICtlbnVtIHR0bV9zaHJpbmtfcmVhc29uIHsKPiA+ICvC oMKgwqDCoMKgwqDCoFRUTV9TSFJJTktfV0FURVJNQVJLLAo+ID4gK8KgwqDCoMKgwqDCoMKgVFRN X1NIUklOS19QVVJHRSwKPiA+ICvCoMKgwqDCoMKgwqDCoFRUTV9TSFJJTktfU1dBUCwKPiA+ICt9 Owo+ID4gKwo+ID4gwqAgLyoqCj4gPiDCoMKgICogc3RydWN0IHR0bV9nbG9iYWwgLSBCdWZmZXIg b2JqZWN0IGRyaXZlciBnbG9iYWwgZGF0YS4KPiA+IMKgwqAgKi8KPiA+IEBAIC0yMDcsNiArMjIy LDE5IEBAIHN0cnVjdCB0dG1fZGV2aWNlX2Z1bmNzIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqAgKiBh ZGRpbmcgZmVuY2VzIHRoYXQgbWF5IGZvcmNlIGEgZGVsYXllZCBkZWxldGUKPiA+IMKgwqDCoMKg wqDCoMKgwqAgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqB2b2lkICgqcmVsZWFzZV9ub3RpZnkpKHN0 cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8pOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgLyoq Cj4gPiArwqDCoMKgwqDCoMKgwqAgKiBTaHJpbmsgdGhlIGJvJ3Mgc3lzdGVtIHBhZ2VzLCBFaXRo ZXIgYnkgc3dhcHBpbmcgb3IgYnkKPiA+IHB1cmdpbmcuCj4gPiArwqDCoMKgwqDCoMKgwqAgKiBA Ym86IEJvIHRoZSBzeXN0ZW0gcGFnZXMgb2Ygd2hpY2ggYXJlIHRvIGJlIHNocnVua2VuLgo+ID4g K8KgwqDCoMKgwqDCoMKgICogQGN0eDogT3BlcmF0aW9uIGN0eC4gSW4gcGFydGljdWxhciB0aGUg ZHJpdmVyIGNhbGxiYWNrCj4gPiBzaG91bGQKPiA+ICvCoMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDC oMKgIGFkaGVyZSB0byB0aGUgbm9fd2FpdF9ncHUgYW5kIGludGVycnVwdGlibGUKPiA+IGZpZWxk cy4KPiA+ICvCoMKgwqDCoMKgwqDCoCAqCj4gPiArwqDCoMKgwqDCoMKgwqAgKiBUaGlzIGlzIGFs c28gbm90aWZ5aW5nIHRoZSBkcml2ZXIgdGhhdCB0aGUgYm8gaXMgYWJvdXQKPiA+IHRvIGJlCj4g PiArwqDCoMKgwqDCoMKgwqAgKiBzaHJ1bmtlbiBhbmQgdGhlIGRyaXZlciBzaG91bGQgdGFrZSBj YXJlIHRvIHVuYmluZCBhbnkKPiA+IEdQVSBiaW5kaW5ncwo+ID4gK8KgwqDCoMKgwqDCoMKgICog YW5kIHRvIG5vdGUgdGhhdCB0aGUgY29udGVudCBpcyBwdXJnZWQgaWYgQGJvLT50dG0gaXMKPiA+ IHB1cmdlYWJsZS4KPiA+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgbG9u ZyAoKmJvX3Nocmluaykoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHR0bV9vcGVy YXRpb25fY3R4ICpjdHgpOwo+ID4gwqAgfTsKPiA+IMKgIAo+ID4gwqAgLyoqCj4gPiBAQCAtMjY4 LDkgKzI5NiwxMSBAQCBzdHJ1Y3QgdHRtX2RldmljZSB7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHdvcmtxdWV1ZV9zdHJ1Y3QgKndxOwo+ID4gwqAgfTsKPiA+IMKgIAo+ID4gLWludCB0dG1f Z2xvYmFsX3N3YXBvdXQoc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4ICpjdHgsIGdmcF90Cj4gPiBn ZnBfZmxhZ3MpOwo+ID4gLWludCB0dG1fZGV2aWNlX3N3YXBvdXQoc3RydWN0IHR0bV9kZXZpY2Ug KmJkZXYsIHN0cnVjdAo+ID4gdHRtX29wZXJhdGlvbl9jdHggKmN0eCwKPiA+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2ZwX3QgZ2ZwX2ZsYWdzKTsKPiA+ICts b25nIHR0bV9nbG9iYWxfc3dhcG91dChzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggKmN0eCwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZW51bSB0dG1f c2hyaW5rX3JlYXNvbiByZWFzb24pOwo+ID4gKwo+ID4gK2xvbmcgdHRtX2RldmljZV9zd2Fwb3V0 KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QKPiA+IHR0bV9vcGVyYXRpb25fY3R4ICpj dHgsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVu dW0gdHRtX3Nocmlua19yZWFzb24gcmVhc29uKTsKPiA+IMKgIAo+ID4gwqAgc3RhdGljIGlubGlu ZSBzdHJ1Y3QgdHRtX3Jlc291cmNlX21hbmFnZXIgKgo+ID4gwqAgdHRtX21hbmFnZXJfdHlwZShz dHJ1Y3QgdHRtX2RldmljZSAqYmRldiwgaW50IG1lbV90eXBlKQo+ID4gZGlmZiAtLWdpdCBhL2lu Y2x1ZGUvZHJtL3R0bS90dG1fdHQuaCBiL2luY2x1ZGUvZHJtL3R0bS90dG1fdHQuaAo+ID4gaW5k ZXggY2M1NGJlMTkxMmUxLi42MjcxNjhlYmE4ZjYgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2Ry bS90dG0vdHRtX3R0LmgKPiA+ICsrKyBiL2luY2x1ZGUvZHJtL3R0bS90dG1fdHQuaAo+ID4gQEAg LTg3LDYgKzg3LDcgQEAgc3RydWN0IHR0bV90dCB7Cj4gPiDCoCAjZGVmaW5lIFRUTV9UVF9GTEFH X1pFUk9fQUxMT0PCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCgxKQo+ID4gwqAg I2RlZmluZSBUVE1fVFRfRkxBR19FWFRFUk5BTMKgwqDCoMKgwqDCoMKgwqDCoMKgQklUKDIpCj4g PiDCoCAjZGVmaW5lIFRUTV9UVF9GTEFHX0VYVEVSTkFMX01BUFBBQkxFwqBCSVQoMykKPiA+ICsj ZGVmaW5lIFRUTV9UVF9GTEFHX0RPTlRORUVEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoEJJVCg0KQo+ ID4gwqAgCj4gPiDCoCAjZGVmaW5lIFRUTV9UVF9GTEFHX1BSSVZfUE9QVUxBVEVEwqDCoMKgwqBC SVQoMzEpCj4gPiDCoMKgwqDCoMKgwqDCoMKgdWludDMyX3QgcGFnZV9mbGFnczsKPiA+IEBAIC0x ODAsOCArMTgxLDggQEAgdm9pZCB0dG1fdHRfZGVzdHJveShzdHJ1Y3QgdHRtX2RldmljZSAqYmRl diwKPiA+IHN0cnVjdCB0dG1fdHQgKnR0bSk7Cj4gPiDCoMKgICogU3dhcCBpbiBhIHByZXZpb3Vz bHkgc3dhcCBvdXQgdHRtX3R0Lgo+ID4gwqDCoCAqLwo+ID4gwqAgaW50IHR0bV90dF9zd2FwaW4o c3RydWN0IHR0bV90dCAqdHRtKTsKPiA+IC1pbnQgdHRtX3R0X3N3YXBvdXQoc3RydWN0IHR0bV9k ZXZpY2UgKmJkZXYsIHN0cnVjdCB0dG1fdHQgKnR0bSwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGdmcF90IGdmcF9mbGFncyk7Cj4gPiArCj4gPiAraW50IHR0bV90dF9z d2Fwb3V0KHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LCBzdHJ1Y3QgdHRtX3R0ICp0dG0pOwo+ID4g wqAgCj4gPiDCoCAvKioKPiA+IMKgwqAgKiB0dG1fdHRfcG9wdWxhdGUgLSBhbGxvY2F0ZSBwYWdl cyBmb3IgYSB0dG0KPiA+IEBAIC0yMjMsNiArMjI0LDE4IEBAIHZvaWQgdHRtX3R0X21ncl9pbml0 KHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzLAo+ID4gdW5zaWduZWQgbG9uZyBudW1fZG1hMzJfcGFn ZXMpOwo+ID4gwqAgc3RydWN0IHR0bV9rbWFwX2l0ZXIgKnR0bV9rbWFwX2l0ZXJfdHRfaW5pdChz dHJ1Y3QKPiA+IHR0bV9rbWFwX2l0ZXJfdHQgKml0ZXJfdHQsCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdHRtX3R0ICp0dCk7Cj4gPiDCoCAKPiA+ICsvKioKPiA+ICsg KiB0dG1fdHRfcHVyZ2VhYmxlKCkgLSBXaGV0aGVyIGEgc3RydWN0IHR0bV90dCdzIGNvbnRlbnRz IGlzCj4gPiBwdXJnZWFibGUKPiA+ICsgKiBAdHQ6IFRoZSBzdHJ1Y3QgdHRtX3R0IHRvIGNvbnNp ZGVyLgo+ID4gKyAqCj4gPiArICogUmV0dXJuOiBXaGV0aGVyIHRoZSBjb250ZW50cyBpcyBwdXJn ZWFibGUgaW4gdGhlIHNlbmNlIHRoYXQgdGhlCj4gPiBvd25lcgo+ID4gKyAqIGRvZXNuJ3QgbWlu ZCBsb3NpbmcgaXQgYXMgbG9uZyBhcyBpdCBnZXRzIG5vdGlmaWVkLgo+ID4gKyAqLwo+ID4gK3N0 YXRpYyBpbmxpbmUgYm9vbCB0dG1fdHRfcHVyZ2VhYmxlKHN0cnVjdCB0dG1fdHQgKnR0KQo+ID4g K3sKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiB0dC0+cGFnZV9mbGFncyAmIFRUTV9UVF9GTEFH X0RPTlRORUVEOwo+ID4gK30KPiA+ICsKPiA+IMKgICNpZiBJU19FTkFCTEVEKENPTkZJR19BR1Ap Cj4gPiDCoCAjaW5jbHVkZSA8bGludXgvYWdwX2JhY2tlbmQuaD4KPiA+IMKgIAo+IAoK