From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH 14/15] drm/i915: Mechanism to forward clock monotonic raw time in perf samples Date: Fri, 4 Nov 2016 15:00:43 +0530 Message-ID: <1478251844-23509-15-git-send-email-sourab.gupta@intel.com> References: <1478251844-23509-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 ESMTPS id 8CB046E8F3 for ; Fri, 4 Nov 2016 09:29:44 +0000 (UTC) In-Reply-To: <1478251844-23509-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: "Christopher S . Hall" , Daniel Vetter , Sourab Gupta , Matthew Auld , Thomas Gleixner List-Id: intel-gfx@lists.freedesktop.org RnJvbTogU291cmFiIEd1cHRhIDxzb3VyYWIuZ3VwdGFAaW50ZWwuY29tPgoKQ3VycmVudGx5LCB3 ZSBoYXZlIHRoZSBhYmlsaXR5IHRvIG9ubHkgZm9yd2FyZCB0aGUgR1BVIHRpbWVzdGFtcHMgaW4g dGhlCnNhbXBsZXMgKHdoaWNoIGFyZSBnZW5lcmF0ZWQgdmlhIE9BIHJlcG9ydHMgb3IgUElQRV9D T05UUk9MIGNvbW1hbmRzCmluc2VydGVkIGluIHRoZSByaW5nKS4gVGhpcyBsaW1pdHMgdGhlIGFi aWxpdHkgdG8gY29ycmVsYXRlIHRoZXNlIHNhbXBsZXMKd2l0aCB0aGUgc3lzdGVtIGV2ZW50cy4g SWYgd2Ugc2NhbGUgdGhlIEdQVSB0aW1lc3RhbXBzIGFjY29yZGluZyB0aGUKdGltZXN0YW1wIGJh c2UvZnJlcXVlbmN5IGluZm8gcHJlc2VudCBpbiBic3BlYywgaXQgaXMgb2JzZXJ2ZWQgdGhhdCB0 aGUKdGltZXN0YW1wcyBkcmlmdCByZWFsbHkgcXVpY2tseSBmcm9tIHRoZSBzeXN0ZW0gdGltZS4K CkFuIGFiaWxpdHkgaXMgdGhlcmVmb3JlIG5lZWRlZCB0byByZXBvcnQgdGltZXN0YW1wcyBpbiBk aWZmZXJlbnQgY2xvY2sKZG9tYWlucywgc3VjaCBhcyBDTE9DS19NT05PVE9OSUMgKG9yIF9NT05P X1JBVyksIGluIHRoZSBwZXJmIHNhbXBsZXMgdG8KYmUgb2YgbW9yZSBwcmFjdGljYWwgdXNlIHRv IHRoZSB1c2Vyc3BhY2UuIFRoaXMgYWJpbGl0eSBiZWNvbWVzIGltcG9ydGFudAp3aGVuIHdlIHdh bnQgdG8gY29ycmVsYXRlL3Bsb3QgR1BVIGV2ZW50cy9zYW1wbGVzIHdpdGggb3RoZXIgc3lzdGVt IGV2ZW50cwpvbiB0aGUgc2FtZSB0aW1lbGluZSAoZS5nLiB2YmxhbmsgZXZlbnRzLCBvciB0aW1l c3RhbXBzIHdoZW4gd29yayB3YXMKc3VibWl0dGVkIHRvIGtlcm5lbCwgZXRjLikKClRoZSBwYXRj aCBoZXJlIHByb3Bvc2VzIGEgbWVjaGFuaXNtIHRvIGFjaGlldmUgdGhpcy4gVGhlIGNvcnJlbGF0 aW9uIGJldHdlZW4KZ3B1IHRpbWUgYW5kIHN5c3RlbSB0aW1lIGlzIGVzdGFibGlzaGVkIHVzaW5n IHRoZSBjcm9zcyB0aW1lc3RhbXAgZnJhbWV3b3JrLgpGb3IgdGhpcyBwdXJwb3NlLCB0aGUgdGlt ZXN0YW1wIGNsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgY29tbWFuZCBzdHJlYW0sIGlzCmFic3Ry YWN0ZWQgYXMgdGltZWNvdW50ZXIvY3ljbGVjb3VudGVyLCBiZWZvcmUgdXRpbGl6aW5nIGNyb3Nz IHRpbWVzdGFtcApmcmFtZXdvcmsgdG8gcmV0cmlldmUgZ3B1L3N5c3RlbSB0aW1lIGNvcnJlbGF0 ZWQgdmFsdWVzLgpEaWZmZXJlbnQgc3VjaCBncHUvc3lzdGVtIHRpbWUgdmFsdWVzIGFyZSB0aGVu IHVzZWQgdG8gZGV0ZWN0IGFuZCBjb3JyZWN0CnRoZSBlcnJvciBpbiBwdWJsaXNoZWQgZ3B1IHRp bWVzdGFtcCBjbG9jayBmcmVxdWVuY3kuIFRoZSB1c2Vyc3BhY2UgY2FuCnJlcXVlc3QgQ0xPQ0tf TU9OT1RPTklDX1JBVyB0aW1lc3RhbXBzIGluIHNhbXBsZXMgYnkgcmVxdWVzdGluZyB0aGUKY29y cmVzcG9uZGluZyBwcm9wZXJ0eSB3aGlsZSBvcGVuaW5nIHRoZSBzdHJlYW0uCgpTaWduZWQtb2Zm LWJ5OiBTb3VyYWIgR3VwdGEgPHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgfCAgMjQgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgfCAy NzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBpbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmggICAgICB8ICAgOSArLQogNCBmaWxlcyBjaGFuZ2VkLCAyODQgaW5zZXJ0 aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggMDZj N2I1NS4uMGRjMjM4NCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0xMDg4LDYgKzEwODgs OCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQkJRFJNX0RFQlVHX0RSSVZFUigiY2FuJ3QgZW5hYmxlIE1TSSIpOwog CX0KIAorCWk5MTVfcGVyZl9pbml0X2xhdGUoZGV2X3ByaXYpOworCiAJcmV0dXJuIDA7CiAKIG91 dF9nZ3R0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggZTkxMjY3OS4uNTU3YTEyNCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00Miw2ICs0Miw5IEBACiAjaW5jbHVkZSA8bGludXgv a3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3Fvcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NobWVt X2ZzLmg+CisjaW5jbHVkZSA8bGludXgvdGltZWNvdW50ZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9j bG9ja3NvdXJjZS5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVrZWVwaW5nLmg+CiAKICNpbmNsdWRl IDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9pbnRlbC1ndHQuaD4KQEAgLTE4NDMsNiArMTg0 Niw5IEBAIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAkvKiBXaGV0aGVyIHRoZSBPQSB1bml0 IGlzIGluIHVzZSAqLwogCWJvb2wgdXNpbmdfb2E7CiAKKwkvKiBtb25vdG9uaWNfcmF3IGNsayB0 aW1lc3RhbXAgKGluIG5zKSBmb3IgbGFzdCBzYW1wbGUgKi8KKwl1NjQgbGFzdF9zYW1wbGVfdHM7 CisKIAljb25zdCBzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbV9vcHMgKm9wczsKIH07CiAKQEAgLTE4 ODksNiArMTg5NSwyMCBAQCBzdHJ1Y3QgaTkxNV9wZXJmX2NzX2RhdGFfbm9kZSB7CiAJdTMyIHRh ZzsKIH07CiAKKy8qKgorICogc3RydWN0IGk5MTVfY2xvY2tfaW5mbyAtIGRlY3JpYmVzIGk5MTUg dGltZXN0YW1wIGNsb2NrCisgKgorICovCitzdHJ1Y3QgaTkxNV9jbG9ja19pbmZvIHsKKwlzdHJ1 Y3QgY3ljbGVjb3VudGVyIGNjOworCXN0cnVjdCB0aW1lY291bnRlciB0YzsKKwlzdHJ1Y3Qgc3lz dGVtX2RldmljZV9jcm9zc3RzdGFtcCB4dHN0YW1wOworCWt0aW1lX3QgY2xrX29mZnNldDsgLyog T2Zmc2V0IChpbiBucykgYmV0d2VlbiBtb25vcmF3IGNsayBhbmQgZ3B1IHRpbWUgKi8KKwl1MzIg dGltZXN0YW1wX2ZyZXF1ZW5jeTsKKwl1MzIgcmVzeW5jX3BlcmlvZDsgLyogaW4gbXNlY3MgKi8K KwlzdHJ1Y3QgZGVsYXllZF93b3JrIGNsa19zeW5jX3dvcms7Cit9OworCiBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGRybV9kZXZpY2UgZHJtOwogCkBAIC0yMTg5LDYgKzIyMDks OCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAlzdHJ1Y3QgaTkxNV9ydW50aW1lX3Bt IHBtOwogCisJc3RydWN0IGk5MTVfY2xvY2tfaW5mbyB0c19jbGtfaW5mbzsKKwogCXN0cnVjdCB7 CiAJCWJvb2wgaW5pdGlhbGl6ZWQ7CiAKQEAgLTIyMTMsNyArMjIzNSw2IEBAIHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlIHsKIAogCQkJYm9vbCBwZXJpb2RpYzsKIAkJCWludCBwZXJpb2RfZXhwb25l bnQ7Ci0JCQlpbnQgdGltZXN0YW1wX2ZyZXF1ZW5jeTsKIAogCQkJaW50IHRhaWxfbWFyZ2luOwog CkBAIC0zNzk2LDYgKzM4MTcsNyBAQCBpbnQgaW50ZWxfZW5naW5lX2NtZF9wYXJzZXIoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAvKiBpOTE1X3BlcmYuYyAqLwogZXh0ZXJuIHZv aWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKK2V4 dGVybiB2b2lkIGk5MTVfcGVyZl9pbml0X2xhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKIGV4dGVybiB2b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X3BlcmZfcmVnaXN0ZXIoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB2b2lkIGk5MTVfcGVyZl91bnJlZ2lz dGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cGVyZi5jCmluZGV4IDhlYjgwZTguLmIxMWU5NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j CkBAIC0xODksNiArMTg5LDcgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2Fub25faW5vZGVzLmg+CiAj aW5jbHVkZSA8bGludXgvc2l6ZXMuaD4KKyNpbmNsdWRlIDxsaW51eC9rdGltZS5oPgogCiAjaW5j bHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpbnRlbF9yaW5nYnVmZmVyLmgiCkBAIC0yMjgs NiArMjI5LDkgQEAKICNkZWZpbmUgUE9MTF9GUkVRVUVOQ1kgMjAwCiAjZGVmaW5lIFBPTExfUEVS SU9EIChOU0VDX1BFUl9TRUMgLyBQT0xMX0ZSRVFVRU5DWSkKIAorI2RlZmluZSBNQVhfQ0xLX1NZ TkNfUEVSSU9EICg2MCpNU0VDX1BFUl9TRUMpCisjZGVmaW5lIElOSVRfQ0xLX1NZTkNfUEVSSU9E ICgyMCkgLyogaW4gbXNlY3MgKi8KKwogc3RhdGljIHUzMiBpOTE1X3BlcmZfc3RyZWFtX3BhcmFu b2lkID0gdHJ1ZTsKIAogLyogVGhlIG1heGltdW0gZXhwb25lbnQgdGhlIGhhcmR3YXJlIGFjY2Vw dHMgaXMgNjMgKGVzc2VudGlhbGx5IGl0IHNlbGVjdHMgb25lCkBAIC0yNTQsMTMgKzI1OCwyNCBA QCBzdGF0aWMgdTMyIGk5MTVfcGVyZl9zdHJlYW1fcGFyYW5vaWQgPSB0cnVlOwogI2RlZmluZSBU U19BRERSX0FMSUdOIDgKICNkZWZpbmUgSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFIDgKIAorLyog UHVibGlzaGVkIGZyZXF1ZW5jeSBvZiBHVCBjb21tYW5kIHN0cmVhbSB0aW1lc3RhbXAgY2xvY2sg Ki8KKyNkZWZpbmUgRlJFUVVFTkNZXzEyXzVfTUhaCSgxMjUwMDAwMCkKKyNkZWZpbmUgRlJFUVVF TkNZXzEyXzBfTUhaCSgxMjAwMDAwMCkKKyNkZWZpbmUgRlJFUVVFTkNZXzE5XzJfTUhaCSgxOTIw MDAwMCkKKyNkZWZpbmUgR1RfQ1NfVElNRVNUQU1QX0ZSRVFVRU5DWShkZXZfcHJpdikgKElTX0dF TjkoZGV2X3ByaXYpID8gXAorCQkJCShJU19CUk9YVE9OKGRldl9wcml2KSA/IFwKKwkJCQlGUkVR VUVOQ1lfMTlfMl9NSFogOiBcCisJCQkJRlJFUVVFTkNZXzEyXzBfTUhaKSA6IFwKKwkJCQlGUkVR VUVOQ1lfMTJfNV9NSFopCisKIC8qIERhdGEgY29tbW9uIHRvIGFsbCBzYW1wbGVzIChwZXJpb2Rp YyBPQSAvIENTIGJhc2VkIE9BIC8gVGltZXN0YW1wcykgKi8KIHN0cnVjdCBzYW1wbGVfZGF0YSB7 CiAJdTMyIHNvdXJjZTsKIAl1MzIgY3R4X2lkOwogCXUzMiBwaWQ7CiAJdTMyIHRhZzsKLQl1NjQg dHM7CisJdTY0IGdwdV90czsKKwl1NjQgY2xrX21vbm9yYXc7CiAJY29uc3QgdTggKnJlcG9ydDsK IH07CiAKQEAgLTMxOSw2ICszMzQsNyBAQCBzdGF0aWMgY29uc3QgZW51bSBpbnRlbF9lbmdpbmVf aWQgdXNlcl9yaW5nX21hcFtJOTE1X1VTRVJfUklOR1MgKyAxXSA9IHsKICNkZWZpbmUgU0FNUExF X1BJRAkJKDE8PDMpCiAjZGVmaW5lIFNBTVBMRV9UQUcJCSgxPDw0KQogI2RlZmluZSBTQU1QTEVf VFMJCSgxPDw1KQorI2RlZmluZSBTQU1QTEVfQ0xLX01PTk9fUkFXCSgxPDw2KQogCiBzdHJ1Y3Qg cGVyZl9vcGVuX3Byb3BlcnRpZXMgewogCXUzMiBzYW1wbGVfZmxhZ3M7CkBAIC0zMzcsNiArMzUz LDEzNiBAQCBzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMgewogCWVudW0gaW50ZWxfZW5naW5l X2lkIGVuZ2luZTsKIH07CiAKKy8qKgorICogaTkxNV90c3RhbXBfY2xrX2N5Y2xlY291bnRlcl9y ZWFkIC0gcmVhZCByYXcgY3ljbGUgY291bnRlcgorICogQGNjOiBjeWNsZWNvdW50ZXIgc3RydWN0 dXJlCisgKiovCitzdGF0aWMgY3ljbGVfdCBpOTE1X3RzdGFtcF9jbGtfY3ljbGVjb3VudGVyX3Jl YWQoCisJCQkJY29uc3Qgc3RydWN0IGN5Y2xlY291bnRlciAqY2MpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFpbmVyX29mKGNjLCB0eXBlb2YoKmRldl9w cml2KSwKKwkJCSAgICAgdHNfY2xrX2luZm8uY2MpOworCisJcmV0dXJuIEk5MTVfUkVBRDY0XzJ4 MzIoR1RfVElNRVNUQU1QX0NPVU5ULAorCQkJCQlHVF9USU1FU1RBTVBfQ09VTlRfVURXKTsKK30K Kworc3RhdGljIHZvaWQgaTkxNV90c3RhbXBfY2xrX2NhbGNfdXBkYXRlX211bHRfc2hpZnQoc3Ry dWN0IGN5Y2xlY291bnRlciAqY2MsCisJCQkJCXUzMiBmcmVxdWVuY3kpCit7CisJY2xvY2tzX2Nh bGNfbXVsdF9zaGlmdCgmY2MtPm11bHQsICZjYy0+c2hpZnQsCisJCQlmcmVxdWVuY3ksIE5TRUNf UEVSX1NFQywgMzYwMCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfdHN0YW1wX2Nsa19pbml0X2Jh c2VfZnJlcShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJc3RydWN0IGN5 Y2xlY291bnRlciAqY2MpCit7CisJY2MtPnJlYWQgPSBpOTE1X3RzdGFtcF9jbGtfY3ljbGVjb3Vu dGVyX3JlYWQ7CisJY2MtPm1hc2sgPSBDWUNMRUNPVU5URVJfTUFTSyg2NCk7CisJaTkxNV90c3Rh bXBfY2xrX2NhbGNfdXBkYXRlX211bHRfc2hpZnQoY2MsCisJCQlkZXZfcHJpdi0+dHNfY2xrX2lu Zm8udGltZXN0YW1wX2ZyZXF1ZW5jeSk7Cit9CisKKy8qKgorICogaTkxNV9nZXRfc3luY2Rldmlj ZXRpbWUgLSBDYWxsYmFjayBnaXZlbiB0byB0aW1la2VlcGluZyBjb2RlIHRvIHJlYWQKKwlkZXZp Y2UgdGltZSBhbmQgc3l0ZW0gY2xrIGNvdW50ZXIgdmFsdWUKKyAqIEBkZXZpY2VfdGltZTogY3Vy cmVudCBkZXZpY2UgdGltZQorICogQHN5c3RlbTogc3lzdGVtIGNvdW50ZXIgdmFsdWUgcmVhZCBz eW5jaHJvbm91c2x5IHdpdGggZGV2aWNlIHRpbWUKKyAqIEBjdHg6IGNvbnRleHQgcHJvdmlkZWQg YnkgdGltZWtlZXBpbmcgY29kZQorICoKKyAqKi8KK3N0YXRpYyBpbnQgaTkxNV9nZXRfc3luY2Rl dmljZXRpbWUoa3RpbWVfdCAqZGV2aWNlX3RpbWUsCisJCQkJCSBzdHJ1Y3Qgc3lzdGVtX2NvdW50 ZXJ2YWxfdCAqc3lzdGVtLAorCQkJCQkgdm9pZCAqY3R4KQoreworCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKWN0eDsKKwlzdHJ1 Y3QgdGltZWNvdW50ZXIgKnRjID0gJmRldl9wcml2LT50c19jbGtfaW5mby50YzsKKwlzdHJ1Y3Qg Y2xvY2tzb3VyY2UgKmN1cnJfY2xrc291cmNlOworCisJKmRldmljZV90aW1lID0gbnNfdG9fa3Rp bWUodGltZWNvdW50ZXJfcmVhZCh0YykpOworCisJY3Vycl9jbGtzb3VyY2UgPSBnZXRfY3VycmVu dF9jbG9ja3NvdXJjZSgpOworCXN5c3RlbS0+Y3ljbGVzID0gY3Vycl9jbGtzb3VyY2UtPnJlYWQo Y3Vycl9jbGtzb3VyY2UpOworCXN5c3RlbS0+Y3MgPSBjdXJyX2Nsa3NvdXJjZTsKKworCXJldHVy biAwOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3BlcmZfY2xvY2tfc3luY193b3JrKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PQorCQljb250YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksCisJCXRzX2Nsa19pbmZv LmNsa19zeW5jX3dvcmsud29yayk7CisJc3RydWN0IHN5c3RlbV9kZXZpY2VfY3Jvc3N0c3RhbXAg Knh0c3RhbXAgPQorCQkJJmRldl9wcml2LT50c19jbGtfaW5mby54dHN0YW1wOworCWt0aW1lX3Qg bGFzdF9zeXNfdGltZSA9IHh0c3RhbXAtPnN5c19tb25vcmF3OworCWt0aW1lX3QgbGFzdF9ncHVf dGltZSA9IHh0c3RhbXAtPmRldmljZTsKKwlrdGltZV90IGNsa19tb25vX29mZnNldCwgZ3B1X3Rp bWVfb2Zmc2V0OworCXM2NCBkZWx0YTsKKwl1MzIgZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+dHNfY2xr X2luZm8udGltZXN0YW1wX2ZyZXF1ZW5jeTsKKwl1MzIgZnJlcV9kZWx0YSA9IDA7CisKKwlnZXRf ZGV2aWNlX3N5c3RlbV9jcm9zc3RzdGFtcChpOTE1X2dldF9zeW5jZGV2aWNldGltZSwgZGV2X3By aXYsCisJCQkJCU5VTEwsIHh0c3RhbXApOworCisJY2xrX21vbm9fb2Zmc2V0ID0ga3RpbWVfc3Vi KHh0c3RhbXAtPnN5c19tb25vcmF3LCBsYXN0X3N5c190aW1lKTsKKwlncHVfdGltZV9vZmZzZXQg PSBrdGltZV9zdWIoeHRzdGFtcC0+ZGV2aWNlLCBsYXN0X2dwdV90aW1lKTsKKworCS8qIGRlbHRh IHRpbWUgaW4gbnMgKi8KKwlkZWx0YSA9IGt0aW1lX3RvX25zKGt0aW1lX3N1YihncHVfdGltZV9v ZmZzZXQsIGNsa19tb25vX29mZnNldCkpOworCisJLyogSWYgdGltZSBkZWx0YSA8IDEgdXMsIHdl IGNhbiBhc3N1bWUgZ3B1IGZyZXF1ZW5jeSBpcyBjb3JyZWN0ICovCisJaWYgKGFicyhkZWx0YSkg PCBOU0VDX1BFUl9VU0VDKQorCQlnb3RvIG91dDsKKworCS8qIFRoZSB0d28gY2xvY2tzIHNob3Vs ZG4ndCBkZXZpYXRlIG1vcmUgdGhhbiAxIHNlY29uZCBkdXJpbmcgdGhlCisJICogcmVzeW5jIHBl cmlvZC4gSWYgdGhpcyBpcyB0aGUgY2FzZSAod2hpY2ggbWF5IGhhcHBlbiBkdWUgdG8KKwkgKiBz dXNwZW5kL3Jlc3VtZSksIHRoZW4gZG9uJ3QgYXBwbHkgZnJlcXVlbmN5IGNvcnJlY3Rpb24sIGFu ZAorCSAqIGZhc3QgZm9yd2FyZC9yZXdpbmQgdGhlIGNsb2NrcyB0byByZXN5bmMgaW1tZWRpYXRl bHkKKwkgKi8KKwlpZiAoYWJzKGRlbHRhKSA+IE5TRUNfUEVSX1NFQykKKwkJZ290byBvdXQ7CisK KwkvKiBDYWxjdWxhdGUgZnJlcXVlbmN5IGRlbHRhICovCisJZnJlcV9kZWx0YSA9IGFicyhkZWx0 YSkqZ3B1X2ZyZXE7CisJZG9fZGl2KGZyZXFfZGVsdGEsIGt0aW1lX3RvX25zKGNsa19tb25vX29m ZnNldCkpOworCisJaWYgKGZyZXFfZGVsdGEgPT0gMCkKKwkJZ290byBvdXQ7CisKKwlpZiAoZGVs dGEgPCAwKQorCQlmcmVxX2RlbHRhID0gLWZyZXFfZGVsdGE7CisKKwlkZXZfcHJpdi0+dHNfY2xr X2luZm8udGltZXN0YW1wX2ZyZXF1ZW5jeSArPSBmcmVxX2RlbHRhOworCWk5MTVfdHN0YW1wX2Ns a19jYWxjX3VwZGF0ZV9tdWx0X3NoaWZ0KCZkZXZfcHJpdi0+dHNfY2xrX2luZm8uY2MsCisJCQlk ZXZfcHJpdi0+dHNfY2xrX2luZm8udGltZXN0YW1wX2ZyZXF1ZW5jeSk7CisKKwkvKgorCSAqIEdl dCB1cGRhdGVkIGRldmljZS9zeXN0ZW0gdGltZXMgYmFzZWQgb24gY29ycmVjdGVkIGZyZXF1ZW5j eS4KKwkgKiBOb3RlIHRoYXQgdGhpcyBtYXkgY2F1c2UganVtcHMgaW4gZGV2aWNlIHRpbWUgZGVw ZW5kaW5nIG9uIHdoZXRoZXIKKwkgKiBmcmVxdWVuY3kgZGVsdGEgaXMgcG9zaXRpdmUgb3IgbmVn YXRpdmUuCisJICogTkI6IFRha2UgY2FyZSB0aGF0IG1vbm90b25pY2l0eSBvZiBzYW1wbGUgdGlt ZXN0YW1wcyBpcyBtYWludGFpbmVkCisJICogZXZlbiB3aXRoIHRoZXNlIGp1bXBzLgorCSAqLwor CWdldF9kZXZpY2Vfc3lzdGVtX2Nyb3NzdHN0YW1wKGk5MTVfZ2V0X3N5bmNkZXZpY2V0aW1lLCBk ZXZfcHJpdiwKKwkJCQkJTlVMTCwgeHRzdGFtcCk7CisKK291dDoKKwlkZXZfcHJpdi0+dHNfY2xr X2luZm8uY2xrX29mZnNldCA9IGt0aW1lX3N1Yih4dHN0YW1wLT5zeXNfbW9ub3JhdywKKwkJCQkJ CXh0c3RhbXAtPmRldmljZSk7CisKKwkvKiBXZSBjYW4gc2NoZWR1bGUgbmV4dCBzeW5jaHJvbml6 YXRpb24gYXQgaW5jcmVtZW50YWxseSBoaWdoZXIKKwkgKiBkdXJhdGlvbnMsIHNvIHRoYXQgdGhl IGFjY3VyYWN5IG9mIG91ciBjYWxjdWxhdGVkIGZyZXF1ZW5jeQorCSAqIGNhbiBpbXByb3ZlIG92 ZXIgdGltZS4gVGhlIG1heCByZXN5bmMgcGVyaW9kIGlzIGFyYml0cmFyaWx5CisJICogc2V0IGFz IG9uZSBob3VyLgorCSAqLworCWRldl9wcml2LT50c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kICo9 IDI7CisJaWYgKGRldl9wcml2LT50c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kIDwgTUFYX0NMS19T WU5DX1BFUklPRCkKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+dHNfY2xrX2lu Zm8uY2xrX3N5bmNfd29yaywKKwkJCW1zZWNzX3RvX2ppZmZpZXMoZGV2X3ByaXYtPnRzX2Nsa19p bmZvLnJlc3luY19wZXJpb2QpKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIGNvbW1hbmRzIHRvIGNh cHR1cmUgbWV0cmljcywgaW50byB0aGUgY29tbWFuZCBzdHJlYW0uIFRoaXMgZnVuY3Rpb24KICAq IGNhbiBiZSBjYWxsZWQgY29uY3VycmVudGx5IHdpdGggdGhlIHN0cmVhbSBvcGVyYXRpb25zIGFu ZCBkb2Vzbid0IHJlcXVpcmUKQEAgLTQxMSw3ICs1NTcsNyBAQCBzdGF0aWMgaW50IGluc2VydF9w ZXJmX2VudHJ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCWlmIChzdHJl YW0tPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpCiAJCWVudHJ5X3NpemUgKz0gZGV2 X3ByaXYtPnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwotCWVsc2UgaWYgKHNhbXBsZV9m bGFncyAmIFNBTVBMRV9UUykgeworCWVsc2UgaWYgKHNhbXBsZV9mbGFncyAmIChTQU1QTEVfVFN8 U0FNUExFX0NMS19NT05PX1JBVykpIHsKIAkJLyoKIAkJICogWFhYOiBTaW5jZSBUUyBkYXRhIGNh biBhbnl3YXlzIGJlIGRlcml2ZWQgZnJvbSBPQSByZXBvcnQsIHNvCiAJCSAqIG5vIG5lZWQgdG8g Y2FwdHVyZSBpdCBmb3IgUkNTIGVuZ2luZSwgaWYgY2FwdHVyZSBvYSBkYXRhIGlzCkBAIC02Mjcs NyArNzczLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yaW5nX3N0cmVhbV9jc19ob29rKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCXJldCA9IGk5MTVfcmluZ19zdHJlYW1fY2FwdHVy ZV9vYShyZXEsIGVudHJ5LT5vYV9vZmZzZXQpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJfdW5y ZWY7Ci0JfSBlbHNlIGlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpIHsKKwl9IGVsc2UgaWYg KHNhbXBsZV9mbGFncyAmIChTQU1QTEVfVFN8U0FNUExFX0NMS19NT05PX1JBVykpIHsKIAkJLyoK IAkJICogWFhYOiBTaW5jZSBUUyBkYXRhIGNhbiBhbnl3YXlzIGJlIGRlcml2ZWQgZnJvbSBPQSBy ZXBvcnQsIHNvCiAJCSAqIG5vIG5lZWQgdG8gY2FwdHVyZSBpdCBmb3IgUkNTIGVuZ2luZSwgaWYg Y2FwdHVyZSBvYSBkYXRhIGlzCkBAIC04ODcsNyArMTAzMywxNCBAQCBzdGF0aWMgaW50IGFwcGVu ZF9zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAl9CiAKIAlpZiAoc2Ft cGxlX2ZsYWdzICYgU0FNUExFX1RTKSB7Ci0JCWlmIChjb3B5X3RvX3VzZXIoYnVmLCAmZGF0YS0+ dHMsIEk5MTVfUEVSRl9UU19TQU1QTEVfU0laRSkpCisJCWlmIChjb3B5X3RvX3VzZXIoYnVmLCAm ZGF0YS0+Z3B1X3RzLCBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkUpKQorCQkJcmV0dXJuIC1FRkFV TFQ7CisJCWJ1ZiArPSBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkU7CisJfQorCisJaWYgKHNhbXBs ZV9mbGFncyAmIFNBTVBMRV9DTEtfTU9OT19SQVcpIHsKKwkJaWYgKGNvcHlfdG9fdXNlcihidWYs ICZkYXRhLT5jbGtfbW9ub3JhdywKKwkJCQkJSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFKSkKIAkJ CXJldHVybiAtRUZBVUxUOwogCQlidWYgKz0gSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFOwogCX0K QEAgLTkwMyw2ICsxMDU2LDI3IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3NhbXBsZShzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCXJldHVybiAwOwogfQogCitzdGF0aWMgdTY0IGdldF9j bGtfbW9ub3Jhd19mcm9tX2dwdV90cyhzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAor CQkJCQl1NjQgZ3B1X3RzKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHN0cmVhbS0+ZGV2X3ByaXY7CisJc3RydWN0IHRpbWVjb3VudGVyICp0YyA9ICZkZXZfcHJpdi0+ dHNfY2xrX2luZm8udGM7CisJdTY0IGdwdV90aW1lLCBjbGtfbW9ub3JhdzsKKworCWdwdV90aW1l ID0gY3ljbGVjb3VudGVyX2N5YzJucyh0Yy0+Y2MsIGdwdV90cywgdGMtPm1hc2ssICZ0Yy0+ZnJh Yyk7CisKKwljbGtfbW9ub3JhdyA9IGdwdV90aW1lICsga3RpbWVfdG9fbnMoZGV2X3ByaXYtPnRz X2Nsa19pbmZvLmNsa19vZmZzZXQpOworCisJLyogRW5zdXJlIG1vbm90b25pY2l0eSBieSBjbGFt cGluZyB0aGUgc3lzdGVtIHRpbWUgaW4gY2FzZSBpdCBnb2VzCisJICogYmFja3dhcmRzLgorCSAq LworCWlmIChjbGtfbW9ub3JhdyA8IHN0cmVhbS0+bGFzdF9zYW1wbGVfdHMpCisJCWNsa19tb25v cmF3ID0gc3RyZWFtLT5sYXN0X3NhbXBsZV90czsKKworCXN0cmVhbS0+bGFzdF9zYW1wbGVfdHMg PSBjbGtfbW9ub3JhdzsKKwlyZXR1cm4gY2xrX21vbm9yYXc7Cit9CisKIHN0YXRpYyB1NjQgZ2V0 X2dwdV90c19mcm9tX29hX3JlcG9ydChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkJCWNvbnN0IHU4ICpyZXBvcnQpCiB7CkBAIC05NjAsNyArMTEzNCwxMyBAQCBzdGF0aWMg aW50IGFwcGVuZF9vYV9idWZmZXJfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJl YW0sCiAKIAkvKiBEZXJpdmUgdGltZXN0YW1wIGZyb20gT0EgcmVwb3J0ICovCiAJaWYgKHNhbXBs ZV9mbGFncyAmIFNBTVBMRV9UUykKLQkJZGF0YS50cyA9IGdldF9ncHVfdHNfZnJvbV9vYV9yZXBv cnQoZGV2X3ByaXYsIHJlcG9ydCk7CisJCWRhdGEuZ3B1X3RzID0gZ2V0X2dwdV90c19mcm9tX29h X3JlcG9ydChkZXZfcHJpdiwgcmVwb3J0KTsKKworCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVf Q0xLX01PTk9fUkFXKSB7CisJCXU2NCBncHVfdHMgPSBnZXRfZ3B1X3RzX2Zyb21fb2FfcmVwb3J0 KGRldl9wcml2LCByZXBvcnQpOworCisJCWRhdGEuY2xrX21vbm9yYXcgPSBnZXRfY2xrX21vbm9y YXdfZnJvbV9ncHVfdHMoc3RyZWFtLCBncHVfdHMpOworCX0KIAogCWlmIChzYW1wbGVfZmxhZ3Mg JiBTQU1QTEVfT0FfUkVQT1JUKQogCQlkYXRhLnJlcG9ydCA9IHJlcG9ydDsKQEAgLTE0NzgsNyAr MTY1OCw3IEBAIHN0YXRpYyBpbnQgYXBwZW5kX29uZV9jc19zYW1wbGUoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKIAkJaWYgKHJldCkKIAkJCXJldHVybiByZXQ7CiAKLQkJaWYgKHNh bXBsZV9mbGFncyAmIFNBTVBMRV9UUykKKwkJaWYgKHNhbXBsZV9mbGFncyAmIChTQU1QTEVfVFN8 U0FNUExFX0NMS19NT05PX1JBVykpCiAJCQlncHVfdHMgPSBnZXRfZ3B1X3RzX2Zyb21fb2FfcmVw b3J0KGRldl9wcml2LCByZXBvcnQpOwogCX0KIApAQCAtMTUwMCw3ICsxNjgwLDcgQEAgc3RhdGlj IGludCBhcHBlbmRfb25lX2NzX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt LAogCQlkZXZfcHJpdi0+cGVyZi5sYXN0X3RhZyA9IG5vZGUtPnRhZzsKIAl9CiAKLQlpZiAoc2Ft cGxlX2ZsYWdzICYgU0FNUExFX1RTKSB7CisJaWYgKHNhbXBsZV9mbGFncyAmIChTQU1QTEVfVFN8 U0FNUExFX0NMS19NT05PX1JBVykpIHsKIAkJLyogSWYgT0Egc2FtcGxpbmcgaXMgZW5hYmxlZCwg ZGVyaXZlIHRoZSB0cyBmcm9tIE9BIHJlcG9ydC4KIAkJICogRWxzZSwgZm9yd2FyZCB0aGUgdGlt ZXN0YW1wIGNvbGxlY3RlZCB2aWEgY29tbWFuZCBzdHJlYW0uCiAJCSAqLwpAQCAtMTUwOCw3ICsx Njg4LDEyIEBAIHN0YXRpYyBpbnQgYXBwZW5kX29uZV9jc19zYW1wbGUoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSwKIAkJCWdwdV90cyA9ICoodTY0ICopCiAJCQkJKGRldl9wcml2LT5w ZXJmLmNvbW1hbmRfc3RyZWFtX2J1ZltpZF0uYWRkciArCiAJCQkJCW5vZGUtPnRzX29mZnNldCk7 Ci0JCWRhdGEudHMgPSBncHVfdHM7CisKKwkJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9UUykK KwkJCWRhdGEuZ3B1X3RzID0gZ3B1X3RzOworCQlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX0NM S19NT05PX1JBVykKKwkJCWRhdGEuY2xrX21vbm9yYXcgPSBnZXRfY2xrX21vbm9yYXdfZnJvbV9n cHVfdHMoCisJCQkJCQkJc3RyZWFtLAlncHVfdHMpOwogCX0KIAogCXJldHVybiBhcHBlbmRfc2Ft cGxlKHN0cmVhbSwgYnVmLCBjb3VudCwgb2Zmc2V0LCAmZGF0YSk7CkBAIC0yMjk5LDEyICsyNDg0 LDI4IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmluZ19zdHJlYW1fZW5hYmxlKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0pCiAJaWYgKHN0cmVhbS0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX09B X1JFUE9SVCkgewogCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfZW5hYmxlKGRldl9wcml2KTsK IAotCQlpZiAoc3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpCisJCWlmIChzdHJlYW0t PnNhbXBsZV9mbGFncyAmIChTQU1QTEVfVFN8U0FNUExFX0NMS19NT05PX1JBVykpCiAJCQlkZXZf cHJpdi0+cGVyZi5vYS5sYXN0X2dwdV90cyA9CiAJCQkJSTkxNV9SRUFENjRfMngzMihHVF9USU1F U1RBTVBfQ09VTlQsCiAJCQkJCUdUX1RJTUVTVEFNUF9DT1VOVF9VRFcpOwogCX0KIAorCWlmIChz dHJlYW0tPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9DTEtfTU9OT19SQVcpIHsKKwkJc3RydWN0IHN5 c3RlbV9kZXZpY2VfY3Jvc3N0c3RhbXAgKnh0c3RhbXAgPQorCQkJJmRldl9wcml2LT50c19jbGtf aW5mby54dHN0YW1wOworCisJCWdldF9kZXZpY2Vfc3lzdGVtX2Nyb3NzdHN0YW1wKGk5MTVfZ2V0 X3N5bmNkZXZpY2V0aW1lLCBkZXZfcHJpdiwKKwkJCQkJTlVMTCwgeHRzdGFtcCk7CisJCWRldl9w cml2LT50c19jbGtfaW5mby5jbGtfb2Zmc2V0ID0ga3RpbWVfc3ViKHh0c3RhbXAtPnN5c19tb25v cmF3LAorCQkJCQkJeHRzdGFtcC0+ZGV2aWNlKTsKKworCQlpZiAoZGV2X3ByaXYtPnRzX2Nsa19p bmZvLnJlc3luY19wZXJpb2QgPCBNQVhfQ0xLX1NZTkNfUEVSSU9EKQorCQkJc2NoZWR1bGVfZGVs YXllZF93b3JrKAorCQkJCSZkZXZfcHJpdi0+dHNfY2xrX2luZm8uY2xrX3N5bmNfd29yaywKKwkJ CQltc2Vjc190b19qaWZmaWVzKAorCQkJCQlkZXZfcHJpdi0+dHNfY2xrX2luZm8ucmVzeW5jX3Bl cmlvZCkpOworCX0KKwogCWlmIChzdHJlYW0tPmNzX21vZGUgfHwgZGV2X3ByaXYtPnBlcmYub2Eu cGVyaW9kaWMpCiAJCWhydGltZXJfc3RhcnQoJmRldl9wcml2LT5wZXJmLnBvbGxfY2hlY2tfdGlt ZXIsCiAJCQkgICAgICBuc190b19rdGltZShQT0xMX1BFUklPRCksCkBAIC0yMzI1LDYgKzI1MjYs OCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jpbmdfc3RyZWFtX2Rpc2FibGUoc3RydWN0IGk5MTVfcGVy Zl9zdHJlYW0gKnN0cmVhbSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBzdHJlYW0tPmRldl9wcml2OwogCisJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJp di0+dHNfY2xrX2luZm8uY2xrX3N5bmNfd29yayk7CisKIAlpZiAoc3RyZWFtLT5jc19tb2RlIHx8 IGRldl9wcml2LT5wZXJmLm9hLnBlcmlvZGljKQogCQlocnRpbWVyX2NhbmNlbCgmZGV2X3ByaXYt PnBlcmYucG9sbF9jaGVja190aW1lcik7CiAKQEAgLTIzNDAsNyArMjU0Myw3IEBAIHN0YXRpYyB2 b2lkIGk5MTVfcmluZ19zdHJlYW1fZGlzYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3Ry ZWFtKQogc3RhdGljIHU2NCBvYV9leHBvbmVudF90b19ucyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGludCBleHBvbmVudCkKIHsKIAlyZXR1cm4gMTAwMDAwMDAwMFVMTCAqICgy VUxMIDw8IGV4cG9uZW50KSAvCi0JCWRldl9wcml2LT5wZXJmLm9hLnRpbWVzdGFtcF9mcmVxdWVu Y3k7CisJCWRldl9wcml2LT50c19jbGtfaW5mby50aW1lc3RhbXBfZnJlcXVlbmN5OwogfQogCiBz dGF0aWMgY29uc3Qgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW1fb3BzIGk5MTVfb2Ffc3RyZWFtX29w cyA9IHsKQEAgLTIzNjMsNyArMjU2Niw4IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX3N0cmVhbV9p bml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJYm9vbCByZXF1aXJlX2NzX21v ZGUgPSBwcm9wcy0+c2FtcGxlX2ZsYWdzICYgKFNBTVBMRV9QSUQgfAogCQkJCQkJICAgICAgU0FN UExFX1RBRyk7CiAJYm9vbCBjc19zYW1wbGVfZGF0YSA9IHByb3BzLT5zYW1wbGVfZmxhZ3MgJiAo U0FNUExFX09BX1JFUE9SVCB8Ci0JCQkJCQkJU0FNUExFX1RTKTsKKwkJCQkJCQlTQU1QTEVfVFMg fAorCQkJCQkJCVNBTVBMRV9DTEtfTU9OT19SQVcpOwogCWludCByZXQ7CiAKIAlpZiAoKHByb3Bz LT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfQ1RYX0lEKSAmJiAhcHJvcHMtPmNzX21vZGUpIHsKQEAg LTI1MjUsNiArMjcyOSwxOSBAQCBzdGF0aWMgaW50IGk5MTVfcmluZ19zdHJlYW1faW5pdChzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQkJcmVxdWlyZV9jc19tb2RlID0gdHJ1ZTsK IAl9CiAKKwlpZiAocHJvcHMtPnNhbXBsZV9mbGFncyAmIFNBTVBMRV9DTEtfTU9OT19SQVcpIHsK KwkJc3RyZWFtLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX0NMS19NT05PX1JBVzsKKwkJc3RyZWFt LT5zYW1wbGVfc2l6ZSArPSBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkU7CisKKwkJLyoKKwkJICog TkI6IGl0J3MgbWVhbmluZ2Z1bCB0byByZXF1ZXN0IFNBTVBMRV9DTEtfTU9OTyB3aXRoIGp1c3Qg Q1MKKwkJICogbW9kZSBvciBwZXJpb2RpYyBPQSBtb2RlIHNhbXBsaW5nIGJ1dCB3ZSBkb24ndCBh bGxvdworCQkgKiBTQU1QTEVfQ0xLX01PTk8gd2l0aG91dCBlaXRoZXIgbW9kZQorCQkgKi8KKwkJ aWYgKCFyZXF1aXJlX29hX3VuaXQpCisJCQlyZXF1aXJlX2NzX21vZGUgPSB0cnVlOworCX0KKwog CWlmIChyZXF1aXJlX2NzX21vZGUgJiYgIXByb3BzLT5jc19tb2RlKSB7CiAJCURSTV9FUlJPUigK IAkJCSJQSUQsIFRBRyBvciBUUyBzYW1wbGluZyByZXF1aXJlIGEgcmluZyB0byBiZSBzcGVjaWZp ZWQiKTsKQEAgLTI1NDksMTEgKzI3NjYsMTMgQEAgc3RhdGljIGludCBpOTE1X3Jpbmdfc3RyZWFt X2luaXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAogCQkvKgogCQkgKiBUaGUg b25seSB0aW1lIHdlIHNob3VsZCBhbGxvdyBlbmFibGluZyBDUyBtb2RlIGlmIGl0J3Mgbm90Ci0J CSAqIHN0cmljdGx5IHJlcXVpcmVkLCBpcyBpZiBTQU1QTEVfQ1RYX0lEICBvciBTQU1QTEVfVFMg aGFzIGJlZW4KLQkJICogcmVxdWVzdGVkLCBhcyB0aGV5J3JlIHVzYWJsZSB3aXRoIHBlcmlvZGlj IE9BIG9yIENTIHNhbXBsaW5nLgorCQkgKiBzdHJpY3RseSByZXF1aXJlZCwgaXMgaWYgU0FNUExF X0NUWF9JRCwgU0FNUExFX1RTIG9yCisJCSAqIFNBTVBMRV9DTEtfTU9OT19SQVcgaGFzIGJlZW4g cmVxdWVzdGVkLCBhcyB0aGV5J3JlIHVzYWJsZQorCQkgKiB3aXRoIHBlcmlvZGljIE9BIG9yIENT IHNhbXBsaW5nLgogCQkgKi8KIAkJaWYgKCFyZXF1aXJlX2NzX21vZGUgJiYKLQkJICAgICEocHJv cHMtPnNhbXBsZV9mbGFncyAmIChTQU1QTEVfQ1RYX0lEfFNBTVBMRV9UUykpKSB7CisJCSAgICAh KHByb3BzLT5zYW1wbGVfZmxhZ3MgJgorCQkJCShTQU1QTEVfQ1RYX0lEfFNBTVBMRV9UU3xTQU1Q TEVfQ0xLX01PTk9fUkFXKSkpIHsKIAkJCURSTV9FUlJPUigKIAkJCQkiUmluZyBnaXZlbiB3aXRo b3V0IHJlcXVlc3RpbmcgYW55IENTIHNwZWNpZmljIHByb3BlcnR5Iik7CiAJCQlyZXQgPSAtRUlO VkFMOwpAQCAtMzI0Nyw2ICszNDY2LDkgQEAgc3RhdGljIGludCByZWFkX3Byb3BlcnRpZXNfdW5s b2NrZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQljYXNlIERSTV9JOTE1 X1BFUkZfUFJPUF9TQU1QTEVfVFM6CiAJCQlwcm9wcy0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9U UzsKIAkJCWJyZWFrOworCQljYXNlIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfQ0xPQ0tfTU9O T1RPTklDX1JBVzoKKwkJCXByb3BzLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX0NMS19NT05PX1JB VzsKKwkJCWJyZWFrOwogCQljYXNlIERSTV9JOTE1X1BFUkZfUFJPUF9NQVg6CiAJCQlCVUcoKTsK IAkJfQpAQCAtMzM5NCw2ICszNjE2LDcgQEAgc3RhdGljIHN0cnVjdCBjdGxfdGFibGUgZGV2X3Jv b3RbXSA9IHsKIAogdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiB7CisJc3RydWN0IGk5MTVfY2xvY2tfaW5mbyAqY2xrX2luZm8gPSAmZGV2X3By aXYtPnRzX2Nsa19pbmZvOwogCWludCBpOwogCiAJaWYgKCEoSVNfSEFTV0VMTChkZXZfcHJpdikg fHwKQEAgLTM0MDEsNiArMzYyNCwxMiBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkgICAgICBJU19TS1lMQUtFKGRldl9wcml2KSkpCiAJ CXJldHVybjsKIAorCWNsa19pbmZvLT50aW1lc3RhbXBfZnJlcXVlbmN5ID0gR1RfQ1NfVElNRVNU QU1QX0ZSRVFVRU5DWShkZXZfcHJpdik7CisJY2xrX2luZm8tPnJlc3luY19wZXJpb2QgPSBJTklU X0NMS19TWU5DX1BFUklPRDsKKwlJTklUX0RFTEFZRURfV09SSygmY2xrX2luZm8tPmNsa19zeW5j X3dvcmssIGk5MTVfcGVyZl9jbG9ja19zeW5jX3dvcmspOworCisJaTkxNV90c3RhbXBfY2xrX2lu aXRfYmFzZV9mcmVxKGRldl9wcml2LCAmY2xrX2luZm8tPmNjKTsKKwogCWhydGltZXJfaW5pdCgm ZGV2X3ByaXYtPnBlcmYucG9sbF9jaGVja190aW1lciwKIAkJICAgICBDTE9DS19NT05PVE9OSUMs IEhSVElNRVJfTU9ERV9SRUwpOwogCWRldl9wcml2LT5wZXJmLnBvbGxfY2hlY2tfdGltZXIuZnVu Y3Rpb24gPSBwb2xsX2NoZWNrX3RpbWVyX2NiOwpAQCAtMzQzMCw4ICszNjU5LDYgQEAgdm9pZCBp OTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldl9w cml2LT5wZXJmLm9hLm9wcy5vYV9idWZmZXJfZ2V0X2N0eF9pZCA9CiAJCQkJCWdlbjdfb2FfYnVm ZmVyX2dldF9jdHhfaWQ7CiAKLQkJZGV2X3ByaXYtPnBlcmYub2EudGltZXN0YW1wX2ZyZXF1ZW5j eSA9IDEyNTAwMDAwOwotCiAJCWRldl9wcml2LT5wZXJmLm9hLm9hX2Zvcm1hdHMgPSBoc3dfb2Ff Zm9ybWF0czsKIAogCQlkZXZfcHJpdi0+cGVyZi5vYS5uX2J1aWx0aW5fc2V0cyA9CkBAIC0zNDYy LDggKzM2ODksNiBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKIAkJCWRldl9wcml2LT5wZXJmLm9hLmN0eF9mbGV4ZXUwX29mZiA9IDB4MmNl OwogCQkJZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgPQogCQkJCWk5MTVfb2Ffbl9i dWlsdGluX21ldHJpY19zZXRzX2JkdzsKLQotCQkJZGV2X3ByaXYtPnBlcmYub2EudGltZXN0YW1w X2ZyZXF1ZW5jeSA9IDEyNTAwMDAwOwogCQl9IGVsc2UgaWYgKElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKSB7CiAJCQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJpY19zZXQgPQogCQkJ CWNodl9lbmFibGVfbWV0cmljX3NldDsKQEAgLTM0NzMsOCArMzY5OCw2IEBAIHZvaWQgaTkxNV9w ZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJZGV2X3ByaXYt PnBlcmYub2EuY3R4X2ZsZXhldTBfb2ZmID0gMHgyY2U7CiAJCQlkZXZfcHJpdi0+cGVyZi5vYS5u X2J1aWx0aW5fc2V0cyA9CiAJCQkJaTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfY2h2Owot Ci0JCQlkZXZfcHJpdi0+cGVyZi5vYS50aW1lc3RhbXBfZnJlcXVlbmN5ID0gMTI1MDAwMDA7CiAJ CX0gZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKIAkJCWRldl9wcml2LT5wZXJmLm9h Lm9wcy5lbmFibGVfbWV0cmljX3NldCA9CiAJCQkJc2tsX2VuYWJsZV9tZXRyaWNfc2V0OwpAQCAt MzQ4NCw4ICszNzA3LDYgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCQlkZXZfcHJpdi0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmYgPSAw eDNkZTsKIAkJCWRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzID0KIAkJCQlpOTE1X29h X25fYnVpbHRpbl9tZXRyaWNfc2V0c19za2w7Ci0KLQkJCWRldl9wcml2LT5wZXJmLm9hLnRpbWVz dGFtcF9mcmVxdWVuY3kgPSAxMjAwMDAwMDsKIAkJfQogCX0KIApAQCAtMzQ5NCw2ICszNzE1LDE0 IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQogCWRldl9wcml2LT5wZXJmLmluaXRpYWxpemVkID0gdHJ1ZTsKIH0KIAordm9pZCBpOTE1X3Bl cmZfaW5pdF9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1 Y3QgaTkxNV9jbG9ja19pbmZvICpjbGtfaW5mbyA9ICZkZXZfcHJpdi0+dHNfY2xrX2luZm87CisK Kwl0aW1lY291bnRlcl9pbml0KCZjbGtfaW5mby0+dGMsCSZjbGtfaW5mby0+Y2MsCisJCQkJa3Rp bWVfdG9fbnMoa3RpbWVfZ2V0X2Jvb3R0aW1lKCkpKTsKK30KKwogdm9pZCBpOTE1X3BlcmZfZmlu aShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJaWYgKCFkZXZfcHJpdi0+ cGVyZi5pbml0aWFsaXplZCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0u aCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCAwZGNjMzI1Li4wMTA4Mjg0IDEw MDY0NAotLS0gYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBp L2RybS9pOTE1X2RybS5oCkBAIC0xMzMwLDYgKzEzMzAsMTIgQEAgZW51bSBkcm1faTkxNV9wZXJm X3Byb3BlcnR5X2lkIHsKIAkgKi8KIAlEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX1RTLAogCisJ LyoqCisJICogVGhpcyBwcm9wZXJ0eSByZXF1ZXN0cyBpbmNsdXNpb24gb2YgQ0xPQ0tfTU9OT1RP TklDIHN5c3RlbSB0aW1lIGluCisJICogdGhlIHBlcmYgc2FtcGxlIGRhdGEuCisJICovCisJRFJN X0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9DTE9DS19NT05PVE9OSUNfUkFXLAorCiAJRFJNX0k5MTVf UEVSRl9QUk9QX01BWCAvKiBub24tQUJJICovCiB9OwogCkBAIC0xMzk4LDcgKzE0MDQsOCBAQCBl bnVtIGRybV9pOTE1X3BlcmZfcmVjb3JkX3R5cGUgewogCSAqICAgICB7IHUzMiBjdHhfaWQ7IH0g JiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9DVFhfSUQKIAkgKiAgICAgeyB1MzIgcGlkOyB9 ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfUElECiAJICogICAgIHsgdTMyIHRhZzsgfSAm JiBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX1RBRwotCSAqICAgICB7IHU2NCB0aW1lc3RhbXA7 IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9UUworCSAqICAgICB7IHU2NCBncHVfdHM7 IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9UUworCSAqICAgICB7IHU2NCBjbGtfbW9u bzsgfSAmJiBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX0NMT0NLX01PTk9UT05JQwogCSAqICAg ICB7IHUzMiBvYV9yZXBvcnRbXTsgfSAmJiBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX09BCiAJ ICogfTsKIAkgKi8KLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK