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 smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138]) (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 46D94C433F5 for ; Fri, 25 Mar 2022 18:03:30 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp1.osuosl.org (Postfix) with ESMTP id 34AB5802CA; Fri, 25 Mar 2022 18:03:29 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp1.osuosl.org ([127.0.0.1]) by localhost (smtp1.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 5vT9wahN1tsQ; Fri, 25 Mar 2022 18:03:26 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [140.211.9.56]) by smtp1.osuosl.org (Postfix) with ESMTPS id 6236084237; Fri, 25 Mar 2022 18:03:26 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 1B3B4C001D; Fri, 25 Mar 2022 18:03:26 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by lists.linuxfoundation.org (Postfix) with ESMTP id D5F04C0012 for ; Fri, 25 Mar 2022 18:03:24 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id BBFF240319 for ; Fri, 25 Mar 2022 18:03:24 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BB2W8TyObkE4 for ; Fri, 25 Mar 2022 18:03:23 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by smtp4.osuosl.org (Postfix) with ESMTP id 059E3402EF for ; Fri, 25 Mar 2022 18:03:22 +0000 (UTC) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 501A9139F; Fri, 25 Mar 2022 11:03:22 -0700 (PDT) Received: from [10.57.41.19] (unknown [10.57.41.19]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id C05323F73D; Fri, 25 Mar 2022 11:03:20 -0700 (PDT) Message-ID: <03df9921-49de-4a9d-1ef2-c5d191feaae8@arm.com> Date: Fri, 25 Mar 2022 18:03:17 +0000 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 From: Robin Murphy Subject: Re: [PATCH] iommu/arm: Expose ARM SMMUv3 related registers via sysfs To: Miguel Luis References: <20220323125500.76684-1-miguel.luis@oracle.com> Content-Language: en-GB In-Reply-To: Cc: "linux-kernel@vger.kernel.org" , David Edmondson , "iommu@lists.linux-foundation.org" , Joao Martins , Will Deacon , "linux-arm-kernel@lists.infradead.org" X-BeenThere: iommu@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Development issues for Linux IOMMU support List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: iommu-bounces@lists.linux-foundation.org Sender: "iommu" T24gMjAyMi0wMy0yMyAxNTowOSwgTWlndWVsIEx1aXMgd3JvdGU6Cj4gCj4gCj4+IE9uIDIzIE1h ciAyMDIyLCBhdCAxMjo0MCwgUm9iaW4gTXVycGh5IDxyb2Jpbi5tdXJwaHlAYXJtLmNvbT4gd3Jv dGU6Cj4+Cj4+IE9uIDIwMjItMDMtMjMgMTI6NTQsIE1pZ3VlbCBMdWlzIHdyb3RlOgo+Pj4gQWxs b3dzIHVzZXJzcGFjZSB0byBjaGVjayBmb3IgU01NVXYzIGZlYXR1cmVzLgo+Pgo+PiBXaGF0IHdp bGwgdXNlcnNwYWNlIGRvIHdpdGggdGhhdCBpbmZvcm1hdGlvbj8KPj4KPj4gSXQgaGFyZGx5IG1h dHRlcnMgd2hhdCBmYW5jeSBuZXcgZmVhdHVyZXMgbWlnaHQgYmUgcHJlc2VudCwgaWYgdGhlIGtl cm5lbCBhbmQvb3IgdGhlIGFic3RyYWN0ZWQgaW50ZXJmYWNlcyBhdmFpbGFibGUgdG8gdXNlcnNw YWNlIGFyZW4ndCB1c2luZyB0aGVtLiBBbnkgZnVuY3Rpb25hbGl0eSB3aGljaCBpcyBzdXBwb3J0 ZWQgYnkgYSB1c2FibGUgaW50ZXJmYWNlIHNob3VsZCBpZGVhbGx5IGJlIHJlcHJlc2VudGVkIHZp YSB0aGF0IGludGVyZmFjZSBpdHNlbGYuCj4+Cj4gCj4gVGhlIGluc3BpcmF0aW9uIHdhcyB0aGUg c2FtZSB0aGF0IEludGVsIChjYXAvZWNhcCkgYW5kIEFNRCAoY2FwL2ZlYXR1cmVzKSB0b29rCj4g ZXhwb3NpbmcgaXQncyBpb21tdSBmZWF0dXJlIHJlZ2lzdGVycyBvbiBzeXNmcy4gSXQncyBhbiBl YXN5IHdheSB0byB1bmRlcnN0YW5kCj4gd2hpY2ggZmVhdHVyZXMgYXJlIHN1cHBvcnRlZCBieSB0 aGUgaGFyZHdhcmUgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBrZXJuZWwKPiBzdXBwb3J0cy4KCk9L LCBzbyB3aGF0IGRvIGVuZC11c2VycyBvZiBJbnRlbCBhbmQgQU1EIHN5c3RlbXMgZG8gd2l0aCB0 aGF0IAp1bmRlcnN0YW5kaW5nIHRoZW4/Cgo+IEZvciBleGFtcGxlIEkgY291bGQgcHJpbnQgdGhl IHNtbXUtPmZlYXR1cmVzIGFuZCB0aGF0IHdvdWxkIGNvdmVyIGtlcm5lbAo+IHN1cHBvcnRlZCBm ZWF0dXJlcyBidXQgd291bGRuJ3QgaGVscCB3aGVuIG5ldyBoYXJkd2FyZSBhcnJpdmVzIHRvIGtu b3cgd2hpY2gKPiBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBoYXJkd2FyZS4KCkluZGVl ZCB0aGUgZHJpdmVyIGFscmVhZHkgcHJpbnRzIHRoZSBzdXBwb3J0ZWQgZmVhdHVyZXMgYXQgYm9v dCwgbGFyZ2VseSAKYmVjYXVzZSBpdCdzIHVzZWZ1bCBmb3IgZGVidWdnaW5nLiBCdXQgYWdhaW4s IHdoYXQncyB0aGUgYWR2YW50YWdlIG9mIAprbm93aW5nIHdoYXQgeW91IG1pZ2h0IHRoZW9yZXRp Y2FsbHkgYmUgYWJsZSB0byBkbyB3aXRoIGEgbWFjaGluZSBpZiB5b3UgCmRvbid0IGhhdmUgdGhl IHNvZnR3YXJlIHN1cHBvcnQgdG8gYWN0dWFsbHkgZG8gaXQ/IEFyZSB0aGVyZSB1c2VycyBvdXQg CnRoZXJlIHdobyBhcmVuJ3QgZ29pbmcgdG8gdXBkYXRlIHRoZWlyIE9TICp1bmxlc3MqIHRoZXkg Y2FuIGNsaW5nIHRvIHRoZSAKaG9wZSB0aGF0IGEgbmV3IE9TIG1pZ2h0IHNlZSB0aGUgb3Bwb3J0 dW5pdHkgdG8gdXNlIGZvcmVpZ24tZW5kaWFubmVzcyAKcGFnZXRhYmxlcyBhbmQgZmluYWxseSB0 YWtlIGl0PwoKSSBhcHByZWNpYXRlIHRoZSBuYXR1cmFsIGh1bWFuIGluc3RpbmN0IHRvIHdhbnQg dG8gcG9rZSBhcm91bmQgYXQgYW5kIApldmFsdWF0ZSBhIG5ldyBzaGlueSB0aGluZywgYnV0IGEg c3VmZmljaWVudGx5IGludGVyZXN0ZWQgdXNlciBjYW4gCmFscmVhZHkgZG8gdGhhdCB3aXRoIC9k ZXYvbWVtIG9yIGFueSBudW1iZXIgb2Ygb3RoZXIgd2F5cy4gV2UgZG9uJ3QgbmVlZCAKdGhlIGJ1 cmRlbiBvZiBtYWludGFpbmluZyBhbiB1cHN0cmVhbSBzeXNmcyBBQkkgZm9yIGN1cmlvc2l0eS4K ClRoZSBvdGhlciBmYWN0IG9mIHRoZSBtYXR0ZXIgaXMgdGhhdCBhIGdyZWF0IGRlYWwgb2Ygc3lz dGVtcyB3aXRoIFNNTVV2MyAKd2lsbCBiZSB1c2luZyBvbmUgb2YgQXJtIEx0ZCdzIGltcGxlbWVu dGF0aW9ucywgYW5kIGFzIHNvb24gYXMgb25lIGtub3dzIAp0aGF0IG9uZSBjYW4gcmVhZGlseSBs b29rIHVwIGFsbCB0aGUgZGV0YWlscyBpbiBBcm0ncyBkb2N1bWVudGF0aW9uLiAKRXNwZWNpYWxs eSB3aGVuIG9uZSBhbHJlYWR5IGhhcyB0aGF0IHNpdGUgb3BlbiB0byBmaW5kIHRoZSBTTU1VdjMg CmFyY2hpdGVjdHVyZSBzcGVjIHRvIG1ha2Ugc2Vuc2Ugb2YgY3J5cHRpYyByZWdpc3RlciBkdW1w cywgcmlnaHQ/Cgo+PiBGdXJ0aGVybW9yZSBtYW55IG9mIHRoZSByYXcgU01NVSBmZWF0dXJlcyBk ZXBlbmQgb24gb3RoZXIgc3lzdGVtIGNvbXBvbmVudHMgYW5kL29yIGZpcm13YXJlLCBzbyB0aGUg SUQgcmVnaXN0ZXJzIGFsb25lIGRvbid0IHRlbGwgdGhlIGZ1bGwgc3RvcnkgYW55d2F5Lgo+Pgo+ IAo+IFdvdWxkIHlvdSBtaW5kIHRvIGVsYWJvcmF0ZSBhIGJpdCBtb3JlIG9uIHRoYXQgcGxlYXNl PyBXb3VsZCB0aGF0IG1lYW4gdGhhdCBpZiBhCj4gZmVhdHVyZSBiaXQgaXMgc2V0IGl0IGRvZXNu 4oCZdCByZWFsbHkgdGVsbCB0aGF0IHRoZSBmZWF0dXJlIGlzIHN1cHBvcnRlZD8KClllcywgTGV0 J3MgdGFrZSBzb21lIGZlYXR1cmVzIG9mIEFybSdzIE1NVS02MDAgaW1wbGVtZW50YXRpb24gYXMg ZXhhbXBsZXM6CgpodHRwczovL2RldmVsb3Blci5hcm0uY29tL2RvY3VtZW50YXRpb24vMTAwMzEw LzAyMDIvRnVuY3Rpb25hbC1kZXNjcmlwdGlvbi9Db25zdHJhaW50cy1hbmQtbGltaXRhdGlvbnMt b2YtdXNlL1NNTVV2My1zdXBwb3J0CgotIE1NVS02MDAgc3VwcG9ydHMgQVRTIGFuZCBQUkkuIFdo ZXRoZXIgb3Igbm90IGEgZ2l2ZW4gTU1VLTYwMCBjYW4gZXZlciAKYWN0dWFsbHkgcmVjaWV2ZSBh bnkgQVRTIG9yIFBSSSByZXF1ZXN0cyBkZXBlbmRzIG9uIHdoZXRoZXIgaXQncyB3aXJlZCAKdXAg dG8gYSBQQ0llIHJvb3QgY29tcGxleCBjYXBhYmxlIG9mIHNlbmRpbmcgdGhlbS4KCi0gTU1VLTYw MCBzdXBwb3J0cyAyMC1iaXQgU3Vic3RyZWFtSURzIChQQVNJRHMpLCBzaW5jZSB0aGF0IHJlcHJl c2VudHMgCnRoZSBtYXhpbXVtIHNpemUgb2YgY29udGV4dCB0YWJsZSBpdCBjYW4gaW5kZXguIEhv dyBtYW55IG9mIHRob3NlIGJpdHMgCmFyZSBhY3R1YWxseSBjYXBhYmxlIG9mIGJlaW5nIGRyaXZl biBieSBlbmRwb2ludHMgYW5kL29yIGNhcnJpZWQgYWNyb3NzIAppbnRlcmNvbm5lY3RzIGRlcGVu ZHMgb24gdGhvc2UgcmVzcGVjdGl2ZSBjb21wb25lbnRzLCBhbmQgaXNuJ3QgCk1NVS02MDAncyBj b25jZXJuLgoKLSBNTVUtNjAwIHN1cHBvcnRzIHN0YWxsaW5nIGZhdWx0cy4gV2hldGhlciBoYXZp bmcgYSBzdGFsbGVkIHRyYW5zYWN0aW9uIApzYXQgYWNyb3NzIHRoZSBpbnRlcmNvbm5lY3QgbWln aHQgbGVhZCB0byBhIGRlYWRsb2NrIHdpdGggdHJhbnNhY3Rpb25zIAphdHRlbXB0aW5nIHRvIGxv YWQgZGF0YSB0byByZXNvbHZlIHRoZSBmYXVsdCBpcyB0aGUgaW50ZXJjb25uZWN0J3MgcHJvYmxl bS4KCi0gSWYgdGhlIGludGVncmF0b3IgY29ycmVjdGx5IHdpcmVzIHVwIHRoZSAiZXZlbnRvIiBz aWduYWwgYW5kIHNldHMgdGhlIAoic3VwX3NldiIgY29uZmlndXJhdGlvbiB0aWUtb2ZmLCBNTVUt NjAwIHN1cHBvcnRzIHRoZSBTRVYgZmVhdHVyZSB0byAKc2VuZCB3YWtlLXVwIGV2ZW50cyB0byB3 YWl0aW5nIENQVXMuIEV4Y2VwdCBlYXJseSByZXZpc2lvbnMgaGF2ZSBhbiAKZXJyYXR1bSB3aGVy ZSBzb21ldGltZXMgdGhleSdsbCBtaXNzIHNlbmRpbmcgYW4gZXZlbnQsIHNvIHNvZnR3YXJlIGhh ZCAKYmV0dGVyIGtubW93IHRvIGNyb3NzLWNoZWNrIFNNTVVfSUlEUiBiZWZvcmUgdHJ1c3Rpbmcg aXQuCgotIFNpbWlsYXJseSwgaXQncyBub3QgdW5oZWFyZCBvZiBmb3IgaW50ZWdyYXRvcnMgdG8g c2V0IGNvbmZpZ3VyYXRpb24gCnRpZS1vZmZzIGluY29ycmVjdGx5LCBvciBmaW5kIGlzc3VlcyBh ZnRlciB0aGUgZmFjdCB3aGljaCBtZWFuIHRoYXQgCmZlYXR1cmVzIGxpa2UgQ09IQUNDIGFuZCBC VE0gYXJlIGJyb2tlbi4gVGhlcmVmb3JlIGluIHByYWN0aWNlIHRob3NlIGFyZSAKZWZmZWN0aXZl bHkgaWdub3JlZCBpbiBmYXZvdXIgb2YgZmlybXdhcmUgb3ZlcnJpZGVzLgoKTm90ZSB0aGF0IG9u IEFNRCBhdCBsZWFzdCwgbW9zdCBvZiB0aGUgcmVwb3J0ZWQgZmVhdHVyZXMgYXJlIGFjdHVhbGx5 IApmaXJtd2FyZSBvdmVycmlkZXMgYXMgd2VsbC4gSG93ZXZlciB0aGUgbWFpbiB0aGluZyBpcyB0 aGF0IEludGVsIGFuZCBBTUQgCmRlc2lnbiBhbmQgaW1wbGVtZW50IHRoZWlyIElPTU1VIGFsb25n c2lkZSB0aGVpciBQQ0llIGltcGxlbWVudGF0aW9uIGFuZCAKZXZlcnl0aGluZyBlbHNlIGFuZCBv bmx5IHNlbGwgeW91IHRoZSB3aG9sZSBjb21iaW5hdGlvbiwgc28gZmVhdHVyZXMgCnRoZXJlIGNh biBiZSBpbmhlcmVudGx5IG1vcmUgam9pbmVkLXVwIHRoYW4gdGhlIGJ1aWxkaW5nLWJsb2NrIG5h dHVyZSBvZiAKdHlwaWNhbCBBcm0tYmFzZWQgc3lzdGVtcyBhbGxvd3MuIENoYXNpbmcgYXBwYXJl bnQgcGFyaXR5IGZvciB0aGUgc2FrZSAKb2YgaXQgd2hlcmUgYSBzdWZmaWNpZW50IGxldmVsIG9m IHBhcml0eSBqdXN0IGRvZXNuJ3QgZXhpc3QgaXMgYSB3YXN0ZSAKb2YgdGltZSAoc2VlIGFsc286 IGVuZGxlc3MgL3Byb2MvY3B1aW5mbyBub25zZW5zZSkuIFlvdSBjYW4gcGFpbnQgYSAKYmFzZWJh bGwgb3JhbmdlIGJ1dCBpdCdzIHN0aWxsIG5ldmVyIGdvaW5nIHRvIGJlIG5pY2UgdG8gZWF0LgoK VGhhbmtzLApSb2Jpbi4KCj4+PiBFeHBvc2UgdGhlIGZvbGxvd2luZyBSTyByZWdpc3RlcnMgcmVs YXRlZCB0byBBUk0gU01NVXYzIHZpYSBzeXNmczoKPj4+IFNNTVVfSURSMAo+Pj4gU01NVV9JRFIx Cj4+PiBTTU1VX0lEUjIKPj4+IFNNTVVfSURSMwo+Pj4gU01NVV9JRFI0Cj4+PiBTTU1VX0lEUjUK Pj4+IFNNTVVfSURSNgo+Pj4gU01NVV9JSURSCj4+PiBTTU1VX0FJRFIKPj4+ICAgIyBmaW5kIC9z eXMgfCBncmVwIGFybS1pb21tdQo+Pj4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtLzkwNTAwMDAuc21t dXYzL2lvbW11L3NtbXUzLjB4MDAwMDAwMDAwOTA1MDAwMC9hcm0taW9tbXUKPj4KPj4gTml0OiBt eSBtYWluIGNvbW1lbnQgYWJvdmUgbm90d2l0aHN0YW5kaW5nLCBpcyB0aGlzIGxldmVsIG9mIGhp ZXJhcmNoY3kgbWVhbmluZ2Z1bCBvciB1c2VmdWw/ICJhcm0taW9tbXUiIGlzbid0IGFuIGVzdGFi bGlzaGVkIG5hbWUgZm9yIGFueXRoaW5nIGFzIGZhciBhcyBJJ20gYXdhcmUuCj4+Cj4gCj4gSSd2 ZSBmb2xsb3dlZCB0aGUgZXhpc3RlbnQgY29udmVudGlvbiBpbiBvdGhlciBJT01NVXMgYnV0IEkn bSB0b3RhbGx5IG9wZW4KPiB0byBhbHRlcm5hdGl2ZXMvc3VnZ2VzdGlvbnMuCj4gCj4gTWlndWVs Cj4gCj4+IFJvYmluLgo+Pgo+Pj4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtLzkwNTAwMDAuc21tdXYz L2lvbW11L3NtbXUzLjB4MDAwMDAwMDAwOTA1MDAwMC9hcm0taW9tbXUvc21tdV9pZHI1Cj4+PiAv c3lzL2RldmljZXMvcGxhdGZvcm0vOTA1MDAwMC5zbW11djMvaW9tbXUvc21tdTMuMHgwMDAwMDAw MDA5MDUwMDAwL2FybS1pb21tdS9zbW11X2lkcjMKPj4+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS85 MDUwMDAwLnNtbXV2My9pb21tdS9zbW11My4weDAwMDAwMDAwMDkwNTAwMDAvYXJtLWlvbW11L3Nt bXVfaWRyMQo+Pj4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtLzkwNTAwMDAuc21tdXYzL2lvbW11L3Nt bXUzLjB4MDAwMDAwMDAwOTA1MDAwMC9hcm0taW9tbXUvc21tdV9haWRyCj4+PiAvc3lzL2Rldmlj ZXMvcGxhdGZvcm0vOTA1MDAwMC5zbW11djMvaW9tbXUvc21tdTMuMHgwMDAwMDAwMDA5MDUwMDAw L2FybS1pb21tdS9zbW11X2lkcjYKPj4+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS85MDUwMDAwLnNt bXV2My9pb21tdS9zbW11My4weDAwMDAwMDAwMDkwNTAwMDAvYXJtLWlvbW11L3NtbXVfaWRyNAo+ Pj4gL3N5cy9kZXZpY2VzL3BsYXRmb3JtLzkwNTAwMDAuc21tdXYzL2lvbW11L3NtbXUzLjB4MDAw MDAwMDAwOTA1MDAwMC9hcm0taW9tbXUvc21tdV9paWRyCj4+PiAvc3lzL2RldmljZXMvcGxhdGZv cm0vOTA1MDAwMC5zbW11djMvaW9tbXUvc21tdTMuMHgwMDAwMDAwMDA5MDUwMDAwL2FybS1pb21t dS9zbW11X2lkcjIKPj4+IC9zeXMvZGV2aWNlcy9wbGF0Zm9ybS85MDUwMDAwLnNtbXV2My9pb21t dS9zbW11My4weDAwMDAwMDAwMDkwNTAwMDAvYXJtLWlvbW11L3NtbXVfaWRyMAo+Pj4gU2lnbmVk LW9mZi1ieTogTWlndWVsIEx1aXMgPG1pZ3VlbC5sdWlzQG9yYWNsZS5jb20+Cj4+PiAtLS0KPj4+ ICAgZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYyB8IDE5OSArKysr KysrKysrKysrKysrLS0tLQo+Pj4gICBkcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0t c21tdS12My5oIHwgIDI3ICsrKwo+Pj4gICAyIGZpbGVzIGNoYW5nZWQsIDE5MSBpbnNlcnRpb25z KCspLCAzNSBkZWxldGlvbnMoLSkKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS9h cm0tc21tdS12My9hcm0tc21tdS12My5jIGIvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMv YXJtLXNtbXUtdjMuYwo+Pj4gaW5kZXggNmRjNmQ4YjZiMzY4Li43Zjc3OWQzZjg4ZjIgMTAwNjQ0 Cj4+PiAtLS0gYS9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4+ PiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4+PiBA QCAtMzQyNCwxNyArMzQyNCwxNiBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9yZXNldChz dHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11LCBib29sIGJ5cGFzcykKPj4+ICAgICBzdGF0aWMg aW50IGFybV9zbW11X2RldmljZV9od19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11 KQo+Pj4gICB7Cj4+PiAtCXUzMiByZWc7Cj4+PiAgIAlib29sIGNvaGVyZW50ID0gc21tdS0+ZmVh dHVyZXMgJiBBUk1fU01NVV9GRUFUX0NPSEVSRU5DWTsKPj4+ICAgICAJLyogSURSMCAqLwo+Pj4g LQlyZWcgPSByZWFkbF9yZWxheGVkKHNtbXUtPmJhc2UgKyBBUk1fU01NVV9JRFIwKTsKPj4+ICsJ c21tdS0+aWRyMCA9IHJlYWRsX3JlbGF4ZWQoc21tdS0+YmFzZSArIEFSTV9TTU1VX0lEUjApOwo+ Pj4gICAgIAkvKiAyLWxldmVsIHN0cnVjdHVyZXMgKi8KPj4+IC0JaWYgKEZJRUxEX0dFVChJRFIw X1NUX0xWTCwgcmVnKSA9PSBJRFIwX1NUX0xWTF8yTFZMKQo+Pj4gKwlpZiAoRklFTERfR0VUKElE UjBfU1RfTFZMLCBzbW11LT5pZHIwKSA9PSBJRFIwX1NUX0xWTF8yTFZMKQo+Pj4gICAJCXNtbXUt PmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZFQVRfMl9MVkxfU1RSVEFCOwo+Pj4gICAtCWlmIChyZWcg JiBJRFIwX0NEMkwpCj4+PiArCWlmIChzbW11LT5pZHIwICYgSURSMF9DRDJMKQo+Pj4gICAJCXNt bXUtPmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZFQVRfMl9MVkxfQ0RUQUI7Cj4+PiAgICAgCS8qCj4+ PiBAQCAtMzQ0Miw3ICszNDQxLDcgQEAgc3RhdGljIGludCBhcm1fc21tdV9kZXZpY2VfaHdfcHJv YmUoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkKPj4+ICAgCSAqIFdlIGN1cnJlbnRseSBy ZXF1aXJlIHRoZSBzYW1lIGVuZGlhbm5lc3MgYXMgdGhlIENQVSwgYnV0IHRoaXMKPj4+ICAgCSAq IGNvdWxkIGJlIGNoYW5nZWQgbGF0ZXIgYnkgYWRkaW5nIGEgbmV3IElPX1BHVEFCTEVfUVVJUksu Cj4+PiAgIAkgKi8KPj4+IC0Jc3dpdGNoIChGSUVMRF9HRVQoSURSMF9UVEVORElBTiwgcmVnKSkg ewo+Pj4gKwlzd2l0Y2ggKEZJRUxEX0dFVChJRFIwX1RURU5ESUFOLCBzbW11LT5pZHIwKSkgewo+ Pj4gICAJY2FzZSBJRFIwX1RURU5ESUFOX01JWEVEOgo+Pj4gICAJCXNtbXUtPmZlYXR1cmVzIHw9 IEFSTV9TTU1VX0ZFQVRfVFRfTEUgfCBBUk1fU01NVV9GRUFUX1RUX0JFOwo+Pj4gICAJCWJyZWFr Owo+Pj4gQEAgLTM0NjEsMjIgKzM0NjAsMjIgQEAgc3RhdGljIGludCBhcm1fc21tdV9kZXZpY2Vf aHdfcHJvYmUoc3RydWN0IGFybV9zbW11X2RldmljZSAqc21tdSkKPj4+ICAgCX0KPj4+ICAgICAJ LyogQm9vbGVhbiBmZWF0dXJlIGZsYWdzICovCj4+PiAtCWlmIChJU19FTkFCTEVEKENPTkZJR19Q Q0lfUFJJKSAmJiByZWcgJiBJRFIwX1BSSSkKPj4+ICsJaWYgKElTX0VOQUJMRUQoQ09ORklHX1BD SV9QUkkpICYmIHNtbXUtPmlkcjAgJiBJRFIwX1BSSSkKPj4+ICAgCQlzbW11LT5mZWF0dXJlcyB8 PSBBUk1fU01NVV9GRUFUX1BSSTsKPj4+ICAgLQlpZiAoSVNfRU5BQkxFRChDT05GSUdfUENJX0FU UykgJiYgcmVnICYgSURSMF9BVFMpCj4+PiArCWlmIChJU19FTkFCTEVEKENPTkZJR19QQ0lfQVRT KSAmJiBzbW11LT5pZHIwICYgSURSMF9BVFMpCj4+PiAgIAkJc21tdS0+ZmVhdHVyZXMgfD0gQVJN X1NNTVVfRkVBVF9BVFM7Cj4+PiAgIC0JaWYgKHJlZyAmIElEUjBfU0VWKQo+Pj4gKwlpZiAoc21t dS0+aWRyMCAmIElEUjBfU0VWKQo+Pj4gICAJCXNtbXUtPmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZF QVRfU0VWOwo+Pj4gICAtCWlmIChyZWcgJiBJRFIwX01TSSkgewo+Pj4gKwlpZiAoc21tdS0+aWRy MCAmIElEUjBfTVNJKSB7Cj4+PiAgIAkJc21tdS0+ZmVhdHVyZXMgfD0gQVJNX1NNTVVfRkVBVF9N U0k7Cj4+PiAgIAkJaWYgKGNvaGVyZW50ICYmICFkaXNhYmxlX21zaXBvbGxpbmcpCj4+PiAgIAkJ CXNtbXUtPm9wdGlvbnMgfD0gQVJNX1NNTVVfT1BUX01TSVBPTEw7Cj4+PiAgIAl9Cj4+PiAgIC0J aWYgKHJlZyAmIElEUjBfSFlQKSB7Cj4+PiArCWlmIChzbW11LT5pZHIwICYgSURSMF9IWVApIHsK Pj4+ICAgCQlzbW11LT5mZWF0dXJlcyB8PSBBUk1fU01NVV9GRUFUX0hZUDsKPj4+ICAgCQlpZiAo Y3B1c19oYXZlX2NhcChBUk02NF9IQVNfVklSVF9IT1NUX0VYVE4pKQo+Pj4gICAJCQlzbW11LT5m ZWF0dXJlcyB8PSBBUk1fU01NVV9GRUFUX0UySDsKPj4+IEBAIC0zNDg2LDExICszNDg1LDExIEBA IHN0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX2h3X3Byb2JlKHN0cnVjdCBhcm1fc21tdV9kZXZp Y2UgKnNtbXUpCj4+PiAgIAkgKiBUaGUgY29oZXJlbmN5IGZlYXR1cmUgYXMgc2V0IGJ5IEZXIGlz IHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aGUgSUQKPj4+ICAgCSAqIHJlZ2lzdGVyLCBidXQgd2Fy biBvbiBtaXNtYXRjaC4KPj4+ICAgCSAqLwo+Pj4gLQlpZiAoISEocmVnICYgSURSMF9DT0hBQ0Mp ICE9IGNvaGVyZW50KQo+Pj4gKwlpZiAoISEoc21tdS0+aWRyMCAmIElEUjBfQ09IQUNDKSAhPSBj b2hlcmVudCkKPj4+ICAgCQlkZXZfd2FybihzbW11LT5kZXYsICJJRFIwLkNPSEFDQyBvdmVycmlk ZGVuIGJ5IEZXIGNvbmZpZ3VyYXRpb24gKCVzKVxuIiwKPj4+ICAgCQkJIGNvaGVyZW50ID8gInRy dWUiIDogImZhbHNlIik7Cj4+PiAgIC0Jc3dpdGNoIChGSUVMRF9HRVQoSURSMF9TVEFMTF9NT0RF TCwgcmVnKSkgewo+Pj4gKwlzd2l0Y2ggKEZJRUxEX0dFVChJRFIwX1NUQUxMX01PREVMLCBzbW11 LT5pZHIwKSkgewo+Pj4gICAJY2FzZSBJRFIwX1NUQUxMX01PREVMX0ZPUkNFOgo+Pj4gICAJCXNt bXUtPmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZFQVRfU1RBTExfRk9SQ0U7Cj4+PiAgIAkJZmFsbHRo cm91Z2g7Cj4+PiBAQCAtMzQ5OCwxOSArMzQ5NywxOSBAQCBzdGF0aWMgaW50IGFybV9zbW11X2Rl dmljZV9od19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+Pj4gICAJCXNtbXUt PmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZFQVRfU1RBTExTOwo+Pj4gICAJfQo+Pj4gICAtCWlmIChy ZWcgJiBJRFIwX1MxUCkKPj4+ICsJaWYgKHNtbXUtPmlkcjAgJiBJRFIwX1MxUCkKPj4+ICAgCQlz bW11LT5mZWF0dXJlcyB8PSBBUk1fU01NVV9GRUFUX1RSQU5TX1MxOwo+Pj4gICAtCWlmIChyZWcg JiBJRFIwX1MyUCkKPj4+ICsJaWYgKHNtbXUtPmlkcjAgJiBJRFIwX1MyUCkKPj4+ICAgCQlzbW11 LT5mZWF0dXJlcyB8PSBBUk1fU01NVV9GRUFUX1RSQU5TX1MyOwo+Pj4gICAtCWlmICghKHJlZyAm IChJRFIwX1MxUCB8IElEUjBfUzJQKSkpIHsKPj4+ICsJaWYgKCEoc21tdS0+aWRyMCAmIChJRFIw X1MxUCB8IElEUjBfUzJQKSkpIHsKPj4+ICAgCQlkZXZfZXJyKHNtbXUtPmRldiwgIm5vIHRyYW5z bGF0aW9uIHN1cHBvcnQhXG4iKTsKPj4+ICAgCQlyZXR1cm4gLUVOWElPOwo+Pj4gICAJfQo+Pj4g ICAgIAkvKiBXZSBvbmx5IHN1cHBvcnQgdGhlIEFBcmNoNjQgdGFibGUgZm9ybWF0IGF0IHByZXNl bnQgKi8KPj4+IC0Jc3dpdGNoIChGSUVMRF9HRVQoSURSMF9UVEYsIHJlZykpIHsKPj4+ICsJc3dp dGNoIChGSUVMRF9HRVQoSURSMF9UVEYsIHNtbXUtPmlkcjApKSB7Cj4+PiAgIAljYXNlIElEUjBf VFRGX0FBUkNIMzJfNjQ6Cj4+PiAgIAkJc21tdS0+aWFzID0gNDA7Cj4+PiAgIAkJZmFsbHRocm91 Z2g7Cj4+PiBAQCAtMzUyMiwxOSArMzUyMSwyMCBAQCBzdGF0aWMgaW50IGFybV9zbW11X2Rldmlj ZV9od19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+Pj4gICAJfQo+Pj4gICAg IAkvKiBBU0lEL1ZNSUQgc2l6ZXMgKi8KPj4+IC0Jc21tdS0+YXNpZF9iaXRzID0gcmVnICYgSURS MF9BU0lEMTYgPyAxNiA6IDg7Cj4+PiAtCXNtbXUtPnZtaWRfYml0cyA9IHJlZyAmIElEUjBfVk1J RDE2ID8gMTYgOiA4Owo+Pj4gKwlzbW11LT5hc2lkX2JpdHMgPSBzbW11LT5pZHIwICYgSURSMF9B U0lEMTYgPyAxNiA6IDg7Cj4+PiArCXNtbXUtPnZtaWRfYml0cyA9IHNtbXUtPmlkcjAgJiBJRFIw X1ZNSUQxNiA/IDE2IDogODsKPj4+ICAgICAJLyogSURSMSAqLwo+Pj4gLQlyZWcgPSByZWFkbF9y ZWxheGVkKHNtbXUtPmJhc2UgKyBBUk1fU01NVV9JRFIxKTsKPj4+IC0JaWYgKHJlZyAmIChJRFIx X1RBQkxFU19QUkVTRVQgfCBJRFIxX1FVRVVFU19QUkVTRVQgfCBJRFIxX1JFTCkpIHsKPj4+ICsJ c21tdS0+aWRyMSA9IHJlYWRsX3JlbGF4ZWQoc21tdS0+YmFzZSArIEFSTV9TTU1VX0lEUjEpOwo+ Pj4gKwo+Pj4gKwlpZiAoc21tdS0+aWRyMSAmIChJRFIxX1RBQkxFU19QUkVTRVQgfCBJRFIxX1FV RVVFU19QUkVTRVQgfCBJRFIxX1JFTCkpIHsKPj4+ICAgCQlkZXZfZXJyKHNtbXUtPmRldiwgImVt YmVkZGVkIGltcGxlbWVudGF0aW9uIG5vdCBzdXBwb3J0ZWRcbiIpOwo+Pj4gICAJCXJldHVybiAt RU5YSU87Cj4+PiAgIAl9Cj4+PiAgICAgCS8qIFF1ZXVlIHNpemVzLCBjYXBwZWQgdG8gZW5zdXJl IG5hdHVyYWwgYWxpZ25tZW50ICovCj4+PiAgIAlzbW11LT5jbWRxLnEubGxxLm1heF9uX3NoaWZ0 ID0gbWluX3QodTMyLCBDTURRX01BWF9TWl9TSElGVCwKPj4+IC0JCQkJCSAgICAgRklFTERfR0VU KElEUjFfQ01EUVMsIHJlZykpOwo+Pj4gKwkJCQkJICAgICBGSUVMRF9HRVQoSURSMV9DTURRUywg c21tdS0+aWRyMSkpOwo+Pj4gICAJaWYgKHNtbXUtPmNtZHEucS5sbHEubWF4X25fc2hpZnQgPD0g aWxvZzIoQ01EUV9CQVRDSF9FTlRSSUVTKSkgewo+Pj4gICAJCS8qCj4+PiAgIAkJICogV2UgZG9u J3Qgc3VwcG9ydCBzcGxpdHRpbmcgdXAgYmF0Y2hlcywgc28gb25lIGJhdGNoIG9mCj4+PiBAQCAt MzU0OCwxMyArMzU0OCwxMyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9od19wcm9iZShz dHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+Pj4gICAJfQo+Pj4gICAgIAlzbW11LT5ldnRx LnEubGxxLm1heF9uX3NoaWZ0ID0gbWluX3QodTMyLCBFVlRRX01BWF9TWl9TSElGVCwKPj4+IC0J CQkJCSAgICAgRklFTERfR0VUKElEUjFfRVZUUVMsIHJlZykpOwo+Pj4gKwkJCQkJICAgICBGSUVM RF9HRVQoSURSMV9FVlRRUywgc21tdS0+aWRyMSkpOwo+Pj4gICAJc21tdS0+cHJpcS5xLmxscS5t YXhfbl9zaGlmdCA9IG1pbl90KHUzMiwgUFJJUV9NQVhfU1pfU0hJRlQsCj4+PiAtCQkJCQkgICAg IEZJRUxEX0dFVChJRFIxX1BSSVFTLCByZWcpKTsKPj4+ICsJCQkJCSAgICAgRklFTERfR0VUKElE UjFfUFJJUVMsIHNtbXUtPmlkcjEpKTsKPj4+ICAgICAJLyogU0lEL1NTSUQgc2l6ZXMgKi8KPj4+ IC0Jc21tdS0+c3NpZF9iaXRzID0gRklFTERfR0VUKElEUjFfU1NJRFNJWkUsIHJlZyk7Cj4+PiAt CXNtbXUtPnNpZF9iaXRzID0gRklFTERfR0VUKElEUjFfU0lEU0laRSwgcmVnKTsKPj4+ICsJc21t dS0+c3NpZF9iaXRzID0gRklFTERfR0VUKElEUjFfU1NJRFNJWkUsIHNtbXUtPmlkcjEpOwo+Pj4g KwlzbW11LT5zaWRfYml0cyA9IEZJRUxEX0dFVChJRFIxX1NJRFNJWkUsIHNtbXUtPmlkcjEpOwo+ Pj4gICAgIAkvKgo+Pj4gICAJICogSWYgdGhlIFNNTVUgc3VwcG9ydHMgZmV3ZXIgYml0cyB0aGFu IHdvdWxkIGZpbGwgYSBzaW5nbGUgTDIgc3RyZWFtCj4+PiBAQCAtMzU2MywzMSArMzU2MywzNyBA QCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9od19wcm9iZShzdHJ1Y3QgYXJtX3NtbXVfZGV2 aWNlICpzbW11KQo+Pj4gICAJaWYgKHNtbXUtPnNpZF9iaXRzIDw9IFNUUlRBQl9TUExJVCkKPj4+ ICAgCQlzbW11LT5mZWF0dXJlcyAmPSB+QVJNX1NNTVVfRkVBVF8yX0xWTF9TVFJUQUI7Cj4+PiAg ICsJLyogSURSMiAqLwo+Pj4gKwlzbW11LT5pZHIyID0gcmVhZGxfcmVsYXhlZChzbW11LT5iYXNl ICsgQVJNX1NNTVVfSURSMik7Cj4+PiArCj4+PiAgIAkvKiBJRFIzICovCj4+PiAtCXJlZyA9IHJl YWRsX3JlbGF4ZWQoc21tdS0+YmFzZSArIEFSTV9TTU1VX0lEUjMpOwo+Pj4gLQlpZiAoRklFTERf R0VUKElEUjNfUklMLCByZWcpKQo+Pj4gKwlzbW11LT5pZHIzID0gcmVhZGxfcmVsYXhlZChzbW11 LT5iYXNlICsgQVJNX1NNTVVfSURSMyk7Cj4+PiArCWlmIChGSUVMRF9HRVQoSURSM19SSUwsIHNt bXUtPmlkcjMpKQo+Pj4gICAJCXNtbXUtPmZlYXR1cmVzIHw9IEFSTV9TTU1VX0ZFQVRfUkFOR0Vf SU5WOwo+Pj4gICArCS8qIElEUjQgKi8KPj4+ICsJc21tdS0+aWRyNCA9IHJlYWRsX3JlbGF4ZWQo c21tdS0+YmFzZSArIEFSTV9TTU1VX0lEUjQpOwo+Pj4gKwo+Pj4gICAJLyogSURSNSAqLwo+Pj4g LQlyZWcgPSByZWFkbF9yZWxheGVkKHNtbXUtPmJhc2UgKyBBUk1fU01NVV9JRFI1KTsKPj4+ICsJ c21tdS0+aWRyNSA9IHJlYWRsX3JlbGF4ZWQoc21tdS0+YmFzZSArIEFSTV9TTU1VX0lEUjUpOwo+ Pj4gICAgIAkvKiBNYXhpbXVtIG51bWJlciBvZiBvdXRzdGFuZGluZyBzdGFsbHMgKi8KPj4+IC0J c21tdS0+ZXZ0cS5tYXhfc3RhbGxzID0gRklFTERfR0VUKElEUjVfU1RBTExfTUFYLCByZWcpOwo+ Pj4gKwlzbW11LT5ldnRxLm1heF9zdGFsbHMgPSBGSUVMRF9HRVQoSURSNV9TVEFMTF9NQVgsIHNt bXUtPmlkcjUpOwo+Pj4gICAgIAkvKiBQYWdlIHNpemVzICovCj4+PiAtCWlmIChyZWcgJiBJRFI1 X0dSQU42NEspCj4+PiArCWlmIChzbW11LT5pZHI1ICYgSURSNV9HUkFONjRLKQo+Pj4gICAJCXNt bXUtPnBnc2l6ZV9iaXRtYXAgfD0gU1pfNjRLIHwgU1pfNTEyTTsKPj4+IC0JaWYgKHJlZyAmIElE UjVfR1JBTjE2SykKPj4+ICsJaWYgKHNtbXUtPmlkcjUgJiBJRFI1X0dSQU4xNkspCj4+PiAgIAkJ c21tdS0+cGdzaXplX2JpdG1hcCB8PSBTWl8xNksgfCBTWl8zMk07Cj4+PiAtCWlmIChyZWcgJiBJ RFI1X0dSQU40SykKPj4+ICsJaWYgKHNtbXUtPmlkcjUgJiBJRFI1X0dSQU40SykKPj4+ICAgCQlz bW11LT5wZ3NpemVfYml0bWFwIHw9IFNaXzRLIHwgU1pfMk0gfCBTWl8xRzsKPj4+ICAgICAJLyog SW5wdXQgYWRkcmVzcyBzaXplICovCj4+PiAtCWlmIChGSUVMRF9HRVQoSURSNV9WQVgsIHJlZykg PT0gSURSNV9WQVhfNTJfQklUKQo+Pj4gKwlpZiAoRklFTERfR0VUKElEUjVfVkFYLCBzbW11LT5p ZHI1KSA9PSBJRFI1X1ZBWF81Ml9CSVQpCj4+PiAgIAkJc21tdS0+ZmVhdHVyZXMgfD0gQVJNX1NN TVVfRkVBVF9WQVg7Cj4+PiAgICAgCS8qIE91dHB1dCBhZGRyZXNzIHNpemUgKi8KPj4+IC0Jc3dp dGNoIChGSUVMRF9HRVQoSURSNV9PQVMsIHJlZykpIHsKPj4+ICsJc3dpdGNoIChGSUVMRF9HRVQo SURSNV9PQVMsIHNtbXUtPmlkcjUpKSB7Cj4+PiAgIAljYXNlIElEUjVfT0FTXzMyX0JJVDoKPj4+ ICAgCQlzbW11LT5vYXMgPSAzMjsKPj4+ICAgCQlicmVhazsKPj4+IEBAIC0zNjMyLDYgKzM2Mzgs MTYgQEAgc3RhdGljIGludCBhcm1fc21tdV9kZXZpY2VfaHdfcHJvYmUoc3RydWN0IGFybV9zbW11 X2RldmljZSAqc21tdSkKPj4+ICAgICAJZGV2X2luZm8oc21tdS0+ZGV2LCAiaWFzICVsdS1iaXQs IG9hcyAlbHUtYml0IChmZWF0dXJlcyAweCUwOHgpXG4iLAo+Pj4gICAJCSBzbW11LT5pYXMsIHNt bXUtPm9hcywgc21tdS0+ZmVhdHVyZXMpOwo+Pj4gKwo+Pj4gKwkvKiBJRFI2ICovCj4+PiArCXNt bXUtPmlkcjYgPSByZWFkbF9yZWxheGVkKHNtbXUtPmJhc2UgKyBBUk1fU01NVV9JRFI2KTsKPj4+ ICsKPj4+ICsJLyogSUlEUiAqLwo+Pj4gKwlzbW11LT5paWRyID0gcmVhZGxfcmVsYXhlZChzbW11 LT5iYXNlICsgQVJNX1NNTVVfSUlEUik7Cj4+PiArCj4+PiArCS8qIEFJRFIgKi8KPj4+ICsJc21t dS0+YWlkciA9IHJlYWRsX3JlbGF4ZWQoc21tdS0+YmFzZSArIEFSTV9TTU1VX0FJRFIpOwo+Pj4g Kwo+Pj4gICAJcmV0dXJuIDA7Cj4+PiAgIH0KPj4+ICAgQEAgLTM3NTIsNiArMzc2OCwxMTkgQEAg c3RhdGljIHZvaWQgX19pb21lbSAqYXJtX3NtbXVfaW9yZW1hcChzdHJ1Y3QgZGV2aWNlICpkZXYs IHJlc291cmNlX3NpemVfdCBzdGFydCwKPj4+ICAgCXJldHVybiBkZXZtX2lvcmVtYXBfcmVzb3Vy Y2UoZGV2LCAmcmVzKTsKPj4+ICAgfQo+Pj4gICArc3RhdGljIHNzaXplX3Qgc21tdV9pZHIwX3No b3coc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmli dXRlICphdHRyLAo+Pj4gKwkJCSAgICAgIGNoYXIgKmJ1ZikKPj4+ICt7Cj4+PiArCXN0cnVjdCBh cm1fc21tdV9kZXZpY2UgKnNtbXUgPSBkZXZfdG9fYXJtX3NtbXVfZGV2aWNlKGRldik7Cj4+PiAr Cj4+PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV4XG4iLCBzbW11LT5pZHIwKTsKPj4+ICt9Cj4+ PiArc3RhdGljIERFVklDRV9BVFRSX1JPKHNtbXVfaWRyMCk7Cj4+PiArCj4+PiArc3RhdGljIHNz aXplX3Qgc21tdV9pZHIxX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCSAgICAgIHN0 cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gKwkJCSAgICAgIGNoYXIgKmJ1ZikKPj4+ ICt7Cj4+PiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBkZXZfdG9fYXJtX3NtbXVf ZGV2aWNlKGRldik7Cj4+PiArCj4+PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV4XG4iLCBzbW11 LT5pZHIxKTsKPj4+ICt9Cj4+PiArc3RhdGljIERFVklDRV9BVFRSX1JPKHNtbXVfaWRyMSk7Cj4+ PiArCj4+PiArc3RhdGljIHNzaXplX3Qgc21tdV9pZHIyX3Nob3coc3RydWN0IGRldmljZSAqZGV2 LAo+Pj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gKwkJCSAg ICAgIGNoYXIgKmJ1ZikKPj4+ICt7Cj4+PiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUg PSBkZXZfdG9fYXJtX3NtbXVfZGV2aWNlKGRldik7Cj4+PiArCj4+PiArCXJldHVybiBzcHJpbnRm KGJ1ZiwgIiV4XG4iLCBzbW11LT5pZHIyKTsKPj4+ICt9Cj4+PiArc3RhdGljIERFVklDRV9BVFRS X1JPKHNtbXVfaWRyMik7Cj4+PiArCj4+PiArc3RhdGljIHNzaXplX3Qgc21tdV9pZHIzX3Nob3co c3RydWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRl ICphdHRyLAo+Pj4gKwkJCSAgICAgIGNoYXIgKmJ1ZikKPj4+ICt7Cj4+PiArCXN0cnVjdCBhcm1f c21tdV9kZXZpY2UgKnNtbXUgPSBkZXZfdG9fYXJtX3NtbXVfZGV2aWNlKGRldik7Cj4+PiArCj4+ PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV4XG4iLCBzbW11LT5pZHIzKTsKPj4+ICt9Cj4+PiAr c3RhdGljIERFVklDRV9BVFRSX1JPKHNtbXVfaWRyMyk7Cj4+PiArCj4+PiArc3RhdGljIHNzaXpl X3Qgc21tdV9pZHI0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCSAgICAgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gKwkJCSAgICAgIGNoYXIgKmJ1ZikKPj4+ICt7 Cj4+PiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBkZXZfdG9fYXJtX3NtbXVfZGV2 aWNlKGRldik7Cj4+PiArCj4+PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV4XG4iLCBzbW11LT5p ZHI0KTsKPj4+ICt9Cj4+PiArc3RhdGljIERFVklDRV9BVFRSX1JPKHNtbXVfaWRyNCk7Cj4+PiAr Cj4+PiArc3RhdGljIHNzaXplX3Qgc21tdV9pZHI1X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+ Pj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gKwkJCSAgICAg IGNoYXIgKmJ1ZikKPj4+ICt7Cj4+PiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBk ZXZfdG9fYXJtX3NtbXVfZGV2aWNlKGRldik7Cj4+PiArCj4+PiArCXJldHVybiBzcHJpbnRmKGJ1 ZiwgIiV4XG4iLCBzbW11LT5pZHI1KTsKPj4+ICt9Cj4+PiArc3RhdGljIERFVklDRV9BVFRSX1JP KHNtbXVfaWRyNSk7Cj4+PiArCj4+PiArc3RhdGljIHNzaXplX3Qgc21tdV9pZHI2X3Nob3coc3Ry dWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICph dHRyLAo+Pj4gKwkJCSAgICAgIGNoYXIgKmJ1ZikKPj4+ICt7Cj4+PiArCXN0cnVjdCBhcm1fc21t dV9kZXZpY2UgKnNtbXUgPSBkZXZfdG9fYXJtX3NtbXVfZGV2aWNlKGRldik7Cj4+PiArCj4+PiAr CXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV4XG4iLCBzbW11LT5pZHI2KTsKPj4+ICt9Cj4+PiArc3Rh dGljIERFVklDRV9BVFRSX1JPKHNtbXVfaWRyNik7Cj4+PiArCj4+PiArc3RhdGljIHNzaXplX3Qg c21tdV9paWRyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+Pj4gKwkJCSAgICAgIHN0cnVjdCBk ZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gKwkJCSAgICAgIGNoYXIgKmJ1ZikKPj4+ICt7Cj4+ PiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBkZXZfdG9fYXJtX3NtbXVfZGV2aWNl KGRldik7Cj4+PiArCj4+PiArCXJldHVybiBzcHJpbnRmKGJ1ZiwgIiV4XG4iLCBzbW11LT5paWRy KTsKPj4+ICt9Cj4+PiArc3RhdGljIERFVklDRV9BVFRSX1JPKHNtbXVfaWlkcik7Cj4+PiArCj4+ PiArc3RhdGljIHNzaXplX3Qgc21tdV9haWRyX3Nob3coc3RydWN0IGRldmljZSAqZGV2LAo+Pj4g KwkJCSAgICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAo+Pj4gKwkJCSAgICAgIGNo YXIgKmJ1ZikKPj4+ICt7Cj4+PiArCXN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKnNtbXUgPSBkZXZf dG9fYXJtX3NtbXVfZGV2aWNlKGRldik7Cj4+PiArCj4+PiArCXJldHVybiBzcHJpbnRmKGJ1Ziwg IiV4XG4iLCBzbW11LT5haWRyKTsKPj4+ICt9Cj4+PiArc3RhdGljIERFVklDRV9BVFRSX1JPKHNt bXVfYWlkcik7Cj4+PiArCj4+PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmFybV9pb21tdV9h dHRyc1tdID0gewo+Pj4gKwkmZGV2X2F0dHJfc21tdV9pZHIwLmF0dHIsCj4+PiArCSZkZXZfYXR0 cl9zbW11X2lkcjEuYXR0ciwKPj4+ICsJJmRldl9hdHRyX3NtbXVfaWRyMi5hdHRyLAo+Pj4gKwkm ZGV2X2F0dHJfc21tdV9pZHIzLmF0dHIsCj4+PiArCSZkZXZfYXR0cl9zbW11X2lkcjQuYXR0ciwK Pj4+ICsJJmRldl9hdHRyX3NtbXVfaWRyNS5hdHRyLAo+Pj4gKwkmZGV2X2F0dHJfc21tdV9pZHI2 LmF0dHIsCj4+PiArCSZkZXZfYXR0cl9zbW11X2lpZHIuYXR0ciwKPj4+ICsJJmRldl9hdHRyX3Nt bXVfYWlkci5hdHRyLAo+Pj4gKwlOVUxMLAo+Pj4gK307Cj4+PiArCj4+PiArc3RhdGljIHN0cnVj dCBhdHRyaWJ1dGVfZ3JvdXAgYXJtX2lvbW11X2dyb3VwID0gewo+Pj4gKwkubmFtZSA9ICJhcm0t aW9tbXUiLAo+Pj4gKwkuYXR0cnMgPSBhcm1faW9tbXVfYXR0cnMsCj4+PiArfTsKPj4+ICsKPj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCAqYXJtX2lvbW11X2dyb3Vwc1td ID0gewo+Pj4gKwkmYXJtX2lvbW11X2dyb3VwLAo+Pj4gKwlOVUxMLAo+Pj4gK307Cj4+PiArCj4+ PiAgIHN0YXRpYyBpbnQgYXJtX3NtbXVfZGV2aWNlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCj4+PiAgIHsKPj4+ICAgCWludCBpcnEsIHJldDsKPj4+IEBAIC0zODM5LDcgKzM5 NjgsNyBAQCBzdGF0aWMgaW50IGFybV9zbW11X2RldmljZV9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2KQo+Pj4gICAJCXJldHVybiByZXQ7Cj4+PiAgICAgCS8qIEFuZCB3ZSdyZSB1 cC4gR28gZ28gZ28hICovCj4+PiAtCXJldCA9IGlvbW11X2RldmljZV9zeXNmc19hZGQoJnNtbXUt PmlvbW11LCBkZXYsIE5VTEwsCj4+PiArCXJldCA9IGlvbW11X2RldmljZV9zeXNmc19hZGQoJnNt bXUtPmlvbW11LCBkZXYsIGFybV9pb21tdV9ncm91cHMsCj4+PiAgIAkJCQkgICAgICJzbW11My4l cGEiLCAmaW9hZGRyKTsKPj4+ICAgCWlmIChyZXQpCj4+PiAgIAkJcmV0dXJuIHJldDsKPj4+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5oIGIv ZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuaAo+Pj4gaW5kZXggY2Q0 ODU5MGFkYTMwLi5mZmExMTIzYmYzN2MgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2lvbW11L2Fy bS9hcm0tc21tdS12My9hcm0tc21tdS12My5oCj4+PiArKysgYi9kcml2ZXJzL2lvbW11L2FybS9h cm0tc21tdS12My9hcm0tc21tdS12My5oCj4+PiBAQCAtNTAsOSArNTAsMTMgQEAKPj4+ICAgI2Rl ZmluZSBJRFIxX1NTSURTSVpFCQkJR0VOTUFTSygxMCwgNikKPj4+ICAgI2RlZmluZSBJRFIxX1NJ RFNJWkUJCQlHRU5NQVNLKDUsIDApCj4+PiAgICsjZGVmaW5lIEFSTV9TTU1VX0lEUjIJCQkweDgK Pj4+ICsKPj4+ICAgI2RlZmluZSBBUk1fU01NVV9JRFIzCQkJMHhjCj4+PiAgICNkZWZpbmUgSURS M19SSUwJCQkoMSA8PCAxMCkKPj4+ICAgKyNkZWZpbmUgQVJNX1NNTVVfSURSNAkJCTB4MTAKPj4+ ICsKPj4+ICAgI2RlZmluZSBBUk1fU01NVV9JRFI1CQkJMHgxNAo+Pj4gICAjZGVmaW5lIElEUjVf U1RBTExfTUFYCQkJR0VOTUFTSygzMSwgMTYpCj4+PiAgICNkZWZpbmUgSURSNV9HUkFONjRLCQkJ KDEgPDwgNikKPj4+IEBAIC02OSw2ICs3Myw5IEBACj4+PiAgICNkZWZpbmUgSURSNV9WQVgJCQlH RU5NQVNLKDExLCAxMCkKPj4+ICAgI2RlZmluZSBJRFI1X1ZBWF81Ml9CSVQJCQkxCj4+PiAgICsj ZGVmaW5lIEFSTV9TTU1VX0lJRFIJCQkweDE4Cj4+PiArI2RlZmluZSBBUk1fU01NVV9BSURSCQkJ MHgxQwo+Pj4gKwo+Pj4gICAjZGVmaW5lIEFSTV9TTU1VX0NSMAkJCTB4MjAKPj4+ICAgI2RlZmlu ZSBDUjBfQVRTQ0hLCQkJKDEgPDwgNCkKPj4+ICAgI2RlZmluZSBDUjBfQ01EUUVOCQkJKDEgPDwg MykKPj4+IEBAIC0xNTQsNiArMTYxLDggQEAKPj4+ICAgICAjZGVmaW5lIEFSTV9TTU1VX1JFR19T WgkJCTB4ZTAwCj4+PiAgICsjZGVmaW5lIEFSTV9TTU1VX0lEUjYJCQkweDAxOTAKPj4+ICsKPj4+ ICAgLyogQ29tbW9uIE1TSSBjb25maWcgZmllbGRzICovCj4+PiAgICNkZWZpbmUgTVNJX0NGRzBf QUREUl9NQVNLCQlHRU5NQVNLX1VMTCg1MSwgMikKPj4+ICAgI2RlZmluZSBNU0lfQ0ZHMl9TSAkJ CUdFTk1BU0soNSwgNCkKPj4+IEBAIC02NjksNiArNjc4LDE3IEBAIHN0cnVjdCBhcm1fc21tdV9k ZXZpY2Ugewo+Pj4gICAgIAlzdHJ1Y3QgYXJtX3NtbXVfc3RydGFiX2NmZwlzdHJ0YWJfY2ZnOwo+ Pj4gICArCS8qIFNNTVUgZmVhdHVyZSByZWdpc3RlcnMgKi8KPj4+ICsJdTMyCQkJCWlkcjA7Cj4+ PiArCXUzMgkJCQlpZHIxOwo+Pj4gKwl1MzIJCQkJaWRyMjsKPj4+ICsJdTMyCQkJCWlkcjM7Cj4+ PiArCXUzMgkJCQlpZHI0Owo+Pj4gKwl1MzIJCQkJaWRyNTsKPj4+ICsJdTMyCQkJCWlkcjY7Cj4+ PiArCXUzMgkJCQlpaWRyOwo+Pj4gKwl1MzIJCQkJYWlkcjsKPj4+ICsKPj4+ICAgCS8qIElPTU1V IGNvcmUgY29kZSBoYW5kbGUgKi8KPj4+ICAgCXN0cnVjdCBpb21tdV9kZXZpY2UJCWlvbW11Owo+ Pj4gICBAQCAtNjc2LDYgKzY5NiwxMyBAQCBzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlIHsKPj4+ICAg CXN0cnVjdCBtdXRleAkJCXN0cmVhbXNfbXV0ZXg7Cj4+PiAgIH07Cj4+PiAgICtzdGF0aWMgaW5s aW5lIHN0cnVjdCBhcm1fc21tdV9kZXZpY2UgKmRldl90b19hcm1fc21tdV9kZXZpY2Uoc3RydWN0 IGRldmljZSAqZGV2KQo+Pj4gK3sKPj4+ICsJc3RydWN0IGlvbW11X2RldmljZSAqaW9tbXUgPSBk ZXZfdG9faW9tbXVfZGV2aWNlKGRldik7Cj4+PiArCj4+PiArCXJldHVybiBjb250YWluZXJfb2Yo aW9tbXUsIHN0cnVjdCBhcm1fc21tdV9kZXZpY2UsIGlvbW11KTsKPj4+ICt9Cj4+PiArCj4+PiAg IHN0cnVjdCBhcm1fc21tdV9zdHJlYW0gewo+Pj4gICAJdTMyCQkJCWlkOwo+Pj4gICAJc3RydWN0 IGFybV9zbW11X21hc3RlcgkJKm1hc3RlcjsKPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KaW9tbXUgbWFpbGluZyBsaXN0CmlvbW11QGxpc3RzLmxpbnV4 LWZvdW5kYXRpb24ub3JnCmh0dHBzOi8vbGlzdHMubGludXhmb3VuZGF0aW9uLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2lvbW11