From mboxrd@z Thu Jan 1 00:00:00 1970 From: Todd Previte Subject: [PATCH 4/9] drm/i915: Add debugfs functions for Displayport compliance testing Date: Wed, 18 Feb 2015 20:00:32 -0700 Message-ID: <1424314837-32434-5-git-send-email-tprevite@gmail.com> References: <1424314837-32434-1-git-send-email-tprevite@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-pd0-f182.google.com (mail-pd0-f182.google.com [209.85.192.182]) by gabe.freedesktop.org (Postfix) with ESMTP id E9DBA6E51D for ; Wed, 18 Feb 2015 19:00:51 -0800 (PST) Received: by pdjz10 with SMTP id z10so5709517pdj.0 for ; Wed, 18 Feb 2015 19:00:51 -0800 (PST) In-Reply-To: <1424314837-32434-1-git-send-email-tprevite@gmail.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 List-Id: intel-gfx@lists.freedesktop.org VGhpcyBwYXRjaCBpcyB0aGUgYW1hbGdhbWF0aW9uIG9mIDcgcGF0Y2hlcyBmcm9tIHRoZSBWMiBz ZXJpZXMuIFRoZXNlCnBhdGNoZXMgYWxsIGludm9sdmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRo ZSBkZWJ1Z2ZzIG1lY2hhbmlzbSBmb3IKaGFuZGxpbmcgRGlzcGxheXBvcnQgY29tcGxpYW5jZSB0 ZXN0aW5nLiBUaGUgZm9sbG93aW5nIGFyZSB0aGUgY29tbWl0Cm1lc3NhZ2VzIGZyb20gdGhvc2Ug NyBwYXRjaGVzIChpbmNsdWRlZCBoZXJlIHRvIHRyeSBhbmQgcHJlc2VydmUgdGhlCnBhdGNoIHNl dCBoaXN0b3J5KToKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KW1BBVENIIDA0LzE3XSBkcm0vaTkx NTogQWRkIGRlYnVnZnMgaW5mb3JtYXRpb24gZm9yIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UKICAg ICAgICAgICAgICB0ZXN0aW5nCgpPcmlnaW5hbGx5LCB0aGlzIHBhdGNoIHdhcyBwYXJ0IG9mICJb UEFUQ0ggMDUvMTBdIGRybS9pOTE1OiBBZGQgZGVidWdmcwppbnRlcmZhY2UgZm9yIERpc3BsYXlw b3J0IGRlYnVnIGFuZCBjb21wbGlhbmNlIHRlc3RpbmciLiAgSXQgY29udGFpbmVkCmRlZmluaXRp b25zL2RlY2xhcmF0aW9ucyBmb3Igc29tZSBvZiB0aGUgY29uc3RhbnRzIGFuZCBkYXRhIHN0cnVj dHVyZXMKYWRkZWQgdG8gc3VwcG9ydCBkZWJ1Z2ZzIG91dHB1dCBmb3IgRGlzcGxheXBvcnQgY29t cGxpYW5jZQp0ZXN0aW5nLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCltQQVRDSCAwNS8xN10gZHJt L2k5MTU6IEFkZCBmaWxlIG9wcyBmb3IgRGlzcGxheXBvcnQgY29uZmlndXJhdGlvbiBpbiBkZWJ1 Z2ZzCgpUaGlzIHBhdGNoIHdhcyBhbHNvIHBhcnQgb2YgIltQQVRDSCAwNS8xMF0gZHJtL2k5MTU6 IEFkZCBkZWJ1Z2ZzIGludGVyZmFjZQpmb3IgRGlzcGxheXBvcnQgZGVidWcgYW5kIGNvbXBsaWFu Y2UgdGVzdGluZyIuIFRoaXMgb25lIGFkZGVkIGZpbGUgb3BlcmF0aW9ucwpzdHJ1Y3R1cmVzIGZv ciBEaXNwbGF5cG9ydCBjb25maWd1cmF0aW9uIGFuZCB0aGUgZGVjbGFyYXRpb25zIGZvciBvcGVu KCkgYW5kCndyaXRlKCkgaW4gdGhlIGZpbGUgb3BzIHN0cnVjdHVyZS4KLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpbUEFUQ0ggMDYvMTddIGRybS9pOTE1OiBBZGQgc3VwcG9ydCBmdW5jdGlvbnMgaW4g ZGVidWdmcyBmb3IgaGFuZGxpbmcKICAgICAgICAgICAgICBEaXNwbGF5cG9ydCBjb21wbGlhbmNl IGNvbmZpZ3VyYXRpb24KClRoaXMgcGF0Y2ggd2FzIHByZXZpb3VzbHkgcGFydCBvZiAiW1BBVENI IDA1LzEwXSBkcm0vaTkxNTogQWRkIGRlYnVnZnMgaW50ZXJmYWNlCmZvciBEaXNwbGF5cG9ydCBk ZWJ1ZyAgYW5kIGNvbXBsaWFuY2UgdGVzdGluZyIuIEl0IGFkZGVkIHR3byBzdXBwb3J0IGZ1bmN0 aW9ucwpmb3IgaGFuZGxpbmcgRGlzcGxheXBvcnQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIHRo YXQgYXJlIHVzZWQgZm9yIGNvbXBsaWFuY2UKdGVzdGluZy4KLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpbUEFUQ0ggMDcvMTddIGRybS9pOTE1OiBBZGQgYW5kIGltcGxlbWVudCB0aGUgZGVidWdmcyAn c2hvdycgZnVuY3Rpb25zIGZvcgogICAgICAgICAgICAgIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UK ClRoaXMgcGF0Y2ggd2FzIHByZXZpb3VzbHkgcGFydCBvZiAiW1BBVENIIDA1LzEwXSBkcm0vaTkx NTogQWRkIGRlYnVnZnMKaW50ZXJmYWNlIGZvciBEaXNwbGF5cG9ydCBkZWJ1ZyBhbmQgY29tcGxp YW5jZSB0ZXN0aW5nIi4gVGhpcyBwYXRjaCBpbXBsZW1lbnRlZAp0aGUgc2hvdygpIGZ1bmN0aW9u LgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCltQQVRDSCAwOC8xN10gZHJtL2k5MTU6IEFkZCBEaXNw bGF5cG9ydCBsaW5rIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlCgpUaGlzIHBhdGNoIHdhcyBwcmV2 aW91c2x5IHBhcnQgb2YgIltQQVRDSCAwNy8xMF0gZHJtL2k5MTU6IEFkZCBzdHJ1Y3R1cmVzIGZv cgpEaXNwbGF5cG9ydCBjb21wbGlhbmNlIHRlc3RpbmcgcGFyYW1ldGVycyIuIEl0IGFkZGVkIGEg c3RydWN0IHRvIG1haW50YWluIGxpbmsKY29uZmlndXJhdGlvbiBkYXRhLiBUaGVzZSB3ZXJlIG1l YW50IHB1cmVseSBmb3IgRGlzcGxheXBvcnQgY29tcGxpYW5jZSB1c2UuCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KW1BBVENIIDA5LzE3XSBkcm0vaTkxNTogQWRkIGNvbmZpZyBwYXJzaW5nIHV0aWxp dGllcyBpbiBkZWJ1Z2ZzIGZvciBEaXNwbGF5cG9ydAogICAgICAgICAgICAgIGNvbXBsaWFuY2UK ClRoaXMgcGF0Y2ggd2FzIHByZXZpb3VzbHkgcGFydCBvZiAiW1BBVENIIDA1LzEwXSBkcm0vaTkx NTogQWRkIGRlYnVnZnMKaW50ZXJmYWNlIGZvciBEaXNwbGF5cG9ydCBkZWJ1ZyBhbmQgY29tcGxp YW5jZSB0ZXN0aW5nIi4gVGhpcyBwYXRjaCBhZGRzIHR3bwpmdW5jdGlvbnMgdG8gaGFuZGxlIHBh cnNpbmcgb2YgRGlzcGxheXBvcnQgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhcyBpdApmb3Jt YXR0ZWQgaW4gdGhlIGRlYnVnZnMgZmlsZS4gSXQgaXMgdXNlZCB0byBwcm9jZXNzIGluY29taW5n IGNvbmZpZ3VyYXRpb24KY2hhbmdlcyBmcm9tIHRoZSB1c2Vyc3BhY2UgY29tcGxpYW5jZSBhcHBs aWNhdGlvbiBkdXJpbmcgdGVzdGluZy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KW1BBVENIIDEw LzE3XSBkcm0vaTkxNTogSW1wbGVtZW50IHRoZSAnb3BlbicgYW5kICd3cml0ZScgZGVidWdmcyBm dW5jdGlvbnMgZm9yCiAgICAgICAgICAgICAgRGlzcGxheXBvcnQgY29tcGxpYW5jZQoKVGhpcyBw YXRjaCBpcyBhIGNvbWJpbmF0aW9uIG9mIHNlY3Rpb25zIG91dCBvZiB0aGUgZm9sbG93aW5nIHR3 byBwcmV2aW91cwpwYXRjaGVzOgpbUEFUQ0ggMDUvMTBdIGRybS9pOTE1OiBBZGQgZGVidWdmcyBp bnRlcmZhY2UgZm9yIERpc3BsYXlwb3J0IGRlYnVnIGFuZApjb21wbGlhbmNlIHRlc3RpbmcKW1BB VENIIDA3LzEwXSBkcm0vaTkxNTogQWRkIHN0cnVjdHVyZXMgZm9yIERpc3BsYXlwb3J0IGNvbXBs aWFuY2UgdGVzdGluZwpwYXJhbWV0ZXJzCgpUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGRlYnVn ZnMgZnVuY3Rpb25zIGZvciAnb3BlbicgYW5kICd3cml0ZScgYXMgdGhleQphcmUgc3BlY2lmaWVk IGluIHRoZSBmaWxlIG9wcyBzdHJ1Y3R1cmUuIFRoZSAnb3BlbicgZnVuY3Rpb24gb3V0cHV0cwpE aXNwbGF5cG9ydCBkYXRhIHRvIHRoZSBhcHByb3ByaWF0ZSBkZWJ1Z2ZzIGZpbGUgd2hpbGUgdGhl ICd3cml0ZScgZnVuY3Rpb24KaGFuZGxlcyBwYXJzaW5nIG9mIHVzZXIgZGF0YSB3cml0dGVuIHRv IHRoYXQgc2FtZSBmaWxlLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpUaGUgbmF0dXJlIGFuZCBz Y29wZSBvZiB0aGUgY29udGVudHMgb2YgdGhpcyBwYXRjaCBtYWtlIGJyZWFraW5nIGl0IGludG8K c21hbGxlciBjaHVua3MgZGlmZmljdWx0LiBXaXRoIGV2ZXJ0aGluZyBjb250YWluZWQgaW4gYSBz aW5nbGUgcGF0Y2gsIHRoZQpjb2RlIGlzIGVhc2llciB0byByZXZpZXcgYW5kIHVuZGVyc3RhbmQu CgpUaGF0IHNhaWQsIHRoaXMgbW9uc3RlciBvZiBhIHBhdGNoIGRvZXMgcXVpdGUgYSBmZXcgdGhp bmdzLiBGaXJzdCwgaXQgYWRkcwpzb21lIG5lY2Vzc2FyeSBkYXRhIHN0cnVjdHVyZXMgZm9yIHBl cmZvcm1pbmcgY29tcGxpYW5jZSB0ZXN0aW5nIG9wZXJhdGlvbnMKb24gdGhlIGtlcm5lbCBzaWRl LiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgbGluayBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYW5k CnN0cmluZyB0b2tlbnMgZm9yIHRoZSBkZWJ1Z2ZzIGZpbGVzLiBUaGVyZSBhcmUgbXVsdGlwbGUg dXRpbGl0eSBmdW5jdGlvbnMKYWRkZWQgaGVyZSBhcyB3ZWxsIGluIHN1cHBvcnQgb2YgdGhlIGRl YnVnZnMgc3lzdGVtIGZvciBoYW5kbGluZyBjb21wbGlhbmNlCnRlc3RpbmcuIEZ1bmN0aW9ucyBm b3IgcHJpbnRpbmcgc3RyaW5ncyB0byB0aGUgZmlsZXMgd2l0aCB0aGUgY29ycmVjdCBmb3JtYXQs CnBhcnNpbmcgdG9rZW5zLCB0b2tlbml6aW5nIHN0cmluZ3MgYW5kIGRvaW5nIHRoZSBncnVudCB3 b3JrIGZvciB3cml0aW5nIHRoZQpkYXRhIHRvIHRoZSBkZWJ1Z2ZzIGZpbGVzLgoKVGhpcyBwYXRj aCBhbHNvIGFkZHMgdGhlIGJhc2ljIGRlYnVnZnMgc3RydWN0dXJlcyB0byBidWlsZCB0aGUgZmls ZSBmb3IgdGhlCmxpbmsgY29uZmlndXJhdGlvbiBvdXRwdXQgYXMgd2VsbCBhcyB0aGUgZmlsZSBv cGVyYXRpb25zIHN0cnVjdHVyZXMgdG8gaGFuZGxlCnRoZSBvcGVuIGFuZCBzaG93IGZ1bmN0aW9u cy4KClYyOgotIE4vQQpWMzoKLSBNZXJnZWQgcGF0Y2hlcyA0LTEwIGludG8gYSBzaW5nbGUgcGF0 Y2ggcGVyIHJldmlldyBmZWVkYmFjawotIEFkZGVkIHByZXZpb3VzIGNvbW1pdCBtZXNzYWdlcyBm cm9tIHRoZSBvdGhlciBjb21taXRzIGludGVncmF0ZWQKICBoZXJlIHRvIHByZXNlcnZlIHRoZSBp bnRlZ3JpdHkgb2YgdGhlIHBhdGNoIHNlcXVlbmNlCi0gQWRqdXN0ZWQgdGhlIGNvbmZpZ19jdGxf d3JpdGUgZnVuY3Rpb24gdG8gb25seSBjaGVjayB0aGUgZHJtX2Nvbm5lY3RvcgogIHN0cnVjdCBm b3IgYSkgdHlwZSA9PSBEaXNwbGF5cG9ydCBhbmQgYikgc3RhdHVzID09IGFjdGl2ZS4gVGhpcyBp cwogIHRvIGVsaW1pbmF0ZSBwYXRjaGVzIDE0IGFuZCAxNSBmcm9tIFYyLCB3aGljaCBiZWNvbWUg dW5uZWNlc3NhcnkKICBpbiBsaWdodCBvZiB0aGlzIGNoYW5nZS4KLSBGaXhlZCBjaGVja3BhdGNo LnBsIGVycm9ycwoKU2lnbmVkLW9mZi1ieTogVG9kZCBQcmV2aXRlIDx0cHJldml0ZUBnbWFpbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgfCA0NzEgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICB8ICAxMyArCiAyIGZpbGVzIGNoYW5nZWQsIDQ4NCBpbnNlcnRpb25zKCspCgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCBiMzE1ZjAxLi5iNzc1NzRlIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg PGxpbnV4L3NsYWIuaD4KICNpbmNsdWRlIDxsaW51eC9leHBvcnQuaD4KICNpbmNsdWRlIDxsaW51 eC9saXN0X3NvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9zdHJpbmcuaD4KICNpbmNsdWRlIDxhc20v bXNyLWluZGV4Lmg+CiAjaW5jbHVkZSA8ZHJtL2RybVAuaD4KICNpbmNsdWRlICJpbnRlbF9kcnYu aCIKQEAgLTUxLDYgKzUyLDEyMSBAQCBzdGF0aWMgY29uc3QgY2hhciAqeWVzbm8oaW50IHYpCiAJ cmV0dXJuIHYgPyAieWVzIiA6ICJubyI7CiB9CiAKKyNkZWZpbmUgTUFYX0RQX0NPTkZJR19MSU5F X0NPVU5UCTY0CisKK2VudW0gZHBfY29uZmlnX3BhcmFtIHsKKwlEUF9DT05GSUdfUEFSQU1fQ09O TkVDVE9SID0gMCwKKwlEUF9DT05GSUdfUEFSQU1fQ09OTkVDVE9SX0lELAorCURQX0NPTkZJR19Q QVJBTV9MSU5LX1JBVEUsCisJRFBfQ09ORklHX1BBUkFNX0xBTkVfQ09VTlQsCisJRFBfQ09ORklH X1BBUkFNX1ZPTFRBR0VfU1dJTkcsCisJRFBfQ09ORklHX1BBUkFNX1BSRUVNUEhBU0lTLAorCURQ X0NPTkZJR19QQVJBTV9IUkVTLAorCURQX0NPTkZJR19QQVJBTV9WUkVTLAorCURQX0NPTkZJR19Q QVJBTV9CUFAsCisJRFBfUEFSQU1FVEVSX0NPVU5ULAorCURQX0NPTkZJR19QQVJBTV9JTlZBTElE ID0gLTEKK307CisKK3N0cnVjdCBkcF9jb25maWcgeworCWVudW0gZHBfY29uZmlnX3BhcmFtIHR5 cGU7CisJdW5zaWduZWQgbG9uZyB2YWx1ZTsKK307CisKK3N0YXRpYyBjaGFyICpkcF9nZXRfY29u ZmlnX3N0cihpbnQgZm9yX3Rva2VuKQoreworCWNoYXIgKnM7CisKKwlzd2l0Y2ggKGZvcl90b2tl bikgeworCWNhc2UgRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUjoKKwkJcyA9ICJDb25uZWN0b3Ii OworCQlicmVhazsKKwljYXNlIERQX0NPTkZJR19QQVJBTV9DT05ORUNUT1JfSUQ6CisJCXMgPSAi Q29ubmVjdG9yIElEIjsKKwkJYnJlYWs7CisJY2FzZSBEUF9DT05GSUdfUEFSQU1fTElOS19SQVRF OgorCQlzID0gIkxpbmsgUmF0ZSI7CisJCWJyZWFrOworCWNhc2UgRFBfQ09ORklHX1BBUkFNX0xB TkVfQ09VTlQ6CisJCXMgPSAiTGFuZSBDb3VudCI7CisJCWJyZWFrOworCWNhc2UgRFBfQ09ORklH X1BBUkFNX1ZPTFRBR0VfU1dJTkc6CisJCXMgPSAiVm9sdGFnZSBTd2luZyBMZXZlbCI7CisJCWJy ZWFrOworCWNhc2UgRFBfQ09ORklHX1BBUkFNX1BSRUVNUEhBU0lTOgorCQlzID0gIlByZWVtcGhh c2lzIExldmVsIjsKKwkJYnJlYWs7CisJY2FzZSBEUF9DT05GSUdfUEFSQU1fSFJFUzoKKwkJcyA9 ICJIb3Jpem9udGFsIFJlc29sdXRpb24iOworCQlicmVhazsKKwljYXNlIERQX0NPTkZJR19QQVJB TV9WUkVTOgorCQlzID0gIlZlcnRpY2FsIFJlc29sdXRpb24iOworCQlicmVhazsKKwljYXNlIERQ X0NPTkZJR19QQVJBTV9CUFA6CisJCXMgPSAiQml0cyBQZXIgUGl4ZWwiOworCQlicmVhazsKKwlk ZWZhdWx0OgorCQlzID0gIiI7CisJCWJyZWFrOworCX0KKworCXJldHVybiBzOworfQorCitzdGF0 aWMgdm9pZCBkcF9wcmludF9zdHJpbmcoc3RydWN0IHNlcV9maWxlICptLAorCQkJICAgIGVudW0g ZHBfY29uZmlnX3BhcmFtIGZvcl9wYXJhbSwKKwkJCSAgICB2b2lkICpkYXRhKQoreworCWNoYXIg KmZvcm1hdF9zdHJpbmc7CisJdW5zaWduZWQgbG9uZyBvdXRwdXRfdmFsdWU7CisKKwlzd2l0Y2gg KGZvcl9wYXJhbSkgeworCWNhc2UgRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUjoKKwkJLyogU3Bl Y2lhbCBjYXNlIGZvciB0aGUgc3RyaW5nIHBhcmFtZXRlciAqLworCQlmb3JtYXRfc3RyaW5nID0g IkNvbm5lY3RvcjogICAgICAgICAgICAgJXNcbiI7CisJCXNlcV9wcmludGYobSwgZm9ybWF0X3N0 cmluZywgKGNoYXIgKikgZGF0YSk7CisJCWJyZWFrOworCWNhc2UgRFBfQ09ORklHX1BBUkFNX0NP Tk5FQ1RPUl9JRDoKKwkJZm9ybWF0X3N0cmluZyA9ICJDb25uZWN0b3IgSUQ6ICAgICAgICAgICV1 XG4iOworCQlvdXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVkIGludCAqKSBkYXRhOworCQlicmVhazsK KwljYXNlIERQX0NPTkZJR19QQVJBTV9MSU5LX1JBVEU6CisJCWZvcm1hdF9zdHJpbmcgPSAiTGlu ayBSYXRlOiAgICAgICAgICAgICAlMDJ4XG4iOworCQlvdXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVk IGNoYXIgKikgZGF0YTsKKwkJYnJlYWs7CisJY2FzZSBEUF9DT05GSUdfUEFSQU1fTEFORV9DT1VO VDoKKwkJZm9ybWF0X3N0cmluZyA9ICJMYW5lIENvdW50OiAgICAgICAgICAgICV1XG4iOworCQlv dXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVkIGludCAqKSBkYXRhOworCQlicmVhazsKKwljYXNlIERQ X0NPTkZJR19QQVJBTV9WT0xUQUdFX1NXSU5HOgorCQlmb3JtYXRfc3RyaW5nID0gIlZvbHRhZ2Ug U3dpbmcgTGV2ZWw6ICAgJXVcbiI7CisJCW91dHB1dF92YWx1ZSA9ICoodW5zaWduZWQgY2hhciAq KSBkYXRhOworCQlicmVhazsKKwljYXNlIERQX0NPTkZJR19QQVJBTV9QUkVFTVBIQVNJUzoKKwkJ Zm9ybWF0X3N0cmluZyA9ICJQcmVlbXBoYXNpcyBMZXZlbDogICAgICV1XG4iOworCQlvdXRwdXRf dmFsdWUgPSAqKHVuc2lnbmVkIGNoYXIgKikgZGF0YTsKKwkJYnJlYWs7CisJY2FzZSBEUF9DT05G SUdfUEFSQU1fSFJFUzoKKwkJZm9ybWF0X3N0cmluZyA9ICJIb3Jpem9udGFsIFJlc29sdXRpb246 ICVkXG4iOworCQlvdXRwdXRfdmFsdWUgPSAqKGludCAqKSBkYXRhOworCQlicmVhazsKKwljYXNl IERQX0NPTkZJR19QQVJBTV9WUkVTOgorCQlmb3JtYXRfc3RyaW5nID0gIlZlcnRpY2FsIFJlc29s dXRpb246ICAgJWRcbiI7CisJCW91dHB1dF92YWx1ZSA9ICooaW50ICopIGRhdGE7CisJCWJyZWFr OworCWNhc2UgRFBfQ09ORklHX1BBUkFNX0JQUDoKKwkJZm9ybWF0X3N0cmluZyA9ICJCaXRzIFBl ciBQaXhlbDogICAgICAgICV1XG4iOworCQlvdXRwdXRfdmFsdWUgPSAqKHVuc2lnbmVkIGNoYXIg KikgZGF0YTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZm9ybWF0X3N0cmluZyA9IE5VTEw7CisJ CWJyZWFrOworCX0KKworCWlmIChmb3JtYXRfc3RyaW5nICE9IE5VTEwgJiYgZm9yX3BhcmFtICE9 IERQX0NPTkZJR19QQVJBTV9DT05ORUNUT1IpCisJCXNlcV9wcmludGYobSwgZm9ybWF0X3N0cmlu Zywgb3V0cHV0X3ZhbHVlKTsKK30KKwogLyogQXMgdGhlIGRybV9kZWJ1Z2ZzX2luaXQoKSByb3V0 aW5lcyBhcmUgY2FsbGVkIGJlZm9yZSBkZXYtPmRldl9wcml2YXRlIGlzCiAgKiBhbGxvY2F0ZWQg d2UgbmVlZCB0byBob29rIGludG8gdGhlIG1pbm9yIGZvciByZWxlYXNlLiAqLwogc3RhdGljIGlu dApAQCAtMzcwMSw2ICszODE3LDM2MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0 aW9ucyBpOTE1X2Rpc3BsYXlfY3JjX2N0bF9mb3BzID0gewogCS53cml0ZSA9IGRpc3BsYXlfY3Jj X2N0bF93cml0ZQogfTsKIAorc3RhdGljIHZvaWQgZHBfc2hvd19jb25maWcoc3RydWN0IHNlcV9m aWxlICptLAorCQkJICAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcikKK3sKKwlzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwOworCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjOworCXN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmludGVsX2Nvbm5lY3RvciA9IHRvX2ludGVsX2Nvbm5lY3Rvcihj b25uZWN0b3IpOworCXN0cnVjdCBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0gaW50ZWxf Y29ubmVjdG9yLT5lbmNvZGVyOworCWludCBwaXBlX2JwcCwgaHJlcywgdnJlczsKKwl1aW50OF90 IHZzWzRdLCBwZVs0XTsKKwlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZTsKKwlpbnQgaSA9 IDA7CisKKwlpZiAoIWludGVsX2VuY29kZXIpCisJCXJldHVybjsKKworCWlmIChpbnRlbF9lbmNv ZGVyLT50eXBlICE9IElOVEVMX09VVFBVVF9ESVNQTEFZUE9SVCkKKwkJcmV0dXJuOworCisJaW50 ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmludGVsX2VuY29kZXItPmJhc2UpOworCisJZm9yIChp ID0gMDsgaSA8IGludGVsX2RwLT5sYW5lX2NvdW50OyBpKyspIHsKKwkJdnNbaV0gPSBpbnRlbF9k cC0+dHJhaW5fc2V0W2ldCisJCQkmIERQX1RSQUlOX1ZPTFRBR0VfU1dJTkdfTUFTSzsKKwkJcGVb aV0gPSAoaW50ZWxfZHAtPnRyYWluX3NldFtpXQorCQkgICAgICAmIERQX1RSQUlOX1BSRV9FTVBI QVNJU19NQVNLKSA+PgorCQkJRFBfVFJBSU5fUFJFX0VNUEhBU0lTX1NISUZUOworCX0KKworCS8q IE91dHB1dCBtb2RlIGluZm8gb25seSBpZiBhIHZhbGlkIENSVEMgZXhpc3RzICovCisJaWYgKGlu dGVsX2VuY29kZXItPmJhc2UuY3J0YykgeworCQljcnRjID0gdG9faW50ZWxfY3J0YyhpbnRlbF9l bmNvZGVyLT5iYXNlLmNydGMpOworCQlwaXBlX2JwcCA9IGNydGMtPmNvbmZpZy0+cGlwZV9icHA7 CisJCW1vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCWhyZXMgPSBt b2RlLT5oZGlzcGxheTsKKwkJdnJlcyA9IG1vZGUtPnZkaXNwbGF5OworCX0gZWxzZSB7CisJCXBp cGVfYnBwID0gMDsKKwkJaHJlcyA9IHZyZXMgPSAwOworCX0KKworCWRwX3ByaW50X3N0cmluZyht LAorCQkJRFBfQ09ORklHX1BBUkFNX0NPTk5FQ1RPUiwKKwkJCWNvbm5lY3Rvci0+bmFtZSk7CisJ ZHBfcHJpbnRfc3RyaW5nKG0sCisJCQlEUF9DT05GSUdfUEFSQU1fQ09OTkVDVE9SX0lELAorCQkJ JmNvbm5lY3Rvci0+YmFzZS5pZCk7CisJZHBfcHJpbnRfc3RyaW5nKG0sCisJCQlEUF9DT05GSUdf UEFSQU1fTElOS19SQVRFLAorCQkJJmludGVsX2RwLT5saW5rX2J3KTsKKwlkcF9wcmludF9zdHJp bmcobSwKKwkJCURQX0NPTkZJR19QQVJBTV9MQU5FX0NPVU5ULAorCQkJJmludGVsX2RwLT5sYW5l X2NvdW50KTsKKwlkcF9wcmludF9zdHJpbmcobSwKKwkJCURQX0NPTkZJR19QQVJBTV9WT0xUQUdF X1NXSU5HLAorCQkJJnZzWzBdKTsKKwlkcF9wcmludF9zdHJpbmcobSwKKwkJCURQX0NPTkZJR19Q QVJBTV9QUkVFTVBIQVNJUywKKwkJCSZwZVswXSk7CisJZHBfcHJpbnRfc3RyaW5nKG0sCisJCQlE UF9DT05GSUdfUEFSQU1fSFJFUywKKwkJCSZocmVzKTsKKwlkcF9wcmludF9zdHJpbmcobSwKKwkJ CURQX0NPTkZJR19QQVJBTV9WUkVTLAorCQkJJnZyZXMpOworCWRwX3ByaW50X3N0cmluZyhtLAor CQkJRFBfQ09ORklHX1BBUkFNX0JQUCwKKwkJCSZwaXBlX2JwcCk7Cit9CisKK2VudW0gZHBfY29u ZmlnX3BhcmFtIGRwX2dldF9wYXJhbV90eXBlKGNoYXIgKmlucHV0X3N0cmluZykKK3sKKwllbnVt IGRwX2NvbmZpZ19wYXJhbSBwYXJhbV90eXBlID0gRFBfQ09ORklHX1BBUkFNX0lOVkFMSUQ7CisJ Y2hhciAqczsKKwlpbnQgaSA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgRFBfUEFSQU1FVEVSX0NP VU5UOyBpKyspIHsKKwkJcyA9IGRwX2dldF9jb25maWdfc3RyKGkpOworCQlpZiAoc3RybmNtcChp bnB1dF9zdHJpbmcsIHMsCisJCQkgICAgc3RybGVuKHMpKSA9PSAwKSB7CisJCQlwYXJhbV90eXBl ID0gKGVudW0gZHBfY29uZmlnX3BhcmFtKSBpOworCQkJYnJlYWs7CisJCX0KKwl9CisJcmV0dXJu IHBhcmFtX3R5cGU7Cit9CisKK2ludCBkcF9nZXRfcGFyYW1fdmFsdWUoZW51bSBkcF9jb25maWdf cGFyYW0gcGFyYW0sCisJCQkgICBjaGFyICppbnB1dF9zdHJpbmcsCisJCQkgICB2b2lkICpvdXRw dXRfdmFsdWUpCit7CisJaW50IHN0YXR1cyA9IDA7CisJdW5zaWduZWQgaW50ICpvdXRfcHRyID0g KHVuc2lnbmVkIGludCAqKW91dHB1dF92YWx1ZTsKKwljaGFyICppbmRleCA9IGlucHV0X3N0cmlu ZzsKKworCXN3aXRjaCAocGFyYW0pIHsKKwljYXNlIERQX0NPTkZJR19QQVJBTV9DT05ORUNUT1I6 CisJCW91dHB1dF92YWx1ZSA9IChjaGFyICopaW5kZXg7CisJCWJyZWFrOworCWNhc2UgRFBfQ09O RklHX1BBUkFNX0xJTktfUkFURToKKwljYXNlIERQX0NPTkZJR19QQVJBTV9MQU5FX0NPVU5UOgor CWNhc2UgRFBfQ09ORklHX1BBUkFNX1ZPTFRBR0VfU1dJTkc6CisJY2FzZSBEUF9DT05GSUdfUEFS QU1fUFJFRU1QSEFTSVM6CisJCXN0YXR1cyA9IGtzdHJ0b2woaW5kZXgsIDE2LCAobG9uZyAqKW91 dF9wdHIpOworCQlicmVhazsKKwljYXNlIERQX0NPTkZJR19QQVJBTV9IUkVTOgorCWNhc2UgRFBf Q09ORklHX1BBUkFNX1ZSRVM6CisJY2FzZSBEUF9DT05GSUdfUEFSQU1fQlBQOgorCQlzdGF0dXMg PSBrc3RydG9sKGluZGV4LCAxMCwgKGxvbmcgKilvdXRfcHRyKTsKKwkJYnJlYWs7CisJZGVmYXVs dDoKKwkJLyogVW5oYW5kbGVkIGNhc2UgKi8KKwkJc3RhdHVzID0gLUVJTlZBTDsKKwkJKm91dF9w dHIgPSAwOworCQlicmVhazsKKwl9CisKKwlyZXR1cm4gc3RhdHVzOworfQorCitpbnQgZHBfdG9r ZW5pemVfY29uZmlnKGNoYXIgKmlucHV0X2J1ZmZlciwgY2hhciAqb3V0cHV0W10pCit7CisJY2hh ciAqYmFzZSA9IGlucHV0X2J1ZmZlciwgKmluZGV4LCAqZW5kOworCWludCBsaW5lX2NvdW50ID0g MDsKKwlpbnQgaSA9IDAsIGxlbiA9IDA7CisJaW50IGRvbmUgPSAwOworCisJaWYgKCFpbnB1dF9i dWZmZXIpCisJCXJldHVybiAwOworCisJd2hpbGUgKCFkb25lKSB7CisJCWluZGV4ID0gc3RycGJy ayhiYXNlLCAiOiIpOworCQlpZiAoaW5kZXgpIHsKKwkJCWxlbiA9IGluZGV4IC0gYmFzZTsKKwkJ CSppbmRleCA9ICdcMCc7CisJCQlpbmRleCsrOworCQkJLyogU2F2ZSB0aGUgdHlwZSBzdHJpbmcg Ki8KKwkJCW91dHB1dFtpXSA9IGJhc2U7CisJCQlpKys7CisJCQlsaW5lX2NvdW50Kys7CisJCQll bmQgPSBzdHJwYnJrKGluZGV4LCAiXG5cMCIpOworCQkJaWYgKGVuZCkgeworCQkJCSplbmQgPSAn XDAnOworCQkJCS8qIEVhdCB1cCB3aGl0ZXNwYWNlICovCisJCQkJd2hpbGUgKCppbmRleCA8PSAw eDIwKQorCQkJCQlpbmRleCsrOworCQkJCW91dHB1dFtpXSA9IGluZGV4OworCQkJCWkrKzsKKwkJ CQlsaW5lX2NvdW50Kys7CisJCQl9IGVsc2UKKwkJCQlkb25lID0gMTsKKwkJCS8qIE1vdmUgdG8g dGhlIG5leHQgc2VjdGlvbiBvZiB0aGUgc3RyaW5nICovCisJCQliYXNlID0gZW5kICsgMTsKKwkJ fSBlbHNlCisJCQlkb25lID0gMTsKKwl9CisJcmV0dXJuIGxpbmVfY291bnQ7Cit9CisKK3N0YXRp YyBpbnQgZHBfcGFyc2VfY29uZmlnKGNoYXIgKmlucHV0X2J1ZmZlciwKKwkJCSAgIHNzaXplX3Qg YnVmZmVyX3NpemUsCisJCQkgICBzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQoreworCWludCBz dGF0dXMgPSAwOworCWNoYXIgKmxpbmVzW01BWF9EUF9DT05GSUdfTElORV9DT1VOVF07CisJaW50 IGkgPSAwOworCXN0cnVjdCBkcF9jb25maWcgcGFybXNbRFBfUEFSQU1FVEVSX0NPVU5UXTsKKwlp bnQgbGluZV9jb3VudCA9IDA7CisJY2hhciAqYnVmZmVyID0gaW5wdXRfYnVmZmVyOworCWVudW0g ZHBfY29uZmlnX3BhcmFtIHBhcm1fdHlwZTsKKwl1bnNpZ25lZCBsb25nIHBhcm1fdmFsdWU7CisK KwlsaW5lX2NvdW50ID0gZHBfdG9rZW5pemVfY29uZmlnKGJ1ZmZlciwgbGluZXMpOworCisJaWYg KGxpbmVfY291bnQgPT0gMCkgeworCQlEUk1fREVCVUdfRFJJVkVSKCJObyBsaW5lcyB0byBwcm9j ZXNzXG4iKTsKKwkJcmV0dXJuIDA7CisJfQorCisJZm9yIChpID0gMDsgaSA8IGxpbmVfY291bnQ7 IGkgKz0gMikgeworCQlwYXJtX3R5cGUgPSBkcF9nZXRfcGFyYW1fdHlwZShsaW5lc1tpXSk7CisJ CWlmIChwYXJtX3R5cGUgIT0gRFBfQ09ORklHX1BBUkFNX0lOVkFMSUQpIHsKKwkJCXN0YXR1cyA9 IGRwX2dldF9wYXJhbV92YWx1ZShwYXJtX3R5cGUsCisJCQkJCQkJbGluZXNbaSsxXSwKKwkJCQkJ CQkmcGFybV92YWx1ZSk7CisJCQlpZiAoc3RhdHVzID09IDApIHsKKwkJCQlwYXJtc1twYXJtX3R5 cGVdLnR5cGUgPSBwYXJtX3R5cGU7CisJCQkJcGFybXNbcGFybV90eXBlXS52YWx1ZSA9IHBhcm1f dmFsdWU7CisJCQl9CisJCX0KKwl9CisKKwlpZiAocGFybXNbRFBfQ09ORklHX1BBUkFNX0xJTktf UkFURV0udmFsdWUgPT0gMHgwNiB8fAorCSAgICBwYXJtc1tEUF9DT05GSUdfUEFSQU1fTElOS19S QVRFXS52YWx1ZSA9PSAweDBhIHx8CisJICAgIHBhcm1zW0RQX0NPTkZJR19QQVJBTV9MSU5LX1JB VEVdLnZhbHVlID09IDB4MTQpIHsKKwkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfY29uZmlnLmxpbmtf cmF0ZSA9CisJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1fTElOS19SQVRFXS52YWx1ZTsKKwl9IGVs c2UKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocGFybXNbRFBfQ09ORklHX1BBUkFNX0xBTkVf Q09VTlRdLnZhbHVlID09IDB4MDEgfHwKKwkgICAgcGFybXNbRFBfQ09ORklHX1BBUkFNX0xBTkVf Q09VTlRdLnZhbHVlID09IDB4MDIgfHwKKwkgICAgcGFybXNbRFBfQ09ORklHX1BBUkFNX0xBTkVf Q09VTlRdLnZhbHVlID09IDB4MDQpIHsKKwkJaW50ZWxfZHAtPmNvbXBsaWFuY2VfY29uZmlnLmxh bmVfY291bnQgPQorCQkJcGFybXNbRFBfQ09ORklHX1BBUkFNX0xBTkVfQ09VTlRdLnZhbHVlOwor CX0gZWxzZQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1f Vk9MVEFHRV9TV0lOR10udmFsdWUgPD0gMHgwMyAmJgorCSAgICBwYXJtc1tEUF9DT05GSUdfUEFS QU1fVk9MVEFHRV9TV0lOR10udmFsdWUgPj0gMHgwMCkgeworCQlpbnRlbF9kcC0+Y29tcGxpYW5j ZV9jb25maWcudnN3aW5nX2xldmVsID0KKwkJCXBhcm1zW0RQX0NPTkZJR19QQVJBTV9WT0xUQUdF X1NXSU5HXS52YWx1ZTsKKwl9IGVsc2UKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAocGFybXNb RFBfQ09ORklHX1BBUkFNX1BSRUVNUEhBU0lTXS52YWx1ZSA8PSAweDAzICYmCisJICAgIHBhcm1z W0RQX0NPTkZJR19QQVJBTV9QUkVFTVBIQVNJU10udmFsdWUgPj0gMHgwMCkgeworCQlpbnRlbF9k cC0+Y29tcGxpYW5jZV9jb25maWcucHJlZW1wX2xldmVsID0KKwkJCXBhcm1zW0RQX0NPTkZJR19Q QVJBTV9QUkVFTVBIQVNJU10udmFsdWU7CisJfSBlbHNlCisJCXJldHVybiAtRUlOVkFMOworCisJ aWYgKHBhcm1zW0RQX0NPTkZJR19QQVJBTV9CUFBdLnZhbHVlID09IDE4IHx8CisJICAgIHBhcm1z W0RQX0NPTkZJR19QQVJBTV9CUFBdLnZhbHVlID09IDI0IHx8CisJICAgIHBhcm1zW0RQX0NPTkZJ R19QQVJBTV9CUFBdLnZhbHVlID09IDMwIHx8CisJICAgIHBhcm1zW0RQX0NPTkZJR19QQVJBTV9C UFBdLnZhbHVlID09IDM2KSB7CisJCWludGVsX2RwLT5jb21wbGlhbmNlX2NvbmZpZy5iaXRzX3Bl cl9waXhlbCA9CisJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1fUFJFRU1QSEFTSVNdLnZhbHVlOwor CX0gZWxzZQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmIChwYXJtc1tEUF9DT05GSUdfUEFSQU1f SFJFU10udmFsdWUgPiAwICYmCisJICAgIHBhcm1zW0RQX0NPTkZJR19QQVJBTV9IUkVTXS52YWx1 ZSA8PSA4MTkyKSB7CisJCWludGVsX2RwLT5jb21wbGlhbmNlX2NvbmZpZy5ocmVzID0KKwkJCXBh cm1zW0RQX0NPTkZJR19QQVJBTV9IUkVTXS52YWx1ZTsKKwl9IGVsc2UKKwkJcmV0dXJuIC1FSU5W QUw7CisKKwlpZiAocGFybXNbRFBfQ09ORklHX1BBUkFNX1ZSRVNdLnZhbHVlID4gMCAmJgorCSAg ICBwYXJtc1tEUF9DT05GSUdfUEFSQU1fVlJFU10udmFsdWUgPD0gODE5MikgeworCQlpbnRlbF9k cC0+Y29tcGxpYW5jZV9jb25maWcudnJlcyA9CisJCQlwYXJtc1tEUF9DT05GSUdfUEFSQU1fVlJF U10udmFsdWU7CisJfSBlbHNlCisJCXJldHVybiAtRUlOVkFMOworCisJcmV0dXJuIHN0YXR1czsK K30KKworc3RhdGljIGludCBpOTE1X2Rpc3BsYXlwb3J0X2NvbmZpZ19jdGxfc2hvdyhzdHJ1Y3Qg c2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG0t PnByaXZhdGU7CisJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvcjsKKwlzdHJ1Y3QgbGlz dF9oZWFkICpjb25uZWN0b3JfbGlzdCA9ICZkZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0 OworCisJaWYgKCFkZXYpCisJCXJldHVybiAtRU5PREVWOworCisJbGlzdF9mb3JfZWFjaF9lbnRy eShjb25uZWN0b3IsIGNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7CisKKwkJaWYgKGNvbm5lY3Rvci0+ Y29ubmVjdG9yX3R5cGUgIT0KKwkJICAgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCkK KwkJCWNvbnRpbnVlOworCisJCWlmIChjb25uZWN0b3ItPnN0YXR1cyA9PSBjb25uZWN0b3Jfc3Rh dHVzX2Nvbm5lY3RlZCkgeworCQkJZHBfc2hvd19jb25maWcobSwgY29ubmVjdG9yKTsKKwkJfSBl bHNlIHsKKwkJCWRwX3ByaW50X3N0cmluZyhtLAorCQkJCQlEUF9DT05GSUdfUEFSQU1fQ09OTkVD VE9SLAorCQkJCQljb25uZWN0b3ItPm5hbWUpOworCQkJZHBfcHJpbnRfc3RyaW5nKG0sCisJCQkJ CURQX0NPTkZJR19QQVJBTV9DT05ORUNUT1JfSUQsCisJCQkJCSZjb25uZWN0b3ItPmJhc2UuaWQp OworCQkJc2VxX3B1dHMobSwgImRpc2Nvbm5lY3RlZFxuIik7CisJCX0KKwl9CisKKwlyZXR1cm4g MDsKK30KKworc3RhdGljIGludCBpOTE1X2Rpc3BsYXlwb3J0X2NvbmZpZ19jdGxfb3BlbihzdHJ1 Y3QgaW5vZGUgKmlub2RlLAorCQkJCSAgICAgICBzdHJ1Y3QgZmlsZSAqZmlsZSkKK3sKKwlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gaW5vZGUtPmlfcHJpdmF0ZTsKKworCXJldHVybiBzaW5nbGVf b3BlbihmaWxlLCBpOTE1X2Rpc3BsYXlwb3J0X2NvbmZpZ19jdGxfc2hvdywgZGV2KTsKK30KKwor c3RhdGljIHNzaXplX3QgaTkxNV9kaXNwbGF5cG9ydF9jb25maWdfY3RsX3dyaXRlKHN0cnVjdCBm aWxlICpmaWxlLAorCQkJCQkgICAgY29uc3QgY2hhciBfX3VzZXIgKnVidWYsCisJCQkJCSAgICBz aXplX3QgbGVuLCBsb2ZmX3QgKm9mZnApCit7CisJY2hhciAqaW5wdXRfYnVmZmVyOworCWludCBz dGF0dXMgPSAwOworCXN0cnVjdCBzZXFfZmlsZSAqbTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 OworCXN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGxpc3RfaGVhZCAq Y29ubmVjdG9yX2xpc3Q7CisJc3RydWN0IGludGVsX2RwICppbnRlbF9kcDsKKworCW0gPSBmaWxl LT5wcml2YXRlX2RhdGE7CisJaWYgKCFtKSB7CisJCXN0YXR1cyA9IC1FTk9ERVY7CisJCXJldHVy biBzdGF0dXM7CisJfQorCWRldiA9IG0tPnByaXZhdGU7CisKKwlpZiAoIWRldikgeworCQlzdGF0 dXMgPSAtRU5PREVWOworCQlyZXR1cm4gc3RhdHVzOworCX0KKwljb25uZWN0b3JfbGlzdCA9ICZk ZXYtPm1vZGVfY29uZmlnLmNvbm5lY3Rvcl9saXN0OworCisJaWYgKGxlbiA9PSAwKQorCQlyZXR1 cm4gMDsKKworCWlucHV0X2J1ZmZlciA9IGttYWxsb2MobGVuICsgMSwgR0ZQX0tFUk5FTCk7CisJ aWYgKCFpbnB1dF9idWZmZXIpCisJCXJldHVybiAtRU5PTUVNOworCisJaWYgKGNvcHlfZnJvbV91 c2VyKGlucHV0X2J1ZmZlciwgdWJ1ZiwgbGVuKSkgeworCQlzdGF0dXMgPSAtRUZBVUxUOworCQln b3RvIG91dDsKKwl9CisKKwlpbnB1dF9idWZmZXJbbGVuXSA9ICdcMCc7CisJRFJNX0RFQlVHX0RS SVZFUigiQ29waWVkICVkIGJ5dGVzIGZyb20gdXNlclxuIiwgKHVuc2lnbmVkIGludClsZW4pOwor CisJbGlzdF9mb3JfZWFjaF9lbnRyeShjb25uZWN0b3IsIGNvbm5lY3Rvcl9saXN0LCBoZWFkKSB7 CisJCWlmIChjb25uZWN0b3ItPmNvbm5lY3Rvcl90eXBlID09CisJCSAgICBEUk1fTU9ERV9DT05O RUNUT1JfRGlzcGxheVBvcnQgJiYKKwkJICAgIGNvbm5lY3Rvci0+c3RhdHVzID09IGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkKSB7CisJCQlpbnRlbF9kcCA9IGVuY190b19pbnRlbF9kcChjb25u ZWN0b3ItPmVuY29kZXIpOworCQkJc3RhdHVzID0gZHBfcGFyc2VfY29uZmlnKGlucHV0X2J1ZmZl ciwgbGVuLCBpbnRlbF9kcCk7CisJCQlpZiAoc3RhdHVzIDwgMCkKKwkJCQlnb3RvIG91dDsKKwkJ fQorCX0KK291dDoKKwlrZnJlZShpbnB1dF9idWZmZXIpOworCWlmIChzdGF0dXMgPCAwKQorCQly ZXR1cm4gc3RhdHVzOworCisJKm9mZnAgKz0gbGVuOworCXJldHVybiBsZW47Cit9CisKK3N0YXRp YyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGk5MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0 bF9mb3BzID0geworCS5vd25lciA9IFRISVNfTU9EVUxFLAorCS5vcGVuID0gaTkxNV9kaXNwbGF5 cG9ydF9jb25maWdfY3RsX29wZW4sCisJLnJlYWQgPSBzZXFfcmVhZCwKKwkubGxzZWVrID0gc2Vx X2xzZWVrLAorCS5yZWxlYXNlID0gc2luZ2xlX3JlbGVhc2UsCisJLndyaXRlID0gaTkxNV9kaXNw bGF5cG9ydF9jb25maWdfY3RsX3dyaXRlCit9OworCiBzdGF0aWMgdm9pZCB3bV9sYXRlbmN5X3No b3coc3RydWN0IHNlcV9maWxlICptLCBjb25zdCB1aW50MTZfdCB3bVs4XSkKIHsKIAlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gbS0+cHJpdmF0ZTsKQEAgLTQ0NTAsNiArNDkyMCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3QgaTkxNV9kZWJ1Z2ZzX2ZpbGVzIHsKIAl7Imk5MTVfc3ByX3dtX2xhdGVu Y3kiLCAmaTkxNV9zcHJfd21fbGF0ZW5jeV9mb3BzfSwKIAl7Imk5MTVfY3VyX3dtX2xhdGVuY3ki LCAmaTkxNV9jdXJfd21fbGF0ZW5jeV9mb3BzfSwKIAl7Imk5MTVfZmJjX2ZhbHNlX2NvbG9yIiwg Jmk5MTVfZmJjX2ZjX2ZvcHN9LAorCXsiaTkxNV9kaXNwbGF5cG9ydF9jb25maWdfY3RsIiwgJmk5 MTVfZGlzcGxheXBvcnRfY29uZmlnX2N0bF9mb3BzfQogfTsKIAogdm9pZCBpbnRlbF9kaXNwbGF5 X2NyY19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5o CmluZGV4IDc0YjMwYzEuLmM4MTNkM2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCkBAIC01 OTIsNiArNTkyLDE4IEBAIHN0cnVjdCBpbnRlbF9oZG1pIHsKIHN0cnVjdCBpbnRlbF9kcF9tc3Rf ZW5jb2RlcjsKICNkZWZpbmUgRFBfTUFYX0RPV05TVFJFQU1fUE9SVFMJCTB4MTAKIAorc3RydWN0 IGludGVsX2RwX2xpbmtfY29uZmlnIHsKKwl1aW50OF90IGxhbmVfY291bnQ7CisJdWludDhfdCBs aW5rX3JhdGU7CisJdWludDhfdCB2c3dpbmdfbGV2ZWw7CisJdWludDhfdCBwcmVlbXBfbGV2ZWw7 CisJdWludDMyX3QgaHJlczsKKwl1aW50MzJfdCB2cmVzOworCXVpbnQ4X3QgYml0c19wZXJfcGl4 ZWw7CisJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmNvbXBsaWFuY2VfbW9kZTsKKwljaGFyIGNv bm5lY3Rvcl9uYW1lWzEyXTsKK307CisKIHN0cnVjdCBpbnRlbF9kcCB7CiAJdWludDMyX3Qgb3V0 cHV0X3JlZzsKIAl1aW50MzJfdCBhdXhfY2hfY3RsX3JlZzsKQEAgLTY1MSw2ICs2NjMsNyBAQCBz dHJ1Y3QgaW50ZWxfZHAgewogCS8qIERpc3BsYXlwb3J0IGNvbXBsaWFuY2UgdGVzdGluZyAqLwog CXVuc2lnbmVkIGxvbmcgY29tcGxpYW5jZV90ZXN0X2RhdGE7CiAJYm9vbCBjb21wbGlhbmNlX3Rl c3RpbmdfYWN0aXZlOworCXN0cnVjdCBpbnRlbF9kcF9saW5rX2NvbmZpZyBjb21wbGlhbmNlX2Nv bmZpZzsKIH07CiAKIHN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgewotLSAKMS45LjEKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==