From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chunming Zhou Subject: Re: [PATCH 1/2] drm/amdgpu:resolv deadlock between reset and cs_ioctl v4. Date: Mon, 9 Oct 2017 10:56:49 +0800 Message-ID: References: <1507314021-18323-1-git-send-email-andrey.grodzovsky@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507314021-18323-1-git-send-email-andrey.grodzovsky-5C7GfCeVMHo@public.gmane.org> Content-Language: en-US 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: Andrey Grodzovsky , amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Cc: Christian.Koenig-5C7GfCeVMHo@public.gmane.org, Monk Liu eW91IGFkZGVkIHRoZSBjdHggbXV0ZXggdG8ga2VlcCB0aGUgam9iIHB1c2hpbmcgaW4gb3JkZXIs IHRoYXQncyBnb29kLCAKQWNrZWQtYnk6IENodW5taW5nIFpob3UgPGRhdmlkMS56aG91QGFtZC5j b20+CgoKQlRXOiBhZnRlciB5b3UgYWRkZWQgY3R4IG11dGV4IGZvciBjcywgSSB0aGluayB0aGUg dGhyZWFkIGxvY2sgaW4gbGliZHJtIAppc24ndCBuZWVkIGFueSBtb3JlLCB3ZSBjYW4gcmVtb3Zl IGl0IG5vdy4KCgpSZWdhcmRzLAoKRGF2aWQgWmhvdQoKCk9uIDIwMTflubQxMOaciDA35pelIDAy OjIwLCBBbmRyZXkgR3JvZHpvdnNreSB3cm90ZToKPiBGcm9tOiBNb25rIExpdSA8TW9uay5MaXVA YW1kLmNvbT4KPgo+IG5lZWQgdG8gdW5yZXNlcnZlIHR0bSBibyBiZWZvcmUgImNzX2FkZF9mZW5j ZSIgYW5kICJlbnRpdHlfcHVzaF9qb2IiCj4gb3RoZXJ3aXNlIHRoZXJlIHdpbGwgYmUgZGVhZGxv Y2sgYmV0d2VlbiAicmVjb3Zlcl92cmFtX2Zyb21fc2hhZG93Igo+IGFuZCBwcmV2aW91cyB0d28g cm91dGluZXMgb24gdGhlIHR0bSBibydzIHJlc3YgbG9jay4KPgo+IHYyOgo+IEFkZCBwZXIgY3R4 IG11dGV4Lgo+Cj4gdjM6Cj4gUmVsbG9jYXRlIG11dGV4IGFxdWlzaXRpb24gaW50byBhbWRncHVf Y3NfcGFyc2VyX2luaXQgYW5kIG11ZXggcmVsZWFzZQo+IGludG8gYW1kZ3B1X2NzX3BhcnNlcl9m aW5pIHRvIGF2b2lkIG5lc3RlZCBsb2NraW5nIGxvY2t1cC4KPiBBZGQgcm9sbGJhY2sgY29kZSBm b3IgYW1kZ3B1X2N0eF9hZGRfZmVuY2UgaW4gY2FzZSBvZiBlcnJvciBvciBzaWduYWwKPiBpbnRl cnJ1cHRpb24uCj4KPiB2NDoKPiBSZWZhY3RvciBhbWRncHVfY3NfaWJfdm1fY2h1bmsgYW5kIGFt ZGdwdV9jc19pYl9maWxsIHRvIGVuYWJsZQo+IG9sZCBmZW5jZSB3YWl0aW5nIGJlZm9yZSByZXNl cnZhdGlvbiBsb2NrIGlzIGFxdWlyZWQuCj4KPiBDaGFuZ2UtSWQ6IElhMjA5YmVhYjUwMzZiZmMy YzM4Y2JmMTgzMjRmYTNlZmQ0YmFiMWNmCj4gU2lnbmVkLW9mZi1ieTogTW9uayBMaXUgPE1vbmsu TGl1QGFtZC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQW5kcmV5IEdyb2R6b3Zza3kgPGFuZHJleS5n cm9kem92c2t5QGFtZC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9h bWRncHUuaCAgICAgfCAgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1 X2NzLmMgIHwgMTY0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMgfCAgIDQgKwo+ICAgMyBmaWxlcyBjaGFu Z2VkLCAxMDAgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmggYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaAo+IGluZGV4IDUzZDhkZjMuLmJhYTI5NTMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1LmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHUuaAo+IEBAIC03MjQsNiArNzI0LDcgQEAgc3RydWN0IGFtZGdw dV9jdHggewo+ICAgCXN0cnVjdCBkbWFfZmVuY2UJKipmZW5jZXM7Cj4gICAJc3RydWN0IGFtZGdw dV9jdHhfcmluZwlyaW5nc1tBTURHUFVfTUFYX1JJTkdTXTsKPiAgIAlib29sIHByZWFtYmxlX3By ZXNlbnRlZDsKPiArCXN0cnVjdCBtdXRleAkJbG9jazsKPiAgIH07Cj4gICAKPiAgIHN0cnVjdCBh bWRncHVfY3R4X21nciB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1 L2FtZGdwdV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiBp bmRleCA5ZjEyMDJhLi4wZmExYmM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X2NzLmMKPiBAQCAtODksNiArODksOSBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJf aW5pdChzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCwgdm9pZCAqZGF0YSkKPiAgIAkJZ290byBm cmVlX2NodW5rOwo+ICAgCX0KPiAgIAo+ICsKPiArCW11dGV4X2xvY2soJnAtPmN0eC0+bG9jayk7 Cj4gKwo+ICAgCS8qIGdldCBjaHVua3MgKi8KPiAgIAljaHVua19hcnJheV91c2VyID0gdTY0X3Rv X3VzZXJfcHRyKGNzLT5pbi5jaHVua3MpOwo+ICAgCWlmIChjb3B5X2Zyb21fdXNlcihjaHVua19h cnJheSwgY2h1bmtfYXJyYXlfdXNlciwKPiBAQCAtNzE1LDI4ICs3MTgsMjEgQEAgc3RhdGljIGlu dCBhbWRncHVfY3Nfc3luY19yaW5ncyhzdHJ1Y3QgYW1kZ3B1X2NzX3BhcnNlciAqcCkKPiAgIC8q Kgo+ICAgICogY3NfcGFyc2VyX2ZpbmkoKSAtIGNsZWFuIHBhcnNlciBzdGF0ZXMKPiAgICAqIEBw YXJzZXI6CXBhcnNlciBzdHJ1Y3R1cmUgaG9sZGluZyBwYXJzaW5nIGNvbnRleHQuCj4gLSAqIEBl cnJvcjoJZXJyb3IgbnVtYmVyCj4gLSAqCj4gLSAqIElmIGVycm9yIGlzIHNldCB0aGFuIHVudmFs aWRhdGUgYnVmZmVyLCBvdGhlcndpc2UganVzdCBmcmVlIG1lbW9yeQo+IC0gKiB1c2VkIGJ5IHBh cnNpbmcgY29udGV4dC4KPiAgICAqKi8KPiAtc3RhdGljIHZvaWQgYW1kZ3B1X2NzX3BhcnNlcl9m aW5pKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwYXJzZXIsIGludCBlcnJvciwKPiAtCQkJCSAg Ym9vbCBiYWNrb2ZmKQo+ICtzdGF0aWMgdm9pZCBhbWRncHVfY3NfcGFyc2VyX2Zpbmkoc3RydWN0 IGFtZGdwdV9jc19wYXJzZXIgKnBhcnNlcikKPiAgIHsKPiAgIAl1bnNpZ25lZCBpOwo+ICAgCj4g LQlpZiAoZXJyb3IgJiYgYmFja29mZikKPiAtCQl0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbigm cGFyc2VyLT50aWNrZXQsCj4gLQkJCQkJICAgJnBhcnNlci0+dmFsaWRhdGVkKTsKPiAtCj4gICAJ Zm9yIChpID0gMDsgaSA8IHBhcnNlci0+bnVtX3Bvc3RfZGVwX3N5bmNvYmpzOyBpKyspCj4gICAJ CWRybV9zeW5jb2JqX3B1dChwYXJzZXItPnBvc3RfZGVwX3N5bmNvYmpzW2ldKTsKPiAgIAlrZnJl ZShwYXJzZXItPnBvc3RfZGVwX3N5bmNvYmpzKTsKPiAgIAo+ICAgCWRtYV9mZW5jZV9wdXQocGFy c2VyLT5mZW5jZSk7Cj4gICAKPiAtCWlmIChwYXJzZXItPmN0eCkKPiArCWlmIChwYXJzZXItPmN0 eCkgewo+ICsJCW11dGV4X3VubG9jaygmcGFyc2VyLT5jdHgtPmxvY2spOwo+ICAgCQlhbWRncHVf Y3R4X3B1dChwYXJzZXItPmN0eCk7Cj4gKwl9Cj4gICAJaWYgKHBhcnNlci0+Ym9fbGlzdCkKPiAg IAkJYW1kZ3B1X2JvX2xpc3RfcHV0KHBhcnNlci0+Ym9fbGlzdCk7Cj4gICAKPiBAQCAtODQzLDcg KzgzOSw3MiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19pYl92bV9jaHVuayhzdHJ1Y3QgYW1kZ3B1 X2RldmljZSAqYWRldiwKPiAgIAlzdHJ1Y3QgYW1kZ3B1X2Zwcml2ICpmcHJpdiA9IHAtPmZpbHAt PmRyaXZlcl9wcml2Owo+ICAgCXN0cnVjdCBhbWRncHVfdm0gKnZtID0gJmZwcml2LT52bTsKPiAg IAlzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcgPSBwLT5qb2ItPnJpbmc7Cj4gLQlpbnQgaSwgcjsK PiArCWludCBpLCBqLCByOwo+ICsKPiArCWZvciAoaSA9IDAsIGogPSAwOyBpIDwgcC0+bmNodW5r cyAmJiBqIDwgcC0+am9iLT5udW1faWJzOyBpKyspIHsKPiArCj4gKwkJc3RydWN0IGFtZGdwdV9j c19jaHVuayAqY2h1bms7Cj4gKwkJc3RydWN0IGFtZGdwdV9pYiAqaWI7Cj4gKwkJc3RydWN0IGRy bV9hbWRncHVfY3NfY2h1bmtfaWIgKmNodW5rX2liOwo+ICsKPiArCQljaHVuayA9ICZwLT5jaHVu a3NbaV07Cj4gKwkJaWIgPSAmcC0+am9iLT5pYnNbal07Cj4gKwkJY2h1bmtfaWIgPSAoc3RydWN0 IGRybV9hbWRncHVfY3NfY2h1bmtfaWIgKiljaHVuay0+a2RhdGE7Cj4gKwo+ICsJCWlmIChjaHVu ay0+Y2h1bmtfaWQgIT0gQU1ER1BVX0NIVU5LX0lEX0lCKQo+ICsJCQkJCWNvbnRpbnVlOwo+ICsK PiArCQlpZiAocC0+am9iLT5yaW5nLT5mdW5jcy0+cGFyc2VfY3MpIHsKPiArCQkJc3RydWN0IGFt ZGdwdV9ib192YV9tYXBwaW5nICptOwo+ICsJCQlzdHJ1Y3QgYW1kZ3B1X2JvICphb2JqID0gTlVM TDsKPiArCQkJdWludDY0X3Qgb2Zmc2V0Owo+ICsJCQl1aW50OF90ICprcHRyOwo+ICsKPiArCQkJ ciA9IGFtZGdwdV9jc19maW5kX21hcHBpbmcocCwgY2h1bmtfaWItPnZhX3N0YXJ0LAo+ICsJCQkJ CQkgICAmYW9iaiwgJm0pOwo+ICsJCQlpZiAocikgewo+ICsJCQkJRFJNX0VSUk9SKCJJQiB2YV9z dGFydCBpcyBpbnZhbGlkXG4iKTsKPiArCQkJCXJldHVybiByOwo+ICsJCQl9Cj4gKwo+ICsJCQlp ZiAoKGNodW5rX2liLT52YV9zdGFydCArIGNodW5rX2liLT5pYl9ieXRlcykgPgo+ICsJCQkJKG0t Pmxhc3QgKyAxKSAqIEFNREdQVV9HUFVfUEFHRV9TSVpFKSB7Cj4gKwkJCQlEUk1fRVJST1IoIklC IHZhX3N0YXJ0K2liX2J5dGVzIGlzIGludmFsaWRcbiIpOwo+ICsJCQkJcmV0dXJuIC1FSU5WQUw7 Cj4gKwkJCX0KPiArCj4gKwkJCS8qIHRoZSBJQiBzaG91bGQgYmUgcmVzZXJ2ZWQgYXQgdGhpcyBw b2ludCAqLwo+ICsJCQlyID0gYW1kZ3B1X2JvX2ttYXAoYW9iaiwgKHZvaWQgKiopJmtwdHIpOwo+ ICsJCQlpZiAocikgewo+ICsJCQkJcmV0dXJuIHI7Cj4gKwkJCX0KPiArCj4gKwkJCW9mZnNldCA9 IG0tPnN0YXJ0ICogQU1ER1BVX0dQVV9QQUdFX1NJWkU7Cj4gKwkJCWtwdHIgKz0gY2h1bmtfaWIt PnZhX3N0YXJ0IC0gb2Zmc2V0Owo+ICsKPiArCQkJciA9ICBhbWRncHVfaWJfZ2V0KGFkZXYsIHZt LCBjaHVua19pYi0+aWJfYnl0ZXMsIGliKTsKPiArCQkJaWYgKHIpIHsKPiArCQkJCURSTV9FUlJP UigiRmFpbGVkIHRvIGdldCBpYiAhXG4iKTsKPiArCQkJCXJldHVybiByOwo+ICsJCQl9Cj4gKwo+ ICsJCQltZW1jcHkoaWItPnB0ciwga3B0ciwgY2h1bmtfaWItPmliX2J5dGVzKTsKPiArCQkJYW1k Z3B1X2JvX2t1bm1hcChhb2JqKTsKPiArCQl9IGVsc2Ugewo+ICsJCQlyID0gIGFtZGdwdV9pYl9n ZXQoYWRldiwgdm0sIDAsIGliKTsKPiArCQkJaWYgKHIpIHsKPiArCQkJCURSTV9FUlJPUigiRmFp bGVkIHRvIGdldCBpYiAhXG4iKTsKPiArCQkJCXJldHVybiByOwo+ICsJCQl9Cj4gKwo+ICsJCX0K PiArCj4gKwkJaWItPmdwdV9hZGRyID0gY2h1bmtfaWItPnZhX3N0YXJ0Owo+ICsJCWliLT5sZW5n dGhfZHcgPSBjaHVua19pYi0+aWJfYnl0ZXMgLyA0Owo+ICsJCWliLT5mbGFncyA9IGNodW5rX2li LT5mbGFnczsKPiArCQlqKys7Cj4gKwo+ICsJfQo+ICAgCj4gICAJLyogT25seSBmb3IgVVZEL1ZD RSBWTSBlbXVsYXRpb24gKi8KPiAgIAlpZiAocmluZy0+ZnVuY3MtPnBhcnNlX2NzKSB7Cj4gQEAg LTg2OCwxOSArOTI5LDE1IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX2liX3ZtX2NodW5rKHN0cnVj dCBhbWRncHVfZGV2aWNlICphZGV2LAo+ICAgc3RhdGljIGludCBhbWRncHVfY3NfaWJfZmlsbChz dHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiAgIAkJCSAgICAgc3RydWN0IGFtZGdwdV9jc19w YXJzZXIgKnBhcnNlcikKPiAgIHsKPiAtCXN0cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gcGFy c2VyLT5maWxwLT5kcml2ZXJfcHJpdjsKPiAtCXN0cnVjdCBhbWRncHVfdm0gKnZtID0gJmZwcml2 LT52bTsKPiAgIAlpbnQgaSwgajsKPiAgIAlpbnQgciwgY2VfcHJlZW1wdCA9IDAsIGRlX3ByZWVt cHQgPSAwOwo+ICAgCj4gICAJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBwYXJzZXItPm5jaHVua3Mg JiYgaiA8IHBhcnNlci0+am9iLT5udW1faWJzOyBpKyspIHsKPiAgIAkJc3RydWN0IGFtZGdwdV9j c19jaHVuayAqY2h1bms7Cj4gLQkJc3RydWN0IGFtZGdwdV9pYiAqaWI7Cj4gICAJCXN0cnVjdCBk cm1fYW1kZ3B1X2NzX2NodW5rX2liICpjaHVua19pYjsKPiAgIAkJc3RydWN0IGFtZGdwdV9yaW5n ICpyaW5nOwo+ICAgCj4gICAJCWNodW5rID0gJnBhcnNlci0+Y2h1bmtzW2ldOwo+IC0JCWliID0g JnBhcnNlci0+am9iLT5pYnNbal07Cj4gICAJCWNodW5rX2liID0gKHN0cnVjdCBkcm1fYW1kZ3B1 X2NzX2NodW5rX2liICopY2h1bmstPmtkYXRhOwo+ICAgCj4gICAJCWlmIChjaHVuay0+Y2h1bmtf aWQgIT0gQU1ER1BVX0NIVU5LX0lEX0lCKQo+IEBAIC05MTcsNTQgKzk3NCw2IEBAIHN0YXRpYyBp bnQgYW1kZ3B1X2NzX2liX2ZpbGwoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gICAKPiAg IAkJcGFyc2VyLT5qb2ItPnJpbmcgPSByaW5nOwo+ICAgCj4gLQkJaWYgKHJpbmctPmZ1bmNzLT5w YXJzZV9jcykgewo+IC0JCQlzdHJ1Y3QgYW1kZ3B1X2JvX3ZhX21hcHBpbmcgKm07Cj4gLQkJCXN0 cnVjdCBhbWRncHVfYm8gKmFvYmogPSBOVUxMOwo+IC0JCQl1aW50NjRfdCBvZmZzZXQ7Cj4gLQkJ CXVpbnQ4X3QgKmtwdHI7Cj4gLQo+IC0JCQlyID0gYW1kZ3B1X2NzX2ZpbmRfbWFwcGluZyhwYXJz ZXIsIGNodW5rX2liLT52YV9zdGFydCwKPiAtCQkJCQkJICAgJmFvYmosICZtKTsKPiAtCQkJaWYg KHIpIHsKPiAtCQkJCURSTV9FUlJPUigiSUIgdmFfc3RhcnQgaXMgaW52YWxpZFxuIik7Cj4gLQkJ CQlyZXR1cm4gcjsKPiAtCQkJfQo+IC0KPiAtCQkJaWYgKChjaHVua19pYi0+dmFfc3RhcnQgKyBj aHVua19pYi0+aWJfYnl0ZXMpID4KPiAtCQkJICAgIChtLT5sYXN0ICsgMSkgKiBBTURHUFVfR1BV X1BBR0VfU0laRSkgewo+IC0JCQkJRFJNX0VSUk9SKCJJQiB2YV9zdGFydCtpYl9ieXRlcyBpcyBp bnZhbGlkXG4iKTsKPiAtCQkJCXJldHVybiAtRUlOVkFMOwo+IC0JCQl9Cj4gLQo+IC0JCQkvKiB0 aGUgSUIgc2hvdWxkIGJlIHJlc2VydmVkIGF0IHRoaXMgcG9pbnQgKi8KPiAtCQkJciA9IGFtZGdw dV9ib19rbWFwKGFvYmosICh2b2lkICoqKSZrcHRyKTsKPiAtCQkJaWYgKHIpIHsKPiAtCQkJCXJl dHVybiByOwo+IC0JCQl9Cj4gLQo+IC0JCQlvZmZzZXQgPSBtLT5zdGFydCAqIEFNREdQVV9HUFVf UEFHRV9TSVpFOwo+IC0JCQlrcHRyICs9IGNodW5rX2liLT52YV9zdGFydCAtIG9mZnNldDsKPiAt Cj4gLQkJCXIgPSAgYW1kZ3B1X2liX2dldChhZGV2LCB2bSwgY2h1bmtfaWItPmliX2J5dGVzLCBp Yik7Cj4gLQkJCWlmIChyKSB7Cj4gLQkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgaWIgIVxu Iik7Cj4gLQkJCQlyZXR1cm4gcjsKPiAtCQkJfQo+IC0KPiAtCQkJbWVtY3B5KGliLT5wdHIsIGtw dHIsIGNodW5rX2liLT5pYl9ieXRlcyk7Cj4gLQkJCWFtZGdwdV9ib19rdW5tYXAoYW9iaik7Cj4g LQkJfSBlbHNlIHsKPiAtCQkJciA9ICBhbWRncHVfaWJfZ2V0KGFkZXYsIHZtLCAwLCBpYik7Cj4g LQkJCWlmIChyKSB7Cj4gLQkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQgaWIgIVxuIik7Cj4g LQkJCQlyZXR1cm4gcjsKPiAtCQkJfQo+IC0KPiAtCQl9Cj4gLQo+IC0JCWliLT5ncHVfYWRkciA9 IGNodW5rX2liLT52YV9zdGFydDsKPiAtCQlpYi0+bGVuZ3RoX2R3ID0gY2h1bmtfaWItPmliX2J5 dGVzIC8gNDsKPiAtCQlpYi0+ZmxhZ3MgPSBjaHVua19pYi0+ZmxhZ3M7Cj4gICAJCWorKzsKPiAg IAl9Cj4gICAKPiBAQCAtMTE2MCwxNCArMTE2OSwyNiBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19z dWJtaXQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAsCj4gICAKPiAgIAlhbWRncHVfY3NfcG9z dF9kZXBlbmRlbmNpZXMocCk7Cj4gICAKPiArCj4gKwkvKiBob29rIHNjaGVkIGZlbmNlIHRvIGFs bCBCT3MnIHJlc2VydmF0aW9uIGluIHZhbGlkYXRlZCBsaXN0Cj4gKwkgKiBhbmQgdW5yZXNlcnZl IHRoZW0uCj4gKwkgKgo+ICsJICogd2UgdW5yZXNlcnZlIGF0IGhlcmUgaXMgYmVjYXVzZSBvdGhl cndpc2UKPiArCSAqIHRoZXJlJ2xsIGJlIGRlYWRsb2NrIGJldHdlZW4gY3R4X2FkZF9mZW5jZS9z Y2hlZF9lbnRpdHlfcHVzaF9qb2IKPiArCSAqIGFuZCBncHVfcmVzZXQgcm91dGluZSdzIHJlY292 ZXJfYm9fZnJvbV9zaGFkb3cgb24gUEQvUFRFcycgdHRtIGJvIGxvY2sKPiArCSAqLwo+ICsJdHRt X2V1X2ZlbmNlX2J1ZmZlcl9vYmplY3RzKCZwLT50aWNrZXQsICZwLT52YWxpZGF0ZWQsIHAtPmZl bmNlKTsKPiArCj4gKwo+ICAgCWNzLT5vdXQuaGFuZGxlID0gYW1kZ3B1X2N0eF9hZGRfZmVuY2Uo cC0+Y3R4LCByaW5nLCBwLT5mZW5jZSk7Cj4gKwo+ICsKPiAgIAlqb2ItPnVmX3NlcXVlbmNlID0g Y3MtPm91dC5oYW5kbGU7Cj4gICAJYW1kZ3B1X2pvYl9mcmVlX3Jlc291cmNlcyhqb2IpOwo+ICAg Cj4gICAJdHJhY2VfYW1kZ3B1X2NzX2lvY3RsKGpvYik7Cj4gICAJYW1kX3NjaGVkX2VudGl0eV9w dXNoX2pvYigmam9iLT5iYXNlKTsKPiAgIAo+IC0JdHRtX2V1X2ZlbmNlX2J1ZmZlcl9vYmplY3Rz KCZwLT50aWNrZXQsICZwLT52YWxpZGF0ZWQsIHAtPmZlbmNlKTsKPiAgIAlhbWRncHVfbW5fdW5s b2NrKHAtPm1uKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+IEBAIC0xMTg5LDYgKzEyMTAsNyBAQCBp bnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0 cnVjdCBkcm1fZmlsZSAqZmlscCkKPiAgIAo+ICAgCXBhcnNlci5hZGV2ID0gYWRldjsKPiAgIAlw YXJzZXIuZmlscCA9IGZpbHA7Cj4gKwlmcHJpdiA9IGZpbHAtPmRyaXZlcl9wcml2Owo+ICAgCj4g ICAJciA9IGFtZGdwdV9jc19wYXJzZXJfaW5pdCgmcGFyc2VyLCBkYXRhKTsKPiAgIAlpZiAocikg ewo+IEBAIC0xMTk2LDYgKzEyMTgsMTAgQEAgaW50IGFtZGdwdV9jc19pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApCj4gICAJCWdv dG8gb3V0Owo+ICAgCX0KPiAgIAo+ICsJciA9IGFtZGdwdV9jc19pYl9maWxsKGFkZXYsICZwYXJz ZXIpOwo+ICsJaWYgKHIpCj4gKwkJZ290byBvdXQ7Cj4gKwo+ICAgCXIgPSBhbWRncHVfY3NfcGFy c2VyX2JvcygmcGFyc2VyLCBkYXRhKTsKPiAgIAlpZiAocikgewo+ICAgCQlpZiAociA9PSAtRU5P TUVNKQo+IEBAIC0xMjA2LDkgKzEyMzIsNiBAQCBpbnQgYW1kZ3B1X2NzX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsIHN0cnVjdCBkcm1fZmlsZSAqZmlscCkKPiAgIAl9 Cj4gICAKPiAgIAlyZXNlcnZlZF9idWZmZXJzID0gdHJ1ZTsKPiAtCXIgPSBhbWRncHVfY3NfaWJf ZmlsbChhZGV2LCAmcGFyc2VyKTsKPiAtCWlmIChyKQo+IC0JCWdvdG8gb3V0Owo+ICAgCj4gICAJ ciA9IGFtZGdwdV9jc19kZXBlbmRlbmNpZXMoYWRldiwgJnBhcnNlcik7Cj4gICAJaWYgKHIpIHsK PiBAQCAtMTIyNiw3ICsxMjQ5LDEwIEBAIGludCBhbWRncHVfY3NfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwgc3RydWN0IGRybV9maWxlICpmaWxwKQo+ICAgCXIgPSBh bWRncHVfY3Nfc3VibWl0KCZwYXJzZXIsIGNzKTsKPiAgIAo+ICAgb3V0Ogo+IC0JYW1kZ3B1X2Nz X3BhcnNlcl9maW5pKCZwYXJzZXIsIHIsIHJlc2VydmVkX2J1ZmZlcnMpOwo+ICsJaWYgKHIgJiYg cmVzZXJ2ZWRfYnVmZmVycykKPiArCQl0dG1fZXVfYmFja29mZl9yZXNlcnZhdGlvbigmcGFyc2Vy LnRpY2tldCwgJnBhcnNlci52YWxpZGF0ZWQpOwo+ICsKPiArCWFtZGdwdV9jc19wYXJzZXJfZmlu aSgmcGFyc2VyKTsKPiAgIAlyZXR1cm4gcjsKPiAgIH0KPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfY3R4LmMKPiBpbmRleCBhMTFlNDQzLi5jMDczYTY4IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jdHguYwo+IEBAIC0zOSw2ICszOSw4IEBAIHN0 YXRpYyBpbnQgYW1kZ3B1X2N0eF9pbml0KHN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2LCBzdHJ1 Y3QgYW1kZ3B1X2N0eCAqY3R4KQo+ICAgCWlmICghY3R4LT5mZW5jZXMpCj4gICAJCXJldHVybiAt RU5PTUVNOwo+ICAgCj4gKwltdXRleF9pbml0KCZjdHgtPmxvY2spOwo+ICsKPiAgIAlmb3IgKGkg PSAwOyBpIDwgQU1ER1BVX01BWF9SSU5HUzsgKytpKSB7Cj4gICAJCWN0eC0+cmluZ3NbaV0uc2Vx dWVuY2UgPSAxOwo+ICAgCQljdHgtPnJpbmdzW2ldLmZlbmNlcyA9ICZjdHgtPmZlbmNlc1thbWRn cHVfc2NoZWRfam9icyAqIGldOwo+IEBAIC05Niw2ICs5OCw4IEBAIHN0YXRpYyB2b2lkIGFtZGdw dV9jdHhfZmluaShzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4KQo+ICAgCQkJCSAgICAgICZjdHgtPnJp bmdzW2ldLmVudGl0eSk7Cj4gICAKPiAgIAlhbWRncHVfcXVldWVfbWdyX2ZpbmkoYWRldiwgJmN0 eC0+cXVldWVfbWdyKTsKPiArCj4gKwltdXRleF9kZXN0cm95KCZjdHgtPmxvY2spOwo+ICAgfQo+ ICAgCj4gICBzdGF0aWMgaW50IGFtZGdwdV9jdHhfYWxsb2Moc3RydWN0IGFtZGdwdV9kZXZpY2Ug KmFkZXYsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwph bWQtZ2Z4IG1haWxpbmcgbGlzdAphbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2FtZC1nZngK