From mboxrd@z Thu Jan 1 00:00:00 1970 From: Benjamin Gaignard Subject: Re: [EARLY RFC][PATCH] dma-buf: Add dma-buf heaps framework Date: Tue, 26 Feb 2019 15:12:20 +0100 Message-ID: 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 mail-ot1-x342.google.com (mail-ot1-x342.google.com [IPv6:2607:f8b0:4864:20::342]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6EA1789DB8 for ; Tue, 26 Feb 2019 14:12:33 +0000 (UTC) Received: by mail-ot1-x342.google.com with SMTP id c18so11120650otl.13 for ; Tue, 26 Feb 2019 06:12:33 -0800 (PST) In-Reply-To: <20190225143604.27511-1-afd@ti.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Andrew F. Davis" Cc: Chenbo Feng , Alistair Strachan , Liam Mark , ML dri-devel List-Id: dri-devel@lists.freedesktop.org TGUgbHVuLiAyNSBmw6l2ci4gMjAxOSDDoCAxNTozNiwgQW5kcmV3IEYuIERhdmlzIDxhZmRAdGku Y29tPiBhIMOpY3JpdCA6Cj4KPiBUaGlzIGZyYW1ld29yayBhbGxvd3MgYSB1bmlmaWVkIHVzZXJz cGFjZSBpbnRlcmZhY2UgZm9yIGRtYS1idWYKPiBleHBvcnRlcnMsIGFsbG93aW5nIHVzZXJsYW5k IHRvIGFsbG9jYXRlIHNwZWNpZmljIHR5cGVzIG9mIG1lbW9yeQo+IGZvciB1c2UgaW4gZG1hLWJ1 ZiBzaGFyaW5nLgo+Cj4gRWFjaCBoZWFwIGlzIGdpdmVuIGl0cyBvd24gZGV2aWNlIG5vZGUsIHdo aWNoIGEgdXNlciBjYW4gYWxsb2NhdGUKPiBhIGRtYS1idWYgZmQgZnJvbSB1c2luZyB0aGUgRE1B X0hFQVBfSU9DX0FMTE9DLgo+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmV3IEYuIERhdmlzIDxhZmRA dGkuY29tPgo+IC0tLQo+Cj4gSGVsbG8gYWxsLAo+Cj4gSSBoYWQgYSBsaXR0bGUgbGVzcyB0aW1l IG92ZXIgdGhlIHdlZWtlbmQgdGhhbiBJIHRob3VnaHQgSSB3b3VsZCB0bwo+IGNsZWFuIHRoaXMg dXAgbW9yZSBhbmQgZmluaXNoIHRoZSBmaXJzdCBzZXQgb2YgdXNlciBoZWFwcywgYnV0IHdhbnRl ZAo+IHRvIGdldCB0aGlzIG91dCBhbnl3YXkuCj4KPiBJT04gaW4gaXRzIGN1cnJlbnQgZm9ybSBh c3N1bWVzIGEgbG90IGFib3V0IHRoZSBtZW1vcnkgaXQgZXhwb3J0cyBhbmQKPiB0aGVzZSBhc3N1 bXB0aW9ucyBsZWFkIHRvIHJlc3RyaWN0aW9ucyBvbiB0aGUgZnVsbCByYW5nZSBvZiBvcGVyYXRp b25zCj4gZG1hLWJ1ZidzIGNhbiBwcm9kdWNlLiBEdWUgdG8gdGhpcyBpZiB3ZSBhcmUgdG8gYWRk IHRoaXMgYXMgYW4gZXh0ZW5zaW9uCj4gb2YgdGhlIGNvcmUgZG1hLWJ1ZiB0aGVuIGl0IHNob3Vs ZCBvbmx5IGJlIHRoZSB1c2VyLXNwYWNlIGFkdmVydGlzZW1lbnQKPiBhbmQgYWxsb2NhdGlvbiBm cm9udC1lbmQuIEFsbCBkbWEtYnVmIGV4cG9ydGluZyBhbmQgb3BlcmF0aW9uIG5lZWQgdG8gYmUK PiBwbGFjZWQgaW4gdGhlIGNvbnRyb2wgb2YgdGhlIGV4cG9ydGluZyBoZWFwLiBUaGUgY29yZSBi ZWNvbWVzIHJhdGhlcgo+IHNtYWxsLCBqdXN0IGEgZmV3IGh1bmRyZWQgbGluZXMgeW91IHNlZSBo ZXJlLiBUaGlzIGlzIG5vdCB0byBzYXkgd2UKPiBzaG91bGQgbm90IHByb3ZpZGUgaGVscGVycyB0 byBtYWtlIHRoZSBoZWFwIGV4cG9ydGVycyBtb3JlIHNpbXBsZSwgYnV0Cj4gdGhleSBzaG91bGQg b25seSBiZSBoZWxwZXJzIGFuZCBub3QgZW5mb3JjZWQgYnkgdGhlIGNvcmUgZnJhbWV3b3JrLgo+ Cj4gQmFzaWMgdXNlIG1vZGVsIGhlcmUgaXMgYW4gZXhwb3J0ZXIgKGRlZGljYXRlZCBoZWFwIG1l bW9yeSBkcml2ZXIsIENNQSwKPiBTeXN0ZW0sIGV0Yy4pIHJlZ2lzdGVycyB3aXRoIHRoZSBmcmFt ZXdvcmsgYnkgcHJvdmlkaW5nIGEgc3RydWN0Cj4gZG1hX2hlYXBfaW5mbyB3aGljaCBnaXZlcyB1 cyB0aGUgbmVlZGVkIGluZm8gdG8gZXhwb3J0IHRoaXMgaGVhcCB0bwo+IHVzZXJzcGFjZSBhcyBh IGRldmljZSBub2RlLiBOZXh0IGEgdXNlciB3aWxsIHJlcXVlc3QgYW4gYWxsb2NhdGlvbiwKPiB0 aGUgSU9DVEwgaXMgcGFyc2VkIGFuZCB0aGUgcmVxdWVzdCBtYWRlIHRvIGEgaGVhcCBwcm92aWRl ZCBhbGxvYygpIG9wLgo+IFRoZSBoZWFwIHNob3VsZCByZXR1cm4gdGhlIGZpbGxlZCBvdXQgc3Ry dWN0IGRtYV9oZWFwX2J1ZmZlciwgaW5jbHVkaW5nCj4gZXhwb3J0aW5nIHRoZSBidWZmZXIgYXMg YSBkbWEtYnVmLiBUaGlzIGRtYS1idWYgd2UgdGhlbiByZXR1cm4gdG8gdGhlCj4gdXNlciBhcyBh IGZkLiBCdWZmZXIgZnJlZSBpcyBzdGlsbCBhIGJpdCBvcGVuIGFzIHdlIG5lZWQgdG8gdXBkYXRl IHNvbWUKPiBzdGF0cyBhbmQgZnJlZSBzb21lIG1lbW9yeSwgYnV0IHRoZSByZWxlYXNlIG9wZXJh dGlvbiBpcyBjb250cm9sbGVkIGJ5Cj4gdGhlIGhlYXAgZXhwb3J0ZXIsIHNvIHNvbWUgaG9vayB3 aWxsIGhhdmUgdG8gYmUgY3JlYXRlZC4KPgo+IEl0IGFsbCBuZWVkcyBhIGJpdCBtb3JlIHdvcmss IGFuZCBJJ20gc3VyZSBJJ2xsIGZpbmQgbWlzc2luZyBwYXJ0cyB3aGVuCj4gSSBhZGQgc29tZSBt b3JlIGhlYXBzLCBidXQgaG9wZWZ1bGx5IHRoaXMgZnJhbWV3b3JrIGlzIHNpbXBsZSBlbm91Z2gg dGhhdAo+IGl0IGRvZXMgbm90IGltcGVkZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWxsIGZ1bmN0 aW9uYWxpdHkgb25jZSBwcm92aWRlZAo+IGJ5IElPTiAoc2hyaW5rZXIsIGRlbGF5ZWQgZnJlZSks IG5vciBhbnkgbmV3IGZ1bmN0aW9uYWxpdHkgbmVlZGVkIGZvcgo+IGZ1dHVyZSBoZWFwIGV4cG9y dGluZyBkZXZpY2VzLgo+Cj4gVGhhbmtzLAo+IEFuZHJldwoKT3ZlcmFsbCAgSSBsaWtlIHRoZSBp ZGVhIGJ1dCBJIHRoaW5rICJkbWFfaGVhcCIgd2lsbCBiZSBjb25mdXNpbmcgbGlrZQpkbWFfYnVm IGlzIGJlY2F1c2UgaXQgaXNuJ3QKcmVsYXRlZCB0byBETUEgZW5naW5lLgpJIHdvdWxkIGxpa2Ug dG8gc2VlIGhvdyB0aGlzIGNvdWxkIGJlIHVzZWQgd2l0aCBleGl0aW5nIGFsbG9jYXRvciBsaWtl CkNNQSBvciBnZW5hbGxvYy4KCkJlbmphbWluCgo+Cj4gIGRyaXZlcnMvZG1hLWJ1Zi9LY29uZmln ICAgICAgIHwgIDEyICsrCj4gIGRyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZSAgICAgIHwgICAxICsK PiAgZHJpdmVycy9kbWEtYnVmL2RtYS1oZWFwLmMgICAgfCAyNjggKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKwo+ICBpbmNsdWRlL2xpbnV4L2RtYS1oZWFwLmggICAgICB8ICA1NyAr KysrKysrKwo+ICBpbmNsdWRlL3VhcGkvbGludXgvZG1hLWhlYXAuaCB8ICA1NCArKysrKysrCj4g IDUgZmlsZXMgY2hhbmdlZCwgMzkyIGluc2VydGlvbnMoKykKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZG1hLWJ1Zi9kbWEtaGVhcC5jCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRl L2xpbnV4L2RtYS1oZWFwLmgKPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvdWFwaS9saW51 eC9kbWEtaGVhcC5oCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL0tjb25maWcgYi9k cml2ZXJzL2RtYS1idWYvS2NvbmZpZwo+IGluZGV4IDJlNWEwZmFhMmNiMS4uMzBiMGQ3YzgzOTQ1 IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9LY29uZmlnCj4gKysrIGIvZHJpdmVycy9k bWEtYnVmL0tjb25maWcKPiBAQCAtMzksNCArMzksMTYgQEAgY29uZmlnIFVETUFCVUYKPiAgICAg ICAgICAgQSBkcml2ZXIgdG8gbGV0IHVzZXJzcGFjZSB0dXJuIG1lbWZkIHJlZ2lvbnMgaW50byBk bWEtYnVmcy4KPiAgICAgICAgICAgUWVtdSBjYW4gdXNlIHRoaXMgdG8gY3JlYXRlIGhvc3QgZG1h YnVmcyBmb3IgZ3Vlc3QgZnJhbWVidWZmZXJzLgo+Cj4gK21lbnVjb25maWcgRE1BQlVGX0hFQVBT Cj4gKyAgICAgICBib29sICJETUEtQlVGIFVzZXJsYW5kIE1lbW9yeSBIZWFwcyIKPiArICAgICAg IGRlcGVuZHMgb24gSEFTX0RNQSAmJiBNTVUKCldoeSBkbyB5b3UgcHV0IE1NVSBkZXBlbmRlbmN5 ID8KCj4gKyAgICAgICBzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1IKCk1heWJlIEkgaGF2ZSBtaXNz IGl0IGJ1dCBJIGRvbid0IHNlZSB0aGUgbmVlZCB0byBzZWxlY3QgR0VORVJJQ19BTExPQ0FUT1IK Cj4gKyAgICAgICBzZWxlY3QgRE1BX1NIQVJFRF9CVUZGRVIKPiArICAgICAgIGhlbHAKPiArICAg ICAgICAgQ2hvb3NlIHRoaXMgb3B0aW9uIHRvIGVuYWJsZSB0aGUgRE1BLUJVRiB1c2VybGFuZCBt ZW1vcnkgaGVhcHMsCj4gKyAgICAgICAgIHRoaXMgYWxsb3dzIHVzZXJzcGFjZSB0byBhbGxvY2F0 ZSBkbWEtYnVmcyB0aGF0IGNhbiBiZSBzaGFyZWQgYmV0d2Vlbgo+ICsgICAgICAgICBkcml2ZXJz Lgo+ICsKPiArc291cmNlICJkcml2ZXJzL2RtYS1idWYvaGVhcHMvS2NvbmZpZyIKPiArCj4gIGVu ZG1lbnUKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlIGIvZHJpdmVycy9k bWEtYnVmL01ha2VmaWxlCj4gaW5kZXggMDkxM2E2Y2NhYjVhLi5iMDMzMmYxNDM0MTMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCj4gKysrIGIvZHJpdmVycy9kbWEtYnVm L01ha2VmaWxlCj4gQEAgLTEsNCArMSw1IEBACj4gIG9iai15IDo9IGRtYS1idWYubyBkbWEtZmVu Y2UubyBkbWEtZmVuY2UtYXJyYXkubyByZXNlcnZhdGlvbi5vIHNlcW5vLWZlbmNlLm8KPiArb2Jq LSQoQ09ORklHX0RNQUJVRl9IRUFQUykgICAgICs9IGRtYS1oZWFwLm8KPiAgb2JqLSQoQ09ORklH X1NZTkNfRklMRSkgICAgICAgICAgICAgICAgKz0gc3luY19maWxlLm8KPiAgb2JqLSQoQ09ORklH X1NXX1NZTkMpICAgICAgICAgICs9IHN3X3N5bmMubyBzeW5jX2RlYnVnLm8KPiAgb2JqLSQoQ09O RklHX1VETUFCVUYpICAgICAgICAgICs9IHVkbWFidWYubwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2RtYS1idWYvZG1hLWhlYXAuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtaGVhcC5jCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMDAwMDAuLjcyZWQyMjVmYTg5Mgo+IC0tLSAv ZGV2L251bGwKPiArKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWhlYXAuYwo+IEBAIC0wLDAgKzEs MjY4IEBACj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4gKy8qCj4gKyAq IEZyYW1ld29yayBmb3IgdXNlcnNwYWNlIERNQS1CVUYgYWxsb2NhdGlvbnMKPiArICoKPiArICog Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTkg TGluYXJvIEx0ZC4KPiArICovCj4gKwo+ICsjaW5jbHVkZSA8bGludXgvY2Rldi5oPgo+ICsjaW5j bHVkZSA8bGludXgvZGVidWdmcy5oPgo+ICsjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNp bmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9lcnIuaD4KPiArI2lu Y2x1ZGUgPGxpbnV4L2lkci5oPgo+ICsjaW5jbHVkZSA8bGludXgvbGlzdC5oPgo+ICsjaW5jbHVk ZSA8bGludXgvc2xhYi5oPgo+ICsjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPgo+ICsKPiArI2lu Y2x1ZGUgPGxpbnV4L2RtYS1oZWFwLmg+Cj4gKyNpbmNsdWRlIDx1YXBpL2xpbnV4L2RtYS1oZWFw Lmg+Cj4gKwo+ICsjZGVmaW5lIERFVk5BTUUgImRtYV9oZWFwIgo+ICsKPiArI2RlZmluZSBOVU1f SEVBUF9NSU5PUlMgMTI4Cj4gK3N0YXRpYyBERUZJTkVfSURSKGRtYV9oZWFwX2lkcik7Cj4gK3N0 YXRpYyBERUZJTkVfTVVURVgobWlub3JfbG9jayk7IC8qIFByb3RlY3QgaWRyIGFjY2Vzc2VzICov Cj4gKwo+ICtkZXZfdCBkbWFfaGVhcF9kZXZ0Owo+ICtzdHJ1Y3QgY2xhc3MgKmRtYV9oZWFwX2Ns YXNzOwo+ICtzdHJ1Y3QgbGlzdF9oZWFkIGRtYV9oZWFwX2xpc3Q7Cj4gK3N0cnVjdCBkZW50cnkg KmRtYV9oZWFwX2RlYnVnX3Jvb3Q7Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGRtYV9oZWFwIC0g cmVwcmVzZW50cyBhIGRtYWJ1ZiBoZWFwIGluIHRoZSBzeXN0ZW0KPiArICogQG5hbWU6ICAgICAg ICAgICAgICB1c2VkIGZvciBkZWJ1Z2dpbmcvZGV2aWNlLW5vZGUgbmFtZQo+ICsgKiBAb3BzOiAg ICAgICAgICAgICAgIG9wcyBzdHJ1Y3QgZm9yIHRoaXMgaGVhcAo+ICsgKiBAbWlub3IgICAgICAg ICAgICAgIG1pbm9yIG51bWJlciBvZiB0aGlzIGhlYXAgZGV2aWNlCj4gKyAqIEBoZWFwX2RldnQg ICAgICAgICAgaGVhcCBkZXZpY2Ugbm9kZQo+ICsgKiBAaGVhcF9jZGV2ICAgICAgICAgIGhlYXAg Y2hhciBkZXZpY2UKPiArICogQG51bV9vZl9idWZmZXJzICAgICB0aGUgbnVtYmVyIG9mIGN1cnJl bnRseSBhbGxvY2F0ZWQgYnVmZmVycwo+ICsgKiBAbnVtX29mX2FsbG9jX2J5dGVzIHRoZSBudW1i ZXIgb2YgYWxsb2NhdGVkIGJ5dGVzCj4gKyAqIEBhbGxvY19ieXRlc193bSAgICAgdGhlIG51bWJl ciBvZiBhbGxvY2F0ZWQgYnl0ZXMgd2F0ZXJtYXJrCj4gKyAqIEBzdGF0X2xvY2sgICAgICAgICAg bG9jayBmb3IgaGVhcCBzdGF0aXN0aWNzCj4gKyAqCj4gKyAqIFJlcHJlc2VudHMgYSBoZWFwIG9m IG1lbW9yeSBmcm9tIHdoaWNoIGJ1ZmZlcnMgY2FuIGJlIG1hZGUuCj4gKyAqLwo+ICtzdHJ1Y3Qg ZG1hX2hlYXAgewo+ICsgICAgICAgY29uc3QgY2hhciAqbmFtZTsKPiArICAgICAgIHN0cnVjdCBk bWFfaGVhcF9vcHMgKm9wczsKPiArICAgICAgIHVuc2lnbmVkIGludCBtaW5vcjsKPiArICAgICAg IGRldl90IGhlYXBfZGV2dDsKPiArICAgICAgIHN0cnVjdCBjZGV2IGhlYXBfY2RldjsKPiArCj4g KyAgICAgICAvKiBoZWFwIHN0YXRpc3RpY3MgKi8KPiArICAgICAgIHU2NCBudW1fb2ZfYnVmZmVy czsKPiArICAgICAgIHU2NCBudW1fb2ZfYWxsb2NfYnl0ZXM7Cj4gKyAgICAgICB1NjQgYWxsb2Nf Ynl0ZXNfd207Cj4gKyAgICAgICBzcGlubG9ja190IHN0YXRfbG9jazsKPiArfTsKPiArCj4gKy8q Cj4gKyAqIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBieSB0aGUgaGVhcCBleHBvcnRlciB3aGVuIGEg YnVmZmVycyBkbWEtYnVmCj4gKyAqIGhhbmRsZSBpcyByZWxlYXNlZCBzbyB0aGUgY29yZSBjYW4g dXBkYXRlIHRoZSBzdGF0cyBhbmQgcmVsZWFzZSB0aGUKPiArICogYnVmZmVyIGhhbmRsZSBtZW1v cnkuCj4gKyAqCj4gKyAqIE9yIHdlIGNvdWxkIGZpbmQgYSB3YXkgdG8gaG9vayBpbnRvIHRoZSBm ZCBvciBzdHJ1Y3QgZG1hX2J1ZiBpdHNlbGY/CgpJZiB5b3UgcmVtb3ZlIHN0YXRzIGZyb20geW91 ciBjb2RlIHlvdSB3aWxsIG5vdCBuZWVkIGRtYV9oZWFwX2J1ZmZlciBzdHJ1Y3R1cmUKYW5kIHRo aXMgZnVuY3Rpb24gd2lsbCBhbHNvIGJlY2F1c2UgdXNlbGVzcy4KCj4gKyAqLwo+ICt2b2lkIGRt YV9oZWFwX2J1ZmZlcl9mcmVlKHN0cnVjdCBkbWFfaGVhcF9idWZmZXIgKmJ1ZmZlcikKPiArewo+ ICsgICAgICAgc3Bpbl9sb2NrKCZidWZmZXItPmhlYXAtPnN0YXRfbG9jayk7Cj4gKyAgICAgICBi dWZmZXItPmhlYXAtPm51bV9vZl9idWZmZXJzLS07Cj4gKyAgICAgICBidWZmZXItPmhlYXAtPm51 bV9vZl9hbGxvY19ieXRlcyAtPSBidWZmZXItPnNpemU7Cj4gKyAgICAgICBzcGluX3VubG9jaygm YnVmZmVyLT5oZWFwLT5zdGF0X2xvY2spOwo+ICsKPiArICAgICAgIGtmcmVlKGJ1ZmZlcik7Cj4g K30KPiArCj4gK3N0YXRpYyBpbnQgZG1hX2hlYXBfYnVmZmVyX2FsbG9jKHN0cnVjdCBkbWFfaGVh cCAqaGVhcCwgc2l6ZV90IGxlbiwgdW5zaWduZWQgaW50IGZsYWdzKQo+ICt7Cj4gKyAgICAgICBz dHJ1Y3QgZG1hX2hlYXBfYnVmZmVyICpidWZmZXI7Cj4gKyAgICAgICBpbnQgZmQsIHJldDsKPiAr Cj4gKyAgICAgICBidWZmZXIgPSBremFsbG9jKHNpemVvZigqYnVmZmVyKSwgR0ZQX0tFUk5FTCk7 Cj4gKyAgICAgICBpZiAoIWJ1ZmZlcikKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07 Cj4gKwo+ICsgICAgICAgYnVmZmVyLT5oZWFwID0gaGVhcDsKPiArICAgICAgIHJldCA9IGhlYXAt Pm9wcy0+YWxsb2NhdGUoaGVhcCwgYnVmZmVyLCBsZW4sIGZsYWdzKTsKPiArICAgICAgIGlmIChy ZXQpIHsKPiArICAgICAgICAgICAgICAga2ZyZWUoYnVmZmVyKTsKPiArICAgICAgICAgICAgICAg cmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAgICAgICBmZCA9IGRtYV9idWZfZmQoYnVm ZmVyLT5kbWFidWYsIE9fQ0xPRVhFQyk7Cj4gKyAgICAgICBpZiAoZmQgPCAwKSB7Cj4gKyAgICAg ICAgICAgICAgIGRtYV9idWZfcHV0KGJ1ZmZlci0+ZG1hYnVmKTsKa2ZyZWUoYnVmZmVyKTsKPiAr ICAgICAgICAgICAgICAgcmV0dXJuIGZkOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIHNwaW5f bG9jaygmaGVhcC0+c3RhdF9sb2NrKTsKPiArICAgICAgIGhlYXAtPm51bV9vZl9idWZmZXJzKys7 Cj4gKyAgICAgICBoZWFwLT5udW1fb2ZfYWxsb2NfYnl0ZXMgKz0gYnVmZmVyLT5zaXplOwo+ICsg ICAgICAgaWYgKGhlYXAtPm51bV9vZl9hbGxvY19ieXRlcyA+IGhlYXAtPmFsbG9jX2J5dGVzX3dt KQo+ICsgICAgICAgICAgICAgICBoZWFwLT5hbGxvY19ieXRlc193bSA9IGhlYXAtPm51bV9vZl9h bGxvY19ieXRlczsKPiArICAgICAgIHNwaW5fdW5sb2NrKCZoZWFwLT5zdGF0X2xvY2spOwo+ICsK PiArICAgICAgIHJldHVybiBmZDsKPiArfQo+ICsKPiArc3RhdGljIGludCBkbWFfaGVhcF9vcGVu KHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQo+ICt7Cj4gKyAgICAgICBz dHJ1Y3QgZG1hX2hlYXAgKmhlYXA7Cj4gKwo+ICsgICAgICAgbXV0ZXhfbG9jaygmbWlub3JfbG9j ayk7Cj4gKyAgICAgICBoZWFwID0gaWRyX2ZpbmQoJmRtYV9oZWFwX2lkciwgaW1pbm9yKGlub2Rl KSk7Cj4gKyAgICAgICBtdXRleF91bmxvY2soJm1pbm9yX2xvY2spOwo+ICsgICAgICAgaWYgKCFo ZWFwKSB7Cj4gKyAgICAgICAgICAgICAgIHByX2VycigiZG1hX2hlYXA6IG1pbm9yICVkIHVua25v d24uXG4iLCBpbWlub3IoaW5vZGUpKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9ERVY7 Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgLyogaW5zdGFuY2UgZGF0YSBhcyBjb250ZXh0ICov Cj4gKyAgICAgICBmaWxwLT5wcml2YXRlX2RhdGEgPSBoZWFwOwo+ICsgICAgICAgbm9uc2Vla2Fi bGVfb3Blbihpbm9kZSwgZmlscCk7Cj4gKwo+ICsgICAgICAgcmV0dXJuIDA7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgZG1hX2hlYXBfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3Qg ZmlsZSAqZmlscCkKPiArewo+ICsgICAgICAgZmlscC0+cHJpdmF0ZV9kYXRhID0gTlVMTDsKPiAr Cj4gKyAgICAgICByZXR1cm4gMDsKPiArfQo+ICsKPiArc3RhdGljIGxvbmcgZG1hX2hlYXBfaW9j dGwoc3RydWN0IGZpbGUgKmZpbHAsIHVuc2lnbmVkIGludCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJn KQo+ICt7Cj4gKyAgICAgICBzd2l0Y2ggKGNtZCkgewo+ICsgICAgICAgY2FzZSBETUFfSEVBUF9J T0NfQUxMT0M6Cj4gKyAgICAgICB7Cj4gKyAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfaGVhcF9h bGxvY2F0aW9uX2RhdGEgaGVhcF9hbGxvY2F0aW9uOwo+ICsgICAgICAgICAgICAgICBzdHJ1Y3Qg ZG1hX2hlYXAgKmhlYXAgPSBmaWxwLT5wcml2YXRlX2RhdGE7Cj4gKyAgICAgICAgICAgICAgIGlu dCBmZDsKPiArCj4gKyAgICAgICAgICAgICAgIGlmIChjb3B5X2Zyb21fdXNlcigmaGVhcF9hbGxv Y2F0aW9uLCAodm9pZCBfX3VzZXIgKilhcmcsIF9JT0NfU0laRShjbWQpKSkKPiArICAgICAgICAg ICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiArCj4gKyAgICAgICAgICAgICAgIGlmICho ZWFwX2FsbG9jYXRpb24ucmVzZXJ2ZWQwIHx8Cj4gKyAgICAgICAgICAgICAgICAgICBoZWFwX2Fs bG9jYXRpb24ucmVzZXJ2ZWQxKSB7Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgcHJfd2Fybl9v bmNlKCJkbWFfaGVhcDogaW9jdGwgZGF0YSBub3QgdmFsaWRcbiIpOwo+ICsgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAgICAgICAgICB9Cj4gKwo+ICsgICAg ICAgICAgICAgICBmZCA9IGRtYV9oZWFwX2J1ZmZlcl9hbGxvYyhoZWFwLCBoZWFwX2FsbG9jYXRp b24ubGVuLCBoZWFwX2FsbG9jYXRpb24uZmxhZ3MpOwo+ICsgICAgICAgICAgICAgICBpZiAoZmQg PCAwKQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmZDsKPiArCj4gKyAgICAgICAg ICAgICAgIGhlYXBfYWxsb2NhdGlvbi5mZCA9IGZkOwo+ICsKPiArICAgICAgICAgICAgICAgaWYg KGNvcHlfdG9fdXNlcigodm9pZCBfX3VzZXIgKilhcmcsICZoZWFwX2FsbG9jYXRpb24sIF9JT0Nf U0laRShjbWQpKSkKPiArICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVGQVVMVDsKPiAr Cj4gKyAgICAgICAgICAgICAgIGJyZWFrOwo+ICsgICAgICAgfQo+ICsgICAgICAgZGVmYXVsdDoK PiArICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9UVFk7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAg ICAgcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRp b25zIGRtYV9oZWFwX2ZvcHMgPSB7Cj4gKyAgICAgICAub3duZXIgICAgICAgICAgPSBUSElTX01P RFVMRSwKPiArICAgICAgIC5vcGVuICAgICAgICAgICA9IGRtYV9oZWFwX29wZW4sCj4gKyAgICAg ICAucmVsZWFzZSAgICAgICAgPSBkbWFfaGVhcF9yZWxlYXNlLAo+ICsgICAgICAgLnVubG9ja2Vk X2lvY3RsID0gZG1hX2hlYXBfaW9jdGwsCj4gKyNpZmRlZiBDT05GSUdfQ09NUEFUCj4gKyAgICAg ICAuY29tcGF0X2lvY3RsICAgPSBkbWFfaGVhcF9pb2N0bCwKPiArI2VuZGlmCj4gK307Cj4gKwo+ ICtpbnQgZG1hX2hlYXBfYWRkKHN0cnVjdCBkbWFfaGVhcF9pbmZvICpoZWFwX2luZm8pCj4gK3sK PiArICAgICAgIHN0cnVjdCBkbWFfaGVhcCAqaGVhcDsKPiArICAgICAgIHN0cnVjdCBkZXZpY2Ug KmRldl9yZXQ7Cj4gKyAgICAgICBzdHJ1Y3QgZGVudHJ5ICpoZWFwX3Jvb3Q7Cj4gKyAgICAgICBp bnQgcmV0Owo+ICsKPiArICAgICAgIGlmICghaGVhcF9pbmZvLT5uYW1lIHx8ICFzdHJjbXAoaGVh cF9pbmZvLT5uYW1lLCAiIikpIHsKPiArICAgICAgICAgICAgICAgcHJfZXJyKCJkbWFfaGVhcDog Q2Fubm90IGFkZCBoZWFwIHdpdGhvdXQgYSBuYW1lXG4iKTsKPiArICAgICAgICAgICAgICAgcmV0 dXJuIC1FSU5WQUw7Cj4gKyAgICAgICB9Cj4gKwo+ICsgICAgICAgaWYgKCFoZWFwX2luZm8tPm9w cyB8fCAhaGVhcF9pbmZvLT5vcHMtPmFsbG9jYXRlKSB7Cj4gKyAgICAgICAgICAgICAgIHByX2Vy cigiZG1hX2hlYXA6IENhbm5vdCBhZGQgaGVhcCB3aXRoIGludmFsaWQgb3BzIHN0cnVjdFxuIik7 Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwo+ICsgICAgICAgfQo+ICsKPiArICAg ICAgIGhlYXAgPSBremFsbG9jKHNpemVvZigqaGVhcCksIEdGUF9LRVJORUwpOwo+ICsgICAgICAg aWYgKCFoZWFwKQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPiArCj4gKyAgICAg ICBoZWFwLT5uYW1lID0gaGVhcF9pbmZvLT5uYW1lOwo+ICsgICAgICAgbWVtY3B5KGhlYXAtPm9w cywgaGVhcF9pbmZvLT5vcHMsIHNpemVvZigqaGVhcC0+b3BzKSk7Cj4gKwo+ICsgICAgICAgLyog RmluZCB1bnVzZWQgbWlub3IgbnVtYmVyICovCj4gKyAgICAgICBtdXRleF9sb2NrKCZtaW5vcl9s b2NrKTsKPiArICAgICAgIHJldCA9IGlkcl9hbGxvYygmZG1hX2hlYXBfaWRyLCBoZWFwLCAwLCBO VU1fSEVBUF9NSU5PUlMsIEdGUF9LRVJORUwpOwo+ICsgICAgICAgbXV0ZXhfdW5sb2NrKCZtaW5v cl9sb2NrKTsKPiArICAgICAgIGlmIChyZXQgPCAwKSB7Cj4gKyAgICAgICAgICAgICAgIHByX2Vy cigiZG1hX2hlYXA6IFVuYWJsZSB0byBnZXQgbWlub3IgbnVtYmVyIGZvciBoZWFwXG4iKTsKa2Zy ZWUoaGVhcCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7Cj4gKyAgICAgICB9Cj4gKyAg ICAgICBoZWFwLT5taW5vciA9IHJldDsKPiArCj4gKyAgICAgICAvKiBDcmVhdGUgZGV2aWNlICov Cj4gKyAgICAgICBoZWFwLT5oZWFwX2RldnQgPSBNS0RFVihNQUpPUihkbWFfaGVhcF9kZXZ0KSwg aGVhcC0+bWlub3IpOwo+ICsgICAgICAgZGV2X3JldCA9IGRldmljZV9jcmVhdGUoZG1hX2hlYXBf Y2xhc3MsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaGVhcC0+aGVhcF9kZXZ0LAo+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTlVMTCwKPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGhlYXAtPm5hbWUpOwo+ICsgICAgICAgaWYgKElTX0VSUihkZXZfcmV0KSkgewo+ICsgICAgICAg ICAgICAgICBwcl9lcnIoImRtYV9oZWFwOiBVbmFibGUgdG8gY3JlYXRlIGNoYXIgZGV2aWNlXG4i KTsKa2ZyZWUoaGVhcCk7Cj4gKyAgICAgICAgICAgICAgIHJldHVybiBQVFJfRVJSKGRldl9yZXQp Owo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIC8qIEFkZCBkZXZpY2UgKi8KPiArICAgICAgIGNk ZXZfaW5pdCgmaGVhcC0+aGVhcF9jZGV2LCAmZG1hX2hlYXBfZm9wcyk7Cj4gKyAgICAgICByZXQg PSBjZGV2X2FkZCgmaGVhcC0+aGVhcF9jZGV2LCBkbWFfaGVhcF9kZXZ0LCBOVU1fSEVBUF9NSU5P UlMpOwo+ICsgICAgICAgaWYgKHJldCA8IDApIHsKPiArICAgICAgICAgICAgICAgZGV2aWNlX2Rl c3Ryb3koZG1hX2hlYXBfY2xhc3MsIGhlYXAtPmhlYXBfZGV2dCk7Cj4gKyAgICAgICAgICAgICAg IHByX2VycigiZG1hX2hlYXA6IFVuYWJsZSB0byBhZGQgY2hhciBkZXZpY2VcbiIpOwprZnJlZSho ZWFwKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIHJldDsKPiArICAgICAgIH0KPiArCj4gKyAg ICAgICBoZWFwLT5udW1fb2ZfYnVmZmVycyA9IDA7Cj4gKyAgICAgICBoZWFwLT5udW1fb2ZfYWxs b2NfYnl0ZXMgPSAwOwo+ICsgICAgICAgaGVhcC0+YWxsb2NfYnl0ZXNfd20gPSAwOwo+ICsgICAg ICAgc3Bpbl9sb2NrX2luaXQoJmhlYXAtPnN0YXRfbG9jayk7Cj4gKyAgICAgICBoZWFwX3Jvb3Qg PSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoaGVhcC0+bmFtZSwgZG1hX2hlYXBfZGVidWdfcm9vdCk7Cj4g KyAgICAgICBkZWJ1Z2ZzX2NyZWF0ZV91NjQoIm51bV9vZl9idWZmZXJzIiwgMDQ0NCwgaGVhcF9y b290LCAmaGVhcC0+bnVtX29mX2J1ZmZlcnMpOwo+ICsgICAgICAgZGVidWdmc19jcmVhdGVfdTY0 KCJudW1fb2ZfYWxsb2NfYnl0ZXMiLCAwNDQ0LCBoZWFwX3Jvb3QsICZoZWFwLT5udW1fb2ZfYWxs b2NfYnl0ZXMpOwo+ICsgICAgICAgZGVidWdmc19jcmVhdGVfdTY0KCJhbGxvY19ieXRlc193bSIs IDA0NDQsIGhlYXBfcm9vdCwgJmhlYXAtPmFsbG9jX2J5dGVzX3dtKTsKPiArCj4gKyAgICAgICBy ZXR1cm4gMDsKPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRtYV9oZWFwX2FkZCk7Cj4gKwo+ICtzdGF0 aWMgaW50IGRtYV9oZWFwX2luaXQodm9pZCkKPiArewo+ICsgICAgICAgaW50IHJldDsKPiArCj4g KyAgICAgICByZXQgPSBhbGxvY19jaHJkZXZfcmVnaW9uKCZkbWFfaGVhcF9kZXZ0LCAwLCBOVU1f SEVBUF9NSU5PUlMsIERFVk5BTUUpOwo+ICsgICAgICAgaWYgKHJldCkKPiArICAgICAgICAgICAg ICAgcmV0dXJuIHJldDsKPiArCj4gKyAgICAgICBkbWFfaGVhcF9jbGFzcyA9IGNsYXNzX2NyZWF0 ZShUSElTX01PRFVMRSwgREVWTkFNRSk7Cj4gKyAgICAgICBpZiAoSVNfRVJSKGRtYV9oZWFwX2Ns YXNzKSkgewo+ICsgICAgICAgICAgICAgICB1bnJlZ2lzdGVyX2NocmRldl9yZWdpb24oZG1hX2hl YXBfZGV2dCwgTlVNX0hFQVBfTUlOT1JTKTsKPiArICAgICAgICAgICAgICAgcmV0dXJuIFBUUl9F UlIoZG1hX2hlYXBfY2xhc3MpOwo+ICsgICAgICAgfQo+ICsKPiArICAgICAgIGRtYV9oZWFwX2Rl YnVnX3Jvb3QgPSBkZWJ1Z2ZzX2NyZWF0ZV9kaXIoImRtYV9oZWFwIiwgTlVMTCk7Cj4gKwo+ICsg ICAgICAgcmV0dXJuIDA7Cj4gK30KPiArc3Vic3lzX2luaXRjYWxsKGRtYV9oZWFwX2luaXQpOwo+ IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYS1oZWFwLmggYi9pbmNsdWRlL2xpbnV4L2Rt YS1oZWFwLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAwMDAwMC4uMDll YWIzMTA1MTE4Cj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvbGludXgvZG1hLWhlYXAu aAo+IEBAIC0wLDAgKzEsNTcgQEAKPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjAKPiArLyoKPiArICogRE1BQlVGIEhlYXBzIEFsbG9jYXRpb24gSW5mcmFzdHJ1Y3R1cmUKPiAr ICoKPiArICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSwgSW5jLgo+ICsgKiBDb3B5cmlnaHQg KEMpIDIwMTkgTGluYXJvIEx0ZC4KPiArICovCj4gKwo+ICsjaWZuZGVmIF9ETUFfSEVBUFNfSAo+ ICsjZGVmaW5lIF9ETUFfSEVBUFNfSAo+ICsKPiArI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cj4g Kwo+ICsvKioKPiArICogc3RydWN0IGRtYV9oZWFwX2J1ZmZlciAtIG1ldGFkYXRhIGZvciBhIHBh cnRpY3VsYXIgYnVmZmVyCj4gKyAqIEBoZWFwOiAgICAgICAgICAgICAgYmFjayBwb2ludGVyIHRv IHRoZSBoZWFwIHRoZSBidWZmZXIgY2FtZSBmcm9tCj4gKyAqIEBkbWFidWY6ICAgICAgICAgICAg YmFja2luZyBkbWEtYnVmIGZvciB0aGlzIGJ1ZmZlcgo+ICsgKiBAc2l6ZTogICAgICAgICAgICAg IHNpemUgb2YgdGhlIGJ1ZmZlcgo+ICsgKiBAZmxhZ3M6ICAgICAgICAgICAgIGJ1ZmZlciBzcGVj aWZpYyBmbGFncwo+ICsgKi8KPiArc3RydWN0IGRtYV9oZWFwX2J1ZmZlciB7Cj4gKyAgICAgICBz dHJ1Y3QgZG1hX2hlYXAgKmhlYXA7Cj4gKyAgICAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ ICsgICAgICAgc2l6ZV90IHNpemU7Cj4gKyAgICAgICB1bnNpZ25lZCBsb25nIGZsYWdzOwo+ICt9 Owo+ICsKPiArLyoqCj4gKyAqIHN0cnVjdCBkbWFfaGVhcF9vcHMgLSBvcHMgdG8gb3BlcmF0ZSBv biBhIGdpdmVuIGhlYXAKPiArICogQGFsbG9jYXRlOiAgICAgICAgICBhbGxvY2F0ZSBidWZmZXIK PiArICoKPiArICogYWxsb2NhdGUgcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIC1lcnJubyBvbiBlcnJv ci4KPiArICovCj4gK3N0cnVjdCBkbWFfaGVhcF9vcHMgewo+ICsgICAgICAgaW50ICgqYWxsb2Nh dGUpKHN0cnVjdCBkbWFfaGVhcCAqaGVhcCwKPiArICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgZG1hX2hlYXBfYnVmZmVyICpidWZmZXIsCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5z aWduZWQgbG9uZyBsZW4sCj4gKyAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBm bGFncyk7Cj4gK307Cj4gKwo+ICsvKioKPiArICogc3RydWN0IGRtYV9oZWFwX2luZm8gLSBob2xk cyBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gY3JlYXRlIGEgRE1BLWhlYXAKPiArICogQG9wczogICAg ICAgICAgICAgICBvcHMgc3RydWN0IGZvciB0aGlzIGhlYXAKPiArICogQG5hbWU6ICAgICAgICAg ICAgICB1c2VkIGZvciBkZWJ1Z2dpbmcvZGV2aWNlLW5vZGUgbmFtZQo+ICsgKi8KPiArc3RydWN0 IGRtYV9oZWFwX2luZm8gewo+ICsgICAgICAgY29uc3QgY2hhciAqbmFtZTsKPiArICAgICAgIHN0 cnVjdCBkbWFfaGVhcF9vcHMgKm9wczsKPiArfTsKPiArCj4gKy8qKgo+ICsgKiBkbWFfaGVhcF9h ZGQgLSBhZGRzIGEgaGVhcCB0byBkbWFidWYgaGVhcHMKPiArICogQGhlYXA6ICAgICAgICAgICAg ICB0aGUgaGVhcCB0byBhZGQKPiArICovCj4gK2ludCBkbWFfaGVhcF9hZGQoc3RydWN0IGRtYV9o ZWFwX2luZm8gKmhlYXBfaW5mbyk7Cj4gKwo+ICsjZW5kaWYgLyogX0RNQV9IRUFQU19IICovCj4g ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9kbWEtaGVhcC5oIGIvaW5jbHVkZS91YXBp L2xpbnV4L2RtYS1oZWFwLmgKPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAw MDAwMC4uN2RjYmI5OGUyOWVjCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvdWFwaS9s aW51eC9kbWEtaGVhcC5oCj4gQEAgLTAsMCArMSw1NCBAQAo+ICsvKiBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogR1BMLTIuMCAqLwo+ICsvKgo+ICsgKiBETUFCVUYgSGVhcHMgVXNlcnNwYWNlIEFQ SQo+ICsgKgo+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlLCBJbmMuCj4gKyAqIENvcHly aWdodCAoQykgMjAxOSBMaW5hcm8gTHRkLgo+ICsgKi8KPiArI2lmbmRlZiBfVUFQSV9MSU5VWF9E TUFCVUZfUE9PTF9ICj4gKyNkZWZpbmUgX1VBUElfTElOVVhfRE1BQlVGX1BPT0xfSAo+ICsKPiAr I2luY2x1ZGUgPGxpbnV4L2lvY3RsLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgo+ICsK PiArLyoqCj4gKyAqIERPQzogRE1BQlVGIEhlYXBzIFVzZXJzcGFjZSBBUEkKPiArICoKPiArICov Cj4gKwo+ICsvKgo+ICsgKiBtYXBwaW5ncyBvZiB0aGlzIGJ1ZmZlciBzaG91bGQgYmUgdW4tY2Fj aGVkLCBvdGhlcndpc2UgZG1hYnVmIGhlYXBzIHdpbGwKPiArICogbmVlZCBjYWNoZSBtYWludGVu YW5jZSB1c2luZyBETUFfQlVGX1NZTkNfKiB3aGVuIHRoZSBidWZmZXIgaXMgbWFwcGVkIGZvciBk bWEKPiArICovCj4gKyNkZWZpbmUgRE1BX0hFQVBfRkxBR19DT0hFUkVOVCAxCj4gKwo+ICsvKioK PiArICogc3RydWN0IGRtYV9oZWFwX2FsbG9jYXRpb25fZGF0YSAtIG1ldGFkYXRhIHBhc3NlZCBm cm9tIHVzZXJzcGFjZSBmb3IKPiArICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFsbG9jYXRpb25zCj4gKyAqIEBsZW46ICAgICAgICAgICAgICAgc2l6ZSBvZiB0aGUgYWxs b2NhdGlvbgo+ICsgKiBAZmxhZ3M6ICAgICAgICAgICAgIGZsYWdzIHBhc3NlZCB0byBwb29sCj4g KyAqIEBmZDogICAgICAgICAgICAgICAgICAgICAgICB3aWxsIGJlIHBvcHVsYXRlZCB3aXRoIGEg ZmQgd2hpY2ggcHJvdmRlcyB0aGUKPiArICogICAgICAgICAgICAgICAgICAgICBoYW5kbGUgdG8g dGhlIGFsbG9jYXRlZCBkbWEtYnVmCj4gKyAqCj4gKyAqIFByb3ZpZGVkIGJ5IHVzZXJzcGFjZSBh cyBhbiBhcmd1bWVudCB0byB0aGUgaW9jdGwKPiArICovCj4gK3N0cnVjdCBkbWFfaGVhcF9hbGxv Y2F0aW9uX2RhdGEgewp5b3UgY291bGQgYWRkIGFuIF9fdTY0IHZlcnNpb24gZmllbGQgdGhhdCBj b3VsZCBoZWxwIGlmIEFQSSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZQoKPiArICAgICAgIF9fdTY0IGxl bjsKPiArICAgICAgIF9fdTMyIGZsYWdzOwo+ICsgICAgICAgX191MzIgZmQ7Cj4gKyAgICAgICBf X3UzMiByZXNlcnZlZDA7Cj4gKyAgICAgICBfX3UzMiByZXNlcnZlZDE7Cj4gK307Cj4gKwo+ICsj ZGVmaW5lIERNQV9IRUFQX0lPQ19NQUdJQyAgICAgICAgICAgICAnSCcKPiArCj4gKy8qKgo+ICsg KiBET0M6IERNQV9IRUFQX0lPQ19BTExPQyAtIGFsbG9jYXRlIG1lbW9yeSBmcm9tIHBvb2wKPiAr ICoKPiArICogVGFrZXMgYW4gZG1hX2hlYXBfYWxsb2NhdGlvbl9kYXRhIHN0cnVjdCBhbmQgcmV0 dXJucyBpdCB3aXRoIHRoZSBmZCBmaWVsZAo+ICsgKiBwb3B1bGF0ZWQgd2l0aCB0aGUgZG1hYnVm IGhhbmRsZSBvZiB0aGUgYWxsb2NhdGlvbi4KPiArICovCj4gKyNkZWZpbmUgRE1BX0hFQVBfSU9D X0FMTE9DICAgICBfSU9XUihETUFfSEVBUF9JT0NfTUFHSUMsIDAsIFwKPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfaGVhcF9hbGxvY2F0aW9uX2RhdGEp Cj4gKwo+ICsjZW5kaWYgLyogX1VBUElfTElOVVhfRE1BQlVGX1BPT0xfSCAqLwo+IC0tCj4gMi4x OS4xCj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJp LWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs