From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?Q?Christian_K=c3=b6nig?= Subject: Re: [PATCH] drm/ttm: fix busy memory to fail other user v5 Date: Tue, 30 Apr 2019 11:10:58 +0200 Message-ID: <6f501d5f-1ac1-42e9-88af-c699d6fe44fe@gmail.com> References: <20190430070151.16674-1-david1.zhou@amd.com> Reply-To: christian.koenig@amd.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm1-x343.google.com (mail-wm1-x343.google.com [IPv6:2a00:1450:4864:20::343]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9810E88EFF for ; Tue, 30 Apr 2019 09:11:02 +0000 (UTC) Received: by mail-wm1-x343.google.com with SMTP id h18so2993058wml.1 for ; Tue, 30 Apr 2019 02:11:02 -0700 (PDT) In-Reply-To: <20190430070151.16674-1-david1.zhou@amd.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Chunming Zhou , Christian.Koenig@amd.com, Prike.Liang@amd.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org QW0gMzAuMDQuMTkgdW0gMDk6MDEgc2NocmllYiBDaHVubWluZyBaaG91Ogo+IGhlYXZ5IGdwdSBq b2IgY291bGQgb2NjdXB5IG1lbW9yeSBsb25nIHRpbWUsIHdoaWNoIGxlYWQgb3RoZXIgdXNlciBm YWlsIHRvIGdldCBtZW1vcnkuCj4KPiBiYXNpY2FsbHkgcGljayB1cCBDaHJpc3RpYW4gaWRlYToK Pgo+IDEuIFJlc2VydmUgdGhlIEJPIGluIERDIHVzaW5nIGEgd3dfbXV0ZXggdGlja2V0ICh0cml2 aWFsKS4KPiAyLiBJZiB3ZSB0aGVuIHJ1biBpbnRvIHRoaXMgRUJVU1kgY29uZGl0aW9uIGluIFRU TSBjaGVjayBpZiB0aGUgQk8gd2UgbmVlZCBtZW1vcnkgZm9yIChvciByYXRoZXIgdGhlIHd3X211 dGV4IG9mIGl0cyByZXNlcnZhdGlvbiBvYmplY3QpIGhhcyBhIHRpY2tldCBhc3NpZ25lZC4KPiAz LiBJZiB3ZSBoYXZlIGEgdGlja2V0IHdlIGdyYWIgYSByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IEJP IG9uIHRoZSBMUlUsIGRyb3AgdGhlIExSVSBsb2NrIGFuZCB0cnkgdG8gZ3JhYiB0aGUgcmVzZXJ2 YXRpb24gbG9jayB3aXRoIHRoZSB0aWNrZXQuCj4gNC4gSWYgZ2V0dGluZyB0aGUgcmVzZXJ2YXRp b24gbG9jayB3aXRoIHRoZSB0aWNrZXQgc3VjY2VlZGVkIHdlIGNoZWNrIGlmIHRoZSBCTyBpcyBz dGlsbCB0aGUgZmlyc3Qgb25lIG9uIHRoZSBMUlUgaW4gcXVlc3Rpb24gKHRoZSBCTyBjb3VsZCBo YXZlIG1vdmVkKS4KPiA1LiBJZiB0aGUgQk8gaXMgc3RpbGwgdGhlIGZpcnN0IG9uZSBvbiB0aGUg TFJVIGluIHF1ZXN0aW9uIHdlIHRyeSB0byBldmljdCBpdCBhcyB3ZSB3b3VsZCBldmljdCBhbnkg b3RoZXIgQk8uCj4gNi4gSWYgYW55IG9mIHRoZSAiSWYncyIgYWJvdmUgZmFpbCB3ZSBqdXN0IGJh Y2sgb2ZmIGFuZCByZXR1cm4gLUVCVVNZLgo+Cj4gdjI6IGZpeCBzb21lIG1pbm9yIGNoZWNrCj4g djM6IGFkZHJlc3MgQ2hyaXN0aWFuIHYyIGNvbW1lbnRzLgo+IHY0OiBmaXggc29tZSBtaXNzaW5n Cj4gdjU6IGhhbmRsZSBmaXJzdF9ibyB1bmxvY2sgYW5kIGJvX2dldC9wdXQKPgo+IENoYW5nZS1J ZDogSTIxNDIzZmI5MjJmODg1NDY1ZjEzODMzYzQxZGYxZTEzNDM2NGE4ZTcKPiBTaWduZWQtb2Zm LWJ5OiBDaHVubWluZyBaaG91IDxkYXZpZDEuemhvdUBhbWQuY29tPgo+IC0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X29iamVjdC5jICAgIHwgIDcgKy0KPiAgIC4uLi9n cHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYyB8IDIyICsrKy0tCj4gICBk cml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jICAgICAgICAgICAgICAgICAgfCA4MSArKysrKysr KysrKysrKysrKy0tCj4gICAzIGZpbGVzIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDExIGRl bGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3Qu Ywo+IGluZGV4IGFmZmRlNzJiNDRkYi4uNTIzNzczZTg1Mjg0IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9vYmplY3QuYwo+IEBAIC04MTEsNyArODExLDEyIEBAIGlu dCBhbWRncHVfYm9fcGluX3Jlc3RyaWN0ZWQoc3RydWN0IGFtZGdwdV9ibyAqYm8sIHUzMiBkb21h aW4sCj4gICAJCQkgICAgIHU2NCBtaW5fb2Zmc2V0LCB1NjQgbWF4X29mZnNldCkKPiAgIHsKPiAg IAlzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiA9IGFtZGdwdV90dG1fYWRldihiby0+dGJvLmJk ZXYpOwo+IC0Jc3RydWN0IHR0bV9vcGVyYXRpb25fY3R4IGN0eCA9IHsgZmFsc2UsIGZhbHNlIH07 Cj4gKwlzdHJ1Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0gewo+ICsJCS5pbnRlcnJ1cHRpYmxl ID0gZmFsc2UsCj4gKwkJLm5vX3dhaXRfZ3B1ID0gZmFsc2UsCj4gKwkJLnJlc3YgPSBiby0+dGJv LnJlc3YsCj4gKwkJLmZsYWdzID0gMAo+ICsJfTsKPiAgIAlpbnQgciwgaTsKPiAgIAo+ICAgCWlm IChhbWRncHVfdHRtX3R0X2dldF91c2VybW0oYm8tPnRiby50dG0pKQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vYW1kL2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2FtZC9kaXNwbGF5L2FtZGdwdV9kbS9hbWRncHVfZG0uYwo+IGluZGV4IGE1Y2Fj Zjg0NmUxYi4uY2MzNjc3YzRhNGMyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQv ZGlzcGxheS9hbWRncHVfZG0vYW1kZ3B1X2RtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2Rpc3BsYXkvYW1kZ3B1X2RtL2FtZGdwdV9kbS5jCj4gQEAgLTQxMDEsNiArNDEwMSw5IEBAIHN0 YXRpYyBpbnQgZG1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxh bmUsCj4gICAJc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXY7Cj4gICAJc3RydWN0IGFtZGdwdV9i byAqcmJvOwo+ICAgCXN0cnVjdCBkbV9wbGFuZV9zdGF0ZSAqZG1fcGxhbmVfc3RhdGVfbmV3LCAq ZG1fcGxhbmVfc3RhdGVfb2xkOwo+ICsJc3RydWN0IGxpc3RfaGVhZCBsaXN0LCBkdXBsaWNhdGVz Owo+ICsJc3RydWN0IHR0bV92YWxpZGF0ZV9idWZmZXIgdHY7Cj4gKwlzdHJ1Y3Qgd3dfYWNxdWly ZV9jdHggdGlja2V0Owo+ICAgCXVpbnQ2NF90IHRpbGluZ19mbGFnczsKPiAgIAl1aW50MzJfdCBk b21haW47Cj4gICAJaW50IHI7Cj4gQEAgLTQxMTcsOSArNDEyMCwxOCBAQCBzdGF0aWMgaW50IGRt X3BsYW5lX2hlbHBlcl9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCW9i aiA9IG5ld19zdGF0ZS0+ZmItPm9ialswXTsKPiAgIAlyYm8gPSBnZW1fdG9fYW1kZ3B1X2JvKG9i aik7Cj4gICAJYWRldiA9IGFtZGdwdV90dG1fYWRldihyYm8tPnRiby5iZGV2KTsKPiAtCXIgPSBh bWRncHVfYm9fcmVzZXJ2ZShyYm8sIGZhbHNlKTsKPiAtCWlmICh1bmxpa2VseShyICE9IDApKQo+ ICsJSU5JVF9MSVNUX0hFQUQoJmxpc3QpOwo+ICsJSU5JVF9MSVNUX0hFQUQoJmR1cGxpY2F0ZXMp Owo+ICsKPiArCXR2LmJvID0gJnJiby0+dGJvOwo+ICsJdHYubnVtX3NoYXJlZCA9IDE7Cj4gKwls aXN0X2FkZCgmdHYuaGVhZCwgJmxpc3QpOwo+ICsKPiArCXIgPSB0dG1fZXVfcmVzZXJ2ZV9idWZm ZXJzKCZ0aWNrZXQsICZsaXN0LCBmYWxzZSwgJmR1cGxpY2F0ZXMpOwo+ICsJaWYgKHIpIHsKPiAr CQlkZXZfZXJyKGFkZXYtPmRldiwgImZhaWwgdG8gcmVzZXJ2ZSBibyAoJWQpXG4iLCByKTsKPiAg IAkJcmV0dXJuIHI7Cj4gKwl9Cj4gICAKPiAgIAlpZiAocGxhbmUtPnR5cGUgIT0gRFJNX1BMQU5F X1RZUEVfQ1VSU09SKQo+ICAgCQlkb21haW4gPSBhbWRncHVfZGlzcGxheV9zdXBwb3J0ZWRfZG9t YWlucyhhZGV2KTsKPiBAQCAtNDEzMCwyMSArNDE0MiwyMSBAQCBzdGF0aWMgaW50IGRtX3BsYW5l X2hlbHBlcl9wcmVwYXJlX2ZiKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ICAgCWlmICh1bmxp a2VseShyICE9IDApKSB7Cj4gICAJCWlmIChyICE9IC1FUkVTVEFSVFNZUykKPiAgIAkJCURSTV9F UlJPUigiRmFpbGVkIHRvIHBpbiBmcmFtZWJ1ZmZlciB3aXRoIGVycm9yICVkXG4iLCByKTsKPiAt CQlhbWRncHVfYm9fdW5yZXNlcnZlKHJibyk7Cj4gKwkJdHRtX2V1X2JhY2tvZmZfcmVzZXJ2YXRp b24oJnRpY2tldCwgJmxpc3QpOwo+ICAgCQlyZXR1cm4gcjsKPiAgIAl9Cj4gICAKPiAgIAlyID0g YW1kZ3B1X3R0bV9hbGxvY19nYXJ0KCZyYm8tPnRibyk7Cj4gICAJaWYgKHVubGlrZWx5KHIgIT0g MCkpIHsKPiAgIAkJYW1kZ3B1X2JvX3VucGluKHJibyk7Cj4gLQkJYW1kZ3B1X2JvX3VucmVzZXJ2 ZShyYm8pOwo+ICsJCXR0bV9ldV9iYWNrb2ZmX3Jlc2VydmF0aW9uKCZ0aWNrZXQsICZsaXN0KTsK PiAgIAkJRFJNX0VSUk9SKCIlcCBiaW5kIGZhaWxlZFxuIiwgcmJvKTsKPiAgIAkJcmV0dXJuIHI7 Cj4gICAJfQo+ICAgCj4gICAJYW1kZ3B1X2JvX2dldF90aWxpbmdfZmxhZ3MocmJvLCAmdGlsaW5n X2ZsYWdzKTsKPiAgIAo+IC0JYW1kZ3B1X2JvX3VucmVzZXJ2ZShyYm8pOwo+ICsJdHRtX2V1X2Jh Y2tvZmZfcmVzZXJ2YXRpb24oJnRpY2tldCwgJmxpc3QpOwoKV2VsbCBJIGNhbiBvbmx5IHJlcGVh dCBteXNlbGYsIHBsZWFzZSBwdXQgdGhhdCBpbnRvIGEgc2VwYXJhdGUgcGF0Y2ghCgo+ICAgCj4g ICAJYWZiLT5hZGRyZXNzID0gYW1kZ3B1X2JvX2dwdV9vZmZzZXQocmJvKTsKPiAgIAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9iby5jIGIvZHJpdmVycy9ncHUvZHJtL3R0 bS90dG1fYm8uYwo+IGluZGV4IDg1MDJiM2VkMmQ4OC4uMmM0OTYzZTEwNWQ5IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX2JvLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v dHRtL3R0bV9iby5jCj4gQEAgLTc2NiwxMSArNzY2LDEzIEBAIEVYUE9SVF9TWU1CT0wodHRtX2Jv X2V2aWN0aW9uX3ZhbHVhYmxlKTsKPiAgICAqIGIuIE90aGVyd2lzZSwgdHJ5bG9jayBpdC4KPiAg ICAqLwo+ICAgc3RhdGljIGJvb2wgdHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxlKHN0cnVj dCB0dG1fYnVmZmVyX29iamVjdCAqYm8sCj4gLQkJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAq Y3R4LCBib29sICpsb2NrZWQpCj4gKwkJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCAqY3R4LCBi b29sICpsb2NrZWQsIGJvb2wgKmJ1c3kpCj4gICB7Cj4gICAJYm9vbCByZXQgPSBmYWxzZTsKPiAg IAo+ICAgCSpsb2NrZWQgPSBmYWxzZTsKPiArCWlmIChidXN5KQo+ICsJCSpidXN5ID0gZmFsc2U7 Cj4gICAJaWYgKGJvLT5yZXN2ID09IGN0eC0+cmVzdikgewo+ICAgCQlyZXNlcnZhdGlvbl9vYmpl Y3RfYXNzZXJ0X2hlbGQoYm8tPnJlc3YpOwo+ICAgCQlpZiAoY3R4LT5mbGFncyAmIFRUTV9PUFRf RkxBR19BTExPV19SRVNfRVZJQ1QKPiBAQCAtNzc5LDYgKzc4MSw4IEBAIHN0YXRpYyBib29sIHR0 bV9ib19ldmljdF9zd2Fwb3V0X2FsbG93YWJsZShzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJv LAo+ICAgCX0gZWxzZSB7Cj4gICAJCSpsb2NrZWQgPSByZXNlcnZhdGlvbl9vYmplY3RfdHJ5bG9j ayhiby0+cmVzdik7Cj4gICAJCXJldCA9ICpsb2NrZWQ7Cj4gKwkJaWYgKCFyZXQgJiYgYnVzeSkK PiArCQkJKmJ1c3kgPSB0cnVlOwo+ICAgCX0KPiAgIAo+ICAgCXJldHVybiByZXQ7Cj4gQEAgLTc5 MSw3ICs3OTUsNyBAQCBzdGF0aWMgaW50IHR0bV9tZW1fZXZpY3RfZmlyc3Qoc3RydWN0IHR0bV9i b19kZXZpY2UgKmJkZXYsCj4gICB7Cj4gICAJc3RydWN0IHR0bV9ib19nbG9iYWwgKmdsb2IgPSBi ZGV2LT5nbG9iOwo+ICAgCXN0cnVjdCB0dG1fbWVtX3R5cGVfbWFuYWdlciAqbWFuID0gJmJkZXYt Pm1hblttZW1fdHlwZV07Cj4gLQlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gTlVMTDsK PiArCXN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8gPSBOVUxMLCAqZmlyc3RfYm8gPSBOVUxM Owo+ICAgCWJvb2wgbG9ja2VkID0gZmFsc2U7Cj4gICAJdW5zaWduZWQgaTsKPiAgIAlpbnQgcmV0 Owo+IEBAIC03OTksOCArODAzLDE1IEBAIHN0YXRpYyBpbnQgdHRtX21lbV9ldmljdF9maXJzdChz dHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKPiAgIAlzcGluX2xvY2soJmdsb2ItPmxydV9sb2Nr KTsKPiAgIAlmb3IgKGkgPSAwOyBpIDwgVFRNX01BWF9CT19QUklPUklUWTsgKytpKSB7Cj4gICAJ CWxpc3RfZm9yX2VhY2hfZW50cnkoYm8sICZtYW4tPmxydVtpXSwgbHJ1KSB7Cj4gLQkJCWlmICgh dHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxlKGJvLCBjdHgsICZsb2NrZWQpKQo+ICsJCQli b29sIGJ1c3kgPSBmYWxzZTsKPiArCQkJaWYgKCF0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2Fi bGUoYm8sIGN0eCwgJmxvY2tlZCwKPiArCQkJCQkJCSAgICAmYnVzeSkpIHsKPiArCQkJCWlmICgh Zmlyc3RfYm8gJiYgYnVzeSkgewo+ICsJCQkJCXR0bV9ib19nZXQoYm8pOwo+ICsJCQkJCWZpcnN0 X2JvID0gYm87Cj4gKwkJCQl9Cj4gICAJCQkJY29udGludWU7Cj4gKwkJCX0KPiAgIAo+ICAgCQkJ aWYgKHBsYWNlICYmICFiZGV2LT5kcml2ZXItPmV2aWN0aW9uX3ZhbHVhYmxlKGJvLAo+ICAgCQkJ CQkJCQkgICAgICBwbGFjZSkpIHsKPiBAQCAtODA4LDYgKzgxOSw3IEBAIHN0YXRpYyBpbnQgdHRt X21lbV9ldmljdF9maXJzdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRldiwKPiAgIAkJCQkJcmVz ZXJ2YXRpb25fb2JqZWN0X3VubG9jayhiby0+cmVzdik7Cj4gICAJCQkJY29udGludWU7Cj4gICAJ CQl9Cj4gKwo+ICAgCQkJYnJlYWs7Cj4gICAJCX0KPiAgIAo+IEBAIC04MjAsNyArODMyLDY1IEBA IHN0YXRpYyBpbnQgdHRtX21lbV9ldmljdF9maXJzdChzdHJ1Y3QgdHRtX2JvX2RldmljZSAqYmRl diwKPiAgIAo+ICAgCWlmICghYm8pIHsKPiAgIAkJc3Bpbl91bmxvY2soJmdsb2ItPmxydV9sb2Nr KTsKPiAtCQlyZXR1cm4gLUVCVVNZOwo+ICsJCS8qIGNoZWNrIGlmIG90aGVyIHVzZXIgb2NjdXB5 IG1lbW9yeSB0b28gbG9uZyB0aW1lICovCj4gKwkJaWYgKCFmaXJzdF9ibyB8fCAhY3R4IHx8ICFj dHgtPnJlc3YgfHwgIWN0eC0+cmVzdi0+bG9jay5jdHgpIHsKPiArCQkJaWYgKGZpcnN0X2JvKQo+ ICsJCQkJdHRtX2JvX3B1dChmaXJzdF9ibyk7Cj4gKwkJCXJldHVybiAtRUJVU1k7Cj4gKwkJfQo+ ICsJCWlmIChjdHgtPmludGVycnVwdGlibGUpCj4gKwkJCXJldCA9IHd3X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmZmlyc3RfYm8tPnJlc3YtPmxvY2ssCj4gKwkJCQkJCQkgIGN0eC0+cmVzdi0+ bG9jay5jdHgpOwo+ICsJCWVsc2UKPiArCQkJcmV0ID0gd3dfbXV0ZXhfbG9jaygmZmlyc3RfYm8t PnJlc3YtPmxvY2ssIGN0eC0+cmVzdi0+bG9jay5jdHgpOwo+ICsJCWlmIChyZXQpIHsKPiArCQkJ dHRtX2JvX3B1dChmaXJzdF9ibyk7Cj4gKwkJCXJldHVybiByZXQ7Cj4gKwkJfQo+ICsJCXNwaW5f bG9jaygmZ2xvYi0+bHJ1X2xvY2spOwo+ICsJCWZvciAoaSA9IDA7IGkgPCBUVE1fTUFYX0JPX1BS SU9SSVRZOyArK2kpIHsKPiArCQkJLyogcHJldmlvdXMgYnVzeSByZXN2IGxvY2sgaXMgaGVsZCBi eSBhYm92ZSwgaWRsZSBub3csCj4gKwkJCSAqIHNvIGxldCB0aGVtIGV2aWN0YWJsZS4KPiArCQkJ ICovCj4gKwkJCXN0cnVjdCB0dG1fb3BlcmF0aW9uX2N0eCBidXN5X2N0eCA9IHsKPiArCQkJCS5p bnRlcnJ1cHRpYmxlID0gY3R4LT5pbnRlcnJ1cHRpYmxlLAo+ICsJCQkJLm5vX3dhaXRfZ3B1ICAg PSBjdHgtPm5vX3dhaXRfZ3B1LAo+ICsJCQkJLnJlc3YJICAgICAgID0gZmlyc3RfYm8tPnJlc3Ys Cj4gKwkJCQkuZmxhZ3MJICAgICAgID0gVFRNX09QVF9GTEFHX0FMTE9XX1JFU19FVklDVAo+ICsJ CQl9Owo+ICsJCQlsaXN0X2Zvcl9lYWNoX2VudHJ5KGJvLCAmbWFuLT5scnVbaV0sIGxydSkgewo+ ICsJCQkJaWYgKCF0dG1fYm9fZXZpY3Rfc3dhcG91dF9hbGxvd2FibGUoYm8sCj4gKwkJCQkJCQkJ ICAgICZidXN5X2N0eCwKPiArCQkJCQkJCQkgICAgJmxvY2tlZCwKPiArCQkJCQkJCQkgICAgTlVM TCkpCj4gKwkJCQkJY29udGludWU7Cj4gKwo+ICsJCQkJaWYgKHBsYWNlICYmICFiZGV2LT5kcml2 ZXItPmV2aWN0aW9uX3ZhbHVhYmxlKGJvLAo+ICsJCQkJCQkJCSAgICAgIHBsYWNlKSkgewo+ICsJ CQkJCWlmIChsb2NrZWQpCj4gKwkJCQkJCXJlc2VydmF0aW9uX29iamVjdF91bmxvY2soYm8tPnJl c3YpOwo+ICsJCQkJCWNvbnRpbnVlOwo+ICsJCQkJfQo+ICsJCQkJYnJlYWs7Cj4gKwkJCX0KPiAr CQkJLyogSWYgdGhlIGlubmVyIGxvb3AgdGVybWluYXRlZCBlYXJseSwgd2UgaGF2ZSBvdXIgY2Fu ZGlkYXRlICovCj4gKwkJCWlmICgmYm8tPmxydSAhPSAmbWFuLT5scnVbaV0pCj4gKwkJCQlicmVh azsKPiArCQkJYm8gPSBOVUxMOwo+ICsJCX0KClNvIHdlIGFyZSBub3cgc2VhcmNoaW5nIGZvciBh bnkgQk8gYWdhaW4gd2hpY2ggbWF0Y2hlcyB0aGUgY3JpdGVyaWE/IApHb29kIGlkZWEuCgpDYW4g d2UgZmFjdG9yIHRob3NlIHR3byBsb29wcyBvdXQgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uPyBJ IG1lYW4gdGhleSAKYXJlIG1vc3RseSBpZGVudGljYWwgbm93IHRvIHRoZSBvbmUgYWJvdmUsIGFy ZW4ndCB0aGV5PwoKPiArCQlpZiAoYm8gJiYgKGJvLT5yZXN2ID09IGZpcnN0X2JvLT5yZXN2KSkK PiArCQkJbG9ja2VkID0gdHJ1ZTsKPiArCQllbHNlIGlmIChibykKPiArCQkJd3dfbXV0ZXhfdW5s b2NrKCZmaXJzdF9iby0+cmVzdi0+bG9jayk7Cj4gKwkJdHRtX2JvX3B1dChmaXJzdF9ibyk7Cj4g KwkJZmlyc3RfYm8gPSBOVUxMOwo+ICsJCWlmICghYm8pIHsKPiArCQkJc3Bpbl91bmxvY2soJmds b2ItPmxydV9sb2NrKTsKPiArCQkJcmV0dXJuIC1FQlVTWTsKPiArCQl9Cj4gKwl9IGVsc2Ugewo+ ICsJCWlmIChmaXJzdF9ibykKPiArCQkJdHRtX2JvX3B1dChmaXJzdF9ibyk7CgpUaGlzIG11c3Qg Y29tZSBhIGJpdCBsYXRlciwgc2luY2Ugd2UgY2FuJ3QgY2FsbCB0dG1fYm9fcHV0KCkgd2hpbGUg CmhvbGRpbmcgdGhlIHNwaW5sb2NrLgoKUmVnYXJkcywKQ2hyaXN0aWFuLgoKPiAgIAl9Cj4gICAK PiAgIAlrcmVmX2dldCgmYm8tPmxpc3Rfa3JlZik7Cj4gQEAgLTE3ODQsNyArMTg1NCw4IEBAIGlu dCB0dG1fYm9fc3dhcG91dChzdHJ1Y3QgdHRtX2JvX2dsb2JhbCAqZ2xvYiwgc3RydWN0IHR0bV9v cGVyYXRpb25fY3R4ICpjdHgpCj4gICAJc3Bpbl9sb2NrKCZnbG9iLT5scnVfbG9jayk7Cj4gICAJ Zm9yIChpID0gMDsgaSA8IFRUTV9NQVhfQk9fUFJJT1JJVFk7ICsraSkgewo+ICAgCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KGJvLCAmZ2xvYi0+c3dhcF9scnVbaV0sIHN3YXApIHsKPiAtCQkJaWYgKHR0 bV9ib19ldmljdF9zd2Fwb3V0X2FsbG93YWJsZShibywgY3R4LCAmbG9ja2VkKSkgewo+ICsJCQlp ZiAodHRtX2JvX2V2aWN0X3N3YXBvdXRfYWxsb3dhYmxlKGJvLCBjdHgsICZsb2NrZWQsCj4gKwkJ CQkJCQkgICBOVUxMKSkgewo+ICAgCQkJCXJldCA9IDA7Cj4gICAJCQkJYnJlYWs7Cj4gICAJCQl9 CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2 ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWw=