From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH v2 07/19] drm: Reduce the amount of dev->vblank[crtc] in the code Date: Wed, 6 Aug 2014 14:49:50 +0300 Message-ID: <1407325803-6944-8-git-send-email-ville.syrjala@linux.intel.com> References: <1407325803-6944-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: <1407325803-6944-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 Li4uKz4KfQoKdjI6IFJlYmFzZWQKClJldmlld2VkLWJ5OiBNYXR0IFJvcGVyIDxtYXR0aGV3LmQu cm9wZXJAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRl ckBmZndsbC5jaD4KU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxh QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jIHwgMTM0ICsr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFu Z2VkLCA3OSBpbnNlcnRpb25zKCspLCA1NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vZHJtX2lycS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9pcnEuYwppbmRleCBm YzE1MjVhLi5iNDQ2MGJmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2lycS5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1faXJxLmMKQEAgLTczLDYgKzczLDcgQEAKICAqLwogc3Rh dGljIHZvaWQgZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IGNydGMpCiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJs YW5rW2NydGNdOwogCXUzMiBjdXJfdmJsYW5rLCBkaWZmLCB0c2xvdCwgcmM7CiAJc3RydWN0IHRp bWV2YWwgdF92Ymxhbms7CiAKQEAgLTk0LDEyICs5NSwxMiBAQCBzdGF0aWMgdm9pZCBkcm1fdXBk YXRlX3ZibGFua19jb3VudChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIAl9IHdo aWxlIChjdXJfdmJsYW5rICE9IGRldi0+ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBj cnRjKSk7CiAKIAkvKiBEZWFsIHdpdGggY291bnRlciB3cmFwICovCi0JZGlmZiA9IGN1cl92Ymxh bmsgLSBkZXYtPnZibGFua1tjcnRjXS5sYXN0OwotCWlmIChjdXJfdmJsYW5rIDwgZGV2LT52Ymxh bmtbY3J0Y10ubGFzdCkgeworCWRpZmYgPSBjdXJfdmJsYW5rIC0gdmJsYW5rLT5sYXN0OworCWlm IChjdXJfdmJsYW5rIDwgdmJsYW5rLT5sYXN0KSB7CiAJCWRpZmYgKz0gZGV2LT5tYXhfdmJsYW5r X2NvdW50OwogCiAJCURSTV9ERUJVRygibGFzdF92YmxhbmtbJWRdPTB4JXgsIGN1cl92Ymxhbms9 MHgleCA9PiBkaWZmPTB4JXhcbiIsCi0JCQkgIGNydGMsIGRldi0+dmJsYW5rW2NydGNdLmxhc3Qs IGN1cl92YmxhbmssIGRpZmYpOworCQkJICBjcnRjLCB2YmxhbmstPmxhc3QsIGN1cl92Ymxhbmss IGRpZmYpOwogCX0KIAogCURSTV9ERUJVRygiZW5hYmxpbmcgdmJsYW5rIGludGVycnVwdHMgb24g Y3J0YyAlZCwgbWlzc2VkICVkXG4iLApAQCAtMTEwLDEyICsxMTEsMTIgQEAgc3RhdGljIHZvaWQg ZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMp CiAJICogcmVpbml0aWFsaXplIGRlbGF5ZWQgYXQgbmV4dCB2YmxhbmsgaW50ZXJydXB0IGluIHRo YXQgY2FzZS4KIAkgKi8KIAlpZiAocmMpIHsKLQkJdHNsb3QgPSBhdG9taWNfcmVhZCgmZGV2LT52 YmxhbmtbY3J0Y10uY291bnQpICsgZGlmZjsKKwkJdHNsb3QgPSBhdG9taWNfcmVhZCgmdmJsYW5r LT5jb3VudCkgKyBkaWZmOwogCQl2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB0c2xvdCkgPSB0 X3ZibGFuazsKIAl9CiAKIAlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsKLQlhdG9taWNfYWRkKGRp ZmYsICZkZXYtPnZibGFua1tjcnRjXS5jb3VudCk7CisJYXRvbWljX2FkZChkaWZmLCAmdmJsYW5r LT5jb3VudCk7CiAJc21wX21iX19hZnRlcl9hdG9taWMoKTsKIH0KIApAQCAtMTI3LDYgKzEyOCw3 IEBAIHN0YXRpYyB2b2lkIGRybV91cGRhdGVfdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBjcnRjKQogICovCiBzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9hbmRfc2F2 ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1Y3QgZHJtX3ZibGFu a19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CiAJdW5zaWduZWQgbG9uZyBpcnFm bGFnczsKIAl1MzIgdmJsY291bnQ7CiAJczY0IGRpZmZfbnM7CkBAIC0xNDcsMTQgKzE0OSwxNCBA QCBzdGF0aWMgdm9pZCB2YmxhbmtfZGlzYWJsZV9hbmRfc2F2ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgY3J0YykKIAkgKiBjb3VudCBhY2NvdW50IGZvciB0aGUgZW50aXJlIHRpbWUgYmV0 d2VlbiBkcm1fdmJsYW5rX29uKCkgYW5kCiAJICogZHJtX3ZibGFua19vZmYoKS4KIAkgKi8KLQlp ZiAoIWRldi0+dmJsYW5rW2NydGNdLmVuYWJsZWQpIHsKKwlpZiAoIXZibGFuay0+ZW5hYmxlZCkg ewogCQlkcm1fdXBkYXRlX3ZibGFua19jb3VudChkZXYsIGNydGMpOwogCQlzcGluX3VubG9ja19p cnFyZXN0b3JlKCZkZXYtPnZibGFua190aW1lX2xvY2ssIGlycWZsYWdzKTsKIAkJcmV0dXJuOwog CX0KIAogCWRldi0+ZHJpdmVyLT5kaXNhYmxlX3ZibGFuayhkZXYsIGNydGMpOwotCWRldi0+dmJs YW5rW2NydGNdLmVuYWJsZWQgPSBmYWxzZTsKKwl2YmxhbmstPmVuYWJsZWQgPSBmYWxzZTsKIAog CS8qIE5vIGZ1cnRoZXIgdmJsYW5rIGlycSdzIHdpbGwgYmUgcHJvY2Vzc2VkIGFmdGVyCiAJICog dGhpcyBwb2ludC4gR2V0IGN1cnJlbnQgaGFyZHdhcmUgdmJsYW5rIGNvdW50IGFuZApAQCAtMTY5 LDkgKzE3MSw5IEBAIHN0YXRpYyB2b2lkIHZibGFua19kaXNhYmxlX2FuZF9zYXZlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCSAqIGRlbGF5ZWQgZ3B1IGNvdW50ZXIgaW5jcmVt ZW50LgogCSAqLwogCWRvIHsKLQkJZGV2LT52YmxhbmtbY3J0Y10ubGFzdCA9IGRldi0+ZHJpdmVy LT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjKTsKKwkJdmJsYW5rLT5sYXN0ID0gZGV2LT5k cml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIGNydGMpOwogCQl2YmxyYyA9IGRybV9nZXRf bGFzdF92Ymx0aW1lc3RhbXAoZGV2LCBjcnRjLCAmdHZibGFuaywgMCk7Ci0JfSB3aGlsZSAoZGV2 LT52YmxhbmtbY3J0Y10ubGFzdCAhPSBkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRl diwgY3J0YykgJiYgKC0tY291bnQpICYmIHZibHJjKTsKKwl9IHdoaWxlICh2YmxhbmstPmxhc3Qg IT0gZGV2LT5kcml2ZXItPmdldF92YmxhbmtfY291bnRlcihkZXYsIGNydGMpICYmICgtLWNvdW50 KSAmJiB2YmxyYyk7CiAKIAlpZiAoIWNvdW50KQogCQl2YmxyYyA9IDA7CkBAIC0xNzksNyArMTgx LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2FibGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IGNydGMpCiAJLyogQ29tcHV0ZSB0aW1lIGRpZmZlcmVuY2UgdG8gc3RvcmVk IHRpbWVzdGFtcCBvZiBsYXN0IHZibGFuawogCSAqIGFzIHVwZGF0ZWQgYnkgbGFzdCBpbnZvY2F0 aW9uIG9mIGRybV9oYW5kbGVfdmJsYW5rKCkgaW4gdmJsYW5rIGlycS4KIAkgKi8KLQl2Ymxjb3Vu dCA9IGF0b21pY19yZWFkKCZkZXYtPnZibGFua1tjcnRjXS5jb3VudCk7CisJdmJsY291bnQgPSBh dG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7CiAJZGlmZl9ucyA9IHRpbWV2YWxfdG9fbnMoJnR2 YmxhbmspIC0KIAkJICB0aW1ldmFsX3RvX25zKCZ2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCB2 Ymxjb3VudCkpOwogCkBAIC0xOTYsNyArMTk4LDcgQEAgc3RhdGljIHZvaWQgdmJsYW5rX2Rpc2Fi bGVfYW5kX3NhdmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJICogaG9wZSBm b3IgdGhlIGJlc3QuCiAJICovCiAJaWYgKCh2YmxyYyA+IDApICYmIChhYnM2NChkaWZmX25zKSA+ IDEwMDAwMDApKSB7Ci0JCWF0b21pY19pbmMoJmRldi0+dmJsYW5rW2NydGNdLmNvdW50KTsKKwkJ YXRvbWljX2luYygmdmJsYW5rLT5jb3VudCk7CiAJCXNtcF9tYl9fYWZ0ZXJfYXRvbWljKCk7CiAJ fQogCkBAIC0yMzYsOCArMjM4LDEwIEBAIHZvaWQgZHJtX3ZibGFua19jbGVhbnVwKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCXJldHVybjsKIAogCWZvciAoY3J0YyA9IDA7IGNydGMgPCBkZXYt Pm51bV9jcnRjczsgY3J0YysrKSB7Ci0JCWRlbF90aW1lcl9zeW5jKCZkZXYtPnZibGFua1tjcnRj XS5kaXNhYmxlX3RpbWVyKTsKLQkJdmJsYW5rX2Rpc2FibGVfZm4oKHVuc2lnbmVkIGxvbmcpJmRl di0+dmJsYW5rW2NydGNdKTsKKwkJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRl di0+dmJsYW5rW2NydGNdOworCisJCWRlbF90aW1lcl9zeW5jKCZ2YmxhbmstPmRpc2FibGVfdGlt ZXIpOworCQl2YmxhbmtfZGlzYWJsZV9mbigodW5zaWduZWQgbG9uZyl2YmxhbmspOwogCX0KIAog CWtmcmVlKGRldi0+dmJsYW5rKTsKQEAgLTI3MCwxMSArMjc0LDEzIEBAIGludCBkcm1fdmJsYW5r X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IG51bV9jcnRjcykKIAkJZ290byBlcnI7 CiAKIAlmb3IgKGkgPSAwOyBpIDwgbnVtX2NydGNzOyBpKyspIHsKLQkJZGV2LT52YmxhbmtbaV0u ZGV2ID0gZGV2OwotCQlkZXYtPnZibGFua1tpXS5jcnRjID0gaTsKLQkJaW5pdF93YWl0cXVldWVf aGVhZCgmZGV2LT52YmxhbmtbaV0ucXVldWUpOwotCQlzZXR1cF90aW1lcigmZGV2LT52Ymxhbmtb aV0uZGlzYWJsZV90aW1lciwgdmJsYW5rX2Rpc2FibGVfZm4sCi0JCQkgICAgKHVuc2lnbmVkIGxv bmcpJmRldi0+dmJsYW5rW2ldKTsKKwkJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0g JmRldi0+dmJsYW5rW2ldOworCisJCXZibGFuay0+ZGV2ID0gZGV2OworCQl2YmxhbmstPmNydGMg PSBpOworCQlpbml0X3dhaXRxdWV1ZV9oZWFkKCZ2YmxhbmstPnF1ZXVlKTsKKwkJc2V0dXBfdGlt ZXIoJnZibGFuay0+ZGlzYWJsZV90aW1lciwgdmJsYW5rX2Rpc2FibGVfZm4sCisJCQkgICAgKHVu c2lnbmVkIGxvbmcpdmJsYW5rKTsKIAl9CiAKIAlEUk1fSU5GTygiU3VwcG9ydHMgdmJsYW5rIHRp bWVzdGFtcCBjYWNoaW5nIFJldiAyICgyMS4xMC4yMDEzKS5cbiIpOwpAQCAtNDI2LDkgKzQzMiwx MSBAQCBpbnQgZHJtX2lycV91bmluc3RhbGwoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpZiAo ZGV2LT5udW1fY3J0Y3MpIHsKIAkJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGly cWZsYWdzKTsKIAkJZm9yIChpID0gMDsgaSA8IGRldi0+bnVtX2NydGNzOyBpKyspIHsKLQkJCXdh a2VfdXAoJmRldi0+dmJsYW5rW2ldLnF1ZXVlKTsKLQkJCWRldi0+dmJsYW5rW2ldLmVuYWJsZWQg PSBmYWxzZTsKLQkJCWRldi0+dmJsYW5rW2ldLmxhc3QgPQorCQkJc3RydWN0IGRybV92Ymxhbmtf Y3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2ldOworCisJCQl3YWtlX3VwKCZ2YmxhbmstPnF1 ZXVlKTsKKwkJCXZibGFuay0+ZW5hYmxlZCA9IGZhbHNlOworCQkJdmJsYW5rLT5sYXN0ID0KIAkJ CQlkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgaSk7CiAJCX0KIAkJc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmZGV2LT52YmxfbG9jaywgaXJxZmxhZ3MpOwpAQCAtNzk2LDcgKzgw NCw5IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dldF9sYXN0X3ZibHRpbWVzdGFtcCk7CiAgKi8KIHUz MiBkcm1fdmJsYW5rX2NvdW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogewot CXJldHVybiBhdG9taWNfcmVhZCgmZGV2LT52YmxhbmtbY3J0Y10uY291bnQpOworCXN0cnVjdCBk cm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKKworCXJldHVybiBh dG9taWNfcmVhZCgmdmJsYW5rLT5jb3VudCk7CiB9CiBFWFBPUlRfU1lNQk9MKGRybV92Ymxhbmtf Y291bnQpOwogCkBAIC04MTYsNiArODI2LDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX2Nv dW50KTsKIHUzMiBkcm1fdmJsYW5rX2NvdW50X2FuZF90aW1lKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIGludCBjcnRjLAogCQkJICAgICAgc3RydWN0IHRpbWV2YWwgKnZibGFua3RpbWUpCiB7CisJ c3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5rW2NydGNdOwogCXUz MiBjdXJfdmJsYW5rOwogCiAJLyogUmVhZCB0aW1lc3RhbXAgZnJvbSBzbG90IG9mIF92Ymxhbmtf dGltZSByaW5nYnVmZmVyCkBAIC04MjQsMTAgKzgzNSwxMCBAQCB1MzIgZHJtX3ZibGFua19jb3Vu dF9hbmRfdGltZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YywKIAkgKiBhIHNlcWxv Y2suCiAJICovCiAJZG8gewotCQljdXJfdmJsYW5rID0gYXRvbWljX3JlYWQoJmRldi0+dmJsYW5r W2NydGNdLmNvdW50KTsKKwkJY3VyX3ZibGFuayA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50 KTsKIAkJKnZibGFua3RpbWUgPSB2Ymxhbmt0aW1lc3RhbXAoZGV2LCBjcnRjLCBjdXJfdmJsYW5r KTsKIAkJc21wX3JtYigpOwotCX0gd2hpbGUgKGN1cl92YmxhbmsgIT0gYXRvbWljX3JlYWQoJmRl di0+dmJsYW5rW2NydGNdLmNvdW50KSk7CisJfSB3aGlsZSAoY3VyX3ZibGFuayAhPSBhdG9taWNf cmVhZCgmdmJsYW5rLT5jb3VudCkpOwogCiAJcmV0dXJuIGN1cl92Ymxhbms7CiB9CkBAIC04ODIs MTMgKzg5MywxNCBAQCBFWFBPUlRfU1lNQk9MKGRybV9zZW5kX3ZibGFua19ldmVudCk7CiAgKi8K IHN0YXRpYyBpbnQgZHJtX3ZibGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50 IGNydGMpCiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rID0gJmRldi0+dmJsYW5r W2NydGNdOwogCWludCByZXQgPSAwOwogCiAJYXNzZXJ0X3NwaW5fbG9ja2VkKCZkZXYtPnZibF9s b2NrKTsKIAogCXNwaW5fbG9jaygmZGV2LT52YmxhbmtfdGltZV9sb2NrKTsKIAotCWlmICghZGV2 LT52YmxhbmtbY3J0Y10uZW5hYmxlZCkgeworCWlmICghdmJsYW5rLT5lbmFibGVkKSB7CiAJCS8q CiAJCSAqIEVuYWJsZSB2YmxhbmsgaXJxcyB1bmRlciB2YmxhbmtfdGltZV9sb2NrIHByb3RlY3Rp b24uCiAJCSAqIEFsbCB2YmxhbmsgY291bnQgJiB0aW1lc3RhbXAgdXBkYXRlcyBhcmUgaGVsZCBv ZmYKQEAgLTg5OSw5ICs5MTEsOSBAQCBzdGF0aWMgaW50IGRybV92YmxhbmtfZW5hYmxlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCQlyZXQgPSBkZXYtPmRyaXZlci0+ZW5hYmxl X3ZibGFuayhkZXYsIGNydGMpOwogCQlEUk1fREVCVUcoImVuYWJsaW5nIHZibGFuayBvbiBjcnRj ICVkLCByZXQ6ICVkXG4iLCBjcnRjLCByZXQpOwogCQlpZiAocmV0KQotCQkJYXRvbWljX2RlYygm ZGV2LT52YmxhbmtbY3J0Y10ucmVmY291bnQpOworCQkJYXRvbWljX2RlYygmdmJsYW5rLT5yZWZj b3VudCk7CiAJCWVsc2UgewotCQkJZGV2LT52YmxhbmtbY3J0Y10uZW5hYmxlZCA9IHRydWU7CisJ CQl2YmxhbmstPmVuYWJsZWQgPSB0cnVlOwogCQkJZHJtX3VwZGF0ZV92YmxhbmtfY291bnQoZGV2 LCBjcnRjKTsKIAkJfQogCX0KQEAgLTkyNiwxNiArOTM4LDE3IEBAIHN0YXRpYyBpbnQgZHJtX3Zi bGFua19lbmFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAgKi8KIGludCBk cm1fdmJsYW5rX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1 Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CiAJdW5zaWdu ZWQgbG9uZyBpcnFmbGFnczsKIAlpbnQgcmV0ID0gMDsKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZk ZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7CiAJLyogR29pbmcgZnJvbSAwLT4xIG1lYW5zIHdlIGhh dmUgdG8gZW5hYmxlIGludGVycnVwdHMgYWdhaW4gKi8KLQlpZiAoYXRvbWljX2FkZF9yZXR1cm4o MSwgJmRldi0+dmJsYW5rW2NydGNdLnJlZmNvdW50KSA9PSAxKSB7CisJaWYgKGF0b21pY19hZGRf cmV0dXJuKDEsICZ2YmxhbmstPnJlZmNvdW50KSA9PSAxKSB7CiAJCXJldCA9IGRybV92Ymxhbmtf ZW5hYmxlKGRldiwgY3J0Yyk7CiAJfSBlbHNlIHsKLQkJaWYgKCFkZXYtPnZibGFua1tjcnRjXS5l bmFibGVkKSB7Ci0JCQlhdG9taWNfZGVjKCZkZXYtPnZibGFua1tjcnRjXS5yZWZjb3VudCk7CisJ CWlmICghdmJsYW5rLT5lbmFibGVkKSB7CisJCQlhdG9taWNfZGVjKCZ2YmxhbmstPnJlZmNvdW50 KTsKIAkJCXJldCA9IC1FSU5WQUw7CiAJCX0KIAl9CkBAIC05NzUsMTIgKzk4OCwxNCBAQCBFWFBP UlRfU1lNQk9MKGRybV9jcnRjX3ZibGFua19nZXQpOwogICovCiB2b2lkIGRybV92YmxhbmtfcHV0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogewotCUJVR19PTihhdG9taWNfcmVh ZCgmZGV2LT52YmxhbmtbY3J0Y10ucmVmY291bnQpID09IDApOworCXN0cnVjdCBkcm1fdmJsYW5r X2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKKworCUJVR19PTihhdG9taWNfcmVh ZCgmdmJsYW5rLT5yZWZjb3VudCkgPT0gMCk7CiAKIAkvKiBMYXN0IHVzZXIgc2NoZWR1bGVzIGlu dGVycnVwdCBkaXNhYmxlICovCi0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmRldi0+dmJsYW5r W2NydGNdLnJlZmNvdW50KSAmJgorCWlmIChhdG9taWNfZGVjX2FuZF90ZXN0KCZ2YmxhbmstPnJl ZmNvdW50KSAmJgogCSAgICAoZHJtX3ZibGFua19vZmZkZWxheSA+IDApKQotCQltb2RfdGltZXIo JmRldi0+dmJsYW5rW2NydGNdLmRpc2FibGVfdGltZXIsCisJCW1vZF90aW1lcigmdmJsYW5rLT5k aXNhYmxlX3RpbWVyLAogCQkJICBqaWZmaWVzICsgKChkcm1fdmJsYW5rX29mZmRlbGF5ICogSFop LzEwMDApKTsKIH0KIEVYUE9SVF9TWU1CT0woZHJtX3ZibGFua19wdXQpOwpAQCAtMTAxNiw2ICsx MDMxLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fY3J0Y192YmxhbmtfcHV0KTsKICAqLwogdm9pZCBk cm1fdmJsYW5rX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBpbnQgY3J0YykKIHsKKwlzdHJ1 Y3QgZHJtX3ZibGFua19jcnRjICp2YmxhbmsgPSAmZGV2LT52YmxhbmtbY3J0Y107CiAJc3RydWN0 IGRybV9wZW5kaW5nX3ZibGFua19ldmVudCAqZSwgKnQ7CiAJc3RydWN0IHRpbWV2YWwgbm93Owog CXVuc2lnbmVkIGxvbmcgaXJxZmxhZ3M7CkBAIC0xMDIzLDcgKzEwMzksNyBAQCB2b2lkIGRybV92 Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCiAJc3Bpbl9sb2Nr X2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKIAl2YmxhbmtfZGlzYWJsZV9hbmRf c2F2ZShkZXYsIGNydGMpOwotCXdha2VfdXAoJmRldi0+dmJsYW5rW2NydGNdLnF1ZXVlKTsKKwl3 YWtlX3VwKCZ2YmxhbmstPnF1ZXVlKTsKIAogCS8qIFNlbmQgYW55IHF1ZXVlZCB2YmxhbmsgZXZl bnRzLCBsZXN0IHRoZSBuYXRpdmVzIGdyb3cgZGlzcXVpZXQgKi8KIAlzZXEgPSBkcm1fdmJsYW5r X2NvdW50X2FuZF90aW1lKGRldiwgY3J0YywgJm5vdyk7CkBAIC0xMDQ1LDkgKzEwNjEsOSBAQCB2 b2lkIGRybV92Ymxhbmtfb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogCSAq IFByZXZlbnQgc3Vic2VxdWVudCBkcm1fdmJsYW5rX2dldCgpIGZyb20gcmUtZW5hYmxpbmcKIAkg KiB0aGUgdmJsYW5rIGludGVycnVwdCBieSBidW1waW5nIHRoZSByZWZjb3VudC4KIAkgKi8KLQlp ZiAoIWRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNldCkgewotCQlhdG9taWNfaW5jKCZkZXYtPnZi bGFua1tjcnRjXS5yZWZjb3VudCk7Ci0JCWRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNldCA9IDE7 CisJaWYgKCF2YmxhbmstPmlubW9kZXNldCkgeworCQlhdG9taWNfaW5jKCZ2YmxhbmstPnJlZmNv dW50KTsKKwkJdmJsYW5rLT5pbm1vZGVzZXQgPSAxOwogCX0KIAogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKQEAgLTEwODcsMTMgKzExMDMsMTQgQEAg RVhQT1JUX1NZTUJPTChkcm1fY3J0Y192Ymxhbmtfb2ZmKTsKICAqLwogdm9pZCBkcm1fdmJsYW5r X29uKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogeworCXN0cnVjdCBkcm1fdmJs YW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKIAl1bnNpZ25lZCBsb25nIGly cWZsYWdzOwogCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsK IAkvKiBEcm9wIG91ciBwcml2YXRlICJwcmV2ZW50IGRybV92YmxhbmtfZ2V0IiByZWZjb3VudCAq LwotCWlmIChkZXYtPnZibGFua1tjcnRjXS5pbm1vZGVzZXQpIHsKLQkJYXRvbWljX2RlYygmZGV2 LT52YmxhbmtbY3J0Y10ucmVmY291bnQpOwotCQlkZXYtPnZibGFua1tjcnRjXS5pbm1vZGVzZXQg PSAwOworCWlmICh2YmxhbmstPmlubW9kZXNldCkgeworCQlhdG9taWNfZGVjKCZ2YmxhbmstPnJl ZmNvdW50KTsKKwkJdmJsYW5rLT5pbm1vZGVzZXQgPSAwOwogCX0KIAogCS8qCkBAIC0xMTAzLDEy ICsxMTIwLDEyIEBAIHZvaWQgZHJtX3ZibGFua19vbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBp bnQgY3J0YykKIAkgKiAtMSB0byBtYWtlIHN1cmUgdXNlciB3aWxsIG5ldmVyIHNlZSB0aGUgc2Ft ZQogCSAqIHZibGFuayBjb3VudGVyIHZhbHVlIGJlZm9yZSBhbmQgYWZ0ZXIgYSBtb2Rlc2V0CiAJ ICovCi0JZGV2LT52YmxhbmtbY3J0Y10ubGFzdCA9CisJdmJsYW5rLT5sYXN0ID0KIAkJKGRldi0+ ZHJpdmVyLT5nZXRfdmJsYW5rX2NvdW50ZXIoZGV2LCBjcnRjKSAtIDEpICYKIAkJZGV2LT5tYXhf dmJsYW5rX2NvdW50OwogCiAJLyogcmUtZW5hYmxlIGludGVycnVwdHMgaWYgdGhlcmUncyBhcmUg dXNlcnMgbGVmdCAqLwotCWlmIChhdG9taWNfcmVhZCgmZGV2LT52YmxhbmtbY3J0Y10ucmVmY291 bnQpICE9IDApCisJaWYgKGF0b21pY19yZWFkKCZ2YmxhbmstPnJlZmNvdW50KSAhPSAwKQogCQlX QVJOX09OKGRybV92YmxhbmtfZW5hYmxlKGRldiwgY3J0YykpOwogCXNwaW5fdW5sb2NrX2lycXJl c3RvcmUoJmRldi0+dmJsX2xvY2ssIGlycWZsYWdzKTsKIH0KQEAgLTExNTYsNiArMTE3Myw4IEBA IEVYUE9SVF9TWU1CT0woZHJtX2NydGNfdmJsYW5rX29uKTsKICAqLwogdm9pZCBkcm1fdmJsYW5r X3ByZV9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQogeworCXN0cnVj dCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsKKwogCS8qIHZi bGFuayBpcyBub3QgaW5pdGlhbGl6ZWQgKElSUSBub3QgaW5zdGFsbGVkID8pLCBvciBoYXMgYmVl biBmcmVlZCAqLwogCWlmICghZGV2LT5udW1fY3J0Y3MpCiAJCXJldHVybjsKQEAgLTExNjYsMTAg KzExODUsMTAgQEAgdm9pZCBkcm1fdmJsYW5rX3ByZV9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBjcnRjKQogCSAqIHRvIGF2b2lkIGNvcnJ1cHRpbmcgdGhlIGNvdW50IGlmIG11 bHRpcGxlLCBtaXNtYXRjaCBjYWxscyBvY2N1ciksCiAJICogc28gdGhhdCBpbnRlcnJ1cHRzIHJl bWFpbiBlbmFibGVkIGluIHRoZSBpbnRlcmltLgogCSAqLwotCWlmICghZGV2LT52YmxhbmtbY3J0 Y10uaW5tb2Rlc2V0KSB7Ci0JCWRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNldCA9IDB4MTsKKwlp ZiAoIXZibGFuay0+aW5tb2Rlc2V0KSB7CisJCXZibGFuay0+aW5tb2Rlc2V0ID0gMHgxOwogCQlp ZiAoZHJtX3ZibGFua19nZXQoZGV2LCBjcnRjKSA9PSAwKQotCQkJZGV2LT52YmxhbmtbY3J0Y10u aW5tb2Rlc2V0IHw9IDB4MjsKKwkJCXZibGFuay0+aW5tb2Rlc2V0IHw9IDB4MjsKIAl9CiB9CiBF WFBPUlRfU1lNQk9MKGRybV92YmxhbmtfcHJlX21vZGVzZXQpOwpAQCAtMTE4NCwyMSArMTIwMywy MiBAQCBFWFBPUlRfU1lNQk9MKGRybV92YmxhbmtfcHJlX21vZGVzZXQpOwogICovCiB2b2lkIGRy bV92YmxhbmtfcG9zdF9tb2Rlc2V0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBjcnRjKQog eworCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZibGFua1tjcnRjXTsK IAl1bnNpZ25lZCBsb25nIGlycWZsYWdzOwogCiAJLyogdmJsYW5rIGlzIG5vdCBpbml0aWFsaXpl ZCAoSVJRIG5vdCBpbnN0YWxsZWQgPyksIG9yIGhhcyBiZWVuIGZyZWVkICovCiAJaWYgKCFkZXYt Pm51bV9jcnRjcykKIAkJcmV0dXJuOwogCi0JaWYgKGRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNl dCkgeworCWlmICh2YmxhbmstPmlubW9kZXNldCkgewogCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2 LT52YmxfbG9jaywgaXJxZmxhZ3MpOwogCQlkZXYtPnZibGFua19kaXNhYmxlX2FsbG93ZWQgPSB0 cnVlOwogCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXYtPnZibF9sb2NrLCBpcnFmbGFncyk7 CiAKLQkJaWYgKGRldi0+dmJsYW5rW2NydGNdLmlubW9kZXNldCAmIDB4MikKKwkJaWYgKHZibGFu ay0+aW5tb2Rlc2V0ICYgMHgyKQogCQkJZHJtX3ZibGFua19wdXQoZGV2LCBjcnRjKTsKIAotCQlk ZXYtPnZibGFua1tjcnRjXS5pbm1vZGVzZXQgPSAwOworCQl2YmxhbmstPmlubW9kZXNldCA9IDA7 CiAJfQogfQogRVhQT1JUX1NZTUJPTChkcm1fdmJsYW5rX3Bvc3RfbW9kZXNldCk7CkBAIC0xMzMz LDYgKzEzNTMsNyBAQCBlcnJfcHV0OgogaW50IGRybV93YWl0X3ZibGFuayhzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYp CiB7CisJc3RydWN0IGRybV92YmxhbmtfY3J0YyAqdmJsYW5rOwogCXVuaW9uIGRybV93YWl0X3Zi bGFuayAqdmJsd2FpdCA9IGRhdGE7CiAJaW50IHJldDsKIAl1bnNpZ25lZCBpbnQgZmxhZ3MsIHNl cSwgY3J0YywgaGlnaF9jcnRjOwpAQCAtMTM2Miw2ICsxMzgzLDggQEAgaW50IGRybV93YWl0X3Zi bGFuayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCWlmIChjcnRjID49IGRl di0+bnVtX2NydGNzKQogCQlyZXR1cm4gLUVJTlZBTDsKIAorCXZibGFuayA9ICZkZXYtPnZibGFu a1tjcnRjXTsKKwogCXJldCA9IGRybV92YmxhbmtfZ2V0KGRldiwgY3J0Yyk7CiAJaWYgKHJldCkg ewogCQlEUk1fREVCVUcoImZhaWxlZCB0byBhY3F1aXJlIHZibGFuayBjb3VudGVyLCAlZFxuIiwg cmV0KTsKQEAgLTEzOTQsMTEgKzE0MTcsMTEgQEAgaW50IGRybV93YWl0X3ZibGFuayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJRFJNX0RFQlVHKCJ3YWl0aW5nIG9uIHZi bGFuayBjb3VudCAlZCwgY3J0YyAlZFxuIiwKIAkJICB2Ymx3YWl0LT5yZXF1ZXN0LnNlcXVlbmNl LCBjcnRjKTsKLQlkZXYtPnZibGFua1tjcnRjXS5sYXN0X3dhaXQgPSB2Ymx3YWl0LT5yZXF1ZXN0 LnNlcXVlbmNlOwotCURSTV9XQUlUX09OKHJldCwgZGV2LT52YmxhbmtbY3J0Y10ucXVldWUsIDMg KiBIWiwKKwl2YmxhbmstPmxhc3Rfd2FpdCA9IHZibHdhaXQtPnJlcXVlc3Quc2VxdWVuY2U7CisJ RFJNX1dBSVRfT04ocmV0LCB2YmxhbmstPnF1ZXVlLCAzICogSFosCiAJCSAgICAoKChkcm1fdmJs YW5rX2NvdW50KGRldiwgY3J0YykgLQogCQkgICAgICAgdmJsd2FpdC0+cmVxdWVzdC5zZXF1ZW5j ZSkgPD0gKDEgPDwgMjMpKSB8fAotCQkgICAgICFkZXYtPnZibGFua1tjcnRjXS5lbmFibGVkIHx8 CisJCSAgICAgIXZibGFuay0+ZW5hYmxlZCB8fAogCQkgICAgICFkZXYtPmlycV9lbmFibGVkKSk7 CiAKIAlpZiAocmV0ICE9IC1FSU5UUikgewpAQCAtMTQ1OSw2ICsxNDgyLDcgQEAgc3RhdGljIHZv aWQgZHJtX2hhbmRsZV92YmxhbmtfZXZlbnRzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBj cnRjKQogICovCiBib29sIGRybV9oYW5kbGVfdmJsYW5rKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGludCBjcnRjKQogeworCXN0cnVjdCBkcm1fdmJsYW5rX2NydGMgKnZibGFuayA9ICZkZXYtPnZi bGFua1tjcnRjXTsKIAl1MzIgdmJsY291bnQ7CiAJczY0IGRpZmZfbnM7CiAJc3RydWN0IHRpbWV2 YWwgdHZibGFuazsKQEAgLTE0NzQsNyArMTQ5OCw3IEBAIGJvb2wgZHJtX2hhbmRsZV92Ymxhbmso c3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJc3Bpbl9sb2NrX2lycXNhdmUoJmRl di0+dmJsYW5rX3RpbWVfbG9jaywgaXJxZmxhZ3MpOwogCiAJLyogVmJsYW5rIGlycSBoYW5kbGlu ZyBkaXNhYmxlZC4gTm90aGluZyB0byBkby4gKi8KLQlpZiAoIWRldi0+dmJsYW5rW2NydGNdLmVu YWJsZWQpIHsKKwlpZiAoIXZibGFuay0+ZW5hYmxlZCkgewogCQlzcGluX3VubG9ja19pcnFyZXN0 b3JlKCZkZXYtPnZibGFua190aW1lX2xvY2ssIGlycWZsYWdzKTsKIAkJcmV0dXJuIGZhbHNlOwog CX0KQEAgLTE0ODQsNyArMTUwOCw3IEBAIGJvb2wgZHJtX2hhbmRsZV92Ymxhbmsoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJICovCiAKIAkvKiBHZXQgY3VycmVudCB0aW1lc3Rh bXAgYW5kIGNvdW50LiAqLwotCXZibGNvdW50ID0gYXRvbWljX3JlYWQoJmRldi0+dmJsYW5rW2Ny dGNdLmNvdW50KTsKKwl2Ymxjb3VudCA9IGF0b21pY19yZWFkKCZ2YmxhbmstPmNvdW50KTsKIAlk cm1fZ2V0X2xhc3RfdmJsdGltZXN0YW1wKGRldiwgY3J0YywgJnR2YmxhbmssIERSTV9DQUxMRURf RlJPTV9WQkxJUlEpOwogCiAJLyogQ29tcHV0ZSB0aW1lIGRpZmZlcmVuY2UgdG8gdGltZXN0YW1w IG9mIGxhc3QgdmJsYW5rICovCkBAIC0xNTA4LDE0ICsxNTMyLDE0IEBAIGJvb2wgZHJtX2hhbmRs ZV92Ymxhbmsoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IGNydGMpCiAJCSAqIHRoZSB0aW1l c3RhbXAgY29tcHV0ZWQgYWJvdmUuCiAJCSAqLwogCQlzbXBfbWJfX2JlZm9yZV9hdG9taWMoKTsK LQkJYXRvbWljX2luYygmZGV2LT52YmxhbmtbY3J0Y10uY291bnQpOworCQlhdG9taWNfaW5jKCZ2 YmxhbmstPmNvdW50KTsKIAkJc21wX21iX19hZnRlcl9hdG9taWMoKTsKIAl9IGVsc2UgewogCQlE Uk1fREVCVUcoImNydGMgJWQ6IFJlZHVuZGFudCB2YmxpcnEgaWdub3JlZC4gZGlmZl9ucyA9ICVk XG4iLAogCQkJICBjcnRjLCAoaW50KSBkaWZmX25zKTsKIAl9CiAKLQl3YWtlX3VwKCZkZXYtPnZi bGFua1tjcnRjXS5xdWV1ZSk7CisJd2FrZV91cCgmdmJsYW5rLT5xdWV1ZSk7CiAJZHJtX2hhbmRs ZV92YmxhbmtfZXZlbnRzKGRldiwgY3J0Yyk7CiAKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXYtPnZibGFua190aW1lX2xvY2ssIGlycWZsYWdzKTsKLS0gCjEuOC41LjUKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==