From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v6 11/18] media: vsp1: drm: Implement writeback support Date: Wed, 13 Mar 2019 17:56:06 +0200 Message-ID: <20190313155606.GF4722@pendragon.ideasonboard.com> References: <20190313000532.7087-1-laurent.pinchart+renesas@ideasonboard.com> <20190313000532.7087-12-laurent.pinchart+renesas@ideasonboard.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6C5AB894C5 for ; Wed, 13 Mar 2019 15:56:14 +0000 (UTC) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Kieran Bingham Cc: Laurent Pinchart , Liviu Dudau , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, linux-media@vger.kernel.org List-Id: dri-devel@lists.freedesktop.org SGkgS2llcmFuLAoKT24gV2VkLCBNYXIgMTMsIDIwMTkgYXQgMTE6NDI6MzRBTSArMDAwMCwgS2ll cmFuIEJpbmdoYW0gd3JvdGU6Cj4gT24gMTMvMDMvMjAxOSAwMDowNSwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiA+IEV4dGVuZCB0aGUgdnNwMV9kdV9hdG9taWNfZmx1c2goKSBBUEkgd2l0aCB3 cml0ZWJhY2sgc3VwcG9ydCBieSBhZGRpbmcKPiA+IGZvcm1hdCwgcGl0Y2ggYW5kIG1lbW9yeSBh ZGRyZXNzZXMgb2YgdGhlIHdyaXRlYmFjayBmcmFtZWJ1ZmZlci4KPiA+IFdyaXRlYmFjayBjb21w bGV0aW9uIGlzIHJlcG9ydGVkIHRocm91Z2ggdGhlIGV4aXN0aW5nIGZyYW1lIGNvbXBsZXRpb24K PiA+IGNhbGxiYWNrIHdpdGggYSBuZXcgVlNQMV9EVV9TVEFUVVNfV1JJVEVCQUNLIHN0YXR1cyBm bGFnLgo+ID4gCj4gPiBTaWduZWQtb2ZmLWJ5OiBMYXVyZW50IFBpbmNoYXJ0IDxsYXVyZW50LnBp bmNoYXJ0K3JlbmVzYXNAaWRlYXNvbmJvYXJkLmNvbT4KPiA+IC0tLQo+ID4gIGRyaXZlcnMvbWVk aWEvcGxhdGZvcm0vdnNwMS92c3AxX2RsLmMgIHwgMTQgKysrKysrKysrKysrKysKPiA+ICBkcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kbC5oICB8ICAzICsrLQo+ID4gIGRyaXZlcnMv bWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2RybS5jIHwgMjUgKysrKysrKysrKysrKysrKysrKysr KysrLQo+ID4gIGluY2x1ZGUvbWVkaWEvdnNwMS5oICAgICAgICAgICAgICAgICAgIHwgMTUgKysr KysrKysrKysrKysrCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAyIGRl bGV0aW9ucygtKQo+ID4gCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92 c3AxL3ZzcDFfZGwuYyBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3AxX2RsLmMKPiA+ IGluZGV4IGVkN2NkYTQxMzBmMi4uMTA0YjZmNTE0NTM2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuYwo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS92c3AxL3ZzcDFfZGwuYwo+ID4gQEAgLTk1OCw2ICs5NTgsOSBAQCB2b2lkIHZzcDFf ZGxfbGlzdF9jb21taXQoc3RydWN0IHZzcDFfZGxfbGlzdCAqZGwsIHVuc2lnbmVkIGludCBkbF9m bGFncykKPiA+ICAgKgo+ID4gICAqIFRoZSBWU1AxX0RMX0ZSQU1FX0VORF9JTlRFUk5BTCBmbGFn IGluZGljYXRlcyB0aGF0IHRoZSBkaXNwbGF5IGxpc3QgdGhhdCBqdXN0Cj4gPiAgICogYmVjYW1l IGFjdGl2ZSBoYWQgYmVlbiBxdWV1ZWQgd2l0aCB0aGUgaW50ZXJuYWwgbm90aWZpY2F0aW9uIGZs YWcuCj4gPiArICoKPiA+ICsgKiBUaGUgVlNQMV9ETF9GUkFNRV9FTkRfV1JJVEVCQUNLIGZsYWcg aW5kaWNhdGVzIHRoYXQgdGhlIHByZXZpb3VzbHkgYWN0aXZlCj4gPiArICogZGlzcGxheSBsaXN0 IGhhZCBiZWVuIHF1ZXVlZCB3aXRoIHRoZSB3cml0ZWJhY2sgZmxhZy4KPiAKPiBIb3cgZG9lcyB0 aGlzIGludGVyYWN0IHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIHRoZSB3cml0ZWJhY2sgYmVpbmcK PiBkaXNhYmxlZCBieSB0aGUgV1BGIGluIHRoZSBldmVudCBvZiBpdCBmYWlsaW5nIHRvIGdldCBh IERMLgo+IAo+IEl0J3Mgb25seSBhIHNtYWxsIGNvcm5lciBjYXNlLCBidXQgd2lsbCB0aGUgJ3dy aXRlYmFjaycgcmVwb3J0IGJhY2sgYXMKPiB0aG91Z2ggaXQgc3VjY2VlZGVkPyAod2l0aG91dCB3 cml0aW5nIHRvIG1lbW9yeSwgYW5kIHRodXMgZ2l2aW5nIGFuCj4gdW5tb2RpZmllZCBidWZmZXIg YmFjaz8pCgpXcnRlYmFjayBjb21wbGV0aW9uIHdpbGwgbmV2ZXIgYmUgcmVwb3J0ZWQgaW4gdGhh dCBjYXNlLiBUaGlzIHNob3VsZG4ndApoYXBwZW4gYXMgd2Ugc2hvdWxkIG5ldmVyIGZhaWwgdG8g Z2V0IGEgZGlzcGxheSBsaXN0LiBEbyB5b3UgdGhpbmsgaXQKd291bGQgYmUgYmV0dGVyIHRvIGZh a2UgY29tcGxldGlvbiA/Cgo+ID4gICAqLwo+ID4gIHVuc2lnbmVkIGludCB2c3AxX2RsbV9pcnFf ZnJhbWVfZW5kKHN0cnVjdCB2c3AxX2RsX21hbmFnZXIgKmRsbSkKPiA+ICB7Cj4gPiBAQCAtOTk1 LDYgKzk5OCwxNyBAQCB1bnNpZ25lZCBpbnQgdnNwMV9kbG1faXJxX2ZyYW1lX2VuZChzdHJ1Y3Qg dnNwMV9kbF9tYW5hZ2VyICpkbG0pCj4gPiAgCWlmIChzdGF0dXMgJiBWSTZfU1RBVFVTX0ZMRF9T VEQoZGxtLT5pbmRleCkpCj4gPiAgCQlnb3RvIGRvbmU7Cj4gPiAgCj4gPiArCS8qCj4gPiArCSAq IElmIHRoZSBhY3RpdmUgZGlzcGxheSBsaXN0IGhhcyB0aGUgd3JpdGViYWNrIGZsYWcgc2V0LCB0 aGUgZnJhbWUKPiA+ICsJICogY29tcGxldGlvbiBtYXJrcyB0aGUgZW5kIG9mIHRoZSB3cml0ZWJh Y2sgY2FwdHVyZS4gUmV0dXJuIHRoZQo+ID4gKwkgKiBWU1AxX0RMX0ZSQU1FX0VORF9XUklURUJB Q0sgZmxhZyBhbmQgcmVzZXQgdGhlIGRpc3BsYXkgbGlzdCdzCj4gPiArCSAqIHdyaXRlYmFjayBm bGFnLgo+ID4gKwkgKi8KPiA+ICsJaWYgKGRsbS0+YWN0aXZlICYmIChkbG0tPmFjdGl2ZS0+Zmxh Z3MgJiBWU1AxX0RMX0ZSQU1FX0VORF9XUklURUJBQ0spKSB7Cj4gPiArCQlmbGFncyB8PSBWU1Ax X0RMX0ZSQU1FX0VORF9XUklURUJBQ0s7Cj4gPiArCQlkbG0tPmFjdGl2ZS0+ZmxhZ3MgJj0gflZT UDFfRExfRlJBTUVfRU5EX1dSSVRFQkFDSzsKPiA+ICsJfQo+ID4gKwo+ID4gIAkvKgo+ID4gIAkg KiBUaGUgZGV2aWNlIHN0YXJ0cyBwcm9jZXNzaW5nIHRoZSBxdWV1ZWQgZGlzcGxheSBsaXN0IHJp Z2h0IGFmdGVyIHRoZQo+ID4gIAkgKiBmcmFtZSBlbmQgaW50ZXJydXB0LiBUaGUgZGlzcGxheSBs aXN0IHRodXMgYmVjb21lcyBhY3RpdmUuCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9w bGF0Zm9ybS92c3AxL3ZzcDFfZGwuaCBiL2RyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdnNwMS92c3Ax X2RsLmgKPiA+IGluZGV4IGUwZmRiMTQ1ZTZlZC4uNGQ3YmNmZGM5YmQ5IDEwMDY0NAo+ID4gLS0t IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuaAo+ID4gKysrIGIvZHJpdmVy cy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZGwuaAo+ID4gQEAgLTE4LDcgKzE4LDggQEAgc3Ry dWN0IHZzcDFfZGxfbGlzdDsKPiA+ICBzdHJ1Y3QgdnNwMV9kbF9tYW5hZ2VyOwo+ID4gIAo+ID4g ICNkZWZpbmUgVlNQMV9ETF9GUkFNRV9FTkRfQ09NUExFVEVECQlCSVQoMCkKPiA+IC0jZGVmaW5l IFZTUDFfRExfRlJBTUVfRU5EX0lOVEVSTkFMCQlCSVQoMSkKPiA+ICsjZGVmaW5lIFZTUDFfRExf RlJBTUVfRU5EX1dSSVRFQkFDSwkJQklUKDEpCj4gCj4gU28gYmVsb3cgQklUKDIpIChjb2RlIGFi b3ZlKSB0aGUgZmxhZ3MgbWF0Y2ggdGhlIGV4dGVybmFsbHkgZXhwb3NlZAo+IGJpdGZpZWxkIGZv ciB0aGUgVlNQMV9EVV9TVEFUVVNfCj4gCj4gV2hpbGUgYWJvdmUgKGNvZGUgYmVsb3cpLCBhcmUg J3ByaXZhdGUnIGJpdGZpZWxkcy4KPiAKPiBTaG91bGQgdGhpcyByZXF1aXJlbWVudCBiZSBkb2N1 bWVudGVkIGhlcmUgc29tZWhvdz8gZXNwZWNpYWxseSB0aGUKPiBtYXBwaW5nIG9mIEZSQU1FX0VO RF97Q09NUExFVEVELFdSSVRFQkFDS30gdG8KPiBEVV9TVEFUVVNfe0NPTVBMRVRFRCxXUklURUJB Q0t9LgoKSSd2ZSBhZGRlZCBhIGNvbW1lbnQgaGVyZSwgYXMgZXhwbGFpbmVkIGluIG15IHJlcGx5 IHRvIHlvdXIgcmV2aWV3IG9mCjEwLzE4LCB0byBkb2N1bWVudCB0aGlzLgoKPiA+ICsjZGVmaW5l IFZTUDFfRExfRlJBTUVfRU5EX0lOVEVSTkFMCQlCSVQoMikKPiA+ICAKPiA+ICAvKioKPiA+ICAg KiBzdHJ1Y3QgdnNwMV9kbF9leHRfY21kIC0gRXh0ZW5kZWQgRGlzcGxheSBjb21tYW5kCj4gPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFfZHJtLmMgYi9kcml2 ZXJzL21lZGlhL3BsYXRmb3JtL3ZzcDEvdnNwMV9kcm0uYwo+ID4gaW5kZXggMDM2N2Y4ODEzNWJm Li4xNjgyNmJmMTg0YzcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Zz cDEvdnNwMV9kcm0uYwo+ID4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92c3AxL3ZzcDFf ZHJtLmMKPiA+IEBAIC0zNyw3ICszNyw5IEBAIHN0YXRpYyB2b2lkIHZzcDFfZHVfcGlwZWxpbmVf ZnJhbWVfZW5kKHN0cnVjdCB2c3AxX3BpcGVsaW5lICpwaXBlLAo+ID4gIAo+ID4gIAlpZiAoZHJt X3BpcGUtPmR1X2NvbXBsZXRlKSB7Cj4gPiAgCQlzdHJ1Y3QgdnNwMV9lbnRpdHkgKnVpZiA9IGRy bV9waXBlLT51aWY7Cj4gPiAtCQl1bnNpZ25lZCBpbnQgc3RhdHVzID0gY29tcGxldGlvbiAmIFZT UDFfRFVfU1RBVFVTX0NPTVBMRVRFOwo+ID4gKwkJdW5zaWduZWQgaW50IHN0YXR1cyA9IGNvbXBs ZXRpb24KPiA+ICsJCQkJICAgICYgKFZTUDFfRFVfU1RBVFVTX0NPTVBMRVRFIHwKPiA+ICsJCQkJ ICAgICAgIFZTUDFfRFVfU1RBVFVTX1dSSVRFQkFDSyk7Cj4gPiAgCQl1MzIgY3JjOwo+ID4gIAo+ ID4gIAkJY3JjID0gdWlmID8gdnNwMV91aWZfZ2V0X2NyYyh0b191aWYoJnVpZi0+c3ViZGV2KSkg OiAwOwo+ID4gQEAgLTU0MSw2ICs1NDMsOCBAQCBzdGF0aWMgdm9pZCB2c3AxX2R1X3BpcGVsaW5l X2NvbmZpZ3VyZShzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSkKPiA+ICAKPiA+ICAJaWYgKGRy bV9waXBlLT5mb3JjZV9icnhfcmVsZWFzZSkKPiA+ICAJCWRsX2ZsYWdzIHw9IFZTUDFfRExfRlJB TUVfRU5EX0lOVEVSTkFMOwo+ID4gKwlpZiAocGlwZS0+b3V0cHV0LT53cml0ZWJhY2spCj4gPiAr CQlkbF9mbGFncyB8PSBWU1AxX0RMX0ZSQU1FX0VORF9XUklURUJBQ0s7Cj4gPiAgCj4gPiAgCWRs ID0gdnNwMV9kbF9saXN0X2dldChwaXBlLT5vdXRwdXQtPmRsbSk7Cj4gPiAgCWRsYiA9IHZzcDFf ZGxfbGlzdF9nZXRfYm9keTAoZGwpOwo+ID4gQEAgLTg3MCwxMiArODc0LDMxIEBAIHZvaWQgdnNw MV9kdV9hdG9taWNfZmx1c2goc3RydWN0IGRldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcGlwZV9p bmRleCwKPiA+ICAJc3RydWN0IHZzcDFfZGV2aWNlICp2c3AxID0gZGV2X2dldF9kcnZkYXRhKGRl dik7Cj4gPiAgCXN0cnVjdCB2c3AxX2RybV9waXBlbGluZSAqZHJtX3BpcGUgPSAmdnNwMS0+ZHJt LT5waXBlW3BpcGVfaW5kZXhdOwo+ID4gIAlzdHJ1Y3QgdnNwMV9waXBlbGluZSAqcGlwZSA9ICZk cm1fcGlwZS0+cGlwZTsKPiA+ICsJaW50IHJldDsKPiA+ICAKPiA+ICAJZHJtX3BpcGUtPmNyYyA9 IGNmZy0+Y3JjOwo+ID4gIAo+ID4gIAltdXRleF9sb2NrKCZ2c3AxLT5kcm0tPmxvY2spOwo+ID4g Kwo+ID4gKwlpZiAocGlwZS0+b3V0cHV0LT5oYXNfd3JpdGViYWNrICYmIGNmZy0+d3JpdGViYWNr LnBpeGVsZm9ybWF0KSB7Cj4gCj4gSXMgcGlwZS0+b3V0cHV0LT5oYXNfd3JpdGViYWNrIG5lY2Vz c2FyeSBoZXJlPyBDYW4KPiBjZmctPndyaXRlYmFjay5waXhlbGZvcm1hdCBiZSBzZXQgaWYgcGlw ZS0+b3V0cHV0LT5oYXNfd3JpdGViYWNrIGlzIGZhbHNlPwo+IAo+IEhybSAuLi4gYWN0dWFsbHkg LSBQZXJoYXBzIGl0IGlzIHVzZWZ1bC4gSXQgdmFsaWRhdGVzIGJvdGggc2lkZXMgb2YgdGhlCj4g c3lzdGVtLgo+IAo+IHBpcGUtPm91dHB1dC0+aGFzX3dyaXRlYmFjayBpcyBhIGNhcGFiaWxpdHkg b2YgdGhlIFZTUCwgd2hlcmUgYXMKPiBjZmctPndyaXRlYmFjay5waXhlbGZvcm1hdCBpcyBhICdy ZXF1ZXN0JyBmcm9tIHRoZSBEVS4KCkNvcnJlY3QsIEkgdGhpbmsgaXQncyBiZXN0IHRvIGNoZWNr IGJvdGgsIHRvIGVuc3VyZSB3ZSBkb24ndCB0cnkgdG8KcXVldWUgYSB3cml0ZWJhY2sgcmVxdWVz dCBvbiBhIHN5c3RlbSB0aGF0IGRvZXNuJ3Qgc3VwcG9ydCB3cml0ZWJhY2suIE9uCnRoZSBvdGhl ciBoYW5kIHRoaXMgc2hvdWxkbid0IGhhcHBlbiBhcyB0aGUgRFUgZHJpdmVyIHNob3VsZG4ndCBl eHBvc2UKd3JpdGViYWNrIHRvIHVzZXJzcGFjZSBpbiB0aGF0IGNhc2UsIHNvIGlmIHlvdSBkb24n dCB0aGluayB0aGUgY2hlY2sgaXMKd29ydGggaXQgSSBjYW4gcmVtb3ZlIHRoZSBoYXNfd3JpdGVi YWNrIGZpZWxkIGNvbXBsZXRlbHkuCgo+ID4gKwkJY29uc3Qgc3RydWN0IHZzcDFfZHVfd3JpdGVi YWNrX2NvbmZpZyAqd2JfY2ZnID0gJmNmZy0+d3JpdGViYWNrOwo+ID4gKwo+ID4gKwkJcmV0ID0g dnNwMV9kdV9waXBlbGluZV9zZXRfcndwZl9mb3JtYXQodnNwMSwgcGlwZS0+b3V0cHV0LAo+ID4g KwkJCQkJCSAgICAgICB3Yl9jZmctPnBpeGVsZm9ybWF0LAo+ID4gKwkJCQkJCSAgICAgICB3Yl9j ZmctPnBpdGNoKTsKPiA+ICsJCWlmIChXQVJOX09OKHJldCA8IDApKQo+ID4gKwkJCWdvdG8gZG9u ZTsKPiA+ICsKPiA+ICsJCXBpcGUtPm91dHB1dC0+bWVtLmFkZHJbMF0gPSB3Yl9jZmctPm1lbVsw XTsKPiA+ICsJCXBpcGUtPm91dHB1dC0+bWVtLmFkZHJbMV0gPSB3Yl9jZmctPm1lbVsxXTsKPiA+ ICsJCXBpcGUtPm91dHB1dC0+bWVtLmFkZHJbMl0gPSB3Yl9jZmctPm1lbVsyXTsKPiA+ICsJCXBp cGUtPm91dHB1dC0+d3JpdGViYWNrID0gdHJ1ZTsKPiA+ICsJfQo+ID4gKwo+ID4gIAl2c3AxX2R1 X3BpcGVsaW5lX3NldHVwX2lucHV0cyh2c3AxLCBwaXBlKTsKPiA+ICAJdnNwMV9kdV9waXBlbGlu ZV9jb25maWd1cmUocGlwZSk7Cj4gPiArCj4gPiArZG9uZToKPiA+ICAJbXV0ZXhfdW5sb2NrKCZ2 c3AxLT5kcm0tPmxvY2spOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MX0dQTCh2c3AxX2R1X2F0 b21pY19mbHVzaCk7Cj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS92c3AxLmggYi9pbmNs dWRlL21lZGlhL3ZzcDEuaAo+ID4gaW5kZXggODc3NDk2OTM2NDg3Li5jYzFiMGQ0MmNlOTUgMTAw NjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL21lZGlhL3ZzcDEuaAo+ID4gKysrIGIvaW5jbHVkZS9tZWRp YS92c3AxLmgKPiA+IEBAIC0xOCw2ICsxOCw3IEBAIHN0cnVjdCBkZXZpY2U7Cj4gPiAgaW50IHZz cDFfZHVfaW5pdChzdHJ1Y3QgZGV2aWNlICpkZXYpOwo+ID4gIAo+ID4gICNkZWZpbmUgVlNQMV9E VV9TVEFUVVNfQ09NUExFVEUJCUJJVCgwKQo+ID4gKyNkZWZpbmUgVlNQMV9EVV9TVEFUVVNfV1JJ VEVCQUNLCUJJVCgxKQo+ID4gIAo+ID4gIC8qKgo+ID4gICAqIHN0cnVjdCB2c3AxX2R1X2xpZl9j b25maWcgLSBWU1AgTElGIGNvbmZpZ3VyYXRpb24KPiA+IEBAIC04MywxMiArODQsMjYgQEAgc3Ry dWN0IHZzcDFfZHVfY3JjX2NvbmZpZyB7Cj4gPiAgCXVuc2lnbmVkIGludCBpbmRleDsKPiA+ICB9 Owo+ID4gIAo+ID4gKy8qKgo+ID4gKyAqIHN0cnVjdCB2c3AxX2R1X3dyaXRlYmFja19jb25maWcg LSBWU1Agd3JpdGViYWNrIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycwo+ID4gKyAqIEBwaXhlbGZv cm1hdDogcGxhbmUgcGl4ZWwgZm9ybWF0IChWNEwyIDRDQykKPiA+ICsgKiBAcGl0Y2g6IGxpbmUg cGl0Y2ggaW4gYnl0ZXMgZm9yIHRoZSBmaXJzdCBwbGFuZQo+ID4gKyAqIEBtZW06IERNQSBtZW1v cnkgYWRkcmVzcyBmb3IgZWFjaCBwbGFuZSBvZiB0aGUgZnJhbWUgYnVmZmVyCj4gPiArICovCj4g PiArc3RydWN0IHZzcDFfZHVfd3JpdGViYWNrX2NvbmZpZyB7Cj4gPiArCXUzMiBwaXhlbGZvcm1h dDsKPiA+ICsJdW5zaWduZWQgaW50IHBpdGNoOwo+ID4gKwlkbWFfYWRkcl90IG1lbVszXTsKPiA+ ICt9Owo+ID4gKwo+ID4gIC8qKgo+ID4gICAqIHN0cnVjdCB2c3AxX2R1X2F0b21pY19waXBlX2Nv bmZpZyAtIFZTUCBhdG9taWMgcGlwZSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKPiA+ICAgKiBA Y3JjOiBDUkMgY29tcHV0YXRpb24gY29uZmlndXJhdGlvbgo+ID4gKyAqIEB3cml0ZWJhY2s6IHdy aXRlYmFjayBjb25maWd1cmF0aW9uCj4gPiAgICovCj4gPiAgc3RydWN0IHZzcDFfZHVfYXRvbWlj X3BpcGVfY29uZmlnIHsKPiA+ICAJc3RydWN0IHZzcDFfZHVfY3JjX2NvbmZpZyBjcmM7Cj4gPiAr CXN0cnVjdCB2c3AxX2R1X3dyaXRlYmFja19jb25maWcgd3JpdGViYWNrOwo+ID4gIH07Cj4gPiAg Cj4gPiAgdm9pZCB2c3AxX2R1X2F0b21pY19iZWdpbihzdHJ1Y3QgZGV2aWNlICpkZXYsIHVuc2ln bmVkIGludCBwaXBlX2luZGV4KTsKCi0tIApSZWdhcmRzLAoKTGF1cmVudCBQaW5jaGFydApfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=