From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: Re: [PATCH 19/22] drm/amdgpu: add framework for HW specific priority settings Date: Thu, 2 Mar 2017 01:45:09 -0500 Message-ID: References: <1488320089-22035-1-git-send-email-andresx7@gmail.com> <1488320089-22035-20-git-send-email-andresx7@gmail.com> <58B677DD.4070408@amd.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 , zhoucm1 , Jay Cornwall Cc: amd-gfx list CgpPbiAyMDE3LTAzLTAxIDEyOjQ0IFBNLCBBbmRyZXMgUm9kcmlndWV6IHdyb3RlOgo+Cj4KPiBP biAyMDE3LTAzLTAxIDEwOjQ5IEFNLCBBbGV4IERldWNoZXIgd3JvdGU6Cj4+IE9uIFdlZCwgTWFy IDEsIDIwMTcgYXQgMjoyNyBBTSwgemhvdWNtMSA8ZGF2aWQxLnpob3VAYW1kLmNvbT4gd3JvdGU6 Cj4+Pgo+Pj4gT24gMjAxN+W5tDAz5pyIMDHml6UgMDY6MTQsIEFuZHJlcyBSb2RyaWd1ZXogd3Jv dGU6Cj4+Pj4gQWRkIGFuIGluaXRpYWwgZnJhbWV3b3JrIGZvciBjaGFuZ2luZyB0aGUgSFcgcHJp b3JpdGllcyBvZiByaW5ncy4gVGhlCj4+Pj4gZnJhbWV3b3JrIGFsbG93cyByZXF1ZXN0aW5nIHBy aW9yaXR5IGNoYW5nZXMgZm9yIHRoZSBsaWZldGltZSBvZiBhbgo+Pj4+IGFtZGdwdV9qb2IuIEFm dGVyIHRoZSBqb2IgY29tcGxldGVzIHRoZSBwcmlvcml0eSB3aWxsIGRlY2F5IHRvIHRoZSBuZXh0 Cj4+Pj4gbG93ZXN0IHByaW9yaXR5IGZvciB3aGljaCBhIHJlcXVlc3QgaXMgc3RpbGwgdmFsaWQu Cj4+Pj4KPj4+PiBBIG5ldyByaW5nIGZ1bmN0aW9uIHNldF9wcmlvcml0eSgpIGNhbiBub3cgYmUg cG9wdWxhdGVkIHRvIHRha2UgY2FyZSBvZgo+Pj4+IHRoZSBIVyBzcGVjaWZpYyBwcm9ncmFtbWlu ZyBzZXF1ZW5jZSBmb3IgcHJpb3JpdHkgY2hhbmdlcy4KPj4+Pgo+Pj4+IFNpZ25lZC1vZmYtYnk6 IEFuZHJlcyBSb2RyaWd1ZXogPGFuZHJlc3g3QGdtYWlsLmNvbT4KPj4+PiAtLS0KPj4+PiAgICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAgIHwgIDQgKy0KPj4+PiAgICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyAgIHwgIDIgKy0KPj4+PiAgICBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmMgIHwgMTAgKysrKy0KPj4+PiAg ICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5jIHwgNzEKPj4+PiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9yaW5nLmggfCAxMSArKysrKwo+Pj4+ICAgIDUgZmlsZXMgY2hhbmdlZCwg OTQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPj4+Pgo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+Pj4+IGIvZHJpdmVycy9ncHUvZHJt L2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+PiBpbmRleCAzNjZmNmQzLi4wNjc2NDk1IDEwMDY0NAo+ Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4+Pj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPj4+PiBAQCAtNjM2LDIxICs2MzYs MjEgQEAgc3RydWN0IGFtZGdwdV9mbGlwX3dvcmsgewo+Pj4+ICAgIHN0cnVjdCBhbWRncHVfaWIg ewo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfc2FfYm8gICAgICAgICAgICAgKnNhX2JvOwo+ Pj4+ICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoX2R3Owo+ Pj4+ICAgICAgICAgIHVpbnQ2NF90ICAgICAgICAgICAgICAgICAgICAgICAgZ3B1X2FkZHI7Cj4+ Pj4gICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAqcHRyOwo+Pj4+ICAg ICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3M7Cj4+Pj4gICAgfTsK Pj4+PiAgICAgIGV4dGVybiBjb25zdCBzdHJ1Y3QgYW1kX3NjaGVkX2JhY2tlbmRfb3BzIGFtZGdw dV9zY2hlZF9vcHM7Cj4+Pj4gICAgLWludCBhbWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRncHVf ZGV2aWNlICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAo+Pj4+ICtpbnQgYW1kZ3B1X2pvYl9hbGxv YyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgbnVtX2licywgaW50Cj4+Pj4g cHJpb3JpdHksCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfam9iICoq am9iLCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSk7Cj4+Pj4gICAgaW50IGFtZGdwdV9qb2JfYWxsb2Nf d2l0aF9pYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQKPj4+PiBzaXplLAo+ Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfam9iICoqam9i KTsKPj4+PiAgICAgIHZvaWQgYW1kZ3B1X2pvYl9mcmVlX3Jlc291cmNlcyhzdHJ1Y3QgYW1kZ3B1 X2pvYiAqam9iKTsKPj4+PiAgICB2b2lkIGFtZGdwdV9qb2JfZnJlZShzdHJ1Y3QgYW1kZ3B1X2pv YiAqam9iKTsKPj4+PiAgICBpbnQgYW1kZ3B1X2pvYl9zdWJtaXQoc3RydWN0IGFtZGdwdV9qb2Ig KmpvYiwgc3RydWN0IGFtZGdwdV9yaW5nCj4+Pj4gKnJpbmcsCj4+Pj4gICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgYW1kX3NjaGVkX2VudGl0eSAqZW50aXR5LCB2b2lkICpvd25lciwKPj4+ PiAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBkbWFfZmVuY2UgKipmKTsKPj4+PiAgICBA QCAtOTkwLDIwICs5OTAsMjIgQEAgc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgewo+Pj4+ICAgICNk ZWZpbmUgQU1ER1BVX1ZNX0RPTUFJTiAgICAgICAgICAgICAgICAgICAgKDEgPDwgMykgLyogYml0 IHNldAo+Pj4+IG1lYW5zIGluCj4+Pj4gdmlydHVhbCBtZW1vcnkgY29udGV4dCAqLwo+Pj4+ICAg ICAgc3RydWN0IGFtZGdwdV9qb2Igewo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRfc2NoZWRfam9i ICAgIGJhc2U7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9kZXZpY2UgICAgKmFkZXY7Cj4+ Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV92bSAgICAgICAgKnZtOwo+Pj4+ICAgICAgICAgIHN0 cnVjdCBhbWRncHVfcmluZyAgICAgICpyaW5nOwo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVf c3luYyAgICAgIHN5bmM7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9pYiAgICAgICAgKmli czsKPj4+PiAgICAgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICAgICAgICAqZmVuY2U7IC8qIHRoZSBo dyBmZW5jZSAqLwo+Pj4+ICsgICAgICAgc3RydWN0IGRtYV9mZW5jZV9jYiAgICAgY2I7Cj4+Pj4g KyAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTsKPj4+PiAgICAgICAgICB1 aW50MzJfdCAgICAgICAgICAgICAgICBwcmVhbWJsZV9zdGF0dXM7Cj4+Pj4gICAgICAgICAgdWlu dDMyX3QgICAgICAgICAgICAgICAgbnVtX2liczsKPj4+PiAgICAgICAgICB2b2lkICAgICAgICAg ICAgICAgICAgICAqb3duZXI7Cj4+Pj4gICAgICAgICAgdWludDY0X3QgICAgICAgICAgICAgICAg ZmVuY2VfY3R4OyAvKiB0aGUgZmVuY2VfY29udGV4dAo+Pj4+IHRoaXMgam9iCj4+Pj4gdXNlcyAq Lwo+Pj4+ICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIHZtX25lZWRzX2ZsdXNoOwo+ Pj4+ICAgICAgICAgIHVuc2lnbmVkICAgICAgICAgICAgICAgIHZtX2lkOwo+Pj4+ICAgICAgICAg IHVpbnQ2NF90ICAgICAgICAgICAgICAgIHZtX3BkX2FkZHI7Cj4+Pj4gICAgICAgICAgdWludDMy X3QgICAgICAgICAgICAgICAgZ2RzX2Jhc2UsIGdkc19zaXplOwo+Pj4+ICAgICAgICAgIHVpbnQz Ml90ICAgICAgICAgICAgICAgIGd3c19iYXNlLCBnd3Nfc2l6ZTsKPj4+PiAgICAgICAgICB1aW50 MzJfdCAgICAgICAgICAgICAgICBvYV9iYXNlLCBvYV9zaXplOwo+Pj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4+IGIvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+PiBpbmRleCA2MDVkNDBlLi4xOWNlMjAyIDEw MDY0NAo+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+PiBAQCAt MTc5LDIxICsxNzksMjEgQEAgaW50IGFtZGdwdV9jc19wYXJzZXJfaW5pdChzdHJ1Y3QgYW1kZ3B1 X2NzX3BhcnNlcgo+Pj4+ICpwLCB2b2lkICpkYXRhKQo+Pj4+ICAgICAgICAgICAgICAgICAgY2Fz ZSBBTURHUFVfQ0hVTktfSURfREVQRU5ERU5DSUVTOgo+Pj4+ICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKPj4+PiAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Cj4+Pj4gICAgICAgICAg ICAgICAgICAgICAgICAgIHJldCA9IC1FSU5WQUw7Cj4+Pj4gICAgICAgICAgICAgICAgICAgICAg ICAgIGdvdG8gZnJlZV9wYXJ0aWFsX2tkYXRhOwo+Pj4+ICAgICAgICAgICAgICAgICAgfQo+Pj4+ ICAgICAgICAgIH0KPj4+PiAgICAtICAgICByZXQgPSBhbWRncHVfam9iX2FsbG9jKHAtPmFkZXYs IG51bV9pYnMsICZwLT5qb2IsIHZtKTsKPj4+PiArICAgICAgIHJldCA9IGFtZGdwdV9qb2JfYWxs b2MocC0+YWRldiwgbnVtX2licywgcC0+Y3R4LT5wcmlvcml0eSwKPj4+PiAmcC0+am9iLCB2bSk7 Cj4+Pj4gICAgICAgICAgaWYgKHJldCkKPj4+PiAgICAgICAgICAgICAgICAgIGdvdG8gZnJlZV9h bGxfa2RhdGE7Cj4+Pj4gICAgICAgICAgaWYgKHAtPnVmX2VudHJ5LnJvYmopCj4+Pj4gICAgICAg ICAgICAgICAgICBwLT5qb2ItPnVmX2FkZHIgPSB1Zl9vZmZzZXQ7Cj4+Pj4gICAgICAgICAga2Zy ZWUoY2h1bmtfYXJyYXkpOwo+Pj4+ICAgICAgICAgIHJldHVybiAwOwo+Pj4+ICAgICAgZnJlZV9h bGxfa2RhdGE6Cj4+Pj4gICAgICAgICAgaSA9IHAtPm5jaHVua3MgLSAxOwo+Pj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmMKPj4+PiBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYwo+Pj4+IGluZGV4IDg2YTEyNDIuLjQ1 YjNjOTAgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2pvYi5jCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5j Cj4+Pj4gQEAgLTMyLDUwICszMiw1MSBAQCBzdGF0aWMgdm9pZCBhbWRncHVfam9iX3RpbWVkb3V0 KHN0cnVjdAo+Pj4+IGFtZF9zY2hlZF9qb2IKPj4+PiAqc19qb2IpCj4+Pj4gICAgewo+Pj4+ICAg ICAgICAgIHN0cnVjdCBhbWRncHVfam9iICpqb2IgPSBjb250YWluZXJfb2Yoc19qb2IsIHN0cnVj dAo+Pj4+IGFtZGdwdV9qb2IsCj4+Pj4gYmFzZSk7Cj4+Pj4gICAgICAgICAgRFJNX0VSUk9SKCJy aW5nICVzIHRpbWVvdXQsIGxhc3Qgc2lnbmFsZWQgc2VxPSV1LCBsYXN0IGVtaXR0ZWQKPj4+PiBz ZXE9JXVcbiIsCj4+Pj4gICAgICAgICAgICAgICAgICAgIGpvYi0+YmFzZS5zY2hlZC0+bmFtZSwK Pj4+PiAgICAgICAgICAgICAgICAgICAgYXRvbWljX3JlYWQoJmpvYi0+cmluZy0+ZmVuY2VfZHJ2 Lmxhc3Rfc2VxKSwKPj4+PiAgICAgICAgICAgICAgICAgICAgam9iLT5yaW5nLT5mZW5jZV9kcnYu c3luY19zZXEpOwo+Pj4+ICAgICAgICAgIGFtZGdwdV9ncHVfcmVzZXQoam9iLT5hZGV2KTsKPj4+ PiAgICB9Cj4+Pj4gICAgLWludCBhbWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2aWNl ICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAo+Pj4+ICtpbnQgYW1kZ3B1X2pvYl9hbGxvYyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgbnVtX2licywgaW50Cj4+Pj4gcHJpb3Jp dHksCj4+Pj4gICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVfam9iICoqam9iLCBz dHJ1Y3QgYW1kZ3B1X3ZtICp2bSkKPj4+PiAgICB7Cj4+Pj4gICAgICAgICAgc2l6ZV90IHNpemUg PSBzaXplb2Yoc3RydWN0IGFtZGdwdV9qb2IpOwo+Pj4+ICAgICAgICAgIGlmIChudW1faWJzID09 IDApCj4+Pj4gICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiAgICAgICAgICBz aXplICs9IHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2liKSAqIG51bV9pYnM7Cj4+Pj4gICAgICAgICAg KmpvYiA9IGt6YWxsb2Moc2l6ZSwgR0ZQX0tFUk5FTCk7Cj4+Pj4gICAgICAgICAgaWYgKCEqam9i KQo+Pj4+ICAgICAgICAgICAgICAgICAgcmV0dXJuIC1FTk9NRU07Cj4+Pj4gICAgICAgICAgKCpq b2IpLT5hZGV2ID0gYWRldjsKPj4+PiAgICAgICAgICAoKmpvYiktPnZtID0gdm07Cj4+Pj4gKyAg ICAgICAoKmpvYiktPnByaW9yaXR5ID0gcHJpb3JpdHk7Cj4+Pj4gICAgICAgICAgKCpqb2IpLT5p YnMgPSAodm9pZCAqKSYoKmpvYilbMV07Cj4+Pj4gICAgICAgICAgKCpqb2IpLT5udW1faWJzID0g bnVtX2liczsKPj4+PiAgICAgICAgICBhbWRncHVfc3luY19jcmVhdGUoJigqam9iKS0+c3luYyk7 Cj4+Pj4gICAgICAgICAgcmV0dXJuIDA7Cj4+Pj4gICAgfQo+Pj4+ICAgICAgaW50IGFtZGdwdV9q b2JfYWxsb2Nfd2l0aF9pYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQKPj4+ PiBzaXplLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBhbWRncHVf am9iICoqam9iKQo+Pj4+ICAgIHsKPj4+PiAgICAgICAgICBpbnQgcjsKPj4+PiAgICAtICAgICBy ID0gYW1kZ3B1X2pvYl9hbGxvYyhhZGV2LCAxLCBqb2IsIE5VTEwpOwo+Pj4+ICsgICAgICAgciA9 IGFtZGdwdV9qb2JfYWxsb2MoYWRldiwgMSwgQU1ER1BVX0NUWF9QUklPUklUWV9OT1JNQUwsIGpv YiwKPj4+PiBOVUxMKTsKPj4+PiAgICAgICAgICBpZiAocikKPj4+PiAgICAgICAgICAgICAgICAg IHJldHVybiByOwo+Pj4+ICAgICAgICAgIHIgPSBhbWRncHVfaWJfZ2V0KGFkZXYsIE5VTEwsIHNp emUsICYoKmpvYiktPmlic1swXSk7Cj4+Pj4gICAgICAgICAgaWYgKHIpCj4+Pj4gICAgICAgICAg ICAgICAgICBrZnJlZSgqam9iKTsKPj4+PiAgICAgICAgICByZXR1cm4gcjsKPj4+PiAgICB9Cj4+ Pj4gICAgQEAgLTE3MCwyMCArMTcxLDI1IEBAIHN0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICphbWRn cHVfam9iX3J1bihzdHJ1Y3QKPj4+PiBhbWRfc2NoZWRfam9iICpzY2hlZF9qb2IpCj4+Pj4gICAg ICAgICAgQlVHX09OKGFtZGdwdV9zeW5jX3BlZWtfZmVuY2UoJmpvYi0+c3luYywgTlVMTCkpOwo+ Pj4+ICAgICAgICAgIHRyYWNlX2FtZGdwdV9zY2hlZF9ydW5fam9iKGpvYik7Cj4+Pj4gICAgICAg ICAgciA9IGFtZGdwdV9pYl9zY2hlZHVsZShqb2ItPnJpbmcsIGpvYi0+bnVtX2licywgam9iLT5p YnMsIGpvYiwKPj4+PiAmZmVuY2UpOwo+Pj4+ICAgICAgICAgIGlmIChyKQo+Pj4+ICAgICAgICAg ICAgICAgICAgRFJNX0VSUk9SKCJFcnJvciBzY2hlZHVsaW5nIElCcyAoJWQpXG4iLCByKTsKPj4+ PiAgICAgICAgICAvKiBpZiBncHUgcmVzZXQsIGh3IGZlbmNlIHdpbGwgYmUgcmVwbGFjZWQgaGVy ZSAqLwo+Pj4+ICAgICAgICAgIGRtYV9mZW5jZV9wdXQoam9iLT5mZW5jZSk7Cj4+Pj4gICAgICAg ICAgam9iLT5mZW5jZSA9IGRtYV9mZW5jZV9nZXQoZmVuY2UpOwo+Pj4+ICsKPj4+PiArICAgICAg IHIgPSBhbWRncHVfcmluZ19lbGV2YXRlX3ByaW9yaXR5KGpvYi0+cmluZywgam9iLT5wcmlvcml0 eSwKPj4+PiBqb2IpOwo+Pj4+ICsgICAgICAgaWYgKHIpCj4+Pj4gKyAgICAgICAgICAgICAgIERS TV9FUlJPUigiRmFpbGVkIHRvIHNldCBqb2IgcHJpb3JpdHkgKCVkKVxuIiwgcik7Cj4+PiBlbGV2 YXRlIHByaW9yaXR5IG9mIHJpbmcgaXMgZm9yIHRoaXMgam9iLCByaWdodD8KPj4+IHlvdSdyZSBz ZXR0aW5nIHByaW9yaXR5IGJ5IG1taW8gbWV0aG9kIGFuZCByZXN0b3JlIHByaW9yaXR5IGJ5IGZl bmNlIGNiLAo+Pj4geW91ciBtZXRob2QgaXNuJ3QgcHJlY2lzZS4gSSBoYXZlIHNvbWUgY29tbWVu dHM6Cj4+PiAxLiBzZWVtcyB3ZSBzaG91bGQgZWxldmF0ZV9wcmlvcml0eSBiZWZvcmUgYW1kZ3B1 X2liX3NjaGVkdWxlLCBzbwo+Pj4gdGhhdCB0aGUKPj4+IHJpbmcgaXMgcHJvcGVyIHByaW9yaXR5 IGZvciB0aGlzIHN1Ym1pc3Npb24uCj4gWWVhaCB0aGFua3MgZm9yIHRoZSBjYXRjaCBvbiB0aGF0 LiBUaGlzIG1pZ2h0IHJlc3VsdCBpbiB0aGUgZmlyc3QKPiBwYWNrZXRzIGJlaW5nIGVtaXR0ZWQg d2l0aCBhIG5ld193YXZlX3ByaW9yaXR5IGxvd2VyIHRoYW4gZGVzaXJlZCBhbmQKPiBpbnRyb2R1 Y2UgZXh0cmEgZGVsYXkuCj4+PiAyLiBjYW4gd2UgcHV0IHNldHRpbmcgb2YgcmVnaXN0ZXJzIG9m IFNQSSBpbnRvIHJpbmcgYnVmZmVyIGFzIGEgY29tbWFuZAo+Pj4gZnJhbWU/IGV2ZXZhdGVfcHJp b3JpdHkgc2V0dGluZyBpcyBmcm9udCBvZiBhIGNvbW1hbmQgZnJhbWUgYW5kCj4+PiByZXN0b3Jl X3ByaW9yaXR5IGlzIGVuZCBvZiBmcmFtZS4KPiBXZSBjYW4ndCBkbyBpdCBvbiB0aGUgcmluZyBi ZWNhdXNlIHdlIG5lZWQgYW55IHdvcmsgdGhhdCBpcyBhbHJlYWR5Cj4gY29tbWl0dGVkIHRvIHRo ZSByaW5nIHRoZSBpbmhlcml0IHRoZSBoaWdoZXN0IHByaW9yaXR5LiBPdGhlcndpc2UgdGhlCj4g aGlnaCBwcmlvcml0eSB3b3JrIHdvdWxkIGhhdmUgdG8gd2FpdCBmb3IgdGhlIHJlZ3VsYXIgcHJp b3JpdHkgd29yayAodG8KPiBjb21wbGV0ZSBhdCByZWd1bGFyIHByaW9yaXR5IGxhdGVuY3kpIGJl Zm9yZSBpdCBjYW4gYmVnaW4uCj4KPiBGb3IgbW9yZSBkZXRhaWxzIHNlZSBteSByZXBseSB0byBD aHJpc3RpYW4ncyBlbWFpbCByZWdhcmRpbmcgdGhpcyB0b3BpYy4KPj4gV2Ugc2hvdWxkIHByb2Jh Ymx5IGNoZWNrIGlmIGNoYW5naW5nIHRoZSBxdWV1ZSBwcmlvcml0eSByZXF1aXJlcyB0aGF0Cj4+ IHRoZSBlbmdpbmUgYmUgaWRsZSBhcyB3ZWxsLiAgSSB2YWd1ZWx5IHJlY2FsbCB0aGVyZSBiZWlu ZyBhIHBhY2tldCBmb3IKPj4gc29tZSBvZiB0aGlzIHRoYXQgd2FzIGFkZGVkIGZvciBIU0EuCj4g K0pheQo+Cj4gSGV5IEpheSwKPgo+IERvIHlvdSBoYXZlIG1vcmUgZGV0YWlscyBvbiB0aGlzPwo+ Cj4gSSB3cm90ZSB0aGVzZSBwYXRjaGVzIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgY2hhbmdp bmcgdGhlIHByaW9yaXR5Cj4gd2hpbGUgdGhlIGVuZ2luZSBpcyBidXN5IHdhcyBhbGxvd2VkLCBi dXQgdGhhdCBpdCB3b3VsZCBub3QgaGF2ZSBhbnkKPiBlZmZlY3QgZm9yIHdhdmVzIHRoYXQgaGF2 ZSBhbHJlYWR5IGJlZW4gZW1pdHRlZC4KPgo+IFdvdWxkIGNoYW5naW5nIHRoZSBwcmlvcml0aWVz IHdoaWxlIHRoZSBlbmdpbmVzIGFyZSBhY3RpdmUgY2F1c2UgYW55Cj4gaGFuZ3Mgb3IgYmFkIHNp ZGUgZWZmZWN0cz8KPj4KPj4gQWxleAo+Pgo+Pj4gMy4gaWYgbm8gcHJpb3JpdHkgZXhjaGFuZ2Vz LCB3ZSBjYW4gc2tpcCBzZXR0aW5nIGZvciBwcmlvcml0eSBmb3IKPj4+IGNvbW1hbmQKPj4+IHN1 Ym1pc3Npb24uCj4gSSBvcmlnaW5hbGx5IGhhZCBhIGNoZWNrIHRoYXQgc2tpcHBlZCBzZXRfcHJp b3JpdHkoKSBpZiB0aGUgcHJpb3JpdGllcwo+IG1hdGNoZWQsIGJ1dCBJIGRlY2lkZWQgdG8gcmVt b3ZlIGl0Lgo+Cj4gVGhlIHJlYXNvbiBpcyB0aGF0IHdoaWxlIG5vIGNoYW5nZXMgdG8gdGhlIEhX IHN0YXRlIG1heSBuZWVkIHRvIGhhcHBlbiwKPiB0aGUgaW1wbGVtZW50YXRpb24gbWF5IG5lZWQg dG8gdHJhY2sgZXh0cmEgbWV0YWRhdGEgYWJvdXQgd2hvIGlzCj4gZXhlY3V0aW5nIGhpZ2ggcHJp b3JpdHkgd29yayBvbiB0aGUgcmluZy4gVGhlcmVmb3JlIHdoZXRoZXIgdGhlCj4gb3BlcmF0aW9u IGlzIGEgbm9vcCBvciBub3Qgc2hvdWxkIGJlIGRlY2lkZWQgYnkgdGhlIHNwZWNpZmljCj4gaW1w bGVtZW50YXRpb24uCj4KPiBIYXZpbmcgc2FpZCB0aGF0LCBJIHRoaW5rIGdmeF92OF8wX3Jpbmdf c2V0X3ByaW9yaXR5X2NvbXB1dGUoKSBjYW4gYmUKPiBpbXByb3ZlZCB0byBza2lwIG1vcmUgd29y ay4gU28gSSdsbCBhcHBseSB5b3VyIHN1Z2dlc3Rpb24gdGhlcmUuCgpBcHBhcmVudGx5IEkgd2Fz IG1pc3JlbWVtYmVyaW5nIGFuIG9sZCBpbXBsZW1lbnRhdGlvbiBvZiBjdV9yZXNlcnZlKCkuCgpU aGUgY3VycmVudCBwYXRjaCBhbHJlYWR5IGRvZXMgd2hhdCB5b3UgcmVxdWVzdGVkLiBSZWZlciB0 byB0aGUgCmZvbGxvd2luZyBjb2RlIGluICBhbWRncHVfcmluZ19lbGV2YXRlX3ByaW9yaXR5KCk6 CgppZiAocHJpb3JpdHkgPD0gcmluZy0+cHJpb3JpdHkpCiAgICAgICAgICAgICAgICBnb3RvIG91 dF91bmxvY2s7Cgo+Cj4+Pgo+Pj4gUmVnYXJkcywKPj4+IERhdmlkIFpob3UKPj4+Cj4+Pj4gKwo+ Pj4+ICAgICAgICAgIGFtZGdwdV9qb2JfZnJlZV9yZXNvdXJjZXMoam9iKTsKPj4+PiAgICAgICAg ICByZXR1cm4gZmVuY2U7Cj4+Pj4gICAgfQo+Pj4+ICAgICAgY29uc3Qgc3RydWN0IGFtZF9zY2hl ZF9iYWNrZW5kX29wcyBhbWRncHVfc2NoZWRfb3BzID0gewo+Pj4+ICAgICAgICAgIC5kZXBlbmRl bmN5ID0gYW1kZ3B1X2pvYl9kZXBlbmRlbmN5LAo+Pj4+ICAgICAgICAgIC5ydW5fam9iID0gYW1k Z3B1X2pvYl9ydW4sCj4+Pj4gICAgICAgICAgLnRpbWVkb3V0X2pvYiA9IGFtZGdwdV9qb2JfdGlt ZWRvdXQsCj4+Pj4gICAgICAgICAgLmZyZWVfam9iID0gYW1kZ3B1X2pvYl9mcmVlX2NiCj4+Pj4g ICAgfTsKPj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X3JpbmcuYwo+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwo+ Pj4+IGluZGV4IDgwY2IwNTEuLjEyYmM3YTkgMTAwNjQ0Cj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYwo+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPj4+PiBAQCAtMTkyLDIwICsxOTIsODkgQEAgdm9pZCBh bWRncHVfcmluZ19jb21taXQoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+Pj4+ICAgICAqIFJl c2V0IHRoZSBkcml2ZXIncyBjb3B5IG9mIHRoZSB3cHRyIChhbGwgYXNpY3MpLgo+Pj4+ICAgICAq Lwo+Pj4+ICAgIHZvaWQgYW1kZ3B1X3JpbmdfdW5kbyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcp Cj4+Pj4gICAgewo+Pj4+ICAgICAgICAgIHJpbmctPndwdHIgPSByaW5nLT53cHRyX29sZDsKPj4+ PiAgICAgICAgICBpZiAocmluZy0+ZnVuY3MtPmVuZF91c2UpCj4+Pj4gICAgICAgICAgICAgICAg ICByaW5nLT5mdW5jcy0+ZW5kX3VzZShyaW5nKTsKPj4+PiAgICB9Cj4+Pj4gICAgK3N0YXRpYyB2 b2lkIGFtZGdwdV9yaW5nX3Jlc3RvcmVfcHJpb3JpdHlfY2Ioc3RydWN0IGRtYV9mZW5jZSAqZiwK Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBk bWFfZmVuY2VfY2IgKmNiKQo+Pj4+ICt7Cj4+Pj4gKyAgICAgICBpbnQgaTsKPj4+PiArICAgICAg IHN0cnVjdCBhbWRncHVfam9iICpjYl9qb2IgPQo+Pj4+ICsgICAgICAgICAgICAgICBjb250YWlu ZXJfb2YoY2IsIHN0cnVjdCBhbWRncHVfam9iLCBjYik7Cj4+Pj4gKyAgICAgICBzdHJ1Y3QgYW1k Z3B1X3JpbmcgKnJpbmcgPSBjYl9qb2ItPnJpbmc7Cj4+Pj4gKwo+Pj4+ICsgICAgICAgc3Bpbl9s b2NrKCZyaW5nLT5wcmlvcml0eV9sb2NrKTsKPj4+PiArCj4+Pj4gKyAgICAgICAvKiByZW1vdmUg b3Vyc2VsdmVzIGZyb20gdGhlIGxpc3QgaWYgbmVjZXNzYXJ5ICovCj4+Pj4gKyAgICAgICBpZiAo Y2Jfam9iID09IHJpbmctPmxhc3Rfam9iW2NiX2pvYi0+cHJpb3JpdHldKQo+Pj4+ICsgICAgICAg ICAgICAgICByaW5nLT5sYXN0X2pvYltjYl9qb2ItPnByaW9yaXR5XSA9IE5VTEw7Cj4+Pj4gKwo+ Pj4+ICsgICAgICAgLyogc29tZXRoaW5nIGhpZ2hlciBwcmlvIGlzIGV4ZWN1dGluZywgbm8gbmVl ZCB0byBkZWNheSAqLwo+Pj4+ICsgICAgICAgaWYgKHJpbmctPnByaW9yaXR5ID4gY2Jfam9iLT5w cmlvcml0eSkKPj4+PiArICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+Pj4+ICsKPj4+ PiArICAgICAgIC8qIGRlY2F5IHByaW9yaXR5IHRvIHRoZSBuZXh0IGxldmVsIHdpdGggYSBqb2Ig YXZhaWxhYmxlICovCj4+Pj4gKyAgICAgICBmb3IgKGkgPSBjYl9qb2ItPnByaW9yaXR5OyBpID49 IDA7IGktLSkgewo+Pj4+ICsgICAgICAgICAgICAgICBpZiAoaSA9PSBBTURHUFVfQ1RYX1BSSU9S SVRZX05PUk1BTCB8fAo+Pj4+IHJpbmctPmxhc3Rfam9iW2ldKQo+Pj4+IHsKPj4+PiArICAgICAg ICAgICAgICAgICAgICAgICByaW5nLT5wcmlvcml0eSA9IGk7Cj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgaWYgKHJpbmctPmZ1bmNzLT5zZXRfcHJpb3JpdHkpCj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByaW5nLT5mdW5jcy0+c2V0X3ByaW9yaXR5KHJpbmcsIGkpOwo+ Pj4+ICsKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKPj4+PiArICAgICAgICAg ICAgICAgfQo+Pj4+ICsgICAgICAgfQo+Pj4+ICsKPj4+PiArb3V0X3VubG9jazoKPj4+PiArICAg ICAgIHNwaW5fdW5sb2NrKCZyaW5nLT5wcmlvcml0eV9sb2NrKTsKPj4+PiArfQo+Pj4+ICsKPj4+ PiArLyoqCj4+Pj4gKyAqIGFtZGdwdV9yaW5nX2VsZXZhdGVfcHJpb3JpdHkgLSBjaGFuZ2UgdGhl IHJpbmcncyBwcmlvcml0eQo+Pj4+ICsgKgo+Pj4+ICsgKiBAcmluZzogYW1kZ3B1X3Jpbmcgc3Ry dWN0dXJlIGhvbGRpbmcgdGhlIGluZm9ybWF0aW9uCj4+Pj4gKyAqIEBwcmlvcml0eTogdGFyZ2V0 IHByaW9yaXR5Cj4+Pj4gKyAqIEBqb2I6IHByaW9yaXR5IHNob3VsZCByZW1haW4gZWxldmF0ZWQg Zm9yIHRoZSBkdXJhdGlvbiBvZiB0aGlzIGpvYgo+Pj4+ICsgKgo+Pj4+ICsgKiBVc2UgSFcgc3Bl Y2lmaWMgbWVjaGFuaXNtJ3MgdG8gZWxldmF0ZSB0aGUgcmluZydzIHByaW9yaXR5IHdoaWxlCj4+ Pj4gQGpvYgo+Pj4+ICsgKiBpcyBleGVjdXRpbmcuIE9uY2UgQGpvYiBmaW5pc2hlcyBleGVjdXRp bmcsIHRoZSByaW5nIHdpbGwgcmVzZXQKPj4+PiBiYWNrCj4+Pj4gKyAqIHRvIG5vcm1hbCBwcmlv cml0eS4KPj4+PiArICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG90aGVyd2lzZQo+Pj4+ ICsgKi8KPj4+PiAraW50IGFtZGdwdV9yaW5nX2VsZXZhdGVfcHJpb3JpdHkoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLCBpbnQKPj4+PiBwcmlvcml0eSwKPj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iKQo+Pj4+ICt7Cj4+Pj4gKyAgICAg ICBpZiAocHJpb3JpdHkgPCAwIHx8IHByaW9yaXR5ID49IEFNREdQVV9DVFhfUFJJT1JJVFlfTlVN KQo+Pj4+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiArCj4+Pj4gKyAgICAg ICBzcGluX2xvY2soJnJpbmctPnByaW9yaXR5X2xvY2spOwo+Pj4+ICsgICAgICAgcmluZy0+bGFz dF9qb2JbcHJpb3JpdHldID0gam9iOwo+Pj4+ICsKPj4+PiArICAgICAgIGlmIChwcmlvcml0eSA8 PSByaW5nLT5wcmlvcml0eSkKPj4+PiArICAgICAgICAgICAgICAgZ290byBvdXRfdW5sb2NrOwo+ Pj4+ICsKPj4+PiArICAgICAgIHJpbmctPnByaW9yaXR5ID0gcHJpb3JpdHk7Cj4+Pj4gKyAgICAg ICBpZiAocmluZy0+ZnVuY3MtPnNldF9wcmlvcml0eSkKPj4+PiArICAgICAgICAgICAgICAgcmlu Zy0+ZnVuY3MtPnNldF9wcmlvcml0eShyaW5nLCBwcmlvcml0eSk7Cj4+Pj4gKwo+Pj4+ICsgICAg ICAgZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhqb2ItPmZlbmNlLCAmam9iLT5jYiwKPj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1kZ3B1X3JpbmdfcmVzdG9yZV9wcmlvcml0eV9j Yik7Cj4+Pj4gKwo+Pj4+ICtvdXRfdW5sb2NrOgo+Pj4+ICsgICAgICAgc3Bpbl91bmxvY2soJnJp bmctPnByaW9yaXR5X2xvY2spOwo+Pj4+ICsgICAgICAgcmV0dXJuIDA7Cj4+Pj4gK30KPj4+PiAr Cj4+Pj4gICAgLyoqCj4+Pj4gICAgICogYW1kZ3B1X3JpbmdfaW5pdCAtIGluaXQgZHJpdmVyIHJp bmcgc3RydWN0Lgo+Pj4+ICAgICAqCj4+Pj4gICAgICogQGFkZXY6IGFtZGdwdV9kZXZpY2UgcG9p bnRlcgo+Pj4+ICAgICAqIEByaW5nOiBhbWRncHVfcmluZyBzdHJ1Y3R1cmUgaG9sZGluZyByaW5n IGluZm9ybWF0aW9uCj4+Pj4gICAgICogQG1heF9uZHc6IG1heGltdW0gbnVtYmVyIG9mIGR3IGZv ciByaW5nIGFsbG9jCj4+Pj4gICAgICogQG5vcDogbm9wIHBhY2tldCBmb3IgdGhpcyByaW5nCj4+ Pj4gICAgICoKPj4+PiAgICAgKiBJbml0aWFsaXplIHRoZSBkcml2ZXIgaW5mb3JtYXRpb24gZm9y IHRoZSBzZWxlY3RlZCByaW5nIChhbGwKPj4+PiBhc2ljcykuCj4+Pj4gICAgICogUmV0dXJucyAw IG9uIHN1Y2Nlc3MsIGVycm9yIG9uIGZhaWx1cmUuCj4+Pj4gQEAgLTI3NSwyMCArMzQ0LDIyIEBA IGludCBhbWRncHVfcmluZ19pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+Pj4+IHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAodm9pZCAqKikmcmluZy0+cmluZyk7Cj4+Pj4gICAgICAgICAgICAg ICAgICBpZiAocikgewo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGFkZXYt PmRldiwgIiglZCkgcmluZyBjcmVhdGUKPj4+PiBmYWlsZWRcbiIsCj4+Pj4gcik7Cj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwo+Pj4+ICAgICAgICAgICAgICAgICAgfQo+ Pj4+ICAgICAgICAgICAgICAgICAgbWVtc2V0KCh2b2lkICopcmluZy0+cmluZywgMCwgcmluZy0+ cmluZ19zaXplKTsKPj4+PiAgICAgICAgICB9Cj4+Pj4gICAgICAgICAgcmluZy0+cHRyX21hc2sg PSAocmluZy0+cmluZ19zaXplIC8gNCkgLSAxOwo+Pj4+ICAgICAgICAgIHJpbmctPm1heF9kdyA9 IG1heF9kdzsKPj4+PiAgICAgICAgICByaW5nLT5od19pcCA9IGh3X2lwOwo+Pj4+ICsgICAgICAg cmluZy0+cHJpb3JpdHkgPSBBTURHUFVfQ1RYX1BSSU9SSVRZX05PUk1BTDsKPj4+PiArICAgICAg IHNwaW5fbG9ja19pbml0KCZyaW5nLT5wcmlvcml0eV9sb2NrKTsKPj4+PiAgICAgICAgICBJTklU X0xJU1RfSEVBRCgmcmluZy0+bHJ1X2xpc3QpOwo+Pj4+ICAgICAgICAgIGFtZGdwdV9yaW5nX2xy dV90b3VjaChhZGV2LCByaW5nKTsKPj4+PiAgICAgICAgICBpZiAoYW1kZ3B1X2RlYnVnZnNfcmlu Z19pbml0KGFkZXYsIHJpbmcpKSB7Cj4+Pj4gICAgICAgICAgICAgICAgICBEUk1fRVJST1IoIkZh aWxlZCB0byByZWdpc3RlciBkZWJ1Z2ZzIGZpbGUgZm9yIHJpbmdzCj4+Pj4gIVxuIik7Cj4+Pj4g ICAgICAgICAgfQo+Pj4+ICAgICAgICAgIHJldHVybiAwOwo+Pj4+ICAgIH0KPj4+PiAgICAgIC8q Kgo+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmlu Zy5oCj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+Pj4g aW5kZXggZWNkZDg3Yy4uYmVmYzI5ZiAxMDA2NDQKPj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3JpbmcuaAo+Pj4+IEBAIC0xNywyMCArMTcsMjEgQEAKPj4+PiAgICAgKiBU SEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sCj4+Pj4gREFNQUdFUwo+Pj4+IE9SCj4+Pj4gICAgICogT1RIRVIgTElBQklMSVRZLCBXSEVU SEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUgo+Pj4+IE9USEVSV0lTRSwKPj4+ PiAgICAgKiBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRQo+Pj4+IFVTRSBPUgo+Pj4+ICAgICAqIE9USEVSIERFQUxJTkdTIElOIFRI RSBTT0ZUV0FSRS4KPj4+PiAgICAgKgo+Pj4+ICAgICAqIEF1dGhvcnM6IENocmlzdGlhbiBLw7Zu aWcKPj4+PiAgICAgKi8KPj4+PiAgICAjaWZuZGVmIF9fQU1ER1BVX1JJTkdfSF9fCj4+Pj4gICAg I2RlZmluZSBfX0FNREdQVV9SSU5HX0hfXwo+Pj4+ICAgICsjaW5jbHVkZSA8ZHJtL2FtZGdwdV9k cm0uaD4KPj4+PiAgICAjaW5jbHVkZSAiZ3B1X3NjaGVkdWxlci5oIgo+Pj4+ICAgICAgLyogbWF4 IG51bWJlciBvZiByaW5ncyAqLwo+Pj4+ICAgICNkZWZpbmUgQU1ER1BVX01BWF9SSU5HUyAgICAg ICAgICAgICAgMTYKPj4+PiAgICAjZGVmaW5lIEFNREdQVV9NQVhfR0ZYX1JJTkdTICAgICAgICAg IDEKPj4+PiAgICAjZGVmaW5lIEFNREdQVV9NQVhfQ09NUFVURV9SSU5HUyAgICAgIDgKPj4+PiAg ICAjZGVmaW5lIEFNREdQVV9NQVhfVkNFX1JJTkdTICAgICAgICAgIDMKPj4+PiAgICAgIC8qIHNv bWUgc3BlY2lhbCB2YWx1ZXMgZm9yIHRoZSBvd25lciBmaWVsZCAqLwo+Pj4+ICAgICNkZWZpbmUg QU1ER1BVX0ZFTkNFX09XTkVSX1VOREVGSU5FRCAgKCh2b2lkKikwdWwpCj4+Pj4gQEAgLTEzMCwy MCArMTMxLDIyIEBAIHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyB7Cj4+Pj4gICAgICAgICAgdm9p ZCAoKnBhZF9pYikoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2liCj4+ Pj4gKmliKTsKPj4+PiAgICAgICAgICB1bnNpZ25lZCAoKmluaXRfY29uZF9leGVjKShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+ICAgICAgICAgIHZvaWQgKCpwYXRjaF9jb25kX2V4ZWMp KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQKPj4+PiBvZmZzZXQpOwo+Pj4+ICAg ICAgICAgIC8qIG5vdGUgdXNhZ2UgZm9yIGNsb2NrIGFuZCBwb3dlciBnYXRpbmcgKi8KPj4+PiAg ICAgICAgICB2b2lkICgqYmVnaW5fdXNlKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+ ICAgICAgICAgIHZvaWQgKCplbmRfdXNlKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+ ICAgICAgICAgIHZvaWQgKCplbWl0X3N3aXRjaF9idWZmZXIpIChzdHJ1Y3QgYW1kZ3B1X3Jpbmcg KnJpbmcpOwo+Pj4+ICAgICAgICAgIHZvaWQgKCplbWl0X2NudHhjbnRsKSAoc3RydWN0IGFtZGdw dV9yaW5nICpyaW5nLCB1aW50MzJfdAo+Pj4+IGZsYWdzKTsKPj4+PiAgICAgICAgICB2b2lkICgq ZW1pdF9ycmVnKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IHJlZyk7Cj4+Pj4g ICAgICAgICAgdm9pZCAoKmVtaXRfd3JlZykoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50 MzJfdCByZWcsCj4+Pj4gdWludDMyX3QKPj4+PiB2YWwpOwo+Pj4+ICsgICAgICAgLyogcHJpb3Jp dHkgZnVuY3Rpb25zICovCj4+Pj4gKyAgICAgICB2b2lkICgqc2V0X3ByaW9yaXR5KSAoc3RydWN0 IGFtZGdwdV9yaW5nICpyaW5nLCBpbnQgcHJpb3JpdHkpOwo+Pj4+ICAgIH07Cj4+Pj4gICAgICBz dHJ1Y3QgYW1kZ3B1X3Jpbmcgewo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfZGV2aWNlICAg ICAgICAgICAgKmFkZXY7Cj4+Pj4gICAgICAgICAgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1 bmNzICAqZnVuY3M7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZGdwdV9mZW5jZV9kcml2ZXIgICAg ICBmZW5jZV9kcnY7Cj4+Pj4gICAgICAgICAgc3RydWN0IGFtZF9ncHVfc2NoZWR1bGVyICAgICAg ICBzY2hlZDsKPj4+PiAgICAgICAgICBzdHJ1Y3QgbGlzdF9oZWFkICAgICAgICAgICAgICAgIGxy dV9saXN0Owo+Pj4+ICAgICAgICAgIHN0cnVjdCBhbWRncHVfYm8gICAgICAgICpyaW5nX29iajsK Pj4+PiBAQCAtMTY1LDMxICsxNjgsMzkgQEAgc3RydWN0IGFtZGdwdV9yaW5nIHsKPj4+PiAgICAg ICAgICBzdHJ1Y3QgYW1kZ3B1X2JvICAgICAgICAqbXFkX29iajsKPj4+PiAgICAgICAgICB1MzIg ICAgICAgICAgICAgICAgICAgICBkb29yYmVsbF9pbmRleDsKPj4+PiAgICAgICAgICBib29sICAg ICAgICAgICAgICAgICAgICB1c2VfZG9vcmJlbGw7Cj4+Pj4gICAgICAgICAgdW5zaWduZWQgICAg ICAgICAgICAgICAgd3B0cl9vZmZzOwo+Pj4+ICAgICAgICAgIHVuc2lnbmVkICAgICAgICAgICAg ICAgIGZlbmNlX29mZnM7Cj4+Pj4gICAgICAgICAgdWludDY0X3QgICAgICAgICAgICAgICAgY3Vy cmVudF9jdHg7Cj4+Pj4gICAgICAgICAgY2hhciAgICAgICAgICAgICAgICAgICAgbmFtZVsxNl07 Cj4+Pj4gICAgICAgICAgdW5zaWduZWQgICAgICAgICAgICAgICAgY29uZF9leGVfb2ZmczsKPj4+ PiAgICAgICAgICB1NjQgICAgICAgICAgICAgICAgICAgICBjb25kX2V4ZV9ncHVfYWRkcjsKPj4+ PiAgICAgICAgICB2b2xhdGlsZSB1MzIgICAgICAgICAgICAqY29uZF9leGVfY3B1X2FkZHI7Cj4+ Pj4gKwo+Pj4+ICsgICAgICAgc3BpbmxvY2tfdCAgICAgICAgICAgICAgcHJpb3JpdHlfbG9jazsK Pj4+PiArICAgICAgIC8qIHByb3RlY3RlZCBieSBwcmlvcml0eV9sb2NrICovCj4+Pj4gKyAgICAg ICBzdHJ1Y3QgYW1kZ3B1X2pvYiAgICAgICAqbGFzdF9qb2JbQU1ER1BVX0NUWF9QUklPUklUWV9O VU1dOwo+Pj4+ICsgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcHJpb3JpdHk7Cj4+Pj4g Kwo+Pj4+ICAgICNpZiBkZWZpbmVkKENPTkZJR19ERUJVR19GUykKPj4+PiAgICAgICAgICBzdHJ1 Y3QgZGVudHJ5ICplbnQ7Cj4+Pj4gICAgI2VuZGlmCj4+Pj4gICAgfTsKPj4+PiAgICAgIGludCBh bWRncHVfcmluZ19pc192YWxpZF9pbmRleChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPj4+ PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBod19pcCwgaW50IHJpbmcpOwo+ Pj4+ICAgIGludCBhbWRncHVfcmluZ19hbGxvYyhzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVu c2lnbmVkIG5kdyk7Cj4+Pj4gICAgdm9pZCBhbWRncHVfcmluZ19pbnNlcnRfbm9wKHN0cnVjdCBh bWRncHVfcmluZyAqcmluZywgdWludDMyX3QKPj4+PiBjb3VudCk7Cj4+Pj4gICAgdm9pZCBhbWRn cHVfcmluZ19nZW5lcmljX3BhZF9pYihzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHN0cnVjdAo+ Pj4+IGFtZGdwdV9pYiAqaWIpOwo+Pj4+ICAgIHZvaWQgYW1kZ3B1X3JpbmdfY29tbWl0KHN0cnVj dCBhbWRncHVfcmluZyAqcmluZyk7Cj4+Pj4gICAgdm9pZCBhbWRncHVfcmluZ191bmRvKHN0cnVj dCBhbWRncHVfcmluZyAqcmluZyk7Cj4+Pj4gK2ludCBhbWRncHVfcmluZ19lbGV2YXRlX3ByaW9y aXR5KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgaW50Cj4+Pj4gcHJpb3JpdHksCj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGFtZGdwdV9qb2IgKmpvYik7Cj4+ Pj4gICAgaW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0 cnVjdCBhbWRncHVfcmluZwo+Pj4+ICpyaW5nLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICBp bnQgaHdfaXAsIHVuc2lnbmVkIHJpbmdfc2l6ZSwKPj4+PiAgICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGFtZGdwdV9pcnFfc3JjICppcnFfc3JjLCB1bnNpZ25lZAo+Pj4+IGlycV90eXBlKTsK Pj4+PiAgICB2b2lkIGFtZGdwdV9yaW5nX2Zpbmkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKTsK Pj4+PiAgICBpbnQgYW1kZ3B1X3JpbmdfbHJ1X2dldChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgaW50IGh3X2lwLAo+Pj4+ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKipyaW5nKTsKPj4+PiAgICB2b2lkIGFtZGdwdV9yaW5nX2xydV90b3VjaChzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiwgc3RydWN0Cj4+Pj4gYW1kZ3B1X3JpbmcgKnJpbmcpOwo+Pj4+ ICAgICAgI2VuZGlmCj4+Pgo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KPj4+IGFtZC1nZnggbWFpbGluZyBsaXN0Cj4+PiBhbWQtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwo+Pj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9hbWQtZ2Z4Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 Cg==