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: Thu, 2 Jun 2016 10:48:48 +0530 Message-ID: <1464844729-2774-15-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 32FF96EAFD for ; Thu, 2 Jun 2016 05:17:44 +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: "Christopher S . Hall" , Daniel Vetter , Sourab Gupta , Deepak S , 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 cHUvZHJtL2k5MTUvaTkxNV9kbWEuYyAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuaCAgfCAgMjQgKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgfCAy NzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCiBpbmNsdWRlL3VhcGkv ZHJtL2k5MTVfZHJtLmggICAgICB8ICAgOSArLQogNCBmaWxlcyBjaGFuZ2VkLCAyODQgaW5zZXJ0 aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kbWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKaW5kZXggYWIx ZjZjNC4uMDFmMzU1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RtYS5jCkBAIC0xMzI3LDYgKzEzMjcs OCBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfaHcoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCQkJRFJNX0RFQlVHX0RSSVZFUigiY2FuJ3QgZW5hYmxlIE1TSSIpOwog CX0KIAorCWk5MTVfcGVyZl9pbml0X2xhdGUoZGV2X3ByaXYpOworCiAJcmV0dXJuIDA7CiAKIG91 dF9nZ3R0OgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggOWNjYWM4My4uZDk5ZWE3MyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00Miw2ICs0Miw5IEBACiAjaW5jbHVkZSA8bGludXgv a3JlZi5oPgogI2luY2x1ZGUgPGxpbnV4L3BtX3Fvcy5oPgogI2luY2x1ZGUgPGxpbnV4L3NobWVt X2ZzLmg+CisjaW5jbHVkZSA8bGludXgvdGltZWNvdW50ZXIuaD4KKyNpbmNsdWRlIDxsaW51eC9j bG9ja3NvdXJjZS5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVrZWVwaW5nLmg+CiAKICNpbmNsdWRl IDxkcm0vZHJtUC5oPgogI2luY2x1ZGUgPGRybS9pbnRlbC1ndHQuaD4KQEAgLTE4MjUsNiArMTgy OCw5IEBAIHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtIHsKIAkvKiBXaGV0aGVyIHRoZSBPQSB1bml0 IGlzIGluIHVzZSAqLwogCWJvb2wgdXNpbmdfb2E7CiAKKwkvKiBtb25vdG9uaWNfcmF3IGNsayB0 aW1lc3RhbXAgKGluIG5zKSBmb3IgbGFzdCBzYW1wbGUgKi8KKwl1NjQgbGFzdF9zYW1wbGVfdHM7 CisKIAljb25zdCBzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbV9vcHMgKm9wczsKIH07CiAKQEAgLTE4 NjksNiArMTg3NSwyMCBAQCBzdHJ1Y3QgaTkxNV9wZXJmX2NzX2RhdGFfbm9kZSB7CiAJdTMyIHRh ZzsKIH07CiAKKy8qKgorICogc3RydWN0IGk5MTVfY2xvY2tfaW5mbyAtIGRlY3JpYmVzIGk5MTUg dGltZXN0YW1wIGNsb2NrCisgKgorICovCitzdHJ1Y3QgaTkxNV9jbG9ja19pbmZvIHsKKwlzdHJ1 Y3QgY3ljbGVjb3VudGVyIGNjOworCXN0cnVjdCB0aW1lY291bnRlciB0YzsKKwlzdHJ1Y3Qgc3lz dGVtX2RldmljZV9jcm9zc3RzdGFtcCB4dHN0YW1wOworCWt0aW1lX3QgY2xrX29mZnNldDsgLyog T2Zmc2V0IChpbiBucykgYmV0d2VlbiBtb25vcmF3IGNsayBhbmQgZ3B1IHRpbWUgKi8KKwl1MzIg dGltZXN0YW1wX2ZyZXF1ZW5jeTsKKwl1MzIgcmVzeW5jX3BlcmlvZDsgLyogaW4gbXNlY3MgKi8K KwlzdHJ1Y3QgZGVsYXllZF93b3JrIGNsa19zeW5jX3dvcms7Cit9OworCiBzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldjsKIAlzdHJ1Y3Qga21lbV9jYWNo ZSAqb2JqZWN0czsKQEAgLTIxNDcsNiArMjE2Nyw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRl IHsKIAogCXN0cnVjdCBpOTE1X3J1bnRpbWVfcG0gcG07CiAKKwlzdHJ1Y3QgaTkxNV9jbG9ja19p bmZvIHRzX2Nsa19pbmZvOworCiAJc3RydWN0IHsKIAkJYm9vbCBpbml0aWFsaXplZDsKIApAQCAt MjE2OSw3ICsyMTkxLDYgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJCQlib29sIHBl cmlvZGljOwogCQkJaW50IHBlcmlvZF9leHBvbmVudDsKLQkJCWludCB0aW1lc3RhbXBfZnJlcXVl bmN5OwogCiAJCQlpbnQgdGFpbF9tYXJnaW47CiAKQEAgLTM2OTksNiArMzcyMCw3IEBAIGludCBp OTE1X3BhcnNlX2NtZHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCiAvKiBpOTE1 X3BlcmYuYyAqLwogZXh0ZXJuIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldik7CitleHRlcm4gdm9pZCBpOTE1X3BlcmZfaW5pdF9sYXRlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKIAogLyogaTkxNV9zdXNwZW5kLmMgKi8KZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w ZXJmLmMKaW5kZXggYWEzNTg5ZS4uZTM0MGNmOWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcGVyZi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5j CkBAIC0yMyw2ICsyMyw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgogI2lu Y2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8bGludXgva3RpbWUuaD4KIAogI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgpAQCAtNjIsNiAr NjMsOSBAQAogI2RlZmluZSBQT0xMX0ZSRVFVRU5DWSAyMDAKICNkZWZpbmUgUE9MTF9QRVJJT0Qg KE5TRUNfUEVSX1NFQyAvIFBPTExfRlJFUVVFTkNZKQogCisjZGVmaW5lIE1BWF9DTEtfU1lOQ19Q RVJJT0QgKDYwKk1TRUNfUEVSX1NFQykKKyNkZWZpbmUgSU5JVF9DTEtfU1lOQ19QRVJJT0QgKDIw KSAvKiBpbiBtc2VjcyAqLworCiBzdGF0aWMgdTMyIGk5MTVfcGVyZl9zdHJlYW1fcGFyYW5vaWQg PSB0cnVlOwogCiAvKiBUaGUgbWF4aW11bSBleHBvbmVudCB0aGUgaGFyZHdhcmUgYWNjZXB0cyBp cyA2MyAoZXNzZW50aWFsbHkgaXQgc2VsZWN0cyBvbmUKQEAgLTg4LDEzICs5MiwyNCBAQCBzdGF0 aWMgdTMyIGk5MTVfcGVyZl9zdHJlYW1fcGFyYW5vaWQgPSB0cnVlOwogI2RlZmluZSBUU19BRERS X0FMSUdOIDgKICNkZWZpbmUgSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFIDgKIAorLyogUHVibGlz aGVkIGZyZXF1ZW5jeSBvZiBHVCBjb21tYW5kIHN0cmVhbSB0aW1lc3RhbXAgY2xvY2sgKi8KKyNk ZWZpbmUgRlJFUVVFTkNZXzEyXzVfTUhaCSgxMjUwMDAwMCkKKyNkZWZpbmUgRlJFUVVFTkNZXzEy XzBfTUhaCSgxMjAwMDAwMCkKKyNkZWZpbmUgRlJFUVVFTkNZXzE5XzJfTUhaCSgxOTIwMDAwMCkK KyNkZWZpbmUgR1RfQ1NfVElNRVNUQU1QX0ZSRVFVRU5DWShkZXZfcHJpdikgKElTX0dFTjkoZGV2 X3ByaXYpID8gXAorCQkJCShJU19CUk9YVE9OKGRldl9wcml2KSA/IFwKKwkJCQlGUkVRVUVOQ1lf MTlfMl9NSFogOiBcCisJCQkJRlJFUVVFTkNZXzEyXzBfTUhaKSA6IFwKKwkJCQlGUkVRVUVOQ1lf MTJfNV9NSFopCisKIC8qIERhdGEgY29tbW9uIHRvIGFsbCBzYW1wbGVzIChwZXJpb2RpYyBPQSAv IENTIGJhc2VkIE9BIC8gVGltZXN0YW1wcykgKi8KIHN0cnVjdCBzYW1wbGVfZGF0YSB7CiAJdTMy IHNvdXJjZTsKIAl1MzIgY3R4X2lkOwogCXUzMiBwaWQ7CiAJdTMyIHRhZzsKLQl1NjQgdHM7CisJ dTY0IGdwdV90czsKKwl1NjQgY2xrX21vbm9yYXc7CiAJY29uc3QgdTggKnJlcG9ydDsKIH07CiAK QEAgLTE1Myw2ICsxNjgsNyBAQCBzdGF0aWMgY29uc3QgZW51bSBpbnRlbF9lbmdpbmVfaWQgdXNl cl9yaW5nX21hcFtJOTE1X1VTRVJfUklOR1MgKyAxXSA9IHsKICNkZWZpbmUgU0FNUExFX1BJRAkJ KDE8PDMpCiAjZGVmaW5lIFNBTVBMRV9UQUcJCSgxPDw0KQogI2RlZmluZSBTQU1QTEVfVFMJCSgx PDw1KQorI2RlZmluZSBTQU1QTEVfQ0xLX01PTk9fUkFXCSgxPDw2KQogCiBzdHJ1Y3QgcGVyZl9v cGVuX3Byb3BlcnRpZXMgewogCXUzMiBzYW1wbGVfZmxhZ3M7CkBAIC0xNzEsNiArMTg3LDEzNiBA QCBzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMgewogCWVudW0gaW50ZWxfZW5naW5lX2lkIGVu Z2luZTsKIH07CiAKKy8qKgorICogaTkxNV90c3RhbXBfY2xrX2N5Y2xlY291bnRlcl9yZWFkIC0g cmVhZCByYXcgY3ljbGUgY291bnRlcgorICogQGNjOiBjeWNsZWNvdW50ZXIgc3RydWN0dXJlCisg KiovCitzdGF0aWMgY3ljbGVfdCBpOTE1X3RzdGFtcF9jbGtfY3ljbGVjb3VudGVyX3JlYWQoCisJ CQkJY29uc3Qgc3RydWN0IGN5Y2xlY291bnRlciAqY2MpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0KKwkJY29udGFpbmVyX29mKGNjLCB0eXBlb2YoKmRldl9wcml2KSwK KwkJCSAgICAgdHNfY2xrX2luZm8uY2MpOworCisJcmV0dXJuIEk5MTVfUkVBRDY0XzJ4MzIoR1Rf VElNRVNUQU1QX0NPVU5ULAorCQkJCQlHVF9USU1FU1RBTVBfQ09VTlRfVURXKTsKK30KKworc3Rh dGljIHZvaWQgaTkxNV90c3RhbXBfY2xrX2NhbGNfdXBkYXRlX211bHRfc2hpZnQoc3RydWN0IGN5 Y2xlY291bnRlciAqY2MsCisJCQkJCXUzMiBmcmVxdWVuY3kpCit7CisJY2xvY2tzX2NhbGNfbXVs dF9zaGlmdCgmY2MtPm11bHQsICZjYy0+c2hpZnQsCisJCQlmcmVxdWVuY3ksIE5TRUNfUEVSX1NF QywgMzYwMCk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfdHN0YW1wX2Nsa19pbml0X2Jhc2VfZnJl cShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJc3RydWN0IGN5Y2xlY291 bnRlciAqY2MpCit7CisJY2MtPnJlYWQgPSBpOTE1X3RzdGFtcF9jbGtfY3ljbGVjb3VudGVyX3Jl YWQ7CisJY2MtPm1hc2sgPSBDWUNMRUNPVU5URVJfTUFTSyg2NCk7CisJaTkxNV90c3RhbXBfY2xr X2NhbGNfdXBkYXRlX211bHRfc2hpZnQoY2MsCisJCQlkZXZfcHJpdi0+dHNfY2xrX2luZm8udGlt ZXN0YW1wX2ZyZXF1ZW5jeSk7Cit9CisKKy8qKgorICogaTkxNV9nZXRfc3luY2RldmljZXRpbWUg LSBDYWxsYmFjayBnaXZlbiB0byB0aW1la2VlcGluZyBjb2RlIHRvIHJlYWQKKwlkZXZpY2UgdGlt ZSBhbmQgc3l0ZW0gY2xrIGNvdW50ZXIgdmFsdWUKKyAqIEBkZXZpY2VfdGltZTogY3VycmVudCBk ZXZpY2UgdGltZQorICogQHN5c3RlbTogc3lzdGVtIGNvdW50ZXIgdmFsdWUgcmVhZCBzeW5jaHJv bm91c2x5IHdpdGggZGV2aWNlIHRpbWUKKyAqIEBjdHg6IGNvbnRleHQgcHJvdmlkZWQgYnkgdGlt ZWtlZXBpbmcgY29kZQorICoKKyAqKi8KK3N0YXRpYyBpbnQgaTkxNV9nZXRfc3luY2RldmljZXRp bWUoa3RpbWVfdCAqZGV2aWNlX3RpbWUsCisJCQkJCSBzdHJ1Y3Qgc3lzdGVtX2NvdW50ZXJ2YWxf dCAqc3lzdGVtLAorCQkJCQkgdm9pZCAqY3R4KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKWN0eDsKKwlzdHJ1Y3QgdGlt ZWNvdW50ZXIgKnRjID0gJmRldl9wcml2LT50c19jbGtfaW5mby50YzsKKwlzdHJ1Y3QgY2xvY2tz b3VyY2UgKmN1cnJfY2xrc291cmNlOworCisJKmRldmljZV90aW1lID0gbnNfdG9fa3RpbWUodGlt ZWNvdW50ZXJfcmVhZCh0YykpOworCisJY3Vycl9jbGtzb3VyY2UgPSBnZXRfY3VycmVudF9jbG9j a3NvdXJjZSgpOworCXN5c3RlbS0+Y3ljbGVzID0gY3Vycl9jbGtzb3VyY2UtPnJlYWQoY3Vycl9j bGtzb3VyY2UpOworCXN5c3RlbS0+Y3MgPSBjdXJyX2Nsa3NvdXJjZTsKKworCXJldHVybiAwOwor fQorCitzdGF0aWMgdm9pZCBpOTE1X3BlcmZfY2xvY2tfc3luY193b3JrKHN0cnVjdCB3b3JrX3N0 cnVjdCAqd29yaykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPQorCQlj b250YWluZXJfb2Yod29yaywgdHlwZW9mKCpkZXZfcHJpdiksCisJCXRzX2Nsa19pbmZvLmNsa19z eW5jX3dvcmsud29yayk7CisJc3RydWN0IHN5c3RlbV9kZXZpY2VfY3Jvc3N0c3RhbXAgKnh0c3Rh bXAgPQorCQkJJmRldl9wcml2LT50c19jbGtfaW5mby54dHN0YW1wOworCWt0aW1lX3QgbGFzdF9z eXNfdGltZSA9IHh0c3RhbXAtPnN5c19tb25vcmF3OworCWt0aW1lX3QgbGFzdF9ncHVfdGltZSA9 IHh0c3RhbXAtPmRldmljZTsKKwlrdGltZV90IGNsa19tb25vX29mZnNldCwgZ3B1X3RpbWVfb2Zm c2V0OworCXM2NCBkZWx0YTsKKwl1MzIgZ3B1X2ZyZXEgPSBkZXZfcHJpdi0+dHNfY2xrX2luZm8u dGltZXN0YW1wX2ZyZXF1ZW5jeTsKKwl1MzIgZnJlcV9kZWx0YSA9IDA7CisKKwlnZXRfZGV2aWNl X3N5c3RlbV9jcm9zc3RzdGFtcChpOTE1X2dldF9zeW5jZGV2aWNldGltZSwgZGV2X3ByaXYsCisJ CQkJCU5VTEwsIHh0c3RhbXApOworCisJY2xrX21vbm9fb2Zmc2V0ID0ga3RpbWVfc3ViKHh0c3Rh bXAtPnN5c19tb25vcmF3LCBsYXN0X3N5c190aW1lKTsKKwlncHVfdGltZV9vZmZzZXQgPSBrdGlt ZV9zdWIoeHRzdGFtcC0+ZGV2aWNlLCBsYXN0X2dwdV90aW1lKTsKKworCS8qIGRlbHRhIHRpbWUg aW4gbnMgKi8KKwlkZWx0YSA9IGt0aW1lX3RvX25zKGt0aW1lX3N1YihncHVfdGltZV9vZmZzZXQs IGNsa19tb25vX29mZnNldCkpOworCisJLyogSWYgdGltZSBkZWx0YSA8IDEgdXMsIHdlIGNhbiBh c3N1bWUgZ3B1IGZyZXF1ZW5jeSBpcyBjb3JyZWN0ICovCisJaWYgKGFicyhkZWx0YSkgPCBOU0VD X1BFUl9VU0VDKQorCQlnb3RvIG91dDsKKworCS8qIFRoZSB0d28gY2xvY2tzIHNob3VsZG4ndCBk ZXZpYXRlIG1vcmUgdGhhbiAxIHNlY29uZCBkdXJpbmcgdGhlCisJICogcmVzeW5jIHBlcmlvZC4g SWYgdGhpcyBpcyB0aGUgY2FzZSAod2hpY2ggbWF5IGhhcHBlbiBkdWUgdG8KKwkgKiBzdXNwZW5k L3Jlc3VtZSksIHRoZW4gZG9uJ3QgYXBwbHkgZnJlcXVlbmN5IGNvcnJlY3Rpb24sIGFuZAorCSAq IGZhc3QgZm9yd2FyZC9yZXdpbmQgdGhlIGNsb2NrcyB0byByZXN5bmMgaW1tZWRpYXRlbHkKKwkg Ki8KKwlpZiAoYWJzKGRlbHRhKSA+IE5TRUNfUEVSX1NFQykKKwkJZ290byBvdXQ7CisKKwkvKiBD YWxjdWxhdGUgZnJlcXVlbmN5IGRlbHRhICovCisJZnJlcV9kZWx0YSA9IGFicyhkZWx0YSkqZ3B1 X2ZyZXE7CisJZG9fZGl2KGZyZXFfZGVsdGEsIGt0aW1lX3RvX25zKGNsa19tb25vX29mZnNldCkp OworCisJaWYgKGZyZXFfZGVsdGEgPT0gMCkKKwkJZ290byBvdXQ7CisKKwlpZiAoZGVsdGEgPCAw KQorCQlmcmVxX2RlbHRhID0gLWZyZXFfZGVsdGE7CisKKwlkZXZfcHJpdi0+dHNfY2xrX2luZm8u dGltZXN0YW1wX2ZyZXF1ZW5jeSArPSBmcmVxX2RlbHRhOworCWk5MTVfdHN0YW1wX2Nsa19jYWxj X3VwZGF0ZV9tdWx0X3NoaWZ0KCZkZXZfcHJpdi0+dHNfY2xrX2luZm8uY2MsCisJCQlkZXZfcHJp di0+dHNfY2xrX2luZm8udGltZXN0YW1wX2ZyZXF1ZW5jeSk7CisKKwkvKgorCSAqIEdldCB1cGRh dGVkIGRldmljZS9zeXN0ZW0gdGltZXMgYmFzZWQgb24gY29ycmVjdGVkIGZyZXF1ZW5jeS4KKwkg KiBOb3RlIHRoYXQgdGhpcyBtYXkgY2F1c2UganVtcHMgaW4gZGV2aWNlIHRpbWUgZGVwZW5kaW5n IG9uIHdoZXRoZXIKKwkgKiBmcmVxdWVuY3kgZGVsdGEgaXMgcG9zaXRpdmUgb3IgbmVnYXRpdmUu CisJICogTkI6IFRha2UgY2FyZSB0aGF0IG1vbm90b25pY2l0eSBvZiBzYW1wbGUgdGltZXN0YW1w cyBpcyBtYWludGFpbmVkCisJICogZXZlbiB3aXRoIHRoZXNlIGp1bXBzLgorCSAqLworCWdldF9k ZXZpY2Vfc3lzdGVtX2Nyb3NzdHN0YW1wKGk5MTVfZ2V0X3N5bmNkZXZpY2V0aW1lLCBkZXZfcHJp diwKKwkJCQkJTlVMTCwgeHRzdGFtcCk7CisKK291dDoKKwlkZXZfcHJpdi0+dHNfY2xrX2luZm8u Y2xrX29mZnNldCA9IGt0aW1lX3N1Yih4dHN0YW1wLT5zeXNfbW9ub3JhdywKKwkJCQkJCXh0c3Rh bXAtPmRldmljZSk7CisKKwkvKiBXZSBjYW4gc2NoZWR1bGUgbmV4dCBzeW5jaHJvbml6YXRpb24g YXQgaW5jcmVtZW50YWxseSBoaWdoZXIKKwkgKiBkdXJhdGlvbnMsIHNvIHRoYXQgdGhlIGFjY3Vy YWN5IG9mIG91ciBjYWxjdWxhdGVkIGZyZXF1ZW5jeQorCSAqIGNhbiBpbXByb3ZlIG92ZXIgdGlt ZS4gVGhlIG1heCByZXN5bmMgcGVyaW9kIGlzIGFyYml0cmFyaWx5CisJICogc2V0IGFzIG9uZSBo b3VyLgorCSAqLworCWRldl9wcml2LT50c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kICo9IDI7CisJ aWYgKGRldl9wcml2LT50c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kIDwgTUFYX0NMS19TWU5DX1BF UklPRCkKKwkJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZkZXZfcHJpdi0+dHNfY2xrX2luZm8uY2xr X3N5bmNfd29yaywKKwkJCW1zZWNzX3RvX2ppZmZpZXMoZGV2X3ByaXYtPnRzX2Nsa19pbmZvLnJl c3luY19wZXJpb2QpKTsKK30KKwogLyoKICAqIEVtaXQgdGhlIGNvbW1hbmRzIHRvIGNhcHR1cmUg bWV0cmljcywgaW50byB0aGUgY29tbWFuZCBzdHJlYW0uIFRoaXMgZnVuY3Rpb24KICAqIGNhbiBi ZSBjYWxsZWQgY29uY3VycmVudGx5IHdpdGggdGhlIHN0cmVhbSBvcGVyYXRpb25zIGFuZCBkb2Vz bid0IHJlcXVpcmUKQEAgLTI0NSw3ICszOTEsNyBAQCBzdGF0aWMgaW50IGluc2VydF9wZXJmX2Vu dHJ5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCWlmIChzdHJlYW0tPnNh bXBsZV9mbGFncyAmIFNBTVBMRV9PQV9SRVBPUlQpCiAJCWVudHJ5X3NpemUgKz0gZGV2X3ByaXYt PnBlcmYub2Eub2FfYnVmZmVyLmZvcm1hdF9zaXplOwotCWVsc2UgaWYgKHNhbXBsZV9mbGFncyAm IFNBTVBMRV9UUykgeworCWVsc2UgaWYgKHNhbXBsZV9mbGFncyAmIChTQU1QTEVfVFN8U0FNUExF X0NMS19NT05PX1JBVykpIHsKIAkJLyoKIAkJICogWFhYOiBTaW5jZSBUUyBkYXRhIGNhbiBhbnl3 YXlzIGJlIGRlcml2ZWQgZnJvbSBPQSByZXBvcnQsIHNvCiAJCSAqIG5vIG5lZWQgdG8gY2FwdHVy ZSBpdCBmb3IgUkNTIGVuZ2luZSwgaWYgY2FwdHVyZSBvYSBkYXRhIGlzCkBAIC01MDcsNyArNjUz LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yaW5nX3N0cmVhbV9jc19ob29rKHN0cnVjdCBpOTE1X3Bl cmZfc3RyZWFtICpzdHJlYW0sCiAJCXJldCA9IGk5MTVfcmluZ19zdHJlYW1fY2FwdHVyZV9vYShy ZXEsIGVudHJ5LT5vYV9vZmZzZXQpOwogCQlpZiAocmV0KQogCQkJZ290byBlcnJfdW5yZWY7Ci0J fSBlbHNlIGlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpIHsKKwl9IGVsc2UgaWYgKHNhbXBs ZV9mbGFncyAmIChTQU1QTEVfVFN8U0FNUExFX0NMS19NT05PX1JBVykpIHsKIAkJLyoKIAkJICog WFhYOiBTaW5jZSBUUyBkYXRhIGNhbiBhbnl3YXlzIGJlIGRlcml2ZWQgZnJvbSBPQSByZXBvcnQs IHNvCiAJCSAqIG5vIG5lZWQgdG8gY2FwdHVyZSBpdCBmb3IgUkNTIGVuZ2luZSwgaWYgY2FwdHVy ZSBvYSBkYXRhIGlzCkBAIC03NjQsNyArOTEwLDE0IEBAIHN0YXRpYyBpbnQgYXBwZW5kX3NhbXBs ZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCX0KIAogCWlmIChzYW1wbGVfZmxh Z3MgJiBTQU1QTEVfVFMpIHsKLQkJaWYgKGNvcHlfdG9fdXNlcihidWYsICZkYXRhLT50cywgSTkx NV9QRVJGX1RTX1NBTVBMRV9TSVpFKSkKKwkJaWYgKGNvcHlfdG9fdXNlcihidWYsICZkYXRhLT5n cHVfdHMsIEk5MTVfUEVSRl9UU19TQU1QTEVfU0laRSkpCisJCQlyZXR1cm4gLUVGQVVMVDsKKwkJ YnVmICs9IEk5MTVfUEVSRl9UU19TQU1QTEVfU0laRTsKKwl9CisKKwlpZiAoc2FtcGxlX2ZsYWdz ICYgU0FNUExFX0NMS19NT05PX1JBVykgeworCQlpZiAoY29weV90b191c2VyKGJ1ZiwgJmRhdGEt PmNsa19tb25vcmF3LAorCQkJCQlJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkUpKQogCQkJcmV0dXJu IC1FRkFVTFQ7CiAJCWJ1ZiArPSBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkU7CiAJfQpAQCAtNzgx LDYgKzkzNCwyNyBAQCBzdGF0aWMgaW50IGFwcGVuZF9zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9z dHJlYW0gKnN0cmVhbSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHU2NCBnZXRfY2xrX21vbm9y YXdfZnJvbV9ncHVfdHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCQkJdTY0 IGdwdV90cykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBzdHJlYW0t PmRldl9wcml2OworCXN0cnVjdCB0aW1lY291bnRlciAqdGMgPSAmZGV2X3ByaXYtPnRzX2Nsa19p bmZvLnRjOworCXU2NCBncHVfdGltZSwgY2xrX21vbm9yYXc7CisKKwlncHVfdGltZSA9IGN5Y2xl Y291bnRlcl9jeWMybnModGMtPmNjLCBncHVfdHMsIHRjLT5tYXNrLCAmdGMtPmZyYWMpOworCisJ Y2xrX21vbm9yYXcgPSBncHVfdGltZSArIGt0aW1lX3RvX25zKGRldl9wcml2LT50c19jbGtfaW5m by5jbGtfb2Zmc2V0KTsKKworCS8qIEVuc3VyZSBtb25vdG9uaWNpdHkgYnkgY2xhbXBpbmcgdGhl IHN5c3RlbSB0aW1lIGluIGNhc2UgaXQgZ29lcworCSAqIGJhY2t3YXJkcy4KKwkgKi8KKwlpZiAo Y2xrX21vbm9yYXcgPCBzdHJlYW0tPmxhc3Rfc2FtcGxlX3RzKQorCQljbGtfbW9ub3JhdyA9IHN0 cmVhbS0+bGFzdF9zYW1wbGVfdHM7CisKKwlzdHJlYW0tPmxhc3Rfc2FtcGxlX3RzID0gY2xrX21v bm9yYXc7CisJcmV0dXJuIGNsa19tb25vcmF3OworfQorCiBzdGF0aWMgdTY0IGdldF9ncHVfdHNf ZnJvbV9vYV9yZXBvcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQlj b25zdCB1OCAqcmVwb3J0KQogewpAQCAtODM3LDcgKzEwMTEsMTMgQEAgc3RhdGljIGludCBhcHBl bmRfb2FfYnVmZmVyX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCiAJ LyogRGVyaXZlIHRpbWVzdGFtcCBmcm9tIE9BIHJlcG9ydCAqLwogCWlmIChzYW1wbGVfZmxhZ3Mg JiBTQU1QTEVfVFMpCi0JCWRhdGEudHMgPSBnZXRfZ3B1X3RzX2Zyb21fb2FfcmVwb3J0KGRldl9w cml2LCByZXBvcnQpOworCQlkYXRhLmdwdV90cyA9IGdldF9ncHVfdHNfZnJvbV9vYV9yZXBvcnQo ZGV2X3ByaXYsIHJlcG9ydCk7CisKKwlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX0NMS19NT05P X1JBVykgeworCQl1NjQgZ3B1X3RzID0gZ2V0X2dwdV90c19mcm9tX29hX3JlcG9ydChkZXZfcHJp diwgcmVwb3J0KTsKKworCQlkYXRhLmNsa19tb25vcmF3ID0gZ2V0X2Nsa19tb25vcmF3X2Zyb21f Z3B1X3RzKHN0cmVhbSwgZ3B1X3RzKTsKKwl9CiAKIAlpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExF X09BX1JFUE9SVCkKIAkJZGF0YS5yZXBvcnQgPSByZXBvcnQ7CkBAIC0xMzA3LDcgKzE0ODcsNyBA QCBzdGF0aWMgaW50IGFwcGVuZF9vbmVfY3Nfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0JCWlmIChzYW1wbGVfZmxh Z3MgJiBTQU1QTEVfVFMpCisJCWlmIChzYW1wbGVfZmxhZ3MgJiAoU0FNUExFX1RTfFNBTVBMRV9D TEtfTU9OT19SQVcpKQogCQkJZ3B1X3RzID0gZ2V0X2dwdV90c19mcm9tX29hX3JlcG9ydChkZXZf cHJpdiwgcmVwb3J0KTsKIAl9CiAKQEAgLTEzMjksNyArMTUwOSw3IEBAIHN0YXRpYyBpbnQgYXBw ZW5kX29uZV9jc19zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJZGV2 X3ByaXYtPnBlcmYubGFzdF90YWcgPSBub2RlLT50YWc7CiAJfQogCi0JaWYgKHNhbXBsZV9mbGFn cyAmIFNBTVBMRV9UUykgeworCWlmIChzYW1wbGVfZmxhZ3MgJiAoU0FNUExFX1RTfFNBTVBMRV9D TEtfTU9OT19SQVcpKSB7CiAJCS8qIElmIE9BIHNhbXBsaW5nIGlzIGVuYWJsZWQsIGRlcml2ZSB0 aGUgdHMgZnJvbSBPQSByZXBvcnQuCiAJCSAqIEVsc2UsIGZvcndhcmQgdGhlIHRpbWVzdGFtcCBj b2xsZWN0ZWQgdmlhIGNvbW1hbmQgc3RyZWFtLgogCQkgKi8KQEAgLTEzMzcsNyArMTUxNywxMiBA QCBzdGF0aWMgaW50IGFwcGVuZF9vbmVfY3Nfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFt ICpzdHJlYW0sCiAJCQlncHVfdHMgPSAqKHU2NCAqKQogCQkJCShkZXZfcHJpdi0+cGVyZi5jb21t YW5kX3N0cmVhbV9idWZbaWRdLmFkZHIgKwogCQkJCQlub2RlLT50c19vZmZzZXQpOwotCQlkYXRh LnRzID0gZ3B1X3RzOworCisJCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpCisJCQlkYXRh LmdwdV90cyA9IGdwdV90czsKKwkJaWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9DTEtfTU9OT19S QVcpCisJCQlkYXRhLmNsa19tb25vcmF3ID0gZ2V0X2Nsa19tb25vcmF3X2Zyb21fZ3B1X3RzKAor CQkJCQkJCXN0cmVhbSwJZ3B1X3RzKTsKIAl9CiAKIAlyZXR1cm4gYXBwZW5kX3NhbXBsZShzdHJl YW0sIHJlYWRfc3RhdGUsICZkYXRhKTsKQEAgLTIwNzYsMTIgKzIyNjEsMjggQEAgc3RhdGljIHZv aWQgaTkxNV9yaW5nX3N0cmVhbV9lbmFibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVh bSkKIAlpZiAoc3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JUKSB7CiAJCWRl dl9wcml2LT5wZXJmLm9hLm9wcy5vYV9lbmFibGUoZGV2X3ByaXYpOwogCi0JCWlmIChzdHJlYW0t PnNhbXBsZV9mbGFncyAmIFNBTVBMRV9UUykKKwkJaWYgKHN0cmVhbS0+c2FtcGxlX2ZsYWdzICYg KFNBTVBMRV9UU3xTQU1QTEVfQ0xLX01PTk9fUkFXKSkKIAkJCWRldl9wcml2LT5wZXJmLm9hLmxh c3RfZ3B1X3RzID0KIAkJCQlJOTE1X1JFQUQ2NF8yeDMyKEdUX1RJTUVTVEFNUF9DT1VOVCwKIAkJ CQkJR1RfVElNRVNUQU1QX0NPVU5UX1VEVyk7CiAJfQogCisJaWYgKHN0cmVhbS0+c2FtcGxlX2Zs YWdzICYgU0FNUExFX0NMS19NT05PX1JBVykgeworCQlzdHJ1Y3Qgc3lzdGVtX2RldmljZV9jcm9z c3RzdGFtcCAqeHRzdGFtcCA9CisJCQkmZGV2X3ByaXYtPnRzX2Nsa19pbmZvLnh0c3RhbXA7CisK KwkJZ2V0X2RldmljZV9zeXN0ZW1fY3Jvc3N0c3RhbXAoaTkxNV9nZXRfc3luY2RldmljZXRpbWUs IGRldl9wcml2LAorCQkJCQlOVUxMLCB4dHN0YW1wKTsKKwkJZGV2X3ByaXYtPnRzX2Nsa19pbmZv LmNsa19vZmZzZXQgPSBrdGltZV9zdWIoeHRzdGFtcC0+c3lzX21vbm9yYXcsCisJCQkJCQl4dHN0 YW1wLT5kZXZpY2UpOworCisJCWlmIChkZXZfcHJpdi0+dHNfY2xrX2luZm8ucmVzeW5jX3Blcmlv ZCA8IE1BWF9DTEtfU1lOQ19QRVJJT0QpCisJCQlzY2hlZHVsZV9kZWxheWVkX3dvcmsoCisJCQkJ JmRldl9wcml2LT50c19jbGtfaW5mby5jbGtfc3luY193b3JrLAorCQkJCW1zZWNzX3RvX2ppZmZp ZXMoCisJCQkJCWRldl9wcml2LT50c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kKSk7CisJfQorCiAJ aWYgKHN0cmVhbS0+Y3NfbW9kZSB8fCBkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKIAkJaHJ0 aW1lcl9zdGFydCgmZGV2X3ByaXYtPnBlcmYucG9sbF9jaGVja190aW1lciwKIAkJCSAgICAgIG5z X3RvX2t0aW1lKFBPTExfUEVSSU9EKSwKQEAgLTIxMDIsNiArMjMwMyw4IEBAIHN0YXRpYyB2b2lk IGk5MTVfcmluZ19zdHJlYW1fZGlzYWJsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFt KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3By aXY7CiAKKwljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmRldl9wcml2LT50c19jbGtfaW5mby5j bGtfc3luY193b3JrKTsKKwogCWlmIChzdHJlYW0tPmNzX21vZGUgfHwgZGV2X3ByaXYtPnBlcmYu b2EucGVyaW9kaWMpCiAJCWhydGltZXJfY2FuY2VsKCZkZXZfcHJpdi0+cGVyZi5wb2xsX2NoZWNr X3RpbWVyKTsKIApAQCAtMjExNyw3ICsyMzIwLDcgQEAgc3RhdGljIHZvaWQgaTkxNV9yaW5nX3N0 cmVhbV9kaXNhYmxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiBzdGF0aWMgdTY0 IG9hX2V4cG9uZW50X3RvX25zKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50 IGV4cG9uZW50KQogewogCXJldHVybiAxMDAwMDAwMDAwVUxMICogKDJVTEwgPDwgZXhwb25lbnQp IC8KLQkJZGV2X3ByaXYtPnBlcmYub2EudGltZXN0YW1wX2ZyZXF1ZW5jeTsKKwkJZGV2X3ByaXYt PnRzX2Nsa19pbmZvLnRpbWVzdGFtcF9mcmVxdWVuY3k7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgaTkxNV9wZXJmX3N0cmVhbV9vcHMgaTkxNV9vYV9zdHJlYW1fb3BzID0gewpAQCAtMjE0MSw3 ICsyMzQ0LDggQEAgc3RhdGljIGludCBpOTE1X3Jpbmdfc3RyZWFtX2luaXQoc3RydWN0IGk5MTVf cGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlib29sIHJlcXVpcmVfY3NfbW9kZSA9IHByb3BzLT5zYW1w bGVfZmxhZ3MgJiAoU0FNUExFX1BJRCB8CiAJCQkJCQkgICAgICBTQU1QTEVfVEFHKTsKIAlib29s IGNzX3NhbXBsZV9kYXRhID0gcHJvcHMtPnNhbXBsZV9mbGFncyAmIChTQU1QTEVfT0FfUkVQT1JU IHwKLQkJCQkJCQlTQU1QTEVfVFMpOworCQkJCQkJCVNBTVBMRV9UUyB8CisJCQkJCQkJU0FNUExF X0NMS19NT05PX1JBVyk7CiAJaW50IHJldDsKIAogCWlmICgocHJvcHMtPnNhbXBsZV9mbGFncyAm IFNBTVBMRV9DVFhfSUQpICYmICFwcm9wcy0+Y3NfbW9kZSkgewpAQCAtMjI5NCw2ICsyNDk4LDE5 IEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5nX3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3Ry ZWFtICpzdHJlYW0sCiAJCQlyZXF1aXJlX2NzX21vZGUgPSB0cnVlOwogCX0KIAorCWlmIChwcm9w cy0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX0NMS19NT05PX1JBVykgeworCQlzdHJlYW0tPnNhbXBs ZV9mbGFncyB8PSBTQU1QTEVfQ0xLX01PTk9fUkFXOworCQlzdHJlYW0tPnNhbXBsZV9zaXplICs9 IEk5MTVfUEVSRl9UU19TQU1QTEVfU0laRTsKKworCQkvKgorCQkgKiBOQjogaXQncyBtZWFuaW5n ZnVsIHRvIHJlcXVlc3QgU0FNUExFX0NMS19NT05PIHdpdGgganVzdCBDUworCQkgKiBtb2RlIG9y IHBlcmlvZGljIE9BIG1vZGUgc2FtcGxpbmcgYnV0IHdlIGRvbid0IGFsbG93CisJCSAqIFNBTVBM RV9DTEtfTU9OTyB3aXRob3V0IGVpdGhlciBtb2RlCisJCSAqLworCQlpZiAoIXJlcXVpcmVfb2Ff dW5pdCkKKwkJCXJlcXVpcmVfY3NfbW9kZSA9IHRydWU7CisJfQorCiAJaWYgKHJlcXVpcmVfY3Nf bW9kZSAmJiAhcHJvcHMtPmNzX21vZGUpIHsKIAkJRFJNX0VSUk9SKAogCQkJIlBJRCwgVEFHIG9y IFRTIHNhbXBsaW5nIHJlcXVpcmUgYSByaW5nIHRvIGJlIHNwZWNpZmllZCIpOwpAQCAtMjMxOCwx MSArMjUzNSwxMyBAQCBzdGF0aWMgaW50IGk5MTVfcmluZ19zdHJlYW1faW5pdChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCiAJCS8qCiAJCSAqIFRoZSBvbmx5IHRpbWUgd2Ugc2hv dWxkIGFsbG93IGVuYWJsaW5nIENTIG1vZGUgaWYgaXQncyBub3QKLQkJICogc3RyaWN0bHkgcmVx dWlyZWQsIGlzIGlmIFNBTVBMRV9DVFhfSUQgIG9yIFNBTVBMRV9UUyBoYXMgYmVlbgotCQkgKiBy ZXF1ZXN0ZWQsIGFzIHRoZXkncmUgdXNhYmxlIHdpdGggcGVyaW9kaWMgT0Egb3IgQ1Mgc2FtcGxp bmcuCisJCSAqIHN0cmljdGx5IHJlcXVpcmVkLCBpcyBpZiBTQU1QTEVfQ1RYX0lELCBTQU1QTEVf VFMgb3IKKwkJICogU0FNUExFX0NMS19NT05PX1JBVyBoYXMgYmVlbiByZXF1ZXN0ZWQsIGFzIHRo ZXkncmUgdXNhYmxlCisJCSAqIHdpdGggcGVyaW9kaWMgT0Egb3IgQ1Mgc2FtcGxpbmcuCiAJCSAq LwogCQlpZiAoIXJlcXVpcmVfY3NfbW9kZSAmJgotCQkgICAgIShwcm9wcy0+c2FtcGxlX2ZsYWdz ICYgKFNBTVBMRV9DVFhfSUR8U0FNUExFX1RTKSkpIHsKKwkJICAgICEocHJvcHMtPnNhbXBsZV9m bGFncyAmCisJCQkJKFNBTVBMRV9DVFhfSUR8U0FNUExFX1RTfFNBTVBMRV9DTEtfTU9OT19SQVcp KSkgewogCQkJRFJNX0VSUk9SKAogCQkJCSJSaW5nIGdpdmVuIHdpdGhvdXQgcmVxdWVzdGluZyBh bnkgQ1Mgc3BlY2lmaWMgcHJvcGVydHkiKTsKIAkJCXJldCA9IC1FSU5WQUw7CkBAIC0yOTgyLDYg KzMyMDEsOSBAQCBzdGF0aWMgaW50IHJlYWRfcHJvcGVydGllc191bmxvY2tlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBM RV9UUzoKIAkJCXByb3BzLT5zYW1wbGVfZmxhZ3MgfD0gU0FNUExFX1RTOwogCQkJYnJlYWs7CisJ CWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9DTE9DS19NT05PVE9OSUNfUkFXOgorCQkJ cHJvcHMtPnNhbXBsZV9mbGFncyB8PSBTQU1QTEVfQ0xLX01PTk9fUkFXOworCQkJYnJlYWs7CiAJ CWNhc2UgRFJNX0k5MTVfUEVSRl9QUk9QX01BWDoKIAkJCUJVRygpOwogCQl9CkBAIC0zMDcyLDYg KzMyOTQsNyBAQCBzdGF0aWMgc3RydWN0IGN0bF90YWJsZSBkZXZfcm9vdFtdID0gewogdm9pZCBp OTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaTkxNV9jbG9ja19p bmZvICpjbGtfaW5mbyA9ICZkZXZfcHJpdi0+dHNfY2xrX2luZm87CiAJaW50IGk7CiAKIAlpZiAo IShJU19IQVNXRUxMKGRldikgfHwKQEAgLTMwODQsNiArMzMwNywxMiBAQCB2b2lkIGk5MTVfcGVy Zl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaWYgKCFkZXZfcHJpdi0+cGVyZi5tZXRy aWNzX2tvYmopCiAJCXJldHVybjsKIAorCWNsa19pbmZvLT50aW1lc3RhbXBfZnJlcXVlbmN5ID0g R1RfQ1NfVElNRVNUQU1QX0ZSRVFVRU5DWShkZXZfcHJpdik7CisJY2xrX2luZm8tPnJlc3luY19w ZXJpb2QgPSBJTklUX0NMS19TWU5DX1BFUklPRDsKKwlJTklUX0RFTEFZRURfV09SSygmY2xrX2lu Zm8tPmNsa19zeW5jX3dvcmssIGk5MTVfcGVyZl9jbG9ja19zeW5jX3dvcmspOworCisJaTkxNV90 c3RhbXBfY2xrX2luaXRfYmFzZV9mcmVxKGRldl9wcml2LCAmY2xrX2luZm8tPmNjKTsKKwogCWhy dGltZXJfaW5pdCgmZGV2X3ByaXYtPnBlcmYucG9sbF9jaGVja190aW1lciwKIAkJICAgICBDTE9D S19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwogCWRldl9wcml2LT5wZXJmLnBvbGxfY2hl Y2tfdGltZXIuZnVuY3Rpb24gPSBwb2xsX2NoZWNrX3RpbWVyX2NiOwpAQCAtMzExMyw4ICszMzQy LDYgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQlkZXZf cHJpdi0+cGVyZi5vYS5vcHMub2FfYnVmZmVyX2dldF9jdHhfaWQgPQogCQkJCQlnZW43X29hX2J1 ZmZlcl9nZXRfY3R4X2lkOwogCi0JCWRldl9wcml2LT5wZXJmLm9hLnRpbWVzdGFtcF9mcmVxdWVu Y3kgPSAxMjUwMDAwMDsKLQogCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzID0gaHN3X29h X2Zvcm1hdHM7CiAKIAkJZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgPQpAQCAtMzE0 OSw4ICszMzc2LDYgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQogCQkJZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgPQogCQkJCWk5MTVfb2Ffbl9i dWlsdGluX21ldHJpY19zZXRzX2JkdzsKIAotCQkJZGV2X3ByaXYtPnBlcmYub2EudGltZXN0YW1w X2ZyZXF1ZW5jeSA9IDEyNTAwMDAwOwotCiAJCQlpZiAoaTkxNV9wZXJmX2luaXRfc3lzZnNfYmR3 KGRldl9wcml2KSkKIAkJCQlnb3RvIHN5c2ZzX2Vycm9yOwogCQl9IGVsc2UgaWYgKElTX0NIRVJS WVZJRVcoZGV2KSkgewpAQCAtMzE2Myw4ICszMzg4LDYgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3Nl dHMgPQogCQkJCWk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRzX2NodjsKIAotCQkJZGV2X3By aXYtPnBlcmYub2EudGltZXN0YW1wX2ZyZXF1ZW5jeSA9IDEyNTAwMDAwOwotCiAJCQlpZiAoaTkx NV9wZXJmX2luaXRfc3lzZnNfY2h2KGRldl9wcml2KSkKIAkJCQlnb3RvIHN5c2ZzX2Vycm9yOwog CQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2KSkgewpAQCAtMzE3Nyw4ICszNDAwLDYgQEAgdm9p ZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCQkJZGV2X3ByaXYtPnBl cmYub2Eubl9idWlsdGluX3NldHMgPQogCQkJCWk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRz X3NrbDsKIAotCQkJZGV2X3ByaXYtPnBlcmYub2EudGltZXN0YW1wX2ZyZXF1ZW5jeSA9IDEyMDAw MDAwOwotCiAJCQlpZiAoaTkxNV9wZXJmX2luaXRfc3lzZnNfc2tsKGRldl9wcml2KSkKIAkJCQln b3RvIHN5c2ZzX2Vycm9yOwogCQl9CkBAIC0zMTk3LDYgKzM0MTgsMTQgQEAgc3lzZnNfZXJyb3I6 CiAJcmV0dXJuOwogfQogCit2b2lkIGk5MTVfcGVyZl9pbml0X2xhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpOTE1X2Nsb2NrX2luZm8gKmNsa19pbmZv ID0gJmRldl9wcml2LT50c19jbGtfaW5mbzsKKworCXRpbWVjb3VudGVyX2luaXQoJmNsa19pbmZv LT50YywJJmNsa19pbmZvLT5jYywKKwkJCQlrdGltZV90b19ucyhrdGltZV9nZXRfYm9vdHRpbWUo KSkpOworfQorCiB2b2lkIGk5MTVfcGVyZl9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7 CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwpkaWZm IC0tZ2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9p OTE1X2RybS5oCmluZGV4IDAyZDQzYTkuLmM0Y2FlNTMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTEy NzgsNiArMTI3OCwxMiBAQCBlbnVtIGRybV9pOTE1X3BlcmZfcHJvcGVydHlfaWQgewogCSAqLwog CURSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfVFMsCiAKKwkvKioKKwkgKiBUaGlzIHByb3BlcnR5 IHJlcXVlc3RzIGluY2x1c2lvbiBvZiBDTE9DS19NT05PVE9OSUMgc3lzdGVtIHRpbWUgaW4KKwkg KiB0aGUgcGVyZiBzYW1wbGUgZGF0YS4KKwkgKi8KKwlEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExF X0NMT0NLX01PTk9UT05JQ19SQVcsCisKIAlEUk1fSTkxNV9QRVJGX1BST1BfTUFYIC8qIG5vbi1B QkkgKi8KIH07CiAKQEAgLTEzNDYsNyArMTM1Miw4IEBAIGVudW0gZHJtX2k5MTVfcGVyZl9yZWNv cmRfdHlwZSB7CiAJICogICAgIHsgdTMyIGN0eF9pZDsgfSAmJiBEUk1fSTkxNV9QRVJGX1BST1Bf U0FNUExFX0NUWF9JRAogCSAqICAgICB7IHUzMiBwaWQ7IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9Q X1NBTVBMRV9QSUQKIAkgKiAgICAgeyB1MzIgdGFnOyB9ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9T QU1QTEVfVEFHCi0JICogICAgIHsgdTY0IHRpbWVzdGFtcDsgfSAmJiBEUk1fSTkxNV9QRVJGX1BS T1BfU0FNUExFX1RTCisJICogICAgIHsgdTY0IGdwdV90czsgfSAmJiBEUk1fSTkxNV9QRVJGX1BS T1BfU0FNUExFX1RTCisJICogICAgIHsgdTY0IGNsa19tb25vOyB9ICYmIERSTV9JOTE1X1BFUkZf UFJPUF9TQU1QTEVfQ0xPQ0tfTU9OT1RPTklDCiAJICogICAgIHsgdTMyIG9hX3JlcG9ydFtdOyB9 ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfT0EKIAkgKiB9OwogCSAqLwotLSAKMS45LjEK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=