From: Maarten Lankhorst Subject: Re: [PATCH 2/2] drm/atomic: Make atomic iterators less surprising Date: Fri, 6 Oct 2017 11:07:40 +0200 Message-ID: References: <20170927083532.5756-1-maarten.lankhorst@linux.intel.com> <20170927083532.5756-2-maarten.lankhorst@linux.intel.com> <0d9caf3c-49d5-b71a-21ce-a0a22c005808@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4DDD76E8E8 for ; Fri, 6 Oct 2017 09:07:43 +0000 (UTC) In-Reply-To: <0d9caf3c-49d5-b71a-21ce-a0a22c005808@gmail.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: Dmitry Osipenko , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T3AgMjctMDktMTcgb20gMTQ6NTMgc2NocmVlZiBEbWl0cnkgT3NpcGVua286Cj4gT24gMjcuMDku MjAxNyAxMTozNSwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+IENvbW1pdCA2NjljOTIxNWFm ZWEgKCJkcm0vYXRvbWljOiBNYWtlIGFzeW5jIHBsYW5lIHVwZGF0ZSBjaGVja3Mgd29yayBhcwo+ PiBpbnRlbmRlZCwgdjIuIikgYXNzdW1lZCBpbmNvcnJlY3RseSB0aGF0IGlmIG9ubHkgMSBwbGFu ZSBpcyBtYXRjaGVkIGluCj4+IHRoZSBsb29wLCB0aGUgdmFyaWFibGVzIHdpbGwgYmUgc2V0IHRv IHRoYXQgcGxhbmUuIEluIHJlYWxpdHkgd2UgcmVzZXQKPj4gdGhlbSB0byBOVUxMIGV2ZXJ5IHRp bWUgYSBuZXcgcGxhbmUgd2FzIGl0ZXJhdGVkLiBUaGlzIGJlaGF2aW9yIGlzCj4+IHN1cnByaXNp bmcsIHNvIGZpeCB0aGlzIGJ5IG1ha2luZyB0aGUgZm9yIGxvb3BzIG9ubHkgYXNzaWduIHRoZQo+ PiB2YXJpYWJsZXMgb24gYSBtYXRjaC4KPj4KPj4gQ2M6IERtaXRyeSBPc2lwZW5rbyA8ZGlnZXR4 QGdtYWlsLmNvbT4KPj4gRml4ZXM6IDY2OWM5MjE1YWZlYSAoImRybS9hdG9taWM6IE1ha2UgYXN5 bmMgcGxhbmUgdXBkYXRlIGNoZWNrcyB3b3JrIGFzIGludGVuZGVkLCB2Mi4iKQo+PiBTaWduZWQt b2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwu Y29tPgo+PiAtLS0KPj4gIGluY2x1ZGUvZHJtL2RybV9hdG9taWMuaCB8IDg1ICsrKysrKysrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+PiAgMSBmaWxlIGNoYW5nZWQs IDQyIGluc2VydGlvbnMoKyksIDQzIGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2F0b21pYy5oIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4+IGluZGV4 IDZmYWU5NWYyOGUxMC4uNWFmZDZlMzY0ZmI2IDEwMDY0NAo+PiAtLS0gYS9pbmNsdWRlL2RybS9k cm1fYXRvbWljLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCj4+IEBAIC01ODUs MTIgKzU4NSwxMiBAQCB2b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4+ICAgKi8KPj4gICNkZWZpbmUgZm9yX2VhY2hfb2xk bmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShfX3N0YXRlLCBjb25uZWN0b3IsIG9sZF9jb25uZWN0b3Jf c3RhdGUsIG5ld19jb25uZWN0b3Jfc3RhdGUsIF9faSkgXAo+PiAgCWZvciAoKF9faSkgPSAwOwkJ CQkJCQkJXAo+PiAtCSAgICAgKF9faSkgPCAoX19zdGF0ZSktPm51bV9jb25uZWN0b3IgJiYJCQkJ XAo+PiAtCSAgICAgKChjb25uZWN0b3IpID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ucHRy LAkJCVwKPj4gLQkgICAgIChvbGRfY29ubmVjdG9yX3N0YXRlKSA9IChfX3N0YXRlKS0+Y29ubmVj dG9yc1tfX2ldLm9sZF9zdGF0ZSwJXAo+PiAtCSAgICAgKG5ld19jb25uZWN0b3Jfc3RhdGUpID0g KF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ubmV3X3N0YXRlLCAxKTsgCVwKPj4gLQkgICAgIChf X2kpKyspCQkJCQkJCVwKPj4gLQkJZm9yX2VhY2hfaWYgKGNvbm5lY3RvcikKPj4gKwkgICAgIChf X2kpIDwgKF9fc3RhdGUpLT5udW1fY29ubmVjdG9yOwkJCQkJXAo+PiArCSAgICAgKF9faSkrKykJ CQkJCQkJCVwKPj4gKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLnB0 ciAmJgkJCVwKPj4gKwkJCSAgICAgKChjb25uZWN0b3IpID0gKF9fc3RhdGUpLT5jb25uZWN0b3Jz W19faV0ucHRyLAlcCj4+ICsJCQkgICAgIChvbGRfY29ubmVjdG9yX3N0YXRlKSA9IChfX3N0YXRl KS0+Y29ubmVjdG9yc1tfX2ldLm9sZF9zdGF0ZSwJXAo+PiArCQkJICAgICAobmV3X2Nvbm5lY3Rv cl9zdGF0ZSkgPSAoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5uZXdfc3RhdGUsIDEpKQo+PiAg Cj4+ICAvKioKPj4gICAqIGZvcl9lYWNoX29sZF9jb25uZWN0b3JfaW5fc3RhdGUgLSBpdGVyYXRl IG92ZXIgYWxsIGNvbm5lY3RvcnMgaW4gYW4gYXRvbWljIHVwZGF0ZQo+PiBAQCAtNjA2LDExICs2 MDYsMTEgQEAgdm9pZCBkcm1fc3RhdGVfZHVtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX3ByaW50ZXIgKnApOwo+PiAgICovCj4+ICAjZGVmaW5lIGZvcl9lYWNoX29sZF9jb25u ZWN0b3JfaW5fc3RhdGUoX19zdGF0ZSwgY29ubmVjdG9yLCBvbGRfY29ubmVjdG9yX3N0YXRlLCBf X2kpIFwKPj4gIAlmb3IgKChfX2kpID0gMDsJCQkJCQkJCVwKPj4gLQkgICAgIChfX2kpIDwgKF9f c3RhdGUpLT5udW1fY29ubmVjdG9yICYmCQkJCVwKPj4gLQkgICAgICgoY29ubmVjdG9yKSA9IChf X3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLnB0ciwJCQlcCj4+IC0JICAgICAob2xkX2Nvbm5lY3Rv cl9zdGF0ZSkgPSAoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5vbGRfc3RhdGUsIDEpOyAJXAo+ PiAtCSAgICAgKF9faSkrKykJCQkJCQkJXAo+PiAtCQlmb3JfZWFjaF9pZiAoY29ubmVjdG9yKQo+ PiArCSAgICAgKF9faSkgPCAoX19zdGF0ZSktPm51bV9jb25uZWN0b3I7CQkJCQlcCj4+ICsJICAg ICAoX19pKSsrKQkJCQkJCQkJXAo+PiArCQlmb3JfZWFjaF9pZiAoKF9fc3RhdGUpLT5jb25uZWN0 b3JzW19faV0ucHRyICYmCQkJXAo+PiArCQkJICAgICAoKGNvbm5lY3RvcikgPSAoX19zdGF0ZSkt PmNvbm5lY3RvcnNbX19pXS5wdHIsCVwKPj4gKwkJCSAgICAgKG9sZF9jb25uZWN0b3Jfc3RhdGUp ID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ub2xkX3N0YXRlLCAxKSkKPj4gIAo+PiAgLyoq Cj4+ICAgKiBmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2luX3N0YXRlIC0gaXRlcmF0ZSBvdmVyIGFs bCBjb25uZWN0b3JzIGluIGFuIGF0b21pYyB1cGRhdGUKPj4gQEAgLTYyNiwxMSArNjI2LDExIEBA IHZvaWQgZHJtX3N0YXRlX2R1bXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9w cmludGVyICpwKTsKPj4gICAqLwo+PiAgI2RlZmluZSBmb3JfZWFjaF9uZXdfY29ubmVjdG9yX2lu X3N0YXRlKF9fc3RhdGUsIGNvbm5lY3RvciwgbmV3X2Nvbm5lY3Rvcl9zdGF0ZSwgX19pKSBcCj4+ ICAJZm9yICgoX19pKSA9IDA7CQkJCQkJCQlcCj4+IC0JICAgICAoX19pKSA8IChfX3N0YXRlKS0+ bnVtX2Nvbm5lY3RvciAmJgkJCQlcCj4+IC0JICAgICAoKGNvbm5lY3RvcikgPSAoX19zdGF0ZSkt PmNvbm5lY3RvcnNbX19pXS5wdHIsCQkJXAo+PiAtCSAgICAgKG5ld19jb25uZWN0b3Jfc3RhdGUp ID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ubmV3X3N0YXRlLCAxKTsgCVwKPj4gLQkgICAg IChfX2kpKyspCQkJCQkJCVwKPj4gLQkJZm9yX2VhY2hfaWYgKGNvbm5lY3RvcikKPj4gKwkgICAg IChfX2kpIDwgKF9fc3RhdGUpLT5udW1fY29ubmVjdG9yOwkJCQkJXAo+PiArCSAgICAgKF9faSkr KykJCQkJCQkJCVwKPj4gKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ld LnB0ciAmJgkJCVwKPj4gKwkJCSAgICAgKChjb25uZWN0b3IpID0gKF9fc3RhdGUpLT5jb25uZWN0 b3JzW19faV0ucHRyLAlcCj4+ICsJCQkgICAgIChuZXdfY29ubmVjdG9yX3N0YXRlKSA9IChfX3N0 YXRlKS0+Y29ubmVjdG9yc1tfX2ldLm5ld19zdGF0ZSwgMSkpCj4+ICAKPj4gIC8qKgo+PiAgICog Zm9yX2VhY2hfb2xkbmV3X2NydGNfaW5fc3RhdGUgLSBpdGVyYXRlIG92ZXIgYWxsIENSVENzIGlu IGFuIGF0b21pYyB1cGRhdGUKPj4gQEAgLTY0NiwxMiArNjQ2LDEyIEBAIHZvaWQgZHJtX3N0YXRl X2R1bXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcmludGVyICpwKTsKPj4g ICAqLwo+PiAgI2RlZmluZSBmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShfX3N0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIF9faSkgXAo+PiAgCWZvciAoKF9f aSkgPSAwOwkJCQkJCQlcCj4+IC0JICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2Nv bmZpZy5udW1fY3J0YyAmJgkJXAo+PiAtCSAgICAgKChjcnRjKSA9IChfX3N0YXRlKS0+Y3J0Y3Nb X19pXS5wdHIsCQkJXAo+PiAtCSAgICAgKG9sZF9jcnRjX3N0YXRlKSA9IChfX3N0YXRlKS0+Y3J0 Y3NbX19pXS5vbGRfc3RhdGUsCVwKPj4gLQkgICAgIChuZXdfY3J0Y19zdGF0ZSkgPSAoX19zdGF0 ZSktPmNydGNzW19faV0ubmV3X3N0YXRlLCAxKTsJXAo+PiArCSAgICAgKF9faSkgPCAoX19zdGF0 ZSktPmRldi0+bW9kZV9jb25maWcubnVtX2NydGM7CQlcCj4+ICAJICAgICAoX19pKSsrKQkJCQkJ CQlcCj4+IC0JCWZvcl9lYWNoX2lmIChjcnRjKQo+PiArCQlmb3JfZWFjaF9pZiAoKF9fc3RhdGUp LT5jcnRjc1tfX2ldLnB0ciAmJgkJXAo+PiArCQkJICAgICAoKGNydGMpID0gKF9fc3RhdGUpLT5j cnRjc1tfX2ldLnB0ciwJXAo+PiArCQkJICAgICAob2xkX2NydGNfc3RhdGUpID0gKF9fc3RhdGUp LT5jcnRjc1tfX2ldLm9sZF9zdGF0ZSwgXAo+PiArCQkJICAgICAobmV3X2NydGNfc3RhdGUpID0g KF9fc3RhdGUpLT5jcnRjc1tfX2ldLm5ld19zdGF0ZSwgMSkpCj4+ICAKPj4gIC8qKgo+PiAgICog Zm9yX2VhY2hfb2xkX2NydGNfaW5fc3RhdGUgLSBpdGVyYXRlIG92ZXIgYWxsIENSVENzIGluIGFu IGF0b21pYyB1cGRhdGUKPj4gQEAgLTY2NiwxMSArNjY2LDExIEBAIHZvaWQgZHJtX3N0YXRlX2R1 bXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcmludGVyICpwKTsKPj4gICAq Lwo+PiAgI2RlZmluZSBmb3JfZWFjaF9vbGRfY3J0Y19pbl9zdGF0ZShfX3N0YXRlLCBjcnRjLCBv bGRfY3J0Y19zdGF0ZSwgX19pKQlcCj4+ICAJZm9yICgoX19pKSA9IDA7CQkJCQkJCVwKPj4gLQkg ICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjICYmCQlcCj4+ IC0JICAgICAoKGNydGMpID0gKF9fc3RhdGUpLT5jcnRjc1tfX2ldLnB0ciwJCQlcCj4+IC0JICAg ICAob2xkX2NydGNfc3RhdGUpID0gKF9fc3RhdGUpLT5jcnRjc1tfX2ldLm9sZF9zdGF0ZSwgMSk7 CVwKPj4gKwkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRj OwkJXAo+PiAgCSAgICAgKF9faSkrKykJCQkJCQkJXAo+PiAtCQlmb3JfZWFjaF9pZiAoY3J0YykK Pj4gKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRlKS0+Y3J0Y3NbX19pXS5wdHIgJiYJCVwKPj4gKwkJ CSAgICAgKChjcnRjKSA9IChfX3N0YXRlKS0+Y3J0Y3NbX19pXS5wdHIsCVwKPj4gKwkJCSAgICAg KG9sZF9jcnRjX3N0YXRlKSA9IChfX3N0YXRlKS0+Y3J0Y3NbX19pXS5vbGRfc3RhdGUsIDEpKQo+ PiAgCj4+ICAvKioKPj4gICAqIGZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlIC0gaXRlcmF0ZSBv dmVyIGFsbCBDUlRDcyBpbiBhbiBhdG9taWMgdXBkYXRlCj4+IEBAIC02ODUsMTEgKzY4NSwxMSBA QCB2b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f cHJpbnRlciAqcCk7Cj4+ICAgKi8KPj4gICNkZWZpbmUgZm9yX2VhY2hfbmV3X2NydGNfaW5fc3Rh dGUoX19zdGF0ZSwgY3J0YywgbmV3X2NydGNfc3RhdGUsIF9faSkJXAo+PiAgCWZvciAoKF9faSkg PSAwOwkJCQkJCQlcCj4+IC0JICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZp Zy5udW1fY3J0YyAmJgkJXAo+PiAtCSAgICAgKChjcnRjKSA9IChfX3N0YXRlKS0+Y3J0Y3NbX19p XS5wdHIsCQkJXAo+PiAtCSAgICAgKG5ld19jcnRjX3N0YXRlKSA9IChfX3N0YXRlKS0+Y3J0Y3Nb X19pXS5uZXdfc3RhdGUsIDEpOwlcCj4+ICsJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5t b2RlX2NvbmZpZy5udW1fY3J0YzsJCVwKPj4gIAkgICAgIChfX2kpKyspCQkJCQkJCVwKPj4gLQkJ Zm9yX2VhY2hfaWYgKGNydGMpCj4+ICsJCWZvcl9lYWNoX2lmICgoX19zdGF0ZSktPmNydGNzW19f aV0ucHRyICYmCQlcCj4+ICsJCQkgICAgICgoY3J0YykgPSAoX19zdGF0ZSktPmNydGNzW19faV0u cHRyLAlcCj4+ICsJCQkgICAgIChuZXdfY3J0Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19f aV0ubmV3X3N0YXRlLCAxKSkKPj4gIAo+PiAgLyoqCj4+ICAgKiBmb3JfZWFjaF9vbGRuZXdfcGxh bmVfaW5fc3RhdGUgLSBpdGVyYXRlIG92ZXIgYWxsIHBsYW5lcyBpbiBhbiBhdG9taWMgdXBkYXRl Cj4+IEBAIC03MDUsMTIgKzcwNSwxMiBAQCB2b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7Cj4+ICAgKi8KPj4gICNkZWZpbmUg Zm9yX2VhY2hfb2xkbmV3X3BsYW5lX2luX3N0YXRlKF9fc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVf c3RhdGUsIG5ld19wbGFuZV9zdGF0ZSwgX19pKSBcCj4+ICAJZm9yICgoX19pKSA9IDA7CQkJCQkJ CVwKPj4gLQkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV90b3Rh bF9wbGFuZSAmJglcCj4+IC0JICAgICAoKHBsYW5lKSA9IChfX3N0YXRlKS0+cGxhbmVzW19faV0u cHRyLAkJCVwKPj4gLQkgICAgIChvbGRfcGxhbmVfc3RhdGUpID0gKF9fc3RhdGUpLT5wbGFuZXNb X19pXS5vbGRfc3RhdGUsCVwKPj4gLQkgICAgIChuZXdfcGxhbmVfc3RhdGUpID0gKF9fc3RhdGUp LT5wbGFuZXNbX19pXS5uZXdfc3RhdGUsIDEpOwlcCj4+ICsJICAgICAoX19pKSA8IChfX3N0YXRl KS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fdG90YWxfcGxhbmU7CVwKPj4gIAkgICAgIChfX2kpKysp CQkJCQkJCVwKPj4gLQkJZm9yX2VhY2hfaWYgKHBsYW5lKQo+PiArCQlmb3JfZWFjaF9pZiAoKF9f c3RhdGUpLT5wbGFuZXNbX19pXS5wdHIgJiYJCVwKPj4gKwkJCSAgICAgKChwbGFuZSkgPSAoX19z dGF0ZSktPnBsYW5lc1tfX2ldLnB0ciwJXAo+PiArCQkJICAgICAgKG9sZF9wbGFuZV9zdGF0ZSkg PSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLm9sZF9zdGF0ZSxcCj4+ICsJCQkgICAgICAobmV3X3Bs YW5lX3N0YXRlKSA9IChfX3N0YXRlKS0+cGxhbmVzW19faV0ubmV3X3N0YXRlLCAxKSkKPj4gIAo+ PiAgLyoqCj4+ICAgKiBmb3JfZWFjaF9vbGRfcGxhbmVfaW5fc3RhdGUgLSBpdGVyYXRlIG92ZXIg YWxsIHBsYW5lcyBpbiBhbiBhdG9taWMgdXBkYXRlCj4+IEBAIC03MjUsMTIgKzcyNSwxMSBAQCB2 b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcHJp bnRlciAqcCk7Cj4+ICAgKi8KPj4gICNkZWZpbmUgZm9yX2VhY2hfb2xkX3BsYW5lX2luX3N0YXRl KF9fc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsIF9faSkgXAo+PiAgCWZvciAoKF9faSkg PSAwOwkJCQkJCQlcCj4+IC0JICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZp Zy5udW1fdG90YWxfcGxhbmUgJiYJXAo+PiAtCSAgICAgKChwbGFuZSkgPSAoX19zdGF0ZSktPnBs YW5lc1tfX2ldLnB0ciwJCQlcCj4+IC0JICAgICAob2xkX3BsYW5lX3N0YXRlKSA9IChfX3N0YXRl KS0+cGxhbmVzW19faV0ub2xkX3N0YXRlLCAxKTsJXAo+PiArCSAgICAgKF9faSkgPCAoX19zdGF0 ZSktPmRldi0+bW9kZV9jb25maWcubnVtX3RvdGFsX3BsYW5lOwlcCj4+ICAJICAgICAoX19pKSsr KQkJCQkJCQlcCj4+IC0JCWZvcl9lYWNoX2lmIChwbGFuZSkKPj4gLQo+PiArCQlmb3JfZWFjaF9p ZiAoKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIgJiYJCVwKPj4gKwkJCSAgICAgKChwbGFuZSkg PSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLnB0ciwJXAo+PiArCQkJICAgICAgKG9sZF9wbGFuZV9z dGF0ZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLm9sZF9zdGF0ZSwgMSkpCj4+ICAvKioKPj4g ICAqIGZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZSAtIGl0ZXJhdGUgb3ZlciBhbGwgcGxhbmVz IGluIGFuIGF0b21pYyB1cGRhdGUKPj4gICAqIEBfX3N0YXRlOiAmc3RydWN0IGRybV9hdG9taWNf c3RhdGUgcG9pbnRlcgo+PiBAQCAtNzQ0LDExICs3NDMsMTEgQEAgdm9pZCBkcm1fc3RhdGVfZHVt cChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwo+PiAgICov Cj4+ICAjZGVmaW5lIGZvcl9lYWNoX25ld19wbGFuZV9pbl9zdGF0ZShfX3N0YXRlLCBwbGFuZSwg bmV3X3BsYW5lX3N0YXRlLCBfX2kpIFwKPj4gIAlmb3IgKChfX2kpID0gMDsJCQkJCQkJXAo+PiAt CSAgICAgKF9faSkgPCAoX19zdGF0ZSktPmRldi0+bW9kZV9jb25maWcubnVtX3RvdGFsX3BsYW5l ICYmCVwKPj4gLQkgICAgICgocGxhbmUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIsCQkJ XAo+PiAtCSAgICAgKG5ld19wbGFuZV9zdGF0ZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLm5l d19zdGF0ZSwgMSk7CVwKPj4gKwkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29u ZmlnLm51bV90b3RhbF9wbGFuZTsJXAo+PiAgCSAgICAgKF9faSkrKykJCQkJCQkJXAo+PiAtCQlm b3JfZWFjaF9pZiAocGxhbmUpCj4+ICsJCWZvcl9lYWNoX2lmICgoX19zdGF0ZSktPnBsYW5lc1tf X2ldLnB0ciAmJgkJXAo+PiArCQkJICAgICAoKHBsYW5lKSA9IChfX3N0YXRlKS0+cGxhbmVzW19f aV0ucHRyLAlcCj4+ICsJCQkgICAgICAobmV3X3BsYW5lX3N0YXRlKSA9IChfX3N0YXRlKS0+cGxh bmVzW19faV0ubmV3X3N0YXRlLCAxKSkKPj4gIAo+PiAgLyoqCj4+ICAgKiBmb3JfZWFjaF9vbGRu ZXdfcHJpdmF0ZV9vYmpfaW5fc3RhdGUgLSBpdGVyYXRlIG92ZXIgYWxsIHByaXZhdGUgb2JqZWN0 cyBpbiBhbiBhdG9taWMgdXBkYXRlCj4+Cj4gVGhpcyB2YXJpYW50IGFsc28gd29ya3MuCj4KPiBU ZXN0ZWQtYnk6IERtaXRyeSBPc2lwZW5rbyA8ZGlnZXR4QGdtYWlsLmNvbT4KPgpGb3Jnb3QgdG8g aGl0IHB1c2gsIHB1c2hlZCBub3cuIDopCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9kcmktZGV2ZWwK