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 bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (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 DE775D12D5C for ; Mon, 11 Nov 2024 01:19:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:Content-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:To:Subject:Cc: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=Q5pK0Tfi41q1kj0hSKqYoD3sJbXZjP2Dpg8DpfT1HJQ=; b=GE1eR0oVAg+RI0 Xya5HJk3+aeMN5IX2/zrUaLa5AhpLQ0h15wr542pd9tRlYpp2N4NEwtG6pFBipMDG/r3AJcMCKona mmTEXDt2ndCvmeuIa/G54S+g8h5/FmC3KoJgIo5RLtZ9m9ClxjTPCHk+jxWL60Qr0M7MOKABGX9IG 7Q7EXPkzWbnP/2QKRukExKxswnbeQf2HAnc/1a/awHO6L1UGjKs/EBEMLMjcwnK56zUETuxUZ5TcG P7xpz5a2i0oirwTzXBtL/nDIFJV53RBtOVYRM4Ojr4DJ1JPvxprK1e36f0PwBW2Ka024kXuXB/Dvk dyrZ8hgNbf+ZAsXzy1Eg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tAJ4z-0000000G0vO-3eZb; Mon, 11 Nov 2024 01:18:57 +0000 Received: from mail-m21467.qiye.163.com ([117.135.214.67]) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tAIxC-0000000G095-44lT for linux-rockchip@lists.infradead.org; Mon, 11 Nov 2024 01:11:01 +0000 Received: from [172.16.12.45] (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTP id 255f4fb1; Mon, 11 Nov 2024 09:10:39 +0800 (GMT+08:00) Message-ID: <13ad21bb-9f5a-4a4b-8b65-55243f6fe817@rock-chips.com> Date: Mon, 11 Nov 2024 09:10:39 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Cc: shawn.lin@rock-chips.com, Rob Herring , "James E . J . Bottomley" , "Martin K . Petersen" , Krzysztof Kozlowski , Conor Dooley , Ulf Hansson , Heiko Stuebner , "Rafael J . Wysocki" , Alim Akhtar , Avri Altman , Bart Van Assche , YiFeng Zhao , Liang Chen , linux-scsi@vger.kernel.org, linux-rockchip@lists.infradead.org, devicetree@vger.kernel.org, linux-pm@vger.kernel.org Subject: Re: [PATCH v4 7/7] scsi: ufs: rockchip: initial support for UFS To: Manivannan Sadhasivam References: <1730705521-23081-1-git-send-email-shawn.lin@rock-chips.com> <1730705521-23081-8-git-send-email-shawn.lin@rock-chips.com> <20241109121249.vncqbacvpnpf6d34@thinkpad> Content-Language: en-GB From: Shawn Lin In-Reply-To: <20241109121249.vncqbacvpnpf6d34@thinkpad> X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZQ05KTVYZSE1DT05CTBlKHRlWFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCSE NVSktLVUpCS0tZBg++ X-HM-Tid: 0a9318c5d91a09cckunm255f4fb1 X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6Nzo6NSo4SjIZLCwfDCs#CjEz GisaCx1VSlVKTEhKSUNMT09KTkpOVTMWGhIXVQgTGgwVVRcSFTsJFBgQVhgTEgsIVRgUFkVZV1kS C1lBWU5DVUlJVUxVSkpPWVdZCAFZQUpNS0xDNwY+ DKIM-Signature: a=rsa-sha256; b=K2/5z0mvh5MFIL9hq3jEn5PIdd2p6VguR7Iu+22K2ZYClRJOEr+8zVR+dTuzgS6zwN3wCH2pgQZUe3NCD5S4meGXzRLn4d0Gxt948MhYv9wgILcwNKLwyXmhD5NRnu4TJp2LKETMY5WRfIIY/Nk/Ws+lqePe12rdpoOeMuSgGSc=; c=relaxed/relaxed; s=default; d=rock-chips.com; v=1; bh=zGyXevi51828h+DenpQzWeojCrJCFBSFPaw/0aGhpfE=; h=date:mime-version:subject:message-id:from; X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241110_171055_944061_B79ACC9D X-CRM114-Status: GOOD ( 35.33 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGkgTWFuaSwKCuWcqCAyMDI0LzExLzkgMjA6MTIsIE1hbml2YW5uYW4gU2FkaGFzaXZhbSDlhpnp gZM6Cj4gT24gTW9uLCBOb3YgMDQsIDIwMjQgYXQgMDM6MzI6MDFQTSArMDgwMCwgU2hhd24gTGlu IHdyb3RlOgo+PiBSSzM1NzYgU29DIGNvbnRhaW5zIGEgVUZTIGNvbnRyb2xsZXIsIGFkZCBpbml0 aWFsIHN1cHBvcnQgZm9yIGl0Lgo+PiBUaGUgZmVhdHVyZXMgYXJlOgo+PiAoMSkgc3VwcG9ydCBV RlMgMi4wIGZlYXR1cmVzCj4+ICgyKSBIaWdoIHNwZWVkIHVwIHRvIEhTLUczCj4+ICgzKSAyUlgt MlRYIGxhbmVzCj4+ICg0KSBhdXRvIEg4IGVudHJ5IGFuZCBleGl0Cj4+Cj4+IFNvZnR3YXJlIGxp bWl0YXRpb246Cj4+ICgxKSBIQ0UgcHJvY2VkdXJlOiBlbmFibGUgY29udHJvbGxlci0+ZW5hYmxl IGludHItPmRtZV9yZXNldC0+ZG1lX2VuYWJsZQo+PiAoMikgZGlzYWJsZSB1bmlwcm8gdGltZW91 dCB2YWx1ZXMgYmVmb3JlIHBvd2VyIG1vZGUgY2hhbmdlCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IFNo YXduIExpbiA8c2hhd24ubGluQHJvY2stY2hpcHMuY29tPgo+PiAtLS0KPj4KPj4gQ2hhbmdlcyBp biB2NDoKPj4gLSBkZWFsIHdpdGggcG93ZXIgZG9tYWluIG9mIHJwbSBhbmQgc3BtIHN1Z2dlc3Rl ZCBieSBVbGYKPj4gLSBGaXggdHlwbyBhbmQgZGlzYWJsZSBjbGtzIGluIHVmc19yb2NrY2hpcF9y ZW1vdmUKPj4gLSByZW1vdmUgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhvc3QtPnJlZl9vdXRfY2xr KSBmcm9tCj4+ICAgIHVmc19yb2NrY2hpcF9yZW1vdmUKPj4KPj4gQ2hhbmdlcyBpbiB2MzoKPj4g LSByZXdvcmQgS2NvbmZpZyBkZXNjcmlwdGlvbgo+PiAtIGVsYWJvcmF0ZSBtb3JlIGFib3V0IGNv bnRyb2xsZXIgaW4gY29tbWl0IG1zZwo+PiAtIHVzZSByb2NrY2hpcCxyazM1NzYtdWZzaGMgZm9y IGNvbXBhdGlibGUKPj4gLSByZW1vdmUgdXNlbGVzcyBoZWFkZXIgZmlsZQo+PiAtIHJlbW92ZSBp bmxpbmUgZm9yIHVmc2hjZF9pc19kZXZpY2VfcHJlc2VudAo+PiAtIHVzZSB1c2xlZXBfcmFuZ2Ug aW5zdGVhZAo+PiAtIHJlbW92ZSBpbml0aWFsaXphdGlvbiwgcmV2ZXJzZSBYbWFzIG9yZGVyCj4+ IC0gcmVtb3ZlIHVzZWxlc3MgdmFyaWJsZXMKPj4gLSBjaGVjayB2b3BzIGZvciBudWxsCj4+IC0g b3RoZXIgc21hbGwgZml4ZXMgZm9yIGVyciBwYXRoCj4+IC0gcmVtb3ZlIHBtX3J1bnRpbWVfc2V0 X2FjdGl2ZQo+PiAtIGZpeCB0aGUgYWN0aXZlIGFuZCBpbmFjdGl2ZSByZXNldC1ncGlvcyBsb2dp Ywo+PiAtIGZpeCBycG1fbHZsIGFuZCBzcG1fbHZsIHRvIDUgYW5kIG1vdmUgdG8gZW5kIG9mIHBy b2JlIHBhdGgKPj4gLSByZW1vdmUgdW5uZWNlc3Nhcnkgc3lzdGVtIFBNIGNhbGxiYWNrcwo+PiAt IHVzZSBVRlNIQ0lfUVVJUktfRE1FX1JFU0VUX0VOQUJMRV9BRlRFUl9IQ0UgaW5zdGVhZAo+PiAg ICBvZiBVRlNIQ0lfUVVJUktfQlJPS0VOX0hDRQo+Pgo+PiBDaGFuZ2VzIGluIHYyOiBOb25lCj4+ Cj4+ICAgZHJpdmVycy91ZnMvaG9zdC9LY29uZmlnICAgICAgICB8ICAxMiArKwo+PiAgIGRyaXZl cnMvdWZzL2hvc3QvTWFrZWZpbGUgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMvdWZzL2hvc3Qv dWZzLXJvY2tjaGlwLmMgfCAzNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKwo+PiAgIGRyaXZlcnMvdWZzL2hvc3QvdWZzLXJvY2tjaGlwLmggfCAgNTEgKysrKysrCj4+ ICAgNCBmaWxlcyBjaGFuZ2VkLCA0MDQgaW5zZXJ0aW9ucygrKQo+PiAgIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL3Vmcy9ob3N0L3Vmcy1yb2NrY2hpcC5jCj4+ICAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvdWZzL2hvc3QvdWZzLXJvY2tjaGlwLmgKPj4KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdWZzL2hvc3QvS2NvbmZpZyBiL2RyaXZlcnMvdWZzL2hvc3QvS2NvbmZpZwo+PiBpbmRl eCA1ODBjOGQwLi4xOTFmYmQ3IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL3Vmcy9ob3N0L0tjb25m aWcKPj4gKysrIGIvZHJpdmVycy91ZnMvaG9zdC9LY29uZmlnCj4+IEBAIC0xNDIsMyArMTQyLDE1 IEBAIGNvbmZpZyBTQ1NJX1VGU19TUFJECj4+ICAgCj4+ICAgCSAgU2VsZWN0IHRoaXMgaWYgeW91 IGhhdmUgVUZTIGNvbnRyb2xsZXIgb24gVW5pc29jIGNoaXBzZXQuCj4+ICAgCSAgSWYgdW5zdXJl LCBzYXkgTi4KPj4gKwo+PiArY29uZmlnIFNDU0lfVUZTX1JPQ0tDSElQCj4+ICsJdHJpc3RhdGUg IlJvY2tjaGlwIFVGUyBob3N0IGNvbnRyb2xsZXIgZHJpdmVyIgo+PiArCWRlcGVuZHMgb24gU0NT SV9VRlNIQ0RfUExBVEZPUk0gJiYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElMRV9URVNUKQo+PiAr CWhlbHAKPj4gKwkgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgc3BlY2lmaWMgYWRkaXRpb25z IHRvIFVGU0hDRCBwbGF0Zm9ybSBkcml2ZXIuCj4+ICsJICBVRlMgaG9zdCBvbiBSb2NrY2hpcCBu ZWVkcyBzb21lIHZlbmRvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGJlZm9yZQo+PiArCSAgYWNj ZXNzaW5nIHRoZSBoYXJkd2FyZSB3aGljaCBpbmNsdWRlcyBQSFkgY29uZmlndXJhdGlvbiBhbmQg dmVuZG9yCj4+ICsJICBzcGVjaWZpYyByZWdpc3RlcnMuCj4+ICsKPj4gKwkgIFNlbGVjdCB0aGlz IGlmIHlvdSBoYXZlIFVGUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIGNoaXBzZXQuCj4+ICsJICBJ ZiB1bnN1cmUsIHNheSBOLgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91ZnMvaG9zdC9NYWtlZmls ZSBiL2RyaXZlcnMvdWZzL2hvc3QvTWFrZWZpbGUKPj4gaW5kZXggNDU3M2FlYS4uMmY5N2ZlYiAx MDA2NDQKPj4gLS0tIGEvZHJpdmVycy91ZnMvaG9zdC9NYWtlZmlsZQo+PiArKysgYi9kcml2ZXJz L3Vmcy9ob3N0L01ha2VmaWxlCj4+IEBAIC0xMCw1ICsxMCw2IEBAIG9iai0kKENPTkZJR19TQ1NJ X1VGU0hDRF9QTEFURk9STSkgKz0gdWZzaGNkLXBsdGZybS5vCj4+ICAgb2JqLSQoQ09ORklHX1ND U0lfVUZTX0hJU0kpICs9IHVmcy1oaXNpLm8KPj4gICBvYmotJChDT05GSUdfU0NTSV9VRlNfTUVE SUFURUspICs9IHVmcy1tZWRpYXRlay5vCj4+ICAgb2JqLSQoQ09ORklHX1NDU0lfVUZTX1JFTkVT QVMpICs9IHVmcy1yZW5lc2FzLm8KPj4gK29iai0kKENPTkZJR19TQ1NJX1VGU19ST0NLQ0hJUCkg Kz0gdWZzLXJvY2tjaGlwLm8KPj4gICBvYmotJChDT05GSUdfU0NTSV9VRlNfU1BSRCkgKz0gdWZz LXNwcmQubwo+PiAgIG9iai0kKENPTkZJR19TQ1NJX1VGU19USV9KNzIxRSkgKz0gdGktajcyMWUt dWZzLm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdWZzL2hvc3QvdWZzLXJvY2tjaGlwLmMgYi9k cml2ZXJzL3Vmcy9ob3N0L3Vmcy1yb2NrY2hpcC5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+ IGluZGV4IDAwMDAwMDAuLjljMjc3YmMKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJz L3Vmcy9ob3N0L3Vmcy1yb2NrY2hpcC5jCj4+IEBAIC0wLDAgKzEsMzQwIEBACj4+ICsvLyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4+ICsvKgo+PiArICogUm9ja2NoaXAg VUZTIEhvc3QgQ29udHJvbGxlciBkcml2ZXIKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIw MjQgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uTHRkLgo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRl IDxsaW51eC9jbGsuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4+ICsjaW5jbHVkZSA8 bGludXgvbWZkL3N5c2Nvbi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4+ICsjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcG1fZG9tYWlu Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcG1fd2FrZXVwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv cmVnbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPj4gKwo+PiArI2luY2x1ZGUg PHVmcy91ZnNoY2QuaD4KPj4gKyNpbmNsdWRlIDx1ZnMvdW5pcHJvLmg+Cj4+ICsjaW5jbHVkZSAi dWZzaGNkLXBsdGZybS5oIgo+PiArI2luY2x1ZGUgInVmcy1yb2NrY2hpcC5oIgo+PiArCj4+ICtz dGF0aWMgaW50IHVmc19yb2NrY2hpcF9oY2VfZW5hYmxlX25vdGlmeShzdHJ1Y3QgdWZzX2hiYSAq aGJhLAo+PiArCQkJCQkgZW51bSB1ZnNfbm90aWZ5X2NoYW5nZV9zdGF0dXMgc3RhdHVzKQo+PiAr ewo+PiArCWludCBlcnIgPSAwOwo+PiArCj4+ICsJaWYgKHN0YXR1cyA9PSBQT1NUX0NIQU5HRSkK Pj4gKwkJZXJyID0gdWZzaGNkX3ZvcHNfcGh5X2luaXRpYWxpemF0aW9uKGhiYSk7Cj4gCj4gcmV0 dXJuIHVmc2hjZF92b3BzX3BoeV9pbml0aWFsaXphdGlvbigpCj4gCj4+ICsKPj4gKwlyZXR1cm4g ZXJyOwo+IAo+IHJldHVybiAwCgpXaWxsIGZpeCB0aGlzLgoKPiAKPj4gK30KPj4gKwo+PiArc3Rh dGljIHZvaWQgdWZzX3JvY2tjaGlwX3NldF9wbV9sdmwoc3RydWN0IHVmc19oYmEgKmhiYSkKPj4g K3sKPj4gKwloYmEtPnJwbV9sdmwgPSBVRlNfUE1fTFZMXzU7Cj4gCj4gQXJlIHlvdSBzdXJlIHRo YXQgeW91IHdhbnQgdG8gcG93ZXIgZG93biBib3RoIHRoZSBkZXZpY2UgYW5kIGxpbmsgZHVyaW5n IHJ1bnRpbWUKPiBzdXNwZW5kPwo+IAoKWWVzLCB0aGlzIGlzIHdoYXQgd2UgbmVlZCBmb3Igb3Vy IHByb2R1Y3QgYnkgZGVmYXVsdC4KCj4+ICsJaGJhLT5zcG1fbHZsID0gVUZTX1BNX0xWTF81Owo+ PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHVmc19yb2NrY2hpcF9yazM1NzZfcGh5X2luaXQoc3Ry dWN0IHVmc19oYmEgKmhiYSkKPj4gK3sKPj4gKwlzdHJ1Y3QgdWZzX3JvY2tjaGlwX2hvc3QgKmhv c3QgPSB1ZnNoY2RfZ2V0X3ZhcmlhbnQoaGJhKTsKPj4gKwo+PiArCXVmc2hjZF9kbWVfc2V0KGhi YSwgVUlDX0FSR19NSUJfU0VMKFBBX0xPQ0FMX1RYX0xDQ19FTkFCTEUsIDB4MCksIDB4MCk7Cj4+ ICsJLyogZW5hYmxlIHRoZSBtcGh5IERNRV9TRVQgY2ZnICovCj4+ICsJdWZzaGNkX2RtZV9zZXQo aGJhLCBVSUNfQVJHX01JQl9TRUwoMHgyMDAsIDB4MCksIDB4NDApOwo+PiArCWZvciAoaW50IGkg PSAwOyBpIDwgMjsgaSsrKSB7Cj4+ICsJCS8qIENvbmZpZ3VyYXRpb24gTS1UWCAqLwo+PiArCQl1 ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweGFhLCBTRUxfVFhfTEFORTAgKyBp KSwgMHgwNik7Cj4+ICsJCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4YTks IFNFTF9UWF9MQU5FMCArIGkpLCAweDAyKTsKPj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNf QVJHX01JQl9TRUwoMHhhZCwgU0VMX1RYX0xBTkUwICsgaSksIDB4NDQpOwo+PiArCQl1ZnNoY2Rf ZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweGFjLCBTRUxfVFhfTEFORTAgKyBpKSwgMHhl Nik7Cj4+ICsJCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4YWIsIFNFTF9U WF9MQU5FMCArIGkpLCAweDA3KTsKPj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNfQVJHX01J Ql9TRUwoMHg5NCwgU0VMX1RYX0xBTkUwICsgaSksIDB4OTMpOwo+PiArCQl1ZnNoY2RfZG1lX3Nl dChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweDkzLCBTRUxfVFhfTEFORTAgKyBpKSwgMHhjOSk7Cj4+ ICsJCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4N2YsIFNFTF9UWF9MQU5F MCArIGkpLCAweDAwKTsKPj4gKwkJLyogQ29uZmlndXJhdGlvbiBNLVJYICovCj4+ICsJCXVmc2hj ZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4MTIsIFNFTF9SWF9MQU5FMCArIGkpLCAw eDA2KTsKPj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNfQVJHX01JQl9TRUwoMHgxMSwgU0VM X1JYX0xBTkUwICsgaSksIDB4MDApOwo+PiArCQl1ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdf TUlCX1NFTCgweDFkLCBTRUxfUlhfTEFORTAgKyBpKSwgMHg1OCk7Cj4+ICsJCXVmc2hjZF9kbWVf c2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4MWMsIFNFTF9SWF9MQU5FMCArIGkpLCAweDhjKTsK Pj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNfQVJHX01JQl9TRUwoMHgxYiwgU0VMX1JYX0xB TkUwICsgaSksIDB4MDIpOwo+PiArCQl1ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NF TCgweDI1LCBTRUxfUlhfTEFORTAgKyBpKSwgMHhmNik7Cj4+ICsJCXVmc2hjZF9kbWVfc2V0KGhi YSwgVUlDX0FSR19NSUJfU0VMKDB4MmYsIFNFTF9SWF9MQU5FMCArIGkpLCAweDY5KTsKPj4gKwl9 Cj4+ICsJLyogZGlzYWJsZSB0aGUgbXBoeSBETUVfU0VUIGNmZyAqLwo+PiArCXVmc2hjZF9kbWVf c2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4MjAwLCAweDApLCAweDAwKTsKPj4gKwo+PiArCXVm c19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHg4MCwgMHgwOEMpOwo+PiArCXVmc19zeXNf d3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHhCNSwgMHgxMTApOwo+PiArCXVmc19zeXNfd3JpdGVs KGhvc3QtPm1waHlfYmFzZSwgMHhCNSwgMHgyNTApOwo+PiArCj4+ICsJdWZzX3N5c193cml0ZWwo aG9zdC0+bXBoeV9iYXNlLCAweDAzLCAweDEzNCk7Cj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+ bXBoeV9iYXNlLCAweDAzLCAweDI3NCk7Cj4+ICsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5t cGh5X2Jhc2UsIDB4MzgsIDB4MEUwKTsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5tcGh5X2Jh c2UsIDB4MzgsIDB4MjIwKTsKPj4gKwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFz ZSwgMHg1MCwgMHgxNjQpOwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHg1 MCwgMHgyQTQpOwo+PiArCj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDgw LCAweDE3OCk7Cj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDgwLCAweDJC OCk7Cj4+ICsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4MTgsIDB4MUIw KTsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4MTgsIDB4MkYwKTsKPj4g Kwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHgwMywgMHgxMjgpOwo+PiAr CXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHgwMywgMHgyNjgpOwo+PiArCj4+ICsJ dWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDIwLCAweDEyQyk7Cj4+ICsJdWZzX3N5 c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDIwLCAweDI2Qyk7Cj4+ICsKPj4gKwl1ZnNfc3lz X3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4QzAsIDB4MTIwKTsKPj4gKwl1ZnNfc3lzX3dyaXRl bChob3N0LT5tcGh5X2Jhc2UsIDB4QzAsIDB4MjYwKTsKPj4gKwo+PiArCXVmc19zeXNfd3JpdGVs KGhvc3QtPm1waHlfYmFzZSwgMHgwMywgMHgwOTQpOwo+PiArCj4+ICsJdWZzX3N5c193cml0ZWwo aG9zdC0+bXBoeV9iYXNlLCAweDAzLCAweDFCNCk7Cj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+ bXBoeV9iYXNlLCAweDAzLCAweDJGNCk7Cj4+ICsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5t cGh5X2Jhc2UsIDB4QzAsIDB4MDhDKTsKPj4gKwl1c2xlZXBfcmFuZ2UoMSwgMik7Cj4+ICsJdWZz X3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDAwLCAweDA4Qyk7Cj4+ICsKPj4gKwl1c2xl ZXBfcmFuZ2UoMjAwLCAyNTApOwo+PiArCS8qIHN0YXJ0IGxpbmsgdXAgKi8KPj4gKwl1ZnNoY2Rf ZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTChNSUJfVF9EQkdfQ1BPUlRfVFhfRU5ESUFOLCAw KSwgMHgwKTsKPj4gKwl1ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTChNSUJfVF9E QkdfQ1BPUlRfUlhfRU5ESUFOLCAwKSwgMHgwKTsKPj4gKwl1ZnNoY2RfZG1lX3NldChoYmEsIFVJ Q19BUkdfTUlCX1NFTChOX0RFVklDRUlELCAwKSwgMHgwKTsKPj4gKwl1ZnNoY2RfZG1lX3NldCho YmEsIFVJQ19BUkdfTUlCX1NFTChOX0RFVklDRUlEX1ZBTElELCAwKSwgMHgxKTsKPj4gKwl1ZnNo Y2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTChUX1BFRVJERVZJQ0VJRCwgMCksIDB4MSk7 Cj4+ICsJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNfQVJHX01JQl9TRUwoVF9DT05ORUNUSU9OU1RB VEUsIDApLCAweDEpOwo+IAo+IEkgYXNzdW1lIHRoYXQgdGhlIFBIWSBkb2Vzbid0IGhhdmUgYW55 IHNlcGFyYXRlIHJlc291cmNlcyBsaWtlIGNsb2NrcyBhbmQgeW91Cj4ganVzdCBuZWVkIHRvIHdy aXRlIHRoZXNlIHJlZ2lzdGVycy4KPiAKCnllcy4KCj4+ICsKPj4gKwlyZXR1cm4gMDsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCB1ZnNfcm9ja2NoaXBfY29tbW9uX2luaXQoc3RydWN0IHVmc19o YmEgKmhiYSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBoYmEtPmRldjsKPj4gKwlz dHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4+ ICsJc3RydWN0IHVmc19yb2NrY2hpcF9ob3N0ICpob3N0Owo+PiArCWludCBlcnI7Cj4gCj4gUmV2 ZXJzZSBYbWFzIHRyZWUgcGxlYXNlIChidXQgSSBkb24ndCBpbnNpc3QpLgoKV2lsbCBmaXguCgo+ IAo+PiArCj4+ICsJaG9zdCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaG9zdCksIEdGUF9L RVJORUwpOwo+PiArCWlmICghaG9zdCkKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwkv KiBzeXN0ZW0gY29udHJvbCByZWdpc3RlciBmb3IgaGNpICovCj4+ICsJaG9zdC0+dWZzX3N5c19j dHJsID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAiaGNpX2dy ZiIpOwo+PiArCWlmIChJU19FUlIoaG9zdC0+dWZzX3N5c19jdHJsKSkKPj4gKwkJcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGhvc3QtPnVmc19zeXNfY3RybCksCj4+ICsJCQkJCSJj YW5ub3QgaW9yZW1hcCBmb3IgaGNpIHN5c3RlbSBjb250cm9sIHJlZ2lzdGVyXG4iKTsKPiAKPiAi RmFpbGVkIHRvIG1hcCBIQ0kgc3lzdGVtIGNvbnRyb2wgcmVnaXN0ZXJzIgo+IAo+IFNpbWlsYXIg Zm9yIG90aGVyIG1lc3NhZ2VzIGJlbG93Lgo+IAo+PiArCj4+ICsJLyogc3lzdGVtIGNvbnRyb2wg cmVnaXN0ZXIgZm9yIG1waHkgKi8KPj4gKwlob3N0LT51ZnNfcGh5X2N0cmwgPSBkZXZtX3BsYXRm b3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsICJtcGh5X2dyZiIpOwo+PiArCWlmIChJ U19FUlIoaG9zdC0+dWZzX3BoeV9jdHJsKSkKPj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2 LCBQVFJfRVJSKGhvc3QtPnVmc19waHlfY3RybCksCj4+ICsJCQkJImNhbm5vdCBpb3JlbWFwIGZv ciBtcGh5IHN5c3RlbSBjb250cm9sIHJlZ2lzdGVyXG4iKTsKPj4gKwo+PiArCS8qIG1waHkgYmFz ZSByZWdpc3RlciAqLwo+PiArCWhvc3QtPm1waHlfYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1h cF9yZXNvdXJjZV9ieW5hbWUocGRldiwgIm1waHkiKTsKPj4gKwlpZiAoSVNfRVJSKGhvc3QtPm1w aHlfYmFzZSkpCj4+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihob3N0LT5t cGh5X2Jhc2UpLAo+PiArCQkJCSJjYW5ub3QgaW9yZW1hcCBmb3IgbXBoeSBiYXNlIHJlZ2lzdGVy XG4iKTsKPj4gKwo+PiArCWhvc3QtPnJzdCA9IGRldm1fcmVzZXRfY29udHJvbF9hcnJheV9nZXRf ZXhjbHVzaXZlKGRldik7Cj4+ICsJaWYgKElTX0VSUihob3N0LT5yc3QpKQo+PiArCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoaG9zdC0+cnN0KSwKPj4gKwkJCQkiZmFpbGVkIHRv IGdldCByZXNldCBjb250cm9sXG4iKTsKPj4gKwo+PiArCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGhv c3QtPnJzdCk7Cj4+ICsJdXNsZWVwX3JhbmdlKDEsIDIpOwo+PiArCXJlc2V0X2NvbnRyb2xfZGVh c3NlcnQoaG9zdC0+cnN0KTsKPj4gKwo+PiArCWhvc3QtPnJlZl9vdXRfY2xrID0gZGV2bV9jbGtf Z2V0X2VuYWJsZWQoZGV2LCAicmVmX291dCIpOwo+PiArCWlmIChJU19FUlIoaG9zdC0+cmVmX291 dF9jbGspKQo+PiArCQlyZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIFBUUl9FUlIoaG9zdC0+cmVm X291dF9jbGspLAo+PiArCQkJCSJyZWZfb3V0IHVuYXZhaWxhYmxlXG4iKTsKPj4gKwo+PiArCWhv c3QtPnJzdF9ncGlvID0gZGV2bV9ncGlvZF9nZXQoJnBkZXYtPmRldiwgInJlc2V0IiwgR1BJT0Rf T1VUX0xPVyk7Cj4+ICsJaWYgKElTX0VSUihob3N0LT5yc3RfZ3BpbykpCj4+ICsJCXJldHVybiBk ZXZfZXJyX3Byb2JlKCZwZGV2LT5kZXYsIFBUUl9FUlIoaG9zdC0+cnN0X2dwaW8pLAo+PiArCQkJ CSJpbnZhbGlkIHJlc2V0LWdwaW9zIHByb3BlcnR5IGluIG5vZGVcbiIpOwo+PiArCj4+ICsJaG9z dC0+Y2xrc1swXS5pZCA9ICJjb3JlIjsKPj4gKwlob3N0LT5jbGtzWzFdLmlkID0gInBjbGsiOwo+ PiArCWhvc3QtPmNsa3NbMl0uaWQgPSAicGNsa19tcGh5IjsKPiAKPiBObyBuZWVkIHRvIGhhcmRj b2RlIGNsb2NrcyBpbiB0aGUgZHJpdmVyLiBZb3UgY2FuIGp1c3QgdXNlIGNsa19idWxrX2dldF9h bGwoKSB0bwo+IGdldCB0aGUgY2xvY2tzIGZyb20gRFQuIERUIGJpbmRpbmcgc2hvdWxkIG1ha2Ug c3VyZSB0aGF0IHRoZSBjbG9ja3MgYXJlIHByZXNlbnQKPiBpbiBEVC4KCkdvb2QgaWRlYSwgd2ls bCBmaXguCgo+IAo+PiArCWVyciA9IGRldm1fY2xrX2J1bGtfZ2V0X29wdGlvbmFsKGRldiwgVUZT X01BWF9DTEtTLCBob3N0LT5jbGtzKTsKPj4gKwlpZiAoZXJyKQo+PiArCQlyZXR1cm4gZGV2X2Vy cl9wcm9iZShkZXYsIGVyciwgImZhaWxlZCB0byBnZXQgY2xvY2tzXG4iKTsKPj4gKwo+PiArCWVy ciA9IGNsa19idWxrX3ByZXBhcmVfZW5hYmxlKFVGU19NQVhfQ0xLUywgaG9zdC0+Y2xrcyk7Cj4+ ICsJaWYgKGVycikKPj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBlcnIsICJmYWlsZWQg dG8gZW5hYmxlIGNsb2Nrc1xuIik7Cj4+ICsKPj4gKwlob3N0LT5oYmEgPSBoYmE7Cj4+ICsKPj4g Kwl1ZnNoY2Rfc2V0X3ZhcmlhbnQoaGJhLCBob3N0KTsKPj4gKwo+PiArCXJldHVybiAwOwo+PiAr fQo+PiArCj4+ICtzdGF0aWMgaW50IHVmc19yb2NrY2hpcF9yazM1NzZfaW5pdChzdHJ1Y3QgdWZz X2hiYSAqaGJhKQo+PiArewo+PiArCXN0cnVjdCBkZXZpY2UgKmRldiA9IGhiYS0+ZGV2Owo+PiAr CXN0cnVjdCB1ZnNfcm9ja2NoaXBfaG9zdCAqaG9zdCA9IHVmc2hjZF9nZXRfdmFyaWFudChoYmEp Owo+PiArCWludCByZXQ7Cj4+ICsKPj4gKwloYmEtPnF1aXJrcyA9IFVGU0hDRF9RVUlSS19TS0lQ X0RFRl9VTklQUk9fVElNRU9VVF9TRVRUSU5HIHwKPj4gKwkJICAgICAgVUZTSENJX1FVSVJLX0RN RV9SRVNFVF9FTkFCTEVfQUZURVJfSENFOwo+PiArCj4+ICsJLyogRW5hYmxlIEJLT1BTIHdoZW4g c3VzcGVuZCAqLwo+PiArCWhiYS0+Y2FwcyB8PSBVRlNIQ0RfQ0FQX0FVVE9fQktPUFNfU1VTUEVO RDsKPj4gKwkvKiBFbmFibGUgcHV0dGluZyBkZXZpY2UgaW50byBkZWVwIHNsZWVwICovCj4+ICsJ aGJhLT5jYXBzIHw9IFVGU0hDRF9DQVBfREVFUFNMRUVQOwo+PiArCS8qIEVuYWJsZSBkZXZmcmVx IG9mIFVGUyAqLwo+PiArCWhiYS0+Y2FwcyB8PSBVRlNIQ0RfQ0FQX0NMS19TQ0FMSU5HOwo+PiAr CS8qIEVuYWJsZSBXcml0ZUJvb3N0ZXIgKi8KPj4gKwloYmEtPmNhcHMgfD0gVUZTSENEX0NBUF9X Ql9FTjsKPj4gKwo+PiArCWhvc3QtPnBkX2lkID0gUkszNTc2X1BEX1VGUzsKPj4gKwo+PiArCXJl dCA9IHVmc19yb2NrY2hpcF9jb21tb25faW5pdChoYmEpOwo+PiArCWlmIChyZXQpCj4+ICsJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAidWZzIGNvbW1vbiBpbml0IGZhaWxcbiIpOwo+ PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgdWZzX3JvY2tjaGlw X2RldmljZV9yZXNldChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQo+PiArewo+PiArCXN0cnVjdCB1ZnNf cm9ja2NoaXBfaG9zdCAqaG9zdCA9IHVmc2hjZF9nZXRfdmFyaWFudChoYmEpOwo+PiArCj4+ICsJ LyogQWN0aXZlIHRoZSByZXNldC1ncGlvcyAqLwo+IAo+IE5vIG5lZWQgb2YgdGhpcyBhbmQgYmVs b3cgY29tbWVudC4KCldpbGwgcmVtb3ZlLgoKPiAKPj4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xl ZXAoaG9zdC0+cnN0X2dwaW8sIDEpOwo+PiArCXVzbGVlcF9yYW5nZSgyMCwgMjUpOwo+PiArCj4+ ICsJLyogSW5hY3RpdmUgdGhlIHJlc2V0LWdwaW9zICovCj4+ICsJZ3Bpb2Rfc2V0X3ZhbHVlX2Nh bnNsZWVwKGhvc3QtPnJzdF9ncGlvLCAwKTsKPj4gKwl1c2xlZXBfcmFuZ2UoMjAsIDI1KTsKPj4g Kwo+PiArCXJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHVmc19o YmFfdmFyaWFudF9vcHMgdWZzX2hiYV9yazM1NzZfdm9wcyA9IHsKPj4gKwkubmFtZSA9ICJyazM1 NzYiLAo+IAo+IFVubGVzcyB5b3UgZXhwZWN0IGRpZmZlcmVudCB2YXJpYW50IG9wcyBmb3IgZWFj aCBjaGlwc2V0LCB5b3UgY2FuIGp1c3QgdXNlCj4gInJvY2tjaGlwIi4KClByb2JhYmx5IHdlIG5l ZWQgYSBkaWZmZXJlbnQgdmFyaWFudCBvcHMsIGZvciBpbnNhdG5jZSwgd2UgbWF5IHNlZWsgdG8K Zml4IHRoZSBoY2UgcHJvY2VzcyBwcm9ibGVtLCBhbHNvIHdlIHByb2JhYmx5IG5lZWQgYSBkaWZm ZXJlbnQgLmluaXQKcHJvY2Vzcy4KCj4gCj4+ICsJLmluaXQgPSB1ZnNfcm9ja2NoaXBfcmszNTc2 X2luaXQsCj4+ICsJLmRldmljZV9yZXNldCA9IHVmc19yb2NrY2hpcF9kZXZpY2VfcmVzZXQsCj4+ ICsJLmhjZV9lbmFibGVfbm90aWZ5ID0gdWZzX3JvY2tjaGlwX2hjZV9lbmFibGVfbm90aWZ5LAo+ PiArCS5waHlfaW5pdGlhbGl6YXRpb24gPSB1ZnNfcm9ja2NoaXBfcmszNTc2X3BoeV9pbml0LAo+ PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgdWZzX3JvY2tj aGlwX29mX21hdGNoW10gPSB7Cj4+ICsJeyAuY29tcGF0aWJsZSA9ICJyb2NrY2hpcCxyazM1NzYt dWZzaGMiLCAuZGF0YSA9ICZ1ZnNfaGJhX3JrMzU3Nl92b3BzIH0sCj4+ICt9Owo+PiArTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgdWZzX3JvY2tjaGlwX29mX21hdGNoKTsKPj4gKwo+PiArc3RhdGlj IGludCB1ZnNfcm9ja2NoaXBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4g K3sKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ZGV2Owo+PiArCWNvbnN0IHN0cnVj dCB1ZnNfaGJhX3ZhcmlhbnRfb3BzICp2b3BzOwo+PiArCXN0cnVjdCB1ZnNfaGJhICpoYmE7Cj4+ ICsJaW50IGVycjsKPj4gKwo+PiArCXZvcHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2KTsK Pj4gKwlpZiAoIXZvcHMpCj4+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVJTlZBTCwg InVmc19oYmFfdmFyaWFudF9vcHMgbm90IGRlZmluZWQuXG4iKTsKPj4gKwo+PiArCWVyciA9IHVm c2hjZF9wbHRmcm1faW5pdChwZGV2LCB2b3BzKTsKPj4gKwlpZiAoZXJyKQo+PiArCQlyZXR1cm4g ZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgInVmc2hjZF9wbHRmcm1faW5pdCBmYWlsZWRcbiIpOwo+ PiArCj4+ICsJaGJhID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7Cj4+ICsJLyogU2V0IHRo ZSBkZWZhdWx0IGRlc2lyZWQgcG0gbGV2ZWwgaW4gY2FzZSBubyB1c2VycyBzZXQgdmlhIHN5c2Zz ICovCj4+ICsJdWZzX3JvY2tjaGlwX3NldF9wbV9sdmwoaGJhKTsKPj4gKwo+PiArCXJldHVybiAw Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCB1ZnNfcm9ja2NoaXBfcmVtb3ZlKHN0cnVjdCBw bGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICsJc3RydWN0IHVmc19oYmEgKmhiYSA9IHBs YXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOwo+PiArCXN0cnVjdCB1ZnNfcm9ja2NoaXBfaG9zdCAq aG9zdCA9IHVmc2hjZF9nZXRfdmFyaWFudChoYmEpOwo+PiArCj4+ICsJcG1fcnVudGltZV9mb3Ji aWQoJnBkZXYtPmRldik7Cj4+ICsJcG1fcnVudGltZV9nZXRfbm9yZXN1bWUoJnBkZXYtPmRldik7 Cj4gCj4gV2h5IGRvIHlvdSBuZWVkIHRoZXNlPyBZb3UgYXJlIG5vdCBpbmNyZW1lbnRpbmcgdGhl IHJlZmNvdW50IGluIHByb2JlKCkgYW5kCj4gdGhlcmUgaXMgbm8gYXV0byBQTSBpbnZvbHZlZC4K Ck9oLCBpdCB3YXMgYSBsZWZ0b3ZlciBmcm9tIGZvcm1lciB2ZXJzaW9uIEkgaGF2ZW4ndCBub3Rp Y2VkLiBXaWxsCnJlbW92ZS4KCj4gCj4+ICsJdWZzaGNkX3JlbW92ZShoYmEpOwo+PiArCXVmc2hj ZF9kZWFsbG9jX2hvc3QoaGJhKTsKPj4gKwljbGtfYnVsa19kaXNhYmxlX3VucHJlcGFyZShVRlNf TUFYX0NMS1MsIGhvc3QtPmNsa3MpOwo+PiArfQo+PiArCj4+ICsjaWZkZWYgQ09ORklHX1BNCj4+ ICtzdGF0aWMgaW50IHVmc19yb2NrY2hpcF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAq ZGV2KQo+PiArewo+PiArCXN0cnVjdCB1ZnNfaGJhICpoYmEgPSBkZXZfZ2V0X2RydmRhdGEoZGV2 KTsKPj4gKwlzdHJ1Y3QgdWZzX3JvY2tjaGlwX2hvc3QgKmhvc3QgPSB1ZnNoY2RfZ2V0X3Zhcmlh bnQoaGJhKTsKPj4gKwo+PiArCWNsa19kaXNhYmxlX3VucHJlcGFyZShob3N0LT5yZWZfb3V0X2Ns ayk7Cj4+ICsKPj4gKwkvKiBTaG91bGRuJ3QgcG93ZXIgZG93biBpZiBycG1fbHZsIGlzIGxlc3Mg dGhhbiBsZXZlbCA1LiAqLwo+PiArCWRldl9wbV9nZW5wZF9ycG1fYWx3YXlzX29uKGRldiwgaGJh LT5ycG1fbHZsIDwgVUZTX1BNX0xWTF81ID8gdHJ1ZSA6IGZhbHNlKTsKPj4gKwo+PiArCXJldHVy biB1ZnNoY2RfcnVudGltZV9zdXNwZW5kKGRldik7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQg dWZzX3JvY2tjaGlwX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldikKPj4gK3sKPj4g KwlzdHJ1Y3QgdWZzX2hiYSAqaGJhID0gZGV2X2dldF9kcnZkYXRhKGRldik7Cj4+ICsJc3RydWN0 IHVmc19yb2NrY2hpcF9ob3N0ICpob3N0ID0gdWZzaGNkX2dldF92YXJpYW50KGhiYSk7Cj4+ICsJ aW50IGVycjsKPj4gKwo+PiArCWVyciA9IGNsa19wcmVwYXJlX2VuYWJsZShob3N0LT5yZWZfb3V0 X2Nsayk7Cj4+ICsJaWYgKGVycikgewo+PiArCQlkZXZfZXJyKGhiYS0+ZGV2LCAiZmFpbGVkIHRv IGVuYWJsZSByZWYgb3V0IGNsb2NrICVkXG4iLCBlcnIpOwo+PiArCQlyZXR1cm4gZXJyOwo+PiAr CX0KPj4gKwo+PiArCXJlc2V0X2NvbnRyb2xfYXNzZXJ0KGhvc3QtPnJzdCk7Cj4+ICsJdXNsZWVw X3JhbmdlKDEsIDIpOwo+PiArCXJlc2V0X2NvbnRyb2xfZGVhc3NlcnQoaG9zdC0+cnN0KTsKPj4g Kwo+PiArCXJldHVybiB1ZnNoY2RfcnVudGltZV9yZXN1bWUoZGV2KTsKPj4gK30KPj4gKyNlbmRp Zgo+PiArCj4+ICsjaWZkZWYgQ09ORklHX1BNX1NMRUVQCj4+ICtzdGF0aWMgaW50IHVmc19yb2Nr Y2hpcF9zeXN0ZW1fc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICsJc3RydWN0 IHVmc19oYmEgKmhiYSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCj4+ICsJaWYgKGhiYS0+ c3BtX2x2bCA8IDUpCj4+ICsJCWRldmljZV9zZXRfd2FrZXVwX3BhdGgoZGV2KTsKPj4gKwllbHNl Cj4+ICsJCWRldmljZV9jbHJfd2FrZXVwX3BhdGgoZGV2KTsKPiAKPiBUaGlzIHNob3VsZCBiZSB0 YWtlbiBjYXJlIGJ5IGRyaXZlciBjb3JlLgo+IAo+IC0gTWFuaQo+IAoKCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tjaGlwIG1haWxpbmcg bGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK