From mboxrd@z Thu Jan 1 00:00:00 1970 From: Liviu Dudau Subject: Re: [PATCH 10/13] drm/fb-helper: Support deferred setup Date: Tue, 4 Jul 2017 16:29:44 +0100 Message-ID: <20170704152944.GC950@bart.dudau.co.uk> References: <20170704151833.17304-1-daniel.vetter@ffwll.ch> <20170704151833.17304-11-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20170704151833.17304-11-daniel.vetter@ffwll.ch> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter Cc: Intel Graphics Development , Thierry Reding , DRI Development List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBKdWwgMDQsIDIwMTcgYXQgMDU6MTg6MzBQTSArMDIwMCwgRGFuaWVsIFZldHRlciB3 cm90ZToKPiBGQiBoZWxwZXIgY29kZSBmYWxscyBiYWNrIHRvIGEgMTAyNHg3NjggbW9kZSBpZiBu byBvdXRwdXRzIGFyZSBjb25uZWN0ZWQKPiBvciBkb24ndCByZXBvcnQgYmFjayBhbnkgbW9kZXMg dXBvbiBpbml0aWFsaXphdGlvbi4gVGhpcyBjYW4gYmUgYW5ub3lpbmcKPiBiZWNhdXNlIG91dHB1 dHMgdGhhdCBhcmUgYWRkZWQgdG8gRkIgaGVscGVyIGxhdGVyIG9uIGNhbid0IGJlIHVzZWQgd2l0 aAo+IEZCIGhlbHBlciBpZiB0aGV5IGRvbid0IHN1cHBvcnQgYSBtYXRjaGluZyBtb2RlLgo+IAo+ IFRoZSBmYWxsYmFjayBpcyBpbiBwbGFjZSBiZWNhdXNlIFZHQSBjb25uZWN0b3JzIGNhbiBoYXBw ZW4gdG8gcmVwb3J0IGFuCj4gdW5rbm93biBjb25uZWN0aW9uIHN0YXR1cyBldmVuIHdoZW4gdGhl eSBhcmUgaW4gZmFjdCBjb25uZWN0ZWQuCj4gCj4gU29tZSBkcml2ZXJzIGhhdmUgY3VzdG9tIHNv bHV0aW9ucyBpbiBwbGFjZSB0byBkZWZlciBGQiBoZWxwZXIgc2V0dXAKPiB1bnRpbCBhdCBsZWFz dCBvbmUgb3V0cHV0IGlzIGNvbm5lY3RlZC4gQnV0IHRoZSBsb2dpYyBiZWhpbmQgdGhlc2UKPiBz b2x1dGlvbnMgaXMgYWx3YXlzIHRoZSBzYW1lIGFuZCB0aGVyZSBpcyBub3RoaW5nIGRyaXZlci1z cGVjaWZpYyBhYm91dAo+IGl0LCBzbyBhIGJldHRlciBhbHRlcmF0aXZlIGlzIHRvIGZpeCB0aGUg RkIgaGVscGVyIGNvcmUgYW5kIGFkZCBzdXBwb3J0Cj4gZm9yIGFsbCBkcml2ZXJzIGF1dG9tYXRp Y2FsbHkuCj4gCj4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGRlZmVycmVkIEZCIGhlbHBl ciBzZXR1cC4gSXQgY2hlY2tzIGFsbCB0aGUKPiBjb25uZWN0b3JzIGZvciB0aGVpciBjb25uZWN0 aW9uIHN0YXR1cywgYW5kIGlmIGFsbCBvZiB0aGVtIHJlcG9ydCB0byBiZQo+IGRpc2Nvbm5lY3Rl ZCBtYXJrcyB0aGUgRkIgaGVscGVyIGFzIG5lZWRpbmcgZGVmZXJyZWQgc2V0dXAuIFdoZXQgc2V0 dXAKPiBpcyBkZWZlcnJlZCwgdGhlIEZCIGhlbHBlciBjb3JlIHdpbGwgYXV0b21hdGljYWxseSBy ZXRyeSBzZXR1cCBhZnRlciBhCj4gaG90cGx1ZyBldmVudCwgYW5kIGl0IHdpbGwga2VlcCB0cnlp bmcgdW50aWwgaXQgc3VjY2VlZHMuCj4gCj4gdjI6IFJlYmFzZSBvbnRvIG15IGVudGlyZWx5IHJl d29ya2VkIGZiZGV2IGhlbHBlciBsb2NraW5nLiBPbmUgYmlnCj4gZGlmZmVyZW5jZSBpcyB0aGF0 IHRoaXMgdmVyc2lvbiBhZ2FpbiBkcm9wcyZyZWFjcXVpcmVzIHRoZSBmYmRldiBsb2NrCj4gKHdo aWNoIGlzIG5vdyBmYl9oZWxwZXItPmxvY2ssIGJ1dCBiZWZvcmUgdGhpcyBwYXRjaCBzZXJpZXMg aXQgd2FzCj4gbW9kZV9jb25maWctPm11dGV4KSwgYmVjYXVzZSByZWdpc3Rlcl9mcmFtZWJ1ZmZl ciBtdXN0IGJlIGFibGUgdG8KPiByZWN1cnNlIGJhY2sgaW50byBmYmRldiBoZWxwZXIgY29kZSBm b3IgdGhlIGluaXRpYWwgc2NyZWVuIHNldHVwLgo+IAo+IHYzOiBfX2RybV9mYl9oZWxwZXJfaW5p dGlhbF9jb25maWcgbXVzdCBob2xkIGZiX2hlbHBlci0+bG9jayB1cG9uCj4gcmV0dXJuLCBJJ3Zl IGZ1bWJsZWQgdGhhdCBpbiB0aGUgZGVmZXJyZWQgc2V0dXAgY2FzZSAoTGl2aXUpLgo+IAo+IHY0 OiBJIHdhcyBibGluZCwgcmVkbyB0aGlzIGFsbC4gX19kcm1fZmJfaGVscGVyX2luaXRpYWxfY29u ZmlnCj4gc2hvdWxkbid0IG5lZWQgdG8gcmVhY3F1aXJlIGZiX2hlbHBlci0+bG9jaywgdGhhdCBq dXN0IGNvbmZ1c2VzCj4gY2FsbGVycy4gSSBteXNlbGYgZ290IGNvbmZ1c2VkIGJ5IGtlcm5lbF9m Yl9oZWxwZXJfbG9jayBhbmQgc29tZWhvdwo+IHRob3VnaHQgaXQncyB0aGUgc2FtZSBhcyBmYl9o ZWxwZXItPmxvY2suIFRzay4KPiAKPiBBbHNvIHNpbXBsaWZ5IHRoZSBsb2dpYyBhIGJpdCAod2Ug ZG9uJ3QgbmVlZCB0d28gZnVuY3Rpb25zIHRvIHByb2JlCj4gY29ubmVjdG9ycyksIHdlIGNhbiBz dGljayBtdWNoIGNsb3NlciB0byB0aGUgZXhpc3RpbmcgY29kZS4gQW5kIHVwZGF0ZQo+IHNvbWUg Y29tbWVudHMgSSd2ZSBzcG90dGVkIHRoYXQgYXJlIG91dGRhdGVkLgo+IAo+IHY1OiBEb24ndCBw YXNzIC1FQUdBSU4gdG8gZHJpdmVycywgaXQncyBqdXN0IGFuIGludGVybmFsIGVycm9yIGNvZGUK PiAoTGl2aXUpLgo+IAo+IHY2OiBBZGQgX2FuZF91bmxvY2sgc3VmZml4IHRvIGNsYXJpZnkgbG9j a2luZyAoTWFhcnRlbikKPiAKPiBDYzogTGl2aXUgRHVkYXUgPGxpdml1QGR1ZGF1LmNvLnVrPgoK UmV2aWV3ZWQtYnk6IExpdml1IER1ZGF1IDxsaXZpdUBkdWRhdS5jby51az4KCldlIGNhbiBrZWVw IHRoZSBkaXNjdXNzaW9uIG9uIHRoZSBuZWVkIGZvciBzZXRfcGFyIHNlcGFyYXRlIG9uIHRoZSB0 aHJlYWQKZm9yIHRoZSBwYXRjaCB0aGF0IEkgaGF2ZSBzZW50LgoKQmVzdCByZWdhcmRzLApMaXZp dQoKPiBDYzogSm9obiBTdHVsdHogPGpvaG4uc3R1bHR6QGxpbmFyby5vcmc+Cj4gQ2M6IFRoaWVy cnkgUmVkaW5nIDx0cmVkaW5nQG52aWRpYS5jb20+Cj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0IDxt YWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gVGVzdGVkLWJ5OiBKb2huIFN0dWx0 eiA8am9obi5zdHVsdHpAbGluYXJvLm9yZz4KPiBTaWduZWQtb2ZmLWJ5OiBUaGllcnJ5IFJlZGlu ZyA8dHJlZGluZ0BudmlkaWEuY29tPiAodjEpCj4gU2lnbmVkLW9mZi1ieTogRGFuaWVsIFZldHRl ciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9oZWxwZXIuYyB8IDEwMiArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t Cj4gIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAgICAgfCAgMjMgKysrKysrKysrCj4gIDIg ZmlsZXMgY2hhbmdlZCwgOTAgaW5zZXJ0aW9ucygrKSwgMzUgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2ZiX2hlbHBlci5jCj4gaW5kZXggYTM1YTJhYjhlNjMwLi4xMzUzNjc1NDgwMjcgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiBAQCAtNTMyLDYgKzUzMiw5IEBAIGludCBkcm1f ZmJfaGVscGVyX3Jlc3RvcmVfZmJkZXZfbW9kZV91bmxvY2tlZChzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyKQo+ICAJaWYgKCFkcm1fZmJkZXZfZW11bGF0aW9uKQo+ICAJCXJldHVybiAt RU5PREVWOwo+ICAKPiArCWlmIChSRUFEX09OQ0UoZmJfaGVscGVyLT5kZWZlcnJlZF9zZXR1cCkp Cj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICAJbXV0ZXhfbG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiAg CXJldCA9IHJlc3RvcmVfZmJkZXZfbW9kZShmYl9oZWxwZXIpOwo+ICAKPiBAQCAtMTYxNiw4ICsx NjE5LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3Bhbl9kaXNwbGF5KTsKPiAgCj4g IC8qCj4gICAqIEFsbG9jYXRlcyB0aGUgYmFja2luZyBzdG9yYWdlIGFuZCBzZXRzIHVwIHRoZSBm YmRldiBpbmZvIHN0cnVjdHVyZSB0aHJvdWdoCj4gLSAqIHRoZSAtPmZiX3Byb2JlIGNhbGxiYWNr IGFuZCB0aGVuIHJlZ2lzdGVycyB0aGUgZmJkZXYgYW5kIHNldHMgdXAgdGhlIHBhbmljCj4gLSAq IG5vdGlmaWVyLgo+ICsgKiB0aGUgLT5mYl9wcm9iZSBjYWxsYmFjay4KPiAgICovCj4gIHN0YXRp YyBpbnQgZHJtX2ZiX2hlbHBlcl9zaW5nbGVfZmJfcHJvYmUoc3RydWN0IGRybV9mYl9oZWxwZXIg KmZiX2hlbHBlciwKPiAgCQkJCQkgaW50IHByZWZlcnJlZF9icHApCj4gQEAgLTE3MTUsMTMgKzE3 MTcsOCBAQCBzdGF0aWMgaW50IGRybV9mYl9oZWxwZXJfc2luZ2xlX2ZiX3Byb2JlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gIAl9Cj4gIAo+ICAJaWYgKGNydGNfY291bnQgPT0g MCB8fCBzaXplcy5mYl93aWR0aCA9PSAtMSB8fCBzaXplcy5mYl9oZWlnaHQgPT0gLTEpIHsKPiAt CQkvKgo+IC0JCSAqIGhtbSBldmVyeW9uZSB3ZW50IGF3YXkgLSBhc3N1bWUgVkdBIGNhYmxlIGp1 c3QgZmVsbCBvdXQKPiAtCQkgKiBhbmQgd2lsbCBjb21lIGJhY2sgbGF0ZXIuCj4gLQkJICovCj4g LQkJRFJNX0lORk8oIkNhbm5vdCBmaW5kIGFueSBjcnRjIG9yIHNpemVzIC0gZ29pbmcgMTAyNHg3 NjhcbiIpOwo+IC0JCXNpemVzLmZiX3dpZHRoID0gc2l6ZXMuc3VyZmFjZV93aWR0aCA9IDEwMjQ7 Cj4gLQkJc2l6ZXMuZmJfaGVpZ2h0ID0gc2l6ZXMuc3VyZmFjZV9oZWlnaHQgPSA3Njg7Cj4gKwkJ RFJNX0lORk8oIkNhbm5vdCBmaW5kIGFueSBjcnRjIG9yIHNpemVzXG4iKTsKPiArCQlyZXR1cm4g LUVBR0FJTjsKPiAgCX0KPiAgCj4gIAkvKiBIYW5kbGUgb3VyIG92ZXJhbGxvY2F0aW9uICovCj4g QEAgLTIzNTAsNiArMjM0Nyw1OSBAQCBzdGF0aWMgdm9pZCBkcm1fc2V0dXBfY3J0Y3Moc3RydWN0 IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwKPiAgCWtmcmVlKGVuYWJsZWQpOwo+ICB9Cj4gIAo+ ICsvKiBOb3RlOiBEcm9wcyBmYl9oZWxwZXItPmxvY2sgYmVmb3JlIHJldHVybmluZy4gKi8KPiAr c3RhdGljIGludAo+ICtfX2RybV9mYl9oZWxwZXJfaW5pdGlhbF9jb25maWdfYW5kX3VubG9jayhz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLAo+ICsJCQkJCSAgaW50IGJwcF9zZWwpCj4g K3sKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBmYl9oZWxwZXItPmRldjsKPiArCXN0cnVj dCBmYl9pbmZvICppbmZvOwo+ICsJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQ7Cj4gKwlpbnQg cmV0Owo+ICsKPiArCXdpZHRoID0gZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGg7Cj4gKwloZWln aHQgPSBkZXYtPm1vZGVfY29uZmlnLm1heF9oZWlnaHQ7Cj4gKwo+ICsJZHJtX3NldHVwX2NydGNz KGZiX2hlbHBlciwgd2lkdGgsIGhlaWdodCk7Cj4gKwlyZXQgPSBkcm1fZmJfaGVscGVyX3Npbmds ZV9mYl9wcm9iZShmYl9oZWxwZXIsIGJwcF9zZWwpOwo+ICsJaWYgKHJldCA8IDApIHsKPiArCQlp ZiAocmV0ID09IC1FQUdBSU4pIHsKPiArCQkJZmJfaGVscGVyLT5wcmVmZXJyZWRfYnBwID0gYnBw X3NlbDsKPiArCQkJZmJfaGVscGVyLT5kZWZlcnJlZF9zZXR1cCA9IHRydWU7Cj4gKwkJCXJldCA9 IDA7Cj4gKwkJfQo+ICsJCW11dGV4X3VubG9jaygmZmJfaGVscGVyLT5sb2NrKTsKPiArCj4gKwkJ cmV0dXJuIHJldDsKPiArCX0KPiArCj4gKwlmYl9oZWxwZXItPmRlZmVycmVkX3NldHVwID0gZmFs c2U7Cj4gKwo+ICsJaW5mbyA9IGZiX2hlbHBlci0+ZmJkZXY7Cj4gKwlpbmZvLT52YXIucGl4Y2xv Y2sgPSAwOwo+ICsKPiArCS8qIE5lZWQgdG8gZHJvcCBsb2NrcyB0byBhdm9pZCByZWN1cnNpdmUg ZGVhZGxvY2sgaW4KPiArCSAqIHJlZ2lzdGVyX2ZyYW1lYnVmZmVyLiBUaGlzIGlzIG9rIGJlY2F1 c2UgdGhlIG9ubHkgdGhpbmcgbGVmdCB0byBkbyBpcwo+ICsJICogcmVnaXN0ZXIgdGhlIGZiZGV2 IGVtdWxhdGlvbiBpbnN0YW5jZSBpbiBrZXJuZWxfZmJfaGVscGVyX2xpc3QuICovCj4gKwltdXRl eF91bmxvY2soJmZiX2hlbHBlci0+bG9jayk7Cj4gKwo+ICsJcmV0ID0gcmVnaXN0ZXJfZnJhbWVi dWZmZXIoaW5mbyk7Cj4gKwlpZiAocmV0IDwgMCkKPiArCQlyZXR1cm4gcmV0Owo+ICsKPiArCWRl dl9pbmZvKGRldi0+ZGV2LCAiZmIlZDogJXMgZnJhbWUgYnVmZmVyIGRldmljZVxuIiwKPiArCQkg aW5mby0+bm9kZSwgaW5mby0+Zml4LmlkKTsKPiArCj4gKwltdXRleF9sb2NrKCZrZXJuZWxfZmJf aGVscGVyX2xvY2spOwo+ICsJaWYgKGxpc3RfZW1wdHkoJmtlcm5lbF9mYl9oZWxwZXJfbGlzdCkp Cj4gKwkJcmVnaXN0ZXJfc3lzcnFfa2V5KCd2JywgJnN5c3JxX2RybV9mYl9oZWxwZXJfcmVzdG9y ZV9vcCk7Cj4gKwo+ICsJbGlzdF9hZGQoJmZiX2hlbHBlci0+a2VybmVsX2ZiX2xpc3QsICZrZXJu ZWxfZmJfaGVscGVyX2xpc3QpOwo+ICsJbXV0ZXhfdW5sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xv Y2spOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogZHJtX2ZiX2hlbHBl cl9pbml0aWFsX2NvbmZpZyAtIHNldHVwIGEgc2FuZSBpbml0aWFsIGNvbm5lY3RvciBjb25maWd1 cmF0aW9uCj4gICAqIEBmYl9oZWxwZXI6IGZiX2hlbHBlciBkZXZpY2Ugc3RydWN0Cj4gQEAgLTIz OTQsMzkgKzI0NDQsMTUgQEAgc3RhdGljIHZvaWQgZHJtX3NldHVwX2NydGNzKHN0cnVjdCBkcm1f ZmJfaGVscGVyICpmYl9oZWxwZXIsCj4gICAqLwo+ICBpbnQgZHJtX2ZiX2hlbHBlcl9pbml0aWFs X2NvbmZpZyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBpbnQgYnBwX3NlbCkKPiAg ewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGZiX2hlbHBlci0+ZGV2Owo+IC0Jc3RydWN0 IGZiX2luZm8gKmluZm87Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCWlmICghZHJtX2ZiZGV2X2VtdWxh dGlvbikKPiAgCQlyZXR1cm4gMDsKPiAgCj4gIAltdXRleF9sb2NrKCZmYl9oZWxwZXItPmxvY2sp Owo+IC0JZHJtX3NldHVwX2NydGNzKGZiX2hlbHBlciwKPiAtCQkJZGV2LT5tb2RlX2NvbmZpZy5t YXhfd2lkdGgsCj4gLQkJCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCk7Cj4gLQlyZXQgPSBk cm1fZmJfaGVscGVyX3NpbmdsZV9mYl9wcm9iZShmYl9oZWxwZXIsIGJwcF9zZWwpOwo+IC0JbXV0 ZXhfdW5sb2NrKCZmYl9oZWxwZXItPmxvY2spOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0 Owo+ICsJcmV0ID0gX19kcm1fZmJfaGVscGVyX2luaXRpYWxfY29uZmlnX2FuZF91bmxvY2soZmJf aGVscGVyLCBicHBfc2VsKTsKPiAgCj4gLQlpbmZvID0gZmJfaGVscGVyLT5mYmRldjsKPiAtCWlu Zm8tPnZhci5waXhjbG9jayA9IDA7Cj4gLQlyZXQgPSByZWdpc3Rlcl9mcmFtZWJ1ZmZlcihpbmZv KTsKPiAtCWlmIChyZXQgPCAwKQo+IC0JCXJldHVybiByZXQ7Cj4gLQo+IC0JZGV2X2luZm8oZGV2 LT5kZXYsICJmYiVkOiAlcyBmcmFtZSBidWZmZXIgZGV2aWNlXG4iLAo+IC0JCSBpbmZvLT5ub2Rl LCBpbmZvLT5maXguaWQpOwo+IC0KPiAtCW11dGV4X2xvY2soJmtlcm5lbF9mYl9oZWxwZXJfbG9j ayk7Cj4gLQlpZiAobGlzdF9lbXB0eSgma2VybmVsX2ZiX2hlbHBlcl9saXN0KSkKPiAtCQlyZWdp c3Rlcl9zeXNycV9rZXkoJ3YnLCAmc3lzcnFfZHJtX2ZiX2hlbHBlcl9yZXN0b3JlX29wKTsKPiAt Cj4gLQlsaXN0X2FkZCgmZmJfaGVscGVyLT5rZXJuZWxfZmJfbGlzdCwgJmtlcm5lbF9mYl9oZWxw ZXJfbGlzdCk7Cj4gLQltdXRleF91bmxvY2soJmtlcm5lbF9mYl9oZWxwZXJfbG9jayk7Cj4gLQo+ IC0JcmV0dXJuIDA7Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2Zi X2hlbHBlcl9pbml0aWFsX2NvbmZpZyk7Cj4gIAo+IEBAIC0yNDU5LDYgKzI0ODUsMTIgQEAgaW50 IGRybV9mYl9oZWxwZXJfaG90cGx1Z19ldmVudChzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVs cGVyKQo+ICAJCXJldHVybiAwOwo+ICAKPiAgCW11dGV4X2xvY2soJmZiX2hlbHBlci0+bG9jayk7 Cj4gKwlpZiAoZmJfaGVscGVyLT5kZWZlcnJlZF9zZXR1cCkgewo+ICsJCWVyciA9IF9fZHJtX2Zi X2hlbHBlcl9pbml0aWFsX2NvbmZpZ19hbmRfdW5sb2NrKGZiX2hlbHBlciwKPiArCQkJCWZiX2hl bHBlci0+cHJlZmVycmVkX2JwcCk7Cj4gKwkJcmV0dXJuIGVycjsKPiArCX0KPiArCj4gIAlpZiAo IWZiX2hlbHBlci0+ZmIgfHwgIWRybV9mYl9oZWxwZXJfaXNfYm91bmQoZmJfaGVscGVyKSkgewo+ ICAJCWZiX2hlbHBlci0+ZGVsYXllZF9ob3RwbHVnID0gdHJ1ZTsKPiAgCQltdXRleF91bmxvY2so JmZiX2hlbHBlci0+bG9jayk7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IGluZGV4IGVhMTcwYjk2ZTg4ZC4u YTVlYTZmZmRmZWNjIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+ ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IEBAIC0yMzIsNiArMjMyLDI5IEBA IHN0cnVjdCBkcm1fZmJfaGVscGVyIHsKPiAgCSAqIG5lZWRzIHRvIGJlIHJlcHJvYmUgd2hlbiBm YmRldiBpcyBpbiBjb250cm9sIGFnYWluLgo+ICAJICovCj4gIAlib29sIGRlbGF5ZWRfaG90cGx1 ZzsKPiArCj4gKwkvKioKPiArCSAqIEBkZWZlcnJlZF9zZXR1cDoKPiArCSAqCj4gKwkgKiBJZiBu byBvdXRwdXRzIGFyZSBjb25uZWN0ZWQgKGRpc2Nvbm5lY3RlZCBvciB1bmtub3duKSB0aGUgRkIg aGVscGVyCj4gKwkgKiBjb2RlIHdpbGwgZGVmZXIgc2V0dXAgdW50aWwgYXQgbGVhc3Qgb25lIG9m IHRoZSBvdXRwdXRzIHNob3dzIHVwLgo+ICsJICogVGhpcyBmaWVsZCBrZWVwcyB0cmFjayBvZiB0 aGUgc3RhdHVzIHNvIHRoYXQgc2V0dXAgY2FuIGJlIHJldHJpZWQKPiArCSAqIGF0IGV2ZXJ5IGhv dHBsdWcgZXZlbnQgdW50aWwgaXQgc3VjY2VlZHMgZXZlbnR1YWxseS4KPiArCSAqCj4gKwkgKiBQ cm90ZWN0ZWQgYnkgQGxvY2suCj4gKwkgKi8KPiArCWJvb2wgZGVmZXJyZWRfc2V0dXA7Cj4gKwo+ ICsJLyoqCj4gKwkgKiBAcHJlZmVycmVkX2JwcDoKPiArCSAqCj4gKwkgKiBUZW1wb3Jhcnkgc3Rv cmFnZSBmb3IgdGhlIGRyaXZlcidzIHByZWZlcnJlZCBCUFAgc2V0dGluZyBwYXNzZWQgdG8KPiAr CSAqIEZCIGhlbHBlciBpbml0aWFsaXphdGlvbi4gVGhpcyBuZWVkcyB0byBiZSB0cmFja2VkIHNv IHRoYXQgZGVmZXJyZWQKPiArCSAqIEZCIGhlbHBlciBzZXR1cCBjYW4gcGFzcyB0aGlzIG9uLgo+ ICsJICoKPiArCSAqIFNlZSBhbHNvOiBAZGVmZXJyZWRfc2V0dXAKPiArCSAqLwo+ICsJaW50IHBy ZWZlcnJlZF9icHA7Cj4gIH07Cj4gIAo+ICAvKioKPiAtLSAKPiAyLjEzLjIKPiAKCi0tIAogICBf CiBffF98XwogKCdfJykKICjiioMgICniioMKIHxffF98Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVs QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=