From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Intel-gfx] [PATCH v4 06/11] drm/fb-helper: Make top-level lock more robust Date: Mon, 3 Apr 2017 10:40:07 +0200 Message-ID: <20170403084007.i6gyeemgh456i2hp@phenom.ffwll.local> References: <20170329144401.1804-1-thierry.reding@gmail.com> <20170329144401.1804-7-thierry.reding@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wr0-x241.google.com (mail-wr0-x241.google.com [IPv6:2a00:1450:400c:c0c::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id A064D6E2DD for ; Mon, 3 Apr 2017 08:40:13 +0000 (UTC) Received: by mail-wr0-x241.google.com with SMTP id w43so31386152wrb.1 for ; Mon, 03 Apr 2017 01:40:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20170329144401.1804-7-thierry.reding@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Thierry Reding Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBNYXIgMjksIDIwMTcgYXQgMDQ6NDM6NTZQTSArMDIwMCwgVGhpZXJyeSBSZWRpbmcg d3JvdGU6Cj4gRnJvbTogVGhpZXJyeSBSZWRpbmcgPHRyZWRpbmdAbnZpZGlhLmNvbT4KPiAKPiBU aGUgZXhpc3RpbmcgZHJtX2ZiX2hlbHBlcl9ob3RwbHVnX2V2ZW50KCkgZnVuY3Rpb24gbmVlZHMg dG8gdGFrZSB0aGUKPiB0b3AtbGV2ZWwgZmItaGVscGVyIGxvY2suIEhvd2V2ZXIsIHRoZSBmdW5j dGlvbiBjYW4gYWxzbyBiZSBjYWxsZWQgZnJvbQo+IGNvZGUgdGhhdCBoYXMgYWxyZWFkeSB0YWtl biB0aGlzIGxvY2suIEludHJvZHVjZSBhbiB1bmxvY2tlZCB2YXJpYW50IG9mCj4gdGhpcyBmdW5j dGlvbiB0aGF0IGNhbiBiZSB1c2VkIGluIHRoZSBsYXR0ZXIgY2FzZS4KPiAKPiBUaGlzIGZ1bmN0 aW9uIGNhbGxzIGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKCksIHZp YQo+IGRybV9mYl9oZWxwZXJfc2V0X3BhcigpLCBzbyB3ZSBhbHNvIG5lZWQgdG8gaW50cm9kdWNl IGFuIHVubG9ja2VkIGNvcHkKPiBvZiB0aGF0IHRvIGF2b2lkIHJlY3Vyc2l2ZSBsb2NraW5nIGlz c3Vlcy4KPiAKPiBTaW1pbGFybHksIHRoZSBkcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnKCkg ZnVuY3Rpb24gZW5kcyB1cCBjYWxsaW5nCj4gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyKCksIHZpYSBy ZWdpc3Rlcl9mcmFtZWJ1ZmZlcigpLCBhbmQgbmVlZHMgYW4KPiB1bmxvY2tlZCB2YXJpYW50IHRv IGF2b2lkIHJlY3Vyc2l2ZSBsb2NraW5nLgo+IAo+IFNpZ25lZC1vZmYtYnk6IFRoaWVycnkgUmVk aW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMgfCAxNjcgKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQo+ ICAxIGZpbGUgY2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQo+IAo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIGIvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+IGluZGV4IDg2MGJlNTFkOTJmNi4uMjFhOTAzMjI1MzFj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gQEAgLTQ5MSwxOCArNDkxLDEwIEBAIHN0 YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtLyoqCj4gLSAqIGRybV9mYl9oZWxwZXJfcmVz dG9yZV9mYmRldl9tb2RlX3VubG9ja2VkIC0gcmVzdG9yZSBmYmRldiBjb25maWd1cmF0aW9uCj4g LSAqIEBmYl9oZWxwZXI6IGZiY29uIHRvIHJlc3RvcmUKPiAtICoKPiAtICogVGhpcyBzaG91bGQg YmUgY2FsbGVkIGZyb20gZHJpdmVyJ3MgZHJtICZkcm1fZHJpdmVyLmxhc3RjbG9zZSBjYWxsYmFj awo+IC0gKiB3aGVuIGltcGxlbWVudGluZyBhbiBmYmNvbiBvbiB0b3Agb2Yga21zIHVzaW5nIHRo aXMgaGVscGVyLiBUaGlzIGVuc3VyZXMgdGhhdAo+IC0gKiB0aGUgdXNlciBpc24ndCBncmVldGVk IHdpdGggYSBibGFjayBzY3JlZW4gd2hlbiBlLmcuIFggZGllcy4KPiAtICoKPiAtICogUkVUVVJO UzoKPiAtICogWmVybyBpZiBldmVyeXRoaW5nIHdlbnQgb2ssIG5lZ2F0aXZlIGVycm9yIGNvZGUg b3RoZXJ3aXNlLgo+IC0gKi8KPiAtaW50IGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRldl9tb2Rl X3VubG9ja2VkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gK3N0YXRpYyBpbnQg X19kcm1fZmJfaGVscGVyX2hvdHBsdWdfZXZlbnQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hl bHBlcik7Cj4gKwo+ICtzdGF0aWMgaW50Cj4gK19fZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2 X21vZGVfdW5sb2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiAgewo+ICAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ICAJYm9vbCBkb19kZWxh eWVkOwo+IEBAIC01MTEsNyArNTAzLDggQEAgaW50IGRybV9mYl9oZWxwZXJfcmVzdG9yZV9mYmRl dl9tb2RlX3VubG9ja2VkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIAlpZiAo IWRybV9mYmRldl9lbXVsYXRpb24pCj4gIAkJcmV0dXJuIC1FTk9ERVY7Cj4gIAo+IC0JbXV0ZXhf bG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZmJf aGVscGVyLT5sb2NrKSk7Cgpsb2NrZGVwX2Fzc2VydF9oZWxkIGlzIHRoZSBuZXcgY29vbC4KCj4g Kwo+ICAJZHJtX21vZGVzZXRfbG9ja19hbGwoZGV2KTsKPiAgCj4gIAlyZXQgPSByZXN0b3JlX2Zi ZGV2X21vZGUoZmJfaGVscGVyKTsKPiBAQCAtNTIxLDEwICs1MTQsMzEgQEAgaW50IGRybV9mYl9o ZWxwZXJfcmVzdG9yZV9mYmRldl9tb2RlX3VubG9ja2VkKHN0cnVjdCBkcm1fZmJfaGVscGVyICpm Yl9oZWxwZXIpCj4gIAkJZmJfaGVscGVyLT5kZWxheWVkX2hvdHBsdWcgPSBmYWxzZTsKPiAgCj4g IAlkcm1fbW9kZXNldF91bmxvY2tfYWxsKGRldik7Cj4gLQltdXRleF91bmxvY2soJmZiX2hlbHBl ci0+bG9jayk7Cj4gIAo+ICAJaWYgKGRvX2RlbGF5ZWQpCj4gLQkJZHJtX2ZiX2hlbHBlcl9ob3Rw bHVnX2V2ZW50KGZiX2hlbHBlcik7Cj4gKwkJX19kcm1fZmJfaGVscGVyX2hvdHBsdWdfZXZlbnQo ZmJfaGVscGVyKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICt9Cj4gKwo+ICsvKioKPiArICogZHJt X2ZiX2hlbHBlcl9yZXN0b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQgLSByZXN0b3JlIGZiZGV2IGNv bmZpZ3VyYXRpb24KPiArICogQGZiX2hlbHBlcjogZmJjb24gdG8gcmVzdG9yZQo+ICsgKgo+ICsg KiBUaGlzIHNob3VsZCBiZSBjYWxsZWQgZnJvbSBkcml2ZXIncyBkcm0gJmRybV9kcml2ZXIubGFz dGNsb3NlIGNhbGxiYWNrCj4gKyAqIHdoZW4gaW1wbGVtZW50aW5nIGFuIGZiY29uIG9uIHRvcCBv ZiBrbXMgdXNpbmcgdGhpcyBoZWxwZXIuIFRoaXMgZW5zdXJlcyB0aGF0Cj4gKyAqIHRoZSB1c2Vy IGlzbid0IGdyZWV0ZWQgd2l0aCBhIGJsYWNrIHNjcmVlbiB3aGVuIGUuZy4gWCBkaWVzLgo+ICsg Kgo+ICsgKiBSRVRVUk5TOgo+ICsgKiBaZXJvIGlmIGV2ZXJ5dGhpbmcgd2VudCBvaywgbmVnYXRp dmUgZXJyb3IgY29kZSBvdGhlcndpc2UuCj4gKyAqLwo+ICtpbnQgZHJtX2ZiX2hlbHBlcl9yZXN0 b3JlX2ZiZGV2X21vZGVfdW5sb2NrZWQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikK PiArewo+ICsJaW50IHJldDsKPiArCj4gKwltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ ICsJcmV0ID0gX19kcm1fZmJfaGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChmYl9o ZWxwZXIpOwo+ICsJbXV0ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+ICAKPiAgCXJldHVy biByZXQ7Cj4gIH0KPiBAQCAtMTQ4Niw3ICsxNTAwLDcgQEAgaW50IGRybV9mYl9oZWxwZXJfc2V0 X3BhcihzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiAg Cj4gLQlkcm1fZmJfaGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChmYl9oZWxwZXIp Owo+ICsJX19kcm1fZmJfaGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChmYl9oZWxw ZXIpOwoKTmFoLCB5b3UgbmVlZCB0aGUgbG9ja2luZyBzdGlsbCBmb3Igd2hlbiB0aGlzIGlzIGNh bGxlZCBmcm9tIHVzZXJzcGFjZQp0aHJvdWdoIGZiZGV2IGlvY3RsLgo+ICAKPiAgCXJldHVybiAw Owo+ICB9Cj4gQEAgLTIzMzMsNiArMjM0Nyw0NiBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0 Y3Moc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCWtmcmVlKGVuYWJsZWQpOwo+ ICB9Cj4gIAo+ICtzdGF0aWMgaW50IF9fZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyhzdHJ1 Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICsJCQkJCSAgaW50IGJwcF9zZWwpCj4gK3sK PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPiArCXN0cnVjdCBm Yl9pbmZvICppbmZvOwo+ICsJaW50IHJldDsKPiArCj4gKwlpZiAoIWRybV9mYmRldl9lbXVsYXRp b24pCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZmYl9o ZWxwZXItPmxvY2spKTsKPiArCj4gKwltdXRleF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4 KTsKPiArCWRybV9zZXR1cF9jcnRjcyhmYl9oZWxwZXIsCj4gKwkJCWRldi0+bW9kZV9jb25maWcu bWF4X3dpZHRoLAo+ICsJCQlkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQpOwo+ICsJcmV0ID0g ZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoZmJfaGVscGVyLCBicHBfc2VsKTsKPiArCW11 dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwlpZiAocmV0KQo+ICsJCXJl dHVybiByZXQ7Cj4gKwo+ICsJaW5mbyA9IGZiX2hlbHBlci0+ZmJkZXY7Cj4gKwlpbmZvLT52YXIu cGl4Y2xvY2sgPSAwOwo+ICsJcmV0ID0gcmVnaXN0ZXJfZnJhbWVidWZmZXIoaW5mbyk7Cj4gKwlp ZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWRldl9pbmZvKGRldi0+ZGV2LCAi ZmIlZDogJXMgZnJhbWUgYnVmZmVyIGRldmljZVxuIiwKPiArCQkgaW5mby0+bm9kZSwgaW5mby0+ Zml4LmlkKTsKPiArCj4gKwltdXRleF9sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2spOwo+ICsJ aWYgKGxpc3RfZW1wdHkoJmtlcm5lbF9mYl9oZWxwZXJfbGlzdCkpCj4gKwkJcmVnaXN0ZXJfc3lz cnFfa2V5KCd2JywgJnN5c3JxX2RybV9mYl9oZWxwZXJfcmVzdG9yZV9vcCk7Cj4gKwo+ICsJbGlz dF9hZGQoJmZiX2hlbHBlci0+a2VybmVsX2ZiX2xpc3QsICZrZXJuZWxfZmJfaGVscGVyX2xpc3Qp Owo+ICsJbXV0ZXhfdW5sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2spOwo+ICsKPiArCXJldHVy biAwOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyAt IHNldHVwIGEgc2FuZSBpbml0aWFsIGNvbm5lY3RvciBjb25maWd1cmF0aW9uCj4gICAqIEBmYl9o ZWxwZXI6IGZiX2hlbHBlciBkZXZpY2Ugc3RydWN0Cj4gQEAgLTIzNzcsNDEgKzI0MzEsNTAgQEAg c3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIsCj4gICAqLwo+ICBpbnQgZHJtX2ZiX2hlbHBlcl9pbml0aWFsX2NvbmZpZyhzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgYnBwX3NlbCkKPiAgewo+IC0Jc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+IC0Jc3RydWN0IGZiX2luZm8gKmluZm87Cj4g IAlpbnQgcmV0Owo+ICAKPiArCW11dGV4X2xvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gKwlyZXQg PSBfX2RybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcoZmJfaGVscGVyLCBicHBfc2VsKTsKPiAr CW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKClllYWggdGhpcyB3b24ndCB3b3JrIGJl Y2F1c2UgaXQnbGwgZGVhZGxvY2sgd2l0aCB0aGUgcmVnaXN0ZXJfZnJhbWVidWZmZXIuCllvdSBu ZWVkIHRvIHB1c2ggaXQgZG93biBzbyB0aGF0IGl0IG9ubHkgcHJvdGVjdHMgdGhlIHNhbWUgY3Jp dGljYWwKc2VjdGlvbiBhcyBtb2RlX2NvbmZpZy5tdXRleCBjdXJyZW50bHkgZGRvZXMuCgo+ICsK PiArCXJldHVybiByZXQ7Cj4gK30KPiArRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2luaXRp YWxfY29uZmlnKTsKPiArCj4gK3N0YXRpYyBpbnQgX19kcm1fZmJfaGVscGVyX2hvdHBsdWdfZXZl bnQoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiArewo+ICsJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+ICsJdW5zaWduZWQgaW50IHdpZHRoLCBoZWln aHQ7Cj4gKwo+ICAJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uKQo+ICAJCXJldHVybiAwOwo+ICAK PiArCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZmJfaGVscGVyLT5sb2NrKSk7Cj4gKwo+ICAJ bXV0ZXhfbG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gLQlkcm1fc2V0dXBfY3J0Y3Mo ZmJfaGVscGVyLAo+IC0JCQlkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCwKPiAtCQkJZGV2LT5t b2RlX2NvbmZpZy5tYXhfaGVpZ2h0KTsKPiAtCXJldCA9IGRybV9mYl9oZWxwZXJfc2luZ2xlX2Zi X3Byb2JlKGZiX2hlbHBlciwgYnBwX3NlbCk7Cj4gLQltdXRleF91bmxvY2soJmRldi0+bW9kZV9j b25maWcubXV0ZXgpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICAKPiAtCWluZm8g PSBmYl9oZWxwZXItPmZiZGV2Owo+IC0JaW5mby0+dmFyLnBpeGNsb2NrID0gMDsKPiAtCXJldCA9 IHJlZ2lzdGVyX2ZyYW1lYnVmZmVyKGluZm8pOwo+IC0JaWYgKHJldCA8IDApCj4gLQkJcmV0dXJu IHJldDsKPiArCWlmICghZmJfaGVscGVyLT5mYiB8fCAhZHJtX2ZiX2hlbHBlcl9pc19ib3VuZChm Yl9oZWxwZXIpKSB7Cj4gKwkJZmJfaGVscGVyLT5kZWxheWVkX2hvdHBsdWcgPSB0cnVlOwo+ICsJ CW11dGV4X3VubG9jaygmZGV2LT5tb2RlX2NvbmZpZy5tdXRleCk7Cj4gKwkJcmV0dXJuIDA7Cj4g Kwl9Cj4gIAo+IC0JZGV2X2luZm8oZGV2LT5kZXYsICJmYiVkOiAlcyBmcmFtZSBidWZmZXIgZGV2 aWNlXG4iLAo+IC0JCSBpbmZvLT5ub2RlLCBpbmZvLT5maXguaWQpOwo+ICsJRFJNX0RFQlVHX0tN UygiXG4iKTsKPiAgCj4gLQltdXRleF9sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2spOwo+IC0J aWYgKGxpc3RfZW1wdHkoJmtlcm5lbF9mYl9oZWxwZXJfbGlzdCkpCj4gLQkJcmVnaXN0ZXJfc3lz cnFfa2V5KCd2JywgJnN5c3JxX2RybV9mYl9oZWxwZXJfcmVzdG9yZV9vcCk7Cj4gKwl3aWR0aCA9 IGRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoOwo+ICsJaGVpZ2h0ID0gZGV2LT5tb2RlX2NvbmZp Zy5tYXhfaGVpZ2h0Owo+ICAKPiAtCWxpc3RfYWRkKCZmYl9oZWxwZXItPmtlcm5lbF9mYl9saXN0 LCAma2VybmVsX2ZiX2hlbHBlcl9saXN0KTsKPiAtCW11dGV4X3VubG9jaygma2VybmVsX2ZiX2hl bHBlcl9sb2NrKTsKPiArCWlmIChkcm1fZmJfaGVscGVyX3Byb2JlX2Nvbm5lY3Rvcl9tb2Rlcyhm Yl9oZWxwZXIsIHdpZHRoLCBoZWlnaHQpID09IDApCj4gKwkJRFJNX0RFQlVHX0tNUygiTm8gY29u bmVjdG9ycyByZXBvcnRlZCBjb25uZWN0ZWQgd2l0aCBtb2Rlc1xuIik7Cj4gKwo+ICsJZHJtX3Nl dHVwX2NydGNzKGZiX2hlbHBlciwgZmJfaGVscGVyLT5mYi0+d2lkdGgsIGZiX2hlbHBlci0+ZmIt PmhlaWdodCk7Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsK PiArCj4gKwlkcm1fZmJfaGVscGVyX3NldF9wYXIoZmJfaGVscGVyLT5mYmRldik7Cj4gIAo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAtRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX2luaXRpYWxfY29u ZmlnKTsKPiAgCj4gIC8qKgo+ICAgKiBkcm1fZmJfaGVscGVyX2hvdHBsdWdfZXZlbnQgLSByZXNw b25kIHRvIGEgaG90cGx1ZyBub3RpZmljYXRpb24gYnkKPiBAQCAtMjQzNiwzNSArMjQ5OSwxMyBA QCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWcpOwo+ICAgKi8KPiAg aW50IGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJf aGVscGVyKQo+ICB7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7 Cj4gLQlpbnQgZXJyID0gMDsKPiAtCj4gLQlpZiAoIWRybV9mYmRldl9lbXVsYXRpb24pCj4gLQkJ cmV0dXJuIDA7Cj4gKwlpbnQgcmV0Owo+ICAKPiAgCW11dGV4X2xvY2soJmZiX2hlbHBlci0+bG9j ayk7Cj4gLQltdXRleF9sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiAtCj4gLQlpZiAo IWZiX2hlbHBlci0+ZmIgfHwgIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewo+ IC0JCWZiX2hlbHBlci0+ZGVsYXllZF9ob3RwbHVnID0gdHJ1ZTsKPiAtCQltdXRleF91bmxvY2so JmRldi0+bW9kZV9jb25maWcubXV0ZXgpOwo+IC0JCWdvdG8gdW5sb2NrOwo+IC0JfQo+IC0KPiAt CURSTV9ERUJVR19LTVMoIlxuIik7Cj4gLQo+IC0JZHJtX3NldHVwX2NydGNzKGZiX2hlbHBlciwg ZmJfaGVscGVyLT5mYi0+d2lkdGgsIGZiX2hlbHBlci0+ZmItPmhlaWdodCk7Cj4gLQo+IC0JbXV0 ZXhfdW5sb2NrKCZkZXYtPm1vZGVfY29uZmlnLm11dGV4KTsKPiArCXJldCA9IF9fZHJtX2ZiX2hl bHBlcl9ob3RwbHVnX2V2ZW50KGZiX2hlbHBlcik7Cj4gIAltdXRleF91bmxvY2soJmZiX2hlbHBl ci0+bG9jayk7CgpZZWFoIHlvdSBjYW4ndCBob2xkIHRoZSBsb2NrIHRocm91Z2ggdGhlIGVudGly ZSBob3RwbHVnX2V2ZW50IHByb2Nlc3MsCm90aGVyd2lzZSB0aGUgcG90ZW50aWFsIHJlZ2lzdGVy X2ZyYW1lYnVmZmVyIHdpbGwgZ28gYm9vbSBvbiBhIGRlYWRsb2NrLgpJJ2xsIHJlcGx5IHRvIG9u ZSBvZiB0aGUgb3RoZXIgcGF0Y2hlcyB3aXRoIHdoYXQgSSB0aGluayBzaG91bGQgYmUgZG9uZS4K LURhbmllbAoKPiAgCj4gLQlkcm1fZmJfaGVscGVyX3NldF9wYXIoZmJfaGVscGVyLT5mYmRldik7 Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLQo+IC11bmxvY2s6Cj4gLQltdXRleF91bmxvY2soJmZiX2hl bHBlci0+bG9jayk7Cj4gLQlyZXR1cm4gZXJyOwo+ICsJcmV0dXJuIHJldDsKPiAgfQo+ICBFWFBP UlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudCk7Cj4gIAo+IC0tIAo+IDIuMTIu MAo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=