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 838C2C52D71 for ; Fri, 9 Aug 2024 08:17:32 +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=jWcMwxBwxaT3SlwxM0F7FfnbSyrPtpYNzKFGmTsX2Kw=; b=3AxgI2eXGrV7D7 lfT3iY6cE+vRfEuhxLoh4tnzvSwiZf4PgCPFZBp8hLEwHvI03fGpN2FB+6GoigBQG9BS0w6r6ZCC7 Yo4VPGWc+0fYjIfPvtM5PazoYlp+yerdAjdn/F/PVGemNVaecn3ytlo2xcLQXIRoOgwFYdv4UjQ6a vvrhkX9qwQcpGGTnhMjcRC+jdw/VH4MPvbcA2AiuCI/c284bdZartA7nqd9FQtRPRi5H4Lagmj8Bk Sjj1sMhxap36RvxK/iqDsqqHyIl4BCRceAhzEkvpQlvzkfMzYYZDsijjZm21GpbsIkjksrP/EEb/V UP69vpvhmNqRP8fcQlNg==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1scKoS-0000000AeuF-1FvE; Fri, 09 Aug 2024 08:17:28 +0000 Received: from mail-m127171.xmail.ntesmail.com ([115.236.127.171]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1scKoO-0000000Aet1-1fiX for linux-rockchip@lists.infradead.org; Fri, 09 Aug 2024 08:17:27 +0000 DKIM-Signature: a=rsa-sha256; b=G60rWaM1FeFUABTIzk/3JC1VcNw/rvY9scjfs0OqvT02HGstOKsf2kq8flQWRnop529GHs6X+PvcKtQsW1f7YKKSR8HNeSnNR7pcllt9tYd1j+QSAAD8QyykV3/+t4DGhPa6rdvLhzOKals6FM5685VrFH8goRmb+MEDj8sFxA0=; c=relaxed/relaxed; s=default; d=rock-chips.com; v=1; bh=+4lU7weacAbAcla6+btR1q1HDUNuPSWxc4GTP2p+mJA=; h=date:mime-version:subject:message-id:from; Received: from [172.16.12.69] (unknown [58.22.7.114]) by smtp.qiye.163.com (Hmail) with ESMTPA id 98B564604DF; Fri, 9 Aug 2024 16:16:41 +0800 (CST) Message-ID: <421d48b7-4aa7-4202-8b5f-9c60916f6ef6@rock-chips.com> Date: Fri, 9 Aug 2024 16:16:41 +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 , Heiko Stuebner , Alim Akhtar , Avri Altman , Bart Van Assche , YiFeng Zhao , Liang Chen , linux-scsi@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: Re: [PATCH v2 3/3] scsi: ufs: rockchip: init support for UFS To: Manivannan Sadhasivam References: <1723089163-28983-1-git-send-email-shawn.lin@rock-chips.com> <1723089163-28983-4-git-send-email-shawn.lin@rock-chips.com> <20240809062813.GC2826@thinkpad> Content-Language: en-GB From: Shawn Lin In-Reply-To: <20240809062813.GC2826@thinkpad> X-HM-Spam-Status: e1kfGhgUHx5ZQUpXWQgPGg8OCBgUHx5ZQUlOS1dZFg8aDwILHllBWSg2Ly tZV1koWUFDSUNOT01LS0k3V1ktWUFJV1kPCRoVCBIfWUFZGUtLGlZPGUgdSBpISksZQk9WFRQJFh oXVRMBExYaEhckFA4PWVdZGBILWUFZTkNVSUlVTFVKSk9ZV1kWGg8SFR0UWUFZT0tIVUpLSUhCSE NVSktLVUpCS0tZBg++ X-HM-Tid: 0a91363620c903aekunm98b564604df X-HM-MType: 1 X-HM-Sender-Digest: e1kMHhlZQR0aFwgeV1kSHx4VD1lBWUc6OQg6OCo6TzI3Dw88H0shCg8* IhgKCzFVSlVKTElISkJKT0tISEJOVTMWGhIXVQgTGgwVVRcSFTsJFBgQVhgTEgsIVRgUFkVZV1kS C1lBWU5DVUlJVUxVSkpPWVdZCAFZQUpCSENMNwY+ X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240809_011725_103459_377C5CE6 X-CRM114-Status: GOOD ( 40.00 ) 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 SGkgTWFuaQoKVGhhbmtzIGZvciB0aGUgY29tbWVudHMuCgrlnKggMjAyNC84LzkgMTQ6MjgsIE1h bml2YW5uYW4gU2FkaGFzaXZhbSDlhpnpgZM6Cj4gT24gVGh1LCBBdWcgMDgsIDIwMjQgYXQgMTE6 NTI6NDNBTSArMDgwMCwgU2hhd24gTGluIHdyb3RlOgo+PiBSSzM1NzYgY29udGFpbnMgYSBVRlMg Y29udHJvbGxlciwgYWRkIGluaXQgc3VwcG9ydCBmb3QgaXQuCj4+Cj4gCj4gVGhpcyBkZXNjcmlw dGlvbiBpcyB2ZXJ5IHNpbXBsZS4gUGxlYXNlIGFkZCBtb3JlIGluZm8gbGlrZSB0aGUgVUZTSENE IHZlcnNpb24sCj4gbGFuZSBjb25maWcsIHF1aXJrcyBhbmQgYW55IG90aGVyIHZlbmRvciBzcGVj aWZpYyBkaWZmZXJlbmNlLgo+IAoKV2lsbCBpbXByb3ZlLgoKPj4gU2lnbmVkLW9mZi1ieTogU2hh d24gTGluIDxzaGF3bi5saW5Acm9jay1jaGlwcy5jb20+Cj4+Cj4+IC0tLQo+Pgo+PiBDaGFuZ2Vz IGluIHYyOgo+PiAtIHVzZSBkZXZfcHJvYmVfZXJyCj4+IC0gcmVtb3ZlIHVmcy1waHktY29uZmln LW1vZGUgYXMgaXQncyBub3QgdXNlZAo+PiAtIGRyb3Agb2ZfbWF0Y2hfcHRyCj4+Cj4+ICAgZHJp dmVycy91ZnMvaG9zdC9LY29uZmlnICAgICAgICB8ICAxMiArKwo+PiAgIGRyaXZlcnMvdWZzL2hv c3QvTWFrZWZpbGUgICAgICAgfCAgIDEgKwo+PiAgIGRyaXZlcnMvdWZzL2hvc3QvdWZzLXJvY2tj aGlwLmMgfCA0MzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAg IGRyaXZlcnMvdWZzL2hvc3QvdWZzLXJvY2tjaGlwLmggfCAgNTEgKysrKysKPj4gICA0IGZpbGVz IGNoYW5nZWQsIDUwMiBpbnNlcnRpb25zKCspCj4+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZl cnMvdWZzL2hvc3QvdWZzLXJvY2tjaGlwLmMKPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVy cy91ZnMvaG9zdC91ZnMtcm9ja2NoaXAuaAo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91ZnMv aG9zdC9LY29uZmlnIGIvZHJpdmVycy91ZnMvaG9zdC9LY29uZmlnCj4+IGluZGV4IDU4MGM4ZDAu LmZhZmFhMzMgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvdWZzL2hvc3QvS2NvbmZpZwo+PiArKysg Yi9kcml2ZXJzL3Vmcy9ob3N0L0tjb25maWcKPj4gQEAgLTE0MiwzICsxNDIsMTUgQEAgY29uZmln IFNDU0lfVUZTX1NQUkQKPj4gICAKPj4gICAJICBTZWxlY3QgdGhpcyBpZiB5b3UgaGF2ZSBVRlMg Y29udHJvbGxlciBvbiBVbmlzb2MgY2hpcHNldC4KPj4gICAJICBJZiB1bnN1cmUsIHNheSBOLgo+ PiArCj4+ICtjb25maWcgU0NTSV9VRlNfUk9DS0NISVAKPj4gKwl0cmlzdGF0ZSAiUm9ja2NoaXAg c3BlY2lmaWMgaG9va3MgdG8gVUZTIGNvbnRyb2xsZXIgcGxhdGZvcm0gZHJpdmVyIgo+PiArCWRl cGVuZHMgb24gU0NTSV9VRlNIQ0RfUExBVEZPUk0gJiYgKEFSQ0hfUk9DS0NISVAgfHwgQ09NUElM RV9URVNUKQo+PiArCWhlbHAKPj4gKwkgIFRoaXMgc2VsZWN0cyB0aGUgUm9ja2NoaXAgc3BlY2lm aWMgYWRkaXRpb25zIHRvIFVGU0hDRCBwbGF0Zm9ybSBkcml2ZXIuCj4+ICsJICBVRlMgaG9zdCBv biBSb2NrY2hpcCBuZWVkcyBzb21lIHZlbmRvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGJlZm9y ZQo+PiArCSAgYWNjZXNzaW5nIHRoZSBoYXJkd2FyZSB3aGljaCBpbmNsdWRlcyBQSFkgY29uZmln dXJhdGlvbiBhbmQgdmVuZG9yCj4+ICsJICBzcGVjaWZpYyByZWdpc3RlcnMuCj4+ICsKPj4gKwkg IFNlbGVjdCB0aGlzIGlmIHlvdSBoYXZlIFVGUyBjb250cm9sbGVyIG9uIFJvY2tjaGlwIGNoaXBz ZXQuCj4+ICsJICBJZiB1bnN1cmUsIHNheSBOLgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91ZnMv aG9zdC9NYWtlZmlsZSBiL2RyaXZlcnMvdWZzL2hvc3QvTWFrZWZpbGUKPj4gaW5kZXggNDU3M2Fl YS4uMmY5N2ZlYiAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy91ZnMvaG9zdC9NYWtlZmlsZQo+PiAr KysgYi9kcml2ZXJzL3Vmcy9ob3N0L01ha2VmaWxlCj4+IEBAIC0xMCw1ICsxMCw2IEBAIG9iai0k KENPTkZJR19TQ1NJX1VGU0hDRF9QTEFURk9STSkgKz0gdWZzaGNkLXBsdGZybS5vCj4+ICAgb2Jq LSQoQ09ORklHX1NDU0lfVUZTX0hJU0kpICs9IHVmcy1oaXNpLm8KPj4gICBvYmotJChDT05GSUdf U0NTSV9VRlNfTUVESUFURUspICs9IHVmcy1tZWRpYXRlay5vCj4+ICAgb2JqLSQoQ09ORklHX1ND U0lfVUZTX1JFTkVTQVMpICs9IHVmcy1yZW5lc2FzLm8KPj4gK29iai0kKENPTkZJR19TQ1NJX1VG U19ST0NLQ0hJUCkgKz0gdWZzLXJvY2tjaGlwLm8KPj4gICBvYmotJChDT05GSUdfU0NTSV9VRlNf U1BSRCkgKz0gdWZzLXNwcmQubwo+PiAgIG9iai0kKENPTkZJR19TQ1NJX1VGU19USV9KNzIxRSkg Kz0gdGktajcyMWUtdWZzLm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvdWZzL2hvc3QvdWZzLXJv Y2tjaGlwLmMgYi9kcml2ZXJzL3Vmcy9ob3N0L3Vmcy1yb2NrY2hpcC5jCj4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAuLjQ2YzkwZDYKPj4gLS0tIC9kZXYvbnVsbAo+PiAr KysgYi9kcml2ZXJzL3Vmcy9ob3N0L3Vmcy1yb2NrY2hpcC5jCj4+IEBAIC0wLDAgKzEsNDM4IEBA Cj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4+ICsvKgo+PiAr ICogUm9ja2NoaXAgVUZTIEhvc3QgQ29udHJvbGxlciBkcml2ZXIKPj4gKyAqCj4+ICsgKiBDb3B5 cmlnaHQgKEMpIDIwMjQgUm9ja2NoaXAgRWxlY3Ryb25pY3MgQ28uTHRkLgo+PiArICovCj4+ICsK Pj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9ncGlvLmg+Cj4+ ICsjaW5jbHVkZSA8bGludXgvbWZkL3N5c2Nvbi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L29mLmg+ Cj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGlu dXgvcmVnbWFwLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVzZXQuaD4KPj4gKwo+PiArI2luY2x1 ZGUgPHVmcy91ZnNoY2QuaD4KPj4gKyNpbmNsdWRlIDx1ZnMvdW5pcHJvLmg+Cj4+ICsjaW5jbHVk ZSAidWZzaGNkLXBsdGZybS5oIgo+PiArI2luY2x1ZGUgInVmc2hjZC1kd2MuaCIKPj4gKyNpbmNs dWRlICJ1ZnMtcm9ja2NoaXAuaCIKPj4gKwo+PiArc3RhdGljIGlubGluZSBib29sIHVmc2hjZF9p c19kZXZpY2VfcHJlc2VudChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQo+IAo+IE5vIGlubGluZSBpbiAu YyBmaWxlIHBsZWFzZS4KCm9rLgoKPiAKPj4gK3sKPj4gKwlyZXR1cm4gdWZzaGNkX3JlYWRsKGhi YSwgUkVHX0NPTlRST0xMRVJfU1RBVFVTKSAmIERFVklDRV9QUkVTRU5UOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgaW50IHVmc19yb2NrY2hpcF9oY2VfZW5hYmxlX25vdGlmeShzdHJ1Y3QgdWZzX2hi YSAqaGJhLAo+PiArCQkJCQkgZW51bSB1ZnNfbm90aWZ5X2NoYW5nZV9zdGF0dXMgc3RhdHVzKQo+ PiArewo+PiArCWludCBlcnIgPSAwOwo+PiArCj4+ICsJaWYgKHN0YXR1cyA9PSBQUkVfQ0hBTkdF KSB7Cj4+ICsJCWludCByZXRyeV9vdXRlciA9IDM7Cj4+ICsJCWludCByZXRyeV9pbm5lcjsKPj4g K3N0YXJ0Ogo+PiArCQlpZiAodWZzaGNkX2lzX2hiYV9hY3RpdmUoaGJhKSkKPj4gKwkJCS8qIGNo YW5nZSBjb250cm9sbGVyIHN0YXRlIHRvICJyZXNldCBzdGF0ZSIgKi8KPj4gKwkJCXVmc2hjZF9o YmFfc3RvcChoYmEpOwo+PiArCj4+ICsJCS8qIFVuaVBybyBsaW5rIGlzIGRpc2FibGVkIGF0IHRo aXMgcG9pbnQgKi8KPj4gKwkJdWZzaGNkX3NldF9saW5rX29mZihoYmEpOwo+PiArCj4+ICsJCS8q IHN0YXJ0IGNvbnRyb2xsZXIgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UgKi8KPj4gKwkJdWZzaGNk X3dyaXRlbChoYmEsIENPTlRST0xMRVJfRU5BQkxFLCBSRUdfQ09OVFJPTExFUl9FTkFCTEUpOwo+ PiArCj4+ICsJCXVzbGVlcF9yYW5nZSgxMDAsIDIwMCk7Cj4+ICsKPj4gKwkJLyogd2FpdCBmb3Ig dGhlIGhvc3QgY29udHJvbGxlciB0byBjb21wbGV0ZSBpbml0aWFsaXphdGlvbiAqLwo+PiArCQly ZXRyeV9pbm5lciA9IDUwOwo+PiArCQl3aGlsZSAoIXVmc2hjZF9pc19oYmFfYWN0aXZlKGhiYSkp IHsKPj4gKwkJCWlmIChyZXRyeV9pbm5lcikgewo+PiArCQkJCXJldHJ5X2lubmVyLS07Cj4+ICsJ CQl9IGVsc2Ugewo+PiArCQkJCWRldl9lcnIoaGJhLT5kZXYsCj4+ICsJCQkJCSJDb250cm9sbGVy IGVuYWJsZSBmYWlsZWRcbiIpOwo+PiArCQkJCWlmIChyZXRyeV9vdXRlcikgewo+PiArCQkJCQly ZXRyeV9vdXRlci0tOwo+PiArCQkJCQlnb3RvIHN0YXJ0Owo+PiArCQkJCX0KPj4gKwkJCQlyZXR1 cm4gLUVJTzsKPj4gKwkJCX0KPj4gKwkJCXVzbGVlcF9yYW5nZSgxMDAwLCAxMTAwKTsKPj4gKwkJ fQo+IAo+IFlvdSBqdXN0IGR1cGxpY2F0ZWQgdWZzaGNkX2hiYV9leGVjdXRlX2hjZSgpIGhlcmUu IFdoeT8gVGhpcyBkb2Vzbid0IG1ha2Ugc2Vuc2UuCgpTaW5jZSB3ZSBzZXQgVUZTSENJX1FVSVJL X0JST0tFTl9IQ0UsIGFuZCB3ZSBhbHNvIG5lZWQgdG8gZG8gc29tZXRpbmcKd2hpY2ggaXMgdmVy eSBzaW1pbGFyIHRvIHVmc2hjZF9oYmFfZXhlY3V0ZV9oY2UoKSwgYmVmb3JlIGNhbGxpbmcKdWZz aGNkX2RtZV9yZXNldCgpLiBTaW1pbGFyIGJ1dCBub3QgdG90YWxseSB0aGUgc2FtZS4gSSdsbCB0 cnkgdG8gc2VlIGlmCndlIGNhbiBleHBvcnQgdWZzaGNkX2hiYV9leGVjdXRlX2hjZSgpIHRvIG1h a2UgZnVsbCB1c2Ugb2YgaXQuCgo+IAo+PiArCX0gZWxzZSB7IC8qIFBPU1RfQ0hBTkdFICovCj4+ ICsJCWVyciA9IHVmc2hjZF92b3BzX3BoeV9pbml0aWFsaXphdGlvbihoYmEpOwo+PiArCX0KPj4g Kwo+PiArCXJldHVybiBlcnI7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHVmc19yb2NrY2hp cF9zZXRfcG1fbHZsKHN0cnVjdCB1ZnNfaGJhICpoYmEpCj4+ICt7Cj4+ICsJaGJhLT5ycG1fbHZs ID0gVUZTX1BNX0xWTF8xOwo+PiArCWhiYS0+c3BtX2x2bCA9IFVGU19QTV9MVkxfMzsKPj4gK30K Pj4gKwo+PiArc3RhdGljIGludCB1ZnNfcm9ja2NoaXBfcmszNTc2X3BoeV9pbml0KHN0cnVjdCB1 ZnNfaGJhICpoYmEpCj4+ICt7Cj4+ICsJc3RydWN0IHVmc19yb2NrY2hpcF9ob3N0ICpob3N0ID0g dWZzaGNkX2dldF92YXJpYW50KGhiYSk7Cj4+ICsKPj4gKwl1ZnNoY2RfZG1lX3NldChoYmEsIFVJ Q19BUkdfTUlCX1NFTChQQV9MT0NBTF9UWF9MQ0NfRU5BQkxFLCAweDApLCAweDApOwo+PiArCS8q IGVuYWJsZSB0aGUgbXBoeSBETUVfU0VUIGNmZyAqLwo+PiArCXVmc2hjZF9kbWVfc2V0KGhiYSwg VUlDX0FSR19NSUJfU0VMKDB4MjAwLCAweDApLCAweDQwKTsKPj4gKwlmb3IgKGludCBpID0gMDsg aSA8IDI7IGkrKykgewo+PiArCQkvKiBDb25maWd1cmF0aW9uIE0tVFggKi8KPj4gKwkJdWZzaGNk X2RtZV9zZXQoaGJhLCBVSUNfQVJHX01JQl9TRUwoMHhhYSwgU0VMX1RYX0xBTkUwICsgaSksIDB4 MDYpOwo+PiArCQl1ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweGE5LCBTRUxf VFhfTEFORTAgKyBpKSwgMHgwMik7Cj4+ICsJCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19N SUJfU0VMKDB4YWQsIFNFTF9UWF9MQU5FMCArIGkpLCAweDQ0KTsKPj4gKwkJdWZzaGNkX2RtZV9z ZXQoaGJhLCBVSUNfQVJHX01JQl9TRUwoMHhhYywgU0VMX1RYX0xBTkUwICsgaSksIDB4ZTYpOwo+ PiArCQl1ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweGFiLCBTRUxfVFhfTEFO RTAgKyBpKSwgMHgwNyk7Cj4+ICsJCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VM KDB4OTQsIFNFTF9UWF9MQU5FMCArIGkpLCAweDkzKTsKPj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJh LCBVSUNfQVJHX01JQl9TRUwoMHg5MywgU0VMX1RYX0xBTkUwICsgaSksIDB4YzkpOwo+PiArCQl1 ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweDdmLCBTRUxfVFhfTEFORTAgKyBp KSwgMHgwMCk7Cj4+ICsJCS8qIENvbmZpZ3VyYXRpb24gTS1SWCAqLwo+PiArCQl1ZnNoY2RfZG1l X3NldChoYmEsIFVJQ19BUkdfTUlCX1NFTCgweDEyLCBTRUxfUlhfTEFORTAgKyBpKSwgMHgwNik7 Cj4+ICsJCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4MTEsIFNFTF9SWF9M QU5FMCArIGkpLCAweDAwKTsKPj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNfQVJHX01JQl9T RUwoMHgxZCwgU0VMX1JYX0xBTkUwICsgaSksIDB4NTgpOwo+PiArCQl1ZnNoY2RfZG1lX3NldCho YmEsIFVJQ19BUkdfTUlCX1NFTCgweDFjLCBTRUxfUlhfTEFORTAgKyBpKSwgMHg4Yyk7Cj4+ICsJ CXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKDB4MWIsIFNFTF9SWF9MQU5FMCAr IGkpLCAweDAyKTsKPj4gKwkJdWZzaGNkX2RtZV9zZXQoaGJhLCBVSUNfQVJHX01JQl9TRUwoMHgy NSwgU0VMX1JYX0xBTkUwICsgaSksIDB4ZjYpOwo+PiArCQl1ZnNoY2RfZG1lX3NldChoYmEsIFVJ Q19BUkdfTUlCX1NFTCgweDJmLCBTRUxfUlhfTEFORTAgKyBpKSwgMHg2OSk7Cj4+ICsJfQo+PiAr CS8qIGRpc2FibGUgdGhlIG1waHkgRE1FX1NFVCBjZmcgKi8KPj4gKwl1ZnNoY2RfZG1lX3NldCho YmEsIFVJQ19BUkdfTUlCX1NFTCgweDIwMCwgMHgwKSwgMHgwMCk7Cj4+ICsKPj4gKwl1ZnNfc3lz X3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4ODAsIDB4MDhDKTsKPj4gKwl1ZnNfc3lzX3dyaXRl bChob3N0LT5tcGh5X2Jhc2UsIDB4QjUsIDB4MTEwKTsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0 LT5tcGh5X2Jhc2UsIDB4QjUsIDB4MjUwKTsKPj4gKwo+IAo+IFdoeSBjYW4ndCB5b3UgZG8gdGhl c2Ugc2V0dGluZ3MgaW4gYSBQSFkgZHJpdmVyPwoKQXMgd2UgaGF2ZSAtPnBoeV9pbml0aWFsaXph dGlvbiBpbiBzdHJ1Y3QgdWZzX2hiYV92YXJpYW50X29wcywKd2hpY2ggYXNrcyB0aGUgaG9zdCBk cml2ZXIgdG8gdXNlIGl0IHRvIGluaXRpYWxpemUgcGh5cy4gSXQgZG9lc24ndApzZWVtIHRvIG5l ZWQgdG8gY3JlYXRlIGEgd2hvbGUgbmV3IGZpbGUgdG8ganVzdCBhZGQgc29tZSBzbWFsbHMgZml4 ZWQKcGFyYW1ldGVycy4gOikKCgo+IAo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFz ZSwgMHgwMywgMHgxMzQpOwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHgw MywgMHgyNzQpOwo+PiArCj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDM4 LCAweDBFMCk7Cj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDM4LCAweDIy MCk7Cj4+ICsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4NTAsIDB4MTY0 KTsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4NTAsIDB4MkE0KTsKPj4g Kwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHg4MCwgMHgxNzgpOwo+PiAr CXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHg4MCwgMHgyQjgpOwo+PiArCj4+ICsJ dWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDE4LCAweDFCMCk7Cj4+ICsJdWZzX3N5 c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweDE4LCAweDJGMCk7Cj4+ICsKPj4gKwl1ZnNfc3lz X3dyaXRlbChob3N0LT5tcGh5X2Jhc2UsIDB4MDMsIDB4MTI4KTsKPj4gKwl1ZnNfc3lzX3dyaXRl bChob3N0LT5tcGh5X2Jhc2UsIDB4MDMsIDB4MjY4KTsKPj4gKwo+PiArCXVmc19zeXNfd3JpdGVs KGhvc3QtPm1waHlfYmFzZSwgMHgyMCwgMHgxMkMpOwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3Qt Pm1waHlfYmFzZSwgMHgyMCwgMHgyNkMpOwo+PiArCj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+ bXBoeV9iYXNlLCAweEMwLCAweDEyMCk7Cj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9i YXNlLCAweEMwLCAweDI2MCk7Cj4+ICsKPj4gKwl1ZnNfc3lzX3dyaXRlbChob3N0LT5tcGh5X2Jh c2UsIDB4MDMsIDB4MDk0KTsKPj4gKwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFz ZSwgMHgwMywgMHgxQjQpOwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlfYmFzZSwgMHgw MywgMHgyRjQpOwo+PiArCj4+ICsJdWZzX3N5c193cml0ZWwoaG9zdC0+bXBoeV9iYXNlLCAweEMw LCAweDA4Qyk7Cj4+ICsJdWRlbGF5KDEpOwo+PiArCXVmc19zeXNfd3JpdGVsKGhvc3QtPm1waHlf YmFzZSwgMHgwMCwgMHgwOEMpOwo+PiArCj4+ICsJdWRlbGF5KDIwMCk7Cj4+ICsJLyogc3RhcnQg bGluayB1cCAqLwo+PiArCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKE1JQl9U X0RCR19DUE9SVF9UWF9FTkRJQU4sIDApLCAweDApOwo+PiArCXVmc2hjZF9kbWVfc2V0KGhiYSwg VUlDX0FSR19NSUJfU0VMKE1JQl9UX0RCR19DUE9SVF9SWF9FTkRJQU4sIDApLCAweDApOwo+PiAr CXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKE5fREVWSUNFSUQsIDApLCAweDAp Owo+PiArCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKE5fREVWSUNFSURfVkFM SUQsIDApLCAweDEpOwo+PiArCXVmc2hjZF9kbWVfc2V0KGhiYSwgVUlDX0FSR19NSUJfU0VMKFRf UEVFUkRFVklDRUlELCAwKSwgMHgxKTsKPj4gKwl1ZnNoY2RfZG1lX3NldChoYmEsIFVJQ19BUkdf TUlCX1NFTChUX0NPTk5FQ1RJT05TVEFURSwgMCksIDB4MSk7Cj4+ICsKPj4gKwlyZXR1cm4gMDsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGludCB1ZnNfcm9ja2NoaXBfY29tbW9uX2luaXQoc3RydWN0 IHVmc19oYmEgKmhiYSkKPj4gK3sKPj4gKwlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBoYmEtPmRldjsK Pj4gKwlzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRl dik7Cj4+ICsJc3RydWN0IHVmc19yb2NrY2hpcF9ob3N0ICpob3N0Owo+PiArCWludCBlcnIgPSAw Owo+PiArCj4+ICsJaG9zdCA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaG9zdCksIEdGUF9L RVJORUwpOwo+PiArCWlmICghaG9zdCkKPj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gKwkv KiBzeXN0ZW0gY29udHJvbCByZWdpc3RlciBmb3IgaGNpICovCj4+ICsJaG9zdC0+dWZzX3N5c19j dHJsID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAiaGNpX2dy ZiIpOwo+PiArCWlmIChJU19FUlIoaG9zdC0+dWZzX3N5c19jdHJsKSkKPj4gKwkJcmV0dXJuIGRl dl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGhvc3QtPnVmc19zeXNfY3RybCksCj4+ICsJCQkJCSJj YW5ub3QgaW9yZW1hcCBmb3IgaGNpIHN5c3RlbSBjb250cm9sIHJlZ2lzdGVyXG4iKTsKPj4gKwo+ PiArCS8qIHN5c3RlbSBjb250cm9sIHJlZ2lzdGVyIGZvciBtcGh5ICovCj4+ICsJaG9zdC0+dWZz X3BoeV9jdHJsID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlX2J5bmFtZShwZGV2LCAi bXBoeV9ncmYiKTsKPj4gKwlpZiAoSVNfRVJSKGhvc3QtPnVmc19waHlfY3RybCkpCj4+ICsJCXJl dHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihob3N0LT51ZnNfcGh5X2N0cmwpLAo+PiAr CQkJCSJjYW5ub3QgaW9yZW1hcCBmb3IgbXBoeSBzeXN0ZW0gY29udHJvbCByZWdpc3RlclxuIik7 Cj4+ICsKPj4gKwkvKiBtcGh5IGJhc2UgcmVnaXN0ZXIgKi8KPj4gKwlob3N0LT5tcGh5X2Jhc2Ug PSBkZXZtX3BsYXRmb3JtX2lvcmVtYXBfcmVzb3VyY2VfYnluYW1lKHBkZXYsICJtcGh5Iik7Cj4+ ICsJaWYgKElTX0VSUihob3N0LT5tcGh5X2Jhc2UpKQo+PiArCQlyZXR1cm4gZGV2X2Vycl9wcm9i ZShkZXYsIFBUUl9FUlIoaG9zdC0+bXBoeV9iYXNlKSwKPj4gKwkJCQkJImNhbm5vdCBpb3JlbWFw IGZvciBtcGh5IGJhc2UgcmVnaXN0ZXJcbiIpOwo+PiArCj4+ICsJaG9zdC0+cnN0ID0gZGV2bV9y ZXNldF9jb250cm9sX2FycmF5X2dldF9leGNsdXNpdmUoZGV2KTsKPj4gKwlpZiAoSVNfRVJSKGhv c3QtPnJzdCkpCj4+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihob3N0LT5y c3QpLCAiZmFpbGVkIHRvIGdldCByZXNldCBjb250cm9sXG4iKTsKPj4gKwo+PiArCXJlc2V0X2Nv bnRyb2xfYXNzZXJ0KGhvc3QtPnJzdCk7Cj4+ICsJdWRlbGF5KDEpOwo+PiArCXJlc2V0X2NvbnRy b2xfZGVhc3NlcnQoaG9zdC0+cnN0KTsKPj4gKwo+PiArCWhvc3QtPnJlZl9vdXRfY2xrID0gZGV2 bV9jbGtfZ2V0KGRldiwgInJlZl9vdXQiKTsKPj4gKwlpZiAoSVNfRVJSKGhvc3QtPnJlZl9vdXRf Y2xrKSkKPj4gKwkJcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCBQVFJfRVJSKGhvc3QtPnJlZl9v dXRfY2xrKSwgImNpdS1kcml2ZSBub3QgYXZhaWxhYmxlXG4iKTsKPiAKPiBXaGF0IGlzICdjaXUt ZHJpdmUnPwoKV2lsbCBmaXguCgo+IAo+PiArCj4+ICsJZXJyID0gY2xrX3ByZXBhcmVfZW5hYmxl KGhvc3QtPnJlZl9vdXRfY2xrKTsKPj4gKwlpZiAoZXJyKQo+PiArCQlyZXR1cm4gZGV2X2Vycl9w cm9iZShkZXYsIGVyciwgImZhaWxlZCB0byBlbmFibGUgcmVmIG91dCBjbG9ja1xuIik7Cj4+ICsK Pj4gKwlob3N0LT5yc3RfZ3BpbyA9IGRldm1fZ3Bpb2RfZ2V0KCZwZGV2LT5kZXYsICJyZXNldCIs IEdQSU9EX09VVF9MT1cpOwo+PiArCWlmIChJU19FUlIoaG9zdC0+cnN0X2dwaW8pKSB7Cj4+ICsJ CWRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgUFRSX0VSUihob3N0LT5yc3RfZ3BpbyksCj4+ICsJ CQkJImludmFsaWQgcmVzZXQtZ3Bpb3MgcHJvcGVydHkgaW4gbm9kZVxuIik7Cj4+ICsJCWVyciA9 IFBUUl9FUlIoaG9zdC0+cnN0X2dwaW8pOwo+IAo+IEtyenlzenRvZiBhbHJlYWR5IHBvaW50ZWQg b3V0IHRoaXMuCj4gCj4+ICsJCWdvdG8gb3V0Owo+PiArCX0KPj4gKwl1ZGVsYXkoMjApOwo+PiAr CWdwaW9kX3NldF92YWx1ZV9jYW5zbGVlcChob3N0LT5yc3RfZ3BpbywgMSk7Cj4gCj4gV2h5IGRv IHlvdSBuZWVkIHRvIGFzc2VydCBkZXZpY2UgcmVzZXQgaGVyZT8gdWZzaGNkIGRyaXZlciB3aWxs IGRvIGl0IGFueXdheS4KPiAKClllcywgSSBzZWUgdWZzaGNkX2luaXTvvIjvvIl3aWxsIGRvIHRo YXQgbm93LiBXaWxsIGltcHJvdmUuCgo+PiArCj4+ICsJaG9zdC0+Y2xrc1swXS5pZCA9ICJjb3Jl IjsKPj4gKwlob3N0LT5jbGtzWzFdLmlkID0gInBjbGsiOwo+PiArCWhvc3QtPmNsa3NbMl0uaWQg PSAicGNsa19tcGh5IjsKPj4gKwllcnIgPSBkZXZtX2Nsa19idWxrX2dldF9vcHRpb25hbChkZXYs IFVGU19NQVhfQ0xLUywgaG9zdC0+Y2xrcyk7Cj4+ICsJaWYgKGVycikgewo+PiArCQlkZXZfZXJy X3Byb2JlKGRldiwgZXJyLCAiZmFpbGVkIHRvIGdldCBjbG9ja3NcbiIpOwo+PiArCQlnb3RvIG91 dDsKPj4gKwl9Cj4+ICsKPj4gKwllcnIgPSBjbGtfYnVsa19wcmVwYXJlX2VuYWJsZShVRlNfTUFY X0NMS1MsIGhvc3QtPmNsa3MpOwo+PiArCWlmIChlcnIpIHsKPj4gKwkJZGV2X2Vycl9wcm9iZShk ZXYsIGVyciwgImZhaWxlZCB0byBlbmFibGUgY2xvY2tzXG4iKTsKPj4gKwkJZ290byBvdXQ7Cj4+ ICsJfQo+PiArCj4+ICsJcG1fcnVudGltZV9zZXRfYWN0aXZlKCZwZGV2LT5kZXYpOwo+IAo+IFRo aXMgaXMgYWxyZWFkeSBjYWxsZWQgaW4gdWZzaGNkX3BsdGZybV9pbml0KCkuCgpPay4KCj4gCj4+ ICsKPj4gKwlob3N0LT5oYmEgPSBoYmE7Cj4+ICsJdWZzX3JvY2tjaGlwX3NldF9wbV9sdmwoaGJh KTsKPj4gKwo+PiArCXVmc2hjZF9zZXRfdmFyaWFudChoYmEsIGhvc3QpOwo+PiArCj4+ICsJcmV0 dXJuIDA7Cj4+ICtvdXQ6Cj4gCj4gcy9vdXQvZGlzYWJsZV9yZWZfY2xrCgpXaWxsIGZpeC4KCj4g Cj4+ICsJY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGhvc3QtPnJlZl9vdXRfY2xrKTsKPj4gKwlyZXR1 cm4gZXJyOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IHVmc19yb2NrY2hpcF9yazM1NzZfaW5p dChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQo+PiArewo+PiArCWludCByZXQgPSAwOwo+IAo+IEluaXRp YWxpemF0aW9uIG5vdCBuZWVkZWQuCj4gCj4+ICsJc3RydWN0IGRldmljZSAqZGV2ID0gaGJhLT5k ZXY7Cj4+ICsKPiAKPiBBbHNvIHJldmVyc2UgWG1hcyBvcmRlciBmb3IgbG9jYWwgdmFyaWFibGVz IHBsZWFzZS4KCldpbGwgaW1wcm92ZSwgYXMgYmxvdyB0aGUgc2FtZS4KCj4gCj4+ICsJaGJhLT5x dWlya3MgPSBVRlNIQ0lfUVVJUktfQlJPS0VOX0hDRSB8IFVGU0hDRF9RVUlSS19TS0lQX0RFRl9V TklQUk9fVElNRU9VVF9TRVRUSU5HOwo+PiArCj4+ICsJLyogRW5hYmxlIEJLT1BTIHdoZW4gc3Vz cGVuZCAqLwo+PiArCWhiYS0+Y2FwcyB8PSBVRlNIQ0RfQ0FQX0FVVE9fQktPUFNfU1VTUEVORDsK Pj4gKwkvKiBFbmFibGUgcHV0dGluZyBkZXZpY2UgaW50byBkZWVwIHNsZWVwICovCj4+ICsJaGJh LT5jYXBzIHw9IFVGU0hDRF9DQVBfREVFUFNMRUVQOwo+PiArCS8qIEVuYWJsZSBkZXZmcmVxIG9m IFVGUyAqLwo+PiArCWhiYS0+Y2FwcyB8PSBVRlNIQ0RfQ0FQX0NMS19TQ0FMSU5HOwo+PiArCS8q IEVuYWJsZSBXcml0ZUJvb3N0ZXIgKi8KPj4gKwloYmEtPmNhcHMgfD0gVUZTSENEX0NBUF9XQl9F TjsKPj4gKwo+PiArCXJldCA9IHVmc19yb2NrY2hpcF9jb21tb25faW5pdChoYmEpOwo+PiArCWlm IChyZXQpCj4+ICsJCXJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LCAidWZzIGNvbW1vbiBp bml0IGZhaWxcbiIpOwo+PiArCj4+ICsJcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyBp bnQgdWZzX3JvY2tjaGlwX2RldmljZV9yZXNldChzdHJ1Y3QgdWZzX2hiYSAqaGJhKQo+PiArewo+ PiArCXN0cnVjdCB1ZnNfcm9ja2NoaXBfaG9zdCAqaG9zdCA9IHVmc2hjZF9nZXRfdmFyaWFudCho YmEpOwo+PiArCj4+ICsJaWYgKCFob3N0LT5yc3RfZ3BpbykKPj4gKwkJcmV0dXJuIC1FT1BOT1RT VVBQOwo+IAo+IElzIGl0IHBvc3NpYmxlIHRvIGhpdCB0aGlzIGNvbmRpdGlvbj8KPiAKCk5vLiBX ZSBhc2sgdGhlIEJTUCB0byBwcm92aWRlIHJlc2V0IHBpbiBhcyBhIG11c3Qgb25lLiBXaWxsIHJl bW92ZS4KCj4+ICsKPj4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAoaG9zdC0+cnN0X2dwaW8s IDApOwo+PiArCXVkZWxheSgyMCk7Cj4+ICsKPj4gKwlncGlvZF9zZXRfdmFsdWVfY2Fuc2xlZXAo aG9zdC0+cnN0X2dwaW8sIDEpOwo+PiArCXVkZWxheSgyMCk7Cj4+ICsKPj4gKwlyZXR1cm4gMDsK Pj4gK30KPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCB1ZnNfaGJhX3ZhcmlhbnRfb3BzIHVm c19oYmFfcmszNTc2X3ZvcHMgPSB7Cj4+ICsJLm5hbWUgPSAicmszNTc2IiwKPj4gKwkuaW5pdCA9 IHVmc19yb2NrY2hpcF9yazM1NzZfaW5pdCwKPj4gKwkuZGV2aWNlX3Jlc2V0ID0gdWZzX3JvY2tj aGlwX2RldmljZV9yZXNldCwKPj4gKwkuaGNlX2VuYWJsZV9ub3RpZnkgPSB1ZnNfcm9ja2NoaXBf aGNlX2VuYWJsZV9ub3RpZnksCj4+ICsJLnBoeV9pbml0aWFsaXphdGlvbiA9IHVmc19yb2NrY2hp cF9yazM1NzZfcGh5X2luaXQsCj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9m X2RldmljZV9pZCB1ZnNfcm9ja2NoaXBfb2ZfbWF0Y2hbXSA9IHsKPj4gKwl7IC5jb21wYXRpYmxl ID0gInJvY2tjaGlwLHJrMzU3Ni11ZnMiLCAuZGF0YSA9ICZ1ZnNfaGJhX3JrMzU3Nl92b3BzfSwK PiAKPiBVc2UgJ3JvY2tjaGlwLHJrMzU3Ni11ZnNoYycuCgpvay4KCj4gCj4+ICsJe30sCj4+ICt9 Owo+PiArTU9EVUxFX0RFVklDRV9UQUJMRShvZiwgdWZzX3JvY2tjaGlwX29mX21hdGNoKTsKPj4g Kwo+PiArc3RhdGljIGludCB1ZnNfcm9ja2NoaXBfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikKPj4gK3sKPj4gKwlpbnQgZXJyID0gMDsKPiAKPiBBZ2FpbiBubyBpbml0IG5lZWRl ZCBhbmQgdXNlIHJldmVyc2UgWG1hcyBvcmRlciAoZXZlcnl3aGVyZSkuCj4gCj4+ICsJc3RydWN0 IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPj4gKwljb25zdCBzdHJ1Y3QgdWZzX2hiYV92YXJp YW50X29wcyAqdm9wczsKPj4gKwo+PiArCXZvcHMgPSBkZXZpY2VfZ2V0X21hdGNoX2RhdGEoZGV2 KTsKPiAKPiBJcyBpdCBPSyBpZiB2b3BzIGlzIE5VTEw/CgpXaWxsIGNoZWNrLgoKPiAKPj4gKwll cnIgPSB1ZnNoY2RfcGx0ZnJtX2luaXQocGRldiwgdm9wcyk7Cj4+ICsJaWYgKGVycikKPj4gKwkJ ZGV2X2Vycl9wcm9iZShkZXYsIGVyciwgInVmc2hjZF9wbHRmcm1faW5pdCBmYWlsZWRcbiIpOwo+ IAo+IFJldHVybiBlcnIgaGVyZSBhbmQgcmV0dXJuIDAgYmVsb3cuCj4gCgpPay4KCj4+ICsKPj4g KwlyZXR1cm4gZXJyOwo+PiArfQo+PiArCj4gCj4gWy4uLl0KPiAKPj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZGV2X3BtX29wcyB1ZnNfcm9ja2NoaXBfcG1fb3BzID0gewo+PiArCVNFVF9TWVNURU1f U0xFRVBfUE1fT1BTKHVmc19yb2NrY2hpcF9zdXNwZW5kLCB1ZnNfcm9ja2NoaXBfcmVzdW1lKQo+ PiArCVNFVF9SVU5USU1FX1BNX09QUyh1ZnNfcm9ja2NoaXBfcnVudGltZV9zdXNwZW5kLCB1ZnNf cm9ja2NoaXBfcnVudGltZV9yZXN1bWUsIE5VTEwpCj4gCj4gV2h5IGNhbid0IHlvdSB1c2UgdWZz aGNkIFBNIG9wcyBhcyBsaWtlIG90aGVyIHZlbmRvciBkcml2ZXJzPwoKSXQgZG9lc24ndCB3b3Jr IGZyb20gdGhlIHRlc3QuIFdlIGhhdmUgbWFueSB1c2UgY2FzZSB0byBwb3dlciBkb3duIHRoZQpj b250cm9sbGVyIGFuZCBkZXZpY2UsIHNvIHRoZXJlIGlzIG5vIGZsb3cgdG8gcmVjb3ZlcnkgdGhl IGxpbmsuIE9ubHkKd2hlbiB0aGUgZmlyc3QgYWNjZXNzaW5nIHRvIFVGUyBmYWlscywgdGhlIHVm c2hjZCBlcnJvciBoYW5kbGUgcmVjb3ZlcnkgCnRoZSBsaW5rLiBUaGlzIGlzIG5vdCB3aGF0IHdl IGV4cGVjdC4KCgo+IAo+PiArCS5wcmVwYXJlCSA9IHVmc2hjZF9zdXNwZW5kX3ByZXBhcmUsCj4+ ICsJLmNvbXBsZXRlCSA9IHVmc2hjZF9yZXN1bWVfY29tcGxldGUsCj4+ICt9Owo+PiArCj4+ICtz dGF0aWMgc3RydWN0IHBsYXRmb3JtX2RyaXZlciB1ZnNfcm9ja2NoaXBfcGx0Zm9ybSA9IHsKPj4g KwkucHJvYmUgPSB1ZnNfcm9ja2NoaXBfcHJvYmUsCj4+ICsJLnJlbW92ZSA9IHVmc19yb2NrY2hp cF9yZW1vdmUsCj4+ICsJLmRyaXZlciA9IHsKPj4gKwkJLm5hbWUgPSAidWZzaGNkLXJvY2tjaGlw IiwKPj4gKwkJLnBtID0gJnVmc19yb2NrY2hpcF9wbV9vcHMsCj4+ICsJCS5vZl9tYXRjaF90YWJs ZSA9IHVmc19yb2NrY2hpcF9vZl9tYXRjaCwKPj4gKwl9LAo+PiArfTsKPj4gK21vZHVsZV9wbGF0 Zm9ybV9kcml2ZXIodWZzX3JvY2tjaGlwX3BsdGZvcm0pOwo+PiArCj4+ICtNT0RVTEVfTElDRU5T RSgiR1BMIik7Cj4+ICtNT0RVTEVfREVTQ1JJUFRJT04oIlJvY2tjaGlwIFVGUyBIb3N0IERyaXZl ciIpOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy91ZnMvaG9zdC91ZnMtcm9ja2NoaXAuaCBiL2Ry aXZlcnMvdWZzL2hvc3QvdWZzLXJvY2tjaGlwLmgKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4g aW5kZXggMDAwMDAwMC4uOWViODBlOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMv dWZzL2hvc3QvdWZzLXJvY2tjaGlwLmgKPj4gQEAgLTAsMCArMSw1MSBAQAo+PiArLyogU1BEWC1M aWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwo+PiArLyoKPj4gKyAqIFJvY2tjaGlw IFVGUyBIb3N0IENvbnRyb2xsZXIgZHJpdmVyCj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChDKSAy MDI0IFJvY2tjaGlwIEVsZWN0cm9uaWNzIENvLkx0ZC4KPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVm IF9VRlNfUk9DS0NISVBfSF8KPj4gKyNkZWZpbmUgX1VGU19ST0NLQ0hJUF9IXwo+PiArCj4+ICsj ZGVmaW5lIFVGU19NQVhfQ0xLUyAzCj4+ICsKPj4gKyNkZWZpbmUgU0VMX1RYX0xBTkUwIDB4MAo+ PiArI2RlZmluZSBTRUxfVFhfTEFORTEgMHgxCj4+ICsjZGVmaW5lIFNFTF9UWF9MQU5FMiAweDIK Pj4gKyNkZWZpbmUgU0VMX1RYX0xBTkUzIDB4Mwo+PiArI2RlZmluZSBTRUxfUlhfTEFORTAgMHg0 Cj4+ICsjZGVmaW5lIFNFTF9SWF9MQU5FMSAweDUKPj4gKyNkZWZpbmUgU0VMX1JYX0xBTkUyIDB4 Ngo+PiArI2RlZmluZSBTRUxfUlhfTEFORTMgMHg3Cj4+ICsKPj4gKyNkZWZpbmUgTUlCX1RfREJH X0NQT1JUX1RYX0VORElBTgkweGMwMjIKPj4gKyNkZWZpbmUgTUlCX1RfREJHX0NQT1JUX1JYX0VO RElBTgkweGMwMjMKPj4gKwo+PiArc3RydWN0IHVmc19yb2NrY2hpcF9ob3N0IHsKPj4gKwlzdHJ1 Y3QgdWZzX2hiYSAqaGJhOwo+PiArCXZvaWQgX19pb21lbSAqdWZzX3BoeV9jdHJsOwo+PiArCXZv aWQgX19pb21lbSAqdWZzX3N5c19jdHJsOwo+PiArCXZvaWQgX19pb21lbSAqbXBoeV9iYXNlOwo+ PiArCXN0cnVjdCBncGlvX2Rlc2MgKnJzdF9ncGlvOwo+PiArCXN0cnVjdCByZXNldF9jb250cm9s ICpyc3Q7Cj4+ICsJc3RydWN0IGNsayAqcmVmX291dF9jbGs7Cj4+ICsJc3RydWN0IGNsa19idWxr X2RhdGEgY2xrc1tVRlNfTUFYX0NMS1NdOwo+PiArCXVpbnQ2NF90IGNhcHM7Cj4+ICsJYm9vbCBp bl9zdXNwZW5kOwo+IAo+IE1vdmUgYm9vbCB0byB0aGUgZW5kIHRvIGF2b2lkIGhvbGVzLgo+IAo+ IC0gTWFuaQo+IAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KTGludXgtcm9ja2NoaXAgbWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJh ZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51 eC1yb2NrY2hpcAo=