From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 8/9] drm: Reduce the amount of dev->vblank[crtc] in the code Date: Mon, 26 May 2014 14:46:31 +0300 Message-ID: <1401104792-26560-9-git-send-email-ville.syrjala@linux.intel.com> References: <1401104792-26560-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1401104792-26560-1-git-send-email-ville.syrjala@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: intel-gfx@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkRl Y2xhcmUgYSBsb2NhbCBzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICogYW5kIHVzZSB0aGF0Cmluc3Rl YWQgb2YgaGF2aW5nIHRvIGRvIGRpZyBpdCBvdXQgdmlhICdkZXYtPnZibGFua1tjcnRjXScKZXZl cnl3aGVyZS4KClBlcmZvcm1lZCB3aXRoIHRoZSBmb2xsb3dpbmcgY29jY2luZWxsZSBpbmNhbnRh dGlvbiwKYW5kIGEgZmV3IG1hbnVhbCB3aGl0ZXNwYWNlIGNsZWFudXBzOgoKQEAKaWRlbnRpZmll ciBmdW5jLG1lbWJlcjsKZXhwcmVzc2lvbiBudW1fY3J0Y3M7CnN0cnVjdCBkcm1fZGV2aWNlICpk ZXY7CnVuc2lnbmVkIGludCBjcnRjOwpAQApmdW5jICguLi4pIHsKKyBzdHJ1Y3QgZHJtX3ZibGFu a19jcnRjICp2Ymxhbms7Ci4uLgppZiAoY3J0YyA+PSBudW1fY3J0Y3MpCiAgIHJldHVybiAuLi47 CisgdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOwo8Ky4uLgooCi0gZGV2LT52YmxhbmtbY3J0 Y10ubWVtYmVyCisgdmJsYW5rLT5tZW1iZXIKfAotICYoZGV2LT52YmxhbmtbY3J0Y10pCisgdmJs YW5rCikKLi4uKz4KfQoKQEAKc3RydWN0IGRybV9kZXZpY2UgKmRldjsKaW50IGNydGM7CmlkZW50 aWZpZXIgbWVtYmVyOwpleHByZXNzaW9uIG51bV9jcnRjczsKQEAKZm9yIChjcnRjID0gMDsgY3J0 YyA8IG51bV9jcnRjczsgY3J0YysrKSB7Cisgc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5r ID0gJmRldi0+dmJsYW5rW2NydGNdOworCjwrLi4uCigKLSBkZXYtPnZibGFua1tjcnRjXS5tZW1i ZXIKKyB2YmxhbmstPm1lbWJlcgp8Ci0gJihkZXYtPnZibGFua1tjcnRjXSkKKyB2YmxhbmsKKQou Li4rPgp9CgpAQAppZGVudGlmaWVyIGZ1bmMsbWVtYmVyOwpAQApmdW5jIChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBpbnQgY3J0YywgLi4uKSB7Cisgc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJs YW5rID0gJmRldi0+dmJsYW5rW2NydGNdOwo8Ky4uLgooCi0gZGV2LT52YmxhbmtbY3J0Y10ubWVt YmVyCisgdmJsYW5rLT5tZW1iZXIKfAotICYoZGV2LT52YmxhbmtbY3J0Y10pCisgdmJsYW5rCikK Li4uKz4KfQoKU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxp bnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jIHwgMTM2ICsrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA4MCBpbnNlcnRpb25zKCspLCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vZHJtX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwppbmRleCA1NGE1 NmIyLi4yMGE0ODU1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKQEAgLTczLDYgKzczLDcgQEAKICAqLwogc3RhdGlj IHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 IGNydGMpCiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5r W2NydGNdOwogCXUzMiBjdXJfdmJsYW5rLCBkaWZmLCB0c2xvdCwgcmM7CiAJc3RydWN0IHRpbWV2 YWwgdF92Ymxhbms7CiAKQEAgLTk0LDEyICs5NSwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fdXBkYXRl X3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAl9IHdoaWxl IChjdXJfdmJsYW5rICE9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRj KSk7CiAKIAkvKiBEZWFsIHdpdGggY291bnRlciB3cmFwICovCi0JZGlmZiA9IGN1cl92Ymxhbmsg LSBkZXYtPnZibGFua1tjcnRjXS5sYXN0OwotCWlmIChjdXJfdmJsYW5rIDwgZGV2LT52Ymxhbmtb Y3J0Y10ubGFzdCkgeworCWRpZmYgPSBjdXJfdmJsYW5rIC0gdmJsYW5rLT5sYXN0OworCWlmIChj dXJfdmJsYW5rIDwgdmJsYW5rLT5sYXN0KSB7CiAJCWRpZmYgKz0gZGV2LT5tYXhfdmJsYW5rX2Nv dW50OwogCiAJCURSTV9ERUJVRygibGFzdF92YmxhbmtbJWRdPTB4JXgsIGN1cl92Ymxhbms9MHgl eCA9PiBkaWZmPTB4JXhcbiIsCi0JCQkgIGNydGMsIGRldi0+dmJsYW5rW2NydGNdLmxhc3QsIGN1 cl92YmxhbmssIGRpZmYpOworCQkJICBjcnRjLCB2YmxhbmstPmxhc3QsIGN1cl92YmxhbmssIGRp ZmYpOwogCX0KIAogCURSTV9ERUJVRygiZW5hYmxpbmcgdmJsYW5rIGludGVycnVwdHMgb24gY3J0 YyAlZCwgbWlzc2VkICVkXG4iLApAQCAtMTEwLDEyICsxMTEsMTIgQEAgc3RhdGljIHZvaWQgZHJt X3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJ ICogcmVpbml0aWFsaXplIGRlbGF5ZWQgYXQgbmV4dCB2YmxhbmsgaW50ZXJydXB0IGluIHRoYXQg Y2FzZS4KIAkgKi8KIAlpZiAocmMpIHsKLQkJdHNsb3QgPSBhdG9taWNfcmVhZCgmZGV2LT52Ymxh bmtbY3J0Y10uY291bnQpICsgZGlmZjsKKwkJdHNsb3QgPSBhdG9taWNfcmVhZCgmdmJsYW5rLT5j b3VudCkgKyBkaWZmOwogCQl2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB0c2xvdCkgPSB0X3Zi bGFuazsKIAl9CiAKIAlzbXBfbWJfX2JlZm9yZV9hdG9taWNfaW5jKCk7Ci0JYXRvbWljX2FkZChk aWZmLCAmZGV2LT52YmxhbmtbY3J0Y10uY291bnQpOworCWF0b21pY19hZGQoZGlmZiwgJnZibGFu ay0+Y291bnQpOwogCXNtcF9tYl9fYWZ0ZXJfYXRvbWljX2luYygpOwogfQogCkBAIC0xMjcsNiAr MTI4LDcgQEAgc3RhdGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgaW50IGNydGMpCiAgKi8KIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2Fu ZF9zYXZlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogeworCXN0cnVjdCBkcm1f dmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKIAl1bnNpZ25lZCBsb25n IGlycWZsYWdzOwogCXUzMiB2Ymxjb3VudDsKIAlzNjQgZGlmZl9uczsKQEAgLTE0NywxNCArMTQ5 LDE0IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBjcnRjKQogCSAqIGNvdW50IGFjY291bnQgZm9yIHRoZSBlbnRpcmUgdGlt ZSBiZXR3ZWVuIGRybV92Ymxhbmtfb24oKSBhbmQKIAkgKiBkcm1fdmJsYW5rX29mZigpLgogCSAq LwotCWlmICghZGV2LT52YmxhbmtbY3J0Y10uZW5hYmxlZCkgeworCWlmICghdmJsYW5rLT5lbmFi bGVkKSB7CiAJCWRybV91cGRhdGVfdmJsYW5rX2NvdW50KGRldiwgY3J0Yyk7CiAJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRldi0+dmJsYW5rX3RpbWVfbG9jaywgaXJxZmxhZ3MpOwogCQlyZXR1 cm47CiAJfQogCiAJZGV2LT5kcml2ZXItPmRpc2FibGVfdmJsYW5rKGRldiwgY3J0Yyk7Ci0JZGV2 LT52YmxhbmtbY3J0Y10uZW5hYmxlZCA9IGZhbHNlOworCXZibGFuay0+ZW5hYmxlZCA9IGZhbHNl OwogCiAJLyogTm8gZnVydGhlciB2YmxhbmsgaXJxJ3Mgd2lsbCBiZSBwcm9jZXNzZWQgYWZ0ZXIK IAkgKiB0aGlzIHBvaW50LiBHZXQgY3VycmVudCBoYXJkd2FyZSB2YmxhbmsgY291bnQgYW5kCkBA IC0xNjksOSArMTcxLDkgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJICogZGVsYXllZCBncHUgY291bnRlciBp bmNyZW1lbnQuCiAJICovCiAJZG8gewotCQlkZXYtPnZibGFua1tjcnRjXS5sYXN0ID0gZGV2LT5k cml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIGNydGMpOworCQl2YmxhbmstPmxhc3QgPSBk ZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0Yyk7CiAJCXZibHJjID0gZHJt X2dldF9sYXN0X3ZibHRpbWVzdGFtcChkZXYsIGNydGMsICZ0dmJsYW5rLCAwKTsKLQl9IHdoaWxl IChkZXYtPnZibGFua1tjcnRjXS5sYXN0ICE9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50 ZXIoZGV2LCBjcnRjKSAmJiAoLS1jb3VudCkgJiYgdmJscmMpOworCX0gd2hpbGUgKHZibGFuay0+ bGFzdCAhPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0YykgJiYgKC0t Y291bnQpICYmIHZibHJjKTsKIAogCWlmICghY291bnQpCiAJCXZibHJjID0gMDsKQEAgLTE3OSw3 ICsxODEsNyBAQCBzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAkvKiBDb21wdXRlIHRpbWUgZGlmZmVyZW5jZSB0byBz dG9yZWQgdGltZXN0YW1wIG9mIGxhc3QgdmJsYW5rCiAJICogYXMgdXBkYXRlZCBieSBsYXN0IGlu dm9jYXRpb24gb2YgZHJtX2hhbmRsZV92YmxhbmsoKSBpbiB2YmxhbmsgaXJxLgogCSAqLwotCXZi bGNvdW50ID0gYXRvbWljX3JlYWQoJmRldi0+dmJsYW5rW2NydGNdLmNvdW50KTsKKwl2Ymxjb3Vu dCA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KTsKIAlkaWZmX25zID0gdGltZXZhbF90b19u cygmdHZibGFuaykgLQogCQkgIHRpbWV2YWxfdG9fbnMoJnZibGFua3RpbWVzdGFtcChkZXYsIGNy dGMsIHZibGNvdW50KSk7CiAKQEAgLTE5Niw3ICsxOTgsNyBAQCBzdGF0aWMgdm9pZCB2Ymxhbmtf ZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAkgKiBo b3BlIGZvciB0aGUgYmVzdC4KIAkgKi8KIAlpZiAoKHZibHJjID4gMCkgJiYgKGFiczY0KGRpZmZf bnMpID4gMTAwMDAwMCkpIHsKLQkJYXRvbWljX2luYygmZGV2LT52YmxhbmtbY3J0Y10uY291bnQp OworCQlhdG9taWNfaW5jKCZ2YmxhbmstPmNvdW50KTsKIAkJc21wX21iX19hZnRlcl9hdG9taWNf aW5jKCk7CiAJfQogCkBAIC0yMzYsOCArMjM4LDEwIEBAIHZvaWQgZHJtX3ZibGFua19jbGVhbnVw KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJCXJldHVybjsKIAogCWZvciAoY3J0YyA9IDA7IGNy dGMgPCBkZXYtPm51bV9jcnRjczsgY3J0YysrKSB7Ci0JCWRlbF90aW1lcl9zeW5jKCZkZXYtPnZi bGFua1tjcnRjXS5kaXNhYmxlX3RpbWVyKTsKLQkJdmJsYW5rX2Rpc2FibGVfZm4oKHVuc2lnbmVk IGxvbmcpJmRldi0+dmJsYW5rW2NydGNdKTsKKwkJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJs YW5rID0gJmRldi0+dmJsYW5rW2NydGNdOworCisJCWRlbF90aW1lcl9zeW5jKCZ2YmxhbmstPmRp c2FibGVfdGltZXIpOworCQl2YmxhbmtfZGlzYWJsZV9mbigodW5zaWduZWQgbG9uZyl2Ymxhbmsp OwogCX0KIAogCWtmcmVlKGRldi0+dmJsYW5rKTsKQEAgLTI3MCwxMSArMjc0LDEzIEBAIGludCBk cm1fdmJsYW5rX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG51bV9jcnRjcykKIAkJ Z290byBlcnI7CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2NydGNzOyBpKyspIHsKLQkJZGV2LT52 YmxhbmtbaV0uZGV2ID0gZGV2OwotCQlkZXYtPnZibGFua1tpXS5jcnRjID0gaTsKLQkJaW5pdF93 YWl0cXVldWVfaGVhZCgmZGV2LT52YmxhbmtbaV0ucXVldWUpOwotCQlzZXR1cF90aW1lcigmZGV2 LT52YmxhbmtbaV0uZGlzYWJsZV90aW1lciwgdmJsYW5rX2Rpc2FibGVfZm4sCi0JCQkgICAgKHVu c2lnbmVkIGxvbmcpJmRldi0+dmJsYW5rW2ldKTsKKwkJc3RydWN0IGRybV92YmxhbmtfY3J0YyAq dmJsYW5rID0gJmRldi0+dmJsYW5rW2ldOworCisJCXZibGFuay0+ZGV2ID0gZGV2OworCQl2Ymxh bmstPmNydGMgPSBpOworCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ2YmxhbmstPnF1ZXVlKTsKKwkJ c2V0dXBfdGltZXIoJnZibGFuay0+ZGlzYWJsZV90aW1lciwgdmJsYW5rX2Rpc2FibGVfZm4sCisJ CQkgICAgKHVuc2lnbmVkIGxvbmcpdmJsYW5rKTsKIAl9CiAKIAlEUk1fSU5GTygiU3VwcG9ydHMg dmJsYW5rIHRpbWVzdGFtcCBjYWNoaW5nIFJldiAyICgyMS4xMC4yMDEzKS5cbiIpOwpAQCAtNDI2 LDkgKzQzMiwxMSBAQCBpbnQgZHJtX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAlpZiAoZGV2LT5udW1fY3J0Y3MpIHsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJs X2xvY2ssIGlycWZsYWdzKTsKIAkJZm9yIChpID0gMDsgaSA8IGRldi0+bnVtX2NydGNzOyBpKysp IHsKLQkJCXdha2VfdXAoJmRldi0+dmJsYW5rW2ldLnF1ZXVlKTsKLQkJCWRldi0+dmJsYW5rW2ld LmVuYWJsZWQgPSBmYWxzZTsKLQkJCWRldi0+dmJsYW5rW2ldLmxhc3QgPQorCQkJc3RydWN0IGRy bV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2ldOworCisJCQl3YWtlX3VwKCZ2 YmxhbmstPnF1ZXVlKTsKKwkJCXZibGFuay0+ZW5hYmxlZCA9IGZhbHNlOworCQkJdmJsYW5rLT5s YXN0ID0KIAkJCQlkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgaSk7CiAJCX0K IAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOwpAQCAt Nzk2LDcgKzgwNCw5IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcCk7 CiAgKi8KIHUzMiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBj cnRjKQogewotCXJldHVybiBhdG9taWNfcmVhZCgmZGV2LT52YmxhbmtbY3J0Y10uY291bnQpOwor CXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKKwor CXJldHVybiBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7CiB9CiBFWFBPUlRfU1lNQk9MKGRy bV92YmxhbmtfY291bnQpOwogCkBAIC04MTYsNiArODI2LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1f dmJsYW5rX2NvdW50KTsKIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIGludCBjcnRjLAogCQkJICAgICAgc3RydWN0IHRpbWV2YWwgKnZibGFua3Rp bWUpCiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2Ny dGNdOwogCXUzMiBjdXJfdmJsYW5rOwogCiAJLyogUmVhZCB0aW1lc3RhbXAgZnJvbSBzbG90IG9m IF92YmxhbmtfdGltZSByaW5nYnVmZmVyCkBAIC04MjQsMTAgKzgzNSwxMCBAQCB1MzIgZHJtX3Zi bGFua19jb3VudF9hbmRfdGltZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKIAkg KiBhIHNlcWxvY2suCiAJICovCiAJZG8gewotCQljdXJfdmJsYW5rID0gYXRvbWljX3JlYWQoJmRl di0+dmJsYW5rW2NydGNdLmNvdW50KTsKKwkJY3VyX3ZibGFuayA9IGF0b21pY19yZWFkKCZ2Ymxh bmstPmNvdW50KTsKIAkJKnZibGFua3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCBj dXJfdmJsYW5rKTsKIAkJc21wX3JtYigpOwotCX0gd2hpbGUgKGN1cl92YmxhbmsgIT0gYXRvbWlj X3JlYWQoJmRldi0+dmJsYW5rW2NydGNdLmNvdW50KSk7CisJfSB3aGlsZSAoY3VyX3ZibGFuayAh PSBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCkpOwogCiAJcmV0dXJuIGN1cl92Ymxhbms7CiB9 CkBAIC04ODIsMTMgKzg5MywxNCBAQCBFWFBPUlRfU1lNQk9MKGRybV9zZW5kX3ZibGFua19ldmVu dCk7CiAgKi8KIHN0YXRpYyBpbnQgZHJtX3ZibGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgaW50IGNydGMpCiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRl di0+dmJsYW5rW2NydGNdOwogCWludCByZXQgPSAwOwogCiAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZk ZXYtPnZibF9sb2NrKTsKIAogCXNwaW5fbG9jaygmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKIAot CWlmICghZGV2LT52YmxhbmtbY3J0Y10uZW5hYmxlZCkgeworCWlmICghdmJsYW5rLT5lbmFibGVk KSB7CiAJCS8qCiAJCSAqIEVuYWJsZSB2YmxhbmsgaXJxcyB1bmRlciB2YmxhbmtfdGltZV9sb2Nr IHByb3RlY3Rpb24uCiAJCSAqIEFsbCB2YmxhbmsgY291bnQgJiB0aW1lc3RhbXAgdXBkYXRlcyBh cmUgaGVsZCBvZmYKQEAgLTg5OSw5ICs5MTEsOSBAQCBzdGF0aWMgaW50IGRybV92YmxhbmtfZW5h YmxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCQlyZXQgPSBkZXYtPmRyaXZl ci0+ZW5hYmxlX3ZibGFuayhkZXYsIGNydGMpOwogCQlEUk1fREVCVUcoImVuYWJsaW5nIHZibGFu ayBvbiBjcnRjICVkLCByZXQ6ICVkXG4iLCBjcnRjLCByZXQpOwogCQlpZiAocmV0KQotCQkJYXRv bWljX2RlYygmZGV2LT52YmxhbmtbY3J0Y10ucmVmY291bnQpOworCQkJYXRvbWljX2RlYygmdmJs YW5rLT5yZWZjb3VudCk7CiAJCWVsc2UgewotCQkJZGV2LT52YmxhbmtbY3J0Y10uZW5hYmxlZCA9 IHRydWU7CisJCQl2YmxhbmstPmVuYWJsZWQgPSB0cnVlOwogCQkJZHJtX3VwZGF0ZV92Ymxhbmtf Y291bnQoZGV2LCBjcnRjKTsKIAkJfQogCX0KQEAgLTkyNiwxNiArOTM4LDE3IEBAIHN0YXRpYyBp bnQgZHJtX3ZibGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAg Ki8KIGludCBkcm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykK IHsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107 CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAlpbnQgcmV0ID0gMDsKIAogCXNwaW5fbG9ja19p cnFzYXZlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CiAJLyogR29pbmcgZnJvbSAwLT4xIG1l YW5zIHdlIGhhdmUgdG8gZW5hYmxlIGludGVycnVwdHMgYWdhaW4gKi8KLQlpZiAoYXRvbWljX2Fk ZF9yZXR1cm4oMSwgJmRldi0+dmJsYW5rW2NydGNdLnJlZmNvdW50KSA9PSAxKSB7CisJaWYgKGF0 b21pY19hZGRfcmV0dXJuKDEsICZ2YmxhbmstPnJlZmNvdW50KSA9PSAxKSB7CiAJCXJldCA9IGRy bV92YmxhbmtfZW5hYmxlKGRldiwgY3J0Yyk7CiAJfSBlbHNlIHsKLQkJaWYgKCFkZXYtPnZibGFu a1tjcnRjXS5lbmFibGVkKSB7Ci0JCQlhdG9taWNfZGVjKCZkZXYtPnZibGFua1tjcnRjXS5yZWZj b3VudCk7CisJCWlmICghdmJsYW5rLT5lbmFibGVkKSB7CisJCQlhdG9taWNfZGVjKCZ2Ymxhbmst PnJlZmNvdW50KTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCX0KIAl9CkBAIC05NzUsMTUgKzk4OCwx NyBAQCBFWFBPUlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19nZXQpOwogICovCiB2b2lkIGRybV92 YmxhbmtfcHV0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogewotCUJVR19PTihh dG9taWNfcmVhZCgmZGV2LT52YmxhbmtbY3J0Y10ucmVmY291bnQpID09IDApOworCXN0cnVjdCBk cm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKKworCUJVR19PTihh dG9taWNfcmVhZCgmdmJsYW5rLT5yZWZjb3VudCkgPT0gMCk7CiAKIAkvKiBMYXN0IHVzZXIgc2No ZWR1bGVzIGludGVycnVwdCBkaXNhYmxlICovCi0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmRl di0+dmJsYW5rW2NydGNdLnJlZmNvdW50KSkgeworCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZ2 YmxhbmstPnJlZmNvdW50KSkgewogCQlpZiAoZHJtX3ZibGFua19vZmZkZWxheSA+IDApCi0JCQlt b2RfdGltZXIoJmRldi0+dmJsYW5rW2NydGNdLmRpc2FibGVfdGltZXIsCisJCQltb2RfdGltZXIo JnZibGFuay0+ZGlzYWJsZV90aW1lciwKIAkJCQkgIGppZmZpZXMgKyAoKGRybV92Ymxhbmtfb2Zm ZGVsYXkgKiBIWikvMTAwMCkpOwogCQllbHNlIGlmIChkcm1fdmJsYW5rX29mZmRlbGF5ID09IDAp Ci0JCQl2YmxhbmtfZGlzYWJsZV9mbigodW5zaWduZWQgbG9uZykmZGV2LT52YmxhbmtbY3J0Y10p OworCQkJdmJsYW5rX2Rpc2FibGVfZm4oKHVuc2lnbmVkIGxvbmcpdmJsYW5rKTsKIAl9CiB9CiBF WFBPUlRfU1lNQk9MKGRybV92YmxhbmtfcHV0KTsKQEAgLTEwMTksNiArMTAzNCw3IEBAIEVYUE9S VF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX3B1dCk7CiAgKi8KIHZvaWQgZHJtX3ZibGFua19vZmYo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiB7CisJc3RydWN0IGRybV92Ymxhbmtf Y3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOwogCXN0cnVjdCBkcm1fcGVuZGluZ192 YmxhbmtfZXZlbnQgKmUsICp0OwogCXN0cnVjdCB0aW1ldmFsIG5vdzsKIAl1bnNpZ25lZCBsb25n IGlycWZsYWdzOwpAQCAtMTAyNiw3ICsxMDQyLDcgQEAgdm9pZCBkcm1fdmJsYW5rX29mZihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYt PnZibF9sb2NrLCBpcnFmbGFncyk7CiAJdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoZGV2LCBjcnRj KTsKLQl3YWtlX3VwKCZkZXYtPnZibGFua1tjcnRjXS5xdWV1ZSk7CisJd2FrZV91cCgmdmJsYW5r LT5xdWV1ZSk7CiAKIAkvKiBTZW5kIGFueSBxdWV1ZWQgdmJsYW5rIGV2ZW50cywgbGVzdCB0aGUg bmF0aXZlcyBncm93IGRpc3F1aWV0ICovCiAJc2VxID0gZHJtX3ZibGFua19jb3VudF9hbmRfdGlt ZShkZXYsIGNydGMsICZub3cpOwpAQCAtMTA0OCw5ICsxMDY0LDkgQEAgdm9pZCBkcm1fdmJsYW5r X29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAkgKiBQcmV2ZW50IHN1YnNl cXVlbnQgZHJtX3ZibGFua19nZXQoKSBmcm9tIHJlLWVuYWJsaW5nCiAJICogdGhlIHZibGFuayBp bnRlcnJ1cHQgYnkgYnVtcGluZyB0aGUgcmVmY291bnQuCiAJICovCi0JaWYgKCFkZXYtPnZibGFu a1tjcnRjXS5pbm1vZGVzZXQpIHsKLQkJYXRvbWljX2luYygmZGV2LT52YmxhbmtbY3J0Y10ucmVm Y291bnQpOwotCQlkZXYtPnZibGFua1tjcnRjXS5pbm1vZGVzZXQgPSAxOworCWlmICghdmJsYW5r LT5pbm1vZGVzZXQpIHsKKwkJYXRvbWljX2luYygmdmJsYW5rLT5yZWZjb3VudCk7CisJCXZibGFu ay0+aW5tb2Rlc2V0ID0gMTsKIAl9CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZi bF9sb2NrLCBpcnFmbGFncyk7CkBAIC0xMDkwLDEzICsxMTA2LDE0IEBAIEVYUE9SVF9TWU1CT0wo ZHJtX2NydGNfdmJsYW5rX29mZik7CiAgKi8KIHZvaWQgZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2Ymxh bmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CiAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKIAogCXNw aW5fbG9ja19pcnFzYXZlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CiAJLyogRHJvcCBvdXIg cHJpdmF0ZSAicHJldmVudCBkcm1fdmJsYW5rX2dldCIgcmVmY291bnQgKi8KLQlpZiAoZGV2LT52 YmxhbmtbY3J0Y10uaW5tb2Rlc2V0KSB7Ci0JCWF0b21pY19kZWMoJmRldi0+dmJsYW5rW2NydGNd LnJlZmNvdW50KTsKLQkJZGV2LT52YmxhbmtbY3J0Y10uaW5tb2Rlc2V0ID0gMDsKKwlpZiAodmJs YW5rLT5pbm1vZGVzZXQpIHsKKwkJYXRvbWljX2RlYygmdmJsYW5rLT5yZWZjb3VudCk7CisJCXZi bGFuay0+aW5tb2Rlc2V0ID0gMDsKIAl9CiAKIAkvKgpAQCAtMTEwNiwxMiArMTEyMywxMiBAQCB2 b2lkIGRybV92Ymxhbmtfb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJICog LTEgdG8gbWFrZSBzdXJlIHVzZXIgd2lsbCBuZXZlciBzZWUgdGhlIHNhbWUKIAkgKiB2Ymxhbmsg Y291bnRlciB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIGEgbW9kZXNldAogCSAqLwotCWRldi0+dmJs YW5rW2NydGNdLmxhc3QgPQorCXZibGFuay0+bGFzdCA9CiAJCShkZXYtPmRyaXZlci0+Z2V0X3Zi bGFua19jb3VudGVyKGRldiwgY3J0YykgLSAxKSAmCiAJCWRldi0+bWF4X3ZibGFua19jb3VudDsK IAogCS8qIHJlLWVuYWJsZSBpbnRlcnJ1cHRzIGlmIHRoZXJlJ3MgYXJlIHVzZXJzIGxlZnQgKi8K LQlpZiAoYXRvbWljX3JlYWQoJmRldi0+dmJsYW5rW2NydGNdLnJlZmNvdW50KSAhPSAwKQorCWlm IChhdG9taWNfcmVhZCgmdmJsYW5rLT5yZWZjb3VudCkgIT0gMCkKIAkJV0FSTl9PTihkcm1fdmJs YW5rX2VuYWJsZShkZXYsIGNydGMpKTsKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZi bF9sb2NrLCBpcnFmbGFncyk7CiB9CkBAIC0xMTU5LDYgKzExNzYsOCBAQCBFWFBPUlRfU1lNQk9M KGRybV9jcnRjX3ZibGFua19vbik7CiAgKi8KIHZvaWQgZHJtX3ZibGFua19wcmVfbW9kZXNldChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1Y3QgZHJtX3ZibGFua19j cnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CisKIAkvKiB2YmxhbmsgaXMgbm90IGlu aXRpYWxpemVkIChJUlEgbm90IGluc3RhbGxlZCA/KSwgb3IgaGFzIGJlZW4gZnJlZWQgKi8KIAlp ZiAoIWRldi0+bnVtX2NydGNzKQogCQlyZXR1cm47CkBAIC0xMTY5LDEwICsxMTg4LDEwIEBAIHZv aWQgZHJtX3ZibGFua19wcmVfbW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0 YykKIAkgKiB0byBhdm9pZCBjb3JydXB0aW5nIHRoZSBjb3VudCBpZiBtdWx0aXBsZSwgbWlzbWF0 Y2ggY2FsbHMgb2NjdXIpLAogCSAqIHNvIHRoYXQgaW50ZXJydXB0cyByZW1haW4gZW5hYmxlZCBp biB0aGUgaW50ZXJpbS4KIAkgKi8KLQlpZiAoIWRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNldCkg ewotCQlkZXYtPnZibGFua1tjcnRjXS5pbm1vZGVzZXQgPSAweDE7CisJaWYgKCF2YmxhbmstPmlu bW9kZXNldCkgeworCQl2YmxhbmstPmlubW9kZXNldCA9IDB4MTsKIAkJaWYgKGRybV92Ymxhbmtf Z2V0KGRldiwgY3J0YykgPT0gMCkKLQkJCWRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNldCB8PSAw eDI7CisJCQl2YmxhbmstPmlubW9kZXNldCB8PSAweDI7CiAJfQogfQogRVhQT1JUX1NZTUJPTChk cm1fdmJsYW5rX3ByZV9tb2Rlc2V0KTsKQEAgLTExODcsMjEgKzEyMDYsMjIgQEAgRVhQT1JUX1NZ TUJPTChkcm1fdmJsYW5rX3ByZV9tb2Rlc2V0KTsKICAqLwogdm9pZCBkcm1fdmJsYW5rX3Bvc3Rf bW9kZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1Y3QgZHJt X3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CiAJdW5zaWduZWQgbG9u ZyBpcnFmbGFnczsKIAogCS8qIHZibGFuayBpcyBub3QgaW5pdGlhbGl6ZWQgKElSUSBub3QgaW5z dGFsbGVkID8pLCBvciBoYXMgYmVlbiBmcmVlZCAqLwogCWlmICghZGV2LT5udW1fY3J0Y3MpCiAJ CXJldHVybjsKIAotCWlmIChkZXYtPnZibGFua1tjcnRjXS5pbm1vZGVzZXQpIHsKKwlpZiAodmJs YW5rLT5pbm1vZGVzZXQpIHsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGly cWZsYWdzKTsKIAkJZGV2LT52YmxhbmtfZGlzYWJsZV9hbGxvd2VkID0gdHJ1ZTsKIAkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOwogCi0JCWlmIChkZXYt PnZibGFua1tjcnRjXS5pbm1vZGVzZXQgJiAweDIpCisJCWlmICh2YmxhbmstPmlubW9kZXNldCAm IDB4MikKIAkJCWRybV92YmxhbmtfcHV0KGRldiwgY3J0Yyk7CiAKLQkJZGV2LT52YmxhbmtbY3J0 Y10uaW5tb2Rlc2V0ID0gMDsKKwkJdmJsYW5rLT5pbm1vZGVzZXQgPSAwOwogCX0KIH0KIEVYUE9S VF9TWU1CT0woZHJtX3ZibGFua19wb3N0X21vZGVzZXQpOwpAQCAtMTMzNiw2ICsxMzU2LDcgQEAg ZXJyX3B1dDoKIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIAkJICAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2KQogeworCXN0cnVjdCBk cm1fdmJsYW5rX2NydGMgKnZibGFuazsKIAl1bmlvbiBkcm1fd2FpdF92YmxhbmsgKnZibHdhaXQg PSBkYXRhOwogCWludCByZXQ7CiAJdW5zaWduZWQgaW50IGZsYWdzLCBzZXEsIGNydGMsIGhpZ2hf Y3J0YzsKQEAgLTEzNjUsNiArMTM4Niw4IEBAIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAlpZiAoY3J0YyA+PSBkZXYtPm51bV9jcnRjcykK IAkJcmV0dXJuIC1FSU5WQUw7CiAKKwl2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CisKIAly ZXQgPSBkcm1fdmJsYW5rX2dldChkZXYsIGNydGMpOwogCWlmIChyZXQpIHsKIAkJRFJNX0RFQlVH KCJmYWlsZWQgdG8gYWNxdWlyZSB2YmxhbmsgY291bnRlciwgJWRcbiIsIHJldCk7CkBAIC0xMzk3 LDExICsxNDIwLDExIEBAIGludCBkcm1fd2FpdF92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKIAogCURSTV9ERUJVRygid2FpdGluZyBvbiB2YmxhbmsgY291bnQgJWQs IGNydGMgJWRcbiIsCiAJCSAgdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZSwgY3J0Yyk7Ci0JZGV2 LT52YmxhbmtbY3J0Y10ubGFzdF93YWl0ID0gdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5jZTsKLQlE Uk1fV0FJVF9PTihyZXQsIGRldi0+dmJsYW5rW2NydGNdLnF1ZXVlLCAzICogSFosCisJdmJsYW5r LT5sYXN0X3dhaXQgPSB2Ymx3YWl0LT5yZXF1ZXN0LnNlcXVlbmNlOworCURSTV9XQUlUX09OKHJl dCwgdmJsYW5rLT5xdWV1ZSwgMyAqIEhaLAogCQkgICAgKCgoZHJtX3ZibGFua19jb3VudChkZXYs IGNydGMpIC0KIAkJICAgICAgIHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2UpIDw9ICgxIDw8IDIz KSkgfHwKLQkJICAgICAhZGV2LT52YmxhbmtbY3J0Y10uZW5hYmxlZCB8fAorCQkgICAgICF2Ymxh bmstPmVuYWJsZWQgfHwKIAkJICAgICAhZGV2LT5pcnFfZW5hYmxlZCkpOwogCiAJaWYgKHJldCAh PSAtRUlOVFIpIHsKQEAgLTE0NjIsNiArMTQ4NSw3IEBAIHN0YXRpYyB2b2lkIGRybV9oYW5kbGVf dmJsYW5rX2V2ZW50cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKICAqLwogYm9v bCBkcm1faGFuZGxlX3ZibGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsK KwlzdHJ1Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CiAJ dTMyIHZibGNvdW50OwogCXM2NCBkaWZmX25zOwogCXN0cnVjdCB0aW1ldmFsIHR2Ymxhbms7CkBA IC0xNDc3LDcgKzE1MDEsNyBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIGludCBjcnRjKQogCXNwaW5fbG9ja19pcnFzYXZlKCZkZXYtPnZibGFua190aW1l X2xvY2ssIGlycWZsYWdzKTsKIAogCS8qIFZibGFuayBpcnEgaGFuZGxpbmcgZGlzYWJsZWQuIE5v dGhpbmcgdG8gZG8uICovCi0JaWYgKCFkZXYtPnZibGFua1tjcnRjXS5lbmFibGVkKSB7CisJaWYg KCF2YmxhbmstPmVuYWJsZWQpIHsKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52Ymxh bmtfdGltZV9sb2NrLCBpcnFmbGFncyk7CiAJCXJldHVybiBmYWxzZTsKIAl9CkBAIC0xNDg3LDcg KzE1MTEsNyBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKQogCSAqLwogCiAJLyogR2V0IGN1cnJlbnQgdGltZXN0YW1wIGFuZCBjb3VudC4g Ki8KLQl2Ymxjb3VudCA9IGF0b21pY19yZWFkKCZkZXYtPnZibGFua1tjcnRjXS5jb3VudCk7CisJ dmJsY291bnQgPSBhdG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7CiAJZHJtX2dldF9sYXN0X3Zi bHRpbWVzdGFtcChkZXYsIGNydGMsICZ0dmJsYW5rLCBEUk1fQ0FMTEVEX0ZST01fVkJMSVJRKTsK IAogCS8qIENvbXB1dGUgdGltZSBkaWZmZXJlbmNlIHRvIHRpbWVzdGFtcCBvZiBsYXN0IHZibGFu ayAqLwpAQCAtMTUxMSwxNCArMTUzNSwxNCBAQCBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCQkgKiB0aGUgdGltZXN0YW1wIGNvbXB1dGVk IGFib3ZlLgogCQkgKi8KIAkJc21wX21iX19iZWZvcmVfYXRvbWljX2luYygpOwotCQlhdG9taWNf aW5jKCZkZXYtPnZibGFua1tjcnRjXS5jb3VudCk7CisJCWF0b21pY19pbmMoJnZibGFuay0+Y291 bnQpOwogCQlzbXBfbWJfX2FmdGVyX2F0b21pY19pbmMoKTsKIAl9IGVsc2UgewogCQlEUk1fREVC VUcoImNydGMgJWQ6IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4gZGlmZl9ucyA9ICVkXG4iLAog CQkJICBjcnRjLCAoaW50KSBkaWZmX25zKTsKIAl9CiAKLQl3YWtlX3VwKCZkZXYtPnZibGFua1tj cnRjXS5xdWV1ZSk7CisJd2FrZV91cCgmdmJsYW5rLT5xdWV1ZSk7CiAJZHJtX2hhbmRsZV92Ymxh bmtfZXZlbnRzKGRldiwgY3J0Yyk7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZi bGFua190aW1lX2xvY2ssIGlycWZsYWdzKTsKLS0gCjEuOC41LjUKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJp LWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==