From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Bragg Subject: [PATCH] drm/i915: Add i915 perf infrastructure Date: Wed, 14 Sep 2016 16:32:56 +0100 Message-ID: <20160914153256.4121-1-robert@sixbynine.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: 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: David Airlie , dri-devel@lists.freedesktop.org, Sourab Gupta , Daniel Vetter List-Id: dri-devel@lists.freedesktop.org QWRkcyBiYXNlIGk5MTUgcGVyZiBpbmZyYXN0cnVjdHVyZSBmb3IgR2VuIHBlcmZvcm1hbmNlIG1l dHJpY3MuCgpUaGlzIGFkZHMgYSBEUk1fSU9DVExfSTkxNV9QRVJGX09QRU4gaW9jdGwgdGhhdCB0 YWtlcyBhbiBhcnJheSBvZiB1aW50NjQKcHJvcGVydGllcyB0byBjb25maWd1cmUgYSBzdHJlYW0g b2YgbWV0cmljcyBhbmQgcmV0dXJucyBhIG5ldyBmZCB1c2FibGUKd2l0aCBzdGFuZGFyZCBWRlMg c3lzdGVtIGNhbGxzIGluY2x1ZGluZyByZWFkKCkgdG8gcmVhZCB0eXBlZCBhbmQgc2l6ZWQKcmVj b3JkczsgaW9jdGwoKSB0byBlbmFibGUgb3IgZGlzYWJsZSBjYXB0dXJlIGFuZCBwb2xsKCkgdG8g d2FpdCBmb3IKZGF0YS4KCkEgc3RyZWFtIGlzIG9wZW5lZCBzb21ldGhpbmcgbGlrZToKCiAgdWlu dDY0X3QgcHJvcGVydGllc1tdID0gewogICAgICAvKiBTaW5nbGUgY29udGV4dCBzYW1wbGluZyAq LwogICAgICBEUk1fSTkxNV9QRVJGX1BST1BfQ1RYX0hBTkRMRSwgICAgICAgIGN0eF9oYW5kbGUs CgogICAgICAvKiBJbmNsdWRlIE9BIHJlcG9ydHMgaW4gc2FtcGxlcyAqLwogICAgICBEUk1fSTkx NV9QRVJGX1BST1BfU0FNUExFX09BLCAgICAgICAgIHRydWUsCgogICAgICAvKiBPQSB1bml0IGNv bmZpZ3VyYXRpb24gKi8KICAgICAgRFJNX0k5MTVfUEVSRl9QUk9QX09BX01FVFJJQ1NfU0VULCAg ICBtZXRyaWNzX3NldF9pZCwKICAgICAgRFJNX0k5MTVfUEVSRl9QUk9QX09BX0ZPUk1BVCwgICAg ICAgICByZXBvcnRfZm9ybWF0LAogICAgICBEUk1fSTkxNV9QRVJGX1BST1BfT0FfRVhQT05FTlQs ICAgICAgIHBlcmlvZF9leHBvbmVudCwKICAgfTsKICAgc3RydWN0IGRybV9pOTE1X3BlcmZfb3Bl bl9wYXJhbSBwYXJtID0gewogICAgICAuZmxhZ3MgPSBJOTE1X1BFUkZfRkxBR19GRF9DTE9FWEVD IHwKICAgICAgICAgICAgICAgSTkxNV9QRVJGX0ZMQUdfRkRfTk9OQkxPQ0sgfAogICAgICAgICAg ICAgICBJOTE1X1BFUkZfRkxBR19ESVNBQkxFRCwKICAgICAgLnByb3BlcnRpZXNfcHRyID0gKHVp bnQ2NF90KXByb3BlcnRpZXMsCiAgICAgIC5udW1fcHJvcGVydGllcyA9IHNpemVvZihwcm9wZXJ0 aWVzKSAvIDE2LAogICB9OwogICBpbnQgZmQgPSBkcm1Jb2N0bChkcm1fZmQsIERSTV9JT0NUTF9J OTE1X1BFUkZfT1BFTiwgJnBhcmFtKTsKClJlY29yZHMgcmVhZCBhbGwgc3RhcnQgd2l0aCBhIGNv bW1vbiB7IHR5cGUsIHNpemUgfSBoZWFkZXIgd2l0aApEUk1fSTkxNV9QRVJGX1JFQ09SRF9TQU1Q TEUgYmVpbmcgb2YgbW9zdCBpbnRlcmVzdC4gU2FtcGxlIHJlY29yZHMKY29udGFpbiBhbiBleHRl bnNpYmxlIG51bWJlciBvZiBmaWVsZHMgYW5kIGl0J3MgdGhlCkRSTV9JOTE1X1BFUkZfUFJPUF9T QU1QTEVfeHl6IHByb3BlcnRpZXMgZ2l2ZW4gd2hlbiBvcGVuaW5nIHRoYXQKZGV0ZXJtaW5lIHdo YXQncyBpbmNsdWRlZCBpbiBldmVyeSBzYW1wbGUuCgpObyBzcGVjaWZpYyBzdHJlYW1zIGFyZSBz dXBwb3J0ZWQgeWV0IHNvIGFueSBhdHRlbXB0IHRvIG9wZW4gYSBzdHJlYW0Kd2lsbCByZXR1cm4g YW4gZXJyb3IuCgp2NDoKICAgIHMvRFJNX0lPUlcvRFJNX0lPUi8gLSBFbWlsIFZlbGlrb3YKdjM6 CiAgICB1cGRhdGUgcmVhZCgpIGludGVyZmFjZSB0byBhdm9pZCBwYXNzaW5nIHN0YXRlIHN0cnVj dCAtIENocmlzIFdpbHNvbgogICAgZml4IHNvbWUgcmViYXNlIGZhbGxvdXQsIHdpdGggaTkxNS1w ZXJmIGluaXQvZGVpbml0CnYyOgogICAgdXNlIGk5MTVfZ2VtX2NvbnRleHRfZ2V0KCkgLSBDaHJp cyBXaWxzb24KClNpZ25lZC1vZmYtYnk6IFJvYmVydCBCcmFnZyA8cm9iZXJ0QHNpeGJ5bmluZS5v cmc+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgfCAgIDMgKwogZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgfCAgOTEgKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVy Zi5jIHwgNDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgfCAgNjcgKysrKysrCiA1IGZpbGVzIGNoYW5nZWQs IDYxMyBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9wZXJmLmMKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmls ZSBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IGE5OThjMmIuLmQ5OTE3ODEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0xMTAsNiArMTEwLDkgQEAgaTkxNS15ICs9IGR2b19j aDcwMTcubyBcCiAjIHZpcnR1YWwgZ3B1IGNvZGUKIGk5MTUteSArPSBpOTE1X3ZncHUubwogCisj IHBlcmYgY29kZQoraTkxNS15ICs9IGk5MTVfcGVyZi5vCisKIGlmZXEgKCQoQ09ORklHX0RSTV9J OTE1X0dWVCkseSkKIGk5MTUteSArPSBpbnRlbF9ndnQubwogaW5jbHVkZSAkKHNyYykvZ3Z0L01h a2VmaWxlCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCA3ZjRlOGFkLi4xNGYyMmZjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTgzOCw2ICs4MzgsOCBAQCBzdGF0aWMgaW50IGk5MTVf ZHJpdmVyX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJ aW50ZWxfZGV2aWNlX2luZm9fZHVtcChkZXZfcHJpdik7CiAKKwlpOTE1X3BlcmZfaW5pdChkZXZf cHJpdik7CisKIAkvKiBOb3QgYWxsIHByZS1wcm9kdWN0aW9uIG1hY2hpbmVzIGZhbGwgaW50byB0 aGlzIGNhdGVnb3J5LCBvbmx5IHRoZQogCSAqIHZlcnkgZmlyc3Qgb25lcy4gQWxtb3N0IGV2ZXJ5 dGhpbmcgc2hvdWxkIHdvcmssIGV4Y2VwdCBmb3IgbWF5YmUKIAkgKiBzdXNwZW5kL3Jlc3VtZS4g QW5kIHdlIGRvbid0IGltcGxlbWVudCB3b3JrYXJvdW5kcyB0aGF0IGFmZmVjdCBvbmx5CkBAIC04 NTksNiArODYxLDcgQEAgZXJyX3dvcmtxdWV1ZXM6CiAgKi8KIHN0YXRpYyB2b2lkIGk5MTVfZHJp dmVyX2NsZWFudXBfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewor CWk5MTVfcGVyZl9maW5pKGRldl9wcml2KTsKIAlpOTE1X2dlbV9sb2FkX2NsZWFudXAoJmRldl9w cml2LT5kcm0pOwogCWk5MTVfd29ya3F1ZXVlc19jbGVhbnVwKGRldl9wcml2KTsKIH0KQEAgLTI1 NjAsNiArMjU2Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgaTkxNV9p b2N0bHNbXSA9IHsKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9VU0VSUFRSLCBpOTE1X2dl bV91c2VycHRyX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJ OTE1X0dFTV9DT05URVhUX0dFVFBBUkFNLCBpOTE1X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhU X1NFVFBBUkFNLCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsLCBEUk1fUkVOREVSX0FM TE9XKSwKKwlEUk1fSU9DVExfREVGX0RSVihJOTE1X1BFUkZfT1BFTiwgaTkxNV9wZXJmX29wZW5f aW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogfTsKIAogc3RhdGljIHN0cnVjdCBkcm1fZHJpdmVy IGRyaXZlciA9IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDFlMmRkYTguLjBmNWNkOGYg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtMTc0MCw2ICsxNzQwLDg0IEBAIHN0cnVjdCBp bnRlbF93bV9jb25maWcgewogCWJvb2wgc3ByaXRlc19zY2FsZWQ7CiB9OwogCitzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbTsKKworc3RydWN0IGk5MTVfcGVyZl9zdHJlYW1fb3BzIHsKKwkvKiBFbmFi bGVzIHRoZSBjb2xsZWN0aW9uIG9mIEhXIHNhbXBsZXMsIGVpdGhlciBpbiByZXNwb25zZSB0bwor CSAqIEk5MTVfUEVSRl9JT0NUTF9FTkFCTEUgb3IgaW1wbGljaXRseSBjYWxsZWQgd2hlbiBzdHJl YW0gaXMKKwkgKiBvcGVuZWQgd2l0aG91dCBJOTE1X1BFUkZfRkxBR19ESVNBQkxFRC4KKwkgKi8K Kwl2b2lkICgqZW5hYmxlKShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKTsKKworCS8q IERpc2FibGVzIHRoZSBjb2xsZWN0aW9uIG9mIEhXIHNhbXBsZXMsIGVpdGhlciBpbiByZXNwb25z ZSB0bworCSAqIEk5MTVfUEVSRl9JT0NUTF9ESVNBQkxFIG9yIGltcGxpY2l0bHkgY2FsbGVkIGJl Zm9yZQorCSAqIGRlc3Ryb3lpbmcgdGhlIHN0cmVhbS4KKwkgKi8KKwl2b2lkICgqZGlzYWJsZSko c3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSk7CisKKwkvKiBSZXR1cm46IHRydWUgaWYg YW55IGk5MTUgcGVyZiByZWNvcmRzIGFyZSByZWFkeSB0byByZWFkKCkKKwkgKiBmb3IgdGhpcyBz dHJlYW0uCisJICovCisJYm9vbCAoKmNhbl9yZWFkKShzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAq c3RyZWFtKTsKKworCS8qIENhbGwgcG9sbF93YWl0LCBwYXNzaW5nIGEgd2FpdCBxdWV1ZSB0aGF0 IHdpbGwgYmUgd29rZW4KKwkgKiBvbmNlIHRoZXJlIGlzIHNvbWV0aGluZyByZWFkeSB0byByZWFk KCkgZm9yIHRoZSBzdHJlYW0KKwkgKi8KKwl2b2lkICgqcG9sbF93YWl0KShzdHJ1Y3QgaTkxNV9w ZXJmX3N0cmVhbSAqc3RyZWFtLAorCQkJICBzdHJ1Y3QgZmlsZSAqZmlsZSwKKwkJCSAgcG9sbF90 YWJsZSAqd2FpdCk7CisKKwkvKiBGb3IgaGFuZGxpbmcgYSBibG9ja2luZyByZWFkLCB3YWl0IHVu dGlsIHRoZXJlIGlzIHNvbWV0aGluZworCSAqIHRvIHJlYWR5IHRvIHJlYWQoKSBmb3IgdGhlIHN0 cmVhbS4gRS5nLiB3YWl0IG9uIHRoZSBzYW1lCisJICogd2FpdCBxdWV1ZSB0aGF0IHdvdWxkIGJl IHBhc3NlZCB0byBwb2xsX3dhaXQoKSB1bnRpbAorCSAqIC0+Y2FuX3JlYWQoKSByZXR1cm5zIHRy dWUgKGlmIGl0cyBzYWZlIHRvIGNhbGwgLT5jYW5fcmVhZCgpCisJICogd2l0aG91dCB0aGUgaTkx NSBwZXJmIGxvY2sgaGVsZCkuCisJICovCisJaW50ICgqd2FpdF91bmxvY2tlZCkoc3RydWN0IGk5 MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSk7CisKKwkvKiByZWFkIC0gQ29weSBidWZmZXJlZCBtZXRy aWNzIGFzIHJlY29yZHMgdG8gdXNlcnNwYWNlCisJICogQGJ1ZjogdGhlIHVzZXJzcGFjZSwgZGVz dGluYXRpb24gYnVmZmVyCisJICogQGNvdW50OiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHks IHJlcXVlc3RlZCBieSB1c2Vyc3BhY2UKKwkgKiBAb2Zmc2V0OiB6ZXJvIGF0IHRoZSBzdGFydCBv ZiB0aGUgcmVhZCwgdXBkYXRlZCBhcyB0aGUgcmVhZAorCSAqICAgICAgICAgIHByb2NlZWRzLCBp dCByZXByZXNlbnRzIGhvdyBtYW55IGJ5dGVzIGhhdmUgYmVlbgorCSAqICAgICAgICAgIGNvcGll ZCBzbyBmYXIgYW5kIHRoZSBidWZmZXIgb2Zmc2V0IGZvciBjb3B5aW5nIHRoZQorCSAqICAgICAg ICAgIG5leHQgcmVjb3JkLgorCSAqCisJICogQ29weSBhcyBtYW55IGJ1ZmZlcmVkIGk5MTUgcGVy ZiBzYW1wbGVzIGFuZCByZWNvcmRzIGZvcgorCSAqIHRoaXMgc3RyZWFtIHRvIHVzZXJzcGFjZSBh cyB3aWxsIGZpdCBpbiB0aGUgZ2l2ZW4gYnVmZmVyLgorCSAqCisJICogT25seSB3cml0ZSBjb21w bGV0ZSByZWNvcmRzOyByZXR1cm5pbmcgLUVOT1NQQyBpZiB0aGVyZQorCSAqIGlzbid0IHJvb20g Zm9yIGEgY29tcGxldGUgcmVjb3JkLgorCSAqCisJICogUmV0dXJuIGFueSBlcnJvciBjb25kaXRp b24gdGhhdCByZXN1bHRzIGluIGEgc2hvcnQgcmVhZAorCSAqIHN1Y2ggYXMgLUVOT1NQQyBvciAt RUZBVUxULCBldmVuIHRob3VnaCB0aGVzZSBtYXkgYmUKKwkgKiBzcXVhc2hlZCBiZWZvcmUgcmV0 dXJuaW5nIHRvIHVzZXJzcGFjZS4KKwkgKi8KKwlpbnQgKCpyZWFkKShzdHJ1Y3QgaTkxNV9wZXJm X3N0cmVhbSAqc3RyZWFtLAorCQkgICAgY2hhciBfX3VzZXIgKmJ1ZiwKKwkJICAgIHNpemVfdCBj b3VudCwKKwkJICAgIHNpemVfdCAqb2Zmc2V0KTsKKworCS8qIENsZWFudXAgYW55IHN0cmVhbSBz cGVjaWZpYyByZXNvdXJjZXMuCisJICoKKwkgKiBUaGUgc3RyZWFtIHdpbGwgYWx3YXlzIGJlIGRp c2FibGVkIGJlZm9yZSB0aGlzIGlzIGNhbGxlZC4KKwkgKi8KKwl2b2lkICgqZGVzdHJveSkoc3Ry dWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSk7Cit9OworCitzdHJ1Y3QgaTkxNV9wZXJmX3N0 cmVhbSB7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2OworCisJc3RydWN0IGxp c3RfaGVhZCBsaW5rOworCisJdTMyIHNhbXBsZV9mbGFnczsKKworCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7CisJYm9vbCBlbmFibGVkOworCisJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW1f b3BzICpvcHM7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGRybV9k ZXZpY2UgZHJtOwogCkBAIC0yMDQwLDYgKzIxMTgsMTIgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgewogCiAJc3RydWN0IGk5MTVfcnVudGltZV9wbSBwbTsKIAorCXN0cnVjdCB7CisJCWJvb2wg aW5pdGlhbGl6ZWQ7CisJCXN0cnVjdCBtdXRleCBsb2NrOworCQlzdHJ1Y3QgbGlzdF9oZWFkIHN0 cmVhbXM7CisJfSBwZXJmOworCiAJLyogQWJzdHJhY3QgdGhlIHN1Ym1pc3Npb24gbWVjaGFuaXNt IChsZWdhY3kgcmluZ2J1ZmZlciBvciBleGVjbGlzdHMpIGF3YXkgKi8KIAlzdHJ1Y3QgewogCQl2 b2lkICgqcmVzdW1lKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsKQEAgLTM0NDUsNiArMzUy OSw5IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsIHZvaWQgKmRhdGEsCiBpbnQgaTkxNV9nZW1fY29udGV4dF9yZXNldF9zdGF0c19p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJCSAgICAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpOwogCitpbnQgaTkxNV9wZXJmX29wZW5faW9jdGwoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwor CiAvKiBpOTE1X2dlbV9ldmljdC5jICovCiBpbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX2V2aWN0 X3NvbWV0aGluZyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKIAkJCQkJICB1NjQgbWlu X3NpemUsIHU2NCBhbGlnbm1lbnQsCkBAIC0zNTU1LDYgKzM2NDIsMTAgQEAgaW50IGludGVsX2Vu Z2luZV9jbWRfcGFyc2VyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgICB1 MzIgYmF0Y2hfbGVuLAogCQkJICAgIGJvb2wgaXNfbWFzdGVyKTsKIAorLyogaTkxNV9wZXJmLmMg Ki8KK2V4dGVybiB2b2lkIGk5MTVfcGVyZl9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CitleHRlcm4gdm9pZCBpOTE1X3BlcmZfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOworCiAvKiBpOTE1X3N1c3BlbmQuYyAqLwogZXh0ZXJuIGludCBpOTE1 X3NhdmVfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGk5MTVfcmVz dG9yZV9zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wZXJm LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc1MzBmNQotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcGVyZi5jCkBAIC0wLDAgKzEsNDQ4 IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTUtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgorICoK KyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkg cGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0 ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0 aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRh dGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs IGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNv ZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlz IGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6 CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu b3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFsbCBiZSBpbmNsdWRl ZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorICogU29mdHdh cmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FS UkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElOQ0xVRElORyBCVVQg Tk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAorICogRklU TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gIElOIE5P IEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFC TEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVS IElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAq IEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBV U0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBdXRob3Jz OgorICogICBSb2JlcnQgQnJhZ2cgPHJvYmVydEBzaXhieW5pbmUub3JnPgorICovCisKKyNpbmNs dWRlIDxsaW51eC9hbm9uX2lub2Rlcy5oPgorI2luY2x1ZGUgPGxpbnV4L3NpemVzLmg+CisKKyNp bmNsdWRlICJpOTE1X2Rydi5oIgorCitzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMgeworCXUz MiBzYW1wbGVfZmxhZ3M7CisKKwl1NjQgc2luZ2xlX2NvbnRleHQ6MTsKKwl1NjQgY3R4X2hhbmRs ZTsKK307CisKK3N0YXRpYyBzc2l6ZV90IGk5MTVfcGVyZl9yZWFkX2xvY2tlZChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorCQkJCSAgICAgc3RydWN0IGZpbGUgKmZpbGUsCisJCQkJ ICAgICBjaGFyIF9fdXNlciAqYnVmLAorCQkJCSAgICAgc2l6ZV90IGNvdW50LAorCQkJCSAgICAg bG9mZl90ICpwcG9zKQoreworCS8qIE5vdGUgd2Uga2VlcCB0aGUgb2Zmc2V0IChha2EgYnl0ZXMg cmVhZCkgc2VwYXJhdGUgZnJvbSBhbnkKKwkgKiBlcnJvciBzdGF0dXMgc28gdGhhdCB0aGUgZmlu YWwgY2hlY2sgZm9yIHdoZXRoZXIgd2UgcmV0dXJuCisJICogdGhlIGJ5dGVzIHJlYWQgd2l0aCBh IGhpZ2hlciBwcmVjZWRlbmNlIHRoYW4gYW55IGVycm9yIChzZWUKKwkgKiBjb21tZW50IGJlbG93 KSBkb2Vzbid0IG5lZWQgdG8gYmUgaGFuZGxlZC9kdXBsaWNhdGVkIGluCisJICogc3RyZWFtLT5v cHMtPnJlYWQoKSBpbXBsZW1lbnRhdGlvbnMuCisJICovCisJc2l6ZV90IG9mZnNldCA9IDA7CisJ aW50IHJldCA9IHN0cmVhbS0+b3BzLT5yZWFkKHN0cmVhbSwgYnVmLCBjb3VudCwgJm9mZnNldCk7 CisKKwkvKiBJZiB3ZSd2ZSBzdWNjZXNzZnVsbHkgY29waWVkIGFueSBkYXRhIHRoZW4gcmVwb3J0 aW5nIHRoYXQKKwkgKiB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgYW55IGludGVybmFsIGVycm9yIHN0 YXR1cywgc28gdGhlCisJICogZGF0YSBpc24ndCBsb3N0LgorCSAqCisJICogRm9yIGV4YW1wbGUg cmV0IHdpbGwgYmUgLUVOT1NQQyB3aGVuZXZlciB0aGVyZSBpcyBtb3JlCisJICogYnVmZmVyZWQg ZGF0YSB0aGFuIGNhbiBiZSBjb3BpZWQgdG8gdXNlcnNwYWNlLCBidXQgdGhhdCdzCisJICogb25s eSBpbnRlcmVzdGluZyBpZiB3ZSB3ZXJlbid0IGFibGUgdG8gY29weSBzb21lIGRhdGEKKwkgKiBi ZWNhdXNlIGl0IGltcGxpZXMgdGhlIHVzZXJzcGFjZSBidWZmZXIgaXMgdG9vIHNtYWxsIHRvCisJ ICogcmVjZWl2ZSBhIHNpbmdsZSByZWNvcmQgKGFuZCB3ZSBuZXZlciBzcGxpdCByZWNvcmRzKS4K KwkgKgorCSAqIEFub3RoZXIgY2FzZSB3aXRoIHJldCA9PSAtRUZBVUxUIGlzIG1vcmUgb2YgYSBn cmV5IGFyZWEKKwkgKiBzaW5jZSBpdCB3b3VsZCBzZWVtIGxpa2UgYmFkIGZvcm0gZm9yIHVzZXJz cGFjZSB0byBhc2sgdXMKKwkgKiB0byBvdmVycnVuIGl0cyBidWZmZXIsIGJ1dCB0aGUgdXNlciBr bm93cyBiZXN0OgorCSAqCisJICogICBodHRwOi8veWFyY2hpdmUubmV0L2NvbXAvbGludXgvcGFy dGlhbF9yZWFkc193cml0ZXMuaHRtbAorCSAqLworCXJldHVybiBvZmZzZXQgPzogKHJldCA/OiAt RUFHQUlOKTsKK30KKworc3RhdGljIHNzaXplX3QgaTkxNV9wZXJmX3JlYWQoc3RydWN0IGZpbGUg KmZpbGUsCisJCQkgICAgICBjaGFyIF9fdXNlciAqYnVmLAorCQkJICAgICAgc2l6ZV90IGNvdW50 LAorCQkJICAgICAgbG9mZl90ICpwcG9zKQoreworCXN0cnVjdCBpOTE1X3BlcmZfc3RyZWFtICpz dHJlYW0gPSBmaWxlLT5wcml2YXRlX2RhdGE7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKwlzc2l6ZV90IHJldDsKKworCWlmICghKGZpbGUt PmZfZmxhZ3MgJiBPX05PTkJMT0NLKSkgeworCQkvKiBBbGxvdyBmYWxzZSBwb3NpdGl2ZXMgZnJv bSBzdHJlYW0tPm9wcy0+d2FpdF91bmxvY2tlZC4KKwkJICovCisJCWRvIHsKKwkJCXJldCA9IHN0 cmVhbS0+b3BzLT53YWl0X3VubG9ja2VkKHN0cmVhbSk7CisJCQlpZiAocmV0KQorCQkJCXJldHVy biByZXQ7CisKKwkJCW11dGV4X2xvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOworCQkJcmV0ID0g aTkxNV9wZXJmX3JlYWRfbG9ja2VkKHN0cmVhbSwgZmlsZSwKKwkJCQkJCSAgICBidWYsIGNvdW50 LCBwcG9zKTsKKwkJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBlcmYubG9jayk7CisJCX0gd2hp bGUgKHJldCA9PSAtRUFHQUlOKTsKKwl9IGVsc2UgeworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ cGVyZi5sb2NrKTsKKwkJcmV0ID0gaTkxNV9wZXJmX3JlYWRfbG9ja2VkKHN0cmVhbSwgZmlsZSwg YnVmLCBjb3VudCwgcHBvcyk7CisJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBlcmYubG9jayk7 CisJfQorCisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBpOTE1X3BlcmZf cG9sbF9sb2NrZWQoc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSwKKwkJCQkJICBzdHJ1 Y3QgZmlsZSAqZmlsZSwKKwkJCQkJICBwb2xsX3RhYmxlICp3YWl0KQoreworCXVuc2lnbmVkIGlu dCBzdHJlYW1zID0gMDsKKworCXN0cmVhbS0+b3BzLT5wb2xsX3dhaXQoc3RyZWFtLCBmaWxlLCB3 YWl0KTsKKworCWlmIChzdHJlYW0tPm9wcy0+Y2FuX3JlYWQoc3RyZWFtKSkKKwkJc3RyZWFtcyB8 PSBQT0xMSU47CisKKwlyZXR1cm4gc3RyZWFtczsKK30KKworc3RhdGljIHVuc2lnbmVkIGludCBp OTE1X3BlcmZfcG9sbChzdHJ1Y3QgZmlsZSAqZmlsZSwgcG9sbF90YWJsZSAqd2FpdCkKK3sKKwlz dHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtID0gZmlsZS0+cHJpdmF0ZV9kYXRhOworCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHN0cmVhbS0+ZGV2X3ByaXY7CisJaW50 IHJldDsKKworCW11dGV4X2xvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOworCXJldCA9IGk5MTVf cGVyZl9wb2xsX2xvY2tlZChzdHJlYW0sIGZpbGUsIHdhaXQpOworCW11dGV4X3VubG9jaygmZGV2 X3ByaXYtPnBlcmYubG9jayk7CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBpOTE1 X3BlcmZfZW5hYmxlX2xvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtKQorewor CWlmIChzdHJlYW0tPmVuYWJsZWQpCisJCXJldHVybjsKKworCS8qIEFsbG93IHN0cmVhbS0+b3Bz LT5lbmFibGUoKSB0byByZWZlciB0byB0aGlzICovCisJc3RyZWFtLT5lbmFibGVkID0gdHJ1ZTsK KworCWlmIChzdHJlYW0tPm9wcy0+ZW5hYmxlKQorCQlzdHJlYW0tPm9wcy0+ZW5hYmxlKHN0cmVh bSk7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfcGVyZl9kaXNhYmxlX2xvY2tlZChzdHJ1Y3QgaTkx NV9wZXJmX3N0cmVhbSAqc3RyZWFtKQoreworCWlmICghc3RyZWFtLT5lbmFibGVkKQorCQlyZXR1 cm47CisKKwkvKiBBbGxvdyBzdHJlYW0tPm9wcy0+ZGlzYWJsZSgpIHRvIHJlZmVyIHRvIHRoaXMg Ki8KKwlzdHJlYW0tPmVuYWJsZWQgPSBmYWxzZTsKKworCWlmIChzdHJlYW0tPm9wcy0+ZGlzYWJs ZSkKKwkJc3RyZWFtLT5vcHMtPmRpc2FibGUoc3RyZWFtKTsKK30KKworc3RhdGljIGxvbmcgaTkx NV9wZXJmX2lvY3RsX2xvY2tlZChzdHJ1Y3QgaTkxNV9wZXJmX3N0cmVhbSAqc3RyZWFtLAorCQkJ CSAgIHVuc2lnbmVkIGludCBjbWQsCisJCQkJICAgdW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3dp dGNoIChjbWQpIHsKKwljYXNlIEk5MTVfUEVSRl9JT0NUTF9FTkFCTEU6CisJCWk5MTVfcGVyZl9l bmFibGVfbG9ja2VkKHN0cmVhbSk7CisJCXJldHVybiAwOworCWNhc2UgSTkxNV9QRVJGX0lPQ1RM X0RJU0FCTEU6CisJCWk5MTVfcGVyZl9kaXNhYmxlX2xvY2tlZChzdHJlYW0pOworCQlyZXR1cm4g MDsKKwl9CisKKwlyZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIGxvbmcgaTkxNV9wZXJmX2lv Y3RsKHN0cnVjdCBmaWxlICpmaWxlLAorCQkJICAgIHVuc2lnbmVkIGludCBjbWQsCisJCQkgICAg dW5zaWduZWQgbG9uZyBhcmcpCit7CisJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSA9 IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBzdHJlYW0tPmRldl9wcml2OworCWxvbmcgcmV0OworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnBlcmYubG9jayk7CisJcmV0ID0gaTkxNV9wZXJmX2lvY3RsX2xvY2tlZChzdHJlYW0sIGNtZCwg YXJnKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5wZXJmLmxvY2spOworCisJcmV0dXJuIHJl dDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9wZXJmX2Rlc3Ryb3lfbG9ja2VkKHN0cnVjdCBpOTE1 X3BlcmZfc3RyZWFtICpzdHJlYW0pCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gc3RyZWFtLT5kZXZfcHJpdjsKKworCWlmIChzdHJlYW0tPmVuYWJsZWQpCisJCWk5MTVf cGVyZl9kaXNhYmxlX2xvY2tlZChzdHJlYW0pOworCisJaWYgKHN0cmVhbS0+b3BzLT5kZXN0cm95 KQorCQlzdHJlYW0tPm9wcy0+ZGVzdHJveShzdHJlYW0pOworCisJbGlzdF9kZWwoJnN0cmVhbS0+ bGluayk7CisKKwlpZiAoc3RyZWFtLT5jdHgpIHsKKwkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmRy bS5zdHJ1Y3RfbXV0ZXgpOworCQlpOTE1X2dlbV9jb250ZXh0X3B1dChzdHJlYW0tPmN0eCk7CisJ CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCX0KKworCWtmcmVl KHN0cmVhbSk7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9wZXJmX3JlbGVhc2Uoc3RydWN0IGlub2Rl ICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCit7CisJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0g KnN0cmVhbSA9IGZpbGUtPnByaXZhdGVfZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBzdHJlYW0tPmRldl9wcml2OworCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBl cmYubG9jayk7CisJaTkxNV9wZXJmX2Rlc3Ryb3lfbG9ja2VkKHN0cmVhbSk7CisJbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKKworCXJldHVybiAwOworfQorCisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGZvcHMgPSB7CisJLm93bmVyCQk9IFRISVNfTU9E VUxFLAorCS5sbHNlZWsJCT0gbm9fbGxzZWVrLAorCS5yZWxlYXNlCT0gaTkxNV9wZXJmX3JlbGVh c2UsCisJLnBvbGwJCT0gaTkxNV9wZXJmX3BvbGwsCisJLnJlYWQJCT0gaTkxNV9wZXJmX3JlYWQs CisJLnVubG9ja2VkX2lvY3RsCT0gaTkxNV9wZXJmX2lvY3RsLAorfTsKKworCitzdGF0aWMgc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKgorbG9va3VwX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LAorCSAgICAgICBzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpm aWxlX3ByaXYsCisJICAgICAgIHUzMiBjdHhfdXNlcl9oYW5kbGUpCit7CisJc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eDsKKwlpbnQgcmV0OworCisJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2lu dGVycnVwdGlibGUoJmRldl9wcml2LT5kcm0pOworCWlmIChyZXQpCisJCXJldHVybiBFUlJfUFRS KHJldCk7CisKKwljdHggPSBpOTE1X2dlbV9jb250ZXh0X2xvb2t1cChmaWxlX3ByaXYsIGN0eF91 c2VyX2hhbmRsZSk7CisJaWYgKCFJU19FUlIoY3R4KSkKKwkJaTkxNV9nZW1fY29udGV4dF9nZXQo Y3R4KTsKKworCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJ cmV0dXJuIGN0eDsKK30KKworaW50IGk5MTVfcGVyZl9vcGVuX2lvY3RsX2xvY2tlZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LAorCQkJCXN0cnVjdCBkcm1faTkxNV9wZXJmX29wZW5fcGFyYW0gKnBh cmFtLAorCQkJCXN0cnVjdCBwZXJmX29wZW5fcHJvcGVydGllcyAqcHJvcHMsCisJCQkJc3RydWN0 IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnNwZWNpZmljX2N0 eCA9IE5VTEw7CisJc3RydWN0IGk5MTVfcGVyZl9zdHJlYW0gKnN0cmVhbSA9IE5VTEw7CisJdW5z aWduZWQgbG9uZyBmX2ZsYWdzID0gMDsKKwlpbnQgc3RyZWFtX2ZkOworCWludCByZXQgPSAwOwor CisJaWYgKHByb3BzLT5zaW5nbGVfY29udGV4dCkgeworCQl1MzIgY3R4X2hhbmRsZSA9IHByb3Bz LT5jdHhfaGFuZGxlOworCQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYg PSBmaWxlLT5kcml2ZXJfcHJpdjsKKworCQlzcGVjaWZpY19jdHggPSBsb29rdXBfY29udGV4dChk ZXZfcHJpdiwgZmlsZV9wcml2LCBjdHhfaGFuZGxlKTsKKwkJaWYgKElTX0VSUihzcGVjaWZpY19j dHgpKSB7CisJCQlyZXQgPSBQVFJfRVJSKHNwZWNpZmljX2N0eCk7CisJCQlpZiAocmV0ICE9IC1F SU5UUikKKwkJCQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb29rIHVwIGNvbnRleHQgd2l0aCBJRCAl dSBmb3Igb3BlbmluZyBwZXJmIHN0cmVhbVxuIiwKKwkJCQkJICBjdHhfaGFuZGxlKTsKKwkJCWdv dG8gZXJyOworCQl9CisJfQorCisJaWYgKCFzcGVjaWZpY19jdHggJiYgIWNhcGFibGUoQ0FQX1NZ U19BRE1JTikpIHsKKwkJRFJNX0VSUk9SKCJJbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyB0byBvcGVu IHN5c3RlbS13aWRlIGk5MTUgcGVyZiBzdHJlYW1cbiIpOworCQlyZXQgPSAtRUFDQ0VTOworCQln b3RvIGVycl9jdHg7CisJfQorCisJc3RyZWFtID0ga3phbGxvYyhzaXplb2YoKnN0cmVhbSksIEdG UF9LRVJORUwpOworCWlmICghc3RyZWFtKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gZXJy X2N0eDsKKwl9CisKKwlzdHJlYW0tPnNhbXBsZV9mbGFncyA9IHByb3BzLT5zYW1wbGVfZmxhZ3M7 CisJc3RyZWFtLT5kZXZfcHJpdiA9IGRldl9wcml2OworCXN0cmVhbS0+Y3R4ID0gc3BlY2lmaWNf Y3R4OworCisJLyoKKwkgKiBUT0RPOiBzdXBwb3J0IHNhbXBsaW5nIHNvbWV0aGluZworCSAqCisJ ICogRm9yIG5vdyB0aGlzIGlzIGFzIGZhciBhcyB3ZSBjYW4gZ28uCisJICovCisJRFJNX0VSUk9S KCJVbnN1cHBvcnRlZCBpOTE1IHBlcmYgc3RyZWFtIGNvbmZpZ3VyYXRpb25cbiIpOworCXJldCA9 IC1FSU5WQUw7CisJZ290byBlcnJfYWxsb2M7CisKKwlsaXN0X2FkZCgmc3RyZWFtLT5saW5rLCAm ZGV2X3ByaXYtPnBlcmYuc3RyZWFtcyk7CisKKwlpZiAocGFyYW0tPmZsYWdzICYgSTkxNV9QRVJG X0ZMQUdfRkRfQ0xPRVhFQykKKwkJZl9mbGFncyB8PSBPX0NMT0VYRUM7CisJaWYgKHBhcmFtLT5m bGFncyAmIEk5MTVfUEVSRl9GTEFHX0ZEX05PTkJMT0NLKQorCQlmX2ZsYWdzIHw9IE9fTk9OQkxP Q0s7CisKKwlzdHJlYW1fZmQgPSBhbm9uX2lub2RlX2dldGZkKCJbaTkxNV9wZXJmXSIsICZmb3Bz LCBzdHJlYW0sIGZfZmxhZ3MpOworCWlmIChzdHJlYW1fZmQgPCAwKSB7CisJCXJldCA9IHN0cmVh bV9mZDsKKwkJZ290byBlcnJfb3BlbjsKKwl9CisKKwlpZiAoIShwYXJhbS0+ZmxhZ3MgJiBJOTE1 X1BFUkZfRkxBR19ESVNBQkxFRCkpCisJCWk5MTVfcGVyZl9lbmFibGVfbG9ja2VkKHN0cmVhbSk7 CisKKwlyZXR1cm4gc3RyZWFtX2ZkOworCitlcnJfb3BlbjoKKwlsaXN0X2RlbCgmc3RyZWFtLT5s aW5rKTsKKwlpZiAoc3RyZWFtLT5vcHMtPmRlc3Ryb3kpCisJCXN0cmVhbS0+b3BzLT5kZXN0cm95 KHN0cmVhbSk7CitlcnJfYWxsb2M6CisJa2ZyZWUoc3RyZWFtKTsKK2Vycl9jdHg6CisJaWYgKHNw ZWNpZmljX2N0eCkgeworCQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7 CisJCWk5MTVfZ2VtX2NvbnRleHRfcHV0KHNwZWNpZmljX2N0eCk7CisJCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCX0KK2VycjoKKwlyZXR1cm4gcmV0OworfQor CisvKiBOb3RlIHdlIGNvcHkgdGhlIHByb3BlcnRpZXMgZnJvbSB1c2Vyc3BhY2Ugb3V0c2lkZSBv ZiB0aGUgaTkxNSBwZXJmCisgKiBtdXRleCB0byBhdm9pZCBhbiBhd2t3YXJkIGxvY2tkZXAgd2l0 aCBtbWFwX3NlbS4KKyAqCisgKiBOb3RlIHRoaXMgZnVuY3Rpb24gb25seSB2YWxpZGF0ZXMgcHJv cGVydGllcyBpbiBpc29sYXRpb24gaXQgZG9lc24ndAorICogdmFsaWRhdGUgdGhhdCB0aGUgY29t YmluYXRpb24gb2YgcHJvcGVydGllcyBtYWtlcyBzZW5zZSBvciB0aGF0IGFsbAorICogcHJvcGVy dGllcyBuZWNlc3NhcnkgZm9yIGEgcGFydGljdWxhciBraW5kIG9mIHN0cmVhbSBoYXZlIGJlZW4g c2V0LgorICovCitzdGF0aWMgaW50IHJlYWRfcHJvcGVydGllc191bmxvY2tlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJICAgIHU2NCBfX3VzZXIgKnVwcm9wcywKKwkJ CQkgICAgdTMyIG5fcHJvcHMsCisJCQkJICAgIHN0cnVjdCBwZXJmX29wZW5fcHJvcGVydGllcyAq cHJvcHMpCit7CisJdTY0IF9fdXNlciAqdXByb3AgPSB1cHJvcHM7CisJaW50IGk7CisKKwltZW1z ZXQocHJvcHMsIDAsIHNpemVvZihzdHJ1Y3QgcGVyZl9vcGVuX3Byb3BlcnRpZXMpKTsKKworCWlm ICghbl9wcm9wcykgeworCQlEUk1fRVJST1IoIk5vIGk5MTUgcGVyZiBwcm9wZXJ0aWVzIGdpdmVu Iik7CisJCXJldHVybiAtRUlOVkFMOworCX0KKworCWlmIChuX3Byb3BzID4gRFJNX0k5MTVfUEVS Rl9QUk9QX01BWCkgeworCQlEUk1fRVJST1IoIk1vcmUgaTkxNSBwZXJmIHByb3BlcnRpZXMgc3Bl Y2lmaWVkIHRoYW4gZXhpc3QiKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJZm9yIChpID0g MDsgaSA8IG5fcHJvcHM7IGkrKykgeworCQl1NjQgaWQsIHZhbHVlOworCQlpbnQgcmV0OworCisJ CXJldCA9IGdldF91c2VyKGlkLCAodTY0IF9fdXNlciAqKXVwcm9wKTsKKwkJaWYgKHJldCkKKwkJ CXJldHVybiByZXQ7CisKKwkJaWYgKGlkID09IDAgfHwgaWQgPj0gRFJNX0k5MTVfUEVSRl9QUk9Q X01BWCkgeworCQkJRFJNX0VSUk9SKCJVbmtub3duIGk5MTUgcGVyZiBwcm9wZXJ0eSBJRCIpOwor CQkJcmV0dXJuIC1FSU5WQUw7CisJCX0KKworCQlyZXQgPSBnZXRfdXNlcih2YWx1ZSwgKHU2NCBf X3VzZXIgKil1cHJvcCArIDEpOworCQlpZiAocmV0KQorCQkJcmV0dXJuIHJldDsKKworCQlzd2l0 Y2ggKChlbnVtIGRybV9pOTE1X3BlcmZfcHJvcGVydHlfaWQpaWQpIHsKKwkJY2FzZSBEUk1fSTkx NV9QRVJGX1BST1BfQ1RYX0hBTkRMRToKKwkJCXByb3BzLT5zaW5nbGVfY29udGV4dCA9IDE7CisJ CQlwcm9wcy0+Y3R4X2hhbmRsZSA9IHZhbHVlOworCQkJYnJlYWs7CisKKwkJY2FzZSBEUk1fSTkx NV9QRVJGX1BST1BfTUFYOgorCQkJQlVHKCk7CisJCX0KKworCQl1cHJvcCArPSAyOworCX0KKwor CXJldHVybiAwOworfQorCitpbnQgaTkxNV9wZXJmX29wZW5faW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1 Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtICpwYXJhbSA9IGRhdGE7CisJc3RydWN0IHBlcmZf b3Blbl9wcm9wZXJ0aWVzIHByb3BzOworCXUzMiBrbm93bl9vcGVuX2ZsYWdzID0gMDsKKwlpbnQg cmV0OworCisJaWYgKCFkZXZfcHJpdi0+cGVyZi5pbml0aWFsaXplZCkgeworCQlEUk1fRVJST1Io Imk5MTUgcGVyZiBpbnRlcmZhY2Ugbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBzeXN0ZW0iKTsKKwkJ cmV0dXJuIC1FTk9UU1VQUDsKKwl9CisKKwlrbm93bl9vcGVuX2ZsYWdzID0gSTkxNV9QRVJGX0ZM QUdfRkRfQ0xPRVhFQyB8CisJCQkgICBJOTE1X1BFUkZfRkxBR19GRF9OT05CTE9DSyB8CisJCQkg ICBJOTE1X1BFUkZfRkxBR19ESVNBQkxFRDsKKwlpZiAocGFyYW0tPmZsYWdzICYgfmtub3duX29w ZW5fZmxhZ3MpIHsKKwkJRFJNX0VSUk9SKCJVbmtub3duIGRybV9pOTE1X3BlcmZfb3Blbl9wYXJh bSBmbGFnXG4iKTsKKwkJcmV0dXJuIC1FSU5WQUw7CisJfQorCisJcmV0ID0gcmVhZF9wcm9wZXJ0 aWVzX3VubG9ja2VkKGRldl9wcml2LAorCQkJCSAgICAgICB1NjRfdG9fdXNlcl9wdHIocGFyYW0t PnByb3BlcnRpZXNfcHRyKSwKKwkJCQkgICAgICAgcGFyYW0tPm51bV9wcm9wZXJ0aWVzLAorCQkJ CSAgICAgICAmcHJvcHMpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwltdXRleF9sb2Nr KCZkZXZfcHJpdi0+cGVyZi5sb2NrKTsKKwlyZXQgPSBpOTE1X3BlcmZfb3Blbl9pb2N0bF9sb2Nr ZWQoZGV2LCBwYXJhbSwgJnByb3BzLCBmaWxlKTsKKwltdXRleF91bmxvY2soJmRldl9wcml2LT5w ZXJmLmxvY2spOworCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBpOTE1X3BlcmZfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJSU5JVF9MSVNUX0hFQUQoJmRldl9w cml2LT5wZXJmLnN0cmVhbXMpOworCW11dGV4X2luaXQoJmRldl9wcml2LT5wZXJmLmxvY2spOwor CisJZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSB0cnVlOworfQorCit2b2lkIGk5MTVfcGVy Zl9maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlpZiAoIWRldl9w cml2LT5wZXJmLmluaXRpYWxpemVkKQorCQlyZXR1cm47CisKKwkvKiBDdXJyZW50bHkgbm90aGlu ZyB0byBjbGVhbiB1cCAqLworCisJZGV2X3ByaXYtPnBlcmYuaW5pdGlhbGl6ZWQgPSBmYWxzZTsK K30KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAppbmRleCAwMzcyNWZlLi43N2ZlNzliIDEwMDY0NAotLS0gYS9pbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CkBAIC0yNTgsNiArMjU4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNk ZWZpbmUgRFJNX0k5MTVfR0VNX1VTRVJQVFIJCTB4MzMKICNkZWZpbmUgRFJNX0k5MTVfR0VNX0NP TlRFWFRfR0VUUEFSQU0JMHgzNAogI2RlZmluZSBEUk1fSTkxNV9HRU1fQ09OVEVYVF9TRVRQQVJB TQkweDM1CisjZGVmaW5lIERSTV9JOTE1X1BFUkZfT1BFTgkJMHgzNgogCiAjZGVmaW5lIERSTV9J T0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklU LCBkcm1faTkxNV9pbml0X3QpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0ZMVVNICQlEUk1fSU8g KCBEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfRkxVU0gpCkBAIC0zMTEsNiArMzEyLDcgQEAg dHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVf R0VNX1VTRVJQVFIJCQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9V U0VSUFRSLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3VzZXJwdHIpCiAjZGVmaW5lIERSTV9JT0NUTF9J OTE1X0dFTV9DT05URVhUX0dFVFBBUkFNCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k5MTVfR0VNX0NPTlRFWFRfR0VUUEFSQU0sIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9w YXJhbSkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfU0VUUEFSQU0JRFJNX0lP V1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9TRVRQQVJBTSwgc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9Q RVJGX09QRU4JRFJNX0lPUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVSRl9PUEVOLCBz dHJ1Y3QgZHJtX2k5MTVfcGVyZl9vcGVuX3BhcmFtKQogCiAvKiBBbGxvdyBkcml2ZXJzIHRvIHN1 Ym1pdCBiYXRjaGJ1ZmZlcnMgZGlyZWN0bHkgdG8gaGFyZHdhcmUsIHJlbHlpbmcKICAqIG9uIHRo ZSBzZWN1cml0eSBtZWNoYW5pc21zIHByb3ZpZGVkIGJ5IGhhcmR3YXJlLgpAQCAtMTIyMiw2ICsx MjI0LDcxIEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAJX191NjQgdmFs dWU7CiB9OwogCitlbnVtIGRybV9pOTE1X3BlcmZfcHJvcGVydHlfaWQgeworCS8qKgorCSAqIE9w ZW4gdGhlIHN0cmVhbSBmb3IgYSBzcGVjaWZpYyBjb250ZXh0IGhhbmRsZSAoYXMgdXNlZCB3aXRo CisJICogZXhlY2J1ZmZlcjIpLiBBIHN0cmVhbSBvcGVuZWQgZm9yIGEgc3BlY2lmaWMgY29udGV4 dCB0aGlzIHdheQorCSAqIHdvbid0IHR5cGljYWxseSByZXF1aXJlIHJvb3QgcHJpdmlsZWdlcy4K KwkgKi8KKwlEUk1fSTkxNV9QRVJGX1BST1BfQ1RYX0hBTkRMRSA9IDEsCisKKwlEUk1fSTkxNV9Q RVJGX1BST1BfTUFYIC8qIG5vbi1BQkkgKi8KK307CisKK3N0cnVjdCBkcm1faTkxNV9wZXJmX29w ZW5fcGFyYW0geworCV9fdTMyIGZsYWdzOworI2RlZmluZSBJOTE1X1BFUkZfRkxBR19GRF9DTE9F WEVDCSgxPDwwKQorI2RlZmluZSBJOTE1X1BFUkZfRkxBR19GRF9OT05CTE9DSwkoMTw8MSkKKyNk ZWZpbmUgSTkxNV9QRVJGX0ZMQUdfRElTQUJMRUQJCSgxPDwyKQorCisJLyoqIFRoZSBudW1iZXIg b2YgdTY0IChpZCwgdmFsdWUpIHBhaXJzICovCisJX191MzIgbnVtX3Byb3BlcnRpZXM7CisKKwkv KioKKwkgKiBQb2ludGVyIHRvIGFycmF5IG9mIHU2NCAoaWQsIHZhbHVlKSBwYWlycyBjb25maWd1 cmluZyB0aGUgc3RyZWFtCisJICogdG8gb3Blbi4KKwkgKi8KKwlfX3U2NCBfX3VzZXIgcHJvcGVy dGllc19wdHI7Cit9OworCisjZGVmaW5lIEk5MTVfUEVSRl9JT0NUTF9FTkFCTEUJX0lPKCdpJywg MHgwKQorI2RlZmluZSBJOTE1X1BFUkZfSU9DVExfRElTQUJMRQlfSU8oJ2knLCAweDEpCisKKy8q KgorICogQ29tbW9uIHRvIGFsbCBpOTE1IHBlcmYgcmVjb3JkcworICovCitzdHJ1Y3QgZHJtX2k5 MTVfcGVyZl9yZWNvcmRfaGVhZGVyIHsKKwlfX3UzMiB0eXBlOworCV9fdTE2IHBhZDsKKwlfX3Ux NiBzaXplOworfTsKKworZW51bSBkcm1faTkxNV9wZXJmX3JlY29yZF90eXBlIHsKKworCS8qKgor CSAqIFNhbXBsZXMgYXJlIHRoZSB3b3JrIGhvcnNlIHJlY29yZCB0eXBlIHdob3NlIGNvbnRlbnRz IGFyZSBleHRlbnNpYmxlCisJICogYW5kIGRlZmluZWQgd2hlbiBvcGVuaW5nIGFuIGk5MTUgcGVy ZiBzdHJlYW0gYmFzZWQgb24gdGhlIGdpdmVuCisJICogcHJvcGVydGllcy4KKwkgKgorCSAqIEJv b2xlYW4gcHJvcGVydGllcyBmb2xsb3dpbmcgdGhlIG5hbWluZyBjb252ZW50aW9uCisJICogRFJN X0k5MTVfUEVSRl9TQU1QTEVfeHl6X1BST1AgcmVxdWVzdCB0aGUgaW5jbHVzaW9uIG9mICd4eXon IGRhdGEgaW4KKwkgKiBldmVyeSBzYW1wbGUuCisJICoKKwkgKiBUaGUgb3JkZXIgb2YgdGhlc2Ug c2FtcGxlIHByb3BlcnRpZXMgZ2l2ZW4gYnkgdXNlcnNwYWNlIGhhcyBubworCSAqIGFmZmVjdCBv biB0aGUgb3JkZXJpbmcgb2YgZGF0YSB3aXRoaW4gYSBzYW1wbGUuIFRoZSBvcmRlciB3aWxsIGJl CisJICogZG9jdW1lbnRlZCBoZXJlLgorCSAqCisJICogc3RydWN0IHsKKwkgKiAgICAgc3RydWN0 IGRybV9pOTE1X3BlcmZfcmVjb3JkX2hlYWRlciBoZWFkZXI7CisJICoKKwkgKiAgICAgVE9ETzog aXRlbWl6ZSBleHRlbnNpYmxlIHNhbXBsZSBkYXRhIGhlcmUKKwkgKiB9OworCSAqLworCURSTV9J OTE1X1BFUkZfUkVDT1JEX1NBTVBMRSA9IDEsCisKKwlEUk1fSTkxNV9QRVJGX1JFQ09SRF9NQVgg Lyogbm9uLUFCSSAqLworfTsKKwogI2lmIGRlZmluZWQoX19jcGx1c3BsdXMpCiB9CiAjZW5kaWYK LS0gCjIuOS4yCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK