From mboxrd@z Thu Jan 1 00:00:00 1970 From: zhoucm1 Subject: Re: [PATCH 19/22] drm/amdgpu: add framework for HW specific priority settings Date: Wed, 1 Mar 2017 15:27:25 +0800 Message-ID: <58B677DD.4070408@amd.com> References: <1488320089-22035-1-git-send-email-andresx7@gmail.com> <1488320089-22035-20-git-send-email-andresx7@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1488320089-22035-20-git-send-email-andresx7-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> 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: Andres Rodriguez , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org CgpPbiAyMDE35bm0MDPmnIgwMeaXpSAwNjoxNCwgQW5kcmVzIFJvZHJpZ3VleiB3cm90ZToKPiBB ZGQgYW4gaW5pdGlhbCBmcmFtZXdvcmsgZm9yIGNoYW5naW5nIHRoZSBIVyBwcmlvcml0aWVzIG9m IHJpbmdzLiBUaGUKPiBmcmFtZXdvcmsgYWxsb3dzIHJlcXVlc3RpbmcgcHJpb3JpdHkgY2hhbmdl cyBmb3IgdGhlIGxpZmV0aW1lIG9mIGFuCj4gYW1kZ3B1X2pvYi4gQWZ0ZXIgdGhlIGpvYiBjb21w bGV0ZXMgdGhlIHByaW9yaXR5IHdpbGwgZGVjYXkgdG8gdGhlIG5leHQKPiBsb3dlc3QgcHJpb3Jp dHkgZm9yIHdoaWNoIGEgcmVxdWVzdCBpcyBzdGlsbCB2YWxpZC4KPgo+IEEgbmV3IHJpbmcgZnVu Y3Rpb24gc2V0X3ByaW9yaXR5KCkgY2FuIG5vdyBiZSBwb3B1bGF0ZWQgdG8gdGFrZSBjYXJlIG9m Cj4gdGhlIEhXIHNwZWNpZmljIHByb2dyYW1taW5nIHNlcXVlbmNlIGZvciBwcmlvcml0eSBjaGFu Z2VzLgo+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmVzIFJvZHJpZ3VleiA8YW5kcmVzeDdAZ21haWwu Y29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggICAgICB8 ICA0ICstCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyAgIHwgIDIg Ky0KPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuYyAgfCAxMCArKysr LQo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuYyB8IDcxICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcmluZy5oIHwgMTEgKysrKysKPiAgIDUgZmlsZXMgY2hhbmdlZCwgOTQgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5o Cj4gaW5kZXggMzY2ZjZkMy4uMDY3NjQ5NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdS5oCj4gQEAgLTYzNiwyMSArNjM2LDIxIEBAIHN0cnVjdCBhbWRncHVfZmxpcF93b3JrIHsK PiAgIHN0cnVjdCBhbWRncHVfaWIgewo+ICAgCXN0cnVjdCBhbWRncHVfc2FfYm8JCSpzYV9ibzsK PiAgIAl1aW50MzJfdAkJCWxlbmd0aF9kdzsKPiAgIAl1aW50NjRfdAkJCWdwdV9hZGRyOwo+ICAg CXVpbnQzMl90CQkJKnB0cjsKPiAgIAl1aW50MzJfdAkJCWZsYWdzOwo+ICAgfTsKPiAgIAo+ICAg ZXh0ZXJuIGNvbnN0IHN0cnVjdCBhbWRfc2NoZWRfYmFja2VuZF9vcHMgYW1kZ3B1X3NjaGVkX29w czsKPiAgIAo+IC1pbnQgYW1kZ3B1X2pvYl9hbGxvYyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diwgdW5zaWduZWQgbnVtX2licywKPiAraW50IGFtZGdwdV9qb2JfYWxsb2Moc3RydWN0IGFtZGdw dV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIG51bV9pYnMsIGludCBwcmlvcml0eSwKPiAgIAkJICAg ICBzdHJ1Y3QgYW1kZ3B1X2pvYiAqKmpvYiwgc3RydWN0IGFtZGdwdV92bSAqdm0pOwo+ICAgaW50 IGFtZGdwdV9qb2JfYWxsb2Nfd2l0aF9pYihzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5z aWduZWQgc2l6ZSwKPiAgIAkJCSAgICAgc3RydWN0IGFtZGdwdV9qb2IgKipqb2IpOwo+ICAgCj4g ICB2b2lkIGFtZGdwdV9qb2JfZnJlZV9yZXNvdXJjZXMoc3RydWN0IGFtZGdwdV9qb2IgKmpvYik7 Cj4gICB2b2lkIGFtZGdwdV9qb2JfZnJlZShzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iKTsKPiAgIGlu dCBhbWRncHVfam9iX3N1Ym1pdChzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iLCBzdHJ1Y3QgYW1kZ3B1 X3JpbmcgKnJpbmcsCj4gICAJCSAgICAgIHN0cnVjdCBhbWRfc2NoZWRfZW50aXR5ICplbnRpdHks IHZvaWQgKm93bmVyLAo+ICAgCQkgICAgICBzdHJ1Y3QgZG1hX2ZlbmNlICoqZik7Cj4gICAKPiBA QCAtOTkwLDIwICs5OTAsMjIgQEAgc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgewo+ICAgI2RlZmlu ZSBBTURHUFVfVk1fRE9NQUlOICAgICAgICAgICAgICAgICAgICAoMSA8PCAzKSAvKiBiaXQgc2V0 IG1lYW5zIGluIHZpcnR1YWwgbWVtb3J5IGNvbnRleHQgKi8KPiAgIAo+ICAgc3RydWN0IGFtZGdw dV9qb2Igewo+ICAgCXN0cnVjdCBhbWRfc2NoZWRfam9iICAgIGJhc2U7Cj4gICAJc3RydWN0IGFt ZGdwdV9kZXZpY2UJKmFkZXY7Cj4gICAJc3RydWN0IGFtZGdwdV92bQkqdm07Cj4gICAJc3RydWN0 IGFtZGdwdV9yaW5nCSpyaW5nOwo+ICAgCXN0cnVjdCBhbWRncHVfc3luYwlzeW5jOwo+ICAgCXN0 cnVjdCBhbWRncHVfaWIJKmliczsKPiAgIAlzdHJ1Y3QgZG1hX2ZlbmNlCSpmZW5jZTsgLyogdGhl IGh3IGZlbmNlICovCj4gKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiCWNiOwo+ICsJaW50CQkJcHJpb3Jp dHk7Cj4gICAJdWludDMyX3QJCXByZWFtYmxlX3N0YXR1czsKPiAgIAl1aW50MzJfdAkJbnVtX2li czsKPiAgIAl2b2lkCQkJKm93bmVyOwo+ICAgCXVpbnQ2NF90CQlmZW5jZV9jdHg7IC8qIHRoZSBm ZW5jZV9jb250ZXh0IHRoaXMgam9iIHVzZXMgKi8KPiAgIAlib29sICAgICAgICAgICAgICAgICAg ICB2bV9uZWVkc19mbHVzaDsKPiAgIAl1bnNpZ25lZAkJdm1faWQ7Cj4gICAJdWludDY0X3QJCXZt X3BkX2FkZHI7Cj4gICAJdWludDMyX3QJCWdkc19iYXNlLCBnZHNfc2l6ZTsKPiAgIAl1aW50MzJf dAkJZ3dzX2Jhc2UsIGd3c19zaXplOwo+ICAgCXVpbnQzMl90CQlvYV9iYXNlLCBvYV9zaXplOwo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gaW5kZXggNjA1ZDQwZS4uMTlj ZTIwMiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3Mu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jCj4gQEAgLTE3 OSwyMSArMTc5LDIxIEBAIGludCBhbWRncHVfY3NfcGFyc2VyX2luaXQoc3RydWN0IGFtZGdwdV9j c19wYXJzZXIgKnAsIHZvaWQgKmRhdGEpCj4gICAKPiAgIAkJY2FzZSBBTURHUFVfQ0hVTktfSURf REVQRU5ERU5DSUVTOgo+ICAgCQkJYnJlYWs7Cj4gICAKPiAgIAkJZGVmYXVsdDoKPiAgIAkJCXJl dCA9IC1FSU5WQUw7Cj4gICAJCQlnb3RvIGZyZWVfcGFydGlhbF9rZGF0YTsKPiAgIAkJfQo+ICAg CX0KPiAgIAo+IC0JcmV0ID0gYW1kZ3B1X2pvYl9hbGxvYyhwLT5hZGV2LCBudW1faWJzLCAmcC0+ am9iLCB2bSk7Cj4gKwlyZXQgPSBhbWRncHVfam9iX2FsbG9jKHAtPmFkZXYsIG51bV9pYnMsIHAt PmN0eC0+cHJpb3JpdHksICZwLT5qb2IsIHZtKTsKPiAgIAlpZiAocmV0KQo+ICAgCQlnb3RvIGZy ZWVfYWxsX2tkYXRhOwo+ICAgCj4gICAJaWYgKHAtPnVmX2VudHJ5LnJvYmopCj4gICAJCXAtPmpv Yi0+dWZfYWRkciA9IHVmX29mZnNldDsKPiAgIAlrZnJlZShjaHVua19hcnJheSk7Cj4gICAJcmV0 dXJuIDA7Cj4gICAKPiAgIGZyZWVfYWxsX2tkYXRhOgo+ICAgCWkgPSBwLT5uY2h1bmtzIC0gMTsK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5jIGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5jCj4gaW5kZXggODZhMTI0Mi4u NDViM2M5MCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf am9iLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfam9iLmMKPiBA QCAtMzIsNTAgKzMyLDUxIEBAIHN0YXRpYyB2b2lkIGFtZGdwdV9qb2JfdGltZWRvdXQoc3RydWN0 IGFtZF9zY2hlZF9qb2IgKnNfam9iKQo+ICAgewo+ICAgCXN0cnVjdCBhbWRncHVfam9iICpqb2Ig PSBjb250YWluZXJfb2Yoc19qb2IsIHN0cnVjdCBhbWRncHVfam9iLCBiYXNlKTsKPiAgIAo+ICAg CURSTV9FUlJPUigicmluZyAlcyB0aW1lb3V0LCBsYXN0IHNpZ25hbGVkIHNlcT0ldSwgbGFzdCBl bWl0dGVkIHNlcT0ldVxuIiwKPiAgIAkJICBqb2ItPmJhc2Uuc2NoZWQtPm5hbWUsCj4gICAJCSAg YXRvbWljX3JlYWQoJmpvYi0+cmluZy0+ZmVuY2VfZHJ2Lmxhc3Rfc2VxKSwKPiAgIAkJICBqb2It PnJpbmctPmZlbmNlX2Rydi5zeW5jX3NlcSk7Cj4gICAJYW1kZ3B1X2dwdV9yZXNldChqb2ItPmFk ZXYpOwo+ICAgfQo+ICAgCj4gLWludCBhbWRncHVfam9iX2FsbG9jKHN0cnVjdCBhbWRncHVfZGV2 aWNlICphZGV2LCB1bnNpZ25lZCBudW1faWJzLAo+ICtpbnQgYW1kZ3B1X2pvYl9hbGxvYyhzdHJ1 Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwgdW5zaWduZWQgbnVtX2licywgaW50IHByaW9yaXR5LAo+ ICAgCQkgICAgIHN0cnVjdCBhbWRncHVfam9iICoqam9iLCBzdHJ1Y3QgYW1kZ3B1X3ZtICp2bSkK PiAgIHsKPiAgIAlzaXplX3Qgc2l6ZSA9IHNpemVvZihzdHJ1Y3QgYW1kZ3B1X2pvYik7Cj4gICAK PiAgIAlpZiAobnVtX2licyA9PSAwKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+ICAgCXNp emUgKz0gc2l6ZW9mKHN0cnVjdCBhbWRncHVfaWIpICogbnVtX2liczsKPiAgIAo+ICAgCSpqb2Ig PSBremFsbG9jKHNpemUsIEdGUF9LRVJORUwpOwo+ICAgCWlmICghKmpvYikKPiAgIAkJcmV0dXJu IC1FTk9NRU07Cj4gICAKPiAgIAkoKmpvYiktPmFkZXYgPSBhZGV2Owo+ICAgCSgqam9iKS0+dm0g PSB2bTsKPiArCSgqam9iKS0+cHJpb3JpdHkgPSBwcmlvcml0eTsKPiAgIAkoKmpvYiktPmlicyA9 ICh2b2lkICopJigqam9iKVsxXTsKPiAgIAkoKmpvYiktPm51bV9pYnMgPSBudW1faWJzOwo+ICAg Cj4gICAJYW1kZ3B1X3N5bmNfY3JlYXRlKCYoKmpvYiktPnN5bmMpOwo+ICAgCj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4gICAKPiAgIGludCBhbWRncHVfam9iX2FsbG9jX3dpdGhfaWIoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHVuc2lnbmVkIHNpemUsCj4gICAJCQkgICAgIHN0cnVjdCBhbWRn cHVfam9iICoqam9iKQo+ICAgewo+ICAgCWludCByOwo+ICAgCj4gLQlyID0gYW1kZ3B1X2pvYl9h bGxvYyhhZGV2LCAxLCBqb2IsIE5VTEwpOwo+ICsJciA9IGFtZGdwdV9qb2JfYWxsb2MoYWRldiwg MSwgQU1ER1BVX0NUWF9QUklPUklUWV9OT1JNQUwsIGpvYiwgTlVMTCk7Cj4gICAJaWYgKHIpCj4g ICAJCXJldHVybiByOwo+ICAgCj4gICAJciA9IGFtZGdwdV9pYl9nZXQoYWRldiwgTlVMTCwgc2l6 ZSwgJigqam9iKS0+aWJzWzBdKTsKPiAgIAlpZiAocikKPiAgIAkJa2ZyZWUoKmpvYik7Cj4gICAK PiAgIAlyZXR1cm4gcjsKPiAgIH0KPiAgIAo+IEBAIC0xNzAsMjAgKzE3MSwyNSBAQCBzdGF0aWMg c3RydWN0IGRtYV9mZW5jZSAqYW1kZ3B1X2pvYl9ydW4oc3RydWN0IGFtZF9zY2hlZF9qb2IgKnNj aGVkX2pvYikKPiAgIAlCVUdfT04oYW1kZ3B1X3N5bmNfcGVla19mZW5jZSgmam9iLT5zeW5jLCBO VUxMKSk7Cj4gICAKPiAgIAl0cmFjZV9hbWRncHVfc2NoZWRfcnVuX2pvYihqb2IpOwo+ICAgCXIg PSBhbWRncHVfaWJfc2NoZWR1bGUoam9iLT5yaW5nLCBqb2ItPm51bV9pYnMsIGpvYi0+aWJzLCBq b2IsICZmZW5jZSk7Cj4gICAJaWYgKHIpCj4gICAJCURSTV9FUlJPUigiRXJyb3Igc2NoZWR1bGlu ZyBJQnMgKCVkKVxuIiwgcik7Cj4gICAKPiAgIAkvKiBpZiBncHUgcmVzZXQsIGh3IGZlbmNlIHdp bGwgYmUgcmVwbGFjZWQgaGVyZSAqLwo+ICAgCWRtYV9mZW5jZV9wdXQoam9iLT5mZW5jZSk7Cj4g ICAJam9iLT5mZW5jZSA9IGRtYV9mZW5jZV9nZXQoZmVuY2UpOwo+ICsKPiArCXIgPSBhbWRncHVf cmluZ19lbGV2YXRlX3ByaW9yaXR5KGpvYi0+cmluZywgam9iLT5wcmlvcml0eSwgam9iKTsKPiAr CWlmIChyKQo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHNldCBqb2IgcHJpb3JpdHkgKCVkKVxu Iiwgcik7CmVsZXZhdGUgcHJpb3JpdHkgb2YgcmluZyBpcyBmb3IgdGhpcyBqb2IsIHJpZ2h0Pwp5 b3UncmUgc2V0dGluZyBwcmlvcml0eSBieSBtbWlvIG1ldGhvZCBhbmQgcmVzdG9yZSBwcmlvcml0 eSBieSBmZW5jZSBjYiwgCnlvdXIgbWV0aG9kIGlzbid0IHByZWNpc2UuIEkgaGF2ZSBzb21lIGNv bW1lbnRzOgoxLiBzZWVtcyB3ZSBzaG91bGQgZWxldmF0ZV9wcmlvcml0eSBiZWZvcmUgYW1kZ3B1 X2liX3NjaGVkdWxlLCBzbyB0aGF0IAp0aGUgcmluZyBpcyBwcm9wZXIgcHJpb3JpdHkgZm9yIHRo aXMgc3VibWlzc2lvbi4KMi4gY2FuIHdlIHB1dCBzZXR0aW5nIG9mIHJlZ2lzdGVycyBvZiBTUEkg aW50byByaW5nIGJ1ZmZlciBhcyBhIGNvbW1hbmQgCmZyYW1lPyBldmV2YXRlX3ByaW9yaXR5IHNl dHRpbmcgaXMgZnJvbnQgb2YgYSBjb21tYW5kIGZyYW1lIGFuZCAKcmVzdG9yZV9wcmlvcml0eSBp cyBlbmQgb2YgZnJhbWUuCjMuIGlmIG5vIHByaW9yaXR5IGV4Y2hhbmdlcywgd2UgY2FuIHNraXAg c2V0dGluZyBmb3IgcHJpb3JpdHkgZm9yIApjb21tYW5kIHN1Ym1pc3Npb24uCgpSZWdhcmRzLApE YXZpZCBaaG91Cj4gKwo+ICAgCWFtZGdwdV9qb2JfZnJlZV9yZXNvdXJjZXMoam9iKTsKPiAgIAly ZXR1cm4gZmVuY2U7Cj4gICB9Cj4gICAKPiAgIGNvbnN0IHN0cnVjdCBhbWRfc2NoZWRfYmFja2Vu ZF9vcHMgYW1kZ3B1X3NjaGVkX29wcyA9IHsKPiAgIAkuZGVwZW5kZW5jeSA9IGFtZGdwdV9qb2Jf ZGVwZW5kZW5jeSwKPiAgIAkucnVuX2pvYiA9IGFtZGdwdV9qb2JfcnVuLAo+ICAgCS50aW1lZG91 dF9qb2IgPSBhbWRncHVfam9iX3RpbWVkb3V0LAo+ICAgCS5mcmVlX2pvYiA9IGFtZGdwdV9qb2Jf ZnJlZV9jYgo+ICAgfTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3JpbmcuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMK PiBpbmRleCA4MGNiMDUxLi4xMmJjN2E5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdw dS9hbWRncHVfcmluZy5jCj4gQEAgLTE5MiwyMCArMTkyLDg5IEBAIHZvaWQgYW1kZ3B1X3Jpbmdf Y29tbWl0KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZykKPiAgICAqIFJlc2V0IHRoZSBkcml2ZXIn cyBjb3B5IG9mIHRoZSB3cHRyIChhbGwgYXNpY3MpLgo+ICAgICovCj4gICB2b2lkIGFtZGdwdV9y aW5nX3VuZG8oc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nKQo+ICAgewo+ICAgCXJpbmctPndwdHIg PSByaW5nLT53cHRyX29sZDsKPiAgIAo+ICAgCWlmIChyaW5nLT5mdW5jcy0+ZW5kX3VzZSkKPiAg IAkJcmluZy0+ZnVuY3MtPmVuZF91c2UocmluZyk7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQg YW1kZ3B1X3JpbmdfcmVzdG9yZV9wcmlvcml0eV9jYihzdHJ1Y3QgZG1hX2ZlbmNlICpmLAo+ICsJ CQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKPiArewo+ICsJaW50IGk7Cj4gKwlzdHJ1 Y3QgYW1kZ3B1X2pvYiAqY2Jfam9iID0KPiArCQljb250YWluZXJfb2YoY2IsIHN0cnVjdCBhbWRn cHVfam9iLCBjYik7Cj4gKwlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSBjYl9qb2ItPnJpbmc7 Cj4gKwo+ICsJc3Bpbl9sb2NrKCZyaW5nLT5wcmlvcml0eV9sb2NrKTsKPiArCj4gKwkvKiByZW1v dmUgb3Vyc2VsdmVzIGZyb20gdGhlIGxpc3QgaWYgbmVjZXNzYXJ5ICovCj4gKwlpZiAoY2Jfam9i ID09IHJpbmctPmxhc3Rfam9iW2NiX2pvYi0+cHJpb3JpdHldKQo+ICsJCXJpbmctPmxhc3Rfam9i W2NiX2pvYi0+cHJpb3JpdHldID0gTlVMTDsKPiArCj4gKwkvKiBzb21ldGhpbmcgaGlnaGVyIHBy aW8gaXMgZXhlY3V0aW5nLCBubyBuZWVkIHRvIGRlY2F5ICovCj4gKwlpZiAocmluZy0+cHJpb3Jp dHkgPiBjYl9qb2ItPnByaW9yaXR5KQo+ICsJCWdvdG8gb3V0X3VubG9jazsKPiArCj4gKwkvKiBk ZWNheSBwcmlvcml0eSB0byB0aGUgbmV4dCBsZXZlbCB3aXRoIGEgam9iIGF2YWlsYWJsZSAqLwo+ ICsJZm9yIChpID0gY2Jfam9iLT5wcmlvcml0eTsgaSA+PSAwOyBpLS0pIHsKPiArCQlpZiAoaSA9 PSBBTURHUFVfQ1RYX1BSSU9SSVRZX05PUk1BTCB8fCByaW5nLT5sYXN0X2pvYltpXSkgewo+ICsJ CQlyaW5nLT5wcmlvcml0eSA9IGk7Cj4gKwkJCWlmIChyaW5nLT5mdW5jcy0+c2V0X3ByaW9yaXR5 KQo+ICsJCQkJcmluZy0+ZnVuY3MtPnNldF9wcmlvcml0eShyaW5nLCBpKTsKPiArCj4gKwkJCWJy ZWFrOwo+ICsJCX0KPiArCX0KPiArCj4gK291dF91bmxvY2s6Cj4gKwlzcGluX3VubG9jaygmcmlu Zy0+cHJpb3JpdHlfbG9jayk7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBhbWRncHVfcmluZ19lbGV2 YXRlX3ByaW9yaXR5IC0gY2hhbmdlIHRoZSByaW5nJ3MgcHJpb3JpdHkKPiArICoKPiArICogQHJp bmc6IGFtZGdwdV9yaW5nIHN0cnVjdHVyZSBob2xkaW5nIHRoZSBpbmZvcm1hdGlvbgo+ICsgKiBA cHJpb3JpdHk6IHRhcmdldCBwcmlvcml0eQo+ICsgKiBAam9iOiBwcmlvcml0eSBzaG91bGQgcmVt YWluIGVsZXZhdGVkIGZvciB0aGUgZHVyYXRpb24gb2YgdGhpcyBqb2IKPiArICoKPiArICogVXNl IEhXIHNwZWNpZmljIG1lY2hhbmlzbSdzIHRvIGVsZXZhdGUgdGhlIHJpbmcncyBwcmlvcml0eSB3 aGlsZSBAam9iCj4gKyAqIGlzIGV4ZWN1dGluZy4gT25jZSBAam9iIGZpbmlzaGVzIGV4ZWN1dGlu ZywgdGhlIHJpbmcgd2lsbCByZXNldCBiYWNrCj4gKyAqIHRvIG5vcm1hbCBwcmlvcml0eS4KPiAr ICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIGVycm9yIG90aGVyd2lzZQo+ICsgKi8KPiAraW50IGFt ZGdwdV9yaW5nX2VsZXZhdGVfcHJpb3JpdHkoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBpbnQg cHJpb3JpdHksCj4gKwkJCQkgc3RydWN0IGFtZGdwdV9qb2IgKmpvYikKPiArewo+ICsJaWYgKHBy aW9yaXR5IDwgMCB8fCBwcmlvcml0eSA+PSBBTURHUFVfQ1RYX1BSSU9SSVRZX05VTSkKPiArCQly ZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlzcGluX2xvY2soJnJpbmctPnByaW9yaXR5X2xvY2spOwo+ ICsJcmluZy0+bGFzdF9qb2JbcHJpb3JpdHldID0gam9iOwo+ICsKPiArCWlmIChwcmlvcml0eSA8 PSByaW5nLT5wcmlvcml0eSkKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gKwo+ICsJcmluZy0+cHJp b3JpdHkgPSBwcmlvcml0eTsKPiArCWlmIChyaW5nLT5mdW5jcy0+c2V0X3ByaW9yaXR5KQo+ICsJ CXJpbmctPmZ1bmNzLT5zZXRfcHJpb3JpdHkocmluZywgcHJpb3JpdHkpOwo+ICsKPiArCWRtYV9m ZW5jZV9hZGRfY2FsbGJhY2soam9iLT5mZW5jZSwgJmpvYi0+Y2IsCj4gKwkJCSAgICAgICBhbWRn cHVfcmluZ19yZXN0b3JlX3ByaW9yaXR5X2NiKTsKPiArCj4gK291dF91bmxvY2s6Cj4gKwlzcGlu X3VubG9jaygmcmluZy0+cHJpb3JpdHlfbG9jayk7Cj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAg IC8qKgo+ICAgICogYW1kZ3B1X3JpbmdfaW5pdCAtIGluaXQgZHJpdmVyIHJpbmcgc3RydWN0Lgo+ ICAgICoKPiAgICAqIEBhZGV2OiBhbWRncHVfZGV2aWNlIHBvaW50ZXIKPiAgICAqIEByaW5nOiBh bWRncHVfcmluZyBzdHJ1Y3R1cmUgaG9sZGluZyByaW5nIGluZm9ybWF0aW9uCj4gICAgKiBAbWF4 X25kdzogbWF4aW11bSBudW1iZXIgb2YgZHcgZm9yIHJpbmcgYWxsb2MKPiAgICAqIEBub3A6IG5v cCBwYWNrZXQgZm9yIHRoaXMgcmluZwo+ICAgICoKPiAgICAqIEluaXRpYWxpemUgdGhlIGRyaXZl ciBpbmZvcm1hdGlvbiBmb3IgdGhlIHNlbGVjdGVkIHJpbmcgKGFsbCBhc2ljcykuCj4gICAgKiBS ZXR1cm5zIDAgb24gc3VjY2VzcywgZXJyb3Igb24gZmFpbHVyZS4KPiBAQCAtMjc1LDIwICszNDQs MjIgQEAgaW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0 cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiAgIAkJCQkJICAgICh2b2lkICoqKSZyaW5nLT5yaW5n KTsKPiAgIAkJaWYgKHIpIHsKPiAgIAkJCWRldl9lcnIoYWRldi0+ZGV2LCAiKCVkKSByaW5nIGNy ZWF0ZSBmYWlsZWRcbiIsIHIpOwo+ICAgCQkJcmV0dXJuIHI7Cj4gICAJCX0KPiAgIAkJbWVtc2V0 KCh2b2lkICopcmluZy0+cmluZywgMCwgcmluZy0+cmluZ19zaXplKTsKPiAgIAl9Cj4gICAJcmlu Zy0+cHRyX21hc2sgPSAocmluZy0+cmluZ19zaXplIC8gNCkgLSAxOwo+ICAgCXJpbmctPm1heF9k dyA9IG1heF9kdzsKPiAgIAlyaW5nLT5od19pcCA9IGh3X2lwOwo+ICsJcmluZy0+cHJpb3JpdHkg PSBBTURHUFVfQ1RYX1BSSU9SSVRZX05PUk1BTDsKPiArCXNwaW5fbG9ja19pbml0KCZyaW5nLT5w cmlvcml0eV9sb2NrKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmcmluZy0+bHJ1X2xpc3QpOwo+ICAg CWFtZGdwdV9yaW5nX2xydV90b3VjaChhZGV2LCByaW5nKTsKPiAgIAo+ICAgCWlmIChhbWRncHVf ZGVidWdmc19yaW5nX2luaXQoYWRldiwgcmluZykpIHsKPiAgIAkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gcmVnaXN0ZXIgZGVidWdmcyBmaWxlIGZvciByaW5ncyAhXG4iKTsKPiAgIAl9Cj4gICAJcmV0 dXJuIDA7Cj4gICB9Cj4gICAKPiAgIC8qKgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfcmluZy5oIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaAo+IGluZGV4IGVjZGQ4N2MuLmJlZmMyOWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3JpbmcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9yaW5nLmgKPiBAQCAtMTcsMjAgKzE3LDIxIEBACj4gICAgKiBU SEUgQ09QWVJJR0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xB SU0sIERBTUFHRVMgT1IKPiAgICAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJ T04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLAo+ICAgICogQVJJU0lORyBGUk9NLCBP VVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SCj4g ICAgKiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCj4gICAgKgo+ICAgICogQXV0aG9y czogQ2hyaXN0aWFuIEvDtm5pZwo+ICAgICovCj4gICAjaWZuZGVmIF9fQU1ER1BVX1JJTkdfSF9f Cj4gICAjZGVmaW5lIF9fQU1ER1BVX1JJTkdfSF9fCj4gICAKPiArI2luY2x1ZGUgPGRybS9hbWRn cHVfZHJtLmg+Cj4gICAjaW5jbHVkZSAiZ3B1X3NjaGVkdWxlci5oIgo+ICAgCj4gICAvKiBtYXgg bnVtYmVyIG9mIHJpbmdzICovCj4gICAjZGVmaW5lIEFNREdQVV9NQVhfUklOR1MJCTE2Cj4gICAj ZGVmaW5lIEFNREdQVV9NQVhfR0ZYX1JJTkdTCQkxCj4gICAjZGVmaW5lIEFNREdQVV9NQVhfQ09N UFVURV9SSU5HUwk4Cj4gICAjZGVmaW5lIEFNREdQVV9NQVhfVkNFX1JJTkdTCQkzCj4gICAKPiAg IC8qIHNvbWUgc3BlY2lhbCB2YWx1ZXMgZm9yIHRoZSBvd25lciBmaWVsZCAqLwo+ICAgI2RlZmlu ZSBBTURHUFVfRkVOQ0VfT1dORVJfVU5ERUZJTkVECSgodm9pZCopMHVsKQo+IEBAIC0xMzAsMjAg KzEzMSwyMiBAQCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3Mgewo+ICAgCXZvaWQgKCpwYWRfaWIp KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgc3RydWN0IGFtZGdwdV9pYiAqaWIpOwo+ICAgCXVu c2lnbmVkICgqaW5pdF9jb25kX2V4ZWMpKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cj4gICAJ dm9pZCAoKnBhdGNoX2NvbmRfZXhlYykoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1bnNpZ25l ZCBvZmZzZXQpOwo+ICAgCS8qIG5vdGUgdXNhZ2UgZm9yIGNsb2NrIGFuZCBwb3dlciBnYXRpbmcg Ki8KPiAgIAl2b2lkICgqYmVnaW5fdXNlKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICAg CXZvaWQgKCplbmRfdXNlKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICAgCXZvaWQgKCpl bWl0X3N3aXRjaF9idWZmZXIpIChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICAgCXZvaWQg KCplbWl0X2NudHhjbnRsKSAoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50MzJfdCBmbGFn cyk7Cj4gICAJdm9pZCAoKmVtaXRfcnJlZykoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCB1aW50 MzJfdCByZWcpOwo+ICAgCXZvaWQgKCplbWl0X3dyZWcpKHN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZywgdWludDMyX3QgcmVnLCB1aW50MzJfdCB2YWwpOwo+ICsJLyogcHJpb3JpdHkgZnVuY3Rpb25z ICovCj4gKwl2b2lkICgqc2V0X3ByaW9yaXR5KSAoc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLCBp bnQgcHJpb3JpdHkpOwo+ICAgfTsKPiAgIAo+ICAgc3RydWN0IGFtZGdwdV9yaW5nIHsKPiAgIAlz dHJ1Y3QgYW1kZ3B1X2RldmljZQkJKmFkZXY7Cj4gICAJY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5n X2Z1bmNzCSpmdW5jczsKPiAgIAlzdHJ1Y3QgYW1kZ3B1X2ZlbmNlX2RyaXZlcglmZW5jZV9kcnY7 Cj4gICAJc3RydWN0IGFtZF9ncHVfc2NoZWR1bGVyCXNjaGVkOwo+ICAgCXN0cnVjdCBsaXN0X2hl YWQJCWxydV9saXN0Owo+ICAgCj4gICAJc3RydWN0IGFtZGdwdV9ibwkqcmluZ19vYmo7Cj4gQEAg LTE2NSwzMSArMTY4LDM5IEBAIHN0cnVjdCBhbWRncHVfcmluZyB7Cj4gICAJc3RydWN0IGFtZGdw dV9ibwkqbXFkX29iajsKPiAgIAl1MzIJCQlkb29yYmVsbF9pbmRleDsKPiAgIAlib29sCQkJdXNl X2Rvb3JiZWxsOwo+ICAgCXVuc2lnbmVkCQl3cHRyX29mZnM7Cj4gICAJdW5zaWduZWQJCWZlbmNl X29mZnM7Cj4gICAJdWludDY0X3QJCWN1cnJlbnRfY3R4Owo+ICAgCWNoYXIJCQluYW1lWzE2XTsK PiAgIAl1bnNpZ25lZAkJY29uZF9leGVfb2ZmczsKPiAgIAl1NjQJCQljb25kX2V4ZV9ncHVfYWRk cjsKPiAgIAl2b2xhdGlsZSB1MzIJCSpjb25kX2V4ZV9jcHVfYWRkcjsKPiArCj4gKwlzcGlubG9j a190CQlwcmlvcml0eV9sb2NrOwo+ICsJLyogcHJvdGVjdGVkIGJ5IHByaW9yaXR5X2xvY2sgKi8K PiArCXN0cnVjdCBhbWRncHVfam9iIAkqbGFzdF9qb2JbQU1ER1BVX0NUWF9QUklPUklUWV9OVU1d Owo+ICsJaW50CQkJcHJpb3JpdHk7Cj4gKwo+ICAgI2lmIGRlZmluZWQoQ09ORklHX0RFQlVHX0ZT KQo+ICAgCXN0cnVjdCBkZW50cnkgKmVudDsKPiAgICNlbmRpZgo+ICAgfTsKPiAgIAo+ICAgaW50 IGFtZGdwdV9yaW5nX2lzX3ZhbGlkX2luZGV4KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LAo+ ICAgCQkJICAgICAgIGludCBod19pcCwgaW50IHJpbmcpOwo+ICAgaW50IGFtZGdwdV9yaW5nX2Fs bG9jKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgdW5zaWduZWQgbmR3KTsKPiAgIHZvaWQgYW1k Z3B1X3JpbmdfaW5zZXJ0X25vcChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVpbnQzMl90IGNv dW50KTsKPiAgIHZvaWQgYW1kZ3B1X3JpbmdfZ2VuZXJpY19wYWRfaWIoc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nLCBzdHJ1Y3QgYW1kZ3B1X2liICppYik7Cj4gICB2b2lkIGFtZGdwdV9yaW5nX2Nv bW1pdChzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICAgdm9pZCBhbWRncHVfcmluZ191bmRv KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cj4gK2ludCBhbWRncHVfcmluZ19lbGV2YXRlX3By aW9yaXR5KHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywgaW50IHByaW9yaXR5LAo+ICsJCQkJIHN0 cnVjdCBhbWRncHVfam9iICpqb2IpOwo+ICAgaW50IGFtZGdwdV9yaW5nX2luaXQoc3RydWN0IGFt ZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPiAgIAkJICAgICBp bnQgaHdfaXAsIHVuc2lnbmVkIHJpbmdfc2l6ZSwKPiAgIAkJICAgICBzdHJ1Y3QgYW1kZ3B1X2ly cV9zcmMgKmlycV9zcmMsIHVuc2lnbmVkIGlycV90eXBlKTsKPiAgIHZvaWQgYW1kZ3B1X3Jpbmdf ZmluaShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcpOwo+ICAgaW50IGFtZGdwdV9yaW5nX2xydV9n ZXQoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsIGludCBod19pcCwKPiAgIAkJCXN0cnVjdCBh bWRncHVfcmluZyAqKnJpbmcpOwo+ICAgdm9pZCBhbWRncHVfcmluZ19scnVfdG91Y2goc3RydWN0 IGFtZGdwdV9kZXZpY2UgKmFkZXYsIHN0cnVjdCBhbWRncHVfcmluZyAqcmluZyk7Cj4gICAKPiAg ICNlbmRpZgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K YW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==