From mboxrd@z Thu Jan 1 00:00:00 1970 From: Felix Kuehling Subject: Re: [PATCH 10/14] drm/amdkfd: Use ref count to prevent kfd_process destruction Date: Fri, 1 Dec 2017 16:17:30 -0500 Message-ID: References: <1511825396-24579-1-git-send-email-Felix.Kuehling@amd.com> <1511825396-24579-11-git-send-email-Felix.Kuehling@amd.com> <7fb6a8a7-5616-95d6-c2c9-3b69a75a3613@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <7fb6a8a7-5616-95d6-c2c9-3b69a75a3613-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> Content-Language: en-CA 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: christian.koenig-5C7GfCeVMHo@public.gmane.org, amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, oded.gabbay-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Ck9uIDIwMTctMTEtMjggMDQ6NTIgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4gQW0gMjgu MTEuMjAxNyB1bSAwMDoyOSBzY2hyaWViIEZlbGl4IEt1ZWhsaW5nOgo+PiBVc2UgYSByZWZlcmVu Y2UgY291bnRlciBpbnN0ZWFkIG9mIGEgbG9jayB0byBwcmV2ZW50IHByb2Nlc3MKPj4gZGVzdHJ1 Y3Rpb24gd2hpbGUgZnVuY3Rpb25zIHJ1bm5pbmcgb3V0IG9mIHByb2Nlc3MgY29udGV4dCBhcmUg dXNpbmcKPj4gdGhlIGtmZF9wcm9jZXNzIHN0cnVjdHVyZS4gSW4gbWFueSBjYXNlcyB0aGVzZSBm dW5jdGlvbnMgZG9uJ3QgbmVlZAo+PiB0aGUgc3RydWN0dXJlIHRvIGJlIGxvY2tlZC4gSW4gdGhl IGZldyBjYXNlcyB0aGF0IHJlYWxseSBkbyBuZWVkIHRoZQo+PiBwcm9jZXNzIGxvY2ssIHRha2Ug aXQgZXhwbGljaXRseS4KPj4KPj4gVGhpcyBoZWxwcyBzaW1wbGlmeSBsb2NrIGRlcGVuZGVuY2ll cyBiZXR3ZWVuIHRoZSBwcm9jZXNzIGxvY2sgYW5kCj4+IG90aGVyIGxvY2tzLCBwYXJ0aWN1bGFy bHkgYW1kZ3B1IGFuZCBtbV9zdHJ1Y3QgbG9ja3MuIFRoaXMgd2lsbCBiZQo+PiBpbXBvcnRhbnQg d2hlbiBhbWRncHUgY2FsbHMgYmFjayB0byBhbWRrZmQgZm9yIG1lbW9yeSBldmljdGlvbnMuCj4K PiBBY3R1YWxseSB0aGF0IGlzIG5vdCBvbmx5IGFuIG9wdGltaXphdGlvbiBvciBjbGVhbnVwLCBi dXQgYSByYXRoZXIKPiBpbXBvcnRhbnQgYnVnIGZpeC4KPgo+IFVzaW5nIGEgbXV0ZXggYXMgcHJv dGVjdGlvbiB0byBwcmV2ZW50IG9iamVjdCBkZWxldGlvbiBpcyBpbGxlZ2FsCj4gYmVjYXVzZSBt dXRleF91bmxvY2soKSBjYW4gYWNjZXNzZXMgdGhlIG11dGV4IG9iamVjdCBldmVuIGFmdGVyIGl0 IGlzCj4gdW5sb2NrZWQuCj4KPiBTZWUgdGhpcyBMV04gYXJ0aWNsZSBhcyB3ZWxsIGh0dHBzOi8v bHduLm5ldC9BcnRpY2xlcy81NzU0NjAvLgo+Cj4gSWYgeW91IGhhdmUgb3RoZXIgdXNlIGNhc2Vz IGxpa2UgdGhpcyBpbiB0aGUgS0ZEIGl0IHNob3VsZCBiZXR0ZXIgYmUKPiBmaXhlZCBhcyB3ZWxs LgoKSSdtIG5vdCBhd2FyZSBvZiBvdGhlciBtaXN1c2VzIG9mIE11dGV4ZXMgaW4gS0ZELgoKVGhl IGFydGljbGUgc291bmRlZCBsaWtlIHRoaXMgd2FzIGxpa2VseSB0byBnZXQgZml4ZWQgaW4gdGhl IG11dGV4CnJhdGhlciB0aGFuIGhvcGluZyB0byB0cmFjayBkb3duIGFsbCBpbmNvcnJlY3QgdXNl cyBvZiBNdXRleGVzLiBRdW90ZToKPgo+IEFzIG9mIHRoaXMgd3JpdGluZywgbm8gcGF0Y2hlcyBo YXZlIGJlZW4gcG9zdGVkLiBJdCB3b3VsZCBiZQo+IHN1cnByaXNpbmcsIHRob3VnaCwgaWYgYSBm aXggZm9yIHRoaXMgcGFydGljdWxhciBwcm9ibGVtIGRpZCBub3QKPiBzdXJmYWNlIGJ5IHRoZSB0 aW1lIHRoZSAzLjE0IG1lcmdlIHdpbmRvdyBvcGVucy4gTG9ja2luZyBwcm9ibGVtcyBhcmUKPiBo YXJkIGVub3VnaCB0byBkZWFsIHdpdGggd2hlbiB0aGUgbG9ja2luZyBwcmltaXRpdmVzIGhhdmUg c2ltcGxlIGFuZAo+IGVhc2lseSB1bmRlcnN0b29kIGJlaGF2aW9yOyBoYXZpbmcgc3VidGxlIHRy YXBzIGJ1aWx0IGludG8gdGhhdCBsYXllcgo+IG9mIHRoZSBrZXJuZWwgaXMgYSByZWNpcGUgZm9y IGEgbG90IG9mIGxvbmctdGVybSBwYWluLgo+CkkgaGF2ZW4ndCBmb3VuZCBzdWNoIGEgZml4LiBU aGF0IHNhaWQsIGluIHRoZSBkaXNjdXNzaW9uIHVuZGVyIHRoYXQKYXJ0aWNsZSBzb21lIGFyZ3Vl ZCB0aGF0IHRoZSBleGFtcGxlIHdvdWxkIGJlIGJyb2tlbiBldmVuIHdpdGggYQpzcGlubG9jay4g U28gbWF5YmUgdGhlcmUgaXMgbm8gc3VjaCBnZW5lcmFsIGZpeC4KClJlZ2FyZHMsCsKgIEZlbGl4 CgoKPgo+PiBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBLdWVobGluZyA8RmVsaXguS3VlaGxpbmdAYW1k LmNvbT4KPgo+IEFja2VkLWJ5OiBDaHJpc3RpYW4gS8O2bmlnIDxjaHJpc3RpYW4ua29lbmlnQGFt ZC5jb20+Cj4KPiBSZWdhcmRzLAo+IENocmlzdGlhbi4KPgo+PiAtLS0KPj4gwqAgZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX2V2ZW50cy5jwqAgfCAxNCArKysrKysrLS0tLS0tLQo+PiDC oCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5owqDCoMKgIHzCoCAxICsKPj4g wqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Byb2Nlc3MuYyB8IDE2ICsrKysrKysr KysrKystLS0KPj4gwqAgMyBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMCBkZWxl dGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tm ZF9ldmVudHMuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9ldmVudHMuYwo+ PiBpbmRleCBjYjkyZDRiLi45M2FhZTVjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfZXZlbnRzLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX2V2ZW50cy5jCj4+IEBAIC00NDEsNyArNDQxLDcgQEAgdm9pZCBrZmRfc2lnbmFsX2V2 ZW50X2ludGVycnVwdCh1bnNpZ25lZCBpbnQKPj4gcGFzaWQsIHVpbnQzMl90IHBhcnRpYWxfaWQs Cj4+IMKgwqDCoMKgwqAgLyoKPj4gwqDCoMKgwqDCoMKgICogQmVjYXVzZSB3ZSBhcmUgY2FsbGVk IGZyb20gYXJiaXRyYXJ5IGNvbnRleHQgKHdvcmtxdWV1ZSkgYXMKPj4gb3Bwb3NlZAo+PiDCoMKg wqDCoMKgwqAgKiB0byBwcm9jZXNzIGNvbnRleHQsIGtmZF9wcm9jZXNzIGNvdWxkIGF0dGVtcHQg dG8gZXhpdCB3aGlsZQo+PiB3ZSBhcmUKPj4gLcKgwqDCoMKgICogcnVubmluZyBzbyB0aGUgbG9v a3VwIGZ1bmN0aW9uIHJldHVybnMgYSBsb2NrZWQgcHJvY2Vzcy4KPj4gK8KgwqDCoMKgICogcnVu bmluZyBzbyB0aGUgbG9va3VwIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIHByb2Nlc3MgcmVmIGNv dW50Lgo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qga2ZkX3Byb2Nlc3Mg KnAgPSBrZmRfbG9va3VwX3Byb2Nlc3NfYnlfcGFzaWQocGFzaWQpOwo+PiDCoCBAQCAtNDkzLDcg KzQ5Myw3IEBAIHZvaWQga2ZkX3NpZ25hbF9ldmVudF9pbnRlcnJ1cHQodW5zaWduZWQgaW50Cj4+ IHBhc2lkLCB1aW50MzJfdCBwYXJ0aWFsX2lkLAo+PiDCoMKgwqDCoMKgIH0KPj4gwqAgwqDCoMKg wqDCoCBtdXRleF91bmxvY2soJnAtPmV2ZW50X211dGV4KTsKPj4gLcKgwqDCoCBtdXRleF91bmxv Y2soJnAtPm11dGV4KTsKPj4gK8KgwqDCoCBrZmRfdW5yZWZfcHJvY2VzcyhwKTsKPj4gwqAgfQo+ PiDCoCDCoCBzdGF0aWMgc3RydWN0IGtmZF9ldmVudF93YWl0ZXIgKmFsbG9jX2V2ZW50X3dhaXRl cnModWludDMyX3QKPj4gbnVtX2V2ZW50cykKPj4gQEAgLTg0Nyw3ICs4NDcsNyBAQCB2b2lkIGtm ZF9zaWduYWxfaW9tbXVfZXZlbnQoc3RydWN0IGtmZF9kZXYgKmRldiwKPj4gdW5zaWduZWQgaW50 IHBhc2lkLAo+PiDCoMKgwqDCoMKgIC8qCj4+IMKgwqDCoMKgwqDCoCAqIEJlY2F1c2Ugd2UgYXJl IGNhbGxlZCBmcm9tIGFyYml0cmFyeSBjb250ZXh0ICh3b3JrcXVldWUpIGFzCj4+IG9wcG9zZWQK Pj4gwqDCoMKgwqDCoMKgICogdG8gcHJvY2VzcyBjb250ZXh0LCBrZmRfcHJvY2VzcyBjb3VsZCBh dHRlbXB0IHRvIGV4aXQgd2hpbGUKPj4gd2UgYXJlCj4+IC3CoMKgwqDCoCAqIHJ1bm5pbmcgc28g dGhlIGxvb2t1cCBmdW5jdGlvbiByZXR1cm5zIGEgbG9ja2VkIHByb2Nlc3MuCj4+ICvCoMKgwqDC oCAqIHJ1bm5pbmcgc28gdGhlIGxvb2t1cCBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBwcm9jZXNz IHJlZiBjb3VudC4KPj4gwqDCoMKgwqDCoMKgICovCj4+IMKgwqDCoMKgwqAgc3RydWN0IGtmZF9w cm9jZXNzICpwID0ga2ZkX2xvb2t1cF9wcm9jZXNzX2J5X3Bhc2lkKHBhc2lkKTsKPj4gwqDCoMKg wqDCoCBzdHJ1Y3QgbW1fc3RydWN0ICptbTsKPj4gQEAgLTg2MCw3ICs4NjAsNyBAQCB2b2lkIGtm ZF9zaWduYWxfaW9tbXVfZXZlbnQoc3RydWN0IGtmZF9kZXYgKmRldiwKPj4gdW5zaWduZWQgaW50 IHBhc2lkLAo+PiDCoMKgwqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoCBtbSA9IGdldF90YXNrX21t KHAtPmxlYWRfdGhyZWFkKTsKPj4gwqDCoMKgwqDCoCBpZiAoIW1tKSB7Cj4+IC3CoMKgwqDCoMKg wqDCoCBtdXRleF91bmxvY2soJnAtPm11dGV4KTsKPj4gK8KgwqDCoMKgwqDCoMKgIGtmZF91bnJl Zl9wcm9jZXNzKHApOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOyAvKiBQcm9jZXNzIGlz IGV4aXRpbmcgKi8KPj4gwqDCoMKgwqDCoCB9Cj4+IMKgIEBAIC05MDMsNyArOTAzLDcgQEAgdm9p ZCBrZmRfc2lnbmFsX2lvbW11X2V2ZW50KHN0cnVjdCBrZmRfZGV2Cj4+ICpkZXYsIHVuc2lnbmVk IGludCBwYXNpZCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJm1lbW9yeV9leGNlcHRp b25fZGF0YSk7Cj4+IMKgIMKgwqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZwLT5ldmVudF9tdXRleCk7 Cj4+IC3CoMKgwqAgbXV0ZXhfdW5sb2NrKCZwLT5tdXRleCk7Cj4+ICvCoMKgwqAga2ZkX3VucmVm X3Byb2Nlc3MocCk7Cj4+IMKgIH0KPj4gwqAgwqAgdm9pZCBrZmRfc2lnbmFsX2h3X2V4Y2VwdGlv bl9ldmVudCh1bnNpZ25lZCBpbnQgcGFzaWQpCj4+IEBAIC05MTEsNyArOTExLDcgQEAgdm9pZCBr ZmRfc2lnbmFsX2h3X2V4Y2VwdGlvbl9ldmVudCh1bnNpZ25lZCBpbnQKPj4gcGFzaWQpCj4+IMKg wqDCoMKgwqAgLyoKPj4gwqDCoMKgwqDCoMKgICogQmVjYXVzZSB3ZSBhcmUgY2FsbGVkIGZyb20g YXJiaXRyYXJ5IGNvbnRleHQgKHdvcmtxdWV1ZSkgYXMKPj4gb3Bwb3NlZAo+PiDCoMKgwqDCoMKg wqAgKiB0byBwcm9jZXNzIGNvbnRleHQsIGtmZF9wcm9jZXNzIGNvdWxkIGF0dGVtcHQgdG8gZXhp dCB3aGlsZQo+PiB3ZSBhcmUKPj4gLcKgwqDCoMKgICogcnVubmluZyBzbyB0aGUgbG9va3VwIGZ1 bmN0aW9uIHJldHVybnMgYSBsb2NrZWQgcHJvY2Vzcy4KPj4gK8KgwqDCoMKgICogcnVubmluZyBz byB0aGUgbG9va3VwIGZ1bmN0aW9uIGluY3JlbWVudHMgdGhlIHByb2Nlc3MgcmVmIGNvdW50Lgo+ PiDCoMKgwqDCoMKgwqAgKi8KPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAgPSBr ZmRfbG9va3VwX3Byb2Nlc3NfYnlfcGFzaWQocGFzaWQpOwo+PiDCoCBAQCAtOTI0LDUgKzkyNCw1 IEBAIHZvaWQga2ZkX3NpZ25hbF9od19leGNlcHRpb25fZXZlbnQodW5zaWduZWQgaW50Cj4+IHBh c2lkKQo+PiDCoMKgwqDCoMKgIGxvb2t1cF9ldmVudHNfYnlfdHlwZV9hbmRfc2lnbmFsKHAsCj4+ IEtGRF9FVkVOVF9UWVBFX0hXX0VYQ0VQVElPTiwgTlVMTCk7Cj4+IMKgIMKgwqDCoMKgwqAgbXV0 ZXhfdW5sb2NrKCZwLT5ldmVudF9tdXRleCk7Cj4+IC3CoMKgwqAgbXV0ZXhfdW5sb2NrKCZwLT5t dXRleCk7Cj4+ICvCoMKgwqAga2ZkX3VucmVmX3Byb2Nlc3MocCk7Cj4+IMKgIH0KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKPj4gYi9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oCj4+IGluZGV4IDI0OGU0ZjUuLjBjOTZhNmIg MTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcml2LmgKPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaAo+PiBAQCAtNjA2LDYg KzYwNiw3IEBAIHZvaWQga2ZkX3Byb2Nlc3NfZGVzdHJveV93cSh2b2lkKTsKPj4gwqAgc3RydWN0 IGtmZF9wcm9jZXNzICprZmRfY3JlYXRlX3Byb2Nlc3Moc3RydWN0IGZpbGUgKmZpbGVwKTsKPj4g wqAgc3RydWN0IGtmZF9wcm9jZXNzICprZmRfZ2V0X3Byb2Nlc3MoY29uc3Qgc3RydWN0IHRhc2tf c3RydWN0ICopOwo+PiDCoCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKmtmZF9sb29rdXBfcHJvY2Vzc19i eV9wYXNpZCh1bnNpZ25lZCBpbnQgcGFzaWQpOwo+PiArdm9pZCBrZmRfdW5yZWZfcHJvY2Vzcyhz dHJ1Y3Qga2ZkX3Byb2Nlc3MgKnApOwo+PiDCoCDCoCBzdHJ1Y3Qga2ZkX3Byb2Nlc3NfZGV2aWNl ICprZmRfYmluZF9wcm9jZXNzX3RvX2RldmljZShzdHJ1Y3QKPj4ga2ZkX2RldiAqZGV2LAo+PiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg a2ZkX3Byb2Nlc3MgKnApOwo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRr ZmQva2ZkX3Byb2Nlc3MuYwo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9wcm9j ZXNzLmMKPj4gaW5kZXggZTAyZThhMi4uNTA5Zjk4NyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2FtZC9hbWRrZmQva2ZkX3Byb2Nlc3MuYwo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jCj4+IEBAIC00OSw2ICs0OSw3IEBAIERFRklORV9TVEFU SUNfU1JDVShrZmRfcHJvY2Vzc2VzX3NyY3UpOwo+PiDCoCBzdGF0aWMgc3RydWN0IHdvcmtxdWV1 ZV9zdHJ1Y3QgKmtmZF9wcm9jZXNzX3dxOwo+PiDCoCDCoCBzdGF0aWMgc3RydWN0IGtmZF9wcm9j ZXNzICpmaW5kX3Byb2Nlc3MoY29uc3Qgc3RydWN0IHRhc2tfc3RydWN0Cj4+ICp0aHJlYWQpOwo+ PiArc3RhdGljIHZvaWQga2ZkX3Byb2Nlc3NfcmVmX3JlbGVhc2Uoc3RydWN0IGtyZWYgKnJlZik7 Cj4+IMKgIHN0YXRpYyBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKmNyZWF0ZV9wcm9jZXNzKGNvbnN0IHN0 cnVjdCB0YXNrX3N0cnVjdAo+PiAqdGhyZWFkKTsKPj4gwqAgc3RhdGljIGludCBrZmRfcHJvY2Vz c19pbml0X2N3c3Ioc3RydWN0IGtmZF9wcm9jZXNzICpwLCBzdHJ1Y3QgZmlsZQo+PiAqZmlsZXAp Owo+PiDCoCBAQCAtMTQ2LDYgKzE0NywxMSBAQCBzdGF0aWMgc3RydWN0IGtmZF9wcm9jZXNzICpm aW5kX3Byb2Nlc3MoY29uc3QKPj4gc3RydWN0IHRhc2tfc3RydWN0ICp0aHJlYWQpCj4+IMKgwqDC oMKgwqAgcmV0dXJuIHA7Cj4+IMKgIH0KPj4gwqAgK3ZvaWQga2ZkX3VucmVmX3Byb2Nlc3Moc3Ry dWN0IGtmZF9wcm9jZXNzICpwKQo+PiArewo+PiArwqDCoMKgIGtyZWZfcHV0KCZwLT5yZWYsIGtm ZF9wcm9jZXNzX3JlZl9yZWxlYXNlKTsKPj4gK30KPj4gKwo+PiDCoCAvKiBObyBwcm9jZXNzIGxv Y2tpbmcgaXMgbmVlZGVkIGluIHRoaXMgZnVuY3Rpb24sIGJlY2F1c2UgdGhlIHByb2Nlc3MKPj4g wqDCoCAqIGlzIG5vdCBmaW5kYWJsZSBhbnkgbW9yZS4gV2UgbXVzdCBhc3N1bWUgdGhhdCBubyBv dGhlciB0aHJlYWQgaXMKPj4gwqDCoCAqIHVzaW5nIGl0IGFueSBtb3JlLCBvdGhlcndpc2Ugd2Ug Y291bGRuJ3Qgc2FmZWx5IGZyZWUgdGhlIHByb2Nlc3MKPj4gQEAgLTIwMSw3ICsyMDcsNyBAQCBz dGF0aWMgdm9pZCBrZmRfcHJvY2Vzc19kZXN0cm95X2RlbGF5ZWQoc3RydWN0Cj4+IHJjdV9oZWFk ICpyY3UpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MgKnAgPSBjb250 YWluZXJfb2YocmN1LCBzdHJ1Y3Qga2ZkX3Byb2Nlc3MsCj4+IHJjdSk7Cj4+IMKgIC3CoMKgwqAg a3JlZl9wdXQoJnAtPnJlZiwga2ZkX3Byb2Nlc3NfcmVmX3JlbGVhc2UpOwo+PiArwqDCoMKgIGtm ZF91bnJlZl9wcm9jZXNzKHApOwo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyB2b2lkIGtmZF9wcm9j ZXNzX25vdGlmaWVyX3JlbGVhc2Uoc3RydWN0IG1tdV9ub3RpZmllciAqbW4sCj4+IEBAIC01MjUs NiArNTMxLDggQEAgdm9pZCBrZmRfcHJvY2Vzc19pb21tdV91bmJpbmRfY2FsbGJhY2soc3RydWN0 Cj4+IGtmZF9kZXYgKmRldiwgdW5zaWduZWQgaW50IHBhc2lkKQo+PiDCoCDCoMKgwqDCoMKgIG11 dGV4X3VubG9jayhrZmRfZ2V0X2RiZ21ncl9tdXRleCgpKTsKPj4gwqAgK8KgwqDCoCBtdXRleF9s b2NrKCZwLT5tdXRleCk7Cj4+ICsKPj4gwqDCoMKgwqDCoCBwZGQgPSBrZmRfZ2V0X3Byb2Nlc3Nf ZGV2aWNlX2RhdGEoZGV2LCBwKTsKPj4gwqDCoMKgwqDCoCBpZiAocGRkKQo+PiDCoMKgwqDCoMKg wqDCoMKgwqAgLyogRm9yIEdQVSByZWx5aW5nIG9uIElPTU1VLCB3ZSBuZWVkIHRvIGRlcXVldWUg aGVyZQo+PiBAQCAtNTMzLDYgKzU0MSw4IEBAIHZvaWQga2ZkX3Byb2Nlc3NfaW9tbXVfdW5iaW5k X2NhbGxiYWNrKHN0cnVjdAo+PiBrZmRfZGV2ICpkZXYsIHVuc2lnbmVkIGludCBwYXNpZCkKPj4g wqDCoMKgwqDCoMKgwqDCoMKgIGtmZF9wcm9jZXNzX2RlcXVldWVfZnJvbV9kZXZpY2UocGRkKTsK Pj4gwqAgwqDCoMKgwqDCoCBtdXRleF91bmxvY2soJnAtPm11dGV4KTsKPj4gKwo+PiArwqDCoMKg IGtmZF91bnJlZl9wcm9jZXNzKHApOwo+PiDCoCB9Cj4+IMKgIMKgIHN0cnVjdCBrZmRfcHJvY2Vz c19kZXZpY2UgKmtmZF9nZXRfZmlyc3RfcHJvY2Vzc19kZXZpY2VfZGF0YSgKPj4gQEAgLTU1Nyw3 ICs1NjcsNyBAQCBib29sIGtmZF9oYXNfcHJvY2Vzc19kZXZpY2VfZGF0YShzdHJ1Y3QKPj4ga2Zk X3Byb2Nlc3MgKnApCj4+IMKgwqDCoMKgwqAgcmV0dXJuICEobGlzdF9lbXB0eSgmcC0+cGVyX2Rl dmljZV9kYXRhKSk7Cj4+IMKgIH0KPj4gwqAgLS8qIFRoaXMgcmV0dXJucyB3aXRoIHByb2Nlc3Mt Pm11dGV4IGxvY2tlZC4gKi8KPj4gKy8qIFRoaXMgaW5jcmVtZW50cyB0aGUgcHJvY2Vzcy0+cmVm IGNvdW50ZXIuICovCj4+IMKgIHN0cnVjdCBrZmRfcHJvY2VzcyAqa2ZkX2xvb2t1cF9wcm9jZXNz X2J5X3Bhc2lkKHVuc2lnbmVkIGludCBwYXNpZCkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHN0cnVj dCBrZmRfcHJvY2VzcyAqcDsKPj4gQEAgLTU2Nyw3ICs1NzcsNyBAQCBzdHJ1Y3Qga2ZkX3Byb2Nl c3MKPj4gKmtmZF9sb29rdXBfcHJvY2Vzc19ieV9wYXNpZCh1bnNpZ25lZCBpbnQgcGFzaWQpCj4+ IMKgIMKgwqDCoMKgwqAgaGFzaF9mb3JfZWFjaF9yY3Uoa2ZkX3Byb2Nlc3Nlc190YWJsZSwgdGVt cCwgcCwga2ZkX3Byb2Nlc3Nlcykgewo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHAtPnBhc2lk ID09IHBhc2lkKSB7Cj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11dGV4X2xvY2soJnAtPm11 dGV4KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAga3JlZl9nZXQoJnAtPnJlZik7Cj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+ PiDCoMKgwqDCoMKgIH0KPgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4 Cg==