From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Andrew F. Davis" Subject: Re: [EARLY RFC][PATCH] dma-buf: Add dma-buf heaps framework Date: Tue, 26 Feb 2019 09:05:00 -0600 Message-ID: <594aff88-2c59-1e0f-5122-8bfe6e2b614a@ti.com> References: <20190225143604.27511-1-afd@ti.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from lelv0142.ext.ti.com (lelv0142.ext.ti.com [198.47.23.249]) by gabe.freedesktop.org (Postfix) with ESMTPS id B597389DF7 for ; Tue, 26 Feb 2019 15:05:09 +0000 (UTC) In-Reply-To: Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Benjamin Gaignard Cc: Chenbo Feng , Alistair Strachan , Liam Mark , ML dri-devel List-Id: dri-devel@lists.freedesktop.org T24gMi8yNi8xOSA4OjEyIEFNLCBCZW5qYW1pbiBHYWlnbmFyZCB3cm90ZToKPiBMZSBsdW4uIDI1 IGbDqXZyLiAyMDE5IMOgIDE1OjM2LCBBbmRyZXcgRi4gRGF2aXMgPGFmZEB0aS5jb20+IGEgw6lj cml0IDoKPj4KPj4gVGhpcyBmcmFtZXdvcmsgYWxsb3dzIGEgdW5pZmllZCB1c2Vyc3BhY2UgaW50 ZXJmYWNlIGZvciBkbWEtYnVmCj4+IGV4cG9ydGVycywgYWxsb3dpbmcgdXNlcmxhbmQgdG8gYWxs b2NhdGUgc3BlY2lmaWMgdHlwZXMgb2YgbWVtb3J5Cj4+IGZvciB1c2UgaW4gZG1hLWJ1ZiBzaGFy aW5nLgo+Pgo+PiBFYWNoIGhlYXAgaXMgZ2l2ZW4gaXRzIG93biBkZXZpY2Ugbm9kZSwgd2hpY2gg YSB1c2VyIGNhbiBhbGxvY2F0ZQo+PiBhIGRtYS1idWYgZmQgZnJvbSB1c2luZyB0aGUgRE1BX0hF QVBfSU9DX0FMTE9DLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRi4gRGF2aXMgPGFmZEB0 aS5jb20+Cj4+IC0tLQo+Pgo+PiBIZWxsbyBhbGwsCj4+Cj4+IEkgaGFkIGEgbGl0dGxlIGxlc3Mg dGltZSBvdmVyIHRoZSB3ZWVrZW5kIHRoYW4gSSB0aG91Z2h0IEkgd291bGQgdG8KPj4gY2xlYW4g dGhpcyB1cCBtb3JlIGFuZCBmaW5pc2ggdGhlIGZpcnN0IHNldCBvZiB1c2VyIGhlYXBzLCBidXQg d2FudGVkCj4+IHRvIGdldCB0aGlzIG91dCBhbnl3YXkuCj4+Cj4+IElPTiBpbiBpdHMgY3VycmVu dCBmb3JtIGFzc3VtZXMgYSBsb3QgYWJvdXQgdGhlIG1lbW9yeSBpdCBleHBvcnRzIGFuZAo+PiB0 aGVzZSBhc3N1bXB0aW9ucyBsZWFkIHRvIHJlc3RyaWN0aW9ucyBvbiB0aGUgZnVsbCByYW5nZSBv ZiBvcGVyYXRpb25zCj4+IGRtYS1idWYncyBjYW4gcHJvZHVjZS4gRHVlIHRvIHRoaXMgaWYgd2Ug YXJlIHRvIGFkZCB0aGlzIGFzIGFuIGV4dGVuc2lvbgo+PiBvZiB0aGUgY29yZSBkbWEtYnVmIHRo ZW4gaXQgc2hvdWxkIG9ubHkgYmUgdGhlIHVzZXItc3BhY2UgYWR2ZXJ0aXNlbWVudAo+PiBhbmQg YWxsb2NhdGlvbiBmcm9udC1lbmQuIEFsbCBkbWEtYnVmIGV4cG9ydGluZyBhbmQgb3BlcmF0aW9u IG5lZWQgdG8gYmUKPj4gcGxhY2VkIGluIHRoZSBjb250cm9sIG9mIHRoZSBleHBvcnRpbmcgaGVh cC4gVGhlIGNvcmUgYmVjb21lcyByYXRoZXIKPj4gc21hbGwsIGp1c3QgYSBmZXcgaHVuZHJlZCBs aW5lcyB5b3Ugc2VlIGhlcmUuIFRoaXMgaXMgbm90IHRvIHNheSB3ZQo+PiBzaG91bGQgbm90IHBy b3ZpZGUgaGVscGVycyB0byBtYWtlIHRoZSBoZWFwIGV4cG9ydGVycyBtb3JlIHNpbXBsZSwgYnV0 Cj4+IHRoZXkgc2hvdWxkIG9ubHkgYmUgaGVscGVycyBhbmQgbm90IGVuZm9yY2VkIGJ5IHRoZSBj b3JlIGZyYW1ld29yay4KPj4KPj4gQmFzaWMgdXNlIG1vZGVsIGhlcmUgaXMgYW4gZXhwb3J0ZXIg KGRlZGljYXRlZCBoZWFwIG1lbW9yeSBkcml2ZXIsIENNQSwKPj4gU3lzdGVtLCBldGMuKSByZWdp c3RlcnMgd2l0aCB0aGUgZnJhbWV3b3JrIGJ5IHByb3ZpZGluZyBhIHN0cnVjdAo+PiBkbWFfaGVh cF9pbmZvIHdoaWNoIGdpdmVzIHVzIHRoZSBuZWVkZWQgaW5mbyB0byBleHBvcnQgdGhpcyBoZWFw IHRvCj4+IHVzZXJzcGFjZSBhcyBhIGRldmljZSBub2RlLiBOZXh0IGEgdXNlciB3aWxsIHJlcXVl c3QgYW4gYWxsb2NhdGlvbiwKPj4gdGhlIElPQ1RMIGlzIHBhcnNlZCBhbmQgdGhlIHJlcXVlc3Qg bWFkZSB0byBhIGhlYXAgcHJvdmlkZWQgYWxsb2MoKSBvcC4KPj4gVGhlIGhlYXAgc2hvdWxkIHJl dHVybiB0aGUgZmlsbGVkIG91dCBzdHJ1Y3QgZG1hX2hlYXBfYnVmZmVyLCBpbmNsdWRpbmcKPj4g ZXhwb3J0aW5nIHRoZSBidWZmZXIgYXMgYSBkbWEtYnVmLiBUaGlzIGRtYS1idWYgd2UgdGhlbiBy ZXR1cm4gdG8gdGhlCj4+IHVzZXIgYXMgYSBmZC4gQnVmZmVyIGZyZWUgaXMgc3RpbGwgYSBiaXQg b3BlbiBhcyB3ZSBuZWVkIHRvIHVwZGF0ZSBzb21lCj4+IHN0YXRzIGFuZCBmcmVlIHNvbWUgbWVt b3J5LCBidXQgdGhlIHJlbGVhc2Ugb3BlcmF0aW9uIGlzIGNvbnRyb2xsZWQgYnkKPj4gdGhlIGhl YXAgZXhwb3J0ZXIsIHNvIHNvbWUgaG9vayB3aWxsIGhhdmUgdG8gYmUgY3JlYXRlZC4KPj4KPj4g SXQgYWxsIG5lZWRzIGEgYml0IG1vcmUgd29yaywgYW5kIEknbSBzdXJlIEknbGwgZmluZCBtaXNz aW5nIHBhcnRzIHdoZW4KPj4gSSBhZGQgc29tZSBtb3JlIGhlYXBzLCBidXQgaG9wZWZ1bGx5IHRo aXMgZnJhbWV3b3JrIGlzIHNpbXBsZSBlbm91Z2ggdGhhdAo+PiBpdCBkb2VzIG5vdCBpbXBlZGUg dGhlIGltcGxlbWVudGF0aW9uIG9mIGFsbCBmdW5jdGlvbmFsaXR5IG9uY2UgcHJvdmlkZWQKPj4g YnkgSU9OIChzaHJpbmtlciwgZGVsYXllZCBmcmVlKSwgbm9yIGFueSBuZXcgZnVuY3Rpb25hbGl0 eSBuZWVkZWQgZm9yCj4+IGZ1dHVyZSBoZWFwIGV4cG9ydGluZyBkZXZpY2VzLgo+Pgo+PiBUaGFu a3MsCj4+IEFuZHJldwo+IAo+IE92ZXJhbGwgIEkgbGlrZSB0aGUgaWRlYSBidXQgSSB0aGluayAi ZG1hX2hlYXAiIHdpbGwgYmUgY29uZnVzaW5nIGxpa2UKPiBkbWFfYnVmIGlzIGJlY2F1c2UgaXQg aXNuJ3QKPiByZWxhdGVkIHRvIERNQSBlbmdpbmUuCgpUaGUgaW50ZW50aW9uIHdhcyB0byBrZWVw IHRoaW5ncyBjb25zaXN0ZW50IHdpdGhpbiBkbWFfYnVmIGFuZCBkbWFfZmVuY2UKbmFtZXMsIG9y aWdpbmFsbHkgdGhpcyB3YXMgZG1hYnVmX2hlYXAsIHJpZ2h0IGJlZm9yZSBJIHBvc3RlZCBJIGRp ZCBhCm1hc3MgcmVuYW1lLCBzbyBpZiB0aGVyZSBpcyBwdXNoIGJhY2sgaGVyZSB0aGVuIGl0IGNh biBhbHdheXMgYmUgbWFzcwpyZW5hbWVkIGFnYWluLgoKPiBJIHdvdWxkIGxpa2UgdG8gc2VlIGhv dyB0aGlzIGNvdWxkIGJlIHVzZWQgd2l0aCBleGl0aW5nIGFsbG9jYXRvciBsaWtlCj4gQ01BIG9y IGdlbmFsbG9jLgo+IAo+IEJlbmphbWluCj4gCj4+Cj4+ICBkcml2ZXJzL2RtYS1idWYvS2NvbmZp ZyAgICAgICB8ICAxMiArKwo+PiAgZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlICAgICAgfCAgIDEg Kwo+PiAgZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMgICAgfCAyNjggKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+PiAgaW5jbHVkZS9saW51eC9kbWEtaGVhcC5oICAgICAgfCAg NTcgKysrKysrKysKPj4gIGluY2x1ZGUvdWFwaS9saW51eC9kbWEtaGVhcC5oIHwgIDU0ICsrKysr KysKPj4gIDUgZmlsZXMgY2hhbmdlZCwgMzkyIGluc2VydGlvbnMoKykKPj4gIGNyZWF0ZSBtb2Rl IDEwMDY0NCBkcml2ZXJzL2RtYS1idWYvZG1hLWhlYXAuYwo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGluY2x1ZGUvbGludXgvZG1hLWhlYXAuaAo+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUv dWFwaS9saW51eC9kbWEtaGVhcC5oCj4+Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYv S2NvbmZpZyBiL2RyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnCj4+IGluZGV4IDJlNWEwZmFhMmNiMS4u MzBiMGQ3YzgzOTQ1IDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZwo+PiAr KysgYi9kcml2ZXJzL2RtYS1idWYvS2NvbmZpZwo+PiBAQCAtMzksNCArMzksMTYgQEAgY29uZmln IFVETUFCVUYKPj4gICAgICAgICAgIEEgZHJpdmVyIHRvIGxldCB1c2Vyc3BhY2UgdHVybiBtZW1m ZCByZWdpb25zIGludG8gZG1hLWJ1ZnMuCj4+ICAgICAgICAgICBRZW11IGNhbiB1c2UgdGhpcyB0 byBjcmVhdGUgaG9zdCBkbWFidWZzIGZvciBndWVzdCBmcmFtZWJ1ZmZlcnMuCj4+Cj4+ICttZW51 Y29uZmlnIERNQUJVRl9IRUFQUwo+PiArICAgICAgIGJvb2wgIkRNQS1CVUYgVXNlcmxhbmQgTWVt b3J5IEhlYXBzIgo+PiArICAgICAgIGRlcGVuZHMgb24gSEFTX0RNQSAmJiBNTVUKPiAKPiBXaHkg ZG8geW91IHB1dCBNTVUgZGVwZW5kZW5jeSA/Cj4gCj4+ICsgICAgICAgc2VsZWN0IEdFTkVSSUNf QUxMT0NBVE9SCj4gCj4gTWF5YmUgSSBoYXZlIG1pc3MgaXQgYnV0IEkgZG9uJ3Qgc2VlIHRoZSBu ZWVkIHRvIHNlbGVjdCBHRU5FUklDX0FMTE9DQVRPUgo+IAoKRm9yIHRoZSB0d28gYWJvdmUgdGhl eSBhcmUgbGVmdG92ZXIgZnJvbSBJT04gd2hlbiB0aGUgaGVhcHMgd2hlcmUgbW9yZQp0aWdodGx5 IGNvdXBsZWQgd2l0aCB0aGUgY29yZSwgdGhlc2UgY2FuIG5vdyBiZSBtb3ZlZCBvdXQgdG8gdGhl CmluZGl2aWR1YWwgaGVhcHMgdGhhdCB1c2UgdGhlbS4KCj4+ICsgICAgICAgc2VsZWN0IERNQV9T SEFSRURfQlVGRkVSCj4+ICsgICAgICAgaGVscAo+PiArICAgICAgICAgQ2hvb3NlIHRoaXMgb3B0 aW9uIHRvIGVuYWJsZSB0aGUgRE1BLUJVRiB1c2VybGFuZCBtZW1vcnkgaGVhcHMsCj4+ICsgICAg ICAgICB0aGlzIGFsbG93cyB1c2Vyc3BhY2UgdG8gYWxsb2NhdGUgZG1hLWJ1ZnMgdGhhdCBjYW4g YmUgc2hhcmVkIGJldHdlZW4KPj4gKyAgICAgICAgIGRyaXZlcnMuCj4+ICsKPj4gK3NvdXJjZSAi ZHJpdmVycy9kbWEtYnVmL2hlYXBzL0tjb25maWciCj4+ICsKPj4gIGVuZG1lbnUKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmls ZQo+PiBpbmRleCAwOTEzYTZjY2FiNWEuLmIwMzMyZjE0MzQxMyAxMDA2NDQKPj4gLS0tIGEvZHJp dmVycy9kbWEtYnVmL01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQo+ PiBAQCAtMSw0ICsxLDUgQEAKPj4gIG9iai15IDo9IGRtYS1idWYubyBkbWEtZmVuY2UubyBkbWEt ZmVuY2UtYXJyYXkubyByZXNlcnZhdGlvbi5vIHNlcW5vLWZlbmNlLm8KPj4gK29iai0kKENPTkZJ R19ETUFCVUZfSEVBUFMpICAgICArPSBkbWEtaGVhcC5vCj4+ICBvYmotJChDT05GSUdfU1lOQ19G SUxFKSAgICAgICAgICAgICAgICArPSBzeW5jX2ZpbGUubwo+PiAgb2JqLSQoQ09ORklHX1NXX1NZ TkMpICAgICAgICAgICs9IHN3X3N5bmMubyBzeW5jX2RlYnVnLm8KPj4gIG9iai0kKENPTkZJR19V RE1BQlVGKSAgICAgICAgICArPSB1ZG1hYnVmLm8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1h LWJ1Zi9kbWEtaGVhcC5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMKPj4gbmV3IGZpbGUg bW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi43MmVkMjI1ZmE4OTIKPj4gLS0tIC9k ZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWhlYXAuYwo+PiBAQCAtMCwwICsx LDI2OCBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gKy8qCj4+ ICsgKiBGcmFtZXdvcmsgZm9yIHVzZXJzcGFjZSBETUEtQlVGIGFsbG9jYXRpb25zCj4+ICsgKgo+ PiArICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLgo+PiArICogQ29weXJpZ2h0IChD KSAyMDE5IExpbmFybyBMdGQuCj4+ICsgKi8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2NkZXYu aD4KPj4gKyNpbmNsdWRlIDxsaW51eC9kZWJ1Z2ZzLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZGV2 aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4 L2Vyci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2lkci5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvdWFj Y2Vzcy5oPgo+PiArCj4+ICsjaW5jbHVkZSA8bGludXgvZG1hLWhlYXAuaD4KPj4gKyNpbmNsdWRl IDx1YXBpL2xpbnV4L2RtYS1oZWFwLmg+Cj4+ICsKPj4gKyNkZWZpbmUgREVWTkFNRSAiZG1hX2hl YXAiCj4+ICsKPj4gKyNkZWZpbmUgTlVNX0hFQVBfTUlOT1JTIDEyOAo+PiArc3RhdGljIERFRklO RV9JRFIoZG1hX2hlYXBfaWRyKTsKPj4gK3N0YXRpYyBERUZJTkVfTVVURVgobWlub3JfbG9jayk7 IC8qIFByb3RlY3QgaWRyIGFjY2Vzc2VzICovCj4+ICsKPj4gK2Rldl90IGRtYV9oZWFwX2RldnQ7 Cj4+ICtzdHJ1Y3QgY2xhc3MgKmRtYV9oZWFwX2NsYXNzOwo+PiArc3RydWN0IGxpc3RfaGVhZCBk bWFfaGVhcF9saXN0Owo+PiArc3RydWN0IGRlbnRyeSAqZG1hX2hlYXBfZGVidWdfcm9vdDsKPj4g Kwo+PiArLyoqCj4+ICsgKiBzdHJ1Y3QgZG1hX2hlYXAgLSByZXByZXNlbnRzIGEgZG1hYnVmIGhl YXAgaW4gdGhlIHN5c3RlbQo+PiArICogQG5hbWU6ICAgICAgICAgICAgICB1c2VkIGZvciBkZWJ1 Z2dpbmcvZGV2aWNlLW5vZGUgbmFtZQo+PiArICogQG9wczogICAgICAgICAgICAgICBvcHMgc3Ry dWN0IGZvciB0aGlzIGhlYXAKPj4gKyAqIEBtaW5vciAgICAgICAgICAgICAgbWlub3IgbnVtYmVy IG9mIHRoaXMgaGVhcCBkZXZpY2UKPj4gKyAqIEBoZWFwX2RldnQgICAgICAgICAgaGVhcCBkZXZp Y2Ugbm9kZQo+PiArICogQGhlYXBfY2RldiAgICAgICAgICBoZWFwIGNoYXIgZGV2aWNlCj4+ICsg KiBAbnVtX29mX2J1ZmZlcnMgICAgIHRoZSBudW1iZXIgb2YgY3VycmVudGx5IGFsbG9jYXRlZCBi dWZmZXJzCj4+ICsgKiBAbnVtX29mX2FsbG9jX2J5dGVzIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVk IGJ5dGVzCj4+ICsgKiBAYWxsb2NfYnl0ZXNfd20gICAgIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVk IGJ5dGVzIHdhdGVybWFyawo+PiArICogQHN0YXRfbG9jayAgICAgICAgICBsb2NrIGZvciBoZWFw IHN0YXRpc3RpY3MKPj4gKyAqCj4+ICsgKiBSZXByZXNlbnRzIGEgaGVhcCBvZiBtZW1vcnkgZnJv bSB3aGljaCBidWZmZXJzIGNhbiBiZSBtYWRlLgo+PiArICovCj4+ICtzdHJ1Y3QgZG1hX2hlYXAg ewo+PiArICAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Cj4+ICsgICAgICAgc3RydWN0IGRtYV9oZWFw X29wcyAqb3BzOwo+PiArICAgICAgIHVuc2lnbmVkIGludCBtaW5vcjsKPj4gKyAgICAgICBkZXZf dCBoZWFwX2RldnQ7Cj4+ICsgICAgICAgc3RydWN0IGNkZXYgaGVhcF9jZGV2Owo+PiArCj4+ICsg ICAgICAgLyogaGVhcCBzdGF0aXN0aWNzICovCj4+ICsgICAgICAgdTY0IG51bV9vZl9idWZmZXJz Owo+PiArICAgICAgIHU2NCBudW1fb2ZfYWxsb2NfYnl0ZXM7Cj4+ICsgICAgICAgdTY0IGFsbG9j X2J5dGVzX3dtOwo+PiArICAgICAgIHNwaW5sb2NrX3Qgc3RhdF9sb2NrOwo+PiArfTsKPj4gKwo+ PiArLyoKPj4gKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgaGVhcCBleHBvcnRlciB3 aGVuIGEgYnVmZmVycyBkbWEtYnVmCj4+ICsgKiBoYW5kbGUgaXMgcmVsZWFzZWQgc28gdGhlIGNv cmUgY2FuIHVwZGF0ZSB0aGUgc3RhdHMgYW5kIHJlbGVhc2UgdGhlCj4+ICsgKiBidWZmZXIgaGFu ZGxlIG1lbW9yeS4KPj4gKyAqCj4+ICsgKiBPciB3ZSBjb3VsZCBmaW5kIGEgd2F5IHRvIGhvb2sg aW50byB0aGUgZmQgb3Igc3RydWN0IGRtYV9idWYgaXRzZWxmPwo+IAo+IElmIHlvdSByZW1vdmUg c3RhdHMgZnJvbSB5b3VyIGNvZGUgeW91IHdpbGwgbm90IG5lZWQgZG1hX2hlYXBfYnVmZmVyIHN0 cnVjdHVyZQo+IGFuZCB0aGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZWNhdXNlIHVzZWxlc3MuCj4g CgpUaGUgaXNzdWUgaXMgdGhhdCBhdCBzb21lIHBvaW50IHdlIHdpbGwgcHJvYmFibHkgd2FudCB0 byBrZWVwIG1vcmUKcGVyLWJ1ZmZlciBkYXRhIGluIHRoZSBjb3JlIGZyYW1ld29yayB0aGFuIGp1 c3Qgc3RhdHMsIGFuZCBJIGRpZG4ndCB3YW50CnRvIGJsb2NrIHRoYXQgaW4gdGhlIGRlc2lnbiBz byBJIGtlcHQgc3RhdHMgYXMgYW4gZXhhbXBsZSBvZiBwZXItYnVmZmVyCmRhdGEgdHJhY2tpbmcu IElmIHdlIGRvbid0IHRoaW5rIHdlIHdpbGwgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZQpidWZm ZXJzIGluc2lkZSB0aGUgaGVhcHMgYW5kIG9ubHkgdHJhY2sgdGhlIGhlYXBzIHRoZW1zZWx2ZXMg dGhlbiB5ZXMKdGhpcyBjYW4gYmUgcmVtb3ZlZC4KCj4+ICsgKi8KPj4gK3ZvaWQgZG1hX2hlYXBf YnVmZmVyX2ZyZWUoc3RydWN0IGRtYV9oZWFwX2J1ZmZlciAqYnVmZmVyKQo+PiArewo+PiArICAg ICAgIHNwaW5fbG9jaygmYnVmZmVyLT5oZWFwLT5zdGF0X2xvY2spOwo+PiArICAgICAgIGJ1ZmZl ci0+aGVhcC0+bnVtX29mX2J1ZmZlcnMtLTsKPj4gKyAgICAgICBidWZmZXItPmhlYXAtPm51bV9v Zl9hbGxvY19ieXRlcyAtPSBidWZmZXItPnNpemU7Cj4+ICsgICAgICAgc3Bpbl91bmxvY2soJmJ1 ZmZlci0+aGVhcC0+c3RhdF9sb2NrKTsKPj4gKwo+PiArICAgICAgIGtmcmVlKGJ1ZmZlcik7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZG1hX2hlYXBfYnVmZmVyX2FsbG9jKHN0cnVjdCBkbWFf aGVhcCAqaGVhcCwgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGZsYWdzKQo+PiArewo+PiArICAg ICAgIHN0cnVjdCBkbWFfaGVhcF9idWZmZXIgKmJ1ZmZlcjsKPj4gKyAgICAgICBpbnQgZmQsIHJl dDsKPj4gKwo+PiArICAgICAgIGJ1ZmZlciA9IGt6YWxsb2Moc2l6ZW9mKCpidWZmZXIpLCBHRlBf S0VSTkVMKTsKPj4gKyAgICAgICBpZiAoIWJ1ZmZlcikKPj4gKyAgICAgICAgICAgICAgIHJldHVy biAtRU5PTUVNOwo+PiArCj4+ICsgICAgICAgYnVmZmVyLT5oZWFwID0gaGVhcDsKPj4gKyAgICAg ICByZXQgPSBoZWFwLT5vcHMtPmFsbG9jYXRlKGhlYXAsIGJ1ZmZlciwgbGVuLCBmbGFncyk7Cj4+ ICsgICAgICAgaWYgKHJldCkgewo+PiArICAgICAgICAgICAgICAga2ZyZWUoYnVmZmVyKTsKPj4g KyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAg ZmQgPSBkbWFfYnVmX2ZkKGJ1ZmZlci0+ZG1hYnVmLCBPX0NMT0VYRUMpOwo+PiArICAgICAgIGlm IChmZCA8IDApIHsKPj4gKyAgICAgICAgICAgICAgIGRtYV9idWZfcHV0KGJ1ZmZlci0+ZG1hYnVm KTsKPiBrZnJlZShidWZmZXIpOwo+PiArICAgICAgICAgICAgICAgcmV0dXJuIGZkOwo+PiArICAg ICAgIH0KPj4gKwo+PiArICAgICAgIHNwaW5fbG9jaygmaGVhcC0+c3RhdF9sb2NrKTsKPj4gKyAg ICAgICBoZWFwLT5udW1fb2ZfYnVmZmVycysrOwo+PiArICAgICAgIGhlYXAtPm51bV9vZl9hbGxv Y19ieXRlcyArPSBidWZmZXItPnNpemU7Cj4+ICsgICAgICAgaWYgKGhlYXAtPm51bV9vZl9hbGxv Y19ieXRlcyA+IGhlYXAtPmFsbG9jX2J5dGVzX3dtKQo+PiArICAgICAgICAgICAgICAgaGVhcC0+ YWxsb2NfYnl0ZXNfd20gPSBoZWFwLT5udW1fb2ZfYWxsb2NfYnl0ZXM7Cj4+ICsgICAgICAgc3Bp bl91bmxvY2soJmhlYXAtPnN0YXRfbG9jayk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gZmQ7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZG1hX2hlYXBfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2Rl LCBzdHJ1Y3QgZmlsZSAqZmlscCkKPj4gK3sKPj4gKyAgICAgICBzdHJ1Y3QgZG1hX2hlYXAgKmhl YXA7Cj4+ICsKPj4gKyAgICAgICBtdXRleF9sb2NrKCZtaW5vcl9sb2NrKTsKPj4gKyAgICAgICBo ZWFwID0gaWRyX2ZpbmQoJmRtYV9oZWFwX2lkciwgaW1pbm9yKGlub2RlKSk7Cj4+ICsgICAgICAg bXV0ZXhfdW5sb2NrKCZtaW5vcl9sb2NrKTsKPj4gKyAgICAgICBpZiAoIWhlYXApIHsKPj4gKyAg ICAgICAgICAgICAgIHByX2VycigiZG1hX2hlYXA6IG1pbm9yICVkIHVua25vd24uXG4iLCBpbWlu b3IoaW5vZGUpKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PREVWOwo+PiArICAgICAg IH0KPj4gKwo+PiArICAgICAgIC8qIGluc3RhbmNlIGRhdGEgYXMgY29udGV4dCAqLwo+PiArICAg ICAgIGZpbHAtPnByaXZhdGVfZGF0YSA9IGhlYXA7Cj4+ICsgICAgICAgbm9uc2Vla2FibGVfb3Bl bihpbm9kZSwgZmlscCk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiAr c3RhdGljIGludCBkbWFfaGVhcF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm aWxlICpmaWxwKQo+PiArewo+PiArICAgICAgIGZpbHAtPnByaXZhdGVfZGF0YSA9IE5VTEw7Cj4+ ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIGxvbmcgZG1hX2hl YXBfaW9jdGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxv bmcgYXJnKQo+PiArewo+PiArICAgICAgIHN3aXRjaCAoY21kKSB7Cj4+ICsgICAgICAgY2FzZSBE TUFfSEVBUF9JT0NfQUxMT0M6Cj4+ICsgICAgICAgewo+PiArICAgICAgICAgICAgICAgc3RydWN0 IGRtYV9oZWFwX2FsbG9jYXRpb25fZGF0YSBoZWFwX2FsbG9jYXRpb247Cj4+ICsgICAgICAgICAg ICAgICBzdHJ1Y3QgZG1hX2hlYXAgKmhlYXAgPSBmaWxwLT5wcml2YXRlX2RhdGE7Cj4+ICsgICAg ICAgICAgICAgICBpbnQgZmQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGlmIChjb3B5X2Zyb21f dXNlcigmaGVhcF9hbGxvY2F0aW9uLCAodm9pZCBfX3VzZXIgKilhcmcsIF9JT0NfU0laRShjbWQp KSkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsKPj4gKyAg ICAgICAgICAgICAgIGlmIChoZWFwX2FsbG9jYXRpb24ucmVzZXJ2ZWQwIHx8Cj4+ICsgICAgICAg ICAgICAgICAgICAgaGVhcF9hbGxvY2F0aW9uLnJlc2VydmVkMSkgewo+PiArICAgICAgICAgICAg ICAgICAgICAgICBwcl93YXJuX29uY2UoImRtYV9oZWFwOiBpb2N0bCBkYXRhIG5vdCB2YWxpZFxu Iik7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAg ICAgICAgICAgfQo+PiArCj4+ICsgICAgICAgICAgICAgICBmZCA9IGRtYV9oZWFwX2J1ZmZlcl9h bGxvYyhoZWFwLCBoZWFwX2FsbG9jYXRpb24ubGVuLCBoZWFwX2FsbG9jYXRpb24uZmxhZ3MpOwo+ PiArICAgICAgICAgICAgICAgaWYgKGZkIDwgMCkKPj4gKyAgICAgICAgICAgICAgICAgICAgICAg cmV0dXJuIGZkOwo+PiArCj4+ICsgICAgICAgICAgICAgICBoZWFwX2FsbG9jYXRpb24uZmQgPSBm ZDsKPj4gKwo+PiArICAgICAgICAgICAgICAgaWYgKGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIg KilhcmcsICZoZWFwX2FsbG9jYXRpb24sIF9JT0NfU0laRShjbWQpKSkKPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7Cj4+ICsKPj4gKyAgICAgICAgICAgICAgIGJyZWFr Owo+PiArICAgICAgIH0KPj4gKyAgICAgICBkZWZhdWx0Ogo+PiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FTk9UVFk7Cj4+ICsgICAgICAgfQo+PiArCj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRtYV9oZWFwX2Zv cHMgPSB7Cj4+ICsgICAgICAgLm93bmVyICAgICAgICAgID0gVEhJU19NT0RVTEUsCj4+ICsgICAg ICAgLm9wZW4gICAgICAgICAgID0gZG1hX2hlYXBfb3BlbiwKPj4gKyAgICAgICAucmVsZWFzZSAg ICAgICAgPSBkbWFfaGVhcF9yZWxlYXNlLAo+PiArICAgICAgIC51bmxvY2tlZF9pb2N0bCA9IGRt YV9oZWFwX2lvY3RsLAo+PiArI2lmZGVmIENPTkZJR19DT01QQVQKPj4gKyAgICAgICAuY29tcGF0 X2lvY3RsICAgPSBkbWFfaGVhcF9pb2N0bCwKPj4gKyNlbmRpZgo+PiArfTsKPj4gKwo+PiAraW50 IGRtYV9oZWFwX2FkZChzdHJ1Y3QgZG1hX2hlYXBfaW5mbyAqaGVhcF9pbmZvKQo+PiArewo+PiAr ICAgICAgIHN0cnVjdCBkbWFfaGVhcCAqaGVhcDsKPj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpk ZXZfcmV0Owo+PiArICAgICAgIHN0cnVjdCBkZW50cnkgKmhlYXBfcm9vdDsKPj4gKyAgICAgICBp bnQgcmV0Owo+PiArCj4+ICsgICAgICAgaWYgKCFoZWFwX2luZm8tPm5hbWUgfHwgIXN0cmNtcCho ZWFwX2luZm8tPm5hbWUsICIiKSkgewo+PiArICAgICAgICAgICAgICAgcHJfZXJyKCJkbWFfaGVh cDogQ2Fubm90IGFkZCBoZWFwIHdpdGhvdXQgYSBuYW1lXG4iKTsKPj4gKyAgICAgICAgICAgICAg IHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGlmICghaGVhcF9p bmZvLT5vcHMgfHwgIWhlYXBfaW5mby0+b3BzLT5hbGxvY2F0ZSkgewo+PiArICAgICAgICAgICAg ICAgcHJfZXJyKCJkbWFfaGVhcDogQ2Fubm90IGFkZCBoZWFwIHdpdGggaW52YWxpZCBvcHMgc3Ry dWN0XG4iKTsKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+PiArICAgICAgIH0K Pj4gKwo+PiArICAgICAgIGhlYXAgPSBremFsbG9jKHNpemVvZigqaGVhcCksIEdGUF9LRVJORUwp Owo+PiArICAgICAgIGlmICghaGVhcCkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVN Owo+PiArCj4+ICsgICAgICAgaGVhcC0+bmFtZSA9IGhlYXBfaW5mby0+bmFtZTsKPj4gKyAgICAg ICBtZW1jcHkoaGVhcC0+b3BzLCBoZWFwX2luZm8tPm9wcywgc2l6ZW9mKCpoZWFwLT5vcHMpKTsK Pj4gKwo+PiArICAgICAgIC8qIEZpbmQgdW51c2VkIG1pbm9yIG51bWJlciAqLwo+PiArICAgICAg IG11dGV4X2xvY2soJm1pbm9yX2xvY2spOwo+PiArICAgICAgIHJldCA9IGlkcl9hbGxvYygmZG1h X2hlYXBfaWRyLCBoZWFwLCAwLCBOVU1fSEVBUF9NSU5PUlMsIEdGUF9LRVJORUwpOwo+PiArICAg ICAgIG11dGV4X3VubG9jaygmbWlub3JfbG9jayk7Cj4+ICsgICAgICAgaWYgKHJldCA8IDApIHsK Pj4gKyAgICAgICAgICAgICAgIHByX2VycigiZG1hX2hlYXA6IFVuYWJsZSB0byBnZXQgbWlub3Ig bnVtYmVyIGZvciBoZWFwXG4iKTsKPiBrZnJlZShoZWFwKTsKPj4gKyAgICAgICAgICAgICAgIHJl dHVybiByZXQ7Cj4+ICsgICAgICAgfQo+PiArICAgICAgIGhlYXAtPm1pbm9yID0gcmV0Owo+PiAr Cj4+ICsgICAgICAgLyogQ3JlYXRlIGRldmljZSAqLwo+PiArICAgICAgIGhlYXAtPmhlYXBfZGV2 dCA9IE1LREVWKE1BSk9SKGRtYV9oZWFwX2RldnQpLCBoZWFwLT5taW5vcik7Cj4+ICsgICAgICAg ZGV2X3JldCA9IGRldmljZV9jcmVhdGUoZG1hX2hlYXBfY2xhc3MsCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBoZWFwLT5oZWFwX2RldnQsCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwLT5uYW1lKTsKPj4gKyAg ICAgICBpZiAoSVNfRVJSKGRldl9yZXQpKSB7Cj4+ICsgICAgICAgICAgICAgICBwcl9lcnIoImRt YV9oZWFwOiBVbmFibGUgdG8gY3JlYXRlIGNoYXIgZGV2aWNlXG4iKTsKPiBrZnJlZShoZWFwKTsK Pj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGRldl9yZXQpOwo+PiArICAgICAgIH0K Pj4gKwo+PiArICAgICAgIC8qIEFkZCBkZXZpY2UgKi8KPj4gKyAgICAgICBjZGV2X2luaXQoJmhl YXAtPmhlYXBfY2RldiwgJmRtYV9oZWFwX2ZvcHMpOwo+PiArICAgICAgIHJldCA9IGNkZXZfYWRk KCZoZWFwLT5oZWFwX2NkZXYsIGRtYV9oZWFwX2RldnQsIE5VTV9IRUFQX01JTk9SUyk7Cj4+ICsg ICAgICAgaWYgKHJldCA8IDApIHsKPj4gKyAgICAgICAgICAgICAgIGRldmljZV9kZXN0cm95KGRt YV9oZWFwX2NsYXNzLCBoZWFwLT5oZWFwX2RldnQpOwo+PiArICAgICAgICAgICAgICAgcHJfZXJy KCJkbWFfaGVhcDogVW5hYmxlIHRvIGFkZCBjaGFyIGRldmljZVxuIik7Cj4ga2ZyZWUoaGVhcCk7 CgpBQ0sgZm9yIGFsbCB0aGUga2ZyZWUoKSdzCgo+PiArICAgICAgICAgICAgICAgcmV0dXJuIHJl dDsKPj4gKyAgICAgICB9Cj4+ICsKPj4gKyAgICAgICBoZWFwLT5udW1fb2ZfYnVmZmVycyA9IDA7 Cj4+ICsgICAgICAgaGVhcC0+bnVtX29mX2FsbG9jX2J5dGVzID0gMDsKPj4gKyAgICAgICBoZWFw LT5hbGxvY19ieXRlc193bSA9IDA7Cj4+ICsgICAgICAgc3Bpbl9sb2NrX2luaXQoJmhlYXAtPnN0 YXRfbG9jayk7Cj4+ICsgICAgICAgaGVhcF9yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKGhlYXAt Pm5hbWUsIGRtYV9oZWFwX2RlYnVnX3Jvb3QpOwo+PiArICAgICAgIGRlYnVnZnNfY3JlYXRlX3U2 NCgibnVtX29mX2J1ZmZlcnMiLCAwNDQ0LCBoZWFwX3Jvb3QsICZoZWFwLT5udW1fb2ZfYnVmZmVy cyk7Cj4+ICsgICAgICAgZGVidWdmc19jcmVhdGVfdTY0KCJudW1fb2ZfYWxsb2NfYnl0ZXMiLCAw NDQ0LCBoZWFwX3Jvb3QsICZoZWFwLT5udW1fb2ZfYWxsb2NfYnl0ZXMpOwo+PiArICAgICAgIGRl YnVnZnNfY3JlYXRlX3U2NCgiYWxsb2NfYnl0ZXNfd20iLCAwNDQ0LCBoZWFwX3Jvb3QsICZoZWFw LT5hbGxvY19ieXRlc193bSk7Cj4+ICsKPj4gKyAgICAgICByZXR1cm4gMDsKPj4gK30KPj4gK0VY UE9SVF9TWU1CT0woZG1hX2hlYXBfYWRkKTsKPj4gKwo+PiArc3RhdGljIGludCBkbWFfaGVhcF9p bml0KHZvaWQpCj4+ICt7Cj4+ICsgICAgICAgaW50IHJldDsKPj4gKwo+PiArICAgICAgIHJldCA9 IGFsbG9jX2NocmRldl9yZWdpb24oJmRtYV9oZWFwX2RldnQsIDAsIE5VTV9IRUFQX01JTk9SUywg REVWTkFNRSk7Cj4+ICsgICAgICAgaWYgKHJldCkKPj4gKyAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7Cj4+ICsKPj4gKyAgICAgICBkbWFfaGVhcF9jbGFzcyA9IGNsYXNzX2NyZWF0ZShUSElTX01P RFVMRSwgREVWTkFNRSk7Cj4+ICsgICAgICAgaWYgKElTX0VSUihkbWFfaGVhcF9jbGFzcykpIHsK Pj4gKyAgICAgICAgICAgICAgIHVucmVnaXN0ZXJfY2hyZGV2X3JlZ2lvbihkbWFfaGVhcF9kZXZ0 LCBOVU1fSEVBUF9NSU5PUlMpOwo+PiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoZG1h X2hlYXBfY2xhc3MpOwo+PiArICAgICAgIH0KPj4gKwo+PiArICAgICAgIGRtYV9oZWFwX2RlYnVn X3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImRtYV9oZWFwIiwgTlVMTCk7Cj4+ICsKPj4gKyAg ICAgICByZXR1cm4gMDsKPj4gK30KPj4gK3N1YnN5c19pbml0Y2FsbChkbWFfaGVhcF9pbml0KTsK Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWhlYXAuaCBiL2luY2x1ZGUvbGludXgv ZG1hLWhlYXAuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LjA5ZWFiMzEwNTExOAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1h LWhlYXAuaAo+PiBAQCAtMCwwICsxLDU3IEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMAo+PiArLyoKPj4gKyAqIERNQUJVRiBIZWFwcyBBbGxvY2F0aW9uIEluZnJhc3Ry dWN0dXJlCj4+ICsgKgo+PiArICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLgo+PiAr ICogQ29weXJpZ2h0IChDKSAyMDE5IExpbmFybyBMdGQuCj4+ICsgKi8KPj4gKwo+PiArI2lmbmRl ZiBfRE1BX0hFQVBTX0gKPj4gKyNkZWZpbmUgX0RNQV9IRUFQU19ICj4+ICsKPj4gKyNpbmNsdWRl IDxsaW51eC90eXBlcy5oPgo+PiArCj4+ICsvKioKPj4gKyAqIHN0cnVjdCBkbWFfaGVhcF9idWZm ZXIgLSBtZXRhZGF0YSBmb3IgYSBwYXJ0aWN1bGFyIGJ1ZmZlcgo+PiArICogQGhlYXA6ICAgICAg ICAgICAgICBiYWNrIHBvaW50ZXIgdG8gdGhlIGhlYXAgdGhlIGJ1ZmZlciBjYW1lIGZyb20KPj4g KyAqIEBkbWFidWY6ICAgICAgICAgICAgYmFja2luZyBkbWEtYnVmIGZvciB0aGlzIGJ1ZmZlcgo+ PiArICogQHNpemU6ICAgICAgICAgICAgICBzaXplIG9mIHRoZSBidWZmZXIKPj4gKyAqIEBmbGFn czogICAgICAgICAgICAgYnVmZmVyIHNwZWNpZmljIGZsYWdzCj4+ICsgKi8KPj4gK3N0cnVjdCBk bWFfaGVhcF9idWZmZXIgewo+PiArICAgICAgIHN0cnVjdCBkbWFfaGVhcCAqaGVhcDsKPj4gKyAg ICAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+PiArICAgICAgIHNpemVfdCBzaXplOwo+PiAr ICAgICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7Cj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIHN0 cnVjdCBkbWFfaGVhcF9vcHMgLSBvcHMgdG8gb3BlcmF0ZSBvbiBhIGdpdmVuIGhlYXAKPj4gKyAq IEBhbGxvY2F0ZTogICAgICAgICAgYWxsb2NhdGUgYnVmZmVyCj4+ICsgKgo+PiArICogYWxsb2Nh dGUgcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvbiBlcnJvci4KPj4gKyAqLwo+PiArc3Ry dWN0IGRtYV9oZWFwX29wcyB7Cj4+ICsgICAgICAgaW50ICgqYWxsb2NhdGUpKHN0cnVjdCBkbWFf aGVhcCAqaGVhcCwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9oZWFwX2J1 ZmZlciAqYnVmZmVyLAo+PiArICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxl biwKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncyk7Cj4+ICt9 Owo+PiArCj4+ICsvKioKPj4gKyAqIHN0cnVjdCBkbWFfaGVhcF9pbmZvIC0gaG9sZHMgaW5mb3Jt YXRpb24gbmVlZGVkIHRvIGNyZWF0ZSBhIERNQS1oZWFwCj4+ICsgKiBAb3BzOiAgICAgICAgICAg ICAgIG9wcyBzdHJ1Y3QgZm9yIHRoaXMgaGVhcAo+PiArICogQG5hbWU6ICAgICAgICAgICAgICB1 c2VkIGZvciBkZWJ1Z2dpbmcvZGV2aWNlLW5vZGUgbmFtZQo+PiArICovCj4+ICtzdHJ1Y3QgZG1h X2hlYXBfaW5mbyB7Cj4+ICsgICAgICAgY29uc3QgY2hhciAqbmFtZTsKPj4gKyAgICAgICBzdHJ1 Y3QgZG1hX2hlYXBfb3BzICpvcHM7Cj4+ICt9Owo+PiArCj4+ICsvKioKPj4gKyAqIGRtYV9oZWFw X2FkZCAtIGFkZHMgYSBoZWFwIHRvIGRtYWJ1ZiBoZWFwcwo+PiArICogQGhlYXA6ICAgICAgICAg ICAgICB0aGUgaGVhcCB0byBhZGQKPj4gKyAqLwo+PiAraW50IGRtYV9oZWFwX2FkZChzdHJ1Y3Qg ZG1hX2hlYXBfaW5mbyAqaGVhcF9pbmZvKTsKPj4gKwo+PiArI2VuZGlmIC8qIF9ETUFfSEVBUFNf SCAqLwo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L2RtYS1oZWFwLmggYi9pbmNs dWRlL3VhcGkvbGludXgvZG1hLWhlYXAuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRl eCAwMDAwMDAwMDAwMDAuLjdkY2JiOThlMjllYwo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2lu Y2x1ZGUvdWFwaS9saW51eC9kbWEtaGVhcC5oCj4+IEBAIC0wLDAgKzEsNTQgQEAKPj4gKy8qIFNQ RFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wICovCj4+ICsvKgo+PiArICogRE1BQlVGIEhl YXBzIFVzZXJzcGFjZSBBUEkKPj4gKyAqCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xl LCBJbmMuCj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgTGluYXJvIEx0ZC4KPj4gKyAqLwo+PiAr I2lmbmRlZiBfVUFQSV9MSU5VWF9ETUFCVUZfUE9PTF9ICj4+ICsjZGVmaW5lIF9VQVBJX0xJTlVY X0RNQUJVRl9QT09MX0gKPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvdHlwZXMuaD4KPj4gKwo+PiArLyoqCj4+ICsgKiBET0M6IERNQUJVRiBIZWFw cyBVc2Vyc3BhY2UgQVBJCj4+ICsgKgo+PiArICovCj4+ICsKPj4gKy8qCj4+ICsgKiBtYXBwaW5n cyBvZiB0aGlzIGJ1ZmZlciBzaG91bGQgYmUgdW4tY2FjaGVkLCBvdGhlcndpc2UgZG1hYnVmIGhl YXBzIHdpbGwKPj4gKyAqIG5lZWQgY2FjaGUgbWFpbnRlbmFuY2UgdXNpbmcgRE1BX0JVRl9TWU5D Xyogd2hlbiB0aGUgYnVmZmVyIGlzIG1hcHBlZCBmb3IgZG1hCj4+ICsgKi8KPj4gKyNkZWZpbmUg RE1BX0hFQVBfRkxBR19DT0hFUkVOVCAxCj4+ICsKPj4gKy8qKgo+PiArICogc3RydWN0IGRtYV9o ZWFwX2FsbG9jYXRpb25fZGF0YSAtIG1ldGFkYXRhIHBhc3NlZCBmcm9tIHVzZXJzcGFjZSBmb3IK Pj4gKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0aW9ucwo+ PiArICogQGxlbjogICAgICAgICAgICAgICBzaXplIG9mIHRoZSBhbGxvY2F0aW9uCj4+ICsgKiBA ZmxhZ3M6ICAgICAgICAgICAgIGZsYWdzIHBhc3NlZCB0byBwb29sCj4+ICsgKiBAZmQ6ICAgICAg ICAgICAgICAgICAgICAgICAgd2lsbCBiZSBwb3B1bGF0ZWQgd2l0aCBhIGZkIHdoaWNoIHByb3Zk ZXMgdGhlCj4+ICsgKiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZSB0byB0aGUgYWxsb2NhdGVk IGRtYS1idWYKPj4gKyAqCj4+ICsgKiBQcm92aWRlZCBieSB1c2Vyc3BhY2UgYXMgYW4gYXJndW1l bnQgdG8gdGhlIGlvY3RsCj4+ICsgKi8KPj4gK3N0cnVjdCBkbWFfaGVhcF9hbGxvY2F0aW9uX2Rh dGEgewo+IHlvdSBjb3VsZCBhZGQgYW4gX191NjQgdmVyc2lvbiBmaWVsZCB0aGF0IGNvdWxkIGhl bHAgaWYgQVBJIGNoYW5nZSBpbiB0aGUgZnV0dXJlCj4gCgpUaGlzIHdhcyBicm91Z2h0IHVwIGJl Zm9yZSB3aGVuIHRoZSBzYW1lIHdhcyBhdHRlbXB0ZWQgaW4gSU9OIFswXSwgc2VlbXMKdmVyc2lv bmluZyBpb2N0bHMgaXMgZnJvd25lZCB1cG9uLCBzb21ldGhpbmcgdG8gZG8gd2l0aCBpdCBlbmFi bGluZyB0aGUKYmFkIHByYWN0aWNlIG9mIG1ha2luZyBiYWNrd2FyZHMgaW5jb21wYXRpYmxlIGNo YW5nZXMgZWFzaWVyLgoKWzBdIGh0dHBzOi8vcGF0Y2h3b3JrLmtlcm5lbC5vcmcvcGF0Y2gvMTA4 MTY2OTMvCgpUaGFua3MsCkFuZHJldwoKPj4gKyAgICAgICBfX3U2NCBsZW47Cj4+ICsgICAgICAg X191MzIgZmxhZ3M7Cj4+ICsgICAgICAgX191MzIgZmQ7Cj4+ICsgICAgICAgX191MzIgcmVzZXJ2 ZWQwOwo+PiArICAgICAgIF9fdTMyIHJlc2VydmVkMTsKPj4gK307Cj4+ICsKPj4gKyNkZWZpbmUg RE1BX0hFQVBfSU9DX01BR0lDICAgICAgICAgICAgICdIJwo+PiArCj4+ICsvKioKPj4gKyAqIERP QzogRE1BX0hFQVBfSU9DX0FMTE9DIC0gYWxsb2NhdGUgbWVtb3J5IGZyb20gcG9vbAo+PiArICoK Pj4gKyAqIFRha2VzIGFuIGRtYV9oZWFwX2FsbG9jYXRpb25fZGF0YSBzdHJ1Y3QgYW5kIHJldHVy bnMgaXQgd2l0aCB0aGUgZmQgZmllbGQKPj4gKyAqIHBvcHVsYXRlZCB3aXRoIHRoZSBkbWFidWYg aGFuZGxlIG9mIHRoZSBhbGxvY2F0aW9uLgo+PiArICovCj4+ICsjZGVmaW5lIERNQV9IRUFQX0lP Q19BTExPQyAgICAgX0lPV1IoRE1BX0hFQVBfSU9DX01BR0lDLCAwLCBcCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGRtYV9oZWFwX2FsbG9jYXRpb25fZGF0 YSkKPj4gKwo+PiArI2VuZGlmIC8qIF9VQVBJX0xJTlVYX0RNQUJVRl9QT09MX0ggKi8KPj4gLS0K Pj4gMi4xOS4xCj4+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bA==