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, 5 Aug 2015 11:25:37 +0530 Message-ID: <1438754144-20435-2-git-send-email-sourab.gupta@intel.com> References: <1438754144-20435-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 C50477208E for ; Tue, 4 Aug 2015 22:53:54 -0700 (PDT) In-Reply-To: <1438754144-20435-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 aCAgICAgfCAgMTkgKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMgfCAy MTUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQs IDIzNiBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggMDU1M2YyMC4u NGI5MTUwNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC04MjIsNiArODIyLDcgQEAgaW50 IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBm bGFncykKIAkgKiBvdGhlcndpc2UgaTkxNV9vYV9jb250ZXh0X3Bpbl9ub3RpZnkoKSB3aWxsIGxv Y2sgYW4gdW4taW5pdGlhbGl6ZWQKIAkgKiBzcGlubG9jaywgdXBzZXR0aW5nIGxvY2tkZXAgY2hl Y2tzICovCiAJaTkxNV9vYV9wbXVfcmVnaXN0ZXIoZGV2KTsKKwlpOTE1X2dlbl9wbXVfcmVnaXN0 ZXIoZGV2KTsKIAogCWludGVsX3BtX3NldHVwKGRldik7CiAKQEAgLTEwNzIsNiArMTA3Myw3IEBA IGludCBpOTE1X2RyaXZlcl91bmxvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJcmV0dXJu IHJldDsKIAl9CiAKKwlpOTE1X2dlbl9wbXVfdW5yZWdpc3RlcihkZXYpOwogCWk5MTVfb2FfcG11 X3VucmVnaXN0ZXIoZGV2KTsKIAlpbnRlbF9wb3dlcl9kb21haW5zX2ZpbmkoZGV2X3ByaXYpOwog CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkNWQ5MTU2Li42NmY5ZWU5IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKQEAgLTE5ODgsNiArMTk4OCwyMSBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSB7CiAJCWludCBzYW1wbGVfaW5mb19mbGFnczsKIAl9IG9hX3BtdTsKIAorCXN0cnVjdCB7 CisJCXN0cnVjdCBwbXUgcG11OworCQlzcGlubG9ja190IGxvY2s7CisJCXN0cnVjdCBocnRpbWVy IHRpbWVyOworCQlzdHJ1Y3QgcHRfcmVncyBkdW1teV9yZWdzOworCQlzdHJ1Y3QgcGVyZl9ldmVu dCAqZXhjbHVzaXZlX2V2ZW50OworCQlib29sIGV2ZW50X2FjdGl2ZTsKKworCQlzdHJ1Y3Qgewor CQkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwkJCXUzMiBndHRfb2Zmc2V0Owor CQkJdTggKmFkZHI7CisJCX0gYnVmZmVyOworCX0gZ2VuX3BtdTsKKwogCXZvaWQgKCplbWl0X3By b2ZpbGluZ19kYXRhW0k5MTVfUFJPRklMRV9NQVhdKQogCQkoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpyZXEsIHUzMiBnbG9iYWxfY3R4X2lkLCB1MzIgdGFnKTsKICNlbmRpZgpAQCAtMzI5 NSwxMCArMzMxMCwxNCBAQCBpbnQgaTkxNV9wYXJzZV9jbWRzKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsCiAvKiBpOTE1X29hX3BlcmYuYyAqLwogI2lmZGVmIENPTkZJR19QRVJGX0VWRU5U UwogZXh0ZXJuIHZvaWQgaTkxNV9vYV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2UgKmRl dik7CitleHRlcm4gdm9pZCBpOTE1X2dlbl9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7CiBleHRlcm4gdm9pZCBpOTE1X29hX3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpOworZXh0ZXJuIHZvaWQgaTkxNV9nZW5fcG11X3VucmVnaXN0ZXIoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7CiAjZWxzZQogc3RhdGljIGlubGluZSB2b2lkIGk5MTVfb2FfcG11X3Jl Z2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQgaTkx NV9nZW5fcG11X3JlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpIHt9CiBzdGF0aWMgaW5s aW5lIHZvaWQgaTkxNV9vYV9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KSB7 fQorc3RhdGljIGlubGluZSB2b2lkIGk5MTVfZ2VuX3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpIHt9CiAjZW5kaWYKIAogLyogaTkxNV9zdXNwZW5kLmMgKi8KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfb2FfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9wZXJmLmMKaW5kZXggNDg1OTFmYy4uMzdmZjBhOSAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9vYV9wZXJmLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9vYV9wZXJmLmMKQEAgLTQxNCw2ICs0MTQsMTMgQEAgc3RhdGljIHZvaWQgZm9y d2FyZF9vYV9yY3Nfd29ya19mbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKIAlmb3J3YXJk X29hX3Jjc19zbmFwc2hvdHMoZGV2X3ByaXYpOwogfQogCitzdGF0aWMgdm9pZCBmb3J3YXJkX2dl bl9wbXVfc25hcHNob3RzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlX QVJOX09OKCFkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkcik7CisKKwkvKiBUT0RPOiByb3V0 aW5lIGZvciBmb3J3YXJkaW5nIHNuYXBzaG90cyB0byB1c2Vyc3BhY2UgKi8KK30KKwogc3RhdGlj IHZvaWQKIG9hX3Jjc19idWZmZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIHsKQEAgLTU1MSw2ICs1NTgsMzQgQEAgb3V0OgogCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+ b2FfcG11LmxvY2spOwogfQogCitzdGF0aWMgdm9pZCBnZW5fYnVmZmVyX2Rlc3Ryb3koc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJbXV0ZXhfbG9jaygmaTkxNS0+ZGV2LT5zdHJ1 Y3RfbXV0ZXgpOworCXZ1bm1hcChpOTE1LT5nZW5fcG11LmJ1ZmZlci5hZGRyKTsKKwlpOTE1X2dl bV9vYmplY3RfZ2d0dF91bnBpbihpOTE1LT5nZW5fcG11LmJ1ZmZlci5vYmopOworCWRybV9nZW1f b2JqZWN0X3VucmVmZXJlbmNlKCZpOTE1LT5nZW5fcG11LmJ1ZmZlci5vYmotPmJhc2UpOworCW11 dGV4X3VubG9jaygmaTkxNS0+ZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCisJc3Bpbl9sb2NrKCZpOTE1 LT5nZW5fcG11LmxvY2spOworCWk5MTUtPmdlbl9wbXUuYnVmZmVyLm9iaiA9IE5VTEw7CisJaTkx NS0+Z2VuX3BtdS5idWZmZXIuZ3R0X29mZnNldCA9IDA7CisJaTkxNS0+Z2VuX3BtdS5idWZmZXIu YWRkciA9IE5VTEw7CisJc3Bpbl91bmxvY2soJmk5MTUtPmdlbl9wbXUubG9jayk7Cit9CisKK3N0 YXRpYyB2b2lkIGk5MTVfZ2VuX2V2ZW50X2Rlc3Ryb3koc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50 KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2 ZW50LT5wbXUsIHR5cGVvZigqaTkxNSksIGdlbl9wbXUucG11KTsKKworCVdBUk5fT04oZXZlbnQt PnBhcmVudCk7CisKKwlnZW5fYnVmZmVyX2Rlc3Ryb3koaTkxNSk7CisKKwlCVUdfT04oaTkxNS0+ Z2VuX3BtdS5leGNsdXNpdmVfZXZlbnQgIT0gZXZlbnQpOworCWk5MTUtPmdlbl9wbXUuZXhjbHVz aXZlX2V2ZW50ID0gTlVMTDsKK30KKwogc3RhdGljIGludCBhbGxvY19vYmooc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICoq b2JqKQogewpAQCAtNzEyLDYgKzc0Nyw0MSBAQCBzdGF0aWMgaW50IGluaXRfb2FfcmNzX2J1ZmZl cihzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQg aW5pdF9nZW5fcG11X2J1ZmZlcihzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUs IHR5cGVvZigqZGV2X3ByaXYpLCBnZW5fcG11LnBtdSk7CisJc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKmJvOworCWludCByZXQ7CisKKwlCVUdfT04oZGV2X3ByaXYtPmdlbl9wbXUuYnVmZmVy Lm9iaik7CisKKwlyZXQgPSBhbGxvY19vYmooZGV2X3ByaXYsICZibyk7CisJaWYgKHJldCkKKwkJ cmV0dXJuIHJldDsKKworCWRldl9wcml2LT5nZW5fcG11LmJ1ZmZlci5vYmogPSBibzsKKwlkZXZf cHJpdi0+Z2VuX3BtdS5idWZmZXIuZ3R0X29mZnNldCA9CisJCQkJaTkxNV9nZW1fb2JqX2dndHRf b2Zmc2V0KGJvKTsKKwlkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkciA9IHZtYXBfb2FfYnVm ZmVyKGJvKTsKKworCURSTV9ERUJVR19EUklWRVIoIkdlbiBQTVUgQnVmZmVyIGluaXRpYWxpemVk LCB2YWRkciA9ICVwIiwKKwkJCSBkZXZfcHJpdi0+Z2VuX3BtdS5idWZmZXIuYWRkcik7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGVudW0gaHJ0aW1lcl9yZXN0YXJ0IGhydGltZXJfc2FtcGxl X2dlbihzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihocnRpbWVyLCB0eXBlb2YoKmk5MTUpLCBnZW5fcG11 LnRpbWVyKTsKKworCWZvcndhcmRfZ2VuX3BtdV9zbmFwc2hvdHMoaTkxNSk7CisKKwlocnRpbWVy X2ZvcndhcmRfbm93KGhydGltZXIsIG5zX3RvX2t0aW1lKFBFUklPRCkpOworCXJldHVybiBIUlRJ TUVSX1JFU1RBUlQ7Cit9CisKIHN0YXRpYyBlbnVtIGhydGltZXJfcmVzdGFydCBocnRpbWVyX3Nh bXBsZShzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1lcikKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9CkBAIC0xMjI0LDYgKzEyOTQsMTA2IEBAIHN0YXRpYyBpbnQgaTkxNV9vYV9ldmVu dF9ldmVudF9pZHgoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQogCXJldHVybiAwOwogfQogCitz dGF0aWMgaW50IGk5MTVfZ2VuX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQor eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZihl dmVudC0+cG11LCB0eXBlb2YoKmRldl9wcml2KSwgZ2VuX3BtdS5wbXUpOworCWludCByZXQgPSAw OworCisJaWYgKGV2ZW50LT5hdHRyLnR5cGUgIT0gZXZlbnQtPnBtdS0+dHlwZSkKKwkJcmV0dXJu IC1FTk9FTlQ7CisKKwkvKiBUbyBhdm9pZCB0aGUgY29tcGxleGl0eSBvZiBoYXZpbmcgdG8gYWNj dXJhdGVseSBmaWx0ZXIKKwkgKiBkYXRhIGFuZCBtYXJzaGFsIHRvIHRoZSBhcHByb3ByaWF0ZSBj bGllbnQKKwkgKiB3ZSBjdXJyZW50bHkgb25seSBhbGxvdyBleGNsdXNpdmUgYWNjZXNzICovCisJ aWYgKGRldl9wcml2LT5nZW5fcG11LmJ1ZmZlci5vYmopCisJCXJldHVybiAtRUJVU1k7CisKKwkv KgorCSAqIFdlIG5lZWQgdG8gY2hlY2sgZm9yIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSBhcyB3 ZSBwcm9maWxlIGFsbAorCSAqIHRoZSBydW5uaW5nIGNvbnRleHRzCisJICovCisJaWYgKCFjYXBh YmxlKENBUF9TWVNfQURNSU4pKQorCQkJcmV0dXJuIC1FQUNDRVM7CisKKwlyZXQgPSBpbml0X2dl bl9wbXVfYnVmZmVyKGV2ZW50KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJQlVHX09O KGRldl9wcml2LT5nZW5fcG11LmV4Y2x1c2l2ZV9ldmVudCk7CisJZGV2X3ByaXYtPmdlbl9wbXUu ZXhjbHVzaXZlX2V2ZW50ID0gZXZlbnQ7CisKKwlldmVudC0+ZGVzdHJveSA9IGk5MTVfZ2VuX2V2 ZW50X2Rlc3Ryb3k7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZl bnRfc3RhcnQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpCit7CisJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUs IHR5cGVvZigqZGV2X3ByaXYpLCBnZW5fcG11LnBtdSk7CisKKwlzcGluX2xvY2soJmRldl9wcml2 LT5nZW5fcG11LmxvY2spOworCWRldl9wcml2LT5nZW5fcG11LmV2ZW50X2FjdGl2ZSA9IHRydWU7 CisJc3Bpbl91bmxvY2soJmRldl9wcml2LT5nZW5fcG11LmxvY2spOworCisJX19ocnRpbWVyX3N0 YXJ0X3JhbmdlX25zKCZkZXZfcHJpdi0+Z2VuX3BtdS50aW1lciwgbnNfdG9fa3RpbWUoUEVSSU9E KSwKKwkJCQkJMCwgSFJUSU1FUl9NT0RFX1JFTF9QSU5ORUQsIDApOworCisJZXZlbnQtPmh3LnN0 YXRlID0gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZlbnRfc3RvcChzdHJ1Y3QgcGVy Zl9ldmVudCAqZXZlbnQsIGludCBmbGFncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCpkZXZfcHJpdiks IGdlbl9wbXUucG11KTsKKworCXNwaW5fbG9jaygmZGV2X3ByaXYtPmdlbl9wbXUubG9jayk7CisJ ZGV2X3ByaXYtPmdlbl9wbXUuZXZlbnRfYWN0aXZlID0gZmFsc2U7CisJc3Bpbl91bmxvY2soJmRl dl9wcml2LT5nZW5fcG11LmxvY2spOworCisJaHJ0aW1lcl9jYW5jZWwoJmRldl9wcml2LT5nZW5f cG11LnRpbWVyKTsKKwlmb3J3YXJkX2dlbl9wbXVfc25hcHNob3RzKGRldl9wcml2KTsKKworCWV2 ZW50LT5ody5zdGF0ZSA9IFBFUkZfSEVTX1NUT1BQRUQ7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9n ZW5fZXZlbnRfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQoreworCWlm IChmbGFncyAmIFBFUkZfRUZfU1RBUlQpCisJCWk5MTVfZ2VuX2V2ZW50X3N0YXJ0KGV2ZW50LCBm bGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZlbnRfZGVs KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQoreworCWk5MTVfZ2VuX2V2ZW50 X3N0b3AoZXZlbnQsIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nZW5fZXZlbnRfcmVh ZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg Kmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwgZ2VuX3Bt dS5wbXUpOworCisJLyogWFhYOiBXaGF0IGNvdW50ZXIgd291bGQgYmUgdXNlZnVsIGhlcmU/ICov CisJbG9jYWw2NF9zZXQoJmV2ZW50LT5jb3VudCwgMCk7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9n ZW5fZXZlbnRfZmx1c2goc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigq aTkxNSksIGdlbl9wbXUucG11KTsKKworCWZvcndhcmRfZ2VuX3BtdV9zbmFwc2hvdHMoaTkxNSk7 CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9nZW5fZXZlbnRfZXZlbnRfaWR4KHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlyZXR1cm4gMDsKK30KKwogdm9pZCBpOTE1X29h X2NvbnRleHRfcGluX25vdGlmeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CQkJc3RydWN0IGludGVsX2NvbnRleHQgKmNvbnRleHQpCiB7CkBAIC0xMzUyLDMgKzE1MjIsNDgg QEAgdm9pZCBpOTE1X29hX3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJ cGVyZl9wbXVfdW5yZWdpc3RlcigmaTkxNS0+b2FfcG11LnBtdSk7CiAJaTkxNS0+b2FfcG11LnBt dS5ldmVudF9pbml0ID0gTlVMTDsKIH0KKwordm9pZCBpOTE1X2dlbl9wbXVfcmVnaXN0ZXIoc3Ry dWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHRvX2k5MTUoZGV2KTsKKworCWlmICghKElTX0hBU1dFTEwoZGV2KSB8fCBJU19WQUxMRVlWSUVX KGRldikgfHwgSVNfQlJPQURXRUxMKGRldikpKQorCQlyZXR1cm47CisKKwlpOTE1LT5nZW5fcG11 LmR1bW15X3JlZ3MgPSAqdGFza19wdF9yZWdzKGN1cnJlbnQpOworCisJaHJ0aW1lcl9pbml0KCZp OTE1LT5nZW5fcG11LnRpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwor CWk5MTUtPmdlbl9wbXUudGltZXIuZnVuY3Rpb24gPSBocnRpbWVyX3NhbXBsZV9nZW47CisKKwlz cGluX2xvY2tfaW5pdCgmaTkxNS0+Z2VuX3BtdS5sb2NrKTsKKworCWk5MTUtPmdlbl9wbXUucG11 LmNhcGFiaWxpdGllcyAgPSBQRVJGX1BNVV9DQVBfSVNfREVWSUNFOworCisJLyogRWZmZWN0aXZl bHkgZGlzYWxsb3cgb3BlbmluZyBhbiBldmVudCB3aXRoIGEgc3BlY2lmaWMgcGlkCisJICogc2lu Y2Ugd2UgYXJlbid0IGludGVyZXN0ZWQgaW4gcHJvY2Vzc2VzIHJ1bm5pbmcgb24gdGhlIGNwdS4u LgorCSAqLworCWk5MTUtPmdlbl9wbXUucG11LnRhc2tfY3R4X25yICAgPSBwZXJmX2ludmFsaWRf Y29udGV4dDsKKworCWk5MTUtPmdlbl9wbXUucG11LmV2ZW50X2luaXQgICAgPSBpOTE1X2dlbl9l dmVudF9pbml0OworCWk5MTUtPmdlbl9wbXUucG11LmFkZAkgICAgICAgPSBpOTE1X2dlbl9ldmVu dF9hZGQ7CisJaTkxNS0+Z2VuX3BtdS5wbXUuZGVsCSAgICAgICA9IGk5MTVfZ2VuX2V2ZW50X2Rl bDsKKwlpOTE1LT5nZW5fcG11LnBtdS5zdGFydAkgICAgICAgPSBpOTE1X2dlbl9ldmVudF9zdGFy dDsKKwlpOTE1LT5nZW5fcG11LnBtdS5zdG9wCSAgICAgICA9IGk5MTVfZ2VuX2V2ZW50X3N0b3A7 CisJaTkxNS0+Z2VuX3BtdS5wbXUucmVhZAkgICAgICAgPSBpOTE1X2dlbl9ldmVudF9yZWFkOwor CWk5MTUtPmdlbl9wbXUucG11LmZsdXNoCSAgICAgICA9IGk5MTVfZ2VuX2V2ZW50X2ZsdXNoOwor CWk5MTUtPmdlbl9wbXUucG11LmV2ZW50X2lkeCAgICAgPSBpOTE1X2dlbl9ldmVudF9ldmVudF9p ZHg7CisKKwlpZiAocGVyZl9wbXVfcmVnaXN0ZXIoJmk5MTUtPmdlbl9wbXUucG11LCAiaTkxNV9n ZW4iLCAtMSkpCisJCWk5MTUtPmdlbl9wbXUucG11LmV2ZW50X2luaXQgPSBOVUxMOworfQorCit2 b2lkIGk5MTVfZ2VuX3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCit7CisJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7CisKKwlpZiAoaTkx NS0+Z2VuX3BtdS5wbXUuZXZlbnRfaW5pdCA9PSBOVUxMKQorCQlyZXR1cm47CisKKwlwZXJmX3Bt dV91bnJlZ2lzdGVyKCZpOTE1LT5nZW5fcG11LnBtdSk7CisJaTkxNS0+Z2VuX3BtdS5wbXUuZXZl bnRfaW5pdCA9IE5VTEw7Cit9Ci0tIAoxLjguNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=