From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 1/2] drm/i915: introduce for_each_engine_id() Date: Wed, 23 Mar 2016 18:19:53 +0000 Message-ID: <1458757194-17783-2-git-send-email-david.s.gordon@intel.com> References: <1458757194-17783-1-git-send-email-david.s.gordon@intel.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 ESMTP id 6EC716E20A for ; Wed, 23 Mar 2016 18:20:34 +0000 (UTC) In-Reply-To: <1458757194-17783-1-git-send-email-david.s.gordon@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: jani.nikula@intel.com List-Id: intel-gfx@lists.freedesktop.org RXF1aXZhbGVudCB0byB0aGUgZXhpc3RpbmcgZm9yX2VhY2hfZW5naW5lKCkgbWFjcm8sIHRoaXMg d2lsbCByZXBsYWNlCnRoZSBsYXR0ZXIgd2hlcmV2ZXIgdGhlIHRoaXJkIGFyZ3VtZW50ICppcyog YWN0dWFsbHkgd2FudGVkIChpbiBtb3N0CnBsYWNlcywgaXQgaXMgbm90IHVzZWQpLiBUaGUgdGhp cmQgYXJndW1lbnQgaXMgcmVuYW1lZCB0byBlbXBoYXNpc2UKdGhhdCBpdCBpcyBhbiBlbmdpbmUg aWQgKHR5cGUgZW51bSBpbnRlbF9lbmdpbmVfaWQpLiBBbGwgdGhlIGNhbGxlcnMgb2YKdGhlIG1h Y3JvIHRoYXQgYWN0dWFsbHkgbmVlZCB0aGUgdGhpcmQgYXJndW1lbnQgYXJlIHVwZGF0ZWQgdG8g dXNlIHRoaXMKdmVyc2lvbiwgYW5kIHRoZSBhcmd1bWVudCAoZ2VuZXJhbGx5ICdpJykgaXMgYWxz byB1cGRhdGVkIHRvIGJlICdpZCcuCk90aGVyIGNhbGxlcnMgKHdoZXJlIHRoZSB0aGlyZCBhcmd1 bWVudCBpcyB1bnVzZWQpIGFyZSB1bnRvdWNoZWQgZm9yCm5vdzsgdGhleSB3aWxsIGJlIHVwZGF0 ZWQgaW4gdGhlIG5leHQgcGF0Y2guCgpTaWduZWQtb2ZmLWJ5OiBEYXZlIEdvcmRvbiA8ZGF2aWQu cy5nb3Jkb25AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICAgICAgICB8IDQ4ICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgIHwgIDkgKysrKysrCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jICAgICAgfCAgNiArKy0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgfCAgOCArKy0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9pcnEuYyAgICAgICAgICAgIHwgMTAgKysrLS0tLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbW9jcy5jICAgICAgICAgIHwgIDYgKystLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jICAgIHwgMjEgKysrKysrKy0tLS0tLQogNyBmaWxlcyBjaGFu Z2VkLCA2MiBpbnNlcnRpb25zKCspLCA0NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCmluZGV4IGUwYmEzZTMuLjc3ZGNlNTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIHU2NCBpOTE1X2dlbV9vYmpf dG90YWxfZ2d0dF9zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwogCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwogCWludCBw aW5fY291bnQgPSAwOwotCWludCBpOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJc2Vx X3ByaW50ZihtLCAiJXBLOiAlcyVzJXMlcyAlOHpkS2lCICUwMnggJTAyeCBbICIsCiAJCSAgICZv YmotPmJhc2UsCkBAIC0xNDMsOSArMTQzLDkgQEAgc3RhdGljIHU2NCBpOTE1X2dlbV9vYmpfdG90 YWxfZ2d0dF9zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiAJCSAgIG9iai0+ YmFzZS5zaXplIC8gMTAyNCwKIAkJICAgb2JqLT5iYXNlLnJlYWRfZG9tYWlucywKIAkJICAgb2Jq LT5iYXNlLndyaXRlX2RvbWFpbik7Ci0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYs IGkpCisJZm9yX2VhY2hfZW5naW5lX2lkKGVuZ2luZSwgZGV2X3ByaXYsIGlkKQogCQlzZXFfcHJp bnRmKG0sICIleCAiLAotCQkJCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9y ZWFkX3JlcVtpXSkpOworCQkJCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9y ZWFkX3JlcVtpZF0pKTsKIAlzZXFfcHJpbnRmKG0sICJdICV4ICV4JXMlcyVzIiwKIAkJICAgaTkx NV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8ob2JqLT5sYXN0X3dyaXRlX3JlcSksCiAJCSAgIGk5MTVf Z2VtX3JlcXVlc3RfZ2V0X3NlcW5vKG9iai0+bGFzdF9mZW5jZWRfcmVxKSwKQEAgLTEzMzQsNyAr MTMzNCw4IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUg Km0sIHZvaWQgKnVudXNlZCkKIAl1NjQgYWN0aGRbSTkxNV9OVU1fRU5HSU5FU107CiAJdTMyIHNl cW5vW0k5MTVfTlVNX0VOR0lORVNdOwogCXUzMiBpbnN0ZG9uZVtJOTE1X05VTV9JTlNURE9ORV9S RUddOwotCWludCBpLCBqOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWludCBqOwogCiAJ aWYgKCFpOTE1LmVuYWJsZV9oYW5nY2hlY2spIHsKIAkJc2VxX3ByaW50ZihtLCAiSGFuZ2NoZWNr IGRpc2FibGVkXG4iKTsKQEAgLTEzNDMsOSArMTM0NCw5IEBAIHN0YXRpYyBpbnQgaTkxNV9oYW5n Y2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAogCWludGVsX3J1 bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsKIAotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9w cml2LCBpKSB7Ci0JCXNlcW5vW2ldID0gZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lLCBmYWxzZSk7 Ci0JCWFjdGhkW2ldID0gaW50ZWxfcmluZ19nZXRfYWN0aXZlX2hlYWQoZW5naW5lKTsKKwlmb3Jf ZWFjaF9lbmdpbmVfaWQoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKKwkJc2Vxbm9baWRdID0gZW5n aW5lLT5nZXRfc2Vxbm8oZW5naW5lLCBmYWxzZSk7CisJCWFjdGhkW2lkXSA9IGludGVsX3Jpbmdf Z2V0X2FjdGl2ZV9oZWFkKGVuZ2luZSk7CiAJfQogCiAJaTkxNV9nZXRfZXh0cmFfaW5zdGRvbmUo ZGV2LCBpbnN0ZG9uZSk7CkBAIC0xMzU5LDEzICsxMzYwLDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9o YW5nY2hlY2tfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAl9IGVsc2UK IAkJc2VxX3ByaW50ZihtLCAiSGFuZ2NoZWNrIGluYWN0aXZlXG4iKTsKIAotCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGRldl9wcml2LCBpKSB7CisJZm9yX2VhY2hfZW5naW5lX2lkKGVuZ2luZSwg ZGV2X3ByaXYsIGlkKSB7CiAJCXNlcV9wcmludGYobSwgIiVzOlxuIiwgZW5naW5lLT5uYW1lKTsK IAkJc2VxX3ByaW50ZihtLCAiXHRzZXFubyA9ICV4IFtjdXJyZW50ICV4XVxuIiwKLQkJCSAgIGVu Z2luZS0+aGFuZ2NoZWNrLnNlcW5vLCBzZXFub1tpXSk7CisJCQkgICBlbmdpbmUtPmhhbmdjaGVj ay5zZXFubywgc2Vxbm9baWRdKTsKIAkJc2VxX3ByaW50ZihtLCAiXHRBQ1RIRCA9IDB4JTA4bGx4 IFtjdXJyZW50IDB4JTA4bGx4XVxuIiwKIAkJCSAgIChsb25nIGxvbmcpZW5naW5lLT5oYW5nY2hl Y2suYWN0aGQsCi0JCQkgICAobG9uZyBsb25nKWFjdGhkW2ldKTsKKwkJCSAgIChsb25nIGxvbmcp YWN0aGRbaWRdKTsKIAkJc2VxX3ByaW50ZihtLCAiXHRzY29yZSA9ICVkXG4iLCBlbmdpbmUtPmhh bmdjaGVjay5zY29yZSk7CiAJCXNlcV9wcmludGYobSwgIlx0YWN0aW9uID0gJWRcbiIsIGVuZ2lu ZS0+aGFuZ2NoZWNrLmFjdGlvbik7CiAKQEAgLTE5NDcsNyArMTk0OCw4IEBAIHN0YXRpYyBpbnQg aTkxNV9jb250ZXh0X3N0YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4 OwotCWludCByZXQsIGk7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJaW50IHJldDsKIAog CXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWlm IChyZXQpCkBAIC0xOTY1LDExICsxOTY3LDExIEBAIHN0YXRpYyBpbnQgaTkxNV9jb250ZXh0X3N0 YXR1cyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAogCQlpZiAoaTkxNS5lbmFi bGVfZXhlY2xpc3RzKSB7CiAJCQlzZXFfcHV0YyhtLCAnXG4nKTsKLQkJCWZvcl9lYWNoX2VuZ2lu ZShlbmdpbmUsIGRldl9wcml2LCBpKSB7CisJCQlmb3JfZWFjaF9lbmdpbmVfaWQoZW5naW5lLCBk ZXZfcHJpdiwgaWQpIHsKIAkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9 Ci0JCQkJCWN0eC0+ZW5naW5lW2ldLnN0YXRlOworCQkJCQljdHgtPmVuZ2luZVtpZF0uc3RhdGU7 CiAJCQkJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKnJpbmdidWYgPQotCQkJCQljdHgtPmVuZ2lu ZVtpXS5yaW5nYnVmOworCQkJCQljdHgtPmVuZ2luZVtpZF0ucmluZ2J1ZjsKIAogCQkJCXNlcV9w cmludGYobSwgIiVzOiAiLCBlbmdpbmUtPm5hbWUpOwogCQkJCWlmIChjdHhfb2JqKQpAQCAtMzEz NCw3ICszMTM2LDggQEAgc3RhdGljIGludCBpOTE1X3NlbWFwaG9yZV9zdGF0dXMoc3RydWN0IHNl cV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 CiAJaW50IG51bV9yaW5ncyA9IGh3ZWlnaHQzMihJTlRFTF9JTkZPKGRldiktPnJpbmdfbWFzayk7 Ci0JaW50IGksIGosIHJldDsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnQgaiwgcmV0 OwogCiAJaWYgKCFpOTE1X3NlbWFwaG9yZV9pc19lbmFibGVkKGRldikpIHsKIAkJc2VxX3B1dHMo bSwgIlNlbWFwaG9yZXMgYXJlIGRpc2FibGVkXG4iKTsKQEAgLTMxNTMsMTQgKzMxNTYsMTQgQEAg c3RhdGljIGludCBpOTE1X3NlbWFwaG9yZV9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lk ICp1bnVzZWQpCiAJCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoZGV2X3ByaXYtPnNl bWFwaG9yZV9vYmosIDApOwogCiAJCXNlcW5vID0gKHVpbnQ2NF90ICopa21hcF9hdG9taWMocGFn ZSk7Ci0JCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpKSB7CisJCWZvcl9lYWNo X2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkgewogCQkJdWludDY0X3Qgb2Zmc2V0Owog CiAJCQlzZXFfcHJpbnRmKG0sICIlc1xuIiwgZW5naW5lLT5uYW1lKTsKIAogCQkJc2VxX3B1dHMo bSwgIiAgTGFzdCBzaWduYWw6Iik7CiAJCQlmb3IgKGogPSAwOyBqIDwgbnVtX3JpbmdzOyBqKysp IHsKLQkJCQlvZmZzZXQgPSBpICogSTkxNV9OVU1fRU5HSU5FUyArIGo7CisJCQkJb2Zmc2V0ID0g aWQgKiBJOTE1X05VTV9FTkdJTkVTICsgajsKIAkJCQlzZXFfcHJpbnRmKG0sICIweCUwOGxseCAo MHglMDJsbHgpICIsCiAJCQkJCSAgIHNlcW5vW29mZnNldF0sIG9mZnNldCAqIDgpOwogCQkJfQpA QCAtMzE2OCw3ICszMTcxLDcgQEAgc3RhdGljIGludCBpOTE1X3NlbWFwaG9yZV9zdGF0dXMoc3Ry dWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpCiAKIAkJCXNlcV9wdXRzKG0sICIgIExhc3Qg d2FpdDogICIpOwogCQkJZm9yIChqID0gMDsgaiA8IG51bV9yaW5nczsgaisrKSB7Ci0JCQkJb2Zm c2V0ID0gaSArIChqICogSTkxNV9OVU1fRU5HSU5FUyk7CisJCQkJb2Zmc2V0ID0gaWQgKyAoaiAq IEk5MTVfTlVNX0VOR0lORVMpOwogCQkJCXNlcV9wcmludGYobSwgIjB4JTA4bGx4ICgweCUwMmxs eCkgIiwKIAkJCQkJICAgc2Vxbm9bb2Zmc2V0XSwgb2Zmc2V0ICogOCk7CiAJCQl9CkBAIC0zMTc4 LDcgKzMxODEsNyBAQCBzdGF0aWMgaW50IGk5MTVfc2VtYXBob3JlX3N0YXR1cyhzdHJ1Y3Qgc2Vx X2ZpbGUgKm0sIHZvaWQgKnVudXNlZCkKIAkJa3VubWFwX2F0b21pYyhzZXFubyk7CiAJfSBlbHNl IHsKIAkJc2VxX3B1dHMobSwgIiAgTGFzdCBzaWduYWw6Iik7Ci0JCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGRldl9wcml2LCBpKQorCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwg aWQpCiAJCQlmb3IgKGogPSAwOyBqIDwgbnVtX3JpbmdzOyBqKyspCiAJCQkJc2VxX3ByaW50Ziht LCAiMHglMDh4XG4iLAogCQkJCQkgICBJOTE1X1JFQUQoZW5naW5lLT5zZW1hcGhvcmUubWJveC5z aWduYWxbal0pKTsKQEAgLTMxODYsNyArMzE4OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9zZW1hcGhv cmVfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCX0KIAogCXNlcV9w dXRzKG0sICJcblN5bmMgc2Vxbm86XG4iKTsKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZf cHJpdiwgaSkgeworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgewogCQlm b3IgKGogPSAwOyBqIDwgbnVtX3JpbmdzOyBqKyspIHsKIAkJCXNlcV9wcmludGYobSwgIiAgMHgl MDh4ICIsCiAJCQkJICAgZW5naW5lLT5zZW1hcGhvcmUuc3luY19zZXFub1tqXSk7CkBAIC0zMjM2 LDYgKzMyMzksNyBAQCBzdGF0aWMgaW50IGk5MTVfd2FfcmVnaXN0ZXJzKHN0cnVjdCBzZXFfZmls ZSAqbSwgdm9pZCAqdW51c2VkKQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBub2RlLT5taW5v ci0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CiAJc3RydWN0IGk5MTVfd29ya2Fyb3VuZHMgKndvcmthcm91bmRzID0gJmRldl9wcml2 LT53b3JrYXJvdW5kczsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAogCXJldCA9IG11dGV4 X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCWlmIChyZXQpCkBAIC0z MjQ0LDkgKzMyNDgsOSBAQCBzdGF0aWMgaW50IGk5MTVfd2FfcmVnaXN0ZXJzKHN0cnVjdCBzZXFf ZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCWludGVsX3J1bnRpbWVfcG1fZ2V0KGRldl9wcml2KTsK IAogCXNlcV9wcmludGYobSwgIldvcmthcm91bmRzIGFwcGxpZWQ6ICVkXG4iLCB3b3JrYXJvdW5k cy0+Y291bnQpOwotCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCBpKQorCWZvcl9l YWNoX2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkKIAkJc2VxX3ByaW50ZihtLCAiSFcg d2hpdGVsaXN0IGNvdW50IGZvciAlczogJWRcbiIsCi0JCQkgICBlbmdpbmUtPm5hbWUsIHdvcmth cm91bmRzLT5od193aGl0ZWxpc3RfY291bnRbaV0pOworCQkJICAgZW5naW5lLT5uYW1lLCB3b3Jr YXJvdW5kcy0+aHdfd2hpdGVsaXN0X2NvdW50W2lkXSk7CiAJZm9yIChpID0gMDsgaSA8IHdvcmth cm91bmRzLT5jb3VudDsgKytpKSB7CiAJCWk5MTVfcmVnX3QgYWRkcjsKIAkJdTMyIG1hc2ssIHZh bHVlLCByZWFkOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggOWQyOWFiMC4uNjJlZTg2YyAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMDEzLDYgKzIwMTMsMTUgQEAgc3RhdGljIGlu bGluZSBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZ3VjX3RvX2k5MTUoc3RydWN0IGludGVsX2d1 YyAqZ3VjKQogCWZvciAoKGlfXykgPSAwOyAoaV9fKSA8IEk5MTVfTlVNX0VOR0lORVM7IChpX18p KyspIFwKIAkJZm9yX2VhY2hfaWYgKCgoKHJpbmdfXykgPSAmKGRldl9wcml2X18pLT5lbmdpbmVb KGlfXyldKSwgaW50ZWxfZW5naW5lX2luaXRpYWxpemVkKChyaW5nX18pKSkpCiAKKy8qIEl0ZXJh dG9yIHdpdGggZW5naW5lX2lkICovCisjZGVmaW5lIGZvcl9lYWNoX2VuZ2luZV9pZChlbmdpbmVf XywgZGV2X3ByaXZfXywgaWRfXykgXAorCWZvciAoKGVuZ2luZV9fKSA9ICYoZGV2X3ByaXZfXykt PmVuZ2luZVswXSwgKGlkX18pID0gMDsgXAorCSAgICAgKGVuZ2luZV9fKSA8ICYoZGV2X3ByaXZf XyktPmVuZ2luZVtJOTE1X05VTV9FTkdJTkVTXTsgXAorCSAgICAgKGVuZ2luZV9fKSsrKSBcCisJ CWZvcl9lYWNoX2lmICgoKGlkX18pID0gKGVuZ2luZV9fKS0+aWQsIFwKKwkJCSAgICAgIGludGVs X2VuZ2luZV9pbml0aWFsaXplZChlbmdpbmVfXykpKQorCisvKiBJdGVyYXRvciBvdmVyIHN1YnNl dCBvZiBlbmdpbmVzIHNlbGVjdGVkIGJ5IG1hc2sgKi8KICNkZWZpbmUgZm9yX2VhY2hfZW5naW5l X21hc2tlZChlbmdpbmVfXywgZGV2X3ByaXZfXywgbWFza19fKSBcCiAJZm9yICgoZW5naW5lX18p ID0gJmRldl9wcml2LT5lbmdpbmVbMF07IChlbmdpbmVfXykgPCAmZGV2X3ByaXYtPmVuZ2luZVtJ OTE1X05VTV9FTkdJTkVTXTsgKGVuZ2luZV9fKSsrKSBcCiAJCWZvcl9lYWNoX2lmIChpbnRlbF9l bmdpbmVfZmxhZygoZW5naW5lX18pKSAmIChtYXNrX18pICYmIGludGVsX2VuZ2luZV9pbml0aWFs aXplZCgoZW5naW5lX18pKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4 IDFmOGZmMDYuLjU0YzIwODYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpA QCAtODQ2LDcgKzg0Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfcmVjb3JkX3NlbWFwaG9yZV9zdGF0 ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJCXN0cnVjdCBkcm1faTkx NV9lcnJvcl9yaW5nICplcmluZykKIHsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICp0bzsKLQlp bnQgaTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKIAogCWlmICghaTkxNV9zZW1hcGhvcmVf aXNfZW5hYmxlZChkZXZfcHJpdi0+ZGV2KSkKIAkJcmV0dXJuOwpAQCAtODU2LDcgKzg1Niw3IEBA IHN0YXRpYyB2b2lkIGdlbjhfcmVjb3JkX3NlbWFwaG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlpOTE1X2Vycm9yX2dndHRfb2JqZWN0X2NyZWF0ZShkZXZf cHJpdiwKIAkJCQkJCSAgICAgIGRldl9wcml2LT5zZW1hcGhvcmVfb2JqKTsKIAotCWZvcl9lYWNo X2VuZ2luZSh0bywgZGV2X3ByaXYsIGkpIHsKKwlmb3JfZWFjaF9lbmdpbmVfaWQodG8sIGRldl9w cml2LCBpZCkgewogCQlpbnQgaWR4OwogCQl1MTYgc2lnbmFsX29mZnNldDsKIAkJdTMyICp0bXA7 CkBAIC04NjQsNyArODY0LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9yZWNvcmRfc2VtYXBob3JlX3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJaWYgKGVuZ2luZSA9PSB0 bykKIAkJCWNvbnRpbnVlOwogCi0JCXNpZ25hbF9vZmZzZXQgPSAoR0VOOF9TSUdOQUxfT0ZGU0VU KGVuZ2luZSwgaSkgJiAoUEFHRV9TSVpFIC0gMSkpCisJCXNpZ25hbF9vZmZzZXQgPSAoR0VOOF9T SUdOQUxfT0ZGU0VUKGVuZ2luZSwgaWQpICYgKFBBR0VfU0laRSAtIDEpKQogCQkJCS8gNDsKIAkJ dG1wID0gZXJyb3ItPnNlbWFwaG9yZV9vYmotPnBhZ2VzWzBdOwogCQlpZHggPSBpbnRlbF9yaW5n X3N5bmNfaW5kZXgoZW5naW5lLCB0byk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19z dWJtaXNzaW9uLmMKaW5kZXggYWUxZjU4ZC4uMDYxMWJkYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwpAQCAtMzgxLDcgKzM4MSw3IEBAIHN0YXRpYyB2b2lk IGd1Y19pbml0X2N0eF9kZXNjKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywKIAlzdHJ1Y3QgaW50ZWxf Y29udGV4dCAqY3R4ID0gY2xpZW50LT5vd25lcjsKIAlzdHJ1Y3QgZ3VjX2NvbnRleHRfZGVzYyBk ZXNjOwogCXN0cnVjdCBzZ190YWJsZSAqc2c7Ci0JaW50IGk7CisJZW51bSBpbnRlbF9lbmdpbmVf aWQgaWQ7CiAKIAltZW1zZXQoJmRlc2MsIDAsIHNpemVvZihkZXNjKSk7CiAKQEAgLTM5MCw3ICsz OTAsNyBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsCiAJZGVzYy5wcmlvcml0eSA9IGNsaWVudC0+cHJpb3JpdHk7CiAJZGVzYy5kYl9pZCA9IGNs aWVudC0+ZG9vcmJlbGxfaWQ7CiAKLQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwg aSkgeworCWZvcl9lYWNoX2VuZ2luZV9pZChlbmdpbmUsIGRldl9wcml2LCBpZCkgewogCQlzdHJ1 Y3QgZ3VjX2V4ZWNsaXN0X2NvbnRleHQgKmxyYyA9ICZkZXNjLmxyY1tlbmdpbmUtPmd1Y19pZF07 CiAJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CiAJCXVpbnQ2NF90IGN0eF9kZXNj OwpAQCAtNDAyLDcgKzQwMiw3IEBAIHN0YXRpYyB2b2lkIGd1Y19pbml0X2N0eF9kZXNjKHN0cnVj dCBpbnRlbF9ndWMgKmd1YywKIAkJICogZm9yIG5vdyB3aG8gb3ducyBhIEd1QyBjbGllbnQuIEJ1 dCBmb3IgZnV0dXJlIG93bmVyIG9mIEd1QwogCQkgKiBjbGllbnQsIG5lZWQgdG8gbWFrZSBzdXJl IGxyYyBpcyBwaW5uZWQgcHJpb3IgdG8gZW50ZXIgaGVyZS4KIAkJICovCi0JCW9iaiA9IGN0eC0+ ZW5naW5lW2ldLnN0YXRlOworCQlvYmogPSBjdHgtPmVuZ2luZVtpZF0uc3RhdGU7CiAJCWlmICgh b2JqKQogCQkJYnJlYWs7CS8qIFhYWDogY29udGludWU/ICovCiAKQEAgLTQxNSw3ICs0MTUsNyBA QCBzdGF0aWMgdm9pZCBndWNfaW5pdF9jdHhfZGVzYyhzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsCiAJ CWxyYy0+Y29udGV4dF9pZCA9IChjbGllbnQtPmN0eF9pbmRleCA8PCBHVUNfRUxDX0NUWElEX09G RlNFVCkgfAogCQkJCShlbmdpbmUtPmd1Y19pZCA8PCBHVUNfRUxDX0VOR0lORV9PRkZTRVQpOwog Ci0JCW9iaiA9IGN0eC0+ZW5naW5lW2ldLnJpbmdidWYtPm9iajsKKwkJb2JqID0gY3R4LT5lbmdp bmVbaWRdLnJpbmdidWYtPm9iajsKIAogCQlscmMtPnJpbmdfYmVnaW4gPSBpOTE1X2dlbV9vYmpf Z2d0dF9vZmZzZXQob2JqKTsKIAkJbHJjLT5yaW5nX2VuZCA9IGxyYy0+cmluZ19iZWdpbiArIG9i ai0+YmFzZS5zaXplIC0gMTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf aXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IGE1NWE3Y2MuLjE0 YTIzYjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYwpAQCAtMzA3Myw3ICszMDczLDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmsp CiAJCQkgICAgIGdwdV9lcnJvci5oYW5nY2hlY2tfd29yay53b3JrKTsKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gZGV2X3ByaXYtPmRldjsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmU7Ci0JaW50IGk7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJaW50IGJ1c3lfY291bnQg PSAwLCByaW5nc19odW5nID0gMDsKIAlib29sIHN0dWNrW0k5MTVfTlVNX0VOR0lORVNdID0geyAw IH07CiAjZGVmaW5lIEJVU1kgMQpAQCAtMzA5Nyw3ICszMDk3LDcgQEAgc3RhdGljIHZvaWQgaTkx NV9oYW5nY2hlY2tfZWxhcHNlZChzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCiAJICovCiAJaW50 ZWxfdW5jb3JlX2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oZGV2X3ByaXYpOwogCi0JZm9y X2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGkpIHsKKwlmb3JfZWFjaF9lbmdpbmVfaWQo ZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKIAkJdTY0IGFjdGhkOwogCQl1MzIgc2Vxbm87CiAJCWJv b2wgYnVzeSA9IHRydWU7CkBAIC0zMTU3LDcgKzMxNTcsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2hh bmdjaGVja19lbGFwc2VkKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAkJCQkJYnJlYWs7CiAJ CQkJY2FzZSBIQU5HQ0hFQ0tfSFVORzoKIAkJCQkJZW5naW5lLT5oYW5nY2hlY2suc2NvcmUgKz0g SFVORzsKLQkJCQkJc3R1Y2tbaV0gPSB0cnVlOworCQkJCQlzdHVja1tpZF0gPSB0cnVlOwogCQkJ CQlicmVhazsKIAkJCQl9CiAJCQl9CkBAIC0zMTg0LDEwICszMTg0LDEwIEBAIHN0YXRpYyB2b2lk IGk5MTVfaGFuZ2NoZWNrX2VsYXBzZWQoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCQlidXN5 X2NvdW50ICs9IGJ1c3k7CiAJfQogCi0JZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYs IGkpIHsKKwlmb3JfZWFjaF9lbmdpbmVfaWQoZW5naW5lLCBkZXZfcHJpdiwgaWQpIHsKIAkJaWYg KGVuZ2luZS0+aGFuZ2NoZWNrLnNjb3JlID49IEhBTkdDSEVDS19TQ09SRV9SSU5HX0hVTkcpIHsK IAkJCURSTV9JTkZPKCIlcyBvbiAlc1xuIiwKLQkJCQkgc3R1Y2tbaV0gPyAic3R1Y2siIDogIm5v IHByb2dyZXNzIiwKKwkJCQkgc3R1Y2tbaWRdID8gInN0dWNrIiA6ICJubyBwcm9ncmVzcyIsCiAJ CQkJIGVuZ2luZS0+bmFtZSk7CiAJCQlyaW5nc19odW5nIHw9IGludGVsX2VuZ2luZV9mbGFnKGVu Z2luZSk7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3MuYwppbmRleCAzYzcyNWRkLi43Yzdh YzBhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9tb2NzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCkBAIC0zMjUsMTEgKzMyNSwxMSBAQCBp bnQgaW50ZWxfcmNzX2NvbnRleHRfaW5pdF9tb2NzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcmVxKQogCWlmIChnZXRfbW9jc19zZXR0aW5ncyhyZXEtPmVuZ2luZS0+ZGV2LCAmdCkpIHsK IAkJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxLT5pOTE1OwogCQlzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Ci0JCWVudW0gaW50ZWxfZW5naW5lX2lkIHJpbmdf aWQ7CisJCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCiAJCS8qIFByb2dyYW0gdGhlIGNvbnRy b2wgcmVnaXN0ZXJzICovCi0JCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9wcml2LCByaW5n X2lkKSB7Ci0JCQlyZXQgPSBlbWl0X21vY3NfY29udHJvbF90YWJsZShyZXEsICZ0LCByaW5nX2lk KTsKKwkJZm9yX2VhY2hfZW5naW5lX2lkKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7CisJCQlyZXQg PSBlbWl0X21vY3NfY29udHJvbF90YWJsZShyZXEsICZ0LCBpZCk7CiAJCQlpZiAocmV0KQogCQkJ CXJldHVybiByZXQ7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpp bmRleCBjZTU5ODUwLi5hNDkyYmNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCkBAIC0xMjgwLDcgKzEyODAsOCBAQCBzdGF0aWMgaW50IGdlbjhfcmNzX3NpZ25hbChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqd2Fp dGVyOwotCWludCBpLCByZXQsIG51bV9yaW5nczsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsK KwlpbnQgcmV0LCBudW1fcmluZ3M7CiAKIAludW1fcmluZ3MgPSBod2VpZ2h0MzIoSU5URUxfSU5G TyhkZXYpLT5yaW5nX21hc2spOwogCW51bV9kd29yZHMgKz0gKG51bV9yaW5ncy0xKSAqIE1CT1hf VVBEQVRFX0RXT1JEUzsKQEAgLTEyOTAsOSArMTI5MSw5IEBAIHN0YXRpYyBpbnQgZ2VuOF9yY3Nf c2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwKIAlpZiAo cmV0KQogCQlyZXR1cm4gcmV0OwogCi0JZm9yX2VhY2hfZW5naW5lKHdhaXRlciwgZGV2X3ByaXYs IGkpIHsKKwlmb3JfZWFjaF9lbmdpbmVfaWQod2FpdGVyLCBkZXZfcHJpdiwgaWQpIHsKIAkJdTMy IHNlcW5vOwotCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxlci0+c2VtYXBob3JlLnNpZ25hbF9n Z3R0W2ldOworCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxlci0+c2VtYXBob3JlLnNpZ25hbF9n Z3R0W2lkXTsKIAkJaWYgKGd0dF9vZmZzZXQgPT0gTUlfU0VNQVBIT1JFX1NZTkNfSU5WQUxJRCkK IAkJCWNvbnRpbnVlOwogCkBAIC0xMzIxLDcgKzEzMjIsOCBAQCBzdGF0aWMgaW50IGdlbjhfeGNz X3NpZ25hbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IHNpZ25hbGxlci0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqd2FpdGVyOwotCWludCBpLCByZXQsIG51bV9yaW5nczsKKwllbnVtIGludGVsX2VuZ2lu ZV9pZCBpZDsKKwlpbnQgcmV0LCBudW1fcmluZ3M7CiAKIAludW1fcmluZ3MgPSBod2VpZ2h0MzIo SU5URUxfSU5GTyhkZXYpLT5yaW5nX21hc2spOwogCW51bV9kd29yZHMgKz0gKG51bV9yaW5ncy0x KSAqIE1CT1hfVVBEQVRFX0RXT1JEUzsKQEAgLTEzMzEsOSArMTMzMyw5IEBAIHN0YXRpYyBpbnQg Z2VuOF94Y3Nfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3Jl cSwKIAlpZiAocmV0KQogCQlyZXR1cm4gcmV0OwogCi0JZm9yX2VhY2hfZW5naW5lKHdhaXRlciwg ZGV2X3ByaXYsIGkpIHsKKwlmb3JfZWFjaF9lbmdpbmVfaWQod2FpdGVyLCBkZXZfcHJpdiwgaWQp IHsKIAkJdTMyIHNlcW5vOwotCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxlci0+c2VtYXBob3Jl LnNpZ25hbF9nZ3R0W2ldOworCQl1NjQgZ3R0X29mZnNldCA9IHNpZ25hbGxlci0+c2VtYXBob3Jl LnNpZ25hbF9nZ3R0W2lkXTsKIAkJaWYgKGd0dF9vZmZzZXQgPT0gTUlfU0VNQVBIT1JFX1NZTkNf SU5WQUxJRCkKIAkJCWNvbnRpbnVlOwogCkBAIC0xMzU5LDcgKzEzNjEsOCBAQCBzdGF0aWMgaW50 IGdlbjZfc2lnbmFsKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqc2lnbmFsbGVyX3JlcSwK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gc2lnbmFsbGVyLT5kZXY7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICp1c2VsZXNzOwotCWludCBpLCByZXQsIG51bV9yaW5nczsKKwllbnVtIGludGVs X2VuZ2luZV9pZCBpZDsKKwlpbnQgcmV0LCBudW1fcmluZ3M7CiAKICNkZWZpbmUgTUJPWF9VUERB VEVfRFdPUkRTIDMKIAludW1fcmluZ3MgPSBod2VpZ2h0MzIoSU5URUxfSU5GTyhkZXYpLT5yaW5n X21hc2spOwpAQCAtMTM3MCw4ICsxMzczLDggQEAgc3RhdGljIGludCBnZW42X3NpZ25hbChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnNpZ25hbGxlcl9yZXEsCiAJaWYgKHJldCkKIAkJcmV0 dXJuIHJldDsKIAotCWZvcl9lYWNoX2VuZ2luZSh1c2VsZXNzLCBkZXZfcHJpdiwgaSkgewotCQlp OTE1X3JlZ190IG1ib3hfcmVnID0gc2lnbmFsbGVyLT5zZW1hcGhvcmUubWJveC5zaWduYWxbaV07 CisJZm9yX2VhY2hfZW5naW5lX2lkKHVzZWxlc3MsIGRldl9wcml2LCBpZCkgeworCQlpOTE1X3Jl Z190IG1ib3hfcmVnID0gc2lnbmFsbGVyLT5zZW1hcGhvcmUubWJveC5zaWduYWxbaWRdOwogCiAJ CWlmIChpOTE1X21taW9fcmVnX3ZhbGlkKG1ib3hfcmVnKSkgewogCQkJdTMyIHNlcW5vID0gaTkx NV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8oc2lnbmFsbGVyX3JlcSk7Ci0tIAoxLjkuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==