From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm/fb-helper: Set up gamma_lut during restore_fbdev_mode_atomic() Date: Fri, 7 Jun 2019 20:40:15 +0200 Message-ID: <20190607184015.GN21222@phenom.ffwll.local> References: <20190607162611.23514-1-ville.syrjala@linux.intel.com> <20190607162611.23514-3-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 49D1789E43 for ; Fri, 7 Jun 2019 18:40:19 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id k21so1000054edq.3 for ; Fri, 07 Jun 2019 11:40:19 -0700 (PDT) Content-Disposition: inline In-Reply-To: <20190607162611.23514-3-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdW4gMDcsIDIwMTkgYXQgMDc6MjY6MTBQTSArMDMwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IGk5MTUgd2lsbCBub3cgcmVmdXNlIHRvIGVuYWJsZSBhIEM4IHBsYW5lIHVubGVz cyB0aGUgZ2FtbWFfbHV0Cj4gaXMgYWxyZWFkeSBlbmFibGVkICh0byBhdm9pZCBzY2FubmluZyBv dXQgd2hhdGV2ZXIgZ2FyYmFnZSBnb3QKPiBsZWZ0IGluIHRoZSBodyBMVVQgcHJldmlvdXNseSku IFNvIGluIG9yZGVyIHRvIG1ha2UgdGhlIGZiZGV2Cj4gY29kZSB3b3JrIHdpdGggQzggd2UgbmVl ZCB0byBwcm9ncmFtIHRoZSBnYW1tYV9sdXQgYWxyZWFkeQo+IGR1cmluZyByZXN0b3JlX2ZiZGV2 X21vZGVfYXRvbWljKCkuCj4gCj4gVG8gYXZvaWQgaGF2aW5nIHRvIHVwZGF0ZSB0aGUgaHcgTFVU IGV2ZXJ5IHRpbWUKPiByZXN0b3JlX2ZiZGV2X21vZGVfYXRvbWljKCkgaXMgY2FsbGVkIHdlIGhh bmcgb24gdG8gdGhlCj4gY3VycmVudCBnYW1tYV9sdXQgYmxvYi4gTm90ZSB0aGF0IHRoZSBmaXJz dCBjcnRjIHRvIGdldAo+IGVuYWJsZWQgd2lsbCBkaWN0YXRlIHRoZSBzaXplIG9mIHRoZSBnYW1t YV9sdXQsIHNvIHRoaXMKPiBhcHByb2FjaCBpc24ndCAxMDAlIGdyZWF0IGZvciBoYXJkd2FyZSB3 aXRoIG5vbi11bmlmb3JtCj4gY3J0Y3MuIEJ1dCB0aGF0IHByb2JsZW0gYWxyZWFkeSBleGlzdHMg aW4gc2V0Y21hcF9hdG9taWMoKQo+IHNvIHdlJ2xsIGp1c3Qga2VlcCBpZ25vcmluZyBpdC4KPiAK PiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50 ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jIHwgMTY1ICsr KysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4gIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxw ZXIuaCAgICAgfCAgIDcgKysKPiAgMiBmaWxlcyBjaGFuZ2VkLCAxMTMgaW5zZXJ0aW9ucygrKSwg NTkgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJf aGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gaW5kZXggYmRmYTE0 Y2Q3ZjZkLi4wZWNlYzc2Mzc4OWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9m Yl9oZWxwZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiBAQCAt NDM2LDEwICs0MzYsNzYgQEAgc3RhdGljIGJvb2wgZHJtX2ZiX2hlbHBlcl9wYW5lbF9yb3RhdGlv bihzdHJ1Y3QgZHJtX21vZGVfc2V0ICptb2Rlc2V0LAo+ICAJcmV0dXJuIHRydWU7Cj4gIH0KPiAg Cj4gK3N0YXRpYyBpbnQgc2V0Y21hcF9jcnRjX2F0b21pYyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUsCj4gKwkJCSAgICAgICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gKwkJCSAgICAg ICBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCkKPiArewo+ICsJc3RydWN0IGRy bV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlOwo+ICsJYm9vbCByZXBsYWNlZDsKPiArCj4gKwljcnRj X3N0YXRlID0gZHJtX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgY3J0Yyk7Cj4gKwlpZiAo SVNfRVJSKGNydGNfc3RhdGUpKQo+ICsJCXJldHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOwo+ICsK PiArCXJlcGxhY2VkICA9IGRybV9wcm9wZXJ0eV9yZXBsYWNlX2Jsb2IoJmNydGNfc3RhdGUtPmRl Z2FtbWFfbHV0LAo+ICsJCQkJCSAgICAgIE5VTEwpOwo+ICsJcmVwbGFjZWQgfD0gZHJtX3Byb3Bl cnR5X3JlcGxhY2VfYmxvYigmY3J0Y19zdGF0ZS0+Y3RtLCBOVUxMKTsKPiArCXJlcGxhY2VkIHw9 IGRybV9wcm9wZXJ0eV9yZXBsYWNlX2Jsb2IoJmNydGNfc3RhdGUtPmdhbW1hX2x1dCwKPiArCQkJ CQkgICAgICBnYW1tYV9sdXQpOwo+ICsJY3J0Y19zdGF0ZS0+Y29sb3JfbWdtdF9jaGFuZ2VkIHw9 IHJlcGxhY2VkOwo+ICsKPiArCXJldHVybiAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgc3RydWN0IGRy bV9wcm9wZXJ0eV9ibG9iICpzZXRjbWFwX25ld19nYW1tYV9sdXQoc3RydWN0IGRybV9jcnRjICpj cnRjLAo+ICsJCQkJCQkgICAgICAgc3RydWN0IGZiX2NtYXAgKmNtYXApCj4gK3sKPiArCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Js b2IgKmdhbW1hX2x1dDsKPiArCXN0cnVjdCBkcm1fY29sb3JfbHV0ICpsdXQ7Cj4gKwlpbnQgc2l6 ZSA9IGNydGMtPmdhbW1hX3NpemU7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoIXNpemUgfHwgY21h cC0+c3RhcnQgKyBjbWFwLT5sZW4gPiBzaXplKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwp Owo+ICsKPiArCWdhbW1hX2x1dCA9IGRybV9wcm9wZXJ0eV9jcmVhdGVfYmxvYihkZXYsIHNpemVv ZigqbHV0KSAqIHNpemUsIE5VTEwpOwo+ICsJaWYgKElTX0VSUihnYW1tYV9sdXQpKQo+ICsJCXJl dHVybiBnYW1tYV9sdXQ7Cj4gKwo+ICsJbHV0ID0gZ2FtbWFfbHV0LT5kYXRhOwo+ICsJaWYgKGNt YXAtPnN0YXJ0IHx8IGNtYXAtPmxlbiAhPSBzaXplKSB7Cj4gKwkJdTE2ICpyID0gY3J0Yy0+Z2Ft bWFfc3RvcmU7Cj4gKwkJdTE2ICpnID0gciArIGNydGMtPmdhbW1hX3NpemU7Cj4gKwkJdTE2ICpi ID0gZyArIGNydGMtPmdhbW1hX3NpemU7Cj4gKwo+ICsJCWZvciAoaSA9IDA7IGkgPCBjbWFwLT5z dGFydDsgaSsrKSB7Cj4gKwkJCWx1dFtpXS5yZWQgPSByW2ldOwo+ICsJCQlsdXRbaV0uZ3JlZW4g PSBnW2ldOwo+ICsJCQlsdXRbaV0uYmx1ZSA9IGJbaV07Cj4gKwkJfQo+ICsJCWZvciAoaSA9IGNt YXAtPnN0YXJ0ICsgY21hcC0+bGVuOyBpIDwgc2l6ZTsgaSsrKSB7Cj4gKwkJCWx1dFtpXS5yZWQg PSByW2ldOwo+ICsJCQlsdXRbaV0uZ3JlZW4gPSBnW2ldOwo+ICsJCQlsdXRbaV0uYmx1ZSA9IGJb aV07Cj4gKwkJfQo+ICsJfQo+ICsKPiArCWZvciAoaSA9IDA7IGkgPCBjbWFwLT5sZW47IGkrKykg ewo+ICsJCWx1dFtjbWFwLT5zdGFydCArIGldLnJlZCA9IGNtYXAtPnJlZFtpXTsKPiArCQlsdXRb Y21hcC0+c3RhcnQgKyBpXS5ncmVlbiA9IGNtYXAtPmdyZWVuW2ldOwo+ICsJCWx1dFtjbWFwLT5z dGFydCArIGldLmJsdWUgPSBjbWFwLT5ibHVlW2ldOwo+ICsJfQo+ICsKPiArCXJldHVybiBnYW1t YV9sdXQ7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyhz dHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBib29sIGFjdGl2ZSkKPiAgewo+ICsJc3Ry dWN0IGZiX2luZm8gKmluZm8gPSBmYl9oZWxwZXItPmZiZGV2Owo+ICAJc3RydWN0IGRybV9jbGll bnRfZGV2ICpjbGllbnQgPSAmZmJfaGVscGVyLT5jbGllbnQ7Cj4gIAlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdh bW1hX2x1dDsKPiAgCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlOwo+ICAJc3Ry dWN0IGRybV9wbGFuZSAqcGxhbmU7Cj4gIAlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7 Cj4gQEAgLTQ1NSw2ICs1MjEsMTAgQEAgc3RhdGljIGludCByZXN0b3JlX2ZiZGV2X21vZGVfYXRv bWljKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsIGJvb2wgYWN0aXYKPiAgCQlnb3Rv IG91dF9jdHg7Cj4gIAl9Cj4gIAo+ICsJZ2FtbWFfbHV0ID0gZmJfaGVscGVyLT5nYW1tYV9sdXQ7 Cj4gKwlpZiAoZ2FtbWFfbHV0KQo+ICsJCWRybV9wcm9wZXJ0eV9ibG9iX2dldChnYW1tYV9sdXQp OwoKV2h5IHRoZSBnZXQvcHV0IHN0dWZmIGhlcmU/Cgo+ICsKPiAgCXN0YXRlLT5hY3F1aXJlX2N0 eCA9ICZjdHg7Cj4gIHJldHJ5Ogo+ICAJZHJtX2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBkZXYpIHsK PiBAQCAtNDc2LDcgKzU0Niw4IEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlX2F0b21p YyhzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyLCBib29sIGFjdGl2Cj4gIAl9Cj4gIAo+ ICAJZHJtX2NsaWVudF9mb3JfZWFjaF9tb2Rlc2V0KG1vZGVfc2V0LCBjbGllbnQpIHsKPiAtCQlz dHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5ID0gbW9kZV9zZXQtPmNydGMtPnByaW1hcnk7Cj4gKwkJ c3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQtPmNydGM7Cj4gKwkJc3RydWN0IGRybV9w bGFuZSAqcHJpbWFyeSA9IGNydGMtPnByaW1hcnk7Cj4gIAkJdW5zaWduZWQgaW50IHJvdGF0aW9u Owo+ICAKPiAgCQlpZiAoZHJtX2ZiX2hlbHBlcl9wYW5lbF9yb3RhdGlvbihtb2RlX3NldCwgJnJv dGF0aW9uKSkgewo+IEBAIC00ODksMjQgKzU2MCw0NiBAQCBzdGF0aWMgaW50IHJlc3RvcmVfZmJk ZXZfbW9kZV9hdG9taWMoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlciwgYm9vbCBhY3Rp dgo+ICAJCWlmIChyZXQgIT0gMCkKPiAgCQkJZ290byBvdXRfc3RhdGU7Cj4gIAo+ICsJCWlmIChp bmZvLT5maXgudmlzdWFsICE9IEZCX1ZJU1VBTF9UUlVFQ09MT1IpIHsKPiArCQkJaWYgKCFnYW1t YV9sdXQpCj4gKwkJCQlnYW1tYV9sdXQgPSBzZXRjbWFwX25ld19nYW1tYV9sdXQoY3J0YywgJmlu Zm8tPmNtYXApOwo+ICsJCQlpZiAoSVNfRVJSKGdhbW1hX2x1dCkpIHsKPiArCQkJCXJldCA9IFBU Ul9FUlIoZ2FtbWFfbHV0KTsKPiArCQkJCWdhbW1hX2x1dCA9IE5VTEw7Cj4gKwkJCQlnb3RvIG91 dF9zdGF0ZTsKPiArCQkJfQo+ICsKPiArCQkJcmV0ID0gc2V0Y21hcF9jcnRjX2F0b21pYyhzdGF0 ZSwgY3J0YywgZ2FtbWFfbHV0KTsKPiArCQkJaWYgKHJldCkKPiArCQkJCWdvdG8gb3V0X3N0YXRl Owo+ICsJCX0KPiArCj4gIAkJLyoKPiAgCQkgKiBfX2RybV9hdG9taWNfaGVscGVyX3NldF9jb25m aWcoKSBzZXRzIGFjdGl2ZSB3aGVuIGEKPiAgCQkgKiBtb2RlIGlzIHNldCwgdW5jb25kaXRpb25h bGx5IGNsZWFyIGl0IGlmIHdlIGZvcmNlIERQTVMgb2ZmCj4gIAkJICovCj4gIAkJaWYgKCFhY3Rp dmUpIHsKPiAtCQkJc3RydWN0IGRybV9jcnRjICpjcnRjID0gbW9kZV9zZXQtPmNydGM7Cj4gLQkJ CXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19j cnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiArCQkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRj X3N0YXRlID0KPiArCQkJCWRybV9hdG9taWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRj KTsKPiAgCj4gIAkJCWNydGNfc3RhdGUtPmFjdGl2ZSA9IGZhbHNlOwo+ICAJCX0KPiAgCX0KPiAg Cj4gIAlyZXQgPSBkcm1fYXRvbWljX2NvbW1pdChzdGF0ZSk7Cj4gKwlpZiAocmV0KQo+ICsJCWdv dG8gb3V0X3N0YXRlOwo+ICsKPiArCWlmIChnYW1tYV9sdXQpCj4gKwkJZHJtX3Byb3BlcnR5X2Js b2JfZ2V0KGdhbW1hX2x1dCk7Cj4gKwlkcm1fcHJvcGVydHlfYmxvYl9wdXQoZmJfaGVscGVyLT5n YW1tYV9sdXQpOwo+ICsJZmJfaGVscGVyLT5nYW1tYV9sdXQgPSBnYW1tYV9sdXQ7CgpDYW4ndCB3 ZSBzaW1wbGlmeSB1c2luZyBkcm1fcHJvcGVydHlfcmVwbGFjZV9ibG9iIGhlcmUgYW5kIGJlbG93 PwoKPiAgCj4gIG91dF9zdGF0ZToKPiAgCWlmIChyZXQgPT0gLUVERUFETEspCj4gIAkJZ290byBi YWNrb2ZmOwo+ICAKPiArCWRybV9wcm9wZXJ0eV9ibG9iX3B1dChnYW1tYV9sdXQpOwo+ICAJZHJt X2F0b21pY19zdGF0ZV9wdXQoc3RhdGUpOwo+ICBvdXRfY3R4Ogo+ICAJZHJtX21vZGVzZXRfZHJv cF9sb2NrcygmY3R4KTsKPiBAQCAtOTk2LDYgKzEwODksOSBAQCB2b2lkIGRybV9mYl9oZWxwZXJf ZmluaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICAJfQo+ICAJZmJfaGVscGVy LT5mYmRldiA9IE5VTEw7Cj4gIAo+ICsJZHJtX3Byb3BlcnR5X2Jsb2JfcHV0KGZiX2hlbHBlci0+ Z2FtbWFfbHV0KTsKPiArCWZiX2hlbHBlci0+Z2FtbWFfbHV0ID0gTlVMTDsKPiArCj4gIAltdXRl eF9sb2NrKCZrZXJuZWxfZmJfaGVscGVyX2xvY2spOwo+ICAJaWYgKCFsaXN0X2VtcHR5KCZmYl9o ZWxwZXItPmtlcm5lbF9mYl9saXN0KSkgewo+ICAJCWxpc3RfZGVsKCZmYl9oZWxwZXItPmtlcm5l bF9mYl9saXN0KTsKPiBAQCAtMTM5MCw2MSArMTQ4NiwxNiBAQCBzdGF0aWMgaW50IHNldGNtYXBf bGVnYWN5KHN0cnVjdCBmYl9jbWFwICpjbWFwLCBzdHJ1Y3QgZmJfaW5mbyAqaW5mbykKPiAgCXJl dHVybiByZXQ7Cj4gIH0KPiAgCj4gLXN0YXRpYyBzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKnNl dGNtYXBfbmV3X2dhbW1hX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4gLQkJCQkJCSAgICAg ICBzdHJ1Y3QgZmJfY21hcCAqY21hcCkKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9 IGNydGMtPmRldjsKPiAtCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqZ2FtbWFfbHV0Owo+IC0J c3RydWN0IGRybV9jb2xvcl9sdXQgKmx1dDsKPiAtCWludCBzaXplID0gY3J0Yy0+Z2FtbWFfc2l6 ZTsKPiAtCWludCBpOwo+IC0KPiAtCWlmICghc2l6ZSB8fCBjbWFwLT5zdGFydCArIGNtYXAtPmxl biA+IHNpemUpCj4gLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gLQo+IC0JZ2FtbWFfbHV0 ID0gZHJtX3Byb3BlcnR5X2NyZWF0ZV9ibG9iKGRldiwgc2l6ZW9mKCpsdXQpICogc2l6ZSwgTlVM TCk7Cj4gLQlpZiAoSVNfRVJSKGdhbW1hX2x1dCkpCj4gLQkJcmV0dXJuIGdhbW1hX2x1dDsKPiAt Cj4gLQlsdXQgPSBnYW1tYV9sdXQtPmRhdGE7Cj4gLQlpZiAoY21hcC0+c3RhcnQgfHwgY21hcC0+ bGVuICE9IHNpemUpIHsKPiAtCQl1MTYgKnIgPSBjcnRjLT5nYW1tYV9zdG9yZTsKPiAtCQl1MTYg KmcgPSByICsgY3J0Yy0+Z2FtbWFfc2l6ZTsKPiAtCQl1MTYgKmIgPSBnICsgY3J0Yy0+Z2FtbWFf c2l6ZTsKPiAtCj4gLQkJZm9yIChpID0gMDsgaSA8IGNtYXAtPnN0YXJ0OyBpKyspIHsKPiAtCQkJ bHV0W2ldLnJlZCA9IHJbaV07Cj4gLQkJCWx1dFtpXS5ncmVlbiA9IGdbaV07Cj4gLQkJCWx1dFtp XS5ibHVlID0gYltpXTsKPiAtCQl9Cj4gLQkJZm9yIChpID0gY21hcC0+c3RhcnQgKyBjbWFwLT5s ZW47IGkgPCBzaXplOyBpKyspIHsKPiAtCQkJbHV0W2ldLnJlZCA9IHJbaV07Cj4gLQkJCWx1dFtp XS5ncmVlbiA9IGdbaV07Cj4gLQkJCWx1dFtpXS5ibHVlID0gYltpXTsKPiAtCQl9Cj4gLQl9Cj4g LQo+IC0JZm9yIChpID0gMDsgaSA8IGNtYXAtPmxlbjsgaSsrKSB7Cj4gLQkJbHV0W2NtYXAtPnN0 YXJ0ICsgaV0ucmVkID0gY21hcC0+cmVkW2ldOwo+IC0JCWx1dFtjbWFwLT5zdGFydCArIGldLmdy ZWVuID0gY21hcC0+Z3JlZW5baV07Cj4gLQkJbHV0W2NtYXAtPnN0YXJ0ICsgaV0uYmx1ZSA9IGNt YXAtPmJsdWVbaV07Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIGdhbW1hX2x1dDsKPiAtfQo+IC0KPiAg c3RhdGljIGludCBzZXRjbWFwX2F0b21pYyhzdHJ1Y3QgZmJfY21hcCAqY21hcCwgc3RydWN0IGZi X2luZm8gKmluZm8pCj4gIHsKPiAgCXN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIgPSBp bmZvLT5wYXI7Cj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZmJfaGVscGVyLT5kZXY7Cj4g IAlzdHJ1Y3QgZHJtX3Byb3BlcnR5X2Jsb2IgKmdhbW1hX2x1dCA9IE5VTEw7Cj4gIAlzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggY3R4Owo+IC0Jc3RydWN0IGRybV9jcnRjX3N0YXRlICpj cnRjX3N0YXRlOwo+ICAJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ICAJc3RydWN0 IGRybV9tb2RlX3NldCAqbW9kZXNldDsKPiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiAgCXUx NiAqciwgKmcsICpiOwo+IC0JYm9vbCByZXBsYWNlZDsKPiAgCWludCByZXQgPSAwOwo+ICAKPiAg CWRybV9tb2Rlc2V0X2FjcXVpcmVfaW5pdCgmY3R4LCAwKTsKPiBAQCAtMTQ2OCwxOCArMTUxOSw5 IEBAIHN0YXRpYyBpbnQgc2V0Y21hcF9hdG9taWMoc3RydWN0IGZiX2NtYXAgKmNtYXAsIHN0cnVj dCBmYl9pbmZvICppbmZvKQo+ICAJCQlnb3RvIG91dF9zdGF0ZTsKPiAgCQl9Cj4gIAo+IC0JCWNy dGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiAtCQlp ZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7Cj4gLQkJCXJldCA9IFBUUl9FUlIoY3J0Y19zdGF0ZSk7 Cj4gKwkJcmV0ID0gc2V0Y21hcF9jcnRjX2F0b21pYyhzdGF0ZSwgY3J0YywgZ2FtbWFfbHV0KTsK PiArCQlpZiAocmV0KQo+ICAJCQlnb3RvIG91dF9zdGF0ZTsKPiAtCQl9Cj4gLQo+IC0JCXJlcGxh Y2VkICA9IGRybV9wcm9wZXJ0eV9yZXBsYWNlX2Jsb2IoJmNydGNfc3RhdGUtPmRlZ2FtbWFfbHV0 LAo+IC0JCQkJCQkgICAgICBOVUxMKTsKPiAtCQlyZXBsYWNlZCB8PSBkcm1fcHJvcGVydHlfcmVw bGFjZV9ibG9iKCZjcnRjX3N0YXRlLT5jdG0sIE5VTEwpOwo+IC0JCXJlcGxhY2VkIHw9IGRybV9w cm9wZXJ0eV9yZXBsYWNlX2Jsb2IoJmNydGNfc3RhdGUtPmdhbW1hX2x1dCwKPiAtCQkJCQkJICAg ICAgZ2FtbWFfbHV0KTsKPiAtCQljcnRjX3N0YXRlLT5jb2xvcl9tZ210X2NoYW5nZWQgfD0gcmVw bGFjZWQ7Cj4gIAl9Cj4gIAo+ICAJcmV0ID0gZHJtX2F0b21pY19jb21taXQoc3RhdGUpOwo+IEBA IC0xNDk4LDYgKzE1NDAsMTEgQEAgc3RhdGljIGludCBzZXRjbWFwX2F0b21pYyhzdHJ1Y3QgZmJf Y21hcCAqY21hcCwgc3RydWN0IGZiX2luZm8gKmluZm8pCj4gIAkJbWVtY3B5KGIgKyBjbWFwLT5z dGFydCwgY21hcC0+Ymx1ZSwgY21hcC0+bGVuICogc2l6ZW9mKCpiKSk7Cj4gIAl9CgpUaGUgYWJv dmUgInVwZGF0ZSBsZWdhY3kgY29sb3IgdGFibGUiIHN0dWZmIGlzIG1pc3NpbmcgZnJvbSB0aGUK cmVzdG9yZV9mYmRldl9tb2RlX2F0b21pYyB2ZXJzaW9uLiBVbmlmeSBtb3JlLCBpLmUuIG1heWJl IGNvbnZlcnQKc2V0Y21hcF9hdG9taWMgdG8ganVzdCB1cGRhdGUgdGhlIHByb3BlcnR5IGluIGZi X2hlbHBlci0+Z2FtbWFfbHV0LCBhbmQKdGhlbiBjYWxsIGludG8gcmVzdG9yZV9mYmRldl9tb2Rl X2F0b21pYyB0byBkbyBhbGwgb2YgdGhlIGhlYXZ5IGxpZnRpbmc/CgpPciBtYXliZSB3ZSBzaG91 bGQgcHVzaCB0aGlzIGludG8KZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0 X3N0YXRlKCksIGJ1dCB0aGF0IGRvZXNuJ3QgcXVpdGUKd29yayBiZWNhdXNlIGxvY2tpbmcgcnVs ZXMgYXJlIHNpbGx5IDotLyBPciB0ZWFjaCB0aGUgZ2FtbWFfZ2V0IGlvY3RsIHRvCmxvb2sgYXQg YXRvbWljIGFuZCBkaXRjaCB0aGlzLCBkdW5uby4KLURhbmllbAoKPiAgCj4gKwlpZiAoZ2FtbWFf bHV0KQo+ICsJCWRybV9wcm9wZXJ0eV9ibG9iX2dldChnYW1tYV9sdXQpOwo+ICsJZHJtX3Byb3Bl cnR5X2Jsb2JfcHV0KGZiX2hlbHBlci0+Z2FtbWFfbHV0KTsKPiArCWZiX2hlbHBlci0+Z2FtbWFf bHV0ID0gZ2FtbWFfbHV0Owo+ICsKPiAgb3V0X3N0YXRlOgo+ICAJaWYgKHJldCA9PSAtRURFQURM SykKPiAgCQlnb3RvIGJhY2tvZmY7Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9mYl9o ZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IGluZGV4IDZiMzM0ZjRkOGEy Mi4uOWM3OTczNDZlZGU0IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIu aAo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IEBAIC0xNTUsNiArMTU1LDEz IEBAIHN0cnVjdCBkcm1fZmJfaGVscGVyIHsKPiAgCXN0cnVjdCB3b3JrX3N0cnVjdCBkaXJ0eV93 b3JrOwo+ICAJc3RydWN0IHdvcmtfc3RydWN0IHJlc3VtZV93b3JrOwo+ICAKPiArCS8qKgo+ICsJ ICogQGdhbW1hX2x1dDoKPiArCSAqCj4gKwkgKiBDdXJyZW50IGdhbW1hX2x1dC4KPiArCSAqLwo+ ICsJc3RydWN0IGRybV9wcm9wZXJ0eV9ibG9iICpnYW1tYV9sdXQ7Cj4gKwo+ICAJLyoqCj4gIAkg KiBAbG9jazoKPiAgCSAqCj4gLS0gCj4gMi4yMS4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50 ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2Fy ZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4