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 73ED0F364D1 for ; Thu, 9 Apr 2026 22:57:11 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id C8BBD10E893; Thu, 9 Apr 2026 22:57:10 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (1024-bit key; unprotected) header.d=collabora.com header.i=deborah.brouwer@collabora.com header.b="IiBOlxF7"; dkim-atps=neutral Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) by gabe.freedesktop.org (Postfix) with ESMTPS id BFE3610E89E; Thu, 9 Apr 2026 22:57:09 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; t=1775775427; cv=none; d=zohomail.com; s=zohoarc; b=m4HMpydMUiKIypEQgW6lE0uc9Durc0jVzFb/kzdmqnnznlX2Ixpm+FkCIVVQ98qrsFEqrnvkrvimFZmpCLYmLlGGLIzDCJfnnjCRF2Mw1ysWFCKsKwwRfmBpdz84Jh7eP2STnJiR3tmF3SESeqgJzhEdNCUrYr0TrSwWiF/gpHs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1775775427; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=mglfHDbQCdy4UxiAawklgqLRry8FY4Gua9B8jPjXuow=; b=C9DX0pvd94VEeXNdz66O5D5Z3yzcRGfY/HtGsXcMYcScTMZ16Jx+f3QFbcDOTT4pGhzAjVwSuJN4yyvGcfWE5K9FrMEXBncN1mjWdcNmrrEFIZ39Pya99XFAsoyEIWQqDhzJeYa1oyK/xzfXWVuhS/ldnLmxEOv/n4pf7DXlfnQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=deborah.brouwer@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1775775426; s=zohomail; d=collabora.com; i=deborah.brouwer@collabora.com; h=Date:Date:From:From:To:To:Cc:Cc:Subject:Subject:Message-ID:References:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To:Message-Id:Reply-To; bh=mglfHDbQCdy4UxiAawklgqLRry8FY4Gua9B8jPjXuow=; b=IiBOlxF7Bp5ihDohymYF03yGGNlWo9IPoN7KuA8VYBzOm5Et+C8w68RGS/gK4wDD xj5PR7Ru35KRCmAaA9nz4A+s+2sDB0RoznCzRciIpC7M1JAfG4pVVox/pzYjTgcdvVe pCJXqHX2ljR5wqUAWJ03nAyAWTkQ2XfJvGUE3HpI= Received: by mx.zohomail.com with SMTPS id 1775775425845803.217885107667; Thu, 9 Apr 2026 15:57:05 -0700 (PDT) Date: Thu, 9 Apr 2026 15:57:04 -0700 From: Deborah Brouwer To: Lyude Paul Cc: nouveau@lists.freedesktop.org, Gary Guo , Daniel Almeida , rust-for-linux@vger.kernel.org, Danilo Krummrich , dri-devel@lists.freedesktop.org, Matthew Maurer , FUJITA Tomonori , Lorenzo Stoakes , christian.koenig@amd.com, Asahi Lina , Miguel Ojeda , Andreas Hindborg , Simona Vetter , Alice Ryhl , Boqun Feng , Sumit Semwal , Krishna Ketan Rai , linux-media@vger.kernel.org, Shankari Anand , David Airlie , Benno Lossin , Viresh Kumar , linaro-mm-sig@lists.linaro.org, Asahi Lina , Greg Kroah-Hartman , kernel@vger.kernel.org Subject: Re: [PATCH v10 4/5] rust: drm: gem: Introduce shmem::SGTable Message-ID: References: <20260409001559.622026-1-lyude@redhat.com> <20260409001559.622026-5-lyude@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <20260409001559.622026-5-lyude@redhat.com> 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" T24gV2VkLCBBcHIgMDgsIDIwMjYgYXQgMDg6MTI6NTBQTSAtMDQwMCwgTHl1ZGUgUGF1bCB3cm90 ZToKPiBJbiBvcmRlciB0byBkbyB0aGlzLCB3ZSBuZWVkIHRvIGJlIGNhcmVmdWwgdG8gZW5zdXJl IHRoYXQgYW55IGludGVyZmFjZSB3ZQo+IGV4cG9zZSBmb3Igc2NhdHRlcmxpc3RzIGVuc3VyZXMg dGhhdCBhbnkgbWFwcGluZ3MgY3JlYXRlZCBmcm9tIG9uZSBhcmUKPiBkZXN0cm95ZWQgb24gZHJp dmVyLXVuYmluZC4gVG8gZG8gdGhpcywgd2UgaW50cm9kdWNlIGEgRGV2cmVzIHJlc291cmNlIGlu dG8KPiBzaG1lbTo6T2JqZWN0IHRoYXQgd2UgdXNlIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHdl IHJlbGVhc2UgYW55IFNHVGFibGUKPiBtYXBwaW5ncyBvbiBkcml2ZXItdW5iaW5kLiBXZSBzdG9y ZSB0aGlzIGluIGFuIFVuc2FmZUNlbGwgYW5kIHByb3RlY3QKPiBhY2Nlc3MgdG8gaXQgdXNpbmcg dGhlIGRtYV9yZXN2IGxvY2sgdGhhdCB3ZSBhbHJlYWR5IGhhdmUgZnJvbSB0aGUgc2htZW0KPiBn ZW0gb2JqZWN0LCB3aGljaCBpcyB0aGUgc2FtZSBsb2NrIHRoYXQgY3VycmVudGx5IHByb3RlY3Rz Cj4gZHJtX2dlbV9vYmplY3Rfc2htZW0tPnNndC4KPiAKPiBXZSBhbHNvIHByb3ZpZGUgdHdvIGRp ZmZlcmVudCBtZXRob2RzIGZvciBhY3F1aXJpbmcgYW4gc2cgdGFibGU6Cj4gc2VsZi5zZ190YWJs ZSgpLCBhbmQgc2VsZi5vd25lZF9zZ190YWJsZSgpLiBUaGUgZmlyc3QgZnVuY3Rpb24gaXMgZm9y Cj4gc2hvcnQtdGVybSB1c2VzIG9mIG1hcHBlZCBTR1RhYmxlcywgdGhlIHNlY29uZCBpcyBmb3Ig Y2FsbGVycyB0aGF0IG5lZWQgdG8KPiBob2xkIG9udG8gdGhlIG1hcHBlZCBTR1RhYmxlIGZvciBh biBleHRlbmRlZCBwZXJpb2Qgb2YgdGltZS4gVGhlIHNlY29uZAo+IHZhcmlhbnQgdXNlcyBEZXZy ZXMgb2YgY291cnNlLCB3aGVyZWFzIHRoZSBmaXJzdCBzaW1wbHkgcmVsaWVzIG9uIHJ1c3Qncwo+ IGJvcnJvdyBjaGVja2VyIHRvIHByZXZlbnQgZHJpdmVyLXVuYmluZCB3aGVuIHVzaW5nIHRoZSBt YXBwZWQgU0dUYWJsZS4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBMeXVkZSBQYXVsIDxseXVkZUByZWRo YXQuY29tPgo+IAo+IC0tLQo+IFYzOgo+ICogUmVuYW1lIE93bmVkU0dUYWJsZSB0byBzaG1lbTo6 U0dUYWJsZS4gU2luY2UgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUKPiAgIFNHVGFibGUgYWJz dHJhY3Rpb25zIG5vdyBoYXMgYSBgT3duZWRgIGFuZCBgQm9ycm93ZWRgIHZhcmlhbnQsIEkgdGhp bmsKPiAgIHJlbmFtaW5nIHRoaXMgdG8gc2htZW06OlNHVGFibGUgbWFrZXMgdGhpbmdzIGxlc3Mg Y29uZnVzaW5nLgo+ICAgV2UgZG8gaG93ZXZlciwga2VlcCB0aGUgbmFtZSBvZiBvd25lZF9zZ190 YWJsZSgpIGFzLWlzLgo+IFY0Ogo+ICogQ2xhcmlmeSBzYWZldHkgY29tbWVudHMgZm9yIFNHVGFi bGUgdG8gZXhwbGFpbiB3aHkgdGhlIG9iamVjdCBpcwo+ICAgdGhyZWFkLXNhZmUuCj4gKiBSZW5h bWUgZnJvbSBTR1RhYmxlUmVmIHRvIFNHVGFibGUKPiBWMTA6Cj4gKiBVc2UgRGV2cmVzIGluIG9y ZGVyIHRvIGVuc3VyZSB0aGF0IFNHVGFibGVzIGFyZSByZXZvY2FibGUsIGFuZCBhcmUKPiAgIHVu bWFwcGVkIG9uIGRyaXZlci11bmJpbmQuCj4gCj4gIHJ1c3Qva2VybmVsL2RybS9nZW0vc2htZW0u cnMgfCAxOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgMSBmaWxlIGNo YW5nZWQsIDE4OSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQg YS9ydXN0L2tlcm5lbC9kcm0vZ2VtL3NobWVtLnJzIGIvcnVzdC9rZXJuZWwvZHJtL2dlbS9zaG1l bS5ycwo+IGluZGV4IGM2NDNmMThiMjA4MzguLjExMWJlNDQ2MjEzZGYgMTAwNjQ0Cj4gLS0tIGEv cnVzdC9rZXJuZWwvZHJtL2dlbS9zaG1lbS5ycwo+ICsrKyBiL3J1c3Qva2VybmVsL2RybS9nZW0v c2htZW0ucnMKPiBAQCAtMTEsMjUgKzExLDM4IEBACj4gIAo+ICB1c2UgY3JhdGU6OnsKPiAgICAg IGNvbnRhaW5lcl9vZiwKPiArICAgIGRldmljZTo6ewo+ICsgICAgICAgIHNlbGYsCj4gKyAgICAg ICAgQm91bmQsIC8vCj4gKyAgICB9LAo+ICsgICAgZGV2cmVzOjoqLAo+ICAgICAgZHJtOjp7Cj4g ICAgICAgICAgZHJpdmVyLAo+ICAgICAgICAgIGdlbSwKPiAgICAgICAgICBwcml2YXRlOjpTZWFs ZWQsIC8vCj4gICAgICAgICAgRGV2aWNlLAo+ICAgICAgfSwKPiAtICAgIGVycm9yOjp0b19yZXN1 bHQsCj4gKyAgICBlcnJvcjo6ewo+ICsgICAgICAgIGZyb21fZXJyX3B0ciwgLy8KPiArICAgICAg ICB0b19yZXN1bHQsCj4gKyAgICB9LAo+ICAgICAgcHJlbHVkZTo6KiwKPiArICAgIHNjYXR0ZXJs aXN0LAo+ICAgICAgdHlwZXM6OnsKPiAgICAgICAgICBBUmVmLAo+ICAgICAgICAgIE9wYXF1ZSwg Ly8KPiAgICAgIH0sIC8vCj4gIH07Cj4gIHVzZSBjb3JlOjp7Cj4gKyAgICBjZWxsOjpVbnNhZmVD ZWxsLAo+ICAgICAgb3BzOjp7Cj4gICAgICAgICAgRGVyZWYsCj4gICAgICAgICAgRGVyZWZNdXQs IC8vCj4gICAgICB9LAo+IC0gICAgcHRyOjpOb25OdWxsLAo+ICsgICAgcHRyOjp7Cj4gKyAgICAg ICAgc2VsZiwKPiArICAgICAgICBOb25OdWxsLCAvLwo+ICsgICAgfSwKPiAgfTsKPiAgdXNlIGdl bTo6ewo+ICAgICAgQmFzZU9iamVjdFByaXZhdGUsCj4gQEAgLTY1LDYgKzc4LDEwIEBAIHB1YiBz dHJ1Y3QgT2JqZWN0PFQ6IERyaXZlck9iamVjdD4gewo+ICAgICAgb2JqOiBPcGFxdWU8YmluZGlu Z3M6OmRybV9nZW1fc2htZW1fb2JqZWN0PiwKPiAgICAgIC8vLyBQYXJlbnQgb2JqZWN0IHRoYXQg b3ducyB0aGlzIG9iamVjdCdzIERNQSByZXNlcnZhdGlvbiBvYmplY3QuCj4gICAgICBwYXJlbnRf cmVzdl9vYmo6IE9wdGlvbjxBUmVmPE9iamVjdDxUPj4+LAo+ICsgICAgLy8vIERldnJlcyBvYmpl Y3QgZm9yIHVubWFwcGluZyBhbnkgU0dUYWJsZSBvbiBkcml2ZXItdW5iaW5kLgo+ICsgICAgLy8v Cj4gKyAgICAvLy8gVGhpcyBpcyBwcm90ZWN0ZWQgYnkgdGhlIG9iamVjdCdzIGRtYV9yZXN2IGxv Y2suCj4gKyAgICBzZ3RfcmVzOiBVbnNhZmVDZWxsPE9wdGlvbjxEZXZyZXM8U0dUYWJsZU1hcDxU Pj4+PiwKPiAgICAgICNbcGluXQo+ICAgICAgaW5uZXI6IFQsCj4gIH0KPiBAQCAtMTE3LDYgKzEz NCw3IEBAIHB1YiBmbiBuZXcoCj4gICAgICAgICAgICAgIHRyeV9waW5faW5pdCEoU2VsZiB7Cj4g ICAgICAgICAgICAgICAgICBvYmogPC0gT3BhcXVlOjppbml0X3plcm9lZCgpLAo+ICAgICAgICAg ICAgICAgICAgcGFyZW50X3Jlc3Zfb2JqOiBjb25maWcucGFyZW50X3Jlc3Zfb2JqLm1hcCh8cHwg cC5pbnRvKCkpLAo+ICsgICAgICAgICAgICAgICAgc2d0X3JlczogVW5zYWZlQ2VsbDo6bmV3KE5v bmUpLAo+ICAgICAgICAgICAgICAgICAgaW5uZXIgPC0gVDo6bmV3KGRldiwgc2l6ZSwgYXJncyks Cj4gICAgICAgICAgICAgIH0pLAo+ICAgICAgICAgICAgICBHRlBfS0VSTkVMLAo+IEBAIC0xNzYs NiArMTk0LDEwMCBAQCBleHRlcm4gIkMiIGZuIGZyZWVfY2FsbGJhY2sob2JqOiAqbXV0IGJpbmRp bmdzOjpkcm1fZ2VtX29iamVjdCkgewo+ICAgICAgICAgIC8vIFNBRkVUWTogV2UncmUgcmVjb3Zl cmluZyB0aGUgS2JveDw+IHdlIGNyZWF0ZWQgaW4gZ2VtX2NyZWF0ZV9vYmplY3QoKQo+ICAgICAg ICAgIGxldCBfID0gdW5zYWZlIHsgS0JveDo6ZnJvbV9yYXcodGhpcykgfTsKPiAgICAgIH0KPiAr Cj4gKyAgICAvLyBJZiBuZWNlc3NhcnksIGNyZWF0ZSBhbiBTR1RhYmxlIGZvciB0aGUgZ2VtIG9i amVjdCBhbmQgcmVnaXN0ZXIgYSBEZXZyZXMgZm9yIGl0IHRvIGVuc3VyZQo+ICsgICAgLy8gdGhh dCBpdCBpcyB1bm1hcHBlZCBvbiBkcml2ZXIgdW5iaW5kLgo+ICsgICAgZm4gY3JlYXRlX3NnX3Rh YmxlPCdhPigKPiArICAgICAgICAmJ2Egc2VsZiwKPiArICAgICAgICBkZXY6ICYnYSBkZXZpY2U6 OkRldmljZTxCb3VuZD4sCj4gKyAgICApIC0+IFJlc3VsdDwmJ2EgRGV2cmVzPFNHVGFibGVNYXA8 VD4+PiB7Cj4gKyAgICAgICAgbGV0IHJldDsKPiArICAgICAgICBsZXQgc2d0X3Jlc19wdHIgPSBz ZWxmLnNndF9yZXMuZ2V0KCk7Cj4gKwo+ICsgICAgICAgIC8vIFNBRkVUWTogVGhpcyBsb2NrIGlz IGluaXRpYWxpemVkIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIHRoZSBnZW0gb2JqZWN0Cj4g KyAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6OmRtYV9yZXN2X2xvY2soc2VsZi5yYXdfZG1hX3Jl c3YoKSwgcHRyOjpudWxsX211dCgpKSB9Owo+ICsKPiArICAgICAgICAvLyBTQUZFVFk6IFdlIGp1 c3QgZ3JhYmJlZCB0aGUgbG9jayByZXF1aXJlZCBmb3IgcmVhZGluZyB0aGlzIGRhdGEgYWJvdmUu Cj4gKyAgICAgICAgbGV0IHNndF9yZXMgPSB1bnNhZmUgeyAoKnNndF9yZXNfcHRyKS5hc19yZWYo KSB9Owo+ICsgICAgICAgIGlmIGxldCBTb21lKHNndF9yZXMpID0gc2d0X3JlcyB7Cj4gKyAgICAg ICAgICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhIERldnJlcyBvYmplY3QgZm9yIHRoaXMgc2cgdGFi bGUsIHJldHVybiBpdAo+ICsgICAgICAgICAgICByZXQgPSBPayhzZ3RfcmVzKTsKPiArICAgICAg ICB9IGVsc2Ugewo+ICsgICAgICAgICAgICAvLyBTQUZFVFk6IFdlIGdyYWJiZWQgdGhlIGxvY2sg cmVxdWlyZWQgZm9yIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhYm92ZSAqLwo+ICsgICAgICAgICAg ICBsZXQgc2d0ID0gZnJvbV9lcnJfcHRyKHVuc2FmZSB7Cj4gKyAgICAgICAgICAgICAgICBiaW5k aW5nczo6ZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfc2d0X2xvY2tlZChzZWxmLmFzX3Jhd19zaG1l bSgpKQo+ICsgICAgICAgICAgICB9KTsKPiArCj4gKyAgICAgICAgICAgIGlmIGxldCBFcnIoZSkg PSBzZ3Qgewo+ICsgICAgICAgICAgICAgICAgcmV0ID0gRXJyKGUpOwo+ICsgICAgICAgICAgICB9 IGVsc2Ugewo+ICsgICAgICAgICAgICAgICAgLy8gSU5WQVJJQU5UOgo+ICsgICAgICAgICAgICAg ICAgLy8gLSBXZSBjYWxsZWQgZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfc2d0X2xvY2tlZCBhYm92 ZSBhbmQgY2hlY2tlZCB0aGF0IGl0Cj4gKyAgICAgICAgICAgICAgICAvLyAgIHN1Y2NlZWRlZCwg ZnVsZmlsbGluZyB0aGUgaW52YXJpYW50IG9mIFNHVGFibGVSZWYgdGhhdCB0aGUgb2JqZWN0J3Mg YHNndGAgZmllbGQKPiArICAgICAgICAgICAgICAgIC8vICAgaXMgaW5pdGlhbGl6ZWQuCj4gKyAg ICAgICAgICAgICAgICAvLyAtIFdlIHN0b3JlIHRoaXMgRGV2cmVzIGluIHRoZSBvYmplY3QgaXRz ZWxmIGFuZCBkb24ndCBtb3ZlIGl0LCBlbnN1cmluZyB0aGF0IHRoZQo+ICsgICAgICAgICAgICAg ICAgLy8gICBvYmplY3QgaXQgcG9pbnRzIHRvIHJlbWFpbnMgdmFsaWQgZm9yIHRoZSBsaWZldGlt ZSBvZiB0aGUgU0dUYWJsZVJlZi4KPiArICAgICAgICAgICAgICAgIGxldCBkZXZyZXMgPSBEZXZy ZXM6Om5ldyhkZXYsIGluaXQhKFNHVGFibGVNYXAgeyBvYmo6IHNlbGYuaW50bygpIH0pKTsKPiAr ICAgICAgICAgICAgICAgIG1hdGNoIGRldnJlcyB7Cj4gKyAgICAgICAgICAgICAgICAgICAgT2so ZGV2cmVzKSA9PiB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNBRkVUWTogV2UgYWNx dWlyZWQgdGhlIGxvY2sgcHJvdGVjdGluZyB0aGlzIGRhdGEgYWJvdmUsIG1ha2luZyBpdCBzYWZl Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHdyaXRlIGludG8gaGVyZQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICB1bnNhZmUgeyAoKnNndF9yZXNfcHRyKSA9IFNvbWUoZGV2cmVz KSB9Owo+ICsKPiArICAgICAgICAgICAgICAgICAgICAgICAgLy8gU0FGRVRZOiBXZSBqdXN0IHdy aXRlIFNvbWUoKSBpbnRvICpzZ3RfcmVzX3B0ciBhYm92ZQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICByZXQgPSBPayh1bnNhZmUgeyAoJipzZ3RfcmVzX3B0cikuYXNfcmVmKCkudW53cmFwX3Vu Y2hlY2tlZCgpIH0pOwo+ICsgICAgICAgICAgICAgICAgICAgIH0KPiArICAgICAgICAgICAgICAg ICAgICBFcnIoZSkgPT4gewo+ICsgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBt YWtlIHN1cmUgdGhhdCB0aGUgcGFnZXMgZm9yIHRoaXMgb2JqZWN0IGFyZSB1bm1hcHBlZCBvbgo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcml2ZXItdW5iaW5kLCBzbyB3ZSBuZWVkIHRv IHJlbGVhc2UgdGhlIHNndAo+ICsgICAgICAgICAgICAgICAgICAgICAgICAvLyBTQUZFVFk6Cj4g KyAgICAgICAgICAgICAgICAgICAgICAgIC8vIC0gV2UgZ3JhYmJlZCB0aGUgbG9jayByZXF1aXJl ZCBmb3IgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFib3ZlCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgIC8vIC0gV2UgY2hlY2tlZCBhYm92ZSB0aGF0IGdldF9wYWdlc19zZ3RfbG9ja2VkKCkgd2Fz IHN1Y2Nlc3NmdWwKPiArICAgICAgICAgICAgICAgICAgICAgICAgdW5zYWZlIHsgYmluZGluZ3M6 Ol9fZHJtX2dlbV9zaG1lbV9mcmVlX3NndF9sb2NrZWQoc2VsZi5hc19yYXdfc2htZW0oKSkgfTsK PiArCj4gKyAgICAgICAgICAgICAgICAgICAgICAgIHJldCA9IEVycihlKTsKPiArICAgICAgICAg ICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgICAgICB9Cj4gKyAgICAgICAgICAgIH0KPiArICAg ICAgICB9Cj4gKwo+ICsgICAgICAgIC8vIFNBRkVUWTogV2UncmUgcmVsZWFzaW5nIHRoZSBsb2Nr IHRoYXQgd2UgZ3JhYmJlZCBhYm92ZS4KPiArICAgICAgICB1bnNhZmUgeyBiaW5kaW5nczo6ZG1h X3Jlc3ZfdW5sb2NrKHNlbGYucmF3X2RtYV9yZXN2KCkpIH07Cj4gKwo+ICsgICAgICAgIHJldAo+ ICsgICAgfQo+ICsKPiArICAgIC8vLyBDcmVhdGVzIChpZiBuZWNlc3NhcnkpIGFuZCByZXR1cm5z IGFuIGltbXV0YWJsZSByZWZlcmVuY2UgdG8gYSBzY2F0dGVyLWdhdGhlciB0YWJsZSBvZiBETUEK PiArICAgIC8vLyBwYWdlcyBmb3IgdGhpcyBvYmplY3QuCj4gKyAgICAvLy8KPiArICAgIC8vLyBU aGlzIHdpbGwgcGluIHRoZSBvYmplY3QgaW4gbWVtb3J5Lgo+ICsgICAgI1tpbmxpbmVdCj4gKyAg ICBwdWIgZm4gc2dfdGFibGU8J2E+KAo+ICsgICAgICAgICYnYSBzZWxmLAo+ICsgICAgICAgIGRl djogJidhIGRldmljZTo6RGV2aWNlPEJvdW5kPiwKPiArICAgICkgLT4gUmVzdWx0PCYnYSBzY2F0 dGVybGlzdDo6U0dUYWJsZT4gewo+ICsgICAgICAgIGxldCBzZ3QgPSBzZWxmLmNyZWF0ZV9zZ190 YWJsZShkZXYpPzsKPiArCj4gKyAgICAgICAgT2soc2d0LmFjY2VzcyhkZXYpPy5kZXJlZigpKQo+ ICsgICAgfQo+ICsKPiArICAgIC8vLyBDcmVhdGVzIChpZiBuZWNlc3NhcnkpIGFuZCByZXR1cm5z IGFuIG93bmVkIHJlZmVyZW5jZSB0byBhIHNjYXR0ZXItZ2F0aGVyIHRhYmxlIG9mIERNQSBwYWdl cwo+ICsgICAgLy8vIGZvciB0aGlzIG9iamVjdC4KPiArICAgIC8vLwo+ICsgICAgLy8vIFRoaXMg aXMgdGhlIHNhbWUgYXMgW2BzZ190YWJsZWBdKFNlbGY6OnNnX3RhYmxlKSwgZXhjZXB0IHRoYXQg aXQgaW5zdGVhZCByZXR1cm5zIGFuCj4gKyAgICAvLy8gW2BzaG1lbTo6U0dUYWJsZWBdIHdoaWNo IGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBhc3NvY2lhdGVkIGdlbSBvYmplY3QsIGluc3RlYWQg b2YgYQo+ICsgICAgLy8vIHJlZmVyZW5jZSB0byBhbiBbYHNjYXR0ZXJsaXN0OjpTR1RhYmxlYF0u Cj4gKyAgICAvLy8KPiArICAgIC8vLyBUaGlzIHdpbGwgcGluIHRoZSBvYmplY3QgaW4gbWVtb3J5 Lgo+ICsgICAgLy8vCj4gKyAgICAvLy8gW2BzaG1lbTo6U0dUYWJsZWBdOiBTR1RhYmxlCj4gKyAg ICBwdWIgZm4gb3duZWRfc2dfdGFibGUoJnNlbGYsIGRldjogJmRldmljZTo6RGV2aWNlPEJvdW5k PikgLT4gUmVzdWx0PFNHVGFibGU8VD4+IHsKPiArICAgICAgICBzZWxmLmNyZWF0ZV9zZ190YWJs ZShkZXYpPzsKPiArCj4gKyAgICAgICAgLy8gSU5WQVJJQU5UOiBXZSBqdXN0IGVuc3VyZWQgYWJv dmUgdGhhdCBgc2VsZi5zZ3RfcmVzYCBpcyBpbml0aWFsaXplZCB3aXRoCj4gKyAgICAgICAgLy8g YFNvbWUoRGV2cmVzPFNHVGFibGVNYXA8VD4+KWAuCj4gKyAgICAgICAgT2soU0dUYWJsZShzZWxm LmludG8oKSkpCj4gKyAgICB9Cj4gIH0KPiAgCj4gIGltcGw8VDogRHJpdmVyT2JqZWN0PiBEZXJl ZiBmb3IgT2JqZWN0PFQ+IHsKPiBAQCAtMjI2LDMgKzMzOCw3OCBAQCBpbXBsPFQ6IERyaXZlck9i amVjdD4gZHJpdmVyOjpBbGxvY0ltcGwgZm9yIE9iamVjdDxUPiB7Cj4gICAgICAgICAgZHVtYl9t YXBfb2Zmc2V0OiBOb25lLAo+ICAgICAgfTsKPiAgfQo+ICsKPiArLy8vIEEgcmVmZXJlbmNlIHRv IGEgR0VNIG9iamVjdCB0aGF0IGlzIGtub3duIHRvIGhhdmUgYSBtYXBwZWQgW2BTR1RhYmxlYF0u Cj4gKy8vLwo+ICsvLy8gVGhpcyBpcyB1c2VkIGJ5IHRoZSBSdXN0IGJpbmRpbmdzIHdpdGggW2BE ZXZyZXNgXSBpbiBvcmRlciB0byBlbnN1cmUgdGhhdCBtYXBwaW5ncyBmb3IgU0dUYWJsZXMKPiAr Ly8vIG9uIEdFTSBzaG1lbSBvYmplY3RzIGFyZSByZXZva2VkIG9uIGRyaXZlci11bmJpbmQuCj4g Ky8vLwo+ICsvLy8gIyBJbnZhcmlhbnRzCj4gKy8vLwo+ICsvLy8gLSBgc2VsZi5vYmpgIGFsd2F5 cyBwb2ludHMgdG8gYSB2YWxpZCBHRU0gb2JqZWN0Lgo+ICsvLy8gLSBUaGlzIG9iamVjdCBpcyBw cm9vZiB0aGF0IGBzZWxmLjAub3duZXIuc2d0YCBoYXMgYW4gaW5pdGlhbGl6ZWQgYW5kIHZhbGlk IFNHVGFibGUuCj4gK3B1YiBzdHJ1Y3QgU0dUYWJsZU1hcDxUOiBEcml2ZXJPYmplY3Q+IHsKPiAr ICAgIG9iajogTm9uTnVsbDxPYmplY3Q8VD4+LAo+ICt9Cj4gKwo+ICtpbXBsPFQ6IERyaXZlck9i amVjdD4gRGVyZWYgZm9yIFNHVGFibGVNYXA8VD4gewo+ICsgICAgdHlwZSBUYXJnZXQgPSBzY2F0 dGVybGlzdDo6U0dUYWJsZTsKPiArCj4gKyAgICBmbiBkZXJlZigmc2VsZikgLT4gJlNlbGY6OlRh cmdldCB7Cj4gKyAgICAgICAgLy8gU0FGRVRZOgo+ICsgICAgICAgIC8vIC0gVGhlIE5vbk51bGwg aXMgZ3VhcmFudGVlZCB0byBiZSB2YWxpZCB2aWEgb3VyIHR5cGUgaW52YXJpYW50cy4KPiArICAg ICAgICAvLyAtIFRoZSBzZ3QgZmllbGQgaXMgZ3VhcmFudGVlZCB0byBiZSBpbml0aWFsaXplZCBh bmQgdmFsaWQgdmlhIG91ciB0eXBlIGludmFyaWFudHMuCj4gKyAgICAgICAgdW5zYWZlIHsgc2Nh dHRlcmxpc3Q6OlNHVGFibGU6OmZyb21fcmF3KCgqc2VsZi5vYmouYXNfcmVmKCkuYXNfcmF3X3No bWVtKCkpLnNndCkgfQo+ICsgICAgfQo+ICt9Cj4gKwo+ICtpbXBsPFQ6IERyaXZlck9iamVjdD4g RHJvcCBmb3IgU0dUYWJsZU1hcDxUPiB7Cj4gKyAgICBmbiBkcm9wKCZtdXQgc2VsZikgewo+ICsg ICAgICAgIC8vIFNBRkVUWTogYG9iamAgaXMgYWx3YXlzIHZhbGlkIHZpYSBvdXIgdHlwZSBpbnZh cmlhbnRzCj4gKyAgICAgICAgbGV0IG9iaiA9IHVuc2FmZSB7IHNlbGYub2JqLmFzX3JlZigpIH07 Cj4gKwo+ICsgICAgICAgIC8vIFNBRkVUWTogVGhlIGRtYV9yZXN2IGZvciBHRU0gb2JqZWN0cyBp cyBpbml0aWFsaXplZCB0aHJvdWdob3V0IGl0cyBsaWZldGltZQo+ICsgICAgICAgIHVuc2FmZSB7 IGJpbmRpbmdzOjpkbWFfcmVzdl9sb2NrKG9iai5yYXdfZG1hX3Jlc3YoKSwgcHRyOjpudWxsX211 dCgpKSB9Owo+ICsKPiArICAgICAgICAvLyBTQUZFVFk6IFdlIGFjcXVpcmVkIHRoZSBsb2NrIG5l ZWRlZCBmb3IgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFib3ZlCj4gKyAgICAgICAgdW5zYWZlIHsg YmluZGluZ3M6Ol9fZHJtX2dlbV9zaG1lbV9mcmVlX3NndF9sb2NrZWQob2JqLmFzX3Jhd19zaG1l bSgpKSB9OwoKV2hlbiBpIHdhcyB0ZXN0aW5nIHRoaXMgd2l0aCB0eXIgSSBnb3QgYSBkb3VibGUg ZnJlZSBoZXJlIHdoZW4gSSB1bmxvYWRlZCB0aGUgbW9kdWxlLgoKV2hlbiBvdXIgZHJtOjpEZXZp Y2UgKGRybTo6RGV2aWNlPFR5ckRybURyaXZlciwgQ3R4Pikgd2FzIHJlbGVhc2VkLCBpdHMgZGV2 aWNlIGRhdGEKKFR5ckRybURldmljZURhdGEpIHdhcyBkcm9wcGVkLiBJbiBvdXIgZGV2aWNlIGRh dGEgd2UgYXJlIGluZGlyZWN0bHkgaG9sZGluZyBzZXZlcmFsIGdlbQpPYmplY3RzIHRocm91Z2gg dGhlIGZpcm13YXJlIChGaXJtd2FyZSDihpIgc2VjdGlvbnMg4oaSIEtlcm5lbEJvIOKGkiBibykK CldoZW4gdGhvc2Ugb2JqZWN0cyBhcmUgZGVzdHJveWVkLCBzaG1lbTo6T2JqZWN0OjpmcmVlX2Nh bGxiYWNrKCkgcnVucy4gVGhpcyBjYWxscwpkcm1fZ2VtX3NobWVtX3JlbGVhc2UoKSB3aGljaCwg b24gdGhlIEMgc2lkZSBmcmVlcyBzaG1lbeKGknNndCBpZiBpdCBleGlzdHMKdmlhIF9fZHJtX2dl bV9zaG1lbV9mcmVlX3NndF9sb2NrZWQoc2htZW0pLgoKQnV0IHRoZSBSdXN0IE9iamVjdDxUPiBz dGlsbCBoYXMgdGhlIHNndF9yZXMuIFNvLCBhdCB0aGUgZW5kIG9mIGZyZWVfY2FsbGJhY2soKSwg S0JveDo6ZnJvbV9yYXcodGhpcykgdHJpZ2dlcnMKU0dUYWJsZU1hcDo6ZHJvcCgpLCBhbmQgdGhh dCBjYWxscyBfX2RybV9nZW1fc2htZW1fZnJlZV9zZ3RfbG9ja2VkKCkgYWdhaW4gZm9yIHRoZSBz YW1lIHNobWVtIG9iamVjdC4KClNvIHRoZSBzYW1lIHNndCBlbmRzIHVwIGJlaW5nIGZyZWVkIG9u Y2UgZnJvbSBkcm1fZ2VtX3NobWVtX3JlbGVhc2UoKSBhbmQgYWdhaW4gbGF0ZXIgZnJvbSBTR1Rh YmxlTWFwOjpkcm9wKCkuCgpGb3Igbm93IG15IGZpeCBpcyBqdXN0IHRvIGNsZWFyIHNndF9yZXMg aW4gZnJlZV9jYWxsYmFjaygpIGJlZm9yZSBkcm1fZ2VtX3NobWVtX3JlbGVhc2UoKSB3aGljaApw cmV2ZW50cyB0aGUgc2d0IGZyb20gYmVpbmcgZnJlZWQgYnkgdGhlIEMgc2lkZS4KCkkgcGxhbiB0 byBwb3N0IG91ciBsYXRlc3QgdHlyIHNlcmllcyBzb29uIGluY2x1ZGluZyB0aGlzIGFic3RyYWN0 aW9uLCBhbmQgSSBob3BlIHlvdSBjYW4gaGF2ZSBhIGxvb2ssCnBlcmhhcHMgaG93IHdl4oCZdmUg c2V0IHVwIHRoZSBkZXZpY2UgZGF0YSBpcyB1bmV4cGVjdGVkLgoKPiArCj4gKyAgICAgICAgLy8g U0FGRVRZOiBXZSBhcmUgcmVsZWFzaW5nIHRoZSBsb2NrIHdlIGFjcXVpcmVkIGFib3ZlLgo+ICsg ICAgICAgIHVuc2FmZSB7IGJpbmRpbmdzOjpkbWFfcmVzdl91bmxvY2sob2JqLnJhd19kbWFfcmVz digpKSB9Owo+ICsgICAgfQo+ICt9Cj4gKwo+ICsvLyBTQUZFVFk6IFRoZSBOb25OdWxsIGluIFNH VGFibGVSZWYgaXMgZ3VhcmFudGVlZCB2YWxpZCBieSBvdXIgdHlwZSBpbnZhcmlhbnRzLCBhbmQg dGhlIEdFTSBvYmplY3QKPiArLy8gaXQgcG9pbnRzIHRvIGlzIGd1YXJhbnRlZWQgdG8gYmUgdGhy ZWFkLXNhZmUuCj4gK3Vuc2FmZSBpbXBsPFQ6IERyaXZlck9iamVjdD4gU2VuZCBmb3IgU0dUYWJs ZU1hcDxUPiB7fQo+ICsvLyBTQUZFVFk6IFRoZSBOb25OdWxsIGluIFNHVGFibGVSZWYgaXMgZ3Vh cmFudGVlZCB2YWxpZCBieSBvdXIgdHlwZSBpbnZhcmlhbnRzLCBhbmQgdGhlIEdFTSBvYmplY3QK PiArLy8gaXQgcG9pbnRzIHRvIGlzIGd1YXJhbnRlZWQgdG8gYmUgdGhyZWFkLXNhZmUuCj4gK3Vu c2FmZSBpbXBsPFQ6IERyaXZlck9iamVjdD4gU3luYyBmb3IgU0dUYWJsZU1hcDxUPiB7fQo+ICsK PiArLy8vIEFuIG93bmVkIHJlZmVyZW5jZSB0byBhIHNjYXR0ZXItZ2F0aGVyIHRhYmxlIG9mIERN QSBhZGRyZXNzIHNwYW5zIGZvciBhIEdFTSBzaG1lbSBvYmplY3QuCj4gKy8vLwo+ICsvLy8gVGhp cyBvYmplY3QgaG9sZHMgYW4gb3duZWQgcmVmZXJlbmNlIHRvIHRoZSB1bmRlcmx5aW5nIEdFTSBz aG1lbSBvYmplY3QsIGVuc3VyaW5nIHRoYXQgdGhlCj4gKy8vLyBbYHNjYXR0ZXJsaXN0OjpTR1Rh YmxlYF0gcmVmZXJlbmNlZCBieSB0aGlzIHR5cGUgcmVtYWlucyB2YWxpZCBmb3IgdGhlIGxpZmV0 aW1lIG9mIHRoaXMgb2JqZWN0Lgo+ICsvLy8KPiArLy8vICMgSW52YXJpYW50cwo+ICsvLy8KPiAr Ly8vIC0gVGhpcyB0eXBlIGlzIHByb29mIHRoYXQgYHNlbGYuMC5zZ3RfcmVzYCBpcyBpbml0aWFs aXplZCB3aXRoIGEgYFNvbWUoRGV2cmVzPFNHVGFibGVNYXA8VD4+KWAuCj4gKy8vLyAtIFRoaXMg b2JqZWN0IGlzIG9ubHkgZXhwb3NlZCBpbiBzaXR1YXRpb25zIHdoZXJlIHdlIGtub3cgdGhlIHVu ZGVybHlpbmcgYFNHVGFibGVgIHdpbGwgbm90IGJlCj4gKy8vLyAgIG1vZGlmaWVkIGZvciB0aGUg bGlmZXRpbWUgb2YgdGhpcyBvYmplY3QuIFRodXMsIGl0IGlzIHNhZmUgdG8gc2VuZC9hY2Nlc3Mg dGhpcyB0eXBlIGFjcm9zcwo+ICsvLy8gICB0aHJlYWRzLgo+ICtwdWIgc3RydWN0IFNHVGFibGU8 VDogRHJpdmVyT2JqZWN0PihBUmVmPE9iamVjdDxUPj4pOwo+ICsKPiArLy8gU0FGRVRZOiBUaGlz IG9iamVjdCBpcyB0aHJlYWQtc2FmZSB2aWEgb3VyIHR5cGUgaW52YXJpYW50cy4KPiArdW5zYWZl IGltcGw8VDogRHJpdmVyT2JqZWN0PiBTZW5kIGZvciBTR1RhYmxlPFQ+IHt9Cj4gKy8vIFNBRkVU WTogVGhpcyBvYmplY3QgaXMgdGhyZWFkLXNhZmUgdmlhIG91ciB0eXBlIGludmFyaWFudHMuCj4g K3Vuc2FmZSBpbXBsPFQ6IERyaXZlck9iamVjdD4gU3luYyBmb3IgU0dUYWJsZTxUPiB7fQo+ICsK PiAraW1wbDxUOiBEcml2ZXJPYmplY3Q+IERlcmVmIGZvciBTR1RhYmxlPFQ+IHsKPiArICAgIHR5 cGUgVGFyZ2V0ID0gRGV2cmVzPFNHVGFibGVNYXA8VD4+Owo+ICsKPiArICAgIGZuIGRlcmVmKCZz ZWxmKSAtPiAmU2VsZjo6VGFyZ2V0IHsKPiArICAgICAgICAvLyBTQUZFVFk6IGBzZWxmLm93bmVy LnNndF9yZXNgIGlzIGd1YXJhbnRlZWQgdG8gYmUgaW5pdGlhbGl6ZWQgd2l0aAo+ICsgICAgICAg IC8vIGBTb21lKERldnJlczxTR1RhYmxlTWFwPFQ+PilgIHZpYSBvdXIgdHlwZSBpbnZhcmlhbnRz Cj4gKyAgICAgICAgdW5zYWZlIHsgKCpzZWxmLjAuc2d0X3Jlcy5nZXQoKSkuYXNfcmVmKCkudW53 cmFwX3VuY2hlY2tlZCgpIH0KPiArICAgIH0KPiArfQo+IC0tIAo+IDIuNTMuMAo+IAo=