From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH 15/15] drm/i915: Support for capturing MMIO register values Date: Thu, 2 Jun 2016 10:48:49 +0530 Message-ID: <1464844729-2774-16-git-send-email-sourab.gupta@intel.com> References: <1464844729-2774-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id E540F6EAFD for ; Thu, 2 Jun 2016 05:17:46 +0000 (UTC) In-Reply-To: <1464844729-2774-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: Daniel Vetter , Sourab Gupta , Deepak S List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBh ZGRzIHN1cHBvcnQgZm9yIGNhcHR1cmluZyBNTUlPIHJlZ2lzdGVyIHZhbHVlcyB0aHJvdWdoCmk5 MTUgcGVyZiBpbnRlcmZhY2UuClRoZSB1c2Vyc3BhY2UgY2FuIHJlcXVlc3QgdXB0byA4IE1NSU8g cmVnaXN0ZXIgdmFsdWVzIHRvIGJlIGR1bXBlZC4KVGhlIGFkZHJlc3NlcyBvZiB0aGVzZSByZWdp c3RlcnMgY2FuIGJlIHBhc3NlZCB0aHJvdWdoIHRoZSBjb3JyZXNwb25kaW5nCnByb3BlcnR5ICd2 YWx1ZScgZmllbGQgd2hpbGUgb3BlbmluZyB0aGUgc3RyZWFtLgpUaGUgY29tbWFuZHMgdG8gZHVt cCB0aGUgdmFsdWVzIG9mIHRoZXNlIE1NSU8gcmVnaXN0ZXJzIGFyZSB0aGVuCmluc2VydGVkIGlu dG8gdGhlIHJpbmcgYWxvbmd3aXRoIG90aGVyIGNvbW1hbmRzLgoKU2lnbmVkLW9mZi1ieTogU291 cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmggIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j IHwgMTczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQogaW5jbHVkZS91 YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgMTQgKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAxODgg aW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRl eCBkOTllYTczLi5iZmE1MmRjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTE4NjUsNiAr MTg2NSw3IEBAIHN0cnVjdCBpOTE1X3BlcmZfY3NfZGF0YV9ub2RlIHsKIAl1MzIgc3RhcnRfb2Zm c2V0OwogCXUzMiBvYV9vZmZzZXQ7CiAJdTMyIHRzX29mZnNldDsKKwl1MzIgbW1pb19vZmZzZXQ7 CiAKIAkvKiBidWZmZXIgc2l6ZSBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZW50cnkgKi8KIAl1MzIg c2l6ZTsKQEAgLTIxODYsNiArMjE4Nyw5IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAkJ c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnJpbmdfc3RyZWFtW0k5MTVfTlVNX0VOR0lORVNdOwog CQl3YWl0X3F1ZXVlX2hlYWRfdCBwb2xsX3dxW0k5MTVfTlVNX0VOR0lORVNdOwogCisJCXUzMiBu dW1fbW1pbzsKKwkJdTMyIG1taW9fbGlzdFtJOTE1X1BFUkZfTU1JT19OVU1fTUFYXTsKKwogCQlz dHJ1Y3QgewogCQkJdTMyIHNwZWNpZmljX2N0eF9pZDsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYu YwppbmRleCBlMzQwY2Y5Zi4uZTY2MWQ4ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMKQEAg LTExMSw2ICsxMTEsNyBAQCBzdHJ1Y3Qgc2FtcGxlX2RhdGEgewogCXU2NCBncHVfdHM7CiAJdTY0 IGNsa19tb25vcmF3OwogCWNvbnN0IHU4ICpyZXBvcnQ7CisJY29uc3QgdTggKm1taW87CiB9Owog CiAvKiBmb3Igc3lzY3RsIHByb2NfZG9pbnR2ZWNfbWlubWF4IG9mIGk5MTVfb2FfbWluX3RpbWVy X2V4cG9uZW50ICovCkBAIC0xNjksNiArMTcwLDcgQEAgc3RhdGljIGNvbnN0IGVudW0gaW50ZWxf ZW5naW5lX2lkIHVzZXJfcmluZ19tYXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7CiAjZGVmaW5l IFNBTVBMRV9UQUcJCSgxPDw0KQogI2RlZmluZSBTQU1QTEVfVFMJCSgxPDw1KQogI2RlZmluZSBT QU1QTEVfQ0xLX01PTk9fUkFXCSgxPDw2KQorI2RlZmluZSBTQU1QTEVfTU1JTwkJKDE8PDcpCiAK IHN0cnVjdCBwZXJmX29wZW5fcHJvcGVydGllcyB7CiAJdTMyIHNhbXBsZV9mbGFnczsKQEAgLTQw MSw2ICs0MDMsOSBAQCBzdGF0aWMgaW50IGluc2VydF9wZXJmX2VudHJ5KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc2FtcGxlX3RzID0gdHJ1ZTsKIAl9CiAKKwlpZiAoc2Ft cGxlX2ZsYWdzICYgU0FNUExFX01NSU8pCisJCWVudHJ5X3NpemUgKz0gNCpkZXZfcHJpdi0+cGVy Zi5udW1fbW1pbzsKKwogCXNwaW5fbG9jaygmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0X2xvY2tb aWRdKTsKIAlpZiAobGlzdF9lbXB0eSgmZGV2X3ByaXYtPnBlcmYubm9kZV9saXN0W2lkXSkpIHsK IAkJb2Zmc2V0ID0gMDsKQEAgLTQ3OCw2ICs0ODMsMTAgQEAgb3V0OgogCQllbnRyeS0+dHNfb2Zm c2V0ID0gQUxJR04oZW50cnktPnRzX29mZnNldCwgVFNfQUREUl9BTElHTik7CiAJCW9mZnNldCA9 IGVudHJ5LT50c19vZmZzZXQgKyBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkU7CiAJfQorCWlmIChz YW1wbGVfZmxhZ3MgJiBTQU1QTEVfTU1JTykgeworCQllbnRyeS0+bW1pb19vZmZzZXQgPSBvZmZz ZXQ7CisJCW9mZnNldCA9IGVudHJ5LT5tbWlvX29mZnNldCArIDQqZGV2X3ByaXYtPnBlcmYubnVt X21taW87CisJfQogCiAJbGlzdF9hZGRfdGFpbCgmZW50cnktPmxpbmssICZkZXZfcHJpdi0+cGVy Zi5ub2RlX2xpc3RbaWRdKTsKICNpZm5kZWYgQ01EX1NUUkVBTV9CVUZfT1ZFUkZMT1dfQUxMT1dF RApAQCAtNjIzLDYgKzYzMiw2NiBAQCBzdGF0aWMgaW50IGk5MTVfcmluZ19zdHJlYW1fY2FwdHVy ZV90cyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKIAlyZXR1cm4gMDsKIH0KIAor c3RhdGljIGludCBpOTE1X3Jpbmdfc3RyZWFtX2NhcHR1cmVfbW1pbyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJlcSwKKwkJCQkJCXUzMiBvZmZzZXQpCit7CisJc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7CisJc3RydWN0IGludGVsX3JpbmdidWZmZXIg KnJpbmdidWYgPSByZXEtPnJpbmdidWY7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gZW5naW5lLT5kZXYtPmRldl9wcml2YXRlOworCWludCBudW1fbW1pbyA9IGRldl9wcml2 LT5wZXJmLm51bV9tbWlvOworCXUzMiBtbWlvX2FkZHIsIGFkZHIgPSAwOworCWludCByZXQsIGk7 CisKKwlyZXQgPSBpbnRlbF9yaW5nX2JlZ2luKHJlcSwgNCpudW1fbW1pbyk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCW1taW9fYWRkciA9CisJCWRldl9wcml2LT5wZXJmLmNvbW1hbmRf c3RyZWFtX2J1ZltlbmdpbmUtPmlkXS52bWEtPm5vZGUuc3RhcnQgKworCQkJb2Zmc2V0OworCisJ aWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgeworCQlmb3IgKGkgPSAwOyBpIDwgbnVtX21taW87 IGkrKykgeworCQkJdWludDMyX3QgY21kOworCisJCQlhZGRyID0gbW1pb19hZGRyICsgNCppOwor CisJCQljbWQgPSBNSV9TVE9SRV9SRUdJU1RFUl9NRU1fR0VOOCB8CisJCQkJCQlNSV9TUk1fTFJN X0dMT0JBTF9HVFQ7CisKKwkJCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGNtZCk7 CisJCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLAorCQkJCQlkZXZfcHJpdi0+cGVy Zi5tbWlvX2xpc3RbaV0pOworCQkJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgYWRk cik7CisJCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKKwkJfQorCQlpbnRl bF9sb2dpY2FsX3JpbmdfYWR2YW5jZShyaW5nYnVmKTsKKwl9IGVsc2UgeworCQlmb3IgKGkgPSAw OyBpIDwgbnVtX21taW87IGkrKykgeworCQkJdWludDMyX3QgY21kOworCisJCQlhZGRyID0gbW1p b19hZGRyICsgNCppOworCisJCQlpZiAoSU5URUxfSU5GTyhlbmdpbmUtPmRldiktPmdlbiA+PSA4 KQorCQkJCWNtZCA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTV9HRU44IHwKKwkJCQkJTUlfU1JNX0xS TV9HTE9CQUxfR1RUOworCQkJZWxzZQorCQkJCWNtZCA9IE1JX1NUT1JFX1JFR0lTVEVSX01FTSB8 CisJCQkJCU1JX1NSTV9MUk1fR0xPQkFMX0dUVDsKKworCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgY21kKTsKKwkJCWludGVsX3JpbmdfZW1pdChlbmdpbmUsIGRldl9wcml2LT5wZXJmLm1taW9f bGlzdFtpXSk7CisJCQlpbnRlbF9yaW5nX2VtaXQoZW5naW5lLCBhZGRyKTsKKwkJCWlmIChJTlRF TF9JTkZPKGVuZ2luZS0+ZGV2KS0+Z2VuID49IDgpCisJCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2lu ZSwgMCk7CisJCQllbHNlCisJCQkJaW50ZWxfcmluZ19lbWl0KGVuZ2luZSwgTUlfTk9PUCk7CisJ CX0KKwkJaW50ZWxfcmluZ19hZHZhbmNlKGVuZ2luZSk7CisJfQorCXJldHVybiAwOworfQorCiBz dGF0aWMgdm9pZCBpOTE1X3Jpbmdfc3RyZWFtX2NzX2hvb2soc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSwKIAkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgdTMyIHRh ZykKIHsKQEAgLTY2NCw2ICs3MzMsMTMgQEAgc3RhdGljIHZvaWQgaTkxNV9yaW5nX3N0cmVhbV9j c19ob29rKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQlnb3RvIGVycl91bnJl ZjsKIAl9CiAKKwlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX01NSU8pIHsKKwkJcmV0ID0gaTkx NV9yaW5nX3N0cmVhbV9jYXB0dXJlX21taW8ocmVxLAorCQkJCWVudHJ5LT5tbWlvX29mZnNldCk7 CisJCWlmIChyZXQpCisJCQlnb3RvIGVycl91bnJlZjsKKwl9CisKIAlpOTE1X3ZtYV9tb3ZlX3Rv X2FjdGl2ZShkZXZfcHJpdi0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLnZtYSwgcmVxKTsK IAlyZXR1cm47CiAKQEAgLTkyMiw2ICs5OTgsMTIgQEAgc3RhdGljIGludCBhcHBlbmRfc2FtcGxl KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCWJ1ZiArPSBJOTE1X1BFUkZfVFNf U0FNUExFX1NJWkU7CiAJfQogCisJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9NTUlPKSB7CisJ CWlmIChjb3B5X3RvX3VzZXIoYnVmLCBkYXRhLT5tbWlvLCA0KmRldl9wcml2LT5wZXJmLm51bV9t bWlvKSkKKwkJCXJldHVybiAtRUZBVUxUOworCQlidWYgKz0gNCpkZXZfcHJpdi0+cGVyZi5udW1f bW1pbzsKKwl9CisKIAlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkgewogCQlp ZiAoY29weV90b191c2VyKGJ1ZiwgZGF0YS0+cmVwb3J0LCByZXBvcnRfc2l6ZSkpCiAJCQlyZXR1 cm4gLUVGQVVMVDsKQEAgLTk4MCw2ICsxMDYyLDcgQEAgc3RhdGljIGludCBhcHBlbmRfb2FfYnVm ZmVyX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CiAJdTMyIHNhbXBsZV9m bGFncyA9IHN0cmVhbS0+c2FtcGxlX2ZsYWdzOwogCXN0cnVjdCBzYW1wbGVfZGF0YSBkYXRhID0g eyAwIH07CisJdTMyIG1taW9fbGlzdF9kdW1teVtJOTE1X1BFUkZfTU1JT19OVU1fTUFYXSA9IHsg MCB9OwogCiAJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9TT1VSQ0VfSU5GTykgewogCQll bnVtIGRybV9pOTE1X3BlcmZfb2FfZXZlbnRfc291cmNlIHNvdXJjZTsKQEAgLTEwMTksNiArMTEw MiwxMCBAQCBzdGF0aWMgaW50IGFwcGVuZF9vYV9idWZmZXJfc2FtcGxlKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCiAJCWRhdGEuY2xrX21vbm9yYXcgPSBnZXRfY2xrX21vbm9yYXdf ZnJvbV9ncHVfdHMoc3RyZWFtLCBncHVfdHMpOwogCX0KIAorCS8qIFBlcmlvZGljIE9BIHNhbXBs ZXMgZG9uJ3QgaGF2ZSBtbWlvIGFzc29jaWF0ZWQgd2l0aCB0aGVtICovCisJaWYgKHNhbXBsZV9m bGFncyAmIFNBTVBMRV9NTUlPKQorCQlkYXRhLm1taW8gPSAodTggKiltbWlvX2xpc3RfZHVtbXk7 CisKIAlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkKIAkJZGF0YS5yZXBvcnQg PSByZXBvcnQ7CiAKQEAgLTE1MjUsNiArMTYxMiwxMCBAQCBzdGF0aWMgaW50IGFwcGVuZF9vbmVf Y3Nfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQkJCQkJc3RyZWFt LAlncHVfdHMpOwogCX0KIAorCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfTU1JTykKKwkJZGF0 YS5tbWlvID0gZGV2X3ByaXYtPnBlcmYuY29tbWFuZF9zdHJlYW1fYnVmW2lkXS5hZGRyICsKKwkJ CQlub2RlLT5tbWlvX29mZnNldDsKKwogCXJldHVybiBhcHBlbmRfc2FtcGxlKHN0cmVhbSwgcmVh ZF9zdGF0ZSwgJmRhdGEpOwogfQogCkBAIC0yMzQyLDEwICsyNDMzLDEyIEBAIHN0YXRpYyBpbnQg aTkxNV9yaW5nX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJ Ym9vbCByZXF1aXJlX29hX3VuaXQgPSBwcm9wcy0+c2FtcGxlX2ZsYWdzICYgKFNBTVBMRV9PQV9S RVBPUlQgfAogCQkJCQkJICAgICAgU0FNUExFX09BX1NPVVJDRV9JTkZPKTsKIAlib29sIHJlcXVp cmVfY3NfbW9kZSA9IHByb3BzLT5zYW1wbGVfZmxhZ3MgJiAoU0FNUExFX1BJRCB8Ci0JCQkJCQkg ICAgICBTQU1QTEVfVEFHKTsKKwkJCQkJCSAgICAgIFNBTVBMRV9UQUcgfAorCQkJCQkJICAgICAg U0FNUExFX01NSU8pOwogCWJvb2wgY3Nfc2FtcGxlX2RhdGEgPSBwcm9wcy0+c2FtcGxlX2ZsYWdz ICYgKFNBTVBMRV9PQV9SRVBPUlQgfAogCQkJCQkJCVNBTVBMRV9UUyB8Ci0JCQkJCQkJU0FNUExF X0NMS19NT05PX1JBVyk7CisJCQkJCQkJU0FNUExFX0NMS19NT05PX1JBVyB8CisJCQkJCQkJU0FN UExFX01NSU8pOwogCWludCByZXQ7CiAKIAlpZiAoKHByb3BzLT5zYW1wbGVfZmxhZ3MgJiBTQU1Q TEVfQ1RYX0lEKSAmJiAhcHJvcHMtPmNzX21vZGUpIHsKQEAgLTI1MTMsNyArMjYwNiw3IEBAIHN0 YXRpYyBpbnQgaTkxNV9yaW5nX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0sCiAKIAlpZiAocmVxdWlyZV9jc19tb2RlICYmICFwcm9wcy0+Y3NfbW9kZSkgewogCQlE Uk1fRVJST1IoCi0JCQkiUElELCBUQUcgb3IgVFMgc2FtcGxpbmcgcmVxdWlyZSBhIHJpbmcgdG8g YmUgc3BlY2lmaWVkIik7CisJCQkiUElELCBUQUcsIFRTIG9yIE1NSU8gc2FtcGxpbmcgcmVxdWly ZSBhIHJpbmcgdG8gYmUgc3BlY2lmaWVkIik7CiAJCXJldCA9IC1FSU5WQUw7CiAJCWdvdG8gY3Nf ZXJyb3I7CiAJfQpAQCAtMjU2MSw2ICsyNjU0LDExIEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX3N0 cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQlzdHJlYW0tPnNh bXBsZV9zaXplICs9IDQ7CiAJCX0KIAorCQlpZiAocHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBM RV9NTUlPKSB7CisJCQlzdHJlYW0tPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVfTU1JTzsKKwkJCXN0 cmVhbS0+c2FtcGxlX3NpemUgKz0gNCAqIGRldl9wcml2LT5wZXJmLm51bV9tbWlvOworCQl9CisK IAkJcmV0ID0gYWxsb2NfY29tbWFuZF9zdHJlYW1fYnVmKGRldl9wcml2LCBzdHJlYW0tPmVuZ2lu ZSk7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGNzX2Vycm9yOwpAQCAtMzA4NCw2ICszMTgyLDY5IEBA IGVycjoKIAlyZXR1cm4gcmV0OwogfQogCitzdGF0aWMgaW50IGNoZWNrX21taW9fd2hpdGVsaXN0 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG51bV9tbWlvKQoreworI2Rl ZmluZSBHRU5fUkFOR0UobCwgaCkgR0VOTUFTSyhoLCBsKQorCXN0YXRpYyBjb25zdCBzdHJ1Y3Qg cmVnaXN0ZXJfd2hpdGVsaXN0IHsKKwkJaTkxNV9yZWdfdCBtbWlvOworCQl1aW50MzJfdCBzaXpl OworCQkvKiBzdXBwb3J0ZWQgZ2VucywgMHgxMCBmb3IgNCwgMHgzMCBmb3IgNCBhbmQgNSwgZXRj LiAqLworCQl1aW50MzJfdCBnZW5fYml0bWFzazsKKwl9IHdoaXRlbGlzdFtdID0geworCQl7IEdF TjZfR1RfR0ZYX1JDNiwgNCwgR0VOX1JBTkdFKDcsIDkpIH0sCisJCXsgR0VONl9HVF9HRlhfUkM2 cCwgNCwgR0VOX1JBTkdFKDcsIDkpIH0sCisJfTsKKwlpbnQgaSwgY291bnQ7CisKKwlmb3IgKGNv dW50ID0gMDsgY291bnQgPCBudW1fbW1pbzsgY291bnQrKykgeworCQkvKiBDb2Fyc2UgY2hlY2sg b24gbW1pbyByZWcgYWRkcmVzc2VzIGJlaW5nIG5vbiB6ZXJvICovCisJCWlmICghZGV2X3ByaXYt PnBlcmYubW1pb19saXN0W2NvdW50XSkKKwkJCXJldHVybiAtRUlOVkFMOworCisJCWZvciAoaSA9 IDA7IGkgPCBBUlJBWV9TSVpFKHdoaXRlbGlzdCk7IGkrKykgeworCQkJaWYgKCggaTkxNV9tbWlv X3JlZ19vZmZzZXQod2hpdGVsaXN0W2ldLm1taW8pID09CisJCQkJZGV2X3ByaXYtPnBlcmYubW1p b19saXN0W2NvdW50XSkgJiYKKwkJCSAgICAoMSA8PCBJTlRFTF9JTkZPKGRldl9wcml2LT5kZXYp LT5nZW4gJgorCQkJCQl3aGl0ZWxpc3RbaV0uZ2VuX2JpdG1hc2spKQorCQkJCWJyZWFrOworCQl9 CisKKwkJaWYgKGkgPT0gQVJSQVlfU0laRSh3aGl0ZWxpc3QpKQorCQkJcmV0dXJuIC1FSU5WQUw7 CisJfQorCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGNvcHlfbW1pb19saXN0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQl2b2lkIF9fdXNlciAqbW1pbykKK3sKKwl2 b2lkIF9fdXNlciAqbW1pb19saXN0ID0gKCh1OCBfX3VzZXIgKiltbWlvICsgNCk7CisJdTMyIG51 bV9tbWlvOworCWludCByZXQ7CisKKwlpZiAoIW1taW8pCisJCXJldHVybiAtRUlOVkFMOworCisJ cmV0ID0gZ2V0X3VzZXIobnVtX21taW8sICh1MzIgX191c2VyICopbW1pbyk7CisJaWYgKHJldCkK KwkJcmV0dXJuIHJldDsKKworCWlmIChudW1fbW1pbyA+IEk5MTVfUEVSRl9NTUlPX05VTV9NQVgp CisJCXJldHVybiAtRUlOVkFMOworCisJbWVtc2V0KGRldl9wcml2LT5wZXJmLm1taW9fbGlzdCwg MCwgSTkxNV9QRVJGX01NSU9fTlVNX01BWCk7CisJaWYgKGNvcHlfZnJvbV91c2VyKGRldl9wcml2 LT5wZXJmLm1taW9fbGlzdCwgbW1pb19saXN0LCA0Km51bV9tbWlvKSkKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwlyZXQgPSBjaGVja19tbWlvX3doaXRlbGlzdChkZXZfcHJpdiwgbnVtX21taW8pOwor CWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlkZXZfcHJpdi0+cGVyZi5udW1fbW1pbyA9IG51 bV9tbWlvOworCisJcmV0dXJuIDA7Cit9CisKIC8qIE5vdGUgd2UgY29weSB0aGUgcHJvcGVydGll cyBmcm9tIHVzZXJzcGFjZSBvdXRzaWRlIG9mIHRoZSBpOTE1IHBlcmYKICAqIG11dGV4IHRvIGF2 b2lkIGFuIGF3a3dhcmQgbG9ja2RlcCB3aXRoIG1tYXBfc2VtLgogICoKQEAgLTMyMDQsNiArMzM2 NSwxMiBAQCBzdGF0aWMgaW50IHJlYWRfcHJvcGVydGllc191bmxvY2tlZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9D TE9DS19NT05PVE9OSUNfUkFXOgogCQkJcHJvcHMtPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVfQ0xL X01PTk9fUkFXOwogCQkJYnJlYWs7CisJCWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9N TUlPOgorCQkJcmV0ID0gY29weV9tbWlvX2xpc3QoZGV2X3ByaXYsICh1NjQgX191c2VyICopdmFs dWUpOworCQkJaWYgKHJldCkKKwkJCQlyZXR1cm4gcmV0OworCQkJcHJvcHMtPnNhbXBsZV9mbGFn cyB8PSBTQU1QTEVfTU1JTzsKKwkJCWJyZWFrOwogCQljYXNlIERSTV9JOTE1X1BFUkZfUFJPUF9N QVg6CiAJCQlCVUcoKTsKIAkJfQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCmluZGV4IGM0Y2FlNTMuLjdmZDA0OGMg MTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmgKQEAgLTEyMDYsNiArMTIwNiwxMiBAQCBlbnVtIGRybV9pOTE1X3Bl cmZfb2FfZXZlbnRfc291cmNlIHsKIAlJOTE1X1BFUkZfT0FfRVZFTlRfU09VUkNFX01BWAkvKiBu b24tQUJJICovCiB9OwogCisjZGVmaW5lIEk5MTVfUEVSRl9NTUlPX05VTV9NQVgJOAorc3RydWN0 IGRybV9pOTE1X3BlcmZfbW1pb19saXN0IHsKKwlfX3UzMiBudW1fbW1pbzsKKwlfX3UzMiBtbWlv X2xpc3RbSTkxNV9QRVJGX01NSU9fTlVNX01BWF07Cit9OworCiBlbnVtIGRybV9pOTE1X3BlcmZf cHJvcGVydHlfaWQgewogCS8qKgogCSAqIE9wZW4gdGhlIHN0cmVhbSBmb3IgYSBzcGVjaWZpYyBj b250ZXh0IGhhbmRsZSAoYXMgdXNlZCB3aXRoCkBAIC0xMjg0LDYgKzEyOTAsMTMgQEAgZW51bSBk cm1faTkxNV9wZXJmX3Byb3BlcnR5X2lkIHsKIAkgKi8KIAlEUk1fSTkxNV9QRVJGX1BST1BfU0FN UExFX0NMT0NLX01PTk9UT05JQ19SQVcsCiAKKwkvKioKKwkgKiBUaGlzIHByb3BlcnR5IHJlcXVl c3RzIGluY2x1c2lvbiBvZiBtbWlvIHJlZ2lzdGVyIHZhbHVlcyBpbiB0aGUgcGVyZgorCSAqIHNh bXBsZSBkYXRhLiBUaGUgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eSBzcGVjaWZpZXMgdGhlIGFkZHJl c3Mgb2YgdXNlcgorCSAqIHN0cnVjdCBoYXZpbmcgdGhlIHJlZ2lzdGVyIGFkZHJlc3Nlcy4KKwkg Ki8KKwlEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX01NSU8sCisKIAlEUk1fSTkxNV9QRVJGX1BS T1BfTUFYIC8qIG5vbi1BQkkgKi8KIH07CiAKQEAgLTEzNTQsNiArMTM2Nyw3IEBAIGVudW0gZHJt X2k5MTVfcGVyZl9yZWNvcmRfdHlwZSB7CiAJICogICAgIHsgdTMyIHRhZzsgfSAmJiBEUk1fSTkx NV9QRVJGX1BST1BfU0FNUExFX1RBRwogCSAqICAgICB7IHU2NCBncHVfdHM7IH0gJiYgRFJNX0k5 MTVfUEVSRl9QUk9QX1NBTVBMRV9UUwogCSAqICAgICB7IHU2NCBjbGtfbW9ubzsgfSAmJiBEUk1f STkxNV9QRVJGX1BST1BfU0FNUExFX0NMT0NLX01PTk9UT05JQworCSAqICAgICB7IHUzMiBtbWlv W107IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9NTUlPCiAJICogICAgIHsgdTMyIG9h X3JlcG9ydFtdOyB9ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfT0EKIAkgKiB9OwogCSAq LwotLSAKMS45LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAo=