From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 1/9] dma-buf: start caching of sg_table objects Date: Wed, 8 May 2019 14:15:29 +0200 Message-ID: References: <20190507081338.2571-1-christian.koenig@amd.com> <20190508091533.GU17751@phenom.ffwll.local> <20190508101149.GX17751@phenom.ffwll.local> <829e1109-c211-cb4f-e56e-8be78ae51416@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-io1-xd43.google.com (mail-io1-xd43.google.com [IPv6:2607:f8b0:4864:20::d43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5A6DA892A7 for ; Wed, 8 May 2019 12:15:43 +0000 (UTC) Received: by mail-io1-xd43.google.com with SMTP id s20so7225834ioj.7 for ; Wed, 08 May 2019 05:15:43 -0700 (PDT) In-Reply-To: <829e1109-c211-cb4f-e56e-8be78ae51416@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: =?UTF-8?Q?Christian_K=C3=B6nig?= Cc: dri-devel List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXkgOCwgMjAxOSBhdCAyOjAwIFBNIENocmlzdGlhbiBLw7ZuaWcKPGNrb2VuaWcu bGVpY2h0enVtZXJrZW5AZ21haWwuY29tPiB3cm90ZToKPiBBbSAwOC4wNS4xOSB1bSAxMjoxMSBz Y2hyaWViIERhbmllbCBWZXR0ZXI6Cj4gPiBPbiBXZWQsIE1heSAwOCwgMjAxOSBhdCAxMToxNToz M0FNICswMjAwLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+IE9uIFR1ZSwgTWF5IDA3LCAyMDE5 IGF0IDEwOjEzOjMwQU0gKzAyMDAsIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gPj4+IFRvIGFs bG93IGEgc21vb3RoIHRyYW5zaXRpb24gZnJvbSBwaW5uaW5nIGJ1ZmZlciBvYmplY3RzIHRvIGR5 bmFtaWMKPiA+Pj4gaW52YWxpZGF0aW9uIHdlIGZpcnN0IHN0YXJ0IHRvIGNhY2hlIHRoZSBzZ190 YWJsZSBmb3IgYW4gYXR0YWNobWVudC4KPiA+Pj4KPiA+Pj4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0 aWFuIEvDtm5pZyA8Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+ID4+PiAtLS0KPiA+Pj4gICBk cml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCj4g Pj4+ICAgaW5jbHVkZS9saW51eC9kbWEtYnVmLmggICB8IDE0ICsrKysrKysrKysrKysrCj4gPj4+ ICAgMiBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspCj4gPj4+Cj4gPj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYu Ywo+ID4+PiBpbmRleCA3Yzg1ODAyMGQxNGIuLjc3NWUxM2Y1NDA4MyAxMDA2NDQKPiA+Pj4gLS0t IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYwo+ID4+PiArKysgYi9kcml2ZXJzL2RtYS1idWYv ZG1hLWJ1Zi5jCj4gPj4+IEBAIC01NzMsNiArNTczLDIwIEBAIHN0cnVjdCBkbWFfYnVmX2F0dGFj aG1lbnQgKmRtYV9idWZfYXR0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gPj4+ICAgICBs aXN0X2FkZCgmYXR0YWNoLT5ub2RlLCAmZG1hYnVmLT5hdHRhY2htZW50cyk7Cj4gPj4+Cj4gPj4+ ICAgICBtdXRleF91bmxvY2soJmRtYWJ1Zi0+bG9jayk7Cj4gPj4+ICsKPiA+Pj4gKyAgIGlmICgh ZG1hX2J1Zl9pc19keW5hbWljKGRtYWJ1ZikpIHsKPiA+Pj4gKyAgICAgICAgICAgc3RydWN0IHNn X3RhYmxlICpzZ3Q7Cj4gPj4+ICsKPiA+Pj4gKyAgICAgICAgICAgc2d0ID0gZG1hYnVmLT5vcHMt Pm1hcF9kbWFfYnVmKGF0dGFjaCwgRE1BX0JJRElSRUNUSU9OQUwpOwo+ID4+PiArICAgICAgICAg ICBpZiAoIXNndCkKPiA+Pj4gKyAgICAgICAgICAgICAgICAgICBzZ3QgPSBFUlJfUFRSKC1FTk9N RU0pOwo+ID4+PiArICAgICAgICAgICBpZiAoSVNfRVJSKHNndCkpIHsKPiA+Pj4gKyAgICAgICAg ICAgICAgICAgICBkbWFfYnVmX2RldGFjaChkbWFidWYsIGF0dGFjaCk7Cj4gPj4+ICsgICAgICAg ICAgICAgICAgICAgcmV0dXJuIEVSUl9DQVNUKHNndCk7Cj4gPj4+ICsgICAgICAgICAgIH0KPiA+ Pj4gKyAgICAgICAgICAgYXR0YWNoLT5zZ3QgPSBzZ3Q7Cj4gPj4+ICsgICB9Cj4gPj4+ICsKPiA+ Pj4gICAgIHJldHVybiBhdHRhY2g7Cj4gPj4+Cj4gPj4+ICAgZXJyX2F0dGFjaDoKPiA+Pj4gQEAg LTU5NSw2ICs2MDksMTAgQEAgdm9pZCBkbWFfYnVmX2RldGFjaChzdHJ1Y3QgZG1hX2J1ZiAqZG1h YnVmLCBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gpCj4gPj4+ICAgICBpZiAoV0FS Tl9PTighZG1hYnVmIHx8ICFhdHRhY2gpKQo+ID4+PiAgICAgICAgICAgICByZXR1cm47Cj4gPj4+ Cj4gPj4+ICsgICBpZiAoYXR0YWNoLT5zZ3QpCj4gPj4+ICsgICAgICAgICAgIGRtYWJ1Zi0+b3Bz LT51bm1hcF9kbWFfYnVmKGF0dGFjaCwgYXR0YWNoLT5zZ3QsCj4gPj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIERNQV9CSURJUkVDVElPTkFMKTsKPiA+Pj4gKwo+ID4+ PiAgICAgbXV0ZXhfbG9jaygmZG1hYnVmLT5sb2NrKTsKPiA+Pj4gICAgIGxpc3RfZGVsKCZhdHRh Y2gtPm5vZGUpOwo+ID4+PiAgICAgaWYgKGRtYWJ1Zi0+b3BzLT5kZXRhY2gpCj4gPj4+IEBAIC02 MzAsNiArNjQ4LDkgQEAgc3RydWN0IHNnX3RhYmxlICpkbWFfYnVmX21hcF9hdHRhY2htZW50KHN0 cnVjdCBkbWFfYnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwKPiA+Pj4gICAgIGlmIChXQVJOX09OKCFh dHRhY2ggfHwgIWF0dGFjaC0+ZG1hYnVmKSkKPiA+Pj4gICAgICAgICAgICAgcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7Cj4gPj4+Cj4gPj4+ICsgICBpZiAoYXR0YWNoLT5zZ3QpCj4gPj4+ICsgICAg ICAgICAgIHJldHVybiBhdHRhY2gtPnNndDsKPiA+Pj4gKwo+ID4+PiAgICAgc2dfdGFibGUgPSBh dHRhY2gtPmRtYWJ1Zi0+b3BzLT5tYXBfZG1hX2J1ZihhdHRhY2gsIGRpcmVjdGlvbik7Cj4gPj4+ ICAgICBpZiAoIXNnX3RhYmxlKQo+ID4+PiAgICAgICAgICAgICBzZ190YWJsZSA9IEVSUl9QVFIo LUVOT01FTSk7Cj4gPj4+IEBAIC02NTcsNiArNjc4LDkgQEAgdm9pZCBkbWFfYnVmX3VubWFwX2F0 dGFjaG1lbnQoc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLAo+ID4+PiAgICAgaWYg KFdBUk5fT04oIWF0dGFjaCB8fCAhYXR0YWNoLT5kbWFidWYgfHwgIXNnX3RhYmxlKSkKPiA+Pj4g ICAgICAgICAgICAgcmV0dXJuOwo+ID4+Pgo+ID4+PiArICAgaWYgKGF0dGFjaC0+c2d0ID09IHNn X3RhYmxlKQo+ID4+PiArICAgICAgICAgICByZXR1cm47Cj4gPj4+ICsKPiA+Pj4gICAgIGF0dGFj aC0+ZG1hYnVmLT5vcHMtPnVubWFwX2RtYV9idWYoYXR0YWNoLCBzZ190YWJsZSwKPiA+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24pOwo+ID4+ PiAgIH0KPiA+Pj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oIGIvaW5jbHVk ZS9saW51eC9kbWEtYnVmLmgKPiA+Pj4gaW5kZXggNTg3MjVmODkwYjViLi41MjAzMWZkYzc1YmIg MTAwNjQ0Cj4gPj4+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gPj4+ICsrKyBiL2lu Y2x1ZGUvbGludXgvZG1hLWJ1Zi5oCj4gPj4+IEBAIC0zMjIsNiArMzIyLDcgQEAgc3RydWN0IGRt YV9idWZfYXR0YWNobWVudCB7Cj4gPj4+ICAgICBzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOwo+ID4+ PiAgICAgc3RydWN0IGRldmljZSAqZGV2Owo+ID4+PiAgICAgc3RydWN0IGxpc3RfaGVhZCBub2Rl Owo+ID4+PiArICAgc3RydWN0IHNnX3RhYmxlICpzZ3Q7Cj4gPj4+ICAgICB2b2lkICpwcml2Owo+ ID4+PiAgIH07Cj4gPj4+Cj4gPj4+IEBAIC0zNzMsNiArMzc0LDE5IEBAIHN0YXRpYyBpbmxpbmUg dm9pZCBnZXRfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQo+ID4+PiAgICAgZ2V0X2Zp bGUoZG1hYnVmLT5maWxlKTsKPiA+Pj4gICB9Cj4gPj4+Cj4gPj4+ICsvKioKPiA+Pj4gKyAqIGRt YV9idWZfaXNfZHluYW1pYyAtIGNoZWNrIGlmIGEgRE1BLWJ1ZiB1c2VzIGR5bmFtaWMgbWFwcGlu Z3MuCj4gPj4+ICsgKiBAZG1hYnVmOiB0aGUgRE1BLWJ1ZiB0byBjaGVjawo+ID4+PiArICoKPiA+ Pj4gKyAqIFJldHVybnMgdHJ1ZSBpZiBhIERNQS1idWYgZXhwb3J0ZXIgd2FudHMgdG8gY3JlYXRl IGR5bmFtaWMgc2cgdGFibGUgbWFwcGluZ3MKPiA+Pj4gKyAqIGZvciBlYWNoIGF0dGFjaG1lbnQu IEZhbHNlIGlmIG9ubHkgYSBzaW5nbGUgc3RhdGljIHNnIHRhYmxlIHNob3VsZCBiZSB1c2VkLgo+ ID4+PiArICovCj4gPj4+ICtzdGF0aWMgaW5saW5lIGJvb2wgZG1hX2J1Zl9pc19keW5hbWljKHN0 cnVjdCBkbWFfYnVmICpkbWFidWYpCj4gPj4+ICt7Cj4gPj4+ICsgICAvKiBBbHdheXMgdXNlIGEg c3RhdGljIG1hcHBpbmcgZm9yIG5vdyAqLwo+ID4+PiArICAgcmV0dXJuIGZhbHNlOwo+ID4+IEht IEkgc3RpbGwgZXhwZWN0IHRoYXQgbGF0ZXIgb24gd2UnbGwgd2FudCB0aGlzIHRvIGJlIGRlY2lk ZWQgYnkgdGhlCj4gPj4gYXR0YWNobWVudDogSXQncyBvbmx5IGR5bmFtaWMgaWYgYm90aCB0aGUg ZXhwb3J0ZXIgYW5kIHRoZSBpbXBvcnRlcgo+ID4+IHN1cHBvcnQgZHluYW1pYyBkbWEtYnVmIG1h bmFnZW1lbnQsIG90aGVyd2lzZSB3ZSBuZWVkIHRvIHBpbi4KPiA+Pgo+ID4+IEJ1dCBhbnl3YXks IEkgZmVlbCBsaWtlIHdlIG5lZWQgdG8gZ28gb3ZlciB0aGUgZW50aXJlIHRoaW5nIGFueXdheSBv bmNlCj4gPj4gbW9yZSB3aGVuIHAycCBoYXMgbGFuZGVkLCBvbiB0aGlzOgo+ID4+Cj4gPj4gUmV2 aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4gPiBDb3Jy ZWN0aW9uIHRoYXQgSSBvbmx5IGp1c3QgcmVhbGl6ZWQsIGJ1dCBuZWVkIHRvIHJldHJhY3QgdGhh dCByLWIgb24gdGhpcwo+ID4gYW5kIHRoZSBkcm0gc2d0IGNhY2hlIHJlbW92YWwgcGF0Y2g6IFlv dSBub3cgaGFyZGNvZGUgdGhlIGRpcmVjdGlvbiB0bwo+ID4gRE1BX0JJRElSRUNUSU9OQUwsIGRy bV9wcmltZSBkaWQgb25seSBrZWVwIHRoZSBjYWNoZSBmb3IgYSBnaXZlbgo+ID4gZGlyZWN0aW9u Lgo+ID4KPiA+IE5vdyB4ODYgZHJpdmVycyBhbHdheXMgc2V0IERNQV9CSURJUkVDVElPTkFMLCBi dXQgYXJtIHNvYyBkcml2ZXJzIChhbmQKPiA+IGFsc28gdjRsIHZpZGVvYnVmIGxheWVyKSB0cnkg dG8gZ3Vlc3Mgd2hldGhlciBpdCBzaG91bGQgYmUgRE1BX1RPX0RFVklDRQo+ID4gb3IgRE1BX0ZS T01fREVWSUNFLiBJIGhhdmUgbm8gaWRlYSB3aGF0IHRoZSBpbXBsaWNhdGlvbnMgYXJlLCBhbHNv IGFsbCB0aGUKPiA+IGNhY2hlIGNvaGVyZW5jeSBvbiBkbWEtYnVmcyBpcyBraW5kYSBpbGwtZGVm aW5lZC4KPiA+Cj4gPiBBbmQgd2UgY2FuJ3QgdGhyb3cgdGhlIHNndCBjYWNoZSBhd2F5IGF0IG1h cCB0aW1lIGlmIGl0IGRvZXNuJ3QgZml0IGxpa2UKPiA+IGRybV9wcmltZSBkb2VzLCBiZWNhdXNl IHRoYXQgcmVpbnRyb2R1Y2VzIHRoZSByZXNlcnZhdGlvbiBvYmplY3QgbG9jaywKPiA+IGRlZmVh dGluZyB0aGUgZW50aXJlIHB1cnBvc2Ugb2YgdGhpcy4gQWxzbyB3ZSBjYW4ndCBqdXN0IGFzc3Vt ZSBkcm1fcHJpbWUKPiA+IHdvcmtzIGZvciBldmVyeW9uZSwgc2luY2UgdGhlIHNwZWNpYWwgY2Fz ZXMgYWxsIHJvbGwgdGhlaXIgb3duIGRtYS1idWYKPiA+IGltcG9ydC4gSSBoYXZlIGFsc28gbm90 IGNoZWNrZWQgd2hhdCBleGFjdGx5IGV4cG9ydGVycyBkby4gTm8gaWRlYSB3aGF0IHRvCj4gPiBk byBoZXJlIG5vdy4KPiA+Cj4gPiAvbWUgY3JpZXMKPgo+IFdlbGwgaXQgaXMga2luZCBvZiBhYnVz aW5nIHRvIHVzZSB0aGUgRE1BIGRpcmVjdGlvbiBoZXJlIGluIHRoZSBmaXJzdAo+IHBsYWNlIGFu ZCBJIGFjdHVhbGx5IGNvbnNpZGVyZWQgdG8gY29tcGxldGVseSByZW1vdmUgaXQuCj4KPiBUaGUg a2V5IHByb2JsZW0gaXMgdGhhdCB0aGUgRE1BIGRpcmVjdGlvbiBkZWZpbmVzIHRoaW5ncyBmcm9t IHRoZSB2aWV3Cj4gcG9pbnQgb2YgdGhlIENQVSwgZS5nLiBETUFfVE9fREVWSUNFIG1lYW5zIHRo ZSBkYXRhIGhhcyBiZWVuIGFjY2Vzc2VkIGJ5Cj4gdGhlIENQVSBhbmQgd2UgYXJlIG5vdyBwdXNo aW5nIGl0IHRvIGEgZGV2aWNlLgo+Cj4gQnV0IERNQS1idWYgaXMgZXNzZW50aWFsbHkgYWJvdXQg ZGV2aWNlIHRvIGRldmljZSB0cmFuc2ZlcnMsIHNvCj4gRE1BX1RPX0RFVklDRSBhcyB3ZWxsIGFz IERNQV9GUk9NX0RFVklDRSBpcyBjb21wbGV0ZWx5IGFtYmlndW91cyBiZWNhdXNlCj4geW91IGRv bid0IGtub3cgdGhlIHBvaW50IG9mIHZpZXcgdG8gc3RhcnQgd2l0aC4KPgo+IEFkZGl0aW9uYWwg dG8gdGhhdCB0aGUgY2FjaGluZyBpbXBsZW1lbnRhdGlvbiBpbiBkcm1fcHJpbWUuYyBkaWRuJ3QK PiBoYW5kbGVkIGl0IGZ1bGwgZWl0aGVyOgo+ID4gLSAgICAgLyoKPiA+IC0gICAgICAqIHR3byBt YXBwaW5ncyB3aXRoIGRpZmZlcmVudCBkaXJlY3Rpb25zIGZvciB0aGUgc2FtZSBhdHRhY2htZW50 IGFyZQo+ID4gLSAgICAgICogbm90IGFsbG93ZWQKPiA+IC0gICAgICAqLwo+ID4gLSAgICAgaWYg KFdBUk5fT04ocHJpbWVfYXR0YWNoLT5kaXIgIT0gRE1BX05PTkUpKQo+ID4gLSAgICAgICAgICAg ICByZXR1cm4gRVJSX1BUUigtRUJVU1kpOwo+Cj4gRG8gdGhlIEFSTSBndXlzIGFuZCBWNEwgZ3V5 cyBhY3R1YWxseSBkbyBhbnl0aGluZyB3aXRoIHRoZSBkaXJlY3Rpb24KPiBleGNlcHQgZm9yIHBh c3NpbmcgaXQgb24gZG1hX21hcF9zZ19hdHRycygpID8KCkkgZG9uJ3QgdGhpbmsgc28sIGJ1dCB0 aGF0IGFsb25lIGlzIGEgYmlnIHRoaW5nIGJlY2F1c2Ugb24gYXJtLCB0aGF0CmFjdHVhbGx5IGNo YW5nZXMgd2hhdCBoYXBwZW5zIHdydCBmbHVzaGluZyBhbmQgc3R1ZmYuIE9uIHg4NiB0aGUgZG1h CnN1YnN5c3RlbSBhc3N1bWVzIGV2ZXJ5dGhpbmcgaXMgYWx3YXlzIGNvaGVyZW50LCBhbmQgd2Ug aGF2ZSBhIHBpbGUgb2YKaGFja3MgaW4gZHJpdmVycyB0byBtYWtlIHN1cmUgdGhlIGRtYSBhY2Nl c3MgaXMgY29oZXJlbnQgZW5vdWdoIChzaW5jZQpvbiBhIGdwdSB0aGlzIGlzIGNvbnRyb2xsZWQg b24gYSBwZXIgdHJhbnNhY3Rpb24gYmFzaXMgdXN1YWxseSwgZmFpcmx5Cm9mdGVuIGV2ZW4gdW5k ZXIgdXNlcnNwYWNlJ3MgY29udHJvbCkuCgpJIGhhdmUgdHJpZWQgdG8gYmV0dGVyIHVuZGVyc3Rh bmQgd2hhdCBhIGJldHRlciBkbWEgYXBpIGludGVyZmFjZQp3b3VsZCBsb29rIGxpa2UgZm9yIGdw dXMgYW5kIGRtYS1idWYsIGJ1dCBldmVyeSB0aW1lIHRoYXQgY29tZXMgdXAgdGhlCmRtYSBtYWlu dGFpbmVycyB0ZWxsIG1lIEknbSBhIGZvb2wgYW5kIHRoYXQgdGhpcyBfbXVzdF8gYmUgYWJzdHJh Y3RlZAphd2F5IGJ5IHRoZSBkbWEgYXBpIGFuZCBJIGdpdmUgdXAgYWdhaW4uIEhlbmNlIHRoZSBj cnlpbmcgYW5kIG5vIGlkZWEKd2hhdCB0byBkbyBoZXJlIDotLwoKSW4gcmVhbGl0eSBpdCBwcm9i YWJseSBkb2Vzbid0IG1hdHRlciwgYXMgbG9uZyBhcyBubyBvbmUgdHJpZXMgdG8gcnVuCmEgZ3B1 IGRyaXZlciB3aXRoIGR5bmFtaWMgZG1hLWJ1ZiBleHBvcnQgb24gYXJtLCBidXQgSSd2ZSBzZWVu IHNvbWUKcGVvcGxlIHRyeWluZyB0byBnZXQgYW1kZ3B1IGF0IGxlYXN0IGdvaW5nIGluIHRoYXQg Y29tYm8uIFNvIG5vdCBhCmxvbmctdGVybSBzb2x1dGlvbiBlaXRoZXIuIEFuZCB3ZSBjYW4ndCBq dXN0IG5vdCBjYWNoZSwgYmVjYXVzZSB0aGF0CmJyZWFrcyB0aGUgd29ybGQgd3J0IGxvY2tpbmcg b3JkZXJpbmcgSSB0aGluaywgb3IgYXQgbGVhc3QgYSBidW5jaCBvZgpkcm0gZHJpdmVycyAoYW5k IG5vdCBhbGwgZHJtIGRyaXZlcnMgdXNlIHRoZSBkcm1fcHJpbWUgaGVscGVycywgc28gd2UKY2Fu J3QganVzdCBkbyB0aGlzIGZvciB1cyBhbmQgbm90IGNhY2hlIGZvciBhbnlvbmUgZWxzZSBhbmQg aG9wZSB0aGF0CndvcmtzIG91dCkuCgpPbmUgb3B0aW9uIEkgaGF2ZW4ndCBsb29rZWQgaW50byBt dWNoLCBidXQgbWlnaHQgd29yaywgaXMgdGhhdCB3ZSBjYWxsCnRoZSBkbWEgYXBpIGNvaGVyZW5j eSBmdW5jdGlvbnMgaWYgdGhlIHJlcXVlc3RlZCBhdHRhY2htZW50X21hcC91bm1hcApkaXJlY3Rp b24gZG9lc24ndCBtYXRjaC4gQnV0IEkgaG9uZXN0bHkgZG9uJ3Qga25vdyB3aGV0aGVyIHRoYXQn cwphbGxvd2VkIGFuZCB3b3VsZCByZXN1bHQgaW4gdGhlIHNhbWUgdGhpbmcgaW4gdGhlIGRtYS1h cGkgYmFja2VuZHMgYXMKZG9pbmcgYSBtYXBwaW5nIHdpdGggdGhlIGRlc2lyZWQgZGlyZWN0aW9u IHJpZ2h0IGF3YXkuIEFsc28sIGl0IHdvdWxkCnRlcnJpYmx5IGJyZWFrIHRoZSBsYXllcmluZywg c28gd2UnZCBuZWVkIHRvIGFkZCBhIG1hcF9zeW5jIGNhbGxiYWNrCih0aGVyZSdzIGJlZW4gcGF0 Y2hlcywgYnV0IHRoZXkgbmV2ZXIgbGFuZGVkKSBhbmQgcm9sbCB0aGVtIG91dCB0byBhbGwKZXhw b3J0ZXJzLgoKT3IgbWF5YmUganVzdCBiYWNrIHRvIGNyeWluZyA6LSkKLURhbmllbAoKCj4gUmVn YXJkcywKPiBDaHJpc3RpYW4uCj4KPiA+IC1EYW5pZWwKPiA+Cj4gPj4+ICt9Cj4gPj4+ICsKPiA+ Pj4gICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICpkbWFfYnVmX2F0dGFjaChzdHJ1Y3QgZG1h X2J1ZiAqZG1hYnVmLAo+ID4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3RydWN0IGRldmljZSAqZGV2KTsKPiA+Pj4gICB2b2lkIGRtYV9idWZf ZGV0YWNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsCj4gPj4+IC0tCj4gPj4+IDIuMTcuMQo+ID4+ Pgo+ID4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ ID4+PiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gPj4+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKPiA+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwKPiA+PiAtLQo+ID4+IERhbmllbCBWZXR0ZXIKPiA+PiBTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KPiA+PiBodHRwOi8vYmxvZy5mZndsbC5jaAo+CgoK LS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9uCis0 MSAoMCkgNzkgMzY1IDU3IDQ4IC0gaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApk cmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVs