From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [RFC 1/8] drm/i915: Add a new PMU for handling non-OA counter data profiling requests Date: Wed, 15 Jul 2015 14:21:39 +0530 Message-ID: <1436950306-14147-2-git-send-email-sourab.gupta@intel.com> References: <1436950306-14147-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 7B6276EB13 for ; Wed, 15 Jul 2015 01:49:43 -0700 (PDT) In-Reply-To: <1436950306-14147-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: Insoo Woo , Peter Zijlstra , Jabin Wu , Sourab Gupta List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhlIGN1cnJlbnQg cGVyZiBQTVUgZHJpdmVyIGlzIHNwZWNpZmljIGZvciBjb2xsZWN0aW9uIG9mIE9BIGNvdW50ZXIK c3RhdGlzdGljcyAod2hpY2ggbWF5IGJlIGRvbmUgaW4gYSBwZXJpb2RpYyBvciBhc3luY2hyb25v dXMgd2F5KS4gU2luY2UKdGhpcyBlbmFibGVzIHVzIChhbmQgbGltaXRzIHVzKSB0byByZW5kZXIg cmluZywgd2UgaGF2ZSBubyBtZWFucyBmb3IKY29sbGVjdGlvbiBvZiBkYXRhIHBlcnRhaW5pbmcg dG8gb3RoZXIgcmluZ3MuCgpUbyBvdmVyY29tZSB0aGlzIGxpbWl0YXRpb24sIHdlIG5lZWQgdG8g aGF2ZSBhIG5ldyBQTVUgZHJpdmVyIHdoaWNoIGVuYWJsZXMKZGF0YSBjb2xsZWN0aW9uIGZvciBv dGhlciByaW5ncyBhbHNvIChpbiBhIG5vbi1PQSBzcGVjaWZpYyBtb2RlKS4KVGhpcyBwYXRjaCBh ZGRzIGEgbmV3IHBlcmYgUE1VIHRvIGk5MTUgZGV2aWNlIHByaXZhdGUsIGZvciBoYW5kbGluZwpw cm9maWxpbmcgcmVxdWVzdHMgZm9yIG5vbi1PQSBjb3VudGVyIGRhdGEuVGhpcyBkYXRhIG1heSBl bmNvbXBhc3MKdGltZXN0YW1wcywgbW1pbyByZWdpc3RlciB2YWx1ZXMsIGV0Yy4gZm9yIHRoZSBy ZWxldmFudCByaW5nLgpUaGUgbmV3IHBlcmYgUE1VIHdpbGwgc2VydmUgdGhlc2UgcHVycG9zZXMs IHdpdGhvdXQgY29uc3RyYWluaW5nIGl0c2VsZiB0bwp0eXBlIG9mIGRhdGEgYmVpbmcgZHVtcGVk ICh3aGljaCBtYXkgcmVzdHJpY3QgdGhlIHVzZXIgdG8gc3BlY2lmaWMgcmluZwpsaWtlIGluIGNh c2Ugb2YgT0EgY291bnRlcnMpLgoKVGhlIHBhdGNoIGludHJvZHVjZXMgdGhpcyBQTVUgZHJpdmVy IGFsb25nd2l0aCBpdHMgYXNzb2NpYXRlZCBjYWxsYmFja3MuCgpTaWduZWQtb2ZmLWJ5OiBTb3Vy YWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYyAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aCAgICAgfCAgMTggKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYyB8IDIy MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwg MjQwIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCAwNTUzZjIwLi40 YjkxNTA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTgyMiw2ICs4MjIsNyBAQCBpbnQg aTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25lZCBsb25nIGZs YWdzKQogCSAqIG90aGVyd2lzZSBpOTE1X29hX2NvbnRleHRfcGluX25vdGlmeSgpIHdpbGwgbG9j ayBhbiB1bi1pbml0aWFsaXplZAogCSAqIHNwaW5sb2NrLCB1cHNldHRpbmcgbG9ja2RlcCBjaGVj a3MgKi8KIAlpOTE1X29hX3BtdV9yZWdpc3RlcihkZXYpOworCWk5MTVfZ2VuX3BtdV9yZWdpc3Rl cihkZXYpOwogCiAJaW50ZWxfcG1fc2V0dXAoZGV2KTsKIApAQCAtMTA3Miw2ICsxMDczLDcgQEAg aW50IGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlyZXR1cm4g cmV0OwogCX0KIAorCWk5MTVfZ2VuX3BtdV91bnJlZ2lzdGVyKGRldik7CiAJaTkxNV9vYV9wbXVf dW5yZWdpc3RlcihkZXYpOwogCWludGVsX3Bvd2VyX2RvbWFpbnNfZmluaShkZXZfcHJpdik7CiAK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDk0MDliNGEuLjdlOGU3N2IgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaApAQCAtMTk4NSw2ICsxOTg1LDIwIEBAIHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlIHsKIAkJaW50IHNhbXBsZV9pbmZvX2ZsYWdzOwogCX0gb2FfcG11OwogCisJc3RydWN0IHsK KwkJc3RydWN0IHBtdSBwbXU7CisJCXNwaW5sb2NrX3QgbG9jazsKKwkJc3RydWN0IGhydGltZXIg dGltZXI7CisJCXN0cnVjdCBwdF9yZWdzIGR1bW15X3JlZ3M7CisJCXN0cnVjdCBwZXJmX2V2ZW50 ICpleGNsdXNpdmVfZXZlbnQ7CisJCWJvb2wgZXZlbnRfYWN0aXZlOworCisJCXN0cnVjdCB7CisJ CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCQkJdTggKmFkZHI7CisJCX0gYnVm ZmVyOworCX0gZ2VuX3BtdTsKKwogCXZvaWQgKCppbnNlcnRfcHJvZmlsZV9jbWRbSTkxNV9QUk9G SUxFX01BWF0pCiAJCShzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZiwgdTMyIGN0eF9p ZCwgaW50IHRhZyk7CiAjZW5kaWYKQEAgLTMyOTIsMTAgKzMzMDYsMTQgQEAgaW50IGk5MTVfcGFy c2VfY21kcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogLyogaTkxNV9vYV9wZXJmLmMg Ki8KICNpZmRlZiBDT05GSUdfUEVSRl9FVkVOVFMKIGV4dGVybiB2b2lkIGk5MTVfb2FfcG11X3Jl Z2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOworZXh0ZXJuIHZvaWQgaTkxNV9nZW5fcG11 X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9vYV9w bXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVybiB2b2lkIGk5MTVf Z2VuX3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogI2Vsc2UKIHN0YXRp YyBpbmxpbmUgdm9pZCBpOTE1X29hX3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KSB7fQorc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VuX3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KSB7fQogc3RhdGljIGlubGluZSB2b2lkIGk5MTVfb2FfcG11X3VucmVnaXN0 ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dl bl9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KSB7fQogI2VuZGlmCiAKIC8q IGk5MTVfc3VzcGVuZC5jICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfcGVyZi5jCmluZGV4IDgz OWViYjQuLmFiOTY1YjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2Ff cGVyZi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfcGVyZi5jCkBAIC00MDgs NiArNDA4LDEzIEBAIHZvaWQgZm9yd2FyZF9vYV9yY3Nfc25hcHNob3RzX3dvcmsoc3RydWN0IHdv cmtfc3RydWN0ICpfX3dvcmspCiAJfQogfQogCitzdGF0aWMgdm9pZCBnZW5fcG11X2ZsdXNoX3Nu YXBzaG90cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJV0FSTl9PTigh ZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLmFkZHIpOworCisJLyogVE9ETzogcm91dGluZSBmb3Ig Zm9yd2FyZGluZyBzbmFwc2hvdHMgdG8gdXNlcnNwYWNlICovCit9CisKIHN0YXRpYyB2b2lkCiBv YV9yY3NfYnVmZmVyX2Rlc3Ryb3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CkBA IC01NjEsNiArNTY4LDM1IEBAIG91dDoKIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJp di0+b2FfcG11LmxvY2ssIGxvY2tfZmxhZ3MpOwogfQogCitzdGF0aWMgdm9pZCBnZW5fYnVmZmVy X2Rlc3Ryb3koc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJdW5zaWduZWQgbG9u ZyBsb2NrX2ZsYWdzOworCisJbXV0ZXhfbG9jaygmaTkxNS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwor CXZ1bm1hcChpOTE1LT5nZW5fcG11LmJ1ZmZlci5hZGRyKTsKKwlpOTE1X2dlbV9vYmplY3RfZ2d0 dF91bnBpbihpOTE1LT5nZW5fcG11LmJ1ZmZlci5vYmopOworCWRybV9nZW1fb2JqZWN0X3VucmVm ZXJlbmNlKCZpOTE1LT5nZW5fcG11LmJ1ZmZlci5vYmotPmJhc2UpOworCW11dGV4X3VubG9jaygm aTkxNS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmk5MTUtPmdl bl9wbXUubG9jaywgbG9ja19mbGFncyk7CisJaTkxNS0+Z2VuX3BtdS5idWZmZXIub2JqID0gTlVM TDsKKwlpOTE1LT5nZW5fcG11LmJ1ZmZlci5hZGRyID0gTlVMTDsKKwlzcGluX3VubG9ja19pcnFy ZXN0b3JlKCZpOTE1LT5nZW5fcG11LmxvY2ssIGxvY2tfZmxhZ3MpOworfQorCitzdGF0aWMgdm9p ZCBpOTE1X2dlbl9ldmVudF9kZXN0cm95KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11 LCB0eXBlb2YoKmk5MTUpLCBnZW5fcG11LnBtdSk7CisKKwlXQVJOX09OKGV2ZW50LT5wYXJlbnQp OworCisJZ2VuX2J1ZmZlcl9kZXN0cm95KGk5MTUpOworCisJQlVHX09OKGk5MTUtPmdlbl9wbXUu ZXhjbHVzaXZlX2V2ZW50ICE9IGV2ZW50KTsKKwlpOTE1LT5nZW5fcG11LmV4Y2x1c2l2ZV9ldmVu dCA9IE5VTEw7Cit9CisKIHN0YXRpYyBpbnQgYWxsb2Nfb2JqKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqKm9iaikKIHsK QEAgLTcyMCw2ICs3NTYsNDAgQEAgc3RhdGljIGludCBpbml0X29hX3Jjc19idWZmZXIoc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGluaXRfZ2Vu X3BtdV9idWZmZXIoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2Yo KmRldl9wcml2KSwgZ2VuX3BtdS5wbXUpOworCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpi bzsKKwlpbnQgcmV0OworCisJQlVHX09OKGRldl9wcml2LT5nZW5fcG11LmJ1ZmZlci5vYmopOwor CisJcmV0ID0gYWxsb2Nfb2JqKGRldl9wcml2LCAmYm8pOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwlkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIub2JqID0gYm87CisKKwlkZXZfcHJpdi0+ Z2VuX3BtdS5idWZmZXIuYWRkciA9IHZtYXBfb2FfYnVmZmVyKGJvKTsKKworCURSTV9ERUJVR19E UklWRVIoIkdlbiBQTVUgQnVmZmVyIGluaXRpYWxpemVkLCB2YWRkciA9ICVwIiwKKwkJCSBkZXZf cHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkcik7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGVu dW0gaHJ0aW1lcl9yZXN0YXJ0IGhydGltZXJfc2FtcGxlX2dlbihzdHJ1Y3QgaHJ0aW1lciAqaHJ0 aW1lcikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9v ZihocnRpbWVyLCB0eXBlb2YoKmk5MTUpLCBnZW5fcG11LnRpbWVyKTsKKworCWdlbl9wbXVfZmx1 c2hfc25hcHNob3RzKGk5MTUpOworCisJaHJ0aW1lcl9mb3J3YXJkX25vdyhocnRpbWVyLCBuc190 b19rdGltZShQRVJJT0QpKTsKKwlyZXR1cm4gSFJUSU1FUl9SRVNUQVJUOworfQorCiBzdGF0aWMg ZW51bSBocnRpbWVyX3Jlc3RhcnQgaHJ0aW1lcl9zYW1wbGUoc3RydWN0IGhydGltZXIgKmhydGlt ZXIpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQpAQCAtMTIzMiw2ICsxMzAy LDExMSBAQCBzdGF0aWMgaW50IGk5MTVfb2FfZXZlbnRfZXZlbnRfaWR4KHN0cnVjdCBwZXJmX2V2 ZW50ICpldmVudCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBpOTE1X2dlbl9ldmVudF9p bml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCpkZXZfcHJp diksIGdlbl9wbXUucG11KTsKKwlpbnQgcmV0ID0gMDsKKworCWlmIChldmVudC0+YXR0ci50eXBl ICE9IGV2ZW50LT5wbXUtPnR5cGUpCisJCXJldHVybiAtRU5PRU5UOworCisJLyogVG8gYXZvaWQg dGhlIGNvbXBsZXhpdHkgb2YgaGF2aW5nIHRvIGFjY3VyYXRlbHkgZmlsdGVyCisJICogZGF0YSBh bmQgbWFyc2hhbCB0byB0aGUgYXBwcm9wcmlhdGUgY2xpZW50CisJICogd2UgY3VycmVudGx5IG9u bHkgYWxsb3cgZXhjbHVzaXZlIGFjY2VzcyAqLworCWlmIChkZXZfcHJpdi0+Z2VuX3BtdS5idWZm ZXIub2JqKQorCQlyZXR1cm4gLUVCVVNZOworCisJLyoKKwkgKiBXZSBuZWVkIHRvIGNoZWNrIGZv ciBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkgYXMgd2UgcHJvZmlsZSBhbGwKKwkgKiB0aGUgcnVu bmluZyBjb250ZXh0cworCSAqLworCWlmICghY2FwYWJsZShDQVBfU1lTX0FETUlOKSkKKwkJCXJl dHVybiAtRUFDQ0VTOworCisJcmV0ID0gaW5pdF9nZW5fcG11X2J1ZmZlcihldmVudCk7CisJaWYg KHJldCkKKwkJcmV0dXJuIHJldDsKKworCUJVR19PTihkZXZfcHJpdi0+Z2VuX3BtdS5leGNsdXNp dmVfZXZlbnQpOworCWRldl9wcml2LT5nZW5fcG11LmV4Y2x1c2l2ZV9ldmVudCA9IGV2ZW50Owor CisJZXZlbnQtPmRlc3Ryb3kgPSBpOTE1X2dlbl9ldmVudF9kZXN0cm95OworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfZ2VuX2V2ZW50X3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50 ICpldmVudCwgaW50IGZsYWdzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmRldl9wcml2KSwgZ2VuX3Bt dS5wbXUpOworCXVuc2lnbmVkIGxvbmcgbG9ja19mbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZl KCZkZXZfcHJpdi0+Z2VuX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKKworCWRldl9wcml2LT5nZW5f cG11LmV2ZW50X2FjdGl2ZSA9IHRydWU7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZf cHJpdi0+Z2VuX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKKworCV9faHJ0aW1lcl9zdGFydF9yYW5n ZV9ucygmZGV2X3ByaXYtPmdlbl9wbXUudGltZXIsIG5zX3RvX2t0aW1lKFBFUklPRCksCisJCQkJ CTAsIEhSVElNRVJfTU9ERV9SRUxfUElOTkVELCAwKTsKKworCWV2ZW50LT5ody5zdGF0ZSA9IDA7 Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfZ2VuX2V2ZW50X3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50LCBpbnQgZmxhZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigqZGV2X3ByaXYpLCBnZW5fcG11 LnBtdSk7CisJdW5zaWduZWQgbG9uZyBsb2NrX2ZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUo JmRldl9wcml2LT5nZW5fcG11LmxvY2ssIGxvY2tfZmxhZ3MpOworCWRldl9wcml2LT5nZW5fcG11 LmV2ZW50X2FjdGl2ZSA9IGZhbHNlOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3By aXYtPmdlbl9wbXUubG9jaywgbG9ja19mbGFncyk7CisKKwlocnRpbWVyX2NhbmNlbCgmZGV2X3By aXYtPmdlbl9wbXUudGltZXIpOworCWdlbl9wbXVfZmx1c2hfc25hcHNob3RzKGRldl9wcml2KTsK KworCWV2ZW50LT5ody5zdGF0ZSA9IFBFUkZfSEVTX1NUT1BQRUQ7Cit9CisKK3N0YXRpYyBpbnQg aTkxNV9nZW5fZXZlbnRfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQor eworCWlmIChmbGFncyAmIFBFUkZfRUZfU1RBUlQpCisJCWk5MTVfZ2VuX2V2ZW50X3N0YXJ0KGV2 ZW50LCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZl bnRfZGVsKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQoreworCWk5MTVfZ2Vu X2V2ZW50X3N0b3AoZXZlbnQsIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZl bnRfcmVhZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwg Z2VuX3BtdS5wbXUpOworCisJLyogWFhYOiBXaGF0IGNvdW50ZXIgd291bGQgYmUgdXNlZnVsIGhl cmU/ICovCisJbG9jYWw2NF9zZXQoJmV2ZW50LT5jb3VudCwgMCk7Cit9CisKK3N0YXRpYyBpbnQg aTkxNV9nZW5fZXZlbnRfZmx1c2goc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5 cGVvZigqaTkxNSksIGdlbl9wbXUucG11KTsKKworCWdlbl9wbXVfZmx1c2hfc25hcHNob3RzKGk5 MTUpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGk5MTVfZ2VuX2V2ZW50X2V2ZW50X2lk eChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJcmV0dXJuIDA7Cit9CisKIHZvaWQgaTkx NV9vYV9jb250ZXh0X3Bpbl9ub3RpZnkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjb250ZXh0KQogewpAQCAtMTM2MCwzICsxNTM1 LDQ4IEBAIHZvaWQgaTkxNV9vYV9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUtPm9hX3BtdS5wbXUpOwogCWk5MTUtPm9hX3Bt dS5wbXUuZXZlbnRfaW5pdCA9IE5VTEw7CiB9CisKK3ZvaWQgaTkxNV9nZW5fcG11X3JlZ2lzdGVy KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUgPSB0b19pOTE1KGRldik7CisKKwlpZiAoIShJU19IQVNXRUxMKGRldikgfHwgSVNfVkFMTEVZ VklFVyhkZXYpIHx8IElTX0JST0FEV0VMTChkZXYpKSkKKwkJcmV0dXJuOworCisJaTkxNS0+Z2Vu X3BtdS5kdW1teV9yZWdzID0gKnRhc2tfcHRfcmVncyhjdXJyZW50KTsKKworCWhydGltZXJfaW5p dCgmaTkxNS0+Z2VuX3BtdS50aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVM KTsKKwlpOTE1LT5nZW5fcG11LnRpbWVyLmZ1bmN0aW9uID0gaHJ0aW1lcl9zYW1wbGVfZ2VuOwor CisJc3Bpbl9sb2NrX2luaXQoJmk5MTUtPmdlbl9wbXUubG9jayk7CisKKwlpOTE1LT5nZW5fcG11 LnBtdS5jYXBhYmlsaXRpZXMgID0gUEVSRl9QTVVfQ0FQX0lTX0RFVklDRTsKKworCS8qIEVmZmVj dGl2ZWx5IGRpc2FsbG93IG9wZW5pbmcgYW4gZXZlbnQgd2l0aCBhIHNwZWNpZmljIHBpZAorCSAq IHNpbmNlIHdlIGFyZW4ndCBpbnRlcmVzdGVkIGluIHByb2Nlc3NlcyBydW5uaW5nIG9uIHRoZSBj cHUuLi4KKwkgKi8KKwlpOTE1LT5nZW5fcG11LnBtdS50YXNrX2N0eF9uciAgID0gcGVyZl9pbnZh bGlkX2NvbnRleHQ7CisKKwlpOTE1LT5nZW5fcG11LnBtdS5ldmVudF9pbml0ICAgID0gaTkxNV9n ZW5fZXZlbnRfaW5pdDsKKwlpOTE1LT5nZW5fcG11LnBtdS5hZGQJICAgICAgID0gaTkxNV9nZW5f ZXZlbnRfYWRkOworCWk5MTUtPmdlbl9wbXUucG11LmRlbAkgICAgICAgPSBpOTE1X2dlbl9ldmVu dF9kZWw7CisJaTkxNS0+Z2VuX3BtdS5wbXUuc3RhcnQJICAgICAgID0gaTkxNV9nZW5fZXZlbnRf c3RhcnQ7CisJaTkxNS0+Z2VuX3BtdS5wbXUuc3RvcAkgICAgICAgPSBpOTE1X2dlbl9ldmVudF9z dG9wOworCWk5MTUtPmdlbl9wbXUucG11LnJlYWQJICAgICAgID0gaTkxNV9nZW5fZXZlbnRfcmVh ZDsKKwlpOTE1LT5nZW5fcG11LnBtdS5mbHVzaAkgICAgICAgPSBpOTE1X2dlbl9ldmVudF9mbHVz aDsKKwlpOTE1LT5nZW5fcG11LnBtdS5ldmVudF9pZHggICAgID0gaTkxNV9nZW5fZXZlbnRfZXZl bnRfaWR4OworCisJaWYgKHBlcmZfcG11X3JlZ2lzdGVyKCZpOTE1LT5nZW5fcG11LnBtdSwgImk5 MTVfZ2VuIiwgLTEpKQorCQlpOTE1LT5nZW5fcG11LnBtdS5ldmVudF9pbml0ID0gTlVMTDsKK30K Kwordm9pZCBpOTE1X2dlbl9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOworCisJaWYg KGk5MTUtPmdlbl9wbXUucG11LmV2ZW50X2luaXQgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJcGVy Zl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+Z2VuX3BtdS5wbXUpOworCWk5MTUtPmdlbl9wbXUucG11 LmV2ZW50X2luaXQgPSBOVUxMOworfQotLSAKMS44LjUuMQoKX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1n ZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK