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 A98ECC4345F for ; Thu, 18 Apr 2024 22:07:50 +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:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References: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=EI2XN3Y6lT6fb/20ARxL6lNkwMFeMj8cio1++9THCe8=; b=YVxW7pCy3kb02T9MK1DbfSk3z4 iMXV42DdONkDYz7ah0pppkpaClZRF5zxiwAJdI+Ax4RLfUgbda27T7SVXocbqNxFUKyNYSbG8SiUH 9Rwg+5KqzQblOeA65snuFe34Ai4EP7qe2EkLISlYFDew1ocdNUi4rxt287LxW3bxBbkBL7HPjxZZI mhNd2gMwobV7AkqUC12pDIGRNFiyBJIZ8/2WDO2G9u9FGqkYyT7oTf26uc9P/JiTb4rutaLmJ8qOA j0tH280B1cUKre8jm73nNicq7PTNWYvmEU/Z6YMAjKKeOqzWdI8+vKLJUP1B9Dxl/Bm0yU3XdoNN5 IoegKXsQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxZuu-00000003nzt-1p09; Thu, 18 Apr 2024 22:07:40 +0000 Received: from foss.arm.com ([217.140.110.172]) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rxZuq-00000003nzC-3o5t for linux-riscv@lists.infradead.org; Thu, 18 Apr 2024 22:07:38 +0000 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 4A8332F; Thu, 18 Apr 2024 15:08:03 -0700 (PDT) Received: from [10.57.20.187] (unknown [10.57.20.187]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 3717E3F738; Thu, 18 Apr 2024 15:07:32 -0700 (PDT) Message-ID: <08e12daa-3fcc-4ab2-ac55-dee8f69c429a@arm.com> Date: Thu, 18 Apr 2024 23:07:31 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2 3/7] iommu/riscv: Add RISC-V IOMMU PCIe device driver To: Tomasz Jeznach , Joerg Roedel , Will Deacon , Paul Walmsley References: <4a068da7a7a984a43d419c52310f8ab7d91da46e.1713456598.git.tjeznach@rivosinc.com> From: Robin Murphy Content-Language: en-GB In-Reply-To: <4a068da7a7a984a43d419c52310f8ab7d91da46e.1713456598.git.tjeznach@rivosinc.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240418_150737_245599_222228AC X-CRM114-Status: GOOD ( 31.28 ) 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: , Cc: 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 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 T24gMjAyNC0wNC0xOCA1OjMyIHBtLCBUb21hc3ogSmV6bmFjaCB3cm90ZToKPiBJbnRyb2R1Y2Ug ZGV2aWNlIGRyaXZlciBmb3IgUENJZSBpbXBsZW1lbnRhdGlvbgo+IG9mIFJJU0MtViBJT01NVSBh cmNoaXRlY3RlZCBoYXJkd2FyZS4KPiAKPiBJT01NVSBoYXJkd2FyZSBhbmQgc3lzdGVtIHN1cHBv cnQgZm9yIE1TSSBvciBNU0ktWCBpcwo+IHJlcXVpcmVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24u Cj4gCj4gVmVuZG9yIGFuZCBkZXZpY2UgaWRlbnRpZmllcnMgdXNlZCBpbiB0aGlzIHBhdGNoCj4g bWF0Y2hlcyBRRU1VIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSSVNDLVYgSU9NTVUgUENJZQo+IGRl dmljZSwgZnJvbSBSaXZvcyBWSUQgKDB4MWVmZCkgcmFuZ2UgYWxsb2NhdGVkIGJ5IHRoZSBQQ0kt U0lHLgo+IAo+IExpbms6IGh0dHBzOi8vbG9yZS5rZXJuZWwub3JnL3FlbXUtZGV2ZWwvMjAyNDAz MDcxNjAzMTkuNjc1MDQ0LTEtZGJhcmJvemFAdmVudGFuYW1pY3JvLmNvbS8KPiBDby1kZXZlbG9w ZWQtYnk6IE5pY2sgS29zc2lmaWRpcyA8bWlja0BpY3MuZm9ydGguZ3I+Cj4gU2lnbmVkLW9mZi1i eTogTmljayBLb3NzaWZpZGlzIDxtaWNrQGljcy5mb3J0aC5ncj4KPiBTaWduZWQtb2ZmLWJ5OiBU b21hc3ogSmV6bmFjaCA8dGplem5hY2hAcml2b3NpbmMuY29tPgo+IC0tLQo+ICAgTUFJTlRBSU5F UlMgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCj4gICBkcml2ZXJzL2lvbW11L3Jpc2N2L0tj b25maWcgICAgIHwgICA2ICsrCj4gICBkcml2ZXJzL2lvbW11L3Jpc2N2L01ha2VmaWxlICAgIHwg ICAxICsKPiAgIGRyaXZlcnMvaW9tbXUvcmlzY3YvaW9tbXUtcGNpLmMgfCAxNTQgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKPiAgIDQgZmlsZXMgY2hhbmdlZCwgMTYyIGluc2VydGlv bnMoKykKPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2lvbW11L3Jpc2N2L2lvbW11LXBj aS5jCj4gCj4gZGlmZiAtLWdpdCBhL01BSU5UQUlORVJTIGIvTUFJTlRBSU5FUlMKPiBpbmRleCAw NTE1OTljNzY1ODUuLjRkYTI5MGQ1ZTlkYiAxMDA2NDQKPiAtLS0gYS9NQUlOVEFJTkVSUwo+ICsr KyBiL01BSU5UQUlORVJTCj4gQEAgLTE4OTc1LDYgKzE4OTc1LDcgQEAgRjoJRG9jdW1lbnRhdGlv bi9kZXZpY2V0cmVlL2JpbmRpbmdzL2lvbW11L3Jpc2N2LGlvbW11LnlhbWwKPiAgIEY6CWRyaXZl cnMvaW9tbXUvcmlzY3YvS2NvbmZpZwo+ICAgRjoJZHJpdmVycy9pb21tdS9yaXNjdi9NYWtlZmls ZQo+ICAgRjoJZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS1iaXRzLmgKPiArRjoJZHJpdmVycy9p b21tdS9yaXNjdi9pb21tdS1wY2kuYwo+ICAgRjoJZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS1w bGF0Zm9ybS5jCj4gICBGOglkcml2ZXJzL2lvbW11L3Jpc2N2L2lvbW11LmMKPiAgIEY6CWRyaXZl cnMvaW9tbXUvcmlzY3YvaW9tbXUuaAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L3Jpc2N2 L0tjb25maWcgYi9kcml2ZXJzL2lvbW11L3Jpc2N2L0tjb25maWcKPiBpbmRleCBkMDIzMjZiZGRi NGMuLjcxMTMyNjk5MjU4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lvbW11L3Jpc2N2L0tjb25m aWcKPiArKysgYi9kcml2ZXJzL2lvbW11L3Jpc2N2L0tjb25maWcKPiBAQCAtMTQsMyArMTQsOSBA QCBjb25maWcgUklTQ1ZfSU9NTVUKPiAgIAo+ICAgCSAgU2F5IFkgaGVyZSBpZiB5b3VyIFNvQyBp bmNsdWRlcyBhbiBJT01NVSBkZXZpY2UgaW1wbGVtZW50aW5nCj4gICAJICB0aGUgUklTQy1WIElP TU1VIGFyY2hpdGVjdHVyZS4KPiArCj4gK2NvbmZpZyBSSVNDVl9JT01NVV9QQ0kKPiArCWRlZl9i b29sIHkgaWYgUklTQ1ZfSU9NTVUgJiYgUENJX01TSQo+ICsJZGVwZW5kcyBvbiBSSVNDVl9JT01N VSAmJiBQQ0lfTVNJCj4gKwloZWxwCj4gKwkgIFN1cHBvcnQgZm9yIHRoZSBQQ0kgaW1wbGVtZW50 YXRpb24gb2YgUklTQy1WIElPTU1VIGFyY2hpdGVjdHVyZS4KClNpbWlsYXIgY29tbWVudHMgYXMg YmVmb3JlLgoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9pb21tdS9yaXNjdi9NYWtlZmlsZSBiL2Ry aXZlcnMvaW9tbXUvcmlzY3YvTWFrZWZpbGUKPiBpbmRleCBlNGMxODlkZTU4ZDMuLmY1NGM5ZWQx N2Q0MSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2lvbW11L3Jpc2N2L01ha2VmaWxlCj4gKysrIGIv ZHJpdmVycy9pb21tdS9yaXNjdi9NYWtlZmlsZQo+IEBAIC0xLDIgKzEsMyBAQAo+ICAgIyBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5Cj4gICBvYmotJChDT05GSUdfUklTQ1Zf SU9NTVUpICs9IGlvbW11Lm8gaW9tbXUtcGxhdGZvcm0ubwo+ICtvYmotJChDT05GSUdfUklTQ1Zf SU9NTVVfUENJKSArPSBpb21tdS1wY2kubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lvbW11L3Jp c2N2L2lvbW11LXBjaS5jIGIvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS1wY2kuYwo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4gaW5kZXggMDAwMDAwMDAwMDAwLi45MjYzYzZlNDc1YmUKPiAtLS0g L2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9pb21tdS9yaXNjdi9pb21tdS1wY2kuYwo+IEBAIC0w LDAgKzEsMTU0IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkK PiArCj4gKy8qCj4gKyAqIENvcHlyaWdodCDCqSAyMDIyLTIwMjQgUml2b3MgSW5jLgo+ICsgKiBD b3B5cmlnaHQgwqkgMjAyMyBGT1JUSC1JQ1MvQ0FSVgo+ICsgKgo+ICsgKiBSSVNDViBJT01NVSBh cyBhIFBDSWUgZGV2aWNlCj4gKyAqCj4gKyAqIEF1dGhvcnMKPiArICoJVG9tYXN6IEplem5hY2gg PHRqZXpuYWNoQHJpdm9zaW5jLmNvbT4KPiArICoJTmljayBLb3NzaWZpZGlzIDxtaWNrQGljcy5m b3J0aC5ncj4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvY29tcGlsZXIuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2luaXQuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2lvbW11Lmg+Cj4gKyNpbmNs dWRlIDxsaW51eC9rZXJuZWwuaD4KPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+ICsjaW5j bHVkZSA8bGludXgvcGNpLmg+Cj4gKwo+ICsjaW5jbHVkZSAiaW9tbXUtYml0cy5oIgo+ICsjaW5j bHVkZSAiaW9tbXUuaCIKPiArCj4gKy8qIFJpdm9zIEluYy4gYXNzaWduZWQgUENJIFZlbmRvciBh bmQgRGV2aWNlIElEcyAqLwo+ICsjaWZuZGVmIFBDSV9WRU5ET1JfSURfUklWT1MKPiArI2RlZmlu ZSBQQ0lfVkVORE9SX0lEX1JJVk9TICAgICAgICAgICAgIDB4MWVmZAo+ICsjZW5kaWYKPiArCj4g KyNpZm5kZWYgUENJX0RFVklDRV9JRF9SSVZPU19JT01NVQo+ICsjZGVmaW5lIFBDSV9ERVZJQ0Vf SURfUklWT1NfSU9NTVUgICAgICAgMHhlZGYxCj4gKyNlbmRpZgo+ICsKPiArc3RhdGljIGludCBy aXNjdl9pb21tdV9wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVjdCBw Y2lfZGV2aWNlX2lkICplbnQpCj4gK3sKPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5k ZXY7Cj4gKwlzdHJ1Y3QgcmlzY3ZfaW9tbXVfZGV2aWNlICppb21tdTsKPiArCWludCByYywgdmVj Owo+ICsKPiArCXJjID0gcGNpX2VuYWJsZV9kZXZpY2VfbWVtKHBkZXYpOwo+ICsJaWYgKHJjKQo+ ICsJCXJldHVybiByYzsKPiArCj4gKwlyYyA9IHBjaV9yZXF1ZXN0X21lbV9yZWdpb25zKHBkZXYs IEtCVUlMRF9NT0ROQU1FKTsKPiArCWlmIChyYykKPiArCQlnb3RvIGZhaWw7Cj4gKwo+ICsJcGNp X3NldF9tYXN0ZXIocGRldik7Cj4gKwo+ICsJaWYgKCEocGNpX3Jlc291cmNlX2ZsYWdzKHBkZXYs IDApICYgSU9SRVNPVVJDRV9NRU0pKQo+ICsJCWdvdG8gZmFpbDsKPiArCj4gKwlpZiAocGNpX3Jl c291cmNlX2xlbihwZGV2LCAwKSA8IFJJU0NWX0lPTU1VX1JFR19TSVpFKQo+ICsJCWdvdG8gZmFp bDsKPiArCj4gKwlpb21tdSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqaW9tbXUpLCBHRlBf S0VSTkVMKTsKPiArCWlmICghaW9tbXUpCj4gKwkJZ290byBmYWlsOwo+ICsKPiArCWlvbW11LT5k ZXYgPSBkZXY7Cj4gKwlpb21tdS0+cmVnID0gcGNpX2lvbWFwKHBkZXYsIDAsIFJJU0NWX0lPTU1V X1JFR19TSVpFKTsKCk1heWJlIGNvbnNpZGVyIHNvbWUgb2YgdGhlIHBjaW1fKiBkZXZyZXMgaGVs cGVycywgdG8gc2ltcGxpZnkgCmNsZWFudXAvcmVtb3ZlPwoKPiArCj4gKwlpZiAoIWlvbW11LT5y ZWcpCj4gKwkJZ290byBmYWlsOwo+ICsKPiArCWRldl9zZXRfZHJ2ZGF0YShkZXYsIGlvbW11KTsK PiArCj4gKwkvKiBDaGVjayBkZXZpY2UgcmVwb3J0ZWQgY2FwYWJpbGl0aWVzIC8gZmVhdHVyZXMu ICovCj4gKwlpb21tdS0+Y2FwcyA9IHJpc2N2X2lvbW11X3JlYWRxKGlvbW11LCBSSVNDVl9JT01N VV9SRUdfQ0FQKTsKPiArCWlvbW11LT5mY3RsID0gcmlzY3ZfaW9tbXVfcmVhZGwoaW9tbXUsIFJJ U0NWX0lPTU1VX1JFR19GQ1RMKTsKPiArCj4gKwkvKiBUaGUgUENJIGRyaXZlciBvbmx5IHVzZXMg TVNJcywgbWFrZSBzdXJlIHRoZSBJT01NVSBzdXBwb3J0cyB0aGlzICovCj4gKwlzd2l0Y2ggKEZJ RUxEX0dFVChSSVNDVl9JT01NVV9DQVBfSUdTLCBpb21tdS0+Y2FwcykpIHsKPiArCWNhc2UgUklT Q1ZfSU9NTVVfQ0FQX0lHU19NU0k6Cj4gKwljYXNlIFJJU0NWX0lPTU1VX0NBUF9JR1NfQk9USDoK PiArCQlicmVhazsKPiArCWRlZmF1bHQ6Cj4gKwkJZGV2X2VycihkZXYsICJ1bmFibGUgdG8gdXNl IG1lc3NhZ2Utc2lnbmFsZWQgaW50ZXJydXB0c1xuIik7Cj4gKwkJcmMgPSAtRU5PREVWOwo+ICsJ CWdvdG8gZmFpbF91bm1hcDsKPiArCX0KPiArCj4gKwkvKiBBbGxvY2F0ZSBhbmQgYXNzaWduIElS USB2ZWN0b3JzIGZvciB0aGUgdmFyaW91cyBldmVudHMgKi8KPiArCXJjID0gcGNpX2FsbG9jX2ly cV92ZWN0b3JzKHBkZXYsIDEsIFJJU0NWX0lPTU1VX0lOVFJfQ09VTlQsCj4gKwkJCQkgICBQQ0lf SVJRX01TSVggfCBQQ0lfSVJRX01TSSk7Cj4gKwlpZiAocmMgPD0gMCkgewo+ICsJCWRldl9lcnIo ZGV2LCAidW5hYmxlIHRvIGFsbG9jYXRlIGlycSB2ZWN0b3JzXG4iKTsKPiArCQlnb3RvIGZhaWxf dW5tYXA7Cj4gKwl9Cj4gKwlmb3IgKHZlYyA9IDA7IHZlYyA8IHJjOyB2ZWMrKykgewo+ICsJCWlv bW11LT5pcnFzW3ZlY10gPSBtc2lfZ2V0X3ZpcnEoZGV2LCB2ZWMpOwo+ICsJCWlmICghaW9tbXUt PmlycXNbdmVjXSkKCkNhbiB0aGF0IGV2ZXIgZmFpbCBpZiB0aGUgbG9vcCBpcyBhbHJlYWR5IGJv dW5kZWQgdG8gdGhlIG51bWJlciBvZiAKdmVjdG9ycyBzdWNjZXNzZnVsbHkgYWxsb2NhdGVkPwoK PiArCQkJYnJlYWs7Cj4gKwl9Cj4gKwlpb21tdS0+aXJxc19jb3VudCA9IHZlYzsKPiArCj4gKwkv KiBFbmFibGUgbWVzc2FnZS1zaWduYWxlZCBpbnRlcnJ1cHRzLCBmY3RsLldTSSAqLwo+ICsJaWYg KGlvbW11LT5mY3RsICYgUklTQ1ZfSU9NTVVfRkNUTF9XU0kpIHsKPiArCQlpb21tdS0+ZmN0bCBe PSBSSVNDVl9JT01NVV9GQ1RMX1dTSTsKPiArCQlyaXNjdl9pb21tdV93cml0ZWwoaW9tbXUsIFJJ U0NWX0lPTU1VX1JFR19GQ1RMLCBpb21tdS0+ZmN0bCk7Cj4gKwl9Cj4gKwo+ICsJcmMgPSByaXNj dl9pb21tdV9pbml0KGlvbW11KTsKPiArCWlmICghcmMpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICtm YWlsX3VubWFwOgo+ICsJaW91bm1hcChpb21tdS0+cmVnKTsKPiArCXBjaV9mcmVlX2lycV92ZWN0 b3JzKHBkZXYpOwo+ICtmYWlsOgo+ICsJcGNpX3JlbGVhc2VfcmVnaW9ucyhwZGV2KTsKPiArCXBj aV9jbGVhcl9tYXN0ZXIocGRldik7Cj4gKwlwY2lfZGlzYWJsZV9kZXZpY2UocGRldik7Cj4gKwly ZXR1cm4gcmM7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHJpc2N2X2lvbW11X3BjaV9yZW1vdmUo c3RydWN0IHBjaV9kZXYgKnBkZXYpCj4gK3sKPiArCXN0cnVjdCByaXNjdl9pb21tdV9kZXZpY2Ug KmlvbW11ID0gZGV2X2dldF9kcnZkYXRhKCZwZGV2LT5kZXYpOwo+ICsKPiArCXJpc2N2X2lvbW11 X3JlbW92ZShpb21tdSk7Cj4gKwlpb3VubWFwKGlvbW11LT5yZWcpOwo+ICsJcGNpX2ZyZWVfaXJx X3ZlY3RvcnMocGRldik7Cj4gKwlwY2lfcmVsZWFzZV9yZWdpb25zKHBkZXYpOwo+ICsJcGNpX2Ns ZWFyX21hc3RlcihwZGV2KTsKPiArCXBjaV9kaXNhYmxlX2RldmljZShwZGV2KTsKPiArfQo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkIHJpc2N2X2lvbW11X3BjaV90Ymxb XSA9IHsKPiArCXtQQ0lfVkVORE9SX0lEX1JJVk9TLCBQQ0lfREVWSUNFX0lEX1JJVk9TX0lPTU1V LAo+ICsJIFBDSV9BTllfSUQsIFBDSV9BTllfSUQsIDAsIDAsIDB9LAo+ICsJezAsfQo+ICt9Owo+ ICsKPiArTU9EVUxFX0RFVklDRV9UQUJMRShwY2ksIHJpc2N2X2lvbW11X3BjaV90YmwpOwo+ICsK PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgcmlzY3ZfaW9tbXVfb2ZfbWF0Y2hb XSA9IHsKPiArCXsuY29tcGF0aWJsZSA9ICJyaXNjdixwY2ktaW9tbXUiLH0sCj4gKwl7fSwKPiAr fTsKPiArCj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIHJpc2N2X2lvbW11X29mX21hdGNoKTsK PiArCj4gK3N0YXRpYyBzdHJ1Y3QgcGNpX2RyaXZlciByaXNjdl9pb21tdV9wY2lfZHJpdmVyID0g ewo+ICsJLm5hbWUgPSBLQlVJTERfTU9ETkFNRSwKPiArCS5pZF90YWJsZSA9IHJpc2N2X2lvbW11 X3BjaV90YmwsCj4gKwkucHJvYmUgPSByaXNjdl9pb21tdV9wY2lfcHJvYmUsCj4gKwkucmVtb3Zl ID0gcmlzY3ZfaW9tbXVfcGNpX3JlbW92ZSwKPiArCS5kcml2ZXIgPSB7Cj4gKwkJLm9mX21hdGNo X3RhYmxlID0gcmlzY3ZfaW9tbXVfb2ZfbWF0Y2gsCgpEb2VzIGFuIG9mX21hdGNoX3RhYmxlIHNl cnZlIGFueSBmdW5jdGlvbmFsIHB1cnBvc2UgZm9yIGEgUENJIGRyaXZlcj8gSSAKY2FuJ3QgZmlu ZCBhbnkgb3RoZXIgZXhhbXBsZXMgb2YgdGhpcyBiZWluZyBkb25lLgoKVGhhbmtzLApSb2Jpbi4K Cj4gKwkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLAo+ICsJfSwKPiArfTsKPiArCj4gK21v ZHVsZV9wY2lfZHJpdmVyKHJpc2N2X2lvbW11X3BjaV9kcml2ZXIpOwoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtcmlzY3YgbWFpbGluZyBsaXN0 CmxpbnV4LXJpc2N2QGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xpc3RzLmluZnJhZGVhZC5v cmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yaXNjdgo=