From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH 18/21] drm/amdgpu: add framework for HW specific priority settings v4 Date: Tue, 7 Mar 2017 18:58:53 +0100 Message-ID: References: <20170307011048.3619-1-andresx7@gmail.com> <20170307011048.3619-19-andresx7@gmail.com> <82817bfd-90ea-24e5-760c-c83c78020bf5@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: Alex Deucher , Andres Rodriguez Cc: "Deucher, Alexander" , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" QW0gMDcuMDMuMjAxNyB1bSAxNzo1NyBzY2hyaWViIEFsZXggRGV1Y2hlcjoKPiBPbiBUdWUsIE1h ciA3LCAyMDE3IGF0IDExOjI1IEFNLCBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXN4N0BnbWFpbC5j b20+IHdyb3RlOgo+Pgo+PiBPbiAyMDE3LTAzLTA3IDEwOjE5IEFNLCBEZXVjaGVyLCBBbGV4YW5k ZXIgd3JvdGU6Cj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPj4+PiBGcm9tOiBhbWQt Z2Z4IFttYWlsdG86YW1kLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10gT24gQmVo YWxmCj4+Pj4gT2YgQ2hyaXN0aWFuIEvDtm5pZwo+Pj4+IFNlbnQ6IFR1ZXNkYXksIE1hcmNoIDA3 LCAyMDE3IDY6MDAgQU0KPj4+PiBUbzogQW5kcmVzIFJvZHJpZ3VlejsgYW1kLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKPj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIDE4LzIxXSBkcm0vYW1kZ3B1 OiBhZGQgZnJhbWV3b3JrIGZvciBIVyBzcGVjaWZpYwo+Pj4+IHByaW9yaXR5IHNldHRpbmdzIHY0 Cj4+Pj4KPj4+PiBBbSAwNy4wMy4yMDE3IHVtIDAyOjEwIHNjaHJpZWIgQW5kcmVzIFJvZHJpZ3Vl ejoKPj4+Pj4gQWRkIGFuIGluaXRpYWwgZnJhbWV3b3JrIGZvciBjaGFuZ2luZyB0aGUgSFcgcHJp b3JpdGllcyBvZiByaW5ncy4gVGhlCj4+Pj4+IGZyYW1ld29yayBhbGxvd3MgcmVxdWVzdGluZyBw cmlvcml0eSBjaGFuZ2VzIGZvciB0aGUgbGlmZXRpbWUgb2YgYW4KPj4+Pj4gYW1kZ3B1X2pvYi4g QWZ0ZXIgdGhlIGpvYiBjb21wbGV0ZXMgdGhlIHByaW9yaXR5IHdpbGwgZGVjYXkgdG8gdGhlIG5l eHQKPj4+Pj4gbG93ZXN0IHByaW9yaXR5IGZvciB3aGljaCBhIHJlcXVlc3QgaXMgc3RpbGwgdmFs aWQuCj4+Pj4+Cj4+Pj4+IEEgbmV3IHJpbmcgZnVuY3Rpb24gc2V0X3ByaW9yaXR5KCkgY2FuIG5v dyBiZSBwb3B1bGF0ZWQgdG8gdGFrZSBjYXJlIG9mCj4+Pj4+IHRoZSBIVyBzcGVjaWZpYyBwcm9n cmFtbWluZyBzZXF1ZW5jZSBmb3IgcHJpb3JpdHkgY2hhbmdlcy4KPj4+Pj4KPj4+Pj4gdjI6IHNl dCBwcmlvcml0eSBiZWZvcmUgZW1pdHRpbmcgSUIsIGFuZCB0YWtlIGEgcmVmIG9uIGFtZGdwdV9q b2IKPj4+Pj4gdjM6IHVzZSBBTURfU0NIRURfUFJJT1JJVFlfKiBpbnN0ZWFkIG9mIEFNREdQVV9D VFhfUFJJT1JJVFlfKgo+Pj4+PiB2NDogcGx1ZyBhbWRncHVfcmluZ19yZXN0b3JlX3ByaW9yaXR5 X2NiIGludG8gYW1kZ3B1X2pvYl9mcmVlX2NiCj4+Pj4+IHY1OiB1c2UgYXRvbWljIGZvciB0cmFj a2luZyBqb2IgcHJpb3JpdGllcyBpbnN0ZWFkIG9mIGxhc3Rfam9iCj4+Pj4+Cj4+Pj4+IFNpZ25l ZC1vZmYtYnk6IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4KPj4+Pgo+Pj4+ IFR3byBtb3JlIG5pdCBwaWNrcyBhbmQgb25lIHJlYWwgcHJvYmxlbSBiZWxvdy4KPj4+Pgo+Pj4+ PiAtLS0KPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5jICAg ICAgIHwgIDggKysrCj4+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9y aW5nLmMgICAgICB8IDgyCj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4+Pj4+ICAg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmggICAgICB8IDE1ICsrKysr Cj4+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuaCB8 ICA3ICsrKwo+Pj4+PiAgICA0IGZpbGVzIGNoYW5nZWQsIDExMiBpbnNlcnRpb25zKCspCj4+Pj4+ Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9i LmMKPj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYwo+Pj4+PiBp bmRleCA4NmExMjQyLi5iZDZmYTBmIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfam9iLmMKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X2pvYi5jCj4+Pj4+IEBAIC04OCwyMCArODgsMjEgQEAgdm9pZCBhbWRncHVf am9iX2ZyZWVfcmVzb3VyY2VzKHN0cnVjdAo+Pj4+IGFtZGdwdV9qb2IgKmpvYikKPj4+Pj4gICAg ICAgICAgZiA9IGpvYi0+YmFzZS5zX2ZlbmNlID8gJmpvYi0+YmFzZS5zX2ZlbmNlLT5maW5pc2hl ZCA6Cj4+Pj4+IGpvYi0+ZmVuY2U7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgIGZvciAoaSA9IDA7IGkg PCBqb2ItPm51bV9pYnM7ICsraSkKPj4+Pj4gICAgICAgICAgICAgICAgICBhbWRncHVfaWJfZnJl ZShqb2ItPmFkZXYsICZqb2ItPmlic1tpXSwgZik7Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gICAg c3RhdGljIHZvaWQgYW1kZ3B1X2pvYl9mcmVlX2NiKHN0cnVjdCBhbWRfc2NoZWRfam9iICpzX2pv YikKPj4+Pj4gICAgewo+Pj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iID0gY29u dGFpbmVyX29mKHNfam9iLCBzdHJ1Y3QgYW1kZ3B1X2pvYiwKPj4+PiBiYXNlKTsKPj4+Pj4KPj4+ Pj4gKyAgICAgICBhbWRncHVfcmluZ19yZXN0b3JlX3ByaW9yaXR5KGpvYik7Cj4+Pj4+ICAgICAg ICAgIGRtYV9mZW5jZV9wdXQoam9iLT5mZW5jZSk7Cj4+Pj4+ICAgICAgICAgIGFtZGdwdV9zeW5j X2ZyZWUoJmpvYi0+c3luYyk7Cj4+Pj4+ICAgICAgICAgIGtmcmVlKGpvYik7Cj4+Pj4+ICAgIH0K Pj4+Pj4KPj4+Pj4gICAgdm9pZCBhbWRncHVfam9iX2ZyZWUoc3RydWN0IGFtZGdwdV9qb2IgKmpv YikKPj4+Pj4gICAgewo+Pj4+PiAgICAgICAgICBhbWRncHVfam9iX2ZyZWVfcmVzb3VyY2VzKGpv Yik7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgIGRtYV9mZW5jZV9wdXQoam9iLT5mZW5jZSk7Cj4+Pj4+ IEBAIC0xNjIsMjggKzE2MywzNSBAQCBzdGF0aWMgc3RydWN0IGRtYV9mZW5jZSAqYW1kZ3B1X2pv Yl9ydW4oc3RydWN0Cj4+Pj4gYW1kX3NjaGVkX2pvYiAqc2NoZWRfam9iKQo+Pj4+PiAgICAgICAg ICBpbnQgcjsKPj4+Pj4KPj4+Pj4gICAgICAgICAgaWYgKCFzY2hlZF9qb2IpIHsKPj4+Pj4gICAg ICAgICAgICAgICAgICBEUk1fRVJST1IoImpvYiBpcyBudWxsXG4iKTsKPj4+Pj4gICAgICAgICAg ICAgICAgICByZXR1cm4gTlVMTDsKPj4+Pj4gICAgICAgICAgfQo+Pj4+PiAgICAgICAgICBqb2Ig PSB0b19hbWRncHVfam9iKHNjaGVkX2pvYik7Cj4+Pj4+Cj4+Pj4+ICAgICAgICAgIEJVR19PTihh bWRncHVfc3luY19wZWVrX2ZlbmNlKCZqb2ItPnN5bmMsIE5VTEwpKTsKPj4+Pj4KPj4+Pj4gKyAg ICAgICByID0gYW1kZ3B1X3JpbmdfZWxldmF0ZV9wcmlvcml0eShqb2ItPnJpbmcsCj4+Pj4+ICsK Pj4+Pj4gYW1kX3NjaGVkX2dldF9qb2JfcHJpb3JpdHkoJmpvYi0KPj4+Pj4gYmFzZSksCj4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgam9iKTsKPj4+Pj4gKyAg ICAgICBpZiAocikKPj4+Pj4gKyAgICAgICAgICAgICAgIERSTV9FUlJPUigiRmFpbGVkIHRvIHNl dCBqb2IgcHJpb3JpdHkgKCVkKVxuIiwgcik7Cj4+Pj4+ICsKPj4+Pj4gICAgICAgICAgdHJhY2Vf YW1kZ3B1X3NjaGVkX3J1bl9qb2Ioam9iKTsKPj4+Pj4gICAgICAgICAgciA9IGFtZGdwdV9pYl9z Y2hlZHVsZShqb2ItPnJpbmcsIGpvYi0+bnVtX2licywgam9iLT5pYnMsIGpvYiwKPj4+PiAmZmVu Y2UpOwo+Pj4+PiAgICAgICAgICBpZiAocikKPj4+Pj4gICAgICAgICAgICAgICAgICBEUk1fRVJS T1IoIkVycm9yIHNjaGVkdWxpbmcgSUJzICglZClcbiIsIHIpOwo+Pj4+Pgo+Pj4+PiAgICAgICAg ICAvKiBpZiBncHUgcmVzZXQsIGh3IGZlbmNlIHdpbGwgYmUgcmVwbGFjZWQgaGVyZSAqLwo+Pj4+ PiAgICAgICAgICBkbWFfZmVuY2VfcHV0KGpvYi0+ZmVuY2UpOwo+Pj4+PiAgICAgICAgICBqb2It PmZlbmNlID0gZG1hX2ZlbmNlX2dldChmZW5jZSk7Cj4+Pj4+ICsKPj4+Pj4gICAgICAgICAgYW1k Z3B1X2pvYl9mcmVlX3Jlc291cmNlcyhqb2IpOwo+Pj4+PiAgICAgICAgICByZXR1cm4gZmVuY2U7 Cj4+Pj4+ICAgIH0KPj4+Pj4KPj4+Pj4gICAgY29uc3Qgc3RydWN0IGFtZF9zY2hlZF9iYWNrZW5k X29wcyBhbWRncHVfc2NoZWRfb3BzID0gewo+Pj4+PiAgICAgICAgICAuZGVwZW5kZW5jeSA9IGFt ZGdwdV9qb2JfZGVwZW5kZW5jeSwKPj4+Pj4gICAgICAgICAgLnJ1bl9qb2IgPSBhbWRncHVfam9i X3J1biwKPj4+Pj4gICAgICAgICAgLnRpbWVkb3V0X2pvYiA9IGFtZGdwdV9qb2JfdGltZWRvdXQs Cj4+Pj4+ICAgICAgICAgIC5mcmVlX2pvYiA9IGFtZGdwdV9qb2JfZnJlZV9jYgo+Pj4+PiAgICB9 Owo+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3Jp bmcuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwo+Pj4+ PiBpbmRleCBkNjU1ZmE0Li5kNjdkYzY5IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPj4+Pj4gQEAgLTE5MywyMCArMTkzLDEwMCBAQCB2b2lk IGFtZGdwdV9yaW5nX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X3JpbmcKPj4+PiAqcmluZykKPj4+Pj4g ICAgICovCj4+Pj4+ICAgIHZvaWQgYW1kZ3B1X3JpbmdfdW5kbyhzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcpCj4+Pj4+ICAgIHsKPj4+Pj4gICAgICAgICAgcmluZy0+d3B0ciA9IHJpbmctPndwdHJf b2xkOwo+Pj4+Pgo+Pj4+PiAgICAgICAgICBpZiAocmluZy0+ZnVuY3MtPmVuZF91c2UpCj4+Pj4+ ICAgICAgICAgICAgICAgICAgcmluZy0+ZnVuY3MtPmVuZF91c2UocmluZyk7Cj4+Pj4+ICAgIH0K Pj4+Pj4KPj4+Pj4gICAgLyoqCj4+Pj4+ICsgKiBhbWRncHVfcmluZ19yZXN0b3JlX3ByaW9yaXR5 IC0gcmVzdG9yZSBhIHJpbmcncyBwcmlvcml0eQo+Pj4+PiArICoKPj4+Pj4gKyAqIEBqb2I6IGpv YiB3aGljaCBjb21wbGV0ZWQgZXhlY3V0aW9uCj4+Pj4+ICsgKgo+Pj4+PiArICogSWYgbmVjZXNz YXJ5LCByZXN0b3JlIGEgcmluZydzIHByaW9yaXR5IGFmdGVyIGEgam9iIGZpbmlzaGVzCj4+Pj4+ IGV4ZWN1dGluZwo+Pj4+PiArICovCj4+Pj4+ICt2b2lkIGFtZGdwdV9yaW5nX3Jlc3RvcmVfcHJp b3JpdHkoc3RydWN0IGFtZGdwdV9qb2IgKmpvYikKPj4+Pgo+Pj4+IE9ubHkgYSBuaXQgcGljay4g QnV0IGp1c3QgZ2l2aW5nIGpvYl9wcmlvcml0eSBhcyBwYXJhbWV0ZXIgZGlyZWN0bHkgaGVyZQo+ Pj4+IHdvdWxkIGJyaW5nIGl0IGluIGxpbmUgd2l0aCBob3cgYW1kZ3B1X3JpbmdfZWxldmF0ZV9w cmlvcml0eSgpIHdvcmtzLgo+Pj4+Cj4+Pj4+ICt7Cj4+Pj4+ICsgICAgICAgaW50IGk7Cj4+Pj4+ ICsgICAgICAgc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nID0gam9iLT5yaW5nOwo+Pj4+PiArICAg ICAgIGVudW0gYW1kX3NjaGVkX3ByaW9yaXR5IGpvYl9wcmlvcml0eTsKPj4+Pj4gKwo+Pj4+PiAr ICAgICAgIGlmICghcmluZy0+ZnVuY3MtPnNldF9wcmlvcml0eSkKPj4+Pj4gKyAgICAgICAgICAg ICAgIHJldHVybjsKPj4+Pj4gKwo+Pj4+PiArICAgICAgIGpvYl9wcmlvcml0eSA9IGFtZF9zY2hl ZF9nZXRfam9iX3ByaW9yaXR5KCZqb2ItPmJhc2UpOwo+Pj4+PiArICAgICAgIGlmIChhdG9taWNf ZGVjX3JldHVybigmcmluZy0+bnVtX2pvYnNbam9iX3ByaW9yaXR5XSkgPiAwKQo+Pj4+PiArICAg ICAgICAgICAgICAgcmV0dXJuOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgLyogbm8gbmVlZCB0byBy ZXN0b3JlIGlmIHRoZSBqb2IgaXMgYWxyZWFkeSBhdCB0aGUgbG93ZXN0Cj4+Pj4+IHByaW9yaXR5 ICovCj4+Pj4+ICsgICAgICAgaWYgKGpvYl9wcmlvcml0eSA9PSBBTURfU0NIRURfUFJJT1JJVFlf Tk9STUFMKQo+Pj4+PiArICAgICAgICAgICAgICAgcmV0dXJuOwo+Pj4+PiArCj4+Pj4+ICsgICAg ICAgc3Bpbl9sb2NrKCZyaW5nLT5wcmlvcml0eV9sb2NrKTsKPj4+Pj4gKyAgICAgICAvKiBzb21l dGhpbmcgaGlnaGVyIHByaW8gaXMgZXhlY3V0aW5nLCBubyBuZWVkIHRvIGRlY2F5ICovCj4+Pj4+ ICsgICAgICAgaWYgKHJpbmctPnByaW9yaXR5IDwgam9iX3ByaW9yaXR5KQo+Pj4+PiArICAgICAg ICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgLyogZGVjYXkg cHJpb3JpdHkgdG8gdGhlIG5leHQgbGV2ZWwgd2l0aCBhIGpvYiBhdmFpbGFibGUgKi8KPj4+Pj4g KyAgICAgICBmb3IgKGkgPSBqb2JfcHJpb3JpdHk7IGkgPCBBTURfU0NIRURfTUFYX1BSSU9SSVRZ OyBpKyspIHsKPj4+Pj4gKyAgICAgICAgICAgICAgIGlmIChpID09IEFNRF9TQ0hFRF9QUklPUklU WV9OT1JNQUwKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBhdG9taWNf cmVhZCgmcmluZy0+bnVtX2pvYnNbaV0pKSB7Cj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAg IHJpbmctPnByaW9yaXR5ID0gaTsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmluZy0+ ZnVuY3MtPnNldF9wcmlvcml0eShyaW5nLCBpKTsKPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgYnJlYWs7Cj4+Pj4+ICsgICAgICAgICAgICAgICB9Cj4+Pj4+ICsgICAgICAgfQo+Pj4+PiAr Cj4+Pj4+ICtvdXRfdW5sb2NrOgo+Pj4+PiArICAgICAgIHNwaW5fdW5sb2NrKCZyaW5nLT5wcmlv cml0eV9sb2NrKTsKPj4+Pj4gK30KPj4+Pj4gKwo+Pj4+PiArLyoqCj4+Pj4+ICsgKiBhbWRncHVf cmluZ19lbGV2YXRlX3ByaW9yaXR5IC0gY2hhbmdlIHRoZSByaW5nJ3MgcHJpb3JpdHkKPj4+Pj4g KyAqCj4+Pj4+ICsgKiBAcmluZzogYW1kZ3B1X3Jpbmcgc3RydWN0dXJlIGhvbGRpbmcgdGhlIGlu Zm9ybWF0aW9uCj4+Pj4+ICsgKiBAcHJpb3JpdHk6IHRhcmdldCBwcmlvcml0eQo+Pj4+PiArICog QGpvYjogcHJpb3JpdHkgc2hvdWxkIHJlbWFpbiBlbGV2YXRlZCBmb3IgdGhlIGR1cmF0aW9uIG9m IHRoaXMgam9iCj4+Pj4+ICsgKgo+Pj4+PiArICogVXNlIEhXIHNwZWNpZmljIG1lY2hhbmlzbSdz IHRvIGVsZXZhdGUgdGhlIHJpbmcncyBwcmlvcml0eSB3aGlsZQo+Pj4+PiBAam9iCj4+Pj4+ICsg KiBpcyBleGVjdXRpbmcuIE9uY2UgQGpvYiBmaW5pc2hlcyBleGVjdXRpbmcsIHRoZSByaW5nIHdp bGwgcmVzZXQgYmFjawo+Pj4+PiArICogdG8gbm9ybWFsIHByaW9yaXR5Lgo+Pj4+PiArICogUmV0 dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG90aGVyd2lzZQo+Pj4+PiArICovCj4+Pj4+ICtpbnQg YW1kZ3B1X3JpbmdfZWxldmF0ZV9wcmlvcml0eShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYW1kX3NjaGVkX3ByaW9y aXR5IHByaW9yaXR5LAo+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgYW1kZ3B1X2pvYiAqam9iKQo+Pj4+Cj4+Pj4gQXMgZmFyIGFzIEkgY2FuIHNlZSB0aGUgam9i IHBhcmFtZXRlciBpcyBzdXBlcmZsdW91cyBub3cuCj4+Pj4KPj4+Pj4gK3sKPj4+Pj4gKyAgICAg ICBpZiAocHJpb3JpdHkgPCAwIHx8IHByaW9yaXR5ID49IEFNRF9TQ0hFRF9NQVhfUFJJT1JJVFkp Cj4+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+Pj4gKwo+Pj4+PiArICAg ICAgIGlmICghcmluZy0+ZnVuY3MtPnNldF9wcmlvcml0eSkKPj4+Pj4gKyAgICAgICAgICAgICAg IHJldHVybiAwOwo+Pj4+PiArCj4+Pj4+ICsgICAgICAgYXRvbWljX2luYygmcmluZy0+bnVtX2pv YnNbcHJpb3JpdHldKTsKPj4+Pj4gKwo+Pj4+PiArICAgICAgIC8qIGxvd2VyIG51bWJlciBtZWFu cyBoaWdoZXIgcHJpb3JpdHkgKi8KPj4+Pj4gKyAgICAgICBzcGluX2xvY2soJnJpbmctPnByaW9y aXR5X2xvY2spOwo+Pj4+Cj4+Pj4gU29ycnksIGNvdWxkIGJlIHRoYXQgSSBpbmNvcnJlY3RseSBz dWdnZXN0ZWQgdGhhdC4gRG91YmxlIGNoZWNraW5nIHRoZQo+Pj4+IHNldF9wcmlvcml0eSBjYWxs YmFjayB5b3UgbmVlZCB0byB0YWtlIHRoZSBHUkJNIG11dGV4IHRvIHNldCB0aGUKPj4+PiBwcmlv cml0eS4gRG9uJ3QgeW91Pwo+Pj4+Cj4+Pj4gSWYgdGhhdCdzIHRydWUgdGhpcyB3b3VsZCBiZSBp bGxlZ2FsIGNhdXNlIHlvdSB0YWtlIGEgc3BpbiBsb2NrIGZpcnN0Cj4+Pj4gYW5kIHRoZW4gdHJ5 IHRvIGdyYWIgYSBtdXRleCB3aGljaCBjYW4gY2F1c2UgYSBkZWFkbG9jay4KPj4+Pgo+Pj4+IEJU VzogQWxleCwgRmVsaXggZG9lcyBhbnlib2R5IG9mIGhhbmQga25vdyB3aHkgdGhlIEdSQk0gbG9j ayBpcyBhIG11dGV4Cj4+Pj4gaW4gdGhlIGZpcnN0IHBsYWNlPyBTb3VuZHMgc2NhcnkgdG8gc2No ZWR1bGUgd2hpbGUgaGF2aW5nIHRoZSBoYXJkd2FyZQo+Pj4+IGluIGEgdmVyeSBzcGVjaWZpYyBz dGF0ZS4KPj4+Cj4+PiBJSVJDLCBJbml0aWFsbHkgd2Ugb25seSB1c2VkIHRoZSBncmJtIGxvY2sg ZHVyaW5nIGluaXQsIHNvIGEgbXV0ZXggc2VlbWVkCj4+PiBzdWZmaWNpZW50Lgo+Pj4KPj4+IEFs ZXgKPj4+Cj4+IFdvdWxkIGNvbnZlcnRpbmcgdGhlIGdyYm0gbXV0ZXggaW50byBhIHNwaW5sb2Nr IGJlIGEgcmVhc29uYWJsZSBzb2x1dGlvbgo+PiBoZXJlPwo+IFRoYXQncyBmaW5lLiAgV2UgYWxy ZWFkeSB1c2Ugc3BpbmxvY2tzIGZvciBvdGhlciBpbmRpcmVjdCByZWdpc3RlciBhcGVydHVyZXMu CgpZZWFoLCBhZ3JlZS4gSSdtIGp1c3Qgbm90IDEwMCUgc3VyZSBpZiB3ZSBkb24ndCB3YWl0IGZv ciBhIGZlbmNlIG9yIApzb21ldGhpbmcgc2ltaWxhciBuYXN0eSB3aGlsZSBob2xkaW5nIHRoYXQg bG9vay4KCkZlZWwgZnJlZSB0byBzZW5kIGEgcGF0Y2gsIGJ1dCBnaXZlIGl0IGEgcm91bmQgb2Yg dGVzdGluZyB3aXRoIGxvY2tkZXAgCmVuYWJsZWQuIFRoYXQgc2hvdWxkIHByaW50IG5pY2Ugd2Fy bmluZ3MgaWYgd2UgZGlkIHNvbWV0aGluZyB3cm9uZyBoZXJlLgoKQ2hyaXN0aWFuLgoKPgo+IEFs ZXgKPgo+Cj4+IC1BbmRyZXMKPj4KPj4KPj4+PiBSZWdhcmRzLAo+Pj4+IENocmlzdGlhbi4KPj4+ Pgo+Pj4+PiArICAgICAgIGlmIChwcmlvcml0eSA+PSByaW5nLT5wcmlvcml0eSkKPj4+Pj4gKyAg ICAgICAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKPj4+Pj4gKwo+Pj4+PiArICAgICAgIHJpbmct PnByaW9yaXR5ID0gcHJpb3JpdHk7Cj4+Pj4+ICsgICAgICAgcmluZy0+ZnVuY3MtPnNldF9wcmlv cml0eShyaW5nLCBwcmlvcml0eSk7Cj4+Pj4+ICsKPj4+Pj4gK291dF91bmxvY2s6Cj4+Pj4+ICsg ICAgICAgc3Bpbl91bmxvY2soJnJpbmctPnByaW9yaXR5X2xvY2spOwo+Pj4+PiArICAgICAgIHJl dHVybiAwOwo+Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICsvKioKPj4+Pj4gICAgICogYW1kZ3B1X3Jp bmdfaW5pdCAtIGluaXQgZHJpdmVyIHJpbmcgc3RydWN0Lgo+Pj4+PiAgICAgKgo+Pj4+PiAgICAg KiBAYWRldjogYW1kZ3B1X2RldmljZSBwb2ludGVyCj4+Pj4+ICAgICAqIEByaW5nOiBhbWRncHVf cmluZyBzdHJ1Y3R1cmUgaG9sZGluZyByaW5nIGluZm9ybWF0aW9uCj4+Pj4+ICAgICAqIEBtYXhf bmR3OiBtYXhpbXVtIG51bWJlciBvZiBkdyBmb3IgcmluZyBhbGxvYwo+Pj4+PiAgICAgKiBAbm9w OiBub3AgcGFja2V0IGZvciB0aGlzIHJpbmcKPj4+Pj4gICAgICoKPj4+Pj4gICAgICogSW5pdGlh bGl6ZSB0aGUgZHJpdmVyIGluZm9ybWF0aW9uIGZvciB0aGUgc2VsZWN0ZWQgcmluZyAoYWxsCj4+ Pj4+IGFzaWNzKS4KPj4+Pj4gICAgICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG9uIGZh aWx1cmUuCj4+Pj4+ICAgICAqLwo+Pj4+PiBAQCAtMjc0LDIwICszNTQsMjIgQEAgaW50IGFtZGdw dV9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UKPj4+PiAqYWRldiwgc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLAo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmcmluZy0+Z3B1X2FkZHIsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICh2b2lkICoqKSZyaW5nLT5yaW5nKTsKPj4+Pj4gICAgICAgICAg ICAgICAgICBpZiAocikgewo+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2X2Vycihh ZGV2LT5kZXYsICIoJWQpIHJpbmcgY3JlYXRlIGZhaWxlZFxuIiwKPj4+Pj4gcik7Cj4+Pj4+ICAg ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcjsKPj4+Pj4gICAgICAgICAgICAgICAgICB9 Cj4+Pj4+ICAgICAgICAgICAgICAgICAgbWVtc2V0KCh2b2lkICopcmluZy0+cmluZywgMCwgcmlu Zy0+cmluZ19zaXplKTsKPj4+Pj4gICAgICAgICAgfQo+Pj4+PiAgICAgICAgICByaW5nLT5wdHJf bWFzayA9IChyaW5nLT5yaW5nX3NpemUgLyA0KSAtIDE7Cj4+Pj4+ICAgICAgICAgIHJpbmctPm1h eF9kdyA9IG1heF9kdzsKPj4+Pj4gKyAgICAgICByaW5nLT5wcmlvcml0eSA9IEFNRF9TQ0hFRF9Q UklPUklUWV9OT1JNQUw7Cj4+Pj4+ICsgICAgICAgc3Bpbl9sb2NrX2luaXQoJnJpbmctPnByaW9y aXR5X2xvY2spOwo+Pj4+PiAgICAgICAgICBJTklUX0xJU1RfSEVBRCgmcmluZy0+bHJ1X2xpc3Qp Owo+Pj4+PiAgICAgICAgICBhbWRncHVfcmluZ19scnVfdG91Y2goYWRldiwgcmluZyk7Cj4+Pj4+ Cj4+Pj4+ICAgICAgICAgIGlmIChhbWRncHVfZGVidWdmc19yaW5nX2luaXQoYWRldiwgcmluZykp IHsKPj4+Pj4gICAgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZhaWxlZCB0byByZWdpc3RlciBk ZWJ1Z2ZzIGZpbGUgZm9yIHJpbmdzCj4+Pj4+ICFcbiIpOwo+Pj4+PiAgICAgICAgICB9Cj4+Pj4+ ICAgICAgICAgIHJldHVybiAwOwo+Pj4+PiAgICB9Cj4+Pj4+Cj4+Pj4+ICAgIC8qKgo+Pj4+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+Pj4+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+Pj4+PiBpbmRleCBi NTFiZGNkLi5iYWQ0MGY4IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGdwdS9hbWRncHVfcmluZy5oCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9yaW5nLmgKPj4+Pj4gQEAgLTE3LDIwICsxNywyMSBAQAo+Pj4+PiAgICAgKiBUSEUg Q09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0s Cj4+Pj4gREFNQUdFUyBPUgo+Pj4+PiAgICAgKiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g QU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCj4+Pj4gT1RIRVJXSVNFLAo+Pj4+PiAgICAg KiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJF IE9SCj4+Pj4gVEhFIFVTRSBPUgo+Pj4+PiAgICAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09G VFdBUkUuCj4+Pj4+ICAgICAqCj4+Pj4+ICAgICAqIEF1dGhvcnM6IENocmlzdGlhbiBLw7ZuaWcK Pj4+Pj4gICAgICovCj4+Pj4+ICAgICNpZm5kZWYgX19BTURHUFVfUklOR19IX18KPj4+Pj4gICAg I2RlZmluZSBfX0FNREdQVV9SSU5HX0hfXwo+Pj4+Pgo+Pj4+PiArI2luY2x1ZGUgPGRybS9hbWRn cHVfZHJtLmg+Cj4+Pj4+ICAgICNpbmNsdWRlICJncHVfc2NoZWR1bGVyLmgiCj4+Pj4+Cj4+Pj4+ ICAgIC8qIG1heCBudW1iZXIgb2YgcmluZ3MgKi8KPj4+Pj4gICAgI2RlZmluZSBBTURHUFVfTUFY X1JJTkdTICAgICAgICAgICAgICAxNgo+Pj4+PiAgICAjZGVmaW5lIEFNREdQVV9NQVhfR0ZYX1JJ TkdTICAgICAgICAgIDEKPj4+Pj4gICAgI2RlZmluZSBBTURHUFVfTUFYX0NPTVBVVEVfUklOR1Mg ICAgICA4Cj4+Pj4+ICAgICNkZWZpbmUgQU1ER1BVX01BWF9WQ0VfUklOR1MgICAgICAgICAgMwo+ Pj4+Pgo+Pj4+PiAgICAvKiBzb21lIHNwZWNpYWwgdmFsdWVzIGZvciB0aGUgb3duZXIgZmllbGQg Ki8KPj4+Pj4gICAgI2RlZmluZSBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJTkVEICAoKHZvaWQq KTB1bCkKPj4+Pj4gQEAgLTQ1LDIwICs0NiwyMSBAQCBlbnVtIGFtZGdwdV9yaW5nX3R5cGUgewo+ Pj4+PiAgICAgICAgICBBTURHUFVfUklOR19UWVBFX1NETUEsCj4+Pj4+ICAgICAgICAgIEFNREdQ VV9SSU5HX1RZUEVfVVZELAo+Pj4+PiAgICAgICAgICBBTURHUFVfUklOR19UWVBFX1ZDRSwKPj4+ Pj4gICAgICAgICAgQU1ER1BVX1JJTkdfVFlQRV9LSVEKPj4+Pj4gICAgfTsKPj4+Pj4KPj4+Pj4g ICAgc3RydWN0IGFtZGdwdV9kZXZpY2U7Cj4+Pj4+ICAgIHN0cnVjdCBhbWRncHVfcmluZzsKPj4+ Pj4gICAgc3RydWN0IGFtZGdwdV9pYjsKPj4+Pj4gICAgc3RydWN0IGFtZGdwdV9jc19wYXJzZXI7 Cj4+Pj4+ICtzdHJ1Y3QgYW1kZ3B1X2pvYjsKPj4+Pj4KPj4+Pj4gICAgLyoKPj4+Pj4gICAgICog RmVuY2VzLgo+Pj4+PiAgICAgKi8KPj4+Pj4gICAgc3RydWN0IGFtZGdwdV9mZW5jZV9kcml2ZXIg ewo+Pj4+PiAgICAgICAgICB1aW50NjRfdCAgICAgICAgICAgICAgICAgICAgICAgIGdwdV9hZGRy Owo+Pj4+PiAgICAgICAgICB2b2xhdGlsZSB1aW50MzJfdCAgICAgICAgICAgICAgICpjcHVfYWRk cjsKPj4+Pj4gICAgICAgICAgLyogc3luY19zZXEgaXMgcHJvdGVjdGVkIGJ5IHJpbmcgZW1pc3Np b24gbG9jayAqLwo+Pj4+PiAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAg IHN5bmNfc2VxOwo+Pj4+PiAgICAgICAgICBhdG9taWNfdCAgICAgICAgICAgICAgICAgICAgICAg IGxhc3Rfc2VxOwo+Pj4+PiBAQCAtMTMwLDIwICsxMzIsMjMgQEAgc3RydWN0IGFtZGdwdV9yaW5n X2Z1bmNzIHsKPj4+Pj4gICAgICAgICAgdm9pZCAoKnBhZF9pYikoc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2liICppYik7Cj4+Pj4+ICAgICAgICAgIHVuc2lnbmVkICgq aW5pdF9jb25kX2V4ZWMpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cj4+Pj4+ICAgICAgICAg IHZvaWQgKCpwYXRjaF9jb25kX2V4ZWMpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWdu ZWQKPj4+PiBvZmZzZXQpOwo+Pj4+PiAgICAgICAgICAvKiBub3RlIHVzYWdlIGZvciBjbG9jayBh bmQgcG93ZXIgZ2F0aW5nICovCj4+Pj4+ICAgICAgICAgIHZvaWQgKCpiZWdpbl91c2UpKHN0cnVj dCBhbWRncHVfcmluZyAqcmluZyk7Cj4+Pj4+ICAgICAgICAgIHZvaWQgKCplbmRfdXNlKShzdHJ1 Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+PiAgICAgICAgICB2b2lkICgqZW1pdF9zd2l0Y2hf YnVmZmVyKSAoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPj4+Pj4gICAgICAgICAgdm9pZCAo KmVtaXRfY250eGNudGwpIChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90Cj4+Pj4+ IGZsYWdzKTsKPj4+Pj4gICAgICAgICAgdm9pZCAoKmVtaXRfcnJlZykoc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLCB1aW50MzJfdCByZWcpOwo+Pj4+PiAgICAgICAgICB2b2lkICgqZW1pdF93cmVn KShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZywKPj4+Pj4gdWludDMyX3QK Pj4+PiB2YWwpOwo+Pj4+PiArICAgICAgIC8qIHByaW9yaXR5IGZ1bmN0aW9ucyAqLwo+Pj4+PiAr ICAgICAgIHZvaWQgKCpzZXRfcHJpb3JpdHkpIChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsCj4+ Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gYW1kX3NjaGVkX3ByaW9yaXR5 IHByaW9yaXR5KTsKPj4+Pj4gICAgfTsKPj4+Pj4KPj4+Pj4gICAgc3RydWN0IGFtZGdwdV9yaW5n IHsKPj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgICAgICAgICAgICAqYWRldjsK Pj4+Pj4gICAgICAgICAgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNzICAqZnVuY3M7Cj4+ Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfZmVuY2VfZHJpdmVyICAgICAgZmVuY2VfZHJ2Owo+ Pj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIgICAgICAgIHNjaGVkOwo+Pj4+ PiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICAgICAgICAgIGxydV9saXN0Owo+Pj4+ Pgo+Pj4+PiAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICAgICAgICAqcmluZ19vYmo7Cj4+Pj4+ IEBAIC0xNjQsMzEgKzE2OSw0MSBAQCBzdHJ1Y3QgYW1kZ3B1X3Jpbmcgewo+Pj4+PiAgICAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2JvICAgICAgICAqbXFkX29iajsKPj4+Pj4gICAgICAgICAgdTMyICAg ICAgICAgICAgICAgICAgICAgZG9vcmJlbGxfaW5kZXg7Cj4+Pj4+ICAgICAgICAgIGJvb2wgICAg ICAgICAgICAgICAgICAgIHVzZV9kb29yYmVsbDsKPj4+Pj4gICAgICAgICAgdW5zaWduZWQgICAg ICAgICAgICAgICAgd3B0cl9vZmZzOwo+Pj4+PiAgICAgICAgICB1bnNpZ25lZCAgICAgICAgICAg ICAgICBmZW5jZV9vZmZzOwo+Pj4+PiAgICAgICAgICB1aW50NjRfdCAgICAgICAgICAgICAgICBj dXJyZW50X2N0eDsKPj4+Pj4gICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgbmFtZVsx Nl07Cj4+Pj4+ICAgICAgICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgIGNvbmRfZXhlX29mZnM7 Cj4+Pj4+ICAgICAgICAgIHU2NCAgICAgICAgICAgICAgICAgICAgIGNvbmRfZXhlX2dwdV9hZGRy Owo+Pj4+PiAgICAgICAgICB2b2xhdGlsZSB1MzIgICAgICAgICAgICAqY29uZF9leGVfY3B1X2Fk ZHI7Cj4+Pj4+ICsKPj4+Pj4gKyAgICAgICBhdG9taWNfdCAgICAgICAgICAgICAgICBudW1fam9i c1tBTURfU0NIRURfTUFYX1BSSU9SSVRZXTsKPj4+Pj4gKyAgICAgICBzcGlubG9ja190ICAgICAg ICAgICAgICBwcmlvcml0eV9sb2NrOwo+Pj4+PiArICAgICAgIC8qIHByb3RlY3RlZCBieSBwcmlv cml0eV9sb2NrICovCj4+Pj4+ICsgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcHJpb3Jp dHk7Cj4+Pj4+ICsKPj4+Pj4gICAgI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZTKQo+Pj4+PiAg ICAgICAgICBzdHJ1Y3QgZGVudHJ5ICplbnQ7Cj4+Pj4+ICAgICNlbmRpZgo+Pj4+PiAgICB9Owo+ Pj4+Pgo+Pj4+PiAgICBpbnQgYW1kZ3B1X3JpbmdfaXNfdmFsaWRfaW5kZXgoc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50 IGh3X2lwLCBpbnQgcmluZyk7Cj4+Pj4+ICAgIGludCBhbWRncHVfcmluZ19hbGxvYyhzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsIHVuc2lnbmVkIG5kdyk7Cj4+Pj4+ICAgIHZvaWQgYW1kZ3B1X3Jp bmdfaW5zZXJ0X25vcChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGNvdW50KTsK Pj4+Pj4gICAgdm9pZCBhbWRncHVfcmluZ19nZW5lcmljX3BhZF9pYihzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcsIHN0cnVjdAo+Pj4+IGFtZGdwdV9pYiAqaWIpOwo+Pj4+PiAgICB2b2lkIGFtZGdw dV9yaW5nX2NvbW1pdChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+PiAgICB2b2lkIGFt ZGdwdV9yaW5nX3VuZG8oc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsKPj4+Pj4gK2ludCBhbWRn cHVfcmluZ19lbGV2YXRlX3ByaW9yaXR5KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4+Pj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBhbWRfc2NoZWRfcHJpb3JpdHkg cHJpb3JpdHksCj4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBh bWRncHVfam9iICpqb2IpOwo+Pj4+PiArdm9pZCBhbWRncHVfcmluZ19yZXN0b3JlX3ByaW9yaXR5 KHN0cnVjdCBhbWRncHVfam9iICpqb2IpOwo+Pj4+PiAgICBpbnQgYW1kZ3B1X3JpbmdfaW5pdChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0IGFtZGdwdV9yaW5nCj4+Pj4gKnJpbmcs Cj4+Pj4+ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCByaW5nX3NpemUsIHN0cnVjdCBh bWRncHVfaXJxX3NyYyAqaXJxX3NyYywKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIHVuc2ln bmVkIGlycV90eXBlKTsKPj4+Pj4gICAgdm9pZCBhbWRncHVfcmluZ19maW5pKHN0cnVjdCBhbWRn cHVfcmluZyAqcmluZyk7Cj4+Pj4+ICAgIGludCBhbWRncHVfcmluZ19scnVfZ2V0KHN0cnVjdCBh bWRncHVfZGV2aWNlICphZGV2LCBpbnQgaHdfaXAsCj4+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICBzdHJ1Y3QgYW1kZ3B1X3JpbmcgKipyaW5nKTsKPj4+Pj4gICAgdm9pZCBhbWRncHVfcmlu Z19scnVfdG91Y2goc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdAo+Pj4+IGFtZGdw dV9yaW5nICpyaW5nKTsKPj4+Pj4KPj4+Pj4gICAgI2VuZGlmCj4+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVkdWxlci9ncHVfc2NoZWR1bGVyLmgKPj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvc2NoZWR1bGVyL2dwdV9zY2hlZHVsZXIuaAo+Pj4+PiBpbmRleCAyZTQ1 OGRlLi41ZTI1Njc0IDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL3NjaGVk dWxlci9ncHVfc2NoZWR1bGVyLmgKPj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9zY2hl ZHVsZXIvZ3B1X3NjaGVkdWxlci5oCj4+Pj4+IEBAIC0xNDksMTEgKzE0OSwxOCBAQCB2b2lkIGFt ZF9zY2hlZF9mZW5jZV9zbGFiX2Zpbmkodm9pZCk7Cj4+Pj4+ICAgIHN0cnVjdCBhbWRfc2NoZWRf ZmVuY2UgKmFtZF9zY2hlZF9mZW5jZV9jcmVhdGUoCj4+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRf c2NoZWRfZW50aXR5ICpzX2VudGl0eSwgdm9pZCAqb3duZXIpOwo+Pj4+PiAgICB2b2lkIGFtZF9z Y2hlZF9mZW5jZV9zY2hlZHVsZWQoc3RydWN0IGFtZF9zY2hlZF9mZW5jZSAqZmVuY2UpOwo+Pj4+ PiAgICB2b2lkIGFtZF9zY2hlZF9mZW5jZV9maW5pc2hlZChzdHJ1Y3QgYW1kX3NjaGVkX2ZlbmNl ICpmZW5jZSk7Cj4+Pj4+ICAgIGludCBhbWRfc2NoZWRfam9iX2luaXQoc3RydWN0IGFtZF9zY2hl ZF9qb2IgKmpvYiwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZF9ncHVf c2NoZWR1bGVyICpzY2hlZCwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFt ZF9zY2hlZF9lbnRpdHkgKmVudGl0eSwKPj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgdm9p ZCAqb3duZXIpOwo+Pj4+PiAgICB2b2lkIGFtZF9zY2hlZF9od19qb2JfcmVzZXQoc3RydWN0IGFt ZF9ncHVfc2NoZWR1bGVyICpzY2hlZCk7Cj4+Pj4+ICAgIHZvaWQgYW1kX3NjaGVkX2pvYl9yZWNv dmVyeShzdHJ1Y3QgYW1kX2dwdV9zY2hlZHVsZXIgKnNjaGVkKTsKPj4+Pj4gKwo+Pj4+PiArc3Rh dGljIGlubGluZSBlbnVtIGFtZF9zY2hlZF9wcmlvcml0eQo+Pj4+PiArYW1kX3NjaGVkX2dldF9q b2JfcHJpb3JpdHkoc3RydWN0IGFtZF9zY2hlZF9qb2IgKmpvYikKPj4+Pj4gK3sKPj4+Pj4gKyAg ICAgICByZXR1cm4gKGpvYi0+c19lbnRpdHktPnJxIC0gam9iLT5zY2hlZC0+c2NoZWRfcnEpOwo+ Pj4+PiArfQo+Pj4+PiArCj4+Pj4+ICAgICNlbmRpZgo+Pj4+Cj4+Pj4KPj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+Pj4+IGFtZC1nZnggbWFpbGlu ZyBsaXN0Cj4+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+PiBodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4gYW1kLWdmeCBtYWlsaW5n IGxpc3QKPj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4gaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4CgoKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1k LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==