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 C159BCA0FE4 for ; Fri, 30 Aug 2024 12:01:21 +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:Cc:To:Subject: 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=mkd1rh6nN2J7U8klKsAd8RACRhtyXk8vyA3/qAKbnv4=; b=Vr8yyBHybq/d7B bzsgGAnmA7faMKEd9wSOFkGF5pDrT9vUbG/FsWnbInxXm3Yk3apuBhbvLyiQEbHr6VXrAkWMITOcl rvjytA9KGKG8dsDOaCRrUK9mhBV0scYHoQlRHag3es9rV6iUiewX4NcSXXRD3XACm2fDQ2730/Iqu 4hFlRKpiRyp7k7viY5PAbjUgF2F/LOr3bWFNN6Dkn5ykd2c+NAOuYkkJwYkmKbMLLXtPEhX5KI+nF ZeFsizXO1bs1yDIKnH7nNbmUeE7GhfG63WSaDvKBthLra95lVj0uKrSpMraKd2E2y2QhjApek9Kdj 0c2tx7NrPd4eo3GcoeRQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1sk0JX-000000069LD-3qRK; Fri, 30 Aug 2024 12:01:15 +0000 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1sk0JV-000000069KK-1BMo for linux-riscv@lists.infradead.org; Fri, 30 Aug 2024 12:01:14 +0000 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-71433096e89so1425084b3a.3 for ; Fri, 30 Aug 2024 05:01:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ventanamicro.com; s=google; t=1725019271; x=1725624071; darn=lists.infradead.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=S+J8nDWKmcjiFDnbhyvi48+lL6iNF2GBrnR+36Q3WWM=; b=b2Z4mjJa1G0uTvqrypJybMUAf0a4IX3nHa5/ymkk5Obd5EQy4SXkHKJq4mCGj7gDaf yYsiY9VJDJvSskIn2VMz+1bFGJ4heUwkxMuLhEOYU4xqnjmiMwCT7FHjKyZJ/D7iKMRo fEcTuoBM8sg5mhFtf4zT9SN2KphRUW/c/9Bg75dyXsM1YpwMeoIudswduNa35oL42RTp nhgGE3n0VFpum8kFelHVuDj2zjODbyd5+X3ItKT69a56m2Xry3Tv2SnTY7TiJNlfatbE jqhJ7nIjTDwjIofe1Wq3MRnkGYZHChWk/mqxCzy1MIc1Fgpia9z3ncbN/NhBjRn66Iga vqvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725019271; x=1725624071; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=S+J8nDWKmcjiFDnbhyvi48+lL6iNF2GBrnR+36Q3WWM=; b=t/fl/Bzq6a1nygpISkUIsAwSadBaUCHSbTc6mHXtD1RJGwIZL2QDONnDXD93DwidRH u/L+OYSGHoeEzq5/a3ZrP+ZQnDeaHEZv9ZzSNNrApd7vHiC9z4efEhAiBsYGbe5gesQM qkQgS1CeR5UiFesDpqyyhRE90b1upfWttBwyxbBVD9cjX+XolAQHLspiyTEdGd18Ul0S 4xdMglPjEWT7Zzyu7cTL8ZvW3hTwt2xBFzr36aU7I/FUkHopgGWox9N8DZArC+OYeW/W Lpf5I4y2z9LRODRIOZRSpoe+RwJwDfsiEnP7fSn619cV0lJai90Q1+f1GOOJLMGPUDhA gx3g== X-Forwarded-Encrypted: i=1; AJvYcCWYP2DCdYQHM9vxhFCsb6rIfHO73VWCrMS9cV9vd/dfJqwVgf79Kghp71tQVPizt70wtLeL8FnvIKiZIw==@lists.infradead.org X-Gm-Message-State: AOJu0YyEJoTkFPI6896fSjbhtfmvUdyF7A4VCIFGBQllgt7eKCUxFzrU xVsKipPyrrnM4cJc0prcOtMe3qmbIt1L4r/arMUUOr6MJzWCSoAo/heNeWe3/i0= X-Google-Smtp-Source: AGHT+IGKLvAFAz/eBLXMb30uIZ9vdANBzSIr6ORPbKAbI0x7ooOqoOsCu8d84XfIMHbv7krKGeaTpw== X-Received: by 2002:a05:6a00:981:b0:706:58ef:613 with SMTP id d2e1a72fcca58-715dfc72cfdmr7188548b3a.27.1725019269804; Fri, 30 Aug 2024 05:01:09 -0700 (PDT) Received: from [192.168.68.110] ([177.170.227.130]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-715e569ef15sm2599685b3a.105.2024.08.30.05.01.04 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 30 Aug 2024 05:01:09 -0700 (PDT) Message-ID: <3fdb33d3-16cd-49a6-bad7-81631f99c291@ventanamicro.com> Date: Fri, 30 Aug 2024 09:01:02 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v8 3/7] iommu/riscv: Add RISC-V IOMMU PCIe device driver To: Jim Shu , Tomasz Jeznach Cc: Joerg Roedel , Will Deacon , Robin Murphy , Paul Walmsley , Anup Patel , devicetree@vger.kernel.org, Conor Dooley , Albert Ou , linux@rivosinc.com, linux-kernel@vger.kernel.org, Rob Herring , Sebastien Boeuf , iommu@lists.linux.dev, Palmer Dabbelt , Nick Kossifidis , Krzysztof Kozlowski , linux-riscv@lists.infradead.org, Lu Baolu , Zong Li References: Content-Language: en-US From: Daniel Henrique Barboza In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240830_050113_359934_6FB5BFFC X-CRM114-Status: GOOD ( 36.69 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: 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-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org CgpPbiA4LzMwLzI0IDQ6MDQgQU0sIEppbSBTaHUgd3JvdGU6Cj4gSGkgVG9tYXN6LAo+IAo+IFFF TVUgUklTQy1WIElPTU1VIHdpbGwgc3dpdGNoIHRoZSBQQ0llIHZlbmRvci9kZXZpY2UgSUQgdG8g UmVkIEhhdCBvbmUKPiBbMV0gaW4gdGhlIGxhdGVzdCB2NiBwYXRjaC4KPiBXaWxsIHdlIGFsc28g c3VwcG9ydCB0aGUgUENJZSBJRCBvZiBSZWQgSGF0IG9uZSBpbiB0aGUgTGludXggZHJpdmVyPwo+ IAo+IFsxXSBodHRwczovL3BhdGNoZXcub3JnL1FFTVUvMjAyNDA4MDExNTQzMzQuMTAwOTg1Mi0x LWRiYXJib3phQHZlbnRhbmFtaWNyby5jb20vMjAyNDA4MDExNTQzMzQuMTAwOTg1Mi01LWRiYXJi b3phQHZlbnRhbmFtaWNyby5jb20vCgpUaGUgUUVNVS1zaWRlIGJhY2tncm91bmQgb2YgdGhpcyBj aGFuZ2U6IHRoZSBvcmlnaW5hbCBwYXRjaGVzIGZyb20gVG9tYXN6IHdhcwpoYXJkY29kaW5nIGEg Uml2b3MgUENJIElELCBpLmUuIHRoZSBkZXZpY2Ugd2FzIGJlaW5nIHJlZ2lzdGVyZWQgYXMgYSBS aXZvcyBJT01NVQpQQ0kgZGV2aWNlLiBUaGUgdGhpbmcgaXMgdGhhdCB0aGVyZSBpc24ndCBhbnl0 aGluZyAgUml2b3Mgc3BlY2lmaWMgaW4gdGhlIFFFTVUKSU9NTVUgZW11bGF0aW9uLCBzaW5jZSB3 ZSdyZSBhZGhlcmluZyB0byB0aGUgcmlzY3YtaW9tbXUgc3BlYyBlbnRpcmVseSAod2l0aCBhCmNv dXBsZSBvZiBkZXNpZ24gY2hvaWNlcyBoZXJlIGFuZCB0aGVyZSksIHRodXMgd2UgZGVjaWRlZCBp dCB3b3VsZCBiZSBiZXR0ZXIgdG8KZ2V0IGEgZ2VuZXJpYyBQQ0kgSU9NTVUgSUQuCgpSZWQgSGF0 IHdhcyBraW5kIGVub3VnaCB0byBnYXZlIHVzIG9uZSBmcm9tIHRoZWlyIFBDSSBJRCBzcGFjZSwg c2luY2UgUlZJIGRpZG4ndApib3RoZXIgZ2V0dGluZyBhbiBJRCBmb3IgdGhpcyByZWZlcmVuY2Ug ZGV2aWNlLCBhbmQgd2UncmUgdXNpbmcgdGhlIFJlZCBIYXQgSUQKaW4gdGhlIFFFTVUgZW11bGF0 aW9uLiBUaGUgUUVNVSBJT01NVSBQQ0kgZGV2aWNlIGlzIGJ5IGRlZmF1bHQgcmVwb3J0ZWQgYXMK MWIzNjowMDE0IChQQ0lfVkVORE9SX0lEX1JFREhBVCA6IFBDSV9ERVZJQ0VfSURfUkVESEFUX1JJ U0NWX0lPTU1VKS4KClRoaXMgY2hhbmdlIGhhcHBlbmVkIGluIHYzLCBzZW50IGluIE1heSAyMDI0 OgoKaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvcWVtdS1yaXNjdi8yMDI0MDUyMzE3Mzk1NS4xOTQw MDcyLTEtZGJhcmJvemFAdmVudGFuYW1pY3JvLmNvbS8KClRoaXMgY2hhbmdlIHdvdWxkIG1ha2Ug dGhlIFFFTVUgSU9NTVUgUENJIGRldmljZSBpbmNvbXBhdGlibGUgd2l0aCB0aGlzIGtlcm5lbApz dXBwb3J0LCBzbyB3ZSBhZGRlZCBhIGNhcGFiaWxpdHkgdG8gc2V0IHRoZSBQQ0kgSUQgZm9yIHRo ZSBkZXZpY2UgaW4gdGhlIFFFTVUKY29tbWFuZCBsaW5lLiBUbyBtYWtlIHRoZSBJT01NVSBQQ0kg ZGV2aWNlIHdvcmsgd2l0aCB0aGUgY3VycmVudCBrZXJuZWwgc3VwcG9ydCwgdGhhdAppcyBiZWlu ZyBzZXQgdG8gYSBSaXZvcyBQQ0kgZGV2aWNlLCBjaGFuZ2UgdGhlIHZlbmRvci9kZXZpY2UgSUQg dG8gbWF0Y2ggd2hhdCB0aGUKa2VybmVsIGRyaXZlciBleHBlY3RzOgoKKC4uLikgIC1kZXZpY2Ug cmlzY3YtaW9tbXUtcGNpLHZlbmRvci1pZD0weDFlZmQsZGV2aWNlLWlkPTB4ZWRmMQoKVGhlIGFi aWxpdHkgdG8gc2V0IHZlbmRvci1pZC9kZXZpY2UtaWQgb2YgdGhpcyBkZXZpY2Ugd2lsbCBhbGxv dyBhbiBlYXNpZXIgZGV2ZWxvcG1lbnQKb2Ygb3RoZXIgcHJvcHJpZXRhcnkgSU9NTVUgUENJIGRy aXZlcnMsIGkuZS4gaXQncyBub3QgYSBoYWNrIHRvIG1ha2UgdGhlIGN1cnJlbnQga2VybmVsCnN1 cHBvcnQgd29yay4KCkFzIGZvciB0aGlzIGtlcm5lbCBzdXBwb3J0LCBJIGRpZG4ndCBmdWxseSBy ZXZpZXcgaXQgdG8gc2VlIGlmIHRoZXJlIGlzIGEgUml2b3Mgc3BlY2lmaWMKYmVoYXZpb3IgYmVp bmcgaW1wbGVtZW50ZWQuIElmIHRoaXMgaXNuJ3QgdGhlIGNhc2UgcGVyaGFwcyB0aGVyZSBpcyBh IGNhc2UgdG8gYmUgbWFkZQp0byBhbHNvIG1ha2UgdGhlIGtlcm5lbCBkcml2ZXIgbW9yZSBnZW5l cmljIC0gaW4gdGhpcyBjYXNlIGZlZWwgZnJlZSB0byB1c2UgdGhlIHNhbWUgYXMKUUVNVSBpcyBn b2luZyB0byB1c2UgKFBDSV9WRU5ET1JfSURfUkVESEFUIDogUENJX0RFVklDRV9JRF9SRURIQVRf UklTQ1ZfSU9NTVUgLSAxYjM2OjAwMTQpLgoKClRoYW5rcywKCkRhbmllbAoKCj4gCj4gCj4gUmVn YXJkcywKPiBKaW0gU2h1Cj4gCj4gCj4gCj4gT24gU2F0LCBKdW4gMTUsIDIwMjQgYXQgMToyOeKA r1BNIFRvbWFzeiBKZXpuYWNoIDx0amV6bmFjaEByaXZvc2luYy5jb20+IHdyb3RlOgo+Pgo+PiBJ bnRyb2R1Y2UgZGV2aWNlIGRyaXZlciBmb3IgUENJZSBpbXBsZW1lbnRhdGlvbgo+PiBvZiBSSVND LVYgSU9NTVUgYXJjaGl0ZWN0ZWQgaGFyZHdhcmUuCj4+Cj4+IElPTU1VIGhhcmR3YXJlIGFuZCBz eXN0ZW0gc3VwcG9ydCBmb3IgTVNJIG9yIE1TSS1YIGlzCj4+IHJlcXVpcmVkIGJ5IHRoaXMgaW1w bGVtZW50YXRpb24uCj4+Cj4+IFZlbmRvciBhbmQgZGV2aWNlIGlkZW50aWZpZXJzIHVzZWQgaW4g dGhpcyBwYXRjaAo+PiBtYXRjaGVzIFFFTVUgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJJU0MtViBJ T01NVSBQQ0llCj4+IGRldmljZSwgZnJvbSBSaXZvcyBWSUQgKDB4MWVmZCkgcmFuZ2UgYWxsb2Nh dGVkIGJ5IHRoZSBQQ0ktU0lHLgo+Pgo+PiBNQUlOVEFJTkVSUyB8IGFkZGVkIGlvbW11LXBjaS5j IGFscmVhZHkgY292ZXJlZCBieSBtYXRjaGluZyBwYXR0ZXJuLgo+Pgo+PiBMaW5rOiBodHRwczov L2xvcmUua2VybmVsLm9yZy9xZW11LWRldmVsLzIwMjQwMzA3MTYwMzE5LjY3NTA0NC0xLWRiYXJi b3phQHZlbnRhbmFtaWNyby5jb20vCj4+IENvLWRldmVsb3BlZC1ieTogTmljayBLb3NzaWZpZGlz IDxtaWNrQGljcy5mb3J0aC5ncj4KPj4gU2lnbmVkLW9mZi1ieTogTmljayBLb3NzaWZpZGlzIDxt aWNrQGljcy5mb3J0aC5ncj4KPj4gUmV2aWV3ZWQtYnk6IEx1IEJhb2x1IDxiYW9sdS5sdUBsaW51 eC5pbnRlbC5jb20+Cj4+IFNpZ25lZC1vZmYtYnk6IFRvbWFzeiBKZXpuYWNoIDx0amV6bmFjaEBy aXZvc2luYy5jb20+Cj4+IC0tLQo+PiAgIGRyaXZlcnMvaW9tbXUvcmlzY3YvS2NvbmZpZyAgICAg fCAgIDUgKysKPj4gICBkcml2ZXJzL2lvbW11L3Jpc2N2L01ha2VmaWxlICAgIHwgICAxICsKPj4g ICBkcml2ZXJzL2lvbW11L3Jpc2N2L2lvbW11LXBjaS5jIHwgMTE5ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxMjUgaW5zZXJ0aW9ucygrKQo+ PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lvbW11L3Jpc2N2L2lvbW11LXBjaS5jCj4+ Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L3Jpc2N2L0tjb25maWcgYi9kcml2ZXJzL2lv bW11L3Jpc2N2L0tjb25maWcKPj4gaW5kZXggNWRjYzVjNDVhYTUwLi5jMDcxODE2ZjU5YTYgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvcmlzY3YvS2NvbmZpZwo+PiArKysgYi9kcml2ZXJz L2lvbW11L3Jpc2N2L0tjb25maWcKPj4gQEAgLTEzLDMgKzEzLDggQEAgY29uZmlnIFJJU0NWX0lP TU1VCj4+Cj4+ICAgICAgICAgICAgU2F5IFkgaGVyZSBpZiB5b3VyIFNvQyBpbmNsdWRlcyBhbiBJ T01NVSBkZXZpY2UgaW1wbGVtZW50aW5nCj4+ICAgICAgICAgICAgdGhlIFJJU0MtViBJT01NVSBh cmNoaXRlY3R1cmUuCj4+ICsKPj4gK2NvbmZpZyBSSVNDVl9JT01NVV9QQ0kKPj4gKyAgICAgICBk ZWZfYm9vbCB5IGlmIFJJU0NWX0lPTU1VICYmIFBDSV9NU0kKPj4gKyAgICAgICBoZWxwCj4+ICsg ICAgICAgICBTdXBwb3J0IGZvciB0aGUgUENJZSBpbXBsZW1lbnRhdGlvbiBvZiBSSVNDLVYgSU9N TVUgYXJjaGl0ZWN0dXJlLgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9yaXNjdi9NYWtl ZmlsZSBiL2RyaXZlcnMvaW9tbXUvcmlzY3YvTWFrZWZpbGUKPj4gaW5kZXggZTRjMTg5ZGU1OGQz Li5mNTRjOWVkMTdkNDEgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvaW9tbXUvcmlzY3YvTWFrZWZp bGUKPj4gKysrIGIvZHJpdmVycy9pb21tdS9yaXNjdi9NYWtlZmlsZQo+PiBAQCAtMSwyICsxLDMg QEAKPj4gICAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKPj4gICBvYmot JChDT05GSUdfUklTQ1ZfSU9NTVUpICs9IGlvbW11Lm8gaW9tbXUtcGxhdGZvcm0ubwo+PiArb2Jq LSQoQ09ORklHX1JJU0NWX0lPTU1VX1BDSSkgKz0gaW9tbXUtcGNpLm8KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUtcGNpLmMgYi9kcml2ZXJzL2lvbW11L3Jpc2N2L2lv bW11LXBjaS5jCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4u ZTY3NWFjY2ViMjkwCj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9pb21tdS9yaXNj di9pb21tdS1wY2kuYwo+PiBAQCAtMCwwICsxLDExOSBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjAtb25seQo+PiArCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IMKpIDIw MjItMjAyNCBSaXZvcyBJbmMuCj4+ICsgKiBDb3B5cmlnaHQgwqkgMjAyMyBGT1JUSC1JQ1MvQ0FS Vgo+PiArICoKPj4gKyAqIFJJU0NWIElPTU1VIGFzIGEgUENJZSBkZXZpY2UKPj4gKyAqCj4+ICsg KiBBdXRob3JzCj4+ICsgKiAgICAgVG9tYXN6IEplem5hY2ggPHRqZXpuYWNoQHJpdm9zaW5jLmNv bT4KPj4gKyAqICAgICBOaWNrIEtvc3NpZmlkaXMgPG1pY2tAaWNzLmZvcnRoLmdyPgo+PiArICov Cj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC9jb21waWxlci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L2luaXQuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9pb21tdS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L2tlcm5lbC5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPgo+PiArCj4+ICsjaW5jbHVkZSAi aW9tbXUtYml0cy5oIgo+PiArI2luY2x1ZGUgImlvbW11LmgiCj4+ICsKPj4gKy8qIFJpdm9zIElu Yy4gYXNzaWduZWQgUENJIFZlbmRvciBhbmQgRGV2aWNlIElEcyAqLwo+PiArI2lmbmRlZiBQQ0lf VkVORE9SX0lEX1JJVk9TCj4+ICsjZGVmaW5lIFBDSV9WRU5ET1JfSURfUklWT1MgICAgICAgICAg ICAgMHgxZWZkCj4+ICsjZW5kaWYKPj4gKwo+PiArI2lmbmRlZiBQQ0lfREVWSUNFX0lEX1JJVk9T X0lPTU1VCj4+ICsjZGVmaW5lIFBDSV9ERVZJQ0VfSURfUklWT1NfSU9NTVUgICAgICAgMHhlZGYx Cj4+ICsjZW5kaWYKPj4gKwo+PiArc3RhdGljIGludCByaXNjdl9pb21tdV9wY2lfcHJvYmUoc3Ry dWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICplbnQpCj4+ICt7 Cj4+ICsgICAgICAgc3RydWN0IGRldmljZSAqZGV2ID0gJnBkZXYtPmRldjsKPj4gKyAgICAgICBz dHJ1Y3QgcmlzY3ZfaW9tbXVfZGV2aWNlICppb21tdTsKPj4gKyAgICAgICBpbnQgcmMsIHZlYzsK Pj4gKwo+PiArICAgICAgIHJjID0gcGNpbV9lbmFibGVfZGV2aWNlKHBkZXYpOwo+PiArICAgICAg IGlmIChyYykKPj4gKyAgICAgICAgICAgICAgIHJldHVybiByYzsKPj4gKwo+PiArICAgICAgIGlm ICghKHBjaV9yZXNvdXJjZV9mbGFncyhwZGV2LCAwKSAmIElPUkVTT1VSQ0VfTUVNKSkKPj4gKyAg ICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+PiArCj4+ICsgICAgICAgaWYgKHBjaV9yZXNv dXJjZV9sZW4ocGRldiwgMCkgPCBSSVNDVl9JT01NVV9SRUdfU0laRSkKPj4gKyAgICAgICAgICAg ICAgIHJldHVybiAtRU5PREVWOwo+PiArCj4+ICsgICAgICAgcmMgPSBwY2ltX2lvbWFwX3JlZ2lv bnMocGRldiwgQklUKDApLCBwY2lfbmFtZShwZGV2KSk7Cj4+ICsgICAgICAgaWYgKHJjKQo+PiAr ICAgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCByYywgInBjaW1faW9tYXBf cmVnaW9ucyBmYWlsZWRcbiIpOwo+PiArCj4+ICsgICAgICAgaW9tbXUgPSBkZXZtX2t6YWxsb2Mo ZGV2LCBzaXplb2YoKmlvbW11KSwgR0ZQX0tFUk5FTCk7Cj4+ICsgICAgICAgaWYgKCFpb21tdSkK Pj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwo+PiArCj4+ICsgICAgICAgaW9tbXUt PmRldiA9IGRldjsKPj4gKyAgICAgICBpb21tdS0+cmVnID0gcGNpbV9pb21hcF90YWJsZShwZGV2 KVswXTsKPj4gKwo+PiArICAgICAgIHBjaV9zZXRfbWFzdGVyKHBkZXYpOwo+PiArICAgICAgIGRl dl9zZXRfZHJ2ZGF0YShkZXYsIGlvbW11KTsKPj4gKwo+PiArICAgICAgIC8qIENoZWNrIGRldmlj ZSByZXBvcnRlZCBjYXBhYmlsaXRpZXMgLyBmZWF0dXJlcy4gKi8KPj4gKyAgICAgICBpb21tdS0+ Y2FwcyA9IHJpc2N2X2lvbW11X3JlYWRxKGlvbW11LCBSSVNDVl9JT01NVV9SRUdfQ0FQQUJJTElU SUVTKTsKPj4gKyAgICAgICBpb21tdS0+ZmN0bCA9IHJpc2N2X2lvbW11X3JlYWRsKGlvbW11LCBS SVNDVl9JT01NVV9SRUdfRkNUTCk7Cj4+ICsKPj4gKyAgICAgICAvKiBUaGUgUENJIGRyaXZlciBv bmx5IHVzZXMgTVNJcywgbWFrZSBzdXJlIHRoZSBJT01NVSBzdXBwb3J0cyB0aGlzICovCj4+ICsg ICAgICAgc3dpdGNoIChGSUVMRF9HRVQoUklTQ1ZfSU9NTVVfQ0FQQUJJTElUSUVTX0lHUywgaW9t bXUtPmNhcHMpKSB7Cj4+ICsgICAgICAgY2FzZSBSSVNDVl9JT01NVV9DQVBBQklMSVRJRVNfSUdT X01TSToKPj4gKyAgICAgICBjYXNlIFJJU0NWX0lPTU1VX0NBUEFCSUxJVElFU19JR1NfQk9USDoK Pj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+PiArICAgICAgIGRlZmF1bHQ6Cj4+ICsgICAgICAg ICAgICAgICByZXR1cm4gZGV2X2Vycl9wcm9iZShkZXYsIC1FTk9ERVYsCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAidW5hYmxlIHRvIHVzZSBtZXNzYWdlLXNpZ25hbGVk IGludGVycnVwdHNcbiIpOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIC8qIEFsbG9jYXRl IGFuZCBhc3NpZ24gSVJRIHZlY3RvcnMgZm9yIHRoZSB2YXJpb3VzIGV2ZW50cyAqLwo+PiArICAg ICAgIHJjID0gcGNpX2FsbG9jX2lycV92ZWN0b3JzKHBkZXYsIDEsIFJJU0NWX0lPTU1VX0lOVFJf Q09VTlQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUENJX0lSUV9NU0lY IHwgUENJX0lSUV9NU0kpOwo+PiArICAgICAgIGlmIChyYyA8PSAwKQo+PiArICAgICAgICAgICAg ICAgcmV0dXJuIGRldl9lcnJfcHJvYmUoZGV2LCAtRU5PREVWLAo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgInVuYWJsZSB0byBhbGxvY2F0ZSBpcnEgdmVjdG9yc1xuIik7 Cj4+ICsKPj4gKyAgICAgICBpb21tdS0+aXJxc19jb3VudCA9IHJjOwo+PiArICAgICAgIGZvciAo dmVjID0gMDsgdmVjIDwgaW9tbXUtPmlycXNfY291bnQ7IHZlYysrKQo+PiArICAgICAgICAgICAg ICAgaW9tbXUtPmlycXNbdmVjXSA9IG1zaV9nZXRfdmlycShkZXYsIHZlYyk7Cj4+ICsKPj4gKyAg ICAgICAvKiBFbmFibGUgbWVzc2FnZS1zaWduYWxlZCBpbnRlcnJ1cHRzLCBmY3RsLldTSSAqLwo+ PiArICAgICAgIGlmIChpb21tdS0+ZmN0bCAmIFJJU0NWX0lPTU1VX0ZDVExfV1NJKSB7Cj4+ICsg ICAgICAgICAgICAgICBpb21tdS0+ZmN0bCBePSBSSVNDVl9JT01NVV9GQ1RMX1dTSTsKPj4gKyAg ICAgICAgICAgICAgIHJpc2N2X2lvbW11X3dyaXRlbChpb21tdSwgUklTQ1ZfSU9NTVVfUkVHX0ZD VEwsIGlvbW11LT5mY3RsKTsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gcmlz Y3ZfaW9tbXVfaW5pdChpb21tdSk7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lkIHJpc2N2X2lv bW11X3BjaV9yZW1vdmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpCj4+ICt7Cj4+ICsgICAgICAgc3Ry dWN0IHJpc2N2X2lvbW11X2RldmljZSAqaW9tbXUgPSBkZXZfZ2V0X2RydmRhdGEoJnBkZXYtPmRl dik7Cj4+ICsKPj4gKyAgICAgICByaXNjdl9pb21tdV9yZW1vdmUoaW9tbXUpOwo+PiArfQo+PiAr Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgcmlzY3ZfaW9tbXVfcGNpX3Ri bFtdID0gewo+PiArICAgICAgIHtQQ0lfVkVORE9SX0lEX1JJVk9TLCBQQ0lfREVWSUNFX0lEX1JJ Vk9TX0lPTU1VLAo+PiArICAgICAgICBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLCAwfSwK Pj4gKyAgICAgICB7MCx9Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIg cmlzY3ZfaW9tbXVfcGNpX2RyaXZlciA9IHsKPj4gKyAgICAgICAubmFtZSA9IEtCVUlMRF9NT0RO QU1FLAo+PiArICAgICAgIC5pZF90YWJsZSA9IHJpc2N2X2lvbW11X3BjaV90YmwsCj4+ICsgICAg ICAgLnByb2JlID0gcmlzY3ZfaW9tbXVfcGNpX3Byb2JlLAo+PiArICAgICAgIC5yZW1vdmUgPSBy aXNjdl9pb21tdV9wY2lfcmVtb3ZlLAo+PiArICAgICAgIC5kcml2ZXIgPSB7Cj4+ICsgICAgICAg ICAgICAgICAuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsCj4+ICsgICAgICAgfSwKPj4gK307 Cj4+ICsKPj4gK2J1aWx0aW5fcGNpX2RyaXZlcihyaXNjdl9pb21tdV9wY2lfZHJpdmVyKTsKPj4g LS0KPj4gMi4zNC4xCj4+Cj4+Cj4+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCj4+IGxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdAo+PiBsaW51eC1yaXNjdkBs aXN0cy5pbmZyYWRlYWQub3JnCj4+IGh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4v bGlzdGluZm8vbGludXgtcmlzY3YKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmxpbnV4LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0 cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGlu Zm8vbGludXgtcmlzY3YK