From: Maarten Lankhorst Subject: [PATCH 2/2] drm/atomic: Make atomic iterators less surprising Date: Wed, 27 Sep 2017 10:35:32 +0200 Message-ID: <20170927083532.5756-2-maarten.lankhorst@linux.intel.com> References: <20170927083532.5756-1-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3AD6F6E679 for ; Wed, 27 Sep 2017 08:35:42 +0000 (UTC) In-Reply-To: <20170927083532.5756-1-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: dri-devel@lists.freedesktop.org Cc: Dmitry Osipenko List-Id: dri-devel@lists.freedesktop.org Q29tbWl0IDY2OWM5MjE1YWZlYSAoImRybS9hdG9taWM6IE1ha2UgYXN5bmMgcGxhbmUgdXBkYXRl IGNoZWNrcyB3b3JrIGFzCmludGVuZGVkLCB2Mi4iKSBhc3N1bWVkIGluY29ycmVjdGx5IHRoYXQg aWYgb25seSAxIHBsYW5lIGlzIG1hdGNoZWQgaW4KdGhlIGxvb3AsIHRoZSB2YXJpYWJsZXMgd2ls bCBiZSBzZXQgdG8gdGhhdCBwbGFuZS4gSW4gcmVhbGl0eSB3ZSByZXNldAp0aGVtIHRvIE5VTEwg ZXZlcnkgdGltZSBhIG5ldyBwbGFuZSB3YXMgaXRlcmF0ZWQuIFRoaXMgYmVoYXZpb3IgaXMKc3Vy cHJpc2luZywgc28gZml4IHRoaXMgYnkgbWFraW5nIHRoZSBmb3IgbG9vcHMgb25seSBhc3NpZ24g dGhlCnZhcmlhYmxlcyBvbiBhIG1hdGNoLgoKQ2M6IERtaXRyeSBPc2lwZW5rbyA8ZGlnZXR4QGdt YWlsLmNvbT4KRml4ZXM6IDY2OWM5MjE1YWZlYSAoImRybS9hdG9taWM6IE1ha2UgYXN5bmMgcGxh bmUgdXBkYXRlIGNoZWNrcyB3b3JrIGFzIGludGVuZGVkLCB2Mi4iKQpTaWduZWQtb2ZmLWJ5OiBN YWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgotLS0K IGluY2x1ZGUvZHJtL2RybV9hdG9taWMuaCB8IDg1ICsrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQyIGluc2VydGlvbnMoKyks IDQzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaCBi L2luY2x1ZGUvZHJtL2RybV9hdG9taWMuaAppbmRleCA2ZmFlOTVmMjhlMTAuLjVhZmQ2ZTM2NGZi NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2F0b21pYy5oCisrKyBiL2luY2x1ZGUvZHJt L2RybV9hdG9taWMuaApAQCAtNTg1LDEyICs1ODUsMTIgQEAgdm9pZCBkcm1fc3RhdGVfZHVtcChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwogICovCiAjZGVm aW5lIGZvcl9lYWNoX29sZG5ld19jb25uZWN0b3JfaW5fc3RhdGUoX19zdGF0ZSwgY29ubmVjdG9y LCBvbGRfY29ubmVjdG9yX3N0YXRlLCBuZXdfY29ubmVjdG9yX3N0YXRlLCBfX2kpIFwKIAlmb3Ig KChfX2kpID0gMDsJCQkJCQkJCVwKLQkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5udW1fY29ubmVj dG9yICYmCQkJCVwKLQkgICAgICgoY29ubmVjdG9yKSA9IChfX3N0YXRlKS0+Y29ubmVjdG9yc1tf X2ldLnB0ciwJCQlcCi0JICAgICAob2xkX2Nvbm5lY3Rvcl9zdGF0ZSkgPSAoX19zdGF0ZSktPmNv bm5lY3RvcnNbX19pXS5vbGRfc3RhdGUsCVwKLQkgICAgIChuZXdfY29ubmVjdG9yX3N0YXRlKSA9 IChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLm5ld19zdGF0ZSwgMSk7IAlcCi0JICAgICAoX19p KSsrKQkJCQkJCQlcCi0JCWZvcl9lYWNoX2lmIChjb25uZWN0b3IpCisJICAgICAoX19pKSA8IChf X3N0YXRlKS0+bnVtX2Nvbm5lY3RvcjsJCQkJCVwKKwkgICAgIChfX2kpKyspCQkJCQkJCQlcCisJ CWZvcl9lYWNoX2lmICgoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5wdHIgJiYJCQlcCisJCQkg ICAgICgoY29ubmVjdG9yKSA9IChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLnB0ciwJXAorCQkJ ICAgICAob2xkX2Nvbm5lY3Rvcl9zdGF0ZSkgPSAoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5v bGRfc3RhdGUsCVwKKwkJCSAgICAgKG5ld19jb25uZWN0b3Jfc3RhdGUpID0gKF9fc3RhdGUpLT5j b25uZWN0b3JzW19faV0ubmV3X3N0YXRlLCAxKSkKIAogLyoqCiAgKiBmb3JfZWFjaF9vbGRfY29u bmVjdG9yX2luX3N0YXRlIC0gaXRlcmF0ZSBvdmVyIGFsbCBjb25uZWN0b3JzIGluIGFuIGF0b21p YyB1cGRhdGUKQEAgLTYwNiwxMSArNjA2LDExIEBAIHZvaWQgZHJtX3N0YXRlX2R1bXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcmludGVyICpwKTsKICAqLwogI2RlZmluZSBm b3JfZWFjaF9vbGRfY29ubmVjdG9yX2luX3N0YXRlKF9fc3RhdGUsIGNvbm5lY3Rvciwgb2xkX2Nv bm5lY3Rvcl9zdGF0ZSwgX19pKSBcCiAJZm9yICgoX19pKSA9IDA7CQkJCQkJCQlcCi0JICAgICAo X19pKSA8IChfX3N0YXRlKS0+bnVtX2Nvbm5lY3RvciAmJgkJCQlcCi0JICAgICAoKGNvbm5lY3Rv cikgPSAoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5wdHIsCQkJXAotCSAgICAgKG9sZF9jb25u ZWN0b3Jfc3RhdGUpID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ub2xkX3N0YXRlLCAxKTsg CVwKLQkgICAgIChfX2kpKyspCQkJCQkJCVwKLQkJZm9yX2VhY2hfaWYgKGNvbm5lY3RvcikKKwkg ICAgIChfX2kpIDwgKF9fc3RhdGUpLT5udW1fY29ubmVjdG9yOwkJCQkJXAorCSAgICAgKF9faSkr KykJCQkJCQkJCVwKKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLnB0 ciAmJgkJCVwKKwkJCSAgICAgKChjb25uZWN0b3IpID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19f aV0ucHRyLAlcCisJCQkgICAgIChvbGRfY29ubmVjdG9yX3N0YXRlKSA9IChfX3N0YXRlKS0+Y29u bmVjdG9yc1tfX2ldLm9sZF9zdGF0ZSwgMSkpCiAKIC8qKgogICogZm9yX2VhY2hfbmV3X2Nvbm5l Y3Rvcl9pbl9zdGF0ZSAtIGl0ZXJhdGUgb3ZlciBhbGwgY29ubmVjdG9ycyBpbiBhbiBhdG9taWMg dXBkYXRlCkBAIC02MjYsMTEgKzYyNiwxMSBAQCB2b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAgKi8KICNkZWZpbmUgZm9y X2VhY2hfbmV3X2Nvbm5lY3Rvcl9pbl9zdGF0ZShfX3N0YXRlLCBjb25uZWN0b3IsIG5ld19jb25u ZWN0b3Jfc3RhdGUsIF9faSkgXAogCWZvciAoKF9faSkgPSAwOwkJCQkJCQkJXAotCSAgICAgKF9f aSkgPCAoX19zdGF0ZSktPm51bV9jb25uZWN0b3IgJiYJCQkJXAotCSAgICAgKChjb25uZWN0b3Ip ID0gKF9fc3RhdGUpLT5jb25uZWN0b3JzW19faV0ucHRyLAkJCVwKLQkgICAgIChuZXdfY29ubmVj dG9yX3N0YXRlKSA9IChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ldLm5ld19zdGF0ZSwgMSk7IAlc Ci0JICAgICAoX19pKSsrKQkJCQkJCQlcCi0JCWZvcl9lYWNoX2lmIChjb25uZWN0b3IpCisJICAg ICAoX19pKSA8IChfX3N0YXRlKS0+bnVtX2Nvbm5lY3RvcjsJCQkJCVwKKwkgICAgIChfX2kpKysp CQkJCQkJCQlcCisJCWZvcl9lYWNoX2lmICgoX19zdGF0ZSktPmNvbm5lY3RvcnNbX19pXS5wdHIg JiYJCQlcCisJCQkgICAgICgoY29ubmVjdG9yKSA9IChfX3N0YXRlKS0+Y29ubmVjdG9yc1tfX2ld LnB0ciwJXAorCQkJICAgICAobmV3X2Nvbm5lY3Rvcl9zdGF0ZSkgPSAoX19zdGF0ZSktPmNvbm5l Y3RvcnNbX19pXS5uZXdfc3RhdGUsIDEpKQogCiAvKioKICAqIGZvcl9lYWNoX29sZG5ld19jcnRj X2luX3N0YXRlIC0gaXRlcmF0ZSBvdmVyIGFsbCBDUlRDcyBpbiBhbiBhdG9taWMgdXBkYXRlCkBA IC02NDYsMTIgKzY0NiwxMiBAQCB2b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAgKi8KICNkZWZpbmUgZm9yX2VhY2hfb2xk bmV3X2NydGNfaW5fc3RhdGUoX19zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIG5ld19jcnRj X3N0YXRlLCBfX2kpIFwKIAlmb3IgKChfX2kpID0gMDsJCQkJCQkJXAotCSAgICAgKF9faSkgPCAo X19zdGF0ZSktPmRldi0+bW9kZV9jb25maWcubnVtX2NydGMgJiYJCVwKLQkgICAgICgoY3J0Yykg PSAoX19zdGF0ZSktPmNydGNzW19faV0ucHRyLAkJCVwKLQkgICAgIChvbGRfY3J0Y19zdGF0ZSkg PSAoX19zdGF0ZSktPmNydGNzW19faV0ub2xkX3N0YXRlLAlcCi0JICAgICAobmV3X2NydGNfc3Rh dGUpID0gKF9fc3RhdGUpLT5jcnRjc1tfX2ldLm5ld19zdGF0ZSwgMSk7CVwKKwkgICAgIChfX2kp IDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV9jcnRjOwkJXAogCSAgICAgKF9faSkr KykJCQkJCQkJXAotCQlmb3JfZWFjaF9pZiAoY3J0YykKKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRl KS0+Y3J0Y3NbX19pXS5wdHIgJiYJCVwKKwkJCSAgICAgKChjcnRjKSA9IChfX3N0YXRlKS0+Y3J0 Y3NbX19pXS5wdHIsCVwKKwkJCSAgICAgKG9sZF9jcnRjX3N0YXRlKSA9IChfX3N0YXRlKS0+Y3J0 Y3NbX19pXS5vbGRfc3RhdGUsIFwKKwkJCSAgICAgKG5ld19jcnRjX3N0YXRlKSA9IChfX3N0YXRl KS0+Y3J0Y3NbX19pXS5uZXdfc3RhdGUsIDEpKQogCiAvKioKICAqIGZvcl9lYWNoX29sZF9jcnRj X2luX3N0YXRlIC0gaXRlcmF0ZSBvdmVyIGFsbCBDUlRDcyBpbiBhbiBhdG9taWMgdXBkYXRlCkBA IC02NjYsMTEgKzY2NiwxMSBAQCB2b2lkIGRybV9zdGF0ZV9kdW1wKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAgKi8KICNkZWZpbmUgZm9yX2VhY2hfb2xk X2NydGNfaW5fc3RhdGUoX19zdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIF9faSkJXAogCWZv ciAoKF9faSkgPSAwOwkJCQkJCQlcCi0JICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2Rl X2NvbmZpZy5udW1fY3J0YyAmJgkJXAotCSAgICAgKChjcnRjKSA9IChfX3N0YXRlKS0+Y3J0Y3Nb X19pXS5wdHIsCQkJXAotCSAgICAgKG9sZF9jcnRjX3N0YXRlKSA9IChfX3N0YXRlKS0+Y3J0Y3Nb X19pXS5vbGRfc3RhdGUsIDEpOwlcCisJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2Rl X2NvbmZpZy5udW1fY3J0YzsJCVwKIAkgICAgIChfX2kpKyspCQkJCQkJCVwKLQkJZm9yX2VhY2hf aWYgKGNydGMpCisJCWZvcl9lYWNoX2lmICgoX19zdGF0ZSktPmNydGNzW19faV0ucHRyICYmCQlc CisJCQkgICAgICgoY3J0YykgPSAoX19zdGF0ZSktPmNydGNzW19faV0ucHRyLAlcCisJCQkgICAg IChvbGRfY3J0Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19faV0ub2xkX3N0YXRlLCAxKSkK IAogLyoqCiAgKiBmb3JfZWFjaF9uZXdfY3J0Y19pbl9zdGF0ZSAtIGl0ZXJhdGUgb3ZlciBhbGwg Q1JUQ3MgaW4gYW4gYXRvbWljIHVwZGF0ZQpAQCAtNjg1LDExICs2ODUsMTEgQEAgdm9pZCBkcm1f c3RhdGVfZHVtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAp OwogICovCiAjZGVmaW5lIGZvcl9lYWNoX25ld19jcnRjX2luX3N0YXRlKF9fc3RhdGUsIGNydGMs IG5ld19jcnRjX3N0YXRlLCBfX2kpCVwKIAlmb3IgKChfX2kpID0gMDsJCQkJCQkJXAotCSAgICAg KF9faSkgPCAoX19zdGF0ZSktPmRldi0+bW9kZV9jb25maWcubnVtX2NydGMgJiYJCVwKLQkgICAg ICgoY3J0YykgPSAoX19zdGF0ZSktPmNydGNzW19faV0ucHRyLAkJCVwKLQkgICAgIChuZXdfY3J0 Y19zdGF0ZSkgPSAoX19zdGF0ZSktPmNydGNzW19faV0ubmV3X3N0YXRlLCAxKTsJXAorCSAgICAg KF9faSkgPCAoX19zdGF0ZSktPmRldi0+bW9kZV9jb25maWcubnVtX2NydGM7CQlcCiAJICAgICAo X19pKSsrKQkJCQkJCQlcCi0JCWZvcl9lYWNoX2lmIChjcnRjKQorCQlmb3JfZWFjaF9pZiAoKF9f c3RhdGUpLT5jcnRjc1tfX2ldLnB0ciAmJgkJXAorCQkJICAgICAoKGNydGMpID0gKF9fc3RhdGUp LT5jcnRjc1tfX2ldLnB0ciwJXAorCQkJICAgICAobmV3X2NydGNfc3RhdGUpID0gKF9fc3RhdGUp LT5jcnRjc1tfX2ldLm5ld19zdGF0ZSwgMSkpCiAKIC8qKgogICogZm9yX2VhY2hfb2xkbmV3X3Bs YW5lX2luX3N0YXRlIC0gaXRlcmF0ZSBvdmVyIGFsbCBwbGFuZXMgaW4gYW4gYXRvbWljIHVwZGF0 ZQpAQCAtNzA1LDEyICs3MDUsMTIgQEAgdm9pZCBkcm1fc3RhdGVfZHVtcChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnApOwogICovCiAjZGVmaW5lIGZvcl9lYWNo X29sZG5ld19wbGFuZV9pbl9zdGF0ZShfX3N0YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBu ZXdfcGxhbmVfc3RhdGUsIF9faSkgXAogCWZvciAoKF9faSkgPSAwOwkJCQkJCQlcCi0JICAgICAo X19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fdG90YWxfcGxhbmUgJiYJXAot CSAgICAgKChwbGFuZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLnB0ciwJCQlcCi0JICAgICAo b2xkX3BsYW5lX3N0YXRlKSA9IChfX3N0YXRlKS0+cGxhbmVzW19faV0ub2xkX3N0YXRlLAlcCi0J ICAgICAobmV3X3BsYW5lX3N0YXRlKSA9IChfX3N0YXRlKS0+cGxhbmVzW19faV0ubmV3X3N0YXRl LCAxKTsJXAorCSAgICAgKF9faSkgPCAoX19zdGF0ZSktPmRldi0+bW9kZV9jb25maWcubnVtX3Rv dGFsX3BsYW5lOwlcCiAJICAgICAoX19pKSsrKQkJCQkJCQlcCi0JCWZvcl9lYWNoX2lmIChwbGFu ZSkKKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRlKS0+cGxhbmVzW19faV0ucHRyICYmCQlcCisJCQkg ICAgICgocGxhbmUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIsCVwKKwkJCSAgICAgIChv bGRfcGxhbmVfc3RhdGUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5vbGRfc3RhdGUsXAorCQkJ ICAgICAgKG5ld19wbGFuZV9zdGF0ZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLm5ld19zdGF0 ZSwgMSkpCiAKIC8qKgogICogZm9yX2VhY2hfb2xkX3BsYW5lX2luX3N0YXRlIC0gaXRlcmF0ZSBv dmVyIGFsbCBwbGFuZXMgaW4gYW4gYXRvbWljIHVwZGF0ZQpAQCAtNzI1LDEyICs3MjUsMTEgQEAg dm9pZCBkcm1fc3RhdGVfZHVtcChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX3By aW50ZXIgKnApOwogICovCiAjZGVmaW5lIGZvcl9lYWNoX29sZF9wbGFuZV9pbl9zdGF0ZShfX3N0 YXRlLCBwbGFuZSwgb2xkX3BsYW5lX3N0YXRlLCBfX2kpIFwKIAlmb3IgKChfX2kpID0gMDsJCQkJ CQkJXAotCSAgICAgKF9faSkgPCAoX19zdGF0ZSktPmRldi0+bW9kZV9jb25maWcubnVtX3RvdGFs X3BsYW5lICYmCVwKLQkgICAgICgocGxhbmUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIs CQkJXAotCSAgICAgKG9sZF9wbGFuZV9zdGF0ZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLm9s ZF9zdGF0ZSwgMSk7CVwKKwkgICAgIChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmln Lm51bV90b3RhbF9wbGFuZTsJXAogCSAgICAgKF9faSkrKykJCQkJCQkJXAotCQlmb3JfZWFjaF9p ZiAocGxhbmUpCi0KKwkJZm9yX2VhY2hfaWYgKChfX3N0YXRlKS0+cGxhbmVzW19faV0ucHRyICYm CQlcCisJCQkgICAgICgocGxhbmUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIsCVwKKwkJ CSAgICAgIChvbGRfcGxhbmVfc3RhdGUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5vbGRfc3Rh dGUsIDEpKQogLyoqCiAgKiBmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUgLSBpdGVyYXRlIG92 ZXIgYWxsIHBsYW5lcyBpbiBhbiBhdG9taWMgdXBkYXRlCiAgKiBAX19zdGF0ZTogJnN0cnVjdCBk cm1fYXRvbWljX3N0YXRlIHBvaW50ZXIKQEAgLTc0NCwxMSArNzQzLDExIEBAIHZvaWQgZHJtX3N0 YXRlX2R1bXAoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9wcmludGVyICpwKTsK ICAqLwogI2RlZmluZSBmb3JfZWFjaF9uZXdfcGxhbmVfaW5fc3RhdGUoX19zdGF0ZSwgcGxhbmUs IG5ld19wbGFuZV9zdGF0ZSwgX19pKSBcCiAJZm9yICgoX19pKSA9IDA7CQkJCQkJCVwKLQkgICAg IChfX2kpIDwgKF9fc3RhdGUpLT5kZXYtPm1vZGVfY29uZmlnLm51bV90b3RhbF9wbGFuZSAmJglc Ci0JICAgICAoKHBsYW5lKSA9IChfX3N0YXRlKS0+cGxhbmVzW19faV0ucHRyLAkJCVwKLQkgICAg IChuZXdfcGxhbmVfc3RhdGUpID0gKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5uZXdfc3RhdGUsIDEp OwlcCisJICAgICAoX19pKSA8IChfX3N0YXRlKS0+ZGV2LT5tb2RlX2NvbmZpZy5udW1fdG90YWxf cGxhbmU7CVwKIAkgICAgIChfX2kpKyspCQkJCQkJCVwKLQkJZm9yX2VhY2hfaWYgKHBsYW5lKQor CQlmb3JfZWFjaF9pZiAoKF9fc3RhdGUpLT5wbGFuZXNbX19pXS5wdHIgJiYJCVwKKwkJCSAgICAg KChwbGFuZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLnB0ciwJXAorCQkJICAgICAgKG5ld19w bGFuZV9zdGF0ZSkgPSAoX19zdGF0ZSktPnBsYW5lc1tfX2ldLm5ld19zdGF0ZSwgMSkpCiAKIC8q KgogICogZm9yX2VhY2hfb2xkbmV3X3ByaXZhdGVfb2JqX2luX3N0YXRlIC0gaXRlcmF0ZSBvdmVy IGFsbCBwcml2YXRlIG9iamVjdHMgaW4gYW4gYXRvbWljIHVwZGF0ZQotLSAKMi4xNC4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFp bGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK