From mboxrd@z Thu Jan 1 00:00:00 1970 From: sourab.gupta@intel.com Subject: [PATCH v2 14/15] drm/i915: Mechanism to forward clock monotonic raw time in perf samples Date: Mon, 7 Nov 2016 16:02:32 +0530 Message-ID: <1478514752-31108-1-git-send-email-sourab.gupta@intel.com> References: <20161104094230.GH15981@nuc-i3427.alporthouse.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 894106E35C for ; Mon, 7 Nov 2016 10:30:24 +0000 (UTC) In-Reply-To: <20161104094230.GH15981@nuc-i3427.alporthouse.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 cmVzcG9uZGluZyBwcm9wZXJ0eSB3aGlsZSBvcGVuaW5nIHRoZSBzdHJlYW0uCgp2MjogQWRkZWQg aTkxNV9kcml2ZXJfaW5pdF9sYXRlKCkgZnVuY3Rpb24gdG8gY2FwdHVyZSB0aGUgbmV3IGxhdGUg aW5pdCBwaGFzZQpmb3IgcGVyZiAoQ2hyaXMpCgpTaWduZWQtb2ZmLWJ5OiBTb3VyYWIgR3VwdGEg PHNvdXJhYi5ndXB0YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYyAgfCAgMTQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggIHwgIDI0ICsr Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIHwgMjczICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLQogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAg ICAgfCAgIDkgKy0KIDQgZmlsZXMgY2hhbmdlZCwgMjk2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDA2YzdiNTUuLjIxNDBmYTcgMTAw NjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtODc2LDYgKzg3NiwxOCBAQCBzdGF0aWMgdm9pZCBp OTE1X2RyaXZlcl9jbGVhbnVwX2Vhcmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKIAlpOTE1X3dvcmtxdWV1ZXNfY2xlYW51cChkZXZfcHJpdik7CiB9CiAKKy8qKgorICogaTkx NV9kcml2ZXJfaW5pdF9sYXRlIC0gaW5pdGlhbGl6ZSBsYXRlIHN0YWdlIGRyaXZlciBjb21wb25l bnRzCisgKiBAZGV2X3ByaXY6IGRldmljZSBwcml2YXRlCisgKgorICogU2V0dXAgdGhlIGRyaXZl ciBjb21wb25lbnRzLCB3aGljaCBuZWVkIHRvIGJlIGluaXRlZCBhZnRlciBkcml2ZXIgc3RhdGUg aGFzCisgKiBiZWVuIHJlZ2lzdGVyZWQgYW5kIGRldmljZSBlbmFibGVkLgorICovCitzdGF0aWMg aW50IGk5MTVfZHJpdmVyX2luaXRfbGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit7CisJaTkxNV9wZXJmX2luaXRfbGF0ZShkZXZfcHJpdik7Cit9CisKIHN0YXRpYyBpbnQg aTkxNV9tbWlvX3NldHVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwpAQCAtMTI1NCw2ICsxMjY2LDgg QEAgaW50IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVj dCBwY2lfZGV2aWNlX2lkICplbnQpCiAKIAlpOTE1X2RyaXZlcl9yZWdpc3RlcihkZXZfcHJpdik7 CiAKKwlpOTE1X2RyaXZlcl9pbml0X2xhdGUoZGV2X3ByaXYpOworCiAJaW50ZWxfcnVudGltZV9w bV9lbmFibGUoZGV2X3ByaXYpOwogCiAJLyogRXZlcnl0aGluZyBpcyBpbiBwbGFjZSwgd2UgY2Fu IG5vdyByZWxheCEgKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGU5MTI2NzkuLjU1N2Ex MjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNDIsNiArNDIsOSBAQAogI2luY2x1ZGUg PGxpbnV4L2tyZWYuaD4KICNpbmNsdWRlIDxsaW51eC9wbV9xb3MuaD4KICNpbmNsdWRlIDxsaW51 eC9zaG1lbV9mcy5oPgorI2luY2x1ZGUgPGxpbnV4L3RpbWVjb3VudGVyLmg+CisjaW5jbHVkZSA8 bGludXgvY2xvY2tzb3VyY2UuaD4KKyNpbmNsdWRlIDxsaW51eC90aW1la2VlcGluZy5oPgogCiAj aW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlIDxkcm0vaW50ZWwtZ3R0Lmg+CkBAIC0xODQz LDYgKzE4NDYsOSBAQCBzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSB7CiAJLyogV2hldGhlciB0aGUg T0EgdW5pdCBpcyBpbiB1c2UgKi8KIAlib29sIHVzaW5nX29hOwogCisJLyogbW9ub3RvbmljX3Jh dyBjbGsgdGltZXN0YW1wIChpbiBucykgZm9yIGxhc3Qgc2FtcGxlICovCisJdTY0IGxhc3Rfc2Ft cGxlX3RzOworCiAJY29uc3Qgc3RydWN0IGk5MTVfcGVyZl9zdHJlYW1fb3BzICpvcHM7CiB9Owog CkBAIC0xODg5LDYgKzE4OTUsMjAgQEAgc3RydWN0IGk5MTVfcGVyZl9jc19kYXRhX25vZGUgewog CXUzMiB0YWc7CiB9OwogCisvKioKKyAqIHN0cnVjdCBpOTE1X2Nsb2NrX2luZm8gLSBkZWNyaWJl cyBpOTE1IHRpbWVzdGFtcCBjbG9jaworICoKKyAqLworc3RydWN0IGk5MTVfY2xvY2tfaW5mbyB7 CisJc3RydWN0IGN5Y2xlY291bnRlciBjYzsKKwlzdHJ1Y3QgdGltZWNvdW50ZXIgdGM7CisJc3Ry dWN0IHN5c3RlbV9kZXZpY2VfY3Jvc3N0c3RhbXAgeHRzdGFtcDsKKwlrdGltZV90IGNsa19vZmZz ZXQ7IC8qIE9mZnNldCAoaW4gbnMpIGJldHdlZW4gbW9ub3JhdyBjbGsgYW5kIGdwdSB0aW1lICov CisJdTMyIHRpbWVzdGFtcF9mcmVxdWVuY3k7CisJdTMyIHJlc3luY19wZXJpb2Q7IC8qIGluIG1z ZWNzICovCisJc3RydWN0IGRlbGF5ZWRfd29yayBjbGtfc3luY193b3JrOworfTsKKwogc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgewogCXN0cnVjdCBkcm1fZGV2aWNlIGRybTsKIApAQCAtMjE4OSw2 ICsyMjA5LDggQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGk5MTVfcnVu dGltZV9wbSBwbTsKIAorCXN0cnVjdCBpOTE1X2Nsb2NrX2luZm8gdHNfY2xrX2luZm87CisKIAlz dHJ1Y3QgewogCQlib29sIGluaXRpYWxpemVkOwogCkBAIC0yMjEzLDcgKzIyMzUsNiBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAKIAkJCWJvb2wgcGVyaW9kaWM7CiAJCQlpbnQgcGVyaW9k X2V4cG9uZW50OwotCQkJaW50IHRpbWVzdGFtcF9mcmVxdWVuY3k7CiAKIAkJCWludCB0YWlsX21h cmdpbjsKIApAQCAtMzc5Niw2ICszODE3LDcgQEAgaW50IGludGVsX2VuZ2luZV9jbWRfcGFyc2Vy KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAogLyogaTkxNV9wZXJmLmMgKi8KIGV4 dGVybiB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CitleHRlcm4gdm9pZCBpOTE1X3BlcmZfaW5pdF9sYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaTkxNV9wZXJmX3JlZ2lzdGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gdm9pZCBpOTE1X3BlcmZf dW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3BlcmYuYwppbmRleCAzZTM5ZDY5Li45YmYwZjkwIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3BlcmYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3BlcmYuYwpAQCAtMTg5LDYgKzE4OSw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9hbm9uX2lub2Rl cy5oPgogI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisjaW5jbHVkZSA8bGludXgva3RpbWUuaD4K IAogI2luY2x1ZGUgImk5MTVfZHJ2LmgiCiAjaW5jbHVkZSAiaW50ZWxfcmluZ2J1ZmZlci5oIgpA QCAtMjI4LDYgKzIyOSw5IEBACiAjZGVmaW5lIFBPTExfRlJFUVVFTkNZIDIwMAogI2RlZmluZSBQ T0xMX1BFUklPRCAoTlNFQ19QRVJfU0VDIC8gUE9MTF9GUkVRVUVOQ1kpCiAKKyNkZWZpbmUgTUFY X0NMS19TWU5DX1BFUklPRCAoNjAqTVNFQ19QRVJfU0VDKQorI2RlZmluZSBJTklUX0NMS19TWU5D X1BFUklPRCAoMjApIC8qIGluIG1zZWNzICovCisKIHN0YXRpYyB1MzIgaTkxNV9wZXJmX3N0cmVh bV9wYXJhbm9pZCA9IHRydWU7CiAKIC8qIFRoZSBtYXhpbXVtIGV4cG9uZW50IHRoZSBoYXJkd2Fy ZSBhY2NlcHRzIGlzIDYzIChlc3NlbnRpYWxseSBpdCBzZWxlY3RzIG9uZQpAQCAtMjU0LDEzICsy NTgsMjQgQEAgc3RhdGljIHUzMiBpOTE1X3BlcmZfc3RyZWFtX3BhcmFub2lkID0gdHJ1ZTsKICNk ZWZpbmUgVFNfQUREUl9BTElHTiA4CiAjZGVmaW5lIEk5MTVfUEVSRl9UU19TQU1QTEVfU0laRSA4 CiAKKy8qIFB1Ymxpc2hlZCBmcmVxdWVuY3kgb2YgR1QgY29tbWFuZCBzdHJlYW0gdGltZXN0YW1w IGNsb2NrICovCisjZGVmaW5lIEZSRVFVRU5DWV8xMl81X01IWgkoMTI1MDAwMDApCisjZGVmaW5l IEZSRVFVRU5DWV8xMl8wX01IWgkoMTIwMDAwMDApCisjZGVmaW5lIEZSRVFVRU5DWV8xOV8yX01I WgkoMTkyMDAwMDApCisjZGVmaW5lIEdUX0NTX1RJTUVTVEFNUF9GUkVRVUVOQ1koZGV2X3ByaXYp IChJU19HRU45KGRldl9wcml2KSA/IFwKKwkJCQkoSVNfQlJPWFRPTihkZXZfcHJpdikgPyBcCisJ CQkJRlJFUVVFTkNZXzE5XzJfTUhaIDogXAorCQkJCUZSRVFVRU5DWV8xMl8wX01IWikgOiBcCisJ CQkJRlJFUVVFTkNZXzEyXzVfTUhaKQorCiAvKiBEYXRhIGNvbW1vbiB0byBhbGwgc2FtcGxlcyAo cGVyaW9kaWMgT0EgLyBDUyBiYXNlZCBPQSAvIFRpbWVzdGFtcHMpICovCiBzdHJ1Y3Qgc2FtcGxl X2RhdGEgewogCXUzMiBzb3VyY2U7CiAJdTMyIGN0eF9pZDsKIAl1MzIgcGlkOwogCXUzMiB0YWc7 Ci0JdTY0IHRzOworCXU2NCBncHVfdHM7CisJdTY0IGNsa19tb25vcmF3OwogCWNvbnN0IHU4ICpy ZXBvcnQ7CiB9OwogCkBAIC0zMTksNiArMzM0LDcgQEAgc3RhdGljIGNvbnN0IGVudW0gaW50ZWxf ZW5naW5lX2lkIHVzZXJfcmluZ19tYXBbSTkxNV9VU0VSX1JJTkdTICsgMV0gPSB7CiAjZGVmaW5l IFNBTVBMRV9QSUQJCSgxPDwzKQogI2RlZmluZSBTQU1QTEVfVEFHCQkoMTw8NCkKICNkZWZpbmUg U0FNUExFX1RTCQkoMTw8NSkKKyNkZWZpbmUgU0FNUExFX0NMS19NT05PX1JBVwkoMTw8NikKIAog c3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzIHsKIAl1MzIgc2FtcGxlX2ZsYWdzOwpAQCAtMzM3 LDYgKzM1MywxMzYgQEAgc3RydWN0IHBlcmZfb3Blbl9wcm9wZXJ0aWVzIHsKIAllbnVtIGludGVs X2VuZ2luZV9pZCBlbmdpbmU7CiB9OwogCisvKioKKyAqIGk5MTVfdHN0YW1wX2Nsa19jeWNsZWNv dW50ZXJfcmVhZCAtIHJlYWQgcmF3IGN5Y2xlIGNvdW50ZXIKKyAqIEBjYzogY3ljbGVjb3VudGVy IHN0cnVjdHVyZQorICoqLworc3RhdGljIGN5Y2xlX3QgaTkxNV90c3RhbXBfY2xrX2N5Y2xlY291 bnRlcl9yZWFkKAorCQkJCWNvbnN0IHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjKQoreworCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9CisJCWNvbnRhaW5lcl9vZihjYywgdHlwZW9m KCpkZXZfcHJpdiksCisJCQkgICAgIHRzX2Nsa19pbmZvLmNjKTsKKworCXJldHVybiBJOTE1X1JF QUQ2NF8yeDMyKEdUX1RJTUVTVEFNUF9DT1VOVCwKKwkJCQkJR1RfVElNRVNUQU1QX0NPVU5UX1VE Vyk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfdHN0YW1wX2Nsa19jYWxjX3VwZGF0ZV9tdWx0X3No aWZ0KHN0cnVjdCBjeWNsZWNvdW50ZXIgKmNjLAorCQkJCQl1MzIgZnJlcXVlbmN5KQoreworCWNs b2Nrc19jYWxjX211bHRfc2hpZnQoJmNjLT5tdWx0LCAmY2MtPnNoaWZ0LAorCQkJZnJlcXVlbmN5 LCBOU0VDX1BFUl9TRUMsIDM2MDApOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3RzdGFtcF9jbGtf aW5pdF9iYXNlX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJCXN0 cnVjdCBjeWNsZWNvdW50ZXIgKmNjKQoreworCWNjLT5yZWFkID0gaTkxNV90c3RhbXBfY2xrX2N5 Y2xlY291bnRlcl9yZWFkOworCWNjLT5tYXNrID0gQ1lDTEVDT1VOVEVSX01BU0soNjQpOworCWk5 MTVfdHN0YW1wX2Nsa19jYWxjX3VwZGF0ZV9tdWx0X3NoaWZ0KGNjLAorCQkJZGV2X3ByaXYtPnRz X2Nsa19pbmZvLnRpbWVzdGFtcF9mcmVxdWVuY3kpOworfQorCisvKioKKyAqIGk5MTVfZ2V0X3N5 bmNkZXZpY2V0aW1lIC0gQ2FsbGJhY2sgZ2l2ZW4gdG8gdGltZWtlZXBpbmcgY29kZSB0byByZWFk CisJZGV2aWNlIHRpbWUgYW5kIHN5dGVtIGNsayBjb3VudGVyIHZhbHVlCisgKiBAZGV2aWNlX3Rp bWU6IGN1cnJlbnQgZGV2aWNlIHRpbWUKKyAqIEBzeXN0ZW06IHN5c3RlbSBjb3VudGVyIHZhbHVl IHJlYWQgc3luY2hyb25vdXNseSB3aXRoIGRldmljZSB0aW1lCisgKiBAY3R4OiBjb250ZXh0IHBy b3ZpZGVkIGJ5IHRpbWVrZWVwaW5nIGNvZGUKKyAqCisgKiovCitzdGF0aWMgaW50IGk5MTVfZ2V0 X3N5bmNkZXZpY2V0aW1lKGt0aW1lX3QgKmRldmljZV90aW1lLAorCQkJCQkgc3RydWN0IHN5c3Rl bV9jb3VudGVydmFsX3QgKnN5c3RlbSwKKwkJCQkJIHZvaWQgKmN0eCkKK3sKKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKiljdHg7 CisJc3RydWN0IHRpbWVjb3VudGVyICp0YyA9ICZkZXZfcHJpdi0+dHNfY2xrX2luZm8udGM7CisJ c3RydWN0IGNsb2Nrc291cmNlICpjdXJyX2Nsa3NvdXJjZTsKKworCSpkZXZpY2VfdGltZSA9IG5z X3RvX2t0aW1lKHRpbWVjb3VudGVyX3JlYWQodGMpKTsKKworCWN1cnJfY2xrc291cmNlID0gZ2V0 X2N1cnJlbnRfY2xvY2tzb3VyY2UoKTsKKwlzeXN0ZW0tPmN5Y2xlcyA9IGN1cnJfY2xrc291cmNl LT5yZWFkKGN1cnJfY2xrc291cmNlKTsKKwlzeXN0ZW0tPmNzID0gY3Vycl9jbGtzb3VyY2U7CisK KwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9wZXJmX2Nsb2NrX3N5bmNfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0KKwkJY29udGFpbmVyX29mKHdvcmssIHR5cGVvZigqZGV2X3ByaXYpLAorCQl0c19j bGtfaW5mby5jbGtfc3luY193b3JrLndvcmspOworCXN0cnVjdCBzeXN0ZW1fZGV2aWNlX2Nyb3Nz dHN0YW1wICp4dHN0YW1wID0KKwkJCSZkZXZfcHJpdi0+dHNfY2xrX2luZm8ueHRzdGFtcDsKKwlr dGltZV90IGxhc3Rfc3lzX3RpbWUgPSB4dHN0YW1wLT5zeXNfbW9ub3JhdzsKKwlrdGltZV90IGxh c3RfZ3B1X3RpbWUgPSB4dHN0YW1wLT5kZXZpY2U7CisJa3RpbWVfdCBjbGtfbW9ub19vZmZzZXQs IGdwdV90aW1lX29mZnNldDsKKwlzNjQgZGVsdGE7CisJdTMyIGdwdV9mcmVxID0gZGV2X3ByaXYt PnRzX2Nsa19pbmZvLnRpbWVzdGFtcF9mcmVxdWVuY3k7CisJdTMyIGZyZXFfZGVsdGEgPSAwOwor CisJZ2V0X2RldmljZV9zeXN0ZW1fY3Jvc3N0c3RhbXAoaTkxNV9nZXRfc3luY2RldmljZXRpbWUs IGRldl9wcml2LAorCQkJCQlOVUxMLCB4dHN0YW1wKTsKKworCWNsa19tb25vX29mZnNldCA9IGt0 aW1lX3N1Yih4dHN0YW1wLT5zeXNfbW9ub3JhdywgbGFzdF9zeXNfdGltZSk7CisJZ3B1X3RpbWVf b2Zmc2V0ID0ga3RpbWVfc3ViKHh0c3RhbXAtPmRldmljZSwgbGFzdF9ncHVfdGltZSk7CisKKwkv KiBkZWx0YSB0aW1lIGluIG5zICovCisJZGVsdGEgPSBrdGltZV90b19ucyhrdGltZV9zdWIoZ3B1 X3RpbWVfb2Zmc2V0LCBjbGtfbW9ub19vZmZzZXQpKTsKKworCS8qIElmIHRpbWUgZGVsdGEgPCAx IHVzLCB3ZSBjYW4gYXNzdW1lIGdwdSBmcmVxdWVuY3kgaXMgY29ycmVjdCAqLworCWlmIChhYnMo ZGVsdGEpIDwgTlNFQ19QRVJfVVNFQykKKwkJZ290byBvdXQ7CisKKwkvKiBUaGUgdHdvIGNsb2Nr cyBzaG91bGRuJ3QgZGV2aWF0ZSBtb3JlIHRoYW4gMSBzZWNvbmQgZHVyaW5nIHRoZQorCSAqIHJl c3luYyBwZXJpb2QuIElmIHRoaXMgaXMgdGhlIGNhc2UgKHdoaWNoIG1heSBoYXBwZW4gZHVlIHRv CisJICogc3VzcGVuZC9yZXN1bWUpLCB0aGVuIGRvbid0IGFwcGx5IGZyZXF1ZW5jeSBjb3JyZWN0 aW9uLCBhbmQKKwkgKiBmYXN0IGZvcndhcmQvcmV3aW5kIHRoZSBjbG9ja3MgdG8gcmVzeW5jIGlt bWVkaWF0ZWx5CisJICovCisJaWYgKGFicyhkZWx0YSkgPiBOU0VDX1BFUl9TRUMpCisJCWdvdG8g b3V0OworCisJLyogQ2FsY3VsYXRlIGZyZXF1ZW5jeSBkZWx0YSAqLworCWZyZXFfZGVsdGEgPSBh YnMoZGVsdGEpKmdwdV9mcmVxOworCWRvX2RpdihmcmVxX2RlbHRhLCBrdGltZV90b19ucyhjbGtf bW9ub19vZmZzZXQpKTsKKworCWlmIChmcmVxX2RlbHRhID09IDApCisJCWdvdG8gb3V0OworCisJ aWYgKGRlbHRhIDwgMCkKKwkJZnJlcV9kZWx0YSA9IC1mcmVxX2RlbHRhOworCisJZGV2X3ByaXYt PnRzX2Nsa19pbmZvLnRpbWVzdGFtcF9mcmVxdWVuY3kgKz0gZnJlcV9kZWx0YTsKKwlpOTE1X3Rz dGFtcF9jbGtfY2FsY191cGRhdGVfbXVsdF9zaGlmdCgmZGV2X3ByaXYtPnRzX2Nsa19pbmZvLmNj LAorCQkJZGV2X3ByaXYtPnRzX2Nsa19pbmZvLnRpbWVzdGFtcF9mcmVxdWVuY3kpOworCisJLyoK KwkgKiBHZXQgdXBkYXRlZCBkZXZpY2Uvc3lzdGVtIHRpbWVzIGJhc2VkIG9uIGNvcnJlY3RlZCBm cmVxdWVuY3kuCisJICogTm90ZSB0aGF0IHRoaXMgbWF5IGNhdXNlIGp1bXBzIGluIGRldmljZSB0 aW1lIGRlcGVuZGluZyBvbiB3aGV0aGVyCisJICogZnJlcXVlbmN5IGRlbHRhIGlzIHBvc2l0aXZl IG9yIG5lZ2F0aXZlLgorCSAqIE5COiBUYWtlIGNhcmUgdGhhdCBtb25vdG9uaWNpdHkgb2Ygc2Ft cGxlIHRpbWVzdGFtcHMgaXMgbWFpbnRhaW5lZAorCSAqIGV2ZW4gd2l0aCB0aGVzZSBqdW1wcy4K KwkgKi8KKwlnZXRfZGV2aWNlX3N5c3RlbV9jcm9zc3RzdGFtcChpOTE1X2dldF9zeW5jZGV2aWNl dGltZSwgZGV2X3ByaXYsCisJCQkJCU5VTEwsIHh0c3RhbXApOworCitvdXQ6CisJZGV2X3ByaXYt PnRzX2Nsa19pbmZvLmNsa19vZmZzZXQgPSBrdGltZV9zdWIoeHRzdGFtcC0+c3lzX21vbm9yYXcs CisJCQkJCQl4dHN0YW1wLT5kZXZpY2UpOworCisJLyogV2UgY2FuIHNjaGVkdWxlIG5leHQgc3lu Y2hyb25pemF0aW9uIGF0IGluY3JlbWVudGFsbHkgaGlnaGVyCisJICogZHVyYXRpb25zLCBzbyB0 aGF0IHRoZSBhY2N1cmFjeSBvZiBvdXIgY2FsY3VsYXRlZCBmcmVxdWVuY3kKKwkgKiBjYW4gaW1w cm92ZSBvdmVyIHRpbWUuIFRoZSBtYXggcmVzeW5jIHBlcmlvZCBpcyBhcmJpdHJhcmlseQorCSAq IHNldCBhcyBvbmUgaG91ci4KKwkgKi8KKwlkZXZfcHJpdi0+dHNfY2xrX2luZm8ucmVzeW5jX3Bl cmlvZCAqPSAyOworCWlmIChkZXZfcHJpdi0+dHNfY2xrX2luZm8ucmVzeW5jX3BlcmlvZCA8IE1B WF9DTEtfU1lOQ19QRVJJT0QpCisJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmZGV2X3ByaXYtPnRz X2Nsa19pbmZvLmNsa19zeW5jX3dvcmssCisJCQltc2Vjc190b19qaWZmaWVzKGRldl9wcml2LT50 c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kKSk7Cit9CisKIC8qCiAgKiBFbWl0IHRoZSBjb21tYW5k cyB0byBjYXB0dXJlIG1ldHJpY3MsIGludG8gdGhlIGNvbW1hbmQgc3RyZWFtLiBUaGlzIGZ1bmN0 aW9uCiAgKiBjYW4gYmUgY2FsbGVkIGNvbmN1cnJlbnRseSB3aXRoIHRoZSBzdHJlYW0gb3BlcmF0 aW9ucyBhbmQgZG9lc24ndCByZXF1aXJlCkBAIC00MTEsNyArNTU3LDcgQEAgc3RhdGljIGludCBp bnNlcnRfcGVyZl9lbnRyeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlp ZiAoc3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfT0FfUkVQT1JUKQogCQllbnRyeV9zaXpl ICs9IGRldl9wcml2LT5wZXJmLm9hLm9hX2J1ZmZlci5mb3JtYXRfc2l6ZTsKLQllbHNlIGlmIChz YW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpIHsKKwllbHNlIGlmIChzYW1wbGVfZmxhZ3MgJiAoU0FN UExFX1RTfFNBTVBMRV9DTEtfTU9OT19SQVcpKSB7CiAJCS8qCiAJCSAqIFhYWDogU2luY2UgVFMg ZGF0YSBjYW4gYW55d2F5cyBiZSBkZXJpdmVkIGZyb20gT0EgcmVwb3J0LCBzbwogCQkgKiBubyBu ZWVkIHRvIGNhcHR1cmUgaXQgZm9yIFJDUyBlbmdpbmUsIGlmIGNhcHR1cmUgb2EgZGF0YSBpcwpA QCAtNjI3LDcgKzc3Myw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfcmluZ19zdHJlYW1fY3NfaG9vayhz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCQlyZXQgPSBpOTE1X3Jpbmdfc3RyZWFt X2NhcHR1cmVfb2EocmVxLCBlbnRyeS0+b2Ffb2Zmc2V0KTsKIAkJaWYgKHJldCkKIAkJCWdvdG8g ZXJyX3VucmVmOwotCX0gZWxzZSBpZiAoc2FtcGxlX2ZsYWdzICYgU0FNUExFX1RTKSB7CisJfSBl bHNlIGlmIChzYW1wbGVfZmxhZ3MgJiAoU0FNUExFX1RTfFNBTVBMRV9DTEtfTU9OT19SQVcpKSB7 CiAJCS8qCiAJCSAqIFhYWDogU2luY2UgVFMgZGF0YSBjYW4gYW55d2F5cyBiZSBkZXJpdmVkIGZy b20gT0EgcmVwb3J0LCBzbwogCQkgKiBubyBuZWVkIHRvIGNhcHR1cmUgaXQgZm9yIFJDUyBlbmdp bmUsIGlmIGNhcHR1cmUgb2EgZGF0YSBpcwpAQCAtODg3LDcgKzEwMzMsMTQgQEAgc3RhdGljIGlu dCBhcHBlbmRfc2FtcGxlKHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJfQogCiAJ aWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9UUykgewotCQlpZiAoY29weV90b191c2VyKGJ1Ziwg JmRhdGEtPnRzLCBJOTE1X1BFUkZfVFNfU0FNUExFX1NJWkUpKQorCQlpZiAoY29weV90b191c2Vy KGJ1ZiwgJmRhdGEtPmdwdV90cywgSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFKSkKKwkJCXJldHVy biAtRUZBVUxUOworCQlidWYgKz0gSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFOworCX0KKworCWlm IChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfQ0xLX01PTk9fUkFXKSB7CisJCWlmIChjb3B5X3RvX3Vz ZXIoYnVmLCAmZGF0YS0+Y2xrX21vbm9yYXcsCisJCQkJCUk5MTVfUEVSRl9UU19TQU1QTEVfU0la RSkpCiAJCQlyZXR1cm4gLUVGQVVMVDsKIAkJYnVmICs9IEk5MTVfUEVSRl9UU19TQU1QTEVfU0la RTsKIAl9CkBAIC05MDMsNiArMTA1NiwyNyBAQCBzdGF0aWMgaW50IGFwcGVuZF9zYW1wbGUoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHU2 NCBnZXRfY2xrX21vbm9yYXdfZnJvbV9ncHVfdHMoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0 cmVhbSwKKwkJCQkJdTY0IGdwdV90cykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCXN0cnVjdCB0aW1lY291bnRlciAqdGMgPSAmZGV2 X3ByaXYtPnRzX2Nsa19pbmZvLnRjOworCXU2NCBncHVfdGltZSwgY2xrX21vbm9yYXc7CisKKwln cHVfdGltZSA9IGN5Y2xlY291bnRlcl9jeWMybnModGMtPmNjLCBncHVfdHMsIHRjLT5tYXNrLCAm dGMtPmZyYWMpOworCisJY2xrX21vbm9yYXcgPSBncHVfdGltZSArIGt0aW1lX3RvX25zKGRldl9w cml2LT50c19jbGtfaW5mby5jbGtfb2Zmc2V0KTsKKworCS8qIEVuc3VyZSBtb25vdG9uaWNpdHkg YnkgY2xhbXBpbmcgdGhlIHN5c3RlbSB0aW1lIGluIGNhc2UgaXQgZ29lcworCSAqIGJhY2t3YXJk cy4KKwkgKi8KKwlpZiAoY2xrX21vbm9yYXcgPCBzdHJlYW0tPmxhc3Rfc2FtcGxlX3RzKQorCQlj bGtfbW9ub3JhdyA9IHN0cmVhbS0+bGFzdF9zYW1wbGVfdHM7CisKKwlzdHJlYW0tPmxhc3Rfc2Ft cGxlX3RzID0gY2xrX21vbm9yYXc7CisJcmV0dXJuIGNsa19tb25vcmF3OworfQorCiBzdGF0aWMg dTY0IGdldF9ncHVfdHNfZnJvbV9vYV9yZXBvcnQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogCQkJCQljb25zdCB1OCAqcmVwb3J0KQogewpAQCAtOTYwLDcgKzExMzQsMTMgQEAg c3RhdGljIGludCBhcHBlbmRfb2FfYnVmZmVyX3NhbXBsZShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVh bSAqc3RyZWFtLAogCiAJLyogRGVyaXZlIHRpbWVzdGFtcCBmcm9tIE9BIHJlcG9ydCAqLwogCWlm IChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpCi0JCWRhdGEudHMgPSBnZXRfZ3B1X3RzX2Zyb21f b2FfcmVwb3J0KGRldl9wcml2LCByZXBvcnQpOworCQlkYXRhLmdwdV90cyA9IGdldF9ncHVfdHNf ZnJvbV9vYV9yZXBvcnQoZGV2X3ByaXYsIHJlcG9ydCk7CisKKwlpZiAoc2FtcGxlX2ZsYWdzICYg U0FNUExFX0NMS19NT05PX1JBVykgeworCQl1NjQgZ3B1X3RzID0gZ2V0X2dwdV90c19mcm9tX29h X3JlcG9ydChkZXZfcHJpdiwgcmVwb3J0KTsKKworCQlkYXRhLmNsa19tb25vcmF3ID0gZ2V0X2Ns a19tb25vcmF3X2Zyb21fZ3B1X3RzKHN0cmVhbSwgZ3B1X3RzKTsKKwl9CiAKIAlpZiAoc2FtcGxl X2ZsYWdzICYgU0FNUExFX09BX1JFUE9SVCkKIAkJZGF0YS5yZXBvcnQgPSByZXBvcnQ7CkBAIC0x NDc4LDcgKzE2NTgsNyBAQCBzdGF0aWMgaW50IGFwcGVuZF9vbmVfY3Nfc2FtcGxlKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCi0J CWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1QTEVfVFMpCisJCWlmIChzYW1wbGVfZmxhZ3MgJiAoU0FN UExFX1RTfFNBTVBMRV9DTEtfTU9OT19SQVcpKQogCQkJZ3B1X3RzID0gZ2V0X2dwdV90c19mcm9t X29hX3JlcG9ydChkZXZfcHJpdiwgcmVwb3J0KTsKIAl9CiAKQEAgLTE1MDAsNyArMTY4MCw3IEBA IHN0YXRpYyBpbnQgYXBwZW5kX29uZV9jc19zYW1wbGUoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0g KnN0cmVhbSwKIAkJZGV2X3ByaXYtPnBlcmYubGFzdF90YWcgPSBub2RlLT50YWc7CiAJfQogCi0J aWYgKHNhbXBsZV9mbGFncyAmIFNBTVBMRV9UUykgeworCWlmIChzYW1wbGVfZmxhZ3MgJiAoU0FN UExFX1RTfFNBTVBMRV9DTEtfTU9OT19SQVcpKSB7CiAJCS8qIElmIE9BIHNhbXBsaW5nIGlzIGVu YWJsZWQsIGRlcml2ZSB0aGUgdHMgZnJvbSBPQSByZXBvcnQuCiAJCSAqIEVsc2UsIGZvcndhcmQg dGhlIHRpbWVzdGFtcCBjb2xsZWN0ZWQgdmlhIGNvbW1hbmQgc3RyZWFtLgogCQkgKi8KQEAgLTE1 MDgsNyArMTY4OCwxMiBAQCBzdGF0aWMgaW50IGFwcGVuZF9vbmVfY3Nfc2FtcGxlKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAJCQlncHVfdHMgPSAqKHU2NCAqKQogCQkJCShkZXZf cHJpdi0+cGVyZi5jb21tYW5kX3N0cmVhbV9idWZbaWRdLmFkZHIgKwogCQkJCQlub2RlLT50c19v ZmZzZXQpOwotCQlkYXRhLnRzID0gZ3B1X3RzOworCisJCWlmIChzYW1wbGVfZmxhZ3MgJiBTQU1Q TEVfVFMpCisJCQlkYXRhLmdwdV90cyA9IGdwdV90czsKKwkJaWYgKHNhbXBsZV9mbGFncyAmIFNB TVBMRV9DTEtfTU9OT19SQVcpCisJCQlkYXRhLmNsa19tb25vcmF3ID0gZ2V0X2Nsa19tb25vcmF3 X2Zyb21fZ3B1X3RzKAorCQkJCQkJCXN0cmVhbSwJZ3B1X3RzKTsKIAl9CiAKIAlyZXR1cm4gYXBw ZW5kX3NhbXBsZShzdHJlYW0sIGJ1ZiwgY291bnQsIG9mZnNldCwgJmRhdGEpOwpAQCAtMjI5OSwx MiArMjQ4NCwyOCBAQCBzdGF0aWMgdm9pZCBpOTE1X3Jpbmdfc3RyZWFtX2VuYWJsZShzdHJ1Y3Qg aTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQogCWlmIChzdHJlYW0tPnNhbXBsZV9mbGFncyAmIFNB TVBMRV9PQV9SRVBPUlQpIHsKIAkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLm9hX2VuYWJsZShkZXZf cHJpdik7CiAKLQkJaWYgKHN0cmVhbS0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX1RTKQorCQlpZiAo c3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiAoU0FNUExFX1RTfFNBTVBMRV9DTEtfTU9OT19SQVcpKQog CQkJZGV2X3ByaXYtPnBlcmYub2EubGFzdF9ncHVfdHMgPQogCQkJCUk5MTVfUkVBRDY0XzJ4MzIo R1RfVElNRVNUQU1QX0NPVU5ULAogCQkJCQlHVF9USU1FU1RBTVBfQ09VTlRfVURXKTsKIAl9CiAK KwlpZiAoc3RyZWFtLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfQ0xLX01PTk9fUkFXKSB7CisJCXN0 cnVjdCBzeXN0ZW1fZGV2aWNlX2Nyb3NzdHN0YW1wICp4dHN0YW1wID0KKwkJCSZkZXZfcHJpdi0+ dHNfY2xrX2luZm8ueHRzdGFtcDsKKworCQlnZXRfZGV2aWNlX3N5c3RlbV9jcm9zc3RzdGFtcChp OTE1X2dldF9zeW5jZGV2aWNldGltZSwgZGV2X3ByaXYsCisJCQkJCU5VTEwsIHh0c3RhbXApOwor CQlkZXZfcHJpdi0+dHNfY2xrX2luZm8uY2xrX29mZnNldCA9IGt0aW1lX3N1Yih4dHN0YW1wLT5z eXNfbW9ub3JhdywKKwkJCQkJCXh0c3RhbXAtPmRldmljZSk7CisKKwkJaWYgKGRldl9wcml2LT50 c19jbGtfaW5mby5yZXN5bmNfcGVyaW9kIDwgTUFYX0NMS19TWU5DX1BFUklPRCkKKwkJCXNjaGVk dWxlX2RlbGF5ZWRfd29yaygKKwkJCQkmZGV2X3ByaXYtPnRzX2Nsa19pbmZvLmNsa19zeW5jX3dv cmssCisJCQkJbXNlY3NfdG9famlmZmllcygKKwkJCQkJZGV2X3ByaXYtPnRzX2Nsa19pbmZvLnJl c3luY19wZXJpb2QpKTsKKwl9CisKIAlpZiAoc3RyZWFtLT5jc19tb2RlIHx8IGRldl9wcml2LT5w ZXJmLm9hLnBlcmlvZGljKQogCQlocnRpbWVyX3N0YXJ0KCZkZXZfcHJpdi0+cGVyZi5wb2xsX2No ZWNrX3RpbWVyLAogCQkJICAgICAgbnNfdG9fa3RpbWUoUE9MTF9QRVJJT0QpLApAQCAtMjMyNSw2 ICsyNTI2LDggQEAgc3RhdGljIHZvaWQgaTkxNV9yaW5nX3N0cmVhbV9kaXNhYmxlKHN0cnVjdCBp OTE1X3BlcmZfc3RyZWFtICpzdHJlYW0pCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKIAorCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygm ZGV2X3ByaXYtPnRzX2Nsa19pbmZvLmNsa19zeW5jX3dvcmspOworCiAJaWYgKHN0cmVhbS0+Y3Nf bW9kZSB8fCBkZXZfcHJpdi0+cGVyZi5vYS5wZXJpb2RpYykKIAkJaHJ0aW1lcl9jYW5jZWwoJmRl dl9wcml2LT5wZXJmLnBvbGxfY2hlY2tfdGltZXIpOwogCkBAIC0yMzQwLDcgKzI1NDMsNyBAQCBz dGF0aWMgdm9pZCBpOTE1X3Jpbmdfc3RyZWFtX2Rpc2FibGUoc3RydWN0IGk5MTVfcGVyZl9zdHJl YW0gKnN0cmVhbSkKIHN0YXRpYyB1NjQgb2FfZXhwb25lbnRfdG9fbnMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgZXhwb25lbnQpCiB7CiAJcmV0dXJuIDEwMDAwMDAwMDBV TEwgKiAoMlVMTCA8PCBleHBvbmVudCkgLwotCQlkZXZfcHJpdi0+cGVyZi5vYS50aW1lc3RhbXBf ZnJlcXVlbmN5OworCQlkZXZfcHJpdi0+dHNfY2xrX2luZm8udGltZXN0YW1wX2ZyZXF1ZW5jeTsK IH0KIAogc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtX29wcyBpOTE1X29hX3N0 cmVhbV9vcHMgPSB7CkBAIC0yMzYzLDcgKzI1NjYsOCBAQCBzdGF0aWMgaW50IGk5MTVfcmluZ19z dHJlYW1faW5pdChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAogCWJvb2wgcmVxdWly ZV9jc19tb2RlID0gcHJvcHMtPnNhbXBsZV9mbGFncyAmIChTQU1QTEVfUElEIHwKIAkJCQkJCSAg ICAgIFNBTVBMRV9UQUcpOwogCWJvb2wgY3Nfc2FtcGxlX2RhdGEgPSBwcm9wcy0+c2FtcGxlX2Zs YWdzICYgKFNBTVBMRV9PQV9SRVBPUlQgfAotCQkJCQkJCVNBTVBMRV9UUyk7CisJCQkJCQkJU0FN UExFX1RTIHwKKwkJCQkJCQlTQU1QTEVfQ0xLX01PTk9fUkFXKTsKIAlpbnQgcmV0OwogCiAJaWYg KChwcm9wcy0+c2FtcGxlX2ZsYWdzICYgU0FNUExFX0NUWF9JRCkgJiYgIXByb3BzLT5jc19tb2Rl KSB7CkBAIC0yNTI1LDYgKzI3MjksMTkgQEAgc3RhdGljIGludCBpOTE1X3Jpbmdfc3RyZWFtX2lu aXQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKIAkJCXJlcXVpcmVfY3NfbW9kZSA9 IHRydWU7CiAJfQogCisJaWYgKHByb3BzLT5zYW1wbGVfZmxhZ3MgJiBTQU1QTEVfQ0xLX01PTk9f UkFXKSB7CisJCXN0cmVhbS0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9DTEtfTU9OT19SQVc7CisJ CXN0cmVhbS0+c2FtcGxlX3NpemUgKz0gSTkxNV9QRVJGX1RTX1NBTVBMRV9TSVpFOworCisJCS8q CisJCSAqIE5COiBpdCdzIG1lYW5pbmdmdWwgdG8gcmVxdWVzdCBTQU1QTEVfQ0xLX01PTk8gd2l0 aCBqdXN0IENTCisJCSAqIG1vZGUgb3IgcGVyaW9kaWMgT0EgbW9kZSBzYW1wbGluZyBidXQgd2Ug ZG9uJ3QgYWxsb3cKKwkJICogU0FNUExFX0NMS19NT05PIHdpdGhvdXQgZWl0aGVyIG1vZGUKKwkJ ICovCisJCWlmICghcmVxdWlyZV9vYV91bml0KQorCQkJcmVxdWlyZV9jc19tb2RlID0gdHJ1ZTsK Kwl9CisKIAlpZiAocmVxdWlyZV9jc19tb2RlICYmICFwcm9wcy0+Y3NfbW9kZSkgewogCQlEUk1f RVJST1IoCiAJCQkiUElELCBUQUcgb3IgVFMgc2FtcGxpbmcgcmVxdWlyZSBhIHJpbmcgdG8gYmUg c3BlY2lmaWVkIik7CkBAIC0yNTQ5LDExICsyNzY2LDEzIEBAIHN0YXRpYyBpbnQgaTkxNV9yaW5n X3N0cmVhbV9pbml0KHN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpzdHJlYW0sCiAKIAkJLyoKIAkJ ICogVGhlIG9ubHkgdGltZSB3ZSBzaG91bGQgYWxsb3cgZW5hYmxpbmcgQ1MgbW9kZSBpZiBpdCdz IG5vdAotCQkgKiBzdHJpY3RseSByZXF1aXJlZCwgaXMgaWYgU0FNUExFX0NUWF9JRCAgb3IgU0FN UExFX1RTIGhhcyBiZWVuCi0JCSAqIHJlcXVlc3RlZCwgYXMgdGhleSdyZSB1c2FibGUgd2l0aCBw ZXJpb2RpYyBPQSBvciBDUyBzYW1wbGluZy4KKwkJICogc3RyaWN0bHkgcmVxdWlyZWQsIGlzIGlm IFNBTVBMRV9DVFhfSUQsIFNBTVBMRV9UUyBvcgorCQkgKiBTQU1QTEVfQ0xLX01PTk9fUkFXIGhh cyBiZWVuIHJlcXVlc3RlZCwgYXMgdGhleSdyZSB1c2FibGUKKwkJICogd2l0aCBwZXJpb2RpYyBP QSBvciBDUyBzYW1wbGluZy4KIAkJICovCiAJCWlmICghcmVxdWlyZV9jc19tb2RlICYmCi0JCSAg ICAhKHByb3BzLT5zYW1wbGVfZmxhZ3MgJiAoU0FNUExFX0NUWF9JRHxTQU1QTEVfVFMpKSkgewor CQkgICAgIShwcm9wcy0+c2FtcGxlX2ZsYWdzICYKKwkJCQkoU0FNUExFX0NUWF9JRHxTQU1QTEVf VFN8U0FNUExFX0NMS19NT05PX1JBVykpKSB7CiAJCQlEUk1fRVJST1IoCiAJCQkJIlJpbmcgZ2l2 ZW4gd2l0aG91dCByZXF1ZXN0aW5nIGFueSBDUyBzcGVjaWZpYyBwcm9wZXJ0eSIpOwogCQkJcmV0 ID0gLUVJTlZBTDsKQEAgLTMyNDcsNiArMzQ2Niw5IEBAIHN0YXRpYyBpbnQgcmVhZF9wcm9wZXJ0 aWVzX3VubG9ja2VkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJY2FzZSBE Uk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX1RTOgogCQkJcHJvcHMtPnNhbXBsZV9mbGFncyB8PSBT QU1QTEVfVFM7CiAJCQlicmVhazsKKwkJY2FzZSBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX0NM T0NLX01PTk9UT05JQ19SQVc6CisJCQlwcm9wcy0+c2FtcGxlX2ZsYWdzIHw9IFNBTVBMRV9DTEtf TU9OT19SQVc7CisJCQlicmVhazsKIAkJY2FzZSBEUk1fSTkxNV9QRVJGX1BST1BfTUFYOgogCQkJ QlVHKCk7CiAJCX0KQEAgLTMzOTQsNiArMzYxNiw3IEBAIHN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxl IGRldl9yb290W10gPSB7CiAKIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogeworCXN0cnVjdCBpOTE1X2Nsb2NrX2luZm8gKmNsa19pbmZvID0g JmRldl9wcml2LT50c19jbGtfaW5mbzsKIAlpbnQgaTsKIAogCWlmICghKElTX0hBU1dFTEwoZGV2 X3ByaXYpIHx8CkBAIC0zNDAxLDYgKzM2MjQsMTIgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICAgICAgSVNfU0tZTEFLRShkZXZfcHJp dikpKQogCQlyZXR1cm47CiAKKwljbGtfaW5mby0+dGltZXN0YW1wX2ZyZXF1ZW5jeSA9IEdUX0NT X1RJTUVTVEFNUF9GUkVRVUVOQ1koZGV2X3ByaXYpOworCWNsa19pbmZvLT5yZXN5bmNfcGVyaW9k ID0gSU5JVF9DTEtfU1lOQ19QRVJJT0Q7CisJSU5JVF9ERUxBWUVEX1dPUksoJmNsa19pbmZvLT5j bGtfc3luY193b3JrLCBpOTE1X3BlcmZfY2xvY2tfc3luY193b3JrKTsKKworCWk5MTVfdHN0YW1w X2Nsa19pbml0X2Jhc2VfZnJlcShkZXZfcHJpdiwgJmNsa19pbmZvLT5jYyk7CisKIAlocnRpbWVy X2luaXQoJmRldl9wcml2LT5wZXJmLnBvbGxfY2hlY2tfdGltZXIsCiAJCSAgICAgQ0xPQ0tfTU9O T1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTsKIAlkZXZfcHJpdi0+cGVyZi5wb2xsX2NoZWNrX3Rp bWVyLmZ1bmN0aW9uID0gcG9sbF9jaGVja190aW1lcl9jYjsKQEAgLTM0MzAsOCArMzY1OSw2IEBA IHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQog CQlkZXZfcHJpdi0+cGVyZi5vYS5vcHMub2FfYnVmZmVyX2dldF9jdHhfaWQgPQogCQkJCQlnZW43 X29hX2J1ZmZlcl9nZXRfY3R4X2lkOwogCi0JCWRldl9wcml2LT5wZXJmLm9hLnRpbWVzdGFtcF9m cmVxdWVuY3kgPSAxMjUwMDAwMDsKLQogCQlkZXZfcHJpdi0+cGVyZi5vYS5vYV9mb3JtYXRzID0g aHN3X29hX2Zvcm1hdHM7CiAKIAkJZGV2X3ByaXYtPnBlcmYub2Eubl9idWlsdGluX3NldHMgPQpA QCAtMzQ2Miw4ICszNjg5LDYgQEAgdm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCiAJCQlkZXZfcHJpdi0+cGVyZi5vYS5jdHhfZmxleGV1MF9vZmYg PSAweDJjZTsKIAkJCWRldl9wcml2LT5wZXJmLm9hLm5fYnVpbHRpbl9zZXRzID0KIAkJCQlpOTE1 X29hX25fYnVpbHRpbl9tZXRyaWNfc2V0c19iZHc7Ci0KLQkJCWRldl9wcml2LT5wZXJmLm9hLnRp bWVzdGFtcF9mcmVxdWVuY3kgPSAxMjUwMDAwMDsKIAkJfSBlbHNlIGlmIChJU19DSEVSUllWSUVX KGRldl9wcml2KSkgewogCQkJZGV2X3ByaXYtPnBlcmYub2Eub3BzLmVuYWJsZV9tZXRyaWNfc2V0 ID0KIAkJCQljaHZfZW5hYmxlX21ldHJpY19zZXQ7CkBAIC0zNDczLDggKzM2OTgsNiBAQCB2b2lk IGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJCWRl dl9wcml2LT5wZXJmLm9hLmN0eF9mbGV4ZXUwX29mZiA9IDB4MmNlOwogCQkJZGV2X3ByaXYtPnBl cmYub2Eubl9idWlsdGluX3NldHMgPQogCQkJCWk5MTVfb2Ffbl9idWlsdGluX21ldHJpY19zZXRz X2NodjsKLQotCQkJZGV2X3ByaXYtPnBlcmYub2EudGltZXN0YW1wX2ZyZXF1ZW5jeSA9IDEyNTAw MDAwOwogCQl9IGVsc2UgaWYgKElTX1NLWUxBS0UoZGV2X3ByaXYpKSB7CiAJCQlkZXZfcHJpdi0+ cGVyZi5vYS5vcHMuZW5hYmxlX21ldHJpY19zZXQgPQogCQkJCXNrbF9lbmFibGVfbWV0cmljX3Nl dDsKQEAgLTM0ODQsOCArMzcwNyw2IEBAIHZvaWQgaTkxNV9wZXJmX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJZGV2X3ByaXYtPnBlcmYub2EuY3R4X2ZsZXhldTBf b2ZmID0gMHgzZGU7CiAJCQlkZXZfcHJpdi0+cGVyZi5vYS5uX2J1aWx0aW5fc2V0cyA9CiAJCQkJ aTkxNV9vYV9uX2J1aWx0aW5fbWV0cmljX3NldHNfc2tsOwotCi0JCQlkZXZfcHJpdi0+cGVyZi5v YS50aW1lc3RhbXBfZnJlcXVlbmN5ID0gMTIwMDAwMDA7CiAJCX0KIAl9CiAKQEAgLTM0OTQsNiAr MzcxNSwxNCBAQCB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAlkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCA9IHRydWU7CiB9CiAKK3ZvaWQg aTkxNV9wZXJmX2luaXRfbGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJc3RydWN0IGk5MTVfY2xvY2tfaW5mbyAqY2xrX2luZm8gPSAmZGV2X3ByaXYtPnRzX2Nsa19p bmZvOworCisJdGltZWNvdW50ZXJfaW5pdCgmY2xrX2luZm8tPnRjLAkmY2xrX2luZm8tPmNjLAor CQkJCWt0aW1lX3RvX25zKGt0aW1lX2dldF9ib290dGltZSgpKSk7Cit9CisKIHZvaWQgaTkxNV9w ZXJmX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewogCWlmICghZGV2 X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQpCmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggMzVjMjgxNC4uMDk2 YmFkOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMTMzMCw2ICsxMzMwLDEyIEBAIGVudW0gZHJtX2k5 MTVfcGVyZl9wcm9wZXJ0eV9pZCB7CiAJICovCiAJRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9U UywKIAorCS8qKgorCSAqIFRoaXMgcHJvcGVydHkgcmVxdWVzdHMgaW5jbHVzaW9uIG9mIENMT0NL X01PTk9UT05JQyBzeXN0ZW0gdGltZSBpbgorCSAqIHRoZSBwZXJmIHNhbXBsZSBkYXRhLgorCSAq LworCURSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfQ0xPQ0tfTU9OT1RPTklDX1JBVywKKwogCURS TV9JOTE1X1BFUkZfUFJPUF9NQVggLyogbm9uLUFCSSAqLwogfTsKIApAQCAtMTM5OCw3ICsxNDA0 LDggQEAgZW51bSBkcm1faTkxNV9wZXJmX3JlY29yZF90eXBlIHsKIAkgKiAgICAgeyB1MzIgY3R4 X2lkOyB9ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfQ1RYX0lECiAJICogICAgIHsgdTMy IHBpZDsgfSAmJiBEUk1fSTkxNV9QRVJGX1BST1BfU0FNUExFX1BJRAogCSAqICAgICB7IHUzMiB0 YWc7IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9UQUcKLQkgKiAgICAgeyB1NjQgdGlt ZXN0YW1wOyB9ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfVFMKKwkgKiAgICAgeyB1NjQg Z3B1X3RzOyB9ICYmIERSTV9JOTE1X1BFUkZfUFJPUF9TQU1QTEVfVFMKKwkgKiAgICAgeyB1NjQg Y2xrX21vbm87IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBMRV9DTE9DS19NT05PVE9OSUMK IAkgKiAgICAgeyB1MzIgb2FfcmVwb3J0W107IH0gJiYgRFJNX0k5MTVfUEVSRl9QUk9QX1NBTVBM RV9PQQogCSAqIH07CiAJICovCi0tIAoxLjkuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==