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 gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (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 23F8FCD5BAB for ; Thu, 21 May 2026 23:41:26 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7D1BE10F461; Thu, 21 May 2026 23:41:25 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=kernel.org header.i=@kernel.org header.b="iIu2NYsD"; dkim-atps=neutral Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0E8CD10F461 for ; Thu, 21 May 2026 23:41:24 +0000 (UTC) Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 7741B60138; Thu, 21 May 2026 23:41:23 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 998BE1F00A3B; Thu, 21 May 2026 23:41:16 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1779406883; bh=3gGtk1HaMSOrNjSuBv1vNVcxZdaUJzZy2YhNgkmnK8M=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=iIu2NYsDwUMoNVqXejhPr7N1nulrwGg5RmVR8LbT1MRumGi4ECvOc9uClytjyL9+F BOlQgoVVGb5e3raTNsT9g+dA+fos5CasEaINUGXHEyKkem2v0uli+fV3DZS3Y+AKZd Lb5K8WBEMoPyih9pSou24+YqkV2LNwIA9tCG+YPOIPJz8MRarTdZ8MnOO2Xab8Kp3c 6jnORlVwFIPOS+Y2llqbkhE/hvbja5bSCyuagxLxed/KxIWButX2VjYBf3s0lj+MmI iaAQKf0nrHDEskHES1y5hvdEi2FWoA8xK7M0ogs7r+n1hE8jVUxa+EfaQzlt0FXMl2 ZYxPzhoaQ88kw== From: Danilo Krummrich To: gregkh@linuxfoundation.org, rafael@kernel.org, acourbot@nvidia.com, aliceryhl@google.com, david.m.ertman@intel.com, ira.weiny@intel.com, leon@kernel.org, viresh.kumar@linaro.org, m.wilczynski@samsung.com, ukleinek@kernel.org, bhelgaas@google.com, kwilczynski@kernel.org, abdiel.janulgue@gmail.com, robin.murphy@arm.com, markus.probst@posteo.de, ojeda@kernel.org, boqun@kernel.org, gary@garyguo.net, bjorn3_gh@protonmail.com, lossin@kernel.org, a.hindborg@kernel.org, tmgross@umich.edu, igor.korotin@linux.dev, daniel.almeida@collabora.com, pcolberg@redhat.com Cc: driver-core@lists.linux.dev, linux-kernel@vger.kernel.org, nova-gpu@lists.linux.dev, dri-devel@lists.freedesktop.org, linux-pm@vger.kernel.org, linux-pwm@vger.kernel.org, linux-pci@vger.kernel.org, rust-for-linux@vger.kernel.org, Danilo Krummrich , Eliot Courtney Subject: [PATCH v4 18/27] rust: io: make IoMem and ExclusiveIoMem lifetime-parameterized Date: Fri, 22 May 2026 01:34:44 +0200 Message-ID: <20260521233501.1191842-19-dakr@kernel.org> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260521233501.1191842-1-dakr@kernel.org> References: <20260521233501.1191842-1-dakr@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" QWRkIGEgbGlmZXRpbWUgcGFyYW1ldGVyIHRvIElvTWVtPCdhLCBTSVpFPiBhbmQgRXhjbHVzaXZl SW9NZW08J2EsClNJWkU+LCBzdG9yaW5nIGEgJidhIERldmljZTxCb3VuZD4gcmVmZXJlbmNlIHRv IHRpZSB0aGUgbWFwcGluZyB0byB0aGUKZGV2aWNlJ3MgbGlmZXRpbWUuCgpUaGlzIG1pcnJvcnMg dGhlIHBjaTo6QmFyPCdhLCBTSVpFPiBkZXNpZ24gYW5kIGVuYWJsZXMgZHJpdmVycyB0byBob2xk CkkvTyBtZW1vcnkgbWFwcGluZ3MgZGlyZWN0bHkgaW4gdGhlaXIgSFJUIHByaXZhdGUgZGF0YSwg dGllZCB0byB0aGUKZGV2aWNlIGxpZmV0aW1lLgoKSW9SZXF1ZXN0Ojppb21hcF8qIG1ldGhvZHMg bm93IHJldHVybiB0aGUgbWFwcGluZyBkaXJlY3RseSBpbnN0ZWFkIG9mCndyYXBwaW5nIGl0IGlu IERldnJlcy4gQ2FsbGVycyB0aGF0IG5lZWQgZGV2aWNlLW1hbmFnZWQgcmV2b2NhdGlvbiBjYW4K Y2FsbCB0aGUgbmV3IGludG9fZGV2cmVzKCkgbWV0aG9kLgoKQWNrZWQtYnk6IFV3ZSBLbGVpbmUt S8O2bmlnIDx1a2xlaW5la0BrZXJuZWwub3JnPgpSZXZpZXdlZC1ieTogRWxpb3QgQ291cnRuZXkg PGVjb3VydG5leUBudmlkaWEuY29tPgpTaWduZWQtb2ZmLWJ5OiBEYW5pbG8gS3J1bW1yaWNoIDxk YWtyQGtlcm5lbC5vcmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL3R5ci9kcml2ZXIucnMgfCAgIDQg Ky0KIGRyaXZlcnMvcHdtL3B3bV90aDE1MjAucnMgICAgIHwgICA0ICstCiBydXN0L2tlcm5lbC9p by9tZW0ucnMgICAgICAgICB8IDEwMyArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t CiAzIGZpbGVzIGNoYW5nZWQsIDU2IGluc2VydGlvbnMoKyksIDU1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzIGIvZHJpdmVycy9ncHUvZHJt L3R5ci9kcml2ZXIucnMKaW5kZXggNzk3ZjA5ZTIzYTRjLi4wNGY4M2ZjZjA5MzcgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS90eXIvZHJpdmVyLnJzCisrKyBiL2RyaXZlcnMvZ3B1L2RybS90 eXIvZHJpdmVyLnJzCkBAIC0zNyw3ICszNyw3IEBACiAgICAgcmVncywgLy8KIH07CiAKLXB1Yihj cmF0ZSkgdHlwZSBJb01lbSA9IGtlcm5lbDo6aW86Om1lbTo6SW9NZW08U1pfMk0+OworcHViKGNy YXRlKSB0eXBlIElvTWVtID0ga2VybmVsOjppbzo6bWVtOjpJb01lbTwnc3RhdGljLCBTWl8yTT47 CiAKIHB1YihjcmF0ZSkgc3RydWN0IFR5ckRybURyaXZlcjsKIApAQCAtMTEwLDcgKzExMCw3IEBA IGZuIHByb2JlPCdib3VuZD4oCiAgICAgICAgIGxldCBzcmFtX3JlZ3VsYXRvciA9IFJlZ3VsYXRv cjo6PHJlZ3VsYXRvcjo6RW5hYmxlZD46OmdldChwZGV2LmFzX3JlZigpLCBjInNyYW0iKT87CiAK ICAgICAgICAgbGV0IHJlcXVlc3QgPSBwZGV2LmlvX3JlcXVlc3RfYnlfaW5kZXgoMCkub2tfb3Io RU5PREVWKT87Ci0gICAgICAgIGxldCBpb21lbSA9IEFyYzo6cGluX2luaXQocmVxdWVzdC5pb21h cF9zaXplZDo6PFNaXzJNPigpLCBHRlBfS0VSTkVMKT87CisgICAgICAgIGxldCBpb21lbSA9IEFy Yzo6bmV3KHJlcXVlc3QuaW9tYXBfc2l6ZWQ6OjxTWl8yTT4oKT8uaW50b19kZXZyZXMoKT8sIEdG UF9LRVJORUwpPzsKIAogICAgICAgICBpc3N1ZV9zb2Z0X3Jlc2V0KHBkZXYuYXNfcmVmKCksICZp b21lbSk/OwogICAgICAgICBncHU6OmwyX3Bvd2VyX29uKHBkZXYuYXNfcmVmKCksICZpb21lbSk/ OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5ycyBiL2RyaXZlcnMvcHdtL3B3 bV90aDE1MjAucnMKaW5kZXggNmM1Yjc5MWYzMTUzLi40ODgwOGNkODA3MzcgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvcHdtL3B3bV90aDE1MjAucnMKKysrIGIvZHJpdmVycy9wd20vcHdtX3RoMTUyMC5y cwpAQCAtOTIsNyArOTIsNyBAQCBzdHJ1Y3QgVGgxNTIwV2ZIdyB7CiAjW3Bpbl9kYXRhKFBpbm5l ZERyb3ApXQogc3RydWN0IFRoMTUyMFB3bURyaXZlckRhdGEgewogICAgICNbcGluXQotICAgIGlv bWVtOiBkZXZyZXM6OkRldnJlczxJb01lbTxUSDE1MjBfUFdNX1JFR19TSVpFPj4sCisgICAgaW9t ZW06IGRldnJlczo6RGV2cmVzPElvTWVtPCdzdGF0aWMsIFRIMTUyMF9QV01fUkVHX1NJWkU+PiwK ICAgICBjbGs6IENsaywKIH0KIApAQCAtMzUyLDcgKzM1Miw3IEBAIGZuIHByb2JlPCdib3VuZD4o CiAgICAgICAgICAgICBkZXYsCiAgICAgICAgICAgICBUSDE1MjBfTUFYX1BXTV9OVU0sCiAgICAg ICAgICAgICB0cnlfcGluX2luaXQhKFRoMTUyMFB3bURyaXZlckRhdGEgewotICAgICAgICAgICAg ICAgIGlvbWVtIDwtIHJlcXVlc3QuaW9tYXBfc2l6ZWQ6OjxUSDE1MjBfUFdNX1JFR19TSVpFPigp LAorICAgICAgICAgICAgICAgIGlvbWVtIDwtIHJlcXVlc3QuaW9tYXBfc2l6ZWQ6OjxUSDE1MjBf UFdNX1JFR19TSVpFPigpPy5pbnRvX2RldnJlcygpLAogICAgICAgICAgICAgICAgIGNsayA8LSBj bGssCiAgICAgICAgICAgICB9KSwKICAgICAgICAgKT87CmRpZmYgLS1naXQgYS9ydXN0L2tlcm5l bC9pby9tZW0ucnMgYi9ydXN0L2tlcm5lbC9pby9tZW0ucnMKaW5kZXggNTFiYTM0NzIyMGVlLi5m YzJhM2UyNGY4ZDUgMTAwNjQ0Ci0tLSBhL3J1c3Qva2VybmVsL2lvL21lbS5ycworKysgYi9ydXN0 L2tlcm5lbC9pby9tZW0ucnMKQEAgLTc0LDIyICs3NCwxOSBAQCBwdWIoY3JhdGUpIHVuc2FmZSBm biBuZXcoZGV2aWNlOiAmJ2EgRGV2aWNlPEJvdW5kPiwgcmVzb3VyY2U6ICYnYSBSZXNvdXJjZSkg LT4gUwogICAgIC8vLyAgICAgICAvLwogICAgIC8vLyAgICAgICAvLyBObyBydW50aW1lIGNoZWNr cyB3aWxsIGFwcGx5IHdoZW4gcmVhZGluZyBhbmQgd3JpdGluZy4KICAgICAvLy8gICAgICAgbGV0 IHJlcXVlc3QgPSBwZGV2LmlvX3JlcXVlc3RfYnlfaW5kZXgoMCkub2tfb3IoRU5PREVWKT87Ci0g ICAgLy8vICAgICAgIGxldCBpb21lbSA9IHJlcXVlc3QuaW9tYXBfc2l6ZWQ6Ojw0Mj4oKTsKLSAg ICAvLy8gICAgICAgbGV0IGlvbWVtID0gS0JveDo6cGluX2luaXQoaW9tZW0sIEdGUF9LRVJORUwp PzsKLSAgICAvLy8KLSAgICAvLy8gICAgICAgbGV0IGlvID0gaW9tZW0uYWNjZXNzKHBkZXYuYXNf cmVmKCkpPzsKKyAgICAvLy8gICAgICAgbGV0IGlvbWVtID0gcmVxdWVzdC5pb21hcF9zaXplZDo6 PDQyPigpPzsKICAgICAvLy8KICAgICAvLy8gICAgICAgLy8gUmVhZCBhbmQgd3JpdGUgYSAzMi1i aXQgdmFsdWUgYXQgYG9mZnNldGAuCi0gICAgLy8vICAgICAgIGxldCBkYXRhID0gaW8ucmVhZDMy KG9mZnNldCk7CisgICAgLy8vICAgICAgIGxldCBkYXRhID0gaW9tZW0ucmVhZDMyKG9mZnNldCk7 CiAgICAgLy8vCi0gICAgLy8vICAgICAgIGlvLndyaXRlMzIoZGF0YSwgb2Zmc2V0KTsKKyAgICAv Ly8gICAgICAgaW9tZW0ud3JpdGUzMihkYXRhLCBvZmZzZXQpOwogICAgIC8vLwogICAgIC8vLyAg ICAgICAjIE9rKFNhbXBsZURyaXZlcikKICAgICAvLy8gICAgIH0KICAgICAvLy8gfQogICAgIC8v LyBgYGAKLSAgICBwdWIgZm4gaW9tYXBfc2l6ZWQ8Y29uc3QgU0laRTogdXNpemU+KHNlbGYpIC0+ IGltcGwgUGluSW5pdDxEZXZyZXM8SW9NZW08U0laRT4+LCBFcnJvcj4gKyAnYSB7Ci0gICAgICAg IElvTWVtOjpuZXcoc2VsZikKKyAgICBwdWIgZm4gaW9tYXBfc2l6ZWQ8Y29uc3QgU0laRTogdXNp emU+KHNlbGYpIC0+IFJlc3VsdDxJb01lbTwnYSwgU0laRT4+IHsKKyAgICAgICAgSW9NZW06Omlv cmVtYXAoc2VsZi5kZXZpY2UsIHNlbGYucmVzb3VyY2UpCiAgICAgfQogCiAgICAgLy8vIFNhbWUg YXMgW2BTZWxmOjppb21hcF9zaXplZGBdIGJ1dCB3aXRoIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhl CkBAIC05OCwxMCArOTUsOCBAQCBwdWIgZm4gaW9tYXBfc2l6ZWQ8Y29uc3QgU0laRTogdXNpemU+ KHNlbGYpIC0+IGltcGwgUGluSW5pdDxEZXZyZXM8SW9NZW08U0laRT4+LAogICAgIC8vLyBUaGlz IHVzZXMgdGhlIFtgaW9yZW1hcCgpYF0gQyBBUEkuCiAgICAgLy8vCiAgICAgLy8vIFtgaW9yZW1h cCgpYF06IGh0dHBzOi8vZG9jcy5rZXJuZWwub3JnL2RyaXZlci1hcGkvZGV2aWNlLWlvLmh0bWwj Z2V0dGluZy1hY2Nlc3MtdG8tdGhlLWRldmljZQotICAgIHB1YiBmbiBpb21hcF9leGNsdXNpdmVf c2l6ZWQ8Y29uc3QgU0laRTogdXNpemU+KAotICAgICAgICBzZWxmLAotICAgICkgLT4gaW1wbCBQ aW5Jbml0PERldnJlczxFeGNsdXNpdmVJb01lbTxTSVpFPj4sIEVycm9yPiArICdhIHsKLSAgICAg ICAgRXhjbHVzaXZlSW9NZW06Om5ldyhzZWxmKQorICAgIHB1YiBmbiBpb21hcF9leGNsdXNpdmVf c2l6ZWQ8Y29uc3QgU0laRTogdXNpemU+KHNlbGYpIC0+IFJlc3VsdDxFeGNsdXNpdmVJb01lbTwn YSwgU0laRT4+IHsKKyAgICAgICAgRXhjbHVzaXZlSW9NZW06OmlvcmVtYXAoc2VsZi5kZXZpY2Us IHNlbGYucmVzb3VyY2UpCiAgICAgfQogCiAgICAgLy8vIE1hcHMgYW4gW2BJb1JlcXVlc3RgXSB3 aGVyZSB0aGUgc2l6ZSBpcyBub3Qga25vd24gYXQgY29tcGlsZSB0aW1lLApAQCAtMTQwLDI3ICsx MzUsMjQgQEAgcHViIGZuIGlvbWFwX2V4Y2x1c2l2ZV9zaXplZDxjb25zdCBTSVpFOiB1c2l6ZT4o CiAgICAgLy8vICAgICAgIC8vIGZhbWlseSBvZiBmdW5jdGlvbnMgc2hvdWxkIGJlIHVzZWQsIGxl YWRpbmcgdG8gcnVudGltZSBjaGVja3Mgb24gZXZlcnkKICAgICAvLy8gICAgICAgLy8gYWNjZXNz LgogICAgIC8vLyAgICAgICBsZXQgcmVxdWVzdCA9IHBkZXYuaW9fcmVxdWVzdF9ieV9pbmRleCgw KS5va19vcihFTk9ERVYpPzsKLSAgICAvLy8gICAgICAgbGV0IGlvbWVtID0gcmVxdWVzdC5pb21h cCgpOwotICAgIC8vLyAgICAgICBsZXQgaW9tZW0gPSBLQm94OjpwaW5faW5pdChpb21lbSwgR0ZQ X0tFUk5FTCk/OwotICAgIC8vLwotICAgIC8vLyAgICAgICBsZXQgaW8gPSBpb21lbS5hY2Nlc3Mo cGRldi5hc19yZWYoKSk/OworICAgIC8vLyAgICAgICBsZXQgaW9tZW0gPSByZXF1ZXN0LmlvbWFw KCk/OwogICAgIC8vLwotICAgIC8vLyAgICAgICBsZXQgZGF0YSA9IGlvLnRyeV9yZWFkMzIob2Zm c2V0KT87CisgICAgLy8vICAgICAgIGxldCBkYXRhID0gaW9tZW0udHJ5X3JlYWQzMihvZmZzZXQp PzsKICAgICAvLy8KLSAgICAvLy8gICAgICAgaW8udHJ5X3dyaXRlMzIoZGF0YSwgb2Zmc2V0KT87 CisgICAgLy8vICAgICAgIGlvbWVtLnRyeV93cml0ZTMyKGRhdGEsIG9mZnNldCk/OwogICAgIC8v LwogICAgIC8vLyAgICAgICAjIE9rKFNhbXBsZURyaXZlcikKICAgICAvLy8gICAgIH0KICAgICAv Ly8gfQogICAgIC8vLyBgYGAKLSAgICBwdWIgZm4gaW9tYXAoc2VsZikgLT4gaW1wbCBQaW5Jbml0 PERldnJlczxJb01lbTwwPj4sIEVycm9yPiArICdhIHsKLSAgICAgICAgU2VsZjo6aW9tYXBfc2l6 ZWQ6OjwwPihzZWxmKQorICAgIHB1YiBmbiBpb21hcChzZWxmKSAtPiBSZXN1bHQ8SW9NZW08J2E+ PiB7CisgICAgICAgIHNlbGYuaW9tYXBfc2l6ZWQ6OjwwPigpCiAgICAgfQogCiAgICAgLy8vIFNh bWUgYXMgW2BTZWxmOjppb21hcGBdIGJ1dCB3aXRoIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHVu ZGVybHlpbmcKICAgICAvLy8gcmVnaW9uLgotICAgIHB1YiBmbiBpb21hcF9leGNsdXNpdmUoc2Vs ZikgLT4gaW1wbCBQaW5Jbml0PERldnJlczxFeGNsdXNpdmVJb01lbTwwPj4sIEVycm9yPiArICdh IHsKLSAgICAgICAgU2VsZjo6aW9tYXBfZXhjbHVzaXZlX3NpemVkOjo8MD4oc2VsZikKKyAgICBw dWIgZm4gaW9tYXBfZXhjbHVzaXZlKHNlbGYpIC0+IFJlc3VsdDxFeGNsdXNpdmVJb01lbTwnYSwg MD4+IHsKKyAgICAgICAgc2VsZi5pb21hcF9leGNsdXNpdmVfc2l6ZWQ6OjwwPigpCiAgICAgfQog fQogCkBAIC0xNjksOSArMTYxLDkgQEAgcHViIGZuIGlvbWFwX2V4Y2x1c2l2ZShzZWxmKSAtPiBp bXBsIFBpbkluaXQ8RGV2cmVzPEV4Y2x1c2l2ZUlvTWVtPDA+PiwgRXJyb3I+ICsKIC8vLyAjIElu dmFyaWFudHMKIC8vLwogLy8vIC0gW2BFeGNsdXNpdmVJb01lbWBdIGhhcyBleGNsdXNpdmUgYWNj ZXNzIHRvIHRoZSB1bmRlcmx5aW5nIFtgSW9NZW1gXS4KLXB1YiBzdHJ1Y3QgRXhjbHVzaXZlSW9N ZW08Y29uc3QgU0laRTogdXNpemU+IHsKK3B1YiBzdHJ1Y3QgRXhjbHVzaXZlSW9NZW08J2EsIGNv bnN0IFNJWkU6IHVzaXplPiB7CiAgICAgLy8vIFRoZSB1bmRlcmx5aW5nIGBJb01lbWAgaW5zdGFu Y2UuCi0gICAgaW9tZW06IElvTWVtPFNJWkU+LAorICAgIGlvbWVtOiBJb01lbTwnYSwgU0laRT4s CiAKICAgICAvLy8gVGhlIHJlZ2lvbiBhYnN0cmFjdGlvbi4gVGhpcyByZXByZXNlbnRzIGV4Y2x1 c2l2ZSBhY2Nlc3MgdG8gdGhlCiAgICAgLy8vIHJhbmdlIHJlcHJlc2VudGVkIGJ5IHRoZSB1bmRl cmx5aW5nIGBpb21lbWAuCkBAIC0xODAsOSArMTcyLDkgQEAgcHViIHN0cnVjdCBFeGNsdXNpdmVJ b01lbTxjb25zdCBTSVpFOiB1c2l6ZT4gewogICAgIF9yZWdpb246IFJlZ2lvbiwKIH0KIAotaW1w bDxjb25zdCBTSVpFOiB1c2l6ZT4gRXhjbHVzaXZlSW9NZW08U0laRT4geworaW1wbDwnYSwgY29u c3QgU0laRTogdXNpemU+IEV4Y2x1c2l2ZUlvTWVtPCdhLCBTSVpFPiB7CiAgICAgLy8vIENyZWF0 ZXMgYSBuZXcgYEV4Y2x1c2l2ZUlvTWVtYCBpbnN0YW5jZS4KLSAgICBmbiBpb3JlbWFwKHJlc291 cmNlOiAmUmVzb3VyY2UpIC0+IFJlc3VsdDxTZWxmPiB7CisgICAgZm4gaW9yZW1hcChkZXY6ICYn YSBEZXZpY2U8Qm91bmQ+LCByZXNvdXJjZTogJlJlc291cmNlKSAtPiBSZXN1bHQ8U2VsZj4gewog ICAgICAgICBsZXQgc3RhcnQgPSByZXNvdXJjZS5zdGFydCgpOwogICAgICAgICBsZXQgc2l6ZSA9 IHJlc291cmNlLnNpemUoKTsKICAgICAgICAgbGV0IG5hbWUgPSByZXNvdXJjZS5uYW1lKCkudW53 cmFwX29yX2RlZmF1bHQoKTsKQEAgLTE5NiwyNiArMTg4LDI5IEBAIGZuIGlvcmVtYXAocmVzb3Vy Y2U6ICZSZXNvdXJjZSkgLT4gUmVzdWx0PFNlbGY+IHsKICAgICAgICAgICAgICkKICAgICAgICAg ICAgIC5va19vcihFQlVTWSk/OwogCi0gICAgICAgIGxldCBpb21lbSA9IElvTWVtOjppb3JlbWFw KHJlc291cmNlKT87CisgICAgICAgIGxldCBpb21lbSA9IElvTWVtOjppb3JlbWFwKGRldiwgcmVz b3VyY2UpPzsKIAotICAgICAgICBsZXQgaW9tZW0gPSBFeGNsdXNpdmVJb01lbSB7CisgICAgICAg IE9rKEV4Y2x1c2l2ZUlvTWVtIHsKICAgICAgICAgICAgIGlvbWVtLAogICAgICAgICAgICAgX3Jl Z2lvbjogcmVnaW9uLAotICAgICAgICB9OwotCi0gICAgICAgIE9rKGlvbWVtKQorICAgICAgICB9 KQogICAgIH0KIAotICAgIC8vLyBDcmVhdGVzIGEgbmV3IGBFeGNsdXNpdmVJb01lbWAgaW5zdGFu Y2UgZnJvbSBhIHByZXZpb3VzbHkgYWNxdWlyZWQgW2BJb1JlcXVlc3RgXS4KLSAgICBwdWIgZm4g bmV3PCdhPihpb19yZXF1ZXN0OiBJb1JlcXVlc3Q8J2E+KSAtPiBpbXBsIFBpbkluaXQ8RGV2cmVz PFNlbGY+LCBFcnJvcj4gKyAnYSB7Ci0gICAgICAgIGxldCBkZXYgPSBpb19yZXF1ZXN0LmRldmlj ZTsKLSAgICAgICAgbGV0IHJlcyA9IGlvX3JlcXVlc3QucmVzb3VyY2U7Ci0KLSAgICAgICAgRGV2 cmVzOjpuZXcoZGV2LCBTZWxmOjppb3JlbWFwKHJlcykpCisgICAgLy8vIENvbnN1bWUgdGhlIGBF eGNsdXNpdmVJb01lbWAgYW5kIHJlZ2lzdGVyIGl0IGFzIGEgZGV2aWNlLW1hbmFnZWQgcmVzb3Vy Y2UuCisgICAgLy8vCisgICAgLy8vIFRoZSByZXR1cm5lZCBgRGV2cmVzPEV4Y2x1c2l2ZUlvTWVt PCdzdGF0aWMsIFNJWkU+PmAgY2FuIG91dGxpdmUgdGhlIG9yaWdpbmFsIGxpZmV0aW1lCisgICAg Ly8vIGAnYWAuIEFjY2VzcyB0byB0aGUgSS9PIG1lbW9yeSBpcyByZXZva2VkIHdoZW4gdGhlIGRl dmljZSBpcyB1bmJvdW5kLgorICAgIHB1YiBmbiBpbnRvX2RldnJlcyhzZWxmKSAtPiBSZXN1bHQ8 RGV2cmVzPEV4Y2x1c2l2ZUlvTWVtPCdzdGF0aWMsIFNJWkU+Pj4geworICAgICAgICAvLyBTQUZF VFk6IENhc3RpbmcgdG8gYCdzdGF0aWNgIGlzIHNvdW5kIGJlY2F1c2UgYERldnJlc2AgZ3VhcmFu dGVlcyB0aGUKKyAgICAgICAgLy8gYEV4Y2x1c2l2ZUlvTWVtYCBkb2VzIG5vdCBhY3R1YWxseSBv dXRsaXZlIHRoZSBkZXZpY2UgLS0gYWNjZXNzIGlzIHJldm9rZWQgYW5kIHRoZQorICAgICAgICAv LyByZXNvdXJjZSBpcyByZWxlYXNlZCB3aGVuIHRoZSBkZXZpY2UgaXMgdW5ib3VuZC4KKyAgICAg ICAgbGV0IGlvbWVtOiBFeGNsdXNpdmVJb01lbTwnc3RhdGljLCBTSVpFPiA9IHVuc2FmZSB7IGNv cmU6Om1lbTo6dHJhbnNtdXRlKHNlbGYpIH07CisgICAgICAgIGxldCBkZXYgPSBpb21lbS5pb21l bS5kZXY7CisgICAgICAgIERldnJlczo6bmV3KGRldiwgaW9tZW0pCiAgICAgfQogfQogCi1pbXBs PGNvbnN0IFNJWkU6IHVzaXplPiBEZXJlZiBmb3IgRXhjbHVzaXZlSW9NZW08U0laRT4geworaW1w bDxjb25zdCBTSVpFOiB1c2l6ZT4gRGVyZWYgZm9yIEV4Y2x1c2l2ZUlvTWVtPCdfLCBTSVpFPiB7 CiAgICAgdHlwZSBUYXJnZXQgPSBNbWlvPFNJWkU+OwogCiAgICAgZm4gZGVyZWYoJnNlbGYpIC0+ ICZTZWxmOjpUYXJnZXQgewpAQCAtMjMyLDEyICsyMjcsMTMgQEAgZm4gZGVyZWYoJnNlbGYpIC0+ ICZTZWxmOjpUYXJnZXQgewogLy8vCiAvLy8gW2BJb01lbWBdIGFsd2F5cyBob2xkcyBhbiBbYE1t aW9SYXdgXSBpbnN0YW5jZSB0aGF0IGhvbGRzIGEgdmFsaWQgcG9pbnRlciB0byB0aGUKIC8vLyBz dGFydCBvZiB0aGUgSS9PIG1lbW9yeSBtYXBwZWQgcmVnaW9uLgotcHViIHN0cnVjdCBJb01lbTxj b25zdCBTSVpFOiB1c2l6ZSA9IDA+IHsKK3B1YiBzdHJ1Y3QgSW9NZW08J2EsIGNvbnN0IFNJWkU6 IHVzaXplID0gMD4geworICAgIGRldjogJidhIERldmljZTxCb3VuZD4sCiAgICAgaW86IE1taW9S YXc8U0laRT4sCiB9CiAKLWltcGw8Y29uc3QgU0laRTogdXNpemU+IElvTWVtPFNJWkU+IHsKLSAg ICBmbiBpb3JlbWFwKHJlc291cmNlOiAmUmVzb3VyY2UpIC0+IFJlc3VsdDxTZWxmPiB7CitpbXBs PCdhLCBjb25zdCBTSVpFOiB1c2l6ZT4gSW9NZW08J2EsIFNJWkU+IHsKKyAgICBmbiBpb3JlbWFw KGRldjogJidhIERldmljZTxCb3VuZD4sIHJlc291cmNlOiAmUmVzb3VyY2UpIC0+IFJlc3VsdDxT ZWxmPiB7CiAgICAgICAgIC8vIE5vdGU6IFNvbWUgaW9yZW1hcCgpIGltcGxlbWVudGF0aW9ucyB1 c2UgdHlwZXMgdGhhdCBkZXBlbmQgb24gdGhlIENQVQogICAgICAgICAvLyB3b3JkIHdpZHRoIHJh dGhlciB0aGFuIHRoZSBidXMgYWRkcmVzcyB3aWR0aC4KICAgICAgICAgLy8KQEAgLTI2OSwyOCAr MjY1LDMzIEBAIGZuIGlvcmVtYXAocmVzb3VyY2U6ICZSZXNvdXJjZSkgLT4gUmVzdWx0PFNlbGY+ IHsKICAgICAgICAgfQogCiAgICAgICAgIGxldCBpbyA9IE1taW9SYXc6Om5ldyhhZGRyIGFzIHVz aXplLCBzaXplKT87Ci0gICAgICAgIGxldCBpbyA9IElvTWVtIHsgaW8gfTsKIAotICAgICAgICBP ayhpbykKKyAgICAgICAgT2soSW9NZW0geyBkZXYsIGlvIH0pCiAgICAgfQogCi0gICAgLy8vIENy ZWF0ZXMgYSBuZXcgYElvTWVtYCBpbnN0YW5jZSBmcm9tIGEgcHJldmlvdXNseSBhY3F1aXJlZCBb YElvUmVxdWVzdGBdLgotICAgIHB1YiBmbiBuZXc8J2E+KGlvX3JlcXVlc3Q6IElvUmVxdWVzdDwn YT4pIC0+IGltcGwgUGluSW5pdDxEZXZyZXM8U2VsZj4sIEVycm9yPiArICdhIHsKLSAgICAgICAg bGV0IGRldiA9IGlvX3JlcXVlc3QuZGV2aWNlOwotICAgICAgICBsZXQgcmVzID0gaW9fcmVxdWVz dC5yZXNvdXJjZTsKLQotICAgICAgICBEZXZyZXM6Om5ldyhkZXYsIFNlbGY6OmlvcmVtYXAocmVz KSkKKyAgICAvLy8gQ29uc3VtZSB0aGUgYElvTWVtYCBhbmQgcmVnaXN0ZXIgaXQgYXMgYSBkZXZp Y2UtbWFuYWdlZCByZXNvdXJjZS4KKyAgICAvLy8KKyAgICAvLy8gVGhlIHJldHVybmVkIGBEZXZy ZXM8SW9NZW08J3N0YXRpYywgU0laRT4+YCBjYW4gb3V0bGl2ZSB0aGUgb3JpZ2luYWwKKyAgICAv Ly8gbGlmZXRpbWUgYCdhYC4gQWNjZXNzIHRvIHRoZSBJL08gbWVtb3J5IGlzIHJldm9rZWQgd2hl biB0aGUgZGV2aWNlCisgICAgLy8vIGlzIHVuYm91bmQuCisgICAgcHViIGZuIGludG9fZGV2cmVz KHNlbGYpIC0+IFJlc3VsdDxEZXZyZXM8SW9NZW08J3N0YXRpYywgU0laRT4+PiB7CisgICAgICAg IC8vIFNBRkVUWTogQ2FzdGluZyB0byBgJ3N0YXRpY2AgaXMgc291bmQgYmVjYXVzZSBgRGV2cmVz YCBndWFyYW50ZWVzIHRoZSBgSW9NZW1gIGRvZXMgbm90CisgICAgICAgIC8vIGFjdHVhbGx5IG91 dGxpdmUgdGhlIGRldmljZSAtLSBhY2Nlc3MgaXMgcmV2b2tlZCBhbmQgdGhlIHJlc291cmNlIGlz IHJlbGVhc2VkIHdoZW4gdGhlCisgICAgICAgIC8vIGRldmljZSBpcyB1bmJvdW5kLgorICAgICAg ICBsZXQgaW9tZW06IElvTWVtPCdzdGF0aWMsIFNJWkU+ID0gdW5zYWZlIHsgY29yZTo6bWVtOjp0 cmFuc211dGUoc2VsZikgfTsKKyAgICAgICAgbGV0IGRldiA9IGlvbWVtLmRldjsKKyAgICAgICAg RGV2cmVzOjpuZXcoZGV2LCBpb21lbSkKICAgICB9CiB9CiAKLWltcGw8Y29uc3QgU0laRTogdXNp emU+IERyb3AgZm9yIElvTWVtPFNJWkU+IHsKK2ltcGw8Y29uc3QgU0laRTogdXNpemU+IERyb3Ag Zm9yIElvTWVtPCdfLCBTSVpFPiB7CiAgICAgZm4gZHJvcCgmbXV0IHNlbGYpIHsKICAgICAgICAg Ly8gU0FGRVRZOiBTYWZlIGFzIGJ5IHRoZSBpbnZhcmlhbnQgb2YgYElvYC4KICAgICAgICAgdW5z YWZlIHsgYmluZGluZ3M6OmlvdW5tYXAoc2VsZi5pby5hZGRyKCkgYXMgKm11dCBjX3ZvaWQpIH0K ICAgICB9CiB9CiAKLWltcGw8Y29uc3QgU0laRTogdXNpemU+IERlcmVmIGZvciBJb01lbTxTSVpF PiB7CitpbXBsPGNvbnN0IFNJWkU6IHVzaXplPiBEZXJlZiBmb3IgSW9NZW08J18sIFNJWkU+IHsK ICAgICB0eXBlIFRhcmdldCA9IE1taW88U0laRT47CiAKICAgICBmbiBkZXJlZigmc2VsZikgLT4g JlNlbGY6OlRhcmdldCB7Ci0tIAoyLjU0LjAKCg==