From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH 11/11] drm/i915: Support for capturing MMIO register values Date: Tue, 16 Feb 2016 10:57:19 +0530 Message-ID: <1455600439-18480-12-git-send-email-sourab.gupta@intel.com> References: <1455600439-18480-1-git-send-email-sourab.gupta@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 EA9586E73A for ; Tue, 16 Feb 2016 05:25:52 +0000 (UTC) In-Reply-To: <1455600439-18480-1-git-send-email-sourab.gupta@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: Jabin Wu , Sourab Gupta List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIGNhcHR1cmluZyBNTUlPIHJlZ2lzdGVyIHZhbHVlcyB0aHJvdWdoCmk5 MTUgcGVyZiBpbnRlcmZhY2UuClRoZSB1c2Vyc3BhY2UgY2FuIHJlcXVlc3QgdXB0byA4IE1NSU8g cmVnaXN0ZXIgdmFsdWVzIHRvIGJlIGR1bXBlZC4KVGhlIGFkZHJlc3NlcyBvZiB0aGVzZSByZWdp c3RlcnMgY2FuIGJlIHBhc3NlZCB0aHJvdWdoIHRoZSBjb3JyZXNwb25kaW5nCnByb3BlcnR5ICd2 YWx1ZScgZmllbGQgd2hpbGUgb3BlbmluZyB0aGUgc3RyZWFtLgpUaGUgY29tbWFuZHMgdG8gZHVt cCB0aGUgdmFsdWVzIG9mIHRoZXNlIE1NSU8gcmVnaXN0ZXJzIGFyZSB0aGVuCmluc2VydGVkIGlu dG8gdGhlIHJpbmcgYWxvbmd3aXRoIG90aGVyIGNvbW1hbmRzLgoKU2lnbmVkLW9mZi1ieTogU291 cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j IHwgMTc3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgMTQgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxOTMg aW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRl eCBiZjY1YWNiLi5mY2FlZTc1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE4MTcsNiAr MTgxNyw3IEBAIHN0cnVjdCBpOTE1X3BlcmZfY3NfZGF0YV9ub2RlIHsKIAl1MzIgc3RhcnRfb2Zm c2V0OwogCXUzMiBvYV9vZmZzZXQ7CiAJdTMyIHRzX29mZnNldDsKKwl1MzIgbW1pb19vZmZzZXQ7 CiAKIAkvKiBidWZmZXIgc2l6ZSBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZW50cnkgKi8KIAl1MzIg c2l6ZTsKQEAgLTIwODksNiArMjA5MCw5IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJ c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKmV4Y2x1c2l2ZV9zdHJlYW1bSTkxNV9OVU1fUklOR1Nd OwogCQl3YWl0X3F1ZXVlX2hlYWRfdCBwb2xsX3dxW0k5MTVfTlVNX1JJTkdTXTsKIAorCQl1MzIg bnVtX21taW87CisJCXUzMiBtbWlvX2xpc3RbSTkxNV9QRVJGX01NSU9fTlVNX01BWF07CisKIAkJ c3RydWN0IHsKIAkJCXUzMiBzcGVjaWZpY19jdHhfaWQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKaW5kZXggM2ViNTZkNC4uNDVhN2YyMiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAg LTYzLDYgKzYzLDcgQEAgc3RydWN0IHNhbXBsZV9kYXRhIHsKIAl1MzIgdGFnOwogCXU2NCB0czsK IAljb25zdCB1OCAqcmVwb3J0OworCWNvbnN0IHU4ICptbWlvOwogfTsKIAogLyogZm9yIHN5c2N0 bCBwcm9jX2RvaW50dmVjX21pbm1heCBvZiBpOTE1X29hX21pbl90aW1lcl9leHBvbmVudCAqLwpA QCAtMTA2LDYgKzEwNyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9vYV9mb3JtYXQgZ2VuOF9wbHVz X29hX2Zvcm1hdHNbSTkxNV9PQV9GT1JNQVRfTUFYXSA9IHsKICNkZWZpbmUgU0FNUExFX1BJRAkJ KDE8PDMpCiAjZGVmaW5lIFNBTVBMRV9UQUcJCSgxPDw0KQogI2RlZmluZSBTQU1QTEVfVFMJCSgx PDw1KQorI2RlZmluZSBTQU1QTEVfTU1JTwkJKDE8PDYpCiAKIHN0cnVjdCBwZXJmX29wZW5fcHJv cGVydGllcwogewpAQCAtMjAzLDYgKzIwNSw5IEBAIHN0YXRpYyB2b2lkIGluc2VydF9wZXJmX2Vu dHJ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc2FtcGxlX3RzID0gdHJ1 ZTsKIAl9CiAKKwlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX01NSU8pCisJCWVudHJ5X3NpemUg Kz0gNCpkZXZfcHJpdi0+cGVyZi5udW1fbW1pbzsKKwogCXNwaW5fbG9jaygmZGV2X3ByaXYtPnBl cmYubm9kZV9saXN0X2xvY2tbaWRdKTsKIAlpZiAobGlzdF9lbXB0eSgmZGV2X3ByaXYtPnBlcmYu bm9kZV9saXN0W2lkXSkpIHsKIAkJb2Zmc2V0ID0gMDsKQEAgLTI2Niw2ICsyNzEsMTAgQEAgb3V0 OgogCQllbnRyeS0+dHNfb2Zmc2V0ID0gQUxJR04oZW50cnktPnRzX29mZnNldCwgVFNfQUREUl9B TElHTik7CiAJCW9mZnNldCA9IGVudHJ5LT50c19vZmZzZXQgKyBJOTE1X1BFUkZfVFNfU0FNUExF X1NJWkU7CiAJfQorCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfTU1JTykgeworCQllbnRyeS0+ bW1pb19vZmZzZXQgPSBvZmZzZXQ7CisJCW9mZnNldCA9IGVudHJ5LT5tbWlvX29mZnNldCArIDQq ZGV2X3ByaXYtPnBlcmYubnVtX21taW87CisJfQogCiAJbGlzdF9hZGRfdGFpbCgmZW50cnktPmxp bmssICZkZXZfcHJpdi0+cGVyZi5ub2RlX2xpc3RbaWRdKTsKIAlzcGluX3VubG9jaygmZGV2X3By aXYtPnBlcmYubm9kZV9saXN0X2xvY2tbaWRdKTsKQEAgLTQxNSw2ICs0MjQsNzIgQEAgc3RhdGlj IGludCBpOTE1X3BlcmZfc3RyZWFtX2NhcHR1cmVfdHNfZGF0YShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBpOTE1X3BlcmZfc3Ry ZWFtX2NhcHR1cmVfbW1pb19kYXRhKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAor CQkJCQkJdTMyIG9mZnNldCkKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcmVx LT5yaW5nOworCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcmVxLT5yaW5nYnVm OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3By aXZhdGU7CisJaW50IG51bV9tbWlvID0gZGV2X3ByaXYtPnBlcmYubnVtX21taW87CisJdTMyIG1t aW9fYWRkciwgYWRkciA9IDA7CisJaW50IHJldCwgaTsKKworCWlmIChpOTE1LmVuYWJsZV9leGVj bGlzdHMpCisJCXJldCA9IGludGVsX2xvZ2ljYWxfcmluZ19iZWdpbihyZXEsIDQqbnVtX21taW8p OworCWVsc2UKKwkJcmV0ID0gaW50ZWxfcmluZ19iZWdpbihyZXEsIDQqbnVtX21taW8pOworCisJ aWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCW1taW9fYWRkciA9CisJCWRldl9wcml2LT5wZXJm LmNvbW1hbmRfc3RyZWFtX2J1ZltyaW5nLT5pZF0udm1hLT5ub2RlLnN0YXJ0ICsKKwkJCW9mZnNl dDsKKworCWlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpIHsKKwkJZm9yIChpID0gMDsgaSA8IG51 bV9tbWlvOyBpKyspIHsKKwkJCXVpbnQzMl90IGNtZDsKKworCQkJYWRkciA9IG1taW9fYWRkciAr CisJCQkJaSAqIHNpemVvZihkZXZfcHJpdi0+cGVyZi5tbWlvX2xpc3RbaV0pOworCisJCQljbWQg PSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCB8CisJCQkJCQlNSV9TUk1fTFJNX0dMT0JBTF9H VFQ7CisKKwkJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGNtZCk7CisJCQlpbnRl bF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAorCQkJCQlkZXZfcHJpdi0+cGVyZi5tbWlvX2xp c3RbaV0pOworCQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgYWRkcik7CisJCQlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKKwkJfQorCQlpbnRlbF9sb2dpY2Fs X3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKwl9IGVsc2UgeworCQlmb3IgKGkgPSAwOyBpIDwgbnVt X21taW87IGkrKykgeworCQkJdWludDMyX3QgY21kOworCisJCQlhZGRyID0gbW1pb19hZGRyICsK KwkJCQlpICogc2l6ZW9mKGRldl9wcml2LT5wZXJmLm1taW9fbGlzdFtpXSk7CisKKwkJCWlmIChJ TlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA+PSA4KQorCQkJCWNtZCA9IE1JX1NUT1JFX1JFR0lT VEVSX01FTV9HRU44IHwKKwkJCQkJTUlfU1JNX0xSTV9HTE9CQUxfR1RUOworCQkJZWxzZQorCQkJ CWNtZCA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8CisJCQkJCU1JX1NSTV9MUk1fR0xPQkFMX0dU VDsKKworCQkJaW50ZWxfcmluZ19lbWl0KHJpbmcsIGNtZCk7CisJCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgZGV2X3ByaXYtPnBlcmYubW1pb19saXN0W2ldKTsKKwkJCWludGVsX3JpbmdfZW1pdChy aW5nLCBhZGRyKTsKKwkJCWlmIChJTlRFTF9JTkZPKHJpbmctPmRldiktPmdlbiA+PSA4KQorCQkJ CWludGVsX3JpbmdfZW1pdChyaW5nLCAwKTsKKwkJCWVsc2UKKwkJCQlpbnRlbF9yaW5nX2VtaXQo cmluZywgTUlfTk9PUCk7CisJCX0KKwkJaW50ZWxfcmluZ19hZHZhbmNlKHJpbmcpOworCX0KKwly ZXR1cm4gMDsKK30KKwogc3RhdGljIHZvaWQgaTkxNV9wZXJmX3N0cmVhbV9jc19ob29rKHN0cnVj dCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpyZXEsIHUzMiB0YWcpCiB7CkBAIC00NTQsNiArNTI5LDEzIEBAIHN0YXRpYyB2b2lkIGk5 MTVfcGVyZl9zdHJlYW1fY3NfaG9vayhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAog CQkJZ290byBlcnI7CiAJfQogCisJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9NTUlPKSB7CisJ CXJldCA9IGk5MTVfcGVyZl9zdHJlYW1fY2FwdHVyZV9tbWlvX2RhdGEocmVxLAorCQkJCWVudHJ5 LT5tbWlvX29mZnNldCk7CisJCWlmIChyZXQpCisJCQlnb3RvIGVycjsKKwl9CisKIAlpOTE1X3Zt YV9tb3ZlX3RvX2FjdGl2ZShkZXZfcHJpdi0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLnZt YSwgcmVxKTsKIAlyZXR1cm47CiAKQEAgLTYwMCw2ICs2ODIsMTMgQEAgc3RhdGljIGJvb2wgYXBw ZW5kX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlyZWFkX3N0YXRl LT5idWYgKz0gSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFOwogCX0KIAorCWlmIChzYW1wbGVfZmxh Z3MgJiBTQU1QTEVfTU1JTykgeworCQlpZiAoY29weV90b191c2VyKHJlYWRfc3RhdGUtPmJ1Ziwg ZGF0YS0+bW1pbywKKwkJCQkJNCpkZXZfcHJpdi0+cGVyZi5udW1fbW1pbykpCisJCQlyZXR1cm4g ZmFsc2U7CisJCXJlYWRfc3RhdGUtPmJ1ZiArPSA0KmRldl9wcml2LT5wZXJmLm51bV9tbWlvOwor CX0KKwogCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JUKSB7CiAJCWlmIChjb3B5 X3RvX3VzZXIocmVhZF9zdGF0ZS0+YnVmLCBkYXRhLT5yZXBvcnQsIHJlcG9ydF9zaXplKSkKIAkJ CXJldHVybiBmYWxzZTsKQEAgLTYxOCw2ICs3MDcsNyBAQCBzdGF0aWMgYm9vbCBhcHBlbmRfb2Ff YnVmZmVyX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJdTMyIHNhbXBs ZV9mbGFncyA9IHN0cmVhbS0+c2FtcGxlX2ZsYWdzOwogCXN0cnVjdCBzYW1wbGVfZGF0YSBkYXRh ID0geyAwIH07CisJdTMyIG1taW9fbGlzdF9kdW1teVtJOTE1X1BFUkZfTU1JT19OVU1fTUFYXSA9 IHsgMCB9OwogCiAJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9TT1VSQ0VfSU5GTykgewog CQllbnVtIGRybV9pOTE1X3BlcmZfb2FfZXZlbnRfc291cmNlIHNvdXJjZTsKQEAgLTY1NCw2ICs3 NDQsMTAgQEAgc3RhdGljIGJvb2wgYXBwZW5kX29hX2J1ZmZlcl9zYW1wbGUoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX1RTKQogCQlk YXRhLnRzID0gMDsKIAorCS8qIFBlcmlvZGljIE9BIHNhbXBsZXMgZG9uJ3QgaGF2ZSBtbWlvIGFz c29jaWF0ZWQgd2l0aCB0aGVtICovCisJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9NTUlPKQor CQlkYXRhLm1taW8gPSAodTggKiltbWlvX2xpc3RfZHVtbXk7CisKIAlpZiAoc2FtcGxlX2ZsYWdz ICYgU0FNUExFX09BX1JFUE9SVCkKIAkJZGF0YS5yZXBvcnQgPSByZXBvcnQ7CiAKQEAgLTkyMSw2 ICsxMDE1LDEwIEBAIHN0YXRpYyBib29sIGFwcGVuZF9vbmVfY3Nfc2FtcGxlKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkJCW5vZGUtPnRzX29mZnNldCk7CiAJfQogCisJaWYg KHNhbXBsZV9mbGFncyAmIFNBTVBMRV9NTUlPKQorCQlkYXRhLm1taW8gPSBkZXZfcHJpdi0+cGVy Zi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLmFkZHIgKworCQkJCW5vZGUtPm1taW9fb2Zmc2V0Owor CiAJYXBwZW5kX3NhbXBsZShzdHJlYW0sIHJlYWRfc3RhdGUsICZkYXRhKTsKIAogCXJldHVybiB0 cnVlOwpAQCAtMTU1Myw3ICsxNjUxLDggQEAgc3RhdGljIGludCBpOTE1X3BlcmZfc3RyZWFtX2lu aXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCQkJCSAgICAgIFNBTVBMRV9P QV9TT1VSQ0VfSU5GTyk7CiAJYm9vbCByZXF1aXJlX2NzX21vZGUgPSBwcm9wcy0+c2FtcGxlX2Zs YWdzICYgKFNBTVBMRV9QSUQgfAogCQkJCQkJICAgICAgU0FNUExFX1RBRyB8Ci0JCQkJCQkgICAg ICBTQU1QTEVfVFMpOworCQkJCQkJICAgICAgU0FNUExFX1RTIHwKKwkJCQkJCSAgICAgIFNBTVBM RV9NTUlPKTsKIAlpbnQgcmV0OwogCiAJLyogQ3R4IElkIGNhbiBiZSBzYW1wbGVkIGluIEhTVyBv bmx5IHRocm91Z2ggY29tbWFuZCBzdHJlYW1lciBtb2RlICovCkBAIC0xNjY2LDcgKzE3NjUsNyBA QCBzdGF0aWMgaW50IGk5MTVfcGVyZl9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtLAogCiAJaWYgKHJlcXVpcmVfY3NfbW9kZSAmJiAhcHJvcHMtPmNzX21vZGUpIHsK IAkJRFJNX0VSUk9SKAotCQkJIlBJRCwgVEFHIG9yIFRTIHNhbXBsaW5nIHJlcXVpcmUgYSByaW5n IHRvIGJlIHNwZWNpZmllZCIpOworCQkJIlBJRCwgVEFHLCBUUyBvciBNTUlPIHNhbXBsaW5nIHJl cXVpcmUgYSByaW5nIHRvIGJlIHNwZWNpZmllZCIpOwogCQlyZXQgPSAtRUlOVkFMOwogCQlnb3Rv IGNzX2Vycm9yOwogCX0KQEAgLTE3MTAsNiArMTgwOSwxMSBAQCBzdGF0aWMgaW50IGk5MTVfcGVy Zl9zdHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJc3RyZWFt LT5zYW1wbGVfc2l6ZSArPSBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkU7CiAJCX0KIAorCQlpZiAo cHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9NTUlPKSB7CisJCQlzdHJlYW0tPnNhbXBsZV9m bGFncyB8PSBTQU1QTEVfTU1JTzsKKwkJCXN0cmVhbS0+c2FtcGxlX3NpemUgKz0gNCAqIGRldl9w cml2LT5wZXJmLm51bV9tbWlvOworCQl9CisKIAkJcmV0ID0gYWxsb2NfY29tbWFuZF9zdHJlYW1f YnVmKGRldl9wcml2LCBzdHJlYW0tPnJpbmdfaWQpOwogCQlpZiAocmV0KQogCQkJZ290byBjc19l cnJvcjsKQEAgLTIyMjIsNiArMjMyNiw2OSBAQCBlcnI6CiAJcmV0dXJuIHJldDsKIH0KIAorc3Rh dGljIGludCBjaGVja19tbWlvX3doaXRlbGlzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiBudW1fbW1pbykKK3sKKyNkZWZpbmUgR0VOX1JBTkdFKGwsIGgpIEdFTk1BU0so aCwgbCkKKwlzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ2lzdGVyX3doaXRlbGlzdCB7CisJCXVpbnQ2 NF90IG9mZnNldDsKKwkJdWludDMyX3Qgc2l6ZTsKKwkJLyogc3VwcG9ydGVkIGdlbnMsIDB4MTAg Zm9yIDQsIDB4MzAgZm9yIDQgYW5kIDUsIGV0Yy4gKi8KKwkJdWludDMyX3QgZ2VuX2JpdG1hc2s7 CisJfSB3aGl0ZWxpc3RbXSA9IHsKKwkJeyBHRU42X0dUX0dGWF9SQzYsIDQsIEdFTl9SQU5HRSg3 LCA5KSB9LAorCQl7IEdFTjZfR1RfR0ZYX1JDNnAsIDQsIEdFTl9SQU5HRSg3LCA5KSB9LAorCX07 CisJaW50IGksIGNvdW50OworCisJZm9yIChjb3VudCA9IDA7IGNvdW50IDwgbnVtX21taW87IGNv dW50KyspIHsKKwkJLyogQ29hcnNlIGNoZWNrIG9uIG1taW8gcmVnIGFkZHJlc3NlcyBiZWluZyBu b24gemVybyAqLworCQlpZiAoIWRldl9wcml2LT5wZXJmLm1taW9fbGlzdFtjb3VudF0pCisJCQly ZXR1cm4gLUVJTlZBTDsKKworCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3aGl0ZWxpc3Qp OyBpKyspIHsKKwkJCWlmICgod2hpdGVsaXN0W2ldLm9mZnNldCA9PQorCQkJCWRldl9wcml2LT5w ZXJmLm1taW9fbGlzdFtjb3VudF0pICYmCisJCQkgICAgKDEgPDwgSU5URUxfSU5GTyhkZXZfcHJp di0+ZGV2KS0+Z2VuICYKKwkJCQkJd2hpdGVsaXN0W2ldLmdlbl9iaXRtYXNrKSkKKwkJCQlicmVh azsKKwkJfQorCisJCWlmIChpID09IEFSUkFZX1NJWkUod2hpdGVsaXN0KSkKKwkJCXJldHVybiAt RUlOVkFMOworCX0KKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjb3B5X21taW9fbGlzdChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJdm9pZCBfX3VzZXIgKm1taW8p Cit7CisJdm9pZCBfX3VzZXIgKm1taW9fbGlzdCA9ICgodTggX191c2VyICopbW1pbyArIDQpOwor CXUzMiBudW1fbW1pbzsKKwlpbnQgcmV0OworCisJaWYgKCFtbWlvKQorCQlyZXR1cm4gLUVJTlZB TDsKKworCXJldCA9IGdldF91c2VyKG51bV9tbWlvLCAodTMyIF9fdXNlciAqKW1taW8pOworCWlm IChyZXQpCisJCXJldHVybiByZXQ7CisKKwlpZiAobnVtX21taW8gPiBJOTE1X1BFUkZfTU1JT19O VU1fTUFYKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCW1lbXNldChkZXZfcHJpdi0+cGVyZi5tbWlv X2xpc3QsIDAsIEk5MTVfUEVSRl9NTUlPX05VTV9NQVgpOworCWlmIChjb3B5X2Zyb21fdXNlcihk ZXZfcHJpdi0+cGVyZi5tbWlvX2xpc3QsIG1taW9fbGlzdCwgNCpudW1fbW1pbykpCisJCXJldHVy biAtRUlOVkFMOworCisJcmV0ID0gY2hlY2tfbW1pb193aGl0ZWxpc3QoZGV2X3ByaXYsIG51bV9t bWlvKTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZGV2X3ByaXYtPnBlcmYubnVtX21t aW8gPSBudW1fbW1pbzsKKworCXJldHVybiAwOworfQorCiAvKiBOb3RlIHdlIGNvcHkgdGhlIHBy b3BlcnRpZXMgZnJvbSB1c2Vyc3BhY2Ugb3V0c2lkZSBvZiB0aGUgaTkxNSBwZXJmCiAgKiBtdXRl eCB0byBhdm9pZCBhbiBhd2t3YXJkIGxvY2tkZXAgd2l0aCBtbWFwX3NlbS4KICAqCkBAIC0yMzM0 LDYgKzI1MDEsMTIgQEAgc3RhdGljIGludCByZWFkX3Byb3BlcnRpZXNfdW5sb2NrZWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljYXNlIERSTV9JOTE1X1BFUkZfU0FNUExF X1RTX1BST1A6CiAJCQlwcm9wcy0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9UUzsKIAkJCWJyZWFr OworCQljYXNlIERSTV9JOTE1X1BFUkZfU0FNUExFX01NSU9fUFJPUDoKKwkJCXJldCA9IGNvcHlf bW1pb19saXN0KGRldl9wcml2LCAodTY0IF9fdXNlciAqKXZhbHVlKTsKKwkJCWlmIChyZXQpCisJ CQkJcmV0dXJuIHJldDsKKwkJCXByb3BzLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX01NSU87CisJ CQlicmVhazsKIAkJY2FzZSBEUk1fSTkxNV9QRVJGX1BST1BfTUFYOgogCQkJQlVHKCk7CiAJCX0K ZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9k cm0vaTkxNV9kcm0uaAppbmRleCAyNTcwZjNlYS4uMzhjZjM4NSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApA QCAtMTE3MCw2ICsxMTcwLDEyIEBAIGVudW0gZHJtX2k5MTVfcGVyZl9vYV9ldmVudF9zb3VyY2Ug ewogCUk5MTVfUEVSRl9PQV9FVkVOVF9TT1VSQ0VfTUFYCS8qIG5vbi1BQkkgKi8KIH07CiAKKyNk ZWZpbmUgSTkxNV9QRVJGX01NSU9fTlVNX01BWAk4CitzdHJ1Y3QgZHJtX2k5MTVfcGVyZl9tbWlv X2xpc3QgeworCV9fdTMyIG51bV9tbWlvOworCV9fdTMyIG1taW9fbGlzdFtJOTE1X1BFUkZfTU1J T19OVU1fTUFYXTsKK307CisKIGVudW0gZHJtX2k5MTVfcGVyZl9wcm9wZXJ0eV9pZCB7CiAJLyoq CiAJICogT3BlbiB0aGUgc3RyZWFtIGZvciBhIHNwZWNpZmljIGNvbnRleHQgaGFuZGxlIChhcyB1 c2VkIHdpdGgKQEAgLTEyNDIsNiArMTI0OCwxMyBAQCBlbnVtIGRybV9pOTE1X3BlcmZfcHJvcGVy dHlfaWQgewogCSAqLwogCURSTV9JOTE1X1BFUkZfU0FNUExFX1RTX1BST1AsCiAKKwkvKioKKwkg KiBUaGlzIHByb3BlcnR5IHJlcXVlc3RzIGluY2x1c2lvbiBvZiBtbWlvIHJlZ2lzdGVyIHZhbHVl cyBpbiB0aGUgcGVyZgorCSAqIHNhbXBsZSBkYXRhLiBUaGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0 eSBzcGVjaWZpZXMgdGhlIGFkZHJlc3Mgb2YgdXNlcgorCSAqIHN0cnVjdCBoYXZpbmcgdGhlIHJl Z2lzdGVyIGFkZHJlc3Nlcy4KKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1NBTVBMRV9NTUlPX1BST1As CisKIAlEUk1fSTkxNV9QRVJGX1BST1BfTUFYIC8qIG5vbi1BQkkgKi8KIH07CiAKQEAgLTEyOTQs NiArMTMwNyw3IEBAIGVudW0gZHJtX2k5MTVfcGVyZl9yZWNvcmRfdHlwZSB7CiAJICogICAgIHsg dTMyIHBpZDsgfSAmJiBEUk1fSTkxNV9QRVJGX1NBTVBMRV9QSURfUFJPUAogCSAqICAgICB7IHUz MiB0YWc7IH0gJiYgRFJNX0k5MTVfUEVSRl9TQU1QTEVfVEFHX1BST1AKIAkgKiAgICAgeyB1NjQg dGltZXN0YW1wOyB9ICYmIERSTV9JOTE1X1BFUkZfU0FNUExFX1RTX1BST1AKKwkgKiAgICAgeyB1 MzIgbW1pb1tdOyB9ICYmIERSTV9JOTE1X1BFUkZfU0FNUExFX01NSU9fUFJPUAogCSAqICAgICB7 IHUzMiBvYV9yZXBvcnRbXTsgfSAmJiBEUk1fSTkxNV9QRVJGX1NBTVBMRV9PQV9QUk9QCiAJICog fTsKIAkgKi8KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK