From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [RFC 2/7] drm/i915: Register routines for Gen perf PMU driver Date: Mon, 22 Jun 2015 15:25:04 +0530 Message-ID: <1434966909-4113-3-git-send-email-sourab.gupta@intel.com> References: <1434966909-4113-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 87B046E5D5 for ; Mon, 22 Jun 2015 02:53:14 -0700 (PDT) In-Reply-To: <1434966909-4113-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 RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKVGhpcyBwYXRjaCBy ZWdpc3RlcnMgdGhlIG5ldyBQTVUgZHJpdmVyLCB3aG9zZSBwdXJwb3NlIGlzIHRvIGVuYWJsZSBk YXRhCmNvbGxlY3Rpb24gb2Ygbm9uLU9BIGNvdW50ZXIgZGF0YSBmb3IgYWxsIHRoZSByaW5ncywg aW4gYSBnZW5lcmljIHdheS4KVGhlIHBhdGNoIGludHJvZHVjZXMgcm91dGluZXMgZm9yIHRoaXMg UE1VIGRyaXZlciwgd2hpY2ggYWxzbyBpbmNsdWRlIHRoZQphbGxvY2F0aW9uIHJvdXRpbmVzIGZv ciB0aGUgYnVmZmVyIGZvciBjb2xsZWN0aW5nIHRoZSBkYXRhLgoKU2lnbmVkLW9mZi1ieTogU291 cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZG1hLmMgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggICAgIHwgICA0ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfcGVyZi5jIHwgMjI1 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogMyBmaWxlcyBjaGFuZ2VkLCAy MzEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZG1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCmluZGV4IGYxMmZlYWEuLmE1 M2FhMDQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwpAQCAtODIzLDYgKzgyMyw3IEBAIGludCBp OTE1X2RyaXZlcl9sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVuc2lnbmVkIGxvbmcgZmxh Z3MpCiAJICogc3BpbmxvY2ssIHVwc2V0dGluZyBsb2NrZGVwIGNoZWNrcyAqLwogCUlOSVRfTElT VF9IRUFEKCZkZXZfcHJpdi0+cHJvZmlsZV9jbWQpOwogCWk5MTVfb2FfcG11X3JlZ2lzdGVyKGRl dik7CisJaTkxNV9nZW5fcG11X3JlZ2lzdGVyKGRldik7CiAKIAlpbnRlbF9wbV9zZXR1cChkZXYp OwogCkBAIC0xMDczLDYgKzEwNzQsNyBAQCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYpCiAJCXJldHVybiByZXQ7CiAJfQogCisJaTkxNV9nZW5fcG11X3VucmVn aXN0ZXIoZGV2KTsKIAlpOTE1X29hX3BtdV91bnJlZ2lzdGVyKGRldik7CiAJaW50ZWxfcG93ZXJf ZG9tYWluc19maW5pKGRldl9wcml2KTsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYjhi NTQ1NS4uMzQ5MTU4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0zMzA1LDEwICszMzA1 LDE0IEBAIGludCBpOTE1X3BhcnNlX2NtZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywK IC8qIGk5MTVfb2FfcGVyZi5jICovCiAjaWZkZWYgQ09ORklHX1BFUkZfRVZFTlRTCiBleHRlcm4g dm9pZCBpOTE1X29hX3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2V4dGVy biB2b2lkIGk5MTVfZ2VuX3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKIGV4 dGVybiB2b2lkIGk5MTVfb2FfcG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldik7 CitleHRlcm4gdm9pZCBpOTE1X2dlbl9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KTsKICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9vYV9wbXVfcmVnaXN0ZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbl9wbXVf cmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikge30KIHN0YXRpYyBpbmxpbmUgdm9pZCBp OTE1X29hX3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpIHt9CitzdGF0aWMg aW5saW5lIHZvaWQgaTkxNV9nZW5fcG11X3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl dikge30KICNlbmRpZgogCiAvKiBpOTE1X3N1c3BlbmQuYyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX3BlcmYuYwppbmRleCBhYjQxOWQ5Li5lMjA0MmI2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X29hX3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X29hX3BlcmYuYwpAQCAtMjI0LDYgKzIyNCwxMyBAQCB2b2lkIGZvcndhcmRfb2FfYXN5bmNfc25h cHNob3RzX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICpfX3dvcmspCiAJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogfQogCitzdGF0aWMgdm9pZCBnZW5fcG11X2Zs dXNoX3NuYXBzaG90cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJV0FS Tl9PTighZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLmFkZHIpOworCisJLyogVE9ETzogcm91dGlu ZSBmb3IgZm9yd2FyZGluZyBzbmFwc2hvdHMgdG8gdXNlcnNwYWNlICovCit9CisKIHN0YXRpYyB2 b2lkIGZvcndhcmRfb25lX29hX3NuYXBzaG90X3RvX2V2ZW50KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkJCQkJICAgICB1OCAqc25hcHNob3QsCiAJCQkJCSAgICAgc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50KQpAQCAtNDQzLDYgKzQ1MCwzMyBAQCBzdGF0aWMgdm9pZCBpOTE1 X29hX2V2ZW50X2Rlc3Ryb3koc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCWludGVsX3J1bnRp bWVfcG1fcHV0KGRldl9wcml2KTsKIH0KIAorc3RhdGljIHZvaWQgZ2VuX2J1ZmZlcl9kZXN0cm95 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQoreworCW11dGV4X2xvY2soJmk5MTUtPmRl di0+c3RydWN0X211dGV4KTsKKworCXZ1bm1hcChpOTE1LT5nZW5fcG11LmJ1ZmZlci5hZGRyKTsK KwlpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihpOTE1LT5nZW5fcG11LmJ1ZmZlci5vYmopOwor CWRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCZpOTE1LT5nZW5fcG11LmJ1ZmZlci5vYmotPmJh c2UpOworCisJaTkxNS0+Z2VuX3BtdS5idWZmZXIub2JqID0gTlVMTDsKKwlpOTE1LT5nZW5fcG11 LmJ1ZmZlci5hZGRyID0gTlVMTDsKKworCW11dGV4X3VubG9jaygmaTkxNS0+ZGV2LT5zdHJ1Y3Rf bXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X2dlbl9ldmVudF9kZXN0cm95KHN0cnVjdCBw ZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJ CWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUpLCBnZW5fcG11LnBtdSk7CisK KwlXQVJOX09OKGV2ZW50LT5wYXJlbnQpOworCisJZ2VuX2J1ZmZlcl9kZXN0cm95KGk5MTUpOwor CisJQlVHX09OKGk5MTUtPmdlbl9wbXUuZXhjbHVzaXZlX2V2ZW50ICE9IGV2ZW50KTsKKwlpOTE1 LT5nZW5fcG11LmV4Y2x1c2l2ZV9ldmVudCA9IE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkICp2bWFw X29hX2J1ZmZlcihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQogewogCWludCBpOwpA QCAtNTk5LDYgKzYzMywzMiBAQCB1bmxvY2s6CiAJcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGlu dCBpbml0X2dlbl9wbXVfYnVmZmVyKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBt dSwgdHlwZW9mKCpkZXZfcHJpdiksIGdlbl9wbXUucG11KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqYm87CisJaW50IHJldDsKKworCUJVR19PTighSVNfSEFTV0VMTChkZXZfcHJpdi0+ ZGV2KSAmJiAhSVNfVkFMTEVZVklFVyhkZXZfcHJpdi0+ZGV2KSAmJgorCQkgIUlTX0JST0FEV0VM TChkZXZfcHJpdi0+ZGV2KSk7CisJQlVHX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5k ZXYtPnN0cnVjdF9tdXRleCkpOworCUJVR19PTihkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIub2Jq KTsKKworCXJldCA9IGFsbG9jX29hX29iaihkZXZfcHJpdiwgJmJvKTsKKwlpZiAocmV0KQorCQly ZXR1cm4gcmV0OworCisJZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLm9iaiA9IGJvOworCisJZGV2 X3ByaXYtPmdlbl9wbXUuYnVmZmVyLmFkZHIgPSB2bWFwX29hX2J1ZmZlcihibyk7CisKKwlEUk1f REVCVUdfRFJJVkVSKCJHZW4gUE1VIEJ1ZmZlciBpbml0aWFsaXplZCwgdmFkZHIgPSAlcCIsCisJ CQkgZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVyLmFkZHIpOworCisJcmV0dXJuIDA7Cit9CisKIHN0 YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBocnRpbWVyX3NhbXBsZShzdHJ1Y3QgaHJ0aW1lciAq aHJ0aW1lcikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CkBAIC02MTAsNiAr NjcwLDE3IEBAIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBocnRpbWVyX3NhbXBsZShzdHJ1 Y3QgaHJ0aW1lciAqaHJ0aW1lcikKIAlyZXR1cm4gSFJUSU1FUl9SRVNUQVJUOwogfQogCitzdGF0 aWMgZW51bSBocnRpbWVyX3Jlc3RhcnQgaHJ0aW1lcl9zYW1wbGVfZ2VuKHN0cnVjdCBocnRpbWVy ICpocnRpbWVyKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFp bmVyX29mKGhydGltZXIsIHR5cGVvZigqaTkxNSksIGdlbl9wbXUudGltZXIpOworCisJZ2VuX3Bt dV9mbHVzaF9zbmFwc2hvdHMoaTkxNSk7CisKKwlocnRpbWVyX2ZvcndhcmRfbm93KGhydGltZXIs IG5zX3RvX2t0aW1lKFBFUklPRCkpOworCXJldHVybiBIUlRJTUVSX1JFU1RBUlQ7Cit9CisKIHN0 YXRpYyBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqCiBsb29rdXBfY29udGV4dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJICAgICAgIHN0cnVjdCBmaWxlICp1c2VyX2ZpbHAsCkBA IC0xMTU2LDYgKzEyMjcsMTE1IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9ldmVudF9ldmVudF9pZHgo c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGk5 MTVfZ2VuX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0 eXBlb2YoKmRldl9wcml2KSwgZ2VuX3BtdS5wbXUpOworCWludCByZXQgPSAwOworCisJaWYgKGV2 ZW50LT5hdHRyLnR5cGUgIT0gZXZlbnQtPnBtdS0+dHlwZSkKKwkJcmV0dXJuIC1FTk9FTlQ7CisK KwkvKiBUbyBhdm9pZCB0aGUgY29tcGxleGl0eSBvZiBoYXZpbmcgdG8gYWNjdXJhdGVseSBmaWx0 ZXIKKwkgKiBkYXRhIGFuZCBtYXJzaGFsIHRvIHRoZSBhcHByb3ByaWF0ZSBjbGllbnQKKwkgKiB3 ZSBjdXJyZW50bHkgb25seSBhbGxvdyBleGNsdXNpdmUgYWNjZXNzICovCisJaWYgKGRldl9wcml2 LT5nZW5fcG11LmJ1ZmZlci5vYmopCisJCXJldHVybiAtRUJVU1k7CisKKwkvKgorCSAqIFdlIG5l ZWQgdG8gY2hlY2sgZm9yIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSBhcyB3ZSBwcm9maWxlIGFs bAorCSAqIHRoZSBydW5uaW5nIGNvbnRleHRzCisJICovCisJaWYgKCFjYXBhYmxlKENBUF9TWVNf QURNSU4pKQorCQkJcmV0dXJuIC1FQUNDRVM7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZGV2 LT5zdHJ1Y3RfbXV0ZXgpOworCisJcmV0ID0gaW5pdF9nZW5fcG11X2J1ZmZlcihldmVudCk7CisJ aWYgKHJldCkgeworCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kZXYtPnN0cnVjdF9tdXRleCk7 CisJCXJldHVybiByZXQ7CisJfQorCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRldi0+c3RydWN0 X211dGV4KTsKKworCUJVR19PTihkZXZfcHJpdi0+Z2VuX3BtdS5leGNsdXNpdmVfZXZlbnQpOwor CWRldl9wcml2LT5nZW5fcG11LmV4Y2x1c2l2ZV9ldmVudCA9IGV2ZW50OworCisJZXZlbnQtPmRl c3Ryb3kgPSBpOTE1X2dlbl9ldmVudF9kZXN0cm95OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyB2b2lkIGk5MTVfZ2VuX2V2ZW50X3N0YXJ0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50 IGZsYWdzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRh aW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmRldl9wcml2KSwgZ2VuX3BtdS5wbXUpOworCXVu c2lnbmVkIGxvbmcgbG9ja19mbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+ Z2VuX3BtdS5sb2NrLCBsb2NrX2ZsYWdzKTsKKworCWRldl9wcml2LT5nZW5fcG11LmV2ZW50X2Fj dGl2ZSA9IHRydWU7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJpdi0+Z2VuX3Bt dS5sb2NrLCBsb2NrX2ZsYWdzKTsKKworCV9faHJ0aW1lcl9zdGFydF9yYW5nZV9ucygmZGV2X3By aXYtPmdlbl9wbXUudGltZXIsIG5zX3RvX2t0aW1lKFBFUklPRCksCisJCQkJCTAsIEhSVElNRVJf TU9ERV9SRUxfUElOTkVELCAwKTsKKworCWV2ZW50LT5ody5zdGF0ZSA9IDA7Cit9CisKK3N0YXRp YyB2b2lkIGk5MTVfZ2VuX2V2ZW50X3N0b3Aoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQg ZmxhZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFp bmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigqZGV2X3ByaXYpLCBnZW5fcG11LnBtdSk7CisJdW5z aWduZWQgbG9uZyBsb2NrX2ZsYWdzOworCisJc3Bpbl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT5n ZW5fcG11LmxvY2ssIGxvY2tfZmxhZ3MpOworCWRldl9wcml2LT5nZW5fcG11LmV2ZW50X2FjdGl2 ZSA9IGZhbHNlOworCisJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPmdlbl9wbXUu bG9jaywgbG9ja19mbGFncyk7CisKKwlocnRpbWVyX2NhbmNlbCgmZGV2X3ByaXYtPmdlbl9wbXUu dGltZXIpOworCWdlbl9wbXVfZmx1c2hfc25hcHNob3RzKGRldl9wcml2KTsKKworCWV2ZW50LT5o dy5zdGF0ZSA9IFBFUkZfSEVTX1NUT1BQRUQ7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9nZW5fZXZl bnRfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQoreworCWlmIChmbGFn cyAmIFBFUkZfRUZfU1RBUlQpCisJCWk5MTVfZ2VuX2V2ZW50X3N0YXJ0KGV2ZW50LCBmbGFncyk7 CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZlbnRfZGVsKHN0cnVj dCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQoreworCWk5MTVfZ2VuX2V2ZW50X3N0b3Ao ZXZlbnQsIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZlbnRfcmVhZChzdHJ1 Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwgZ2VuX3BtdS5wbXUp OworCisJLyogWFhYOiBXaGF0IGNvdW50ZXIgd291bGQgYmUgdXNlZnVsIGhlcmU/ICovCisJbG9j YWw2NF9zZXQoJmV2ZW50LT5jb3VudCwgMCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfZ2VuX2V2 ZW50X2ZsdXNoKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUp LCBnZW5fcG11LnBtdSk7CisKKwlnZW5fcG11X2ZsdXNoX3NuYXBzaG90cyhpOTE1KTsKK30KKwor c3RhdGljIGludCBpOTE1X2dlbl9ldmVudF9ldmVudF9pZHgoc3RydWN0IHBlcmZfZXZlbnQgKmV2 ZW50KQoreworCXJldHVybiAwOworfQorCiB2b2lkIGk5MTVfb2FfY29udGV4dF9waW5fbm90aWZ5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQlzdHJ1Y3QgaW50ZWxfY29u dGV4dCAqY29udGV4dCkKIHsKQEAgLTEyODMsMyArMTQ2Myw0OCBAQCB2b2lkIGk5MTVfb2FfcG11 X3VucmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlwZXJmX3BtdV91bnJlZ2lzdGVy KCZpOTE1LT5vYV9wbXUucG11KTsKIAlpOTE1LT5vYV9wbXUucG11LmV2ZW50X2luaXQgPSBOVUxM OwogfQorCit2b2lkIGk5MTVfZ2VuX3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOworCisJ aWYgKCEoSVNfSEFTV0VMTChkZXYpIHx8IElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19CUk9BRFdF TEwoZGV2KSkpCisJCXJldHVybjsKKworCWk5MTUtPmdlbl9wbXUuZHVtbXlfcmVncyA9ICp0YXNr X3B0X3JlZ3MoY3VycmVudCk7CisKKwlocnRpbWVyX2luaXQoJmk5MTUtPmdlbl9wbXUudGltZXIs IENMT0NLX01PTk9UT05JQywgSFJUSU1FUl9NT0RFX1JFTCk7CisJaTkxNS0+Z2VuX3BtdS50aW1l ci5mdW5jdGlvbiA9IGhydGltZXJfc2FtcGxlX2dlbjsKKworCXNwaW5fbG9ja19pbml0KCZpOTE1 LT5nZW5fcG11LmxvY2spOworCisJaTkxNS0+Z2VuX3BtdS5wbXUuY2FwYWJpbGl0aWVzICA9IFBF UkZfUE1VX0NBUF9JU19ERVZJQ0U7CisKKwkvKiBFZmZlY3RpdmVseSBkaXNhbGxvdyBvcGVuaW5n IGFuIGV2ZW50IHdpdGggYSBzcGVjaWZpYyBwaWQKKwkgKiBzaW5jZSB3ZSBhcmVuJ3QgaW50ZXJl c3RlZCBpbiBwcm9jZXNzZXMgcnVubmluZyBvbiB0aGUgY3B1Li4uCisJICovCisJaTkxNS0+Z2Vu X3BtdS5wbXUudGFza19jdHhfbnIgICA9IHBlcmZfaW52YWxpZF9jb250ZXh0OworCisJaTkxNS0+ Z2VuX3BtdS5wbXUuZXZlbnRfaW5pdCAgICA9IGk5MTVfZ2VuX2V2ZW50X2luaXQ7CisJaTkxNS0+ Z2VuX3BtdS5wbXUuYWRkCSAgICAgICA9IGk5MTVfZ2VuX2V2ZW50X2FkZDsKKwlpOTE1LT5nZW5f cG11LnBtdS5kZWwJICAgICAgID0gaTkxNV9nZW5fZXZlbnRfZGVsOworCWk5MTUtPmdlbl9wbXUu cG11LnN0YXJ0CSAgICAgICA9IGk5MTVfZ2VuX2V2ZW50X3N0YXJ0OworCWk5MTUtPmdlbl9wbXUu cG11LnN0b3AJICAgICAgID0gaTkxNV9nZW5fZXZlbnRfc3RvcDsKKwlpOTE1LT5nZW5fcG11LnBt dS5yZWFkCSAgICAgICA9IGk5MTVfZ2VuX2V2ZW50X3JlYWQ7CisJaTkxNS0+Z2VuX3BtdS5wbXUu Zmx1c2gJICAgICAgID0gaTkxNV9nZW5fZXZlbnRfZmx1c2g7CisJaTkxNS0+Z2VuX3BtdS5wbXUu ZXZlbnRfaWR4ICAgICA9IGk5MTVfZ2VuX2V2ZW50X2V2ZW50X2lkeDsKKworCWlmIChwZXJmX3Bt dV9yZWdpc3RlcigmaTkxNS0+Z2VuX3BtdS5wbXUsICJpOTE1X2dlbiIsIC0xKSkKKwkJaTkxNS0+ Z2VuX3BtdS5wbXUuZXZlbnRfaW5pdCA9IE5VTEw7Cit9CisKK3ZvaWQgaTkxNV9nZW5fcG11X3Vu cmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKKworCWlmIChpOTE1LT5nZW5fcG11LnBtdS5ldmVu dF9pbml0ID09IE5VTEwpCisJCXJldHVybjsKKworCXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUt Pmdlbl9wbXUucG11KTsKKwlpOTE1LT5nZW5fcG11LnBtdS5ldmVudF9pbml0ID0gTlVMTDsKK30K LS0gCjEuOC41LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==