From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [PATCH v13 02/10] drm/i915/pmu: Expose a PMU interface for perf queries Date: Thu, 5 Oct 2017 14:04:05 +0100 Message-ID: <20171005130405.28532-1-tvrtko.ursulin@linux.intel.com> References: <150668916043.27384.4775104905419025307@mail.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) by gabe.freedesktop.org (Postfix) with ESMTPS id C3C9B6E7C9 for ; Thu, 5 Oct 2017 13:04:16 +0000 (UTC) Received: by mail-wm0-x22c.google.com with SMTP id f4so2091619wme.0 for ; Thu, 05 Oct 2017 06:04:16 -0700 (PDT) In-Reply-To: <150668916043.27384.4775104905419025307@mail.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: Peter Zijlstra List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KCkZyb206IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpGcm9tOiBUdnJ0a28gVXJzdWxp biA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgpGcm9tOiBEbWl0cnkgUm9nb3poa2luIDxkbWl0 cnkudi5yb2dvemhraW5AaW50ZWwuY29tPgoKVGhlIGZpcnN0IGdvYWwgaXMgdG8gYmUgYWJsZSB0 byBtZWFzdXJlIEdQVSAoYW5kIGludmlkdWFsIHJpbmcpIGJ1c3luZXNzCndpdGhvdXQgaGF2aW5n IHRvIHBvbGwgcmVnaXN0ZXJzIGZyb20gdXNlcnNwYWNlLiAoV2hpY2ggbm90IG9ubHkgaW5jdXJz CmhvbGRpbmcgdGhlIGZvcmNld2FrZSBsb2NrIGluZGVmaW5pdGVseSwgcGVydHVyYmluZyB0aGUg c3lzdGVtLCBidXQgYWxzbwpydW5zIHRoZSByaXNrIG9mIGhhbmdpbmcgdGhlIG1hY2hpbmUuKSBB cyBhbiBhbHRlcm5hdGl2ZSB3ZSBjYW4gdXNlIHRoZQpwZXJmIGV2ZW50IGNvdW50ZXIgaW50ZXJm YWNlIHRvIHNhbXBsZSB0aGUgcmluZyByZWdpc3RlcnMgcGVyaW9kaWNhbGx5CmFuZCBzZW5kIHRo b3NlIHJlc3VsdHMgdG8gdXNlcnNwYWNlLgoKRnVuY3Rpb25hbGl0eSB3ZSBhcmUgZXhwb3J0aW5n IHRvIHVzZXJzcGFjZSBpcyB2aWEgdGhlIGV4aXN0aW5nIHBlcmYgUE1VCkFQSSBhbmQgY2FuIGJl IGV4ZXJjaXNlZCB2aWEgdGhlIGV4aXN0aW5nIHRvb2xzLiBGb3IgZXhhbXBsZToKCiAgcGVyZiBz dGF0IC1hIC1lIGk5MTUvcmNzMC1idXN5LyAtSSAxMDAwCgpXaWxsIHByaW50IHRoZSByZW5kZXIg ZW5naW5lIGJ1c3lubmVzIG9uY2UgcGVyIHNlY29uZC4gQWxsIHRoZSBwZXJmb3JtYW5jZQpjb3Vu dGVycyBjYW4gYmUgZW51bWVyYXRlZCAocGVyZiBsaXN0KSBhbmQgaGF2ZSB0aGVpciB1bml0IG9m IG1lYXN1cmUKY29ycmVjdGx5IHJlcG9ydGVkIGluIHN5c2ZzLgoKdjEtdjIgKENocmlzIFdpbHNv bik6Cgp2MjogVXNlIGEgY29tbW9uIHRpbWVyIGZvciB0aGUgcmluZyBzYW1wbGluZy4KCnYzOiAo VHZydGtvIFVyc3VsaW4pCiAqIERlY291cGxlIHVBUEkgZnJvbSBpOTE1IGVuZ2luZSBpZHMuCiAq IENvbXBsZXRlIHVBUEkgZGVmaW5lcy4KICogUmVmYWN0b3Igc29tZSBjb2RlIHRvIGhlbHBlcnMg Zm9yIGNsYXJpdHkuCiAqIFNraXAgc2FtcGxpbmcgZGlzYWJsZWQgZW5naW5lcy4KICogRXhwb3Nl IGNvdW50ZXJzIGluIHN5c2ZzLgogKiBQYXNzIGluIGZha2UgcmVncyB0byBhdm9pZCBudWxsIHB0 ciBkZXJlZiBpbiBwZXJmIGNvcmUuCiAqIENvbnZlcnQgdG8gY2xhc3MvaW5zdGFuY2UgdUFQSS4K ICogVXNlIHNoYXJlZCBkcml2ZXIgY29kZSBmb3IgcmM2IHJlc2lkZW5jeSwgcG93ZXIgYW5kIGZy ZXF1ZW5jeS4KCnY0OiAoRG1pdHJ5IFJvZ296aGtpbikKICogUmVnaXN0ZXIgUE1VIHdpdGggLnRh c2tfY3R4X25yPXBlcmZfaW52YWxpZF9jb250ZXh0CiAqIEV4cG9zZSBjcHVtYXNrIGZvciB0aGUg UE1VIHdpdGggdGhlIHNpbmdsZSBDUFUgaW4gdGhlIG1hc2sKICogUHJvcGVybHkgc3VwcG9ydCBw bXUtPnN0b3AoKTogaXQgc2hvdWxkIGNhbGwgcG11LT5yZWFkKCkKICogUHJvcGVybHkgc3VwcG9y dCBwbXUtPmRlbCgpOiBpdCBzaG91bGQgY2FsbCBzdG9wKGV2ZW50LCBQRVJGX0VGX1VQREFURSkK ICogSW50cm9kdWNlIHJlZmNvdW50aW5nIG9mIGV2ZW50IHN1YnNjcmlwdGlvbnMuCiAqIE1ha2Ug cG11LmJ1c3lfc3RhdHMgYSByZWZjb3VudGVyIHRvIGF2b2lkIGJ1c3kgc3RhdHMgZ29pbmcgYXdh eQogICB3aXRoIHNvbWUgZGVsZXRlZCBldmVudC4KICogRXhwb3NlIGNwdW1hc2sgZm9yIGk5MTUg UE1VIHRvIGF2b2lkIG11bHRpcGxlIGV2ZW50cyBjcmVhdGlvbiBvZgogICB0aGUgc2FtZSB0eXBl IGZvbGxvd2VkIGJ5IGNvdW50ZXIgYWdncmVnYXRpb24gYnkgcGVyZi1zdGF0LgogKiBUcmFjayBD UFVzIGdldHRpbmcgb25saW5lL29mZmxpbmUgdG8gbWlncmF0ZSBwZXJmIGNvbnRleHQuIElmIChs aWtlbHkpCiAgIGNwdW1hc2sgd2lsbCBpbml0aWFsbHkgc2V0IENQVTAsIENPTkZJR19CT09UUEFS QU1fSE9UUExVR19DUFUwIHdpbGwgYmUKICAgbmVlZGVkIHRvIHNlZSBlZmZlY3Qgb2YgQ1BVIHN0 YXR1cyB0cmFja2luZy4KICogRW5kIHJlc3VsdCBpcyB0aGF0IG9ubHkgZ2xvYmFsIGV2ZW50cyBh cmUgc3VwcG9ydGVkIGFuZCBwZXJmIHN0YXQKICAgd29ya3MgY29ycmVjdGx5LgogKiBEZW55IHBl cmYgZHJpdmVyIGxldmVsIHNhbXBsaW5nIC0gaXQgaXMgcHJvaGliaXRlZCBmb3IgdW5jb3JlIFBN VS4KCnY1OiAoVHZydGtvIFVyc3VsaW4pCgogKiBEb24ndCBoYXJkY29kZSBudW1iZXIgb2YgZW5n aW5lIHNhbXBsZXJzLgogKiBSZXdyaXRlIGV2ZW50IHJlZi1jb3VudGluZyBmb3IgY29ycmVjdG5l c3MgYW5kIHNpbXBsaWNpdHkuCiAqIFN0b3JlIGluaXRpYWwgY291bnRlciB2YWx1ZSB3aGVuIHN0 YXJ0aW5nIGFscmVhZHkgZW5hYmxlZCBldmVudHMKICAgdG8gY29ycmVjdGx5IHJlcG9ydCB2YWx1 ZXMgdG8gYWxsIGxpc3RlbmVycy4KICogRml4IFJDNiByZXNpZGVuY3kgcmVhZG91dC4KICogQ29t bWVudHMsIEdQTCBoZWFkZXIuCgp2NjoKICogQWRkIG1pc3NpbmcgZW50cnkgdG8gdjQgY2hhbmdl bG9nLgogKiBGaXggYWNjb3VudGluZyBpbiBDUFUgaG90cGx1ZyBjYXNlIGJ5IGNvcHlpbmcgdGhl IGFwcHJvYWNoIGZyb20KICAgYXJjaC94ODYvZXZlbnRzL2ludGVsL2NzdGF0ZS5jLiAoRG1pdHJ5 IFJvZ296aGtpbikKCnY3OgogKiBMb2cgZmFpbHVyZSBtZXNzYWdlIG9ubHkgb24gZmFpbHVyZS4K ICogUmVtb3ZlIENQVSBob3RwbHVnIG5vdGlmaWNhdGlvbiBzdGF0ZSBvbiB1bnJlZ2lzdGVyLgoK djg6CiAqIEZpeCBlcnJvciB1bndpbmQgb24gZmFpbGVkIHJlZ2lzdHJhdGlvbi4KICogQ2hlY2tw YXRjaCBjbGVhbnVwLgoKdjk6CiAqIERyb3AgdGhlIGVuZXJneSBtZXRyaWMsIGl0IGlzIGF2YWls YWJsZSB2aWEgaW50ZWxfcmFwbF9wZXJmLgogICAoVmlsbGUgU3lyasOkbMOkKQogKiBVc2UgSEFT X1JDNihwKS4gKENocmlzIFdpbHNvbikKICogSGFuZGxlIHVuc3VwcG9ydGVkIG5vbi1lbmdpbmUg ZXZlbnRzLiAoRG1pdHJ5IFJvZ296aGtpbikKICogUmViYXNlIGZvciBpbnRlbF9yYzZfcmVzaWRl bmN5X25zIG5lZWRpbmcgY2FsbGVyIG1hbmFnZWQKICAgcnVudGltZSBwbS4KICogRHJvcCBIQVNf UkM2IGNoZWNrcyBmcm9tIHRoZSByZWFkIGNhbGxiYWNrIHNpbmNlIGNyZWF0aW5nIHRob3NlCiAg IGV2ZW50cyB3aWxsIGJlIHJlamVjdGVkIGF0IGluaXQgdGltZSBhbHJlYWR5LgogKiBBZGQgY291 bnRlciB1bml0cyB0byBzeXNmcyBzbyBwZXJmIHN0YXQgb3V0cHV0IGlzIG5pY2VyLgogKiBDbGVh bnVwIHRoZSBhdHRyaWJ1dGUgdGFibGVzIGZvciBicmV2aXR5IGFuZCByZWFkYWJpbGl0eS4KCnYx MDoKICogRml4ZWQgcXVldWVkIGFjY291bnRpbmcuCgp2MTE6CiAqIE1vdmUgaW50ZWxfZW5naW5l X2xvb2t1cF91c2VyIHRvIGludGVsX2VuZ2luZV9jcy5jCiAqIENvbW1pdCB1cGRhdGUuIChKb29u YXMgTGFodGluZW4pCgp2MTI6CiAqIE1vcmUgYWNjdXJhdGUgc2FtcGxpbmcuIChDaHJpcyBXaWxz b24pCiAqIFN0b3JlIGFuZCByZXBvcnQgZnJlcXVlbmN5IGluIE1IeiBmb3IgYmV0dGVyIHVzYWJp bGl0eSBmcm9tCiAgIHBlcmYgc3RhdC4KICogUmVtb3ZlZCBtZXRyaWNzOiBxdWV1ZWQsIGludGVy cnVwdHMsIHJjNiBjb3VudGVycy4KICogU2FtcGxlIGVuZ2luZSBidXN5bmVzcyBiYXNlZCBvbiBz ZXFubyBkaWZmZXJlbmNlIG9ubHkKICAgZm9yIGxlc3MgTU1JTyAoYW5kIGZvcmNld2FrZSkgb24g YWxsIHBsYXRmb3Jtcy4gKENocmlzIFdpbHNvbikKCnYxMzoKICogQ29tbWVudCBzcGVsbGluZywg dXNlIG11bF91MzJfdTMyIHRvIHdvcmsgYXJvdW5kIHBvdGVudGlhbCBHQ0MKICAgaXNzdWUgYW5k IHNvbW5lIGNvZGUgYWxpZ25tZW50IGNoYW5nZXMuIChDaHJpcyBXaWxzb24pCgpTaWduZWQtb2Zm LWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1i eTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogRG1pdHJ5IFJvZ296aGtpbiA8ZG1pdHJ5LnYucm9nb3poa2luQGludGVsLmNvbT4KQ2M6IFR2 cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CkNjOiBDaHJpcyBXaWxzb24g PGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ2M6IERtaXRyeSBSb2dvemhraW4gPGRtaXRyeS52 LnJvZ296aGtpbkBpbnRlbC5jb20+CkNjOiBQZXRlciBaaWpsc3RyYSA8cGV0ZXJ6QGluZnJhZGVh ZC5vcmc+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51 az4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgICAgIHwgICAyICsKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAxNCArCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BtdS5jICAgICAgICAgfCA2NTggKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmggICAgICAgICB8ICA5NiArKysr KwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgICAgIHwgICAzICsKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jICB8ICAzNSArKwogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgIDI2ICsrCiBpbmNsdWRlL3VhcGkvZHJtL2k5 MTVfZHJtLmggICAgICAgICAgICAgfCAgNDggKysrCiA5IGZpbGVzIGNoYW5nZWQsIDg4MyBpbnNl cnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9w bXUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmgK CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L01ha2VmaWxlCmluZGV4IDQ4NTBmMjYwYWVhZC4uZDcwZDliMjYwMmJjIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZQpAQCAtMjYsNiArMjYsNyBAQCBpOTE1LXkgOj0gaTkxNV9kcnYubyBc CiAKIGk5MTUtJChDT05GSUdfQ09NUEFUKSAgICs9IGk5MTVfaW9jMzIubwogaTkxNS0kKENPTkZJ R19ERUJVR19GUykgKz0gaTkxNV9kZWJ1Z2ZzLm8gaW50ZWxfcGlwZV9jcmMubworaTkxNS0kKENP TkZJR19QRVJGX0VWRU5UUykgKz0gaTkxNV9wbXUubwogCiAjIEdFTSBjb2RlCiBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggNjZmYzE1NmIy OTRhLi5kMzczYTg0MDU2NmEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMTIxNSw2ICsx MjE1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kcml2ZXJfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmZGV2X3ByaXYt PmRybTsKIAogCWk5MTVfZ2VtX3Nocmlua2VyX2luaXQoZGV2X3ByaXYpOworCWk5MTVfcG11X3Jl Z2lzdGVyKGRldl9wcml2KTsKIAogCS8qCiAJICogTm90aWZ5IGEgdmFsaWQgc3VyZmFjZSBhZnRl ciBtb2Rlc2V0dGluZywKQEAgLTEyNjksNiArMTI3MCw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZHJp dmVyX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWludGVs X29wcmVnaW9uX3VucmVnaXN0ZXIoZGV2X3ByaXYpOwogCiAJaTkxNV9wZXJmX3VucmVnaXN0ZXIo ZGV2X3ByaXYpOworCWk5MTVfcG11X3VucmVnaXN0ZXIoZGV2X3ByaXYpOwogCiAJaTkxNV90ZWFy ZG93bl9zeXNmcyhkZXZfcHJpdik7CiAJaTkxNV9ndWNfbG9nX3VucmVnaXN0ZXIoZGV2X3ByaXYp OwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXggYzc3OGYwMGQyMjNhLi4zMzlmNWE4OGFkYzQg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgPGxp bnV4L2hhc2guaD4KICNpbmNsdWRlIDxsaW51eC9pbnRlbC1pb21tdS5oPgogI2luY2x1ZGUgPGxp bnV4L2tyZWYuaD4KKyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+CiAjaW5jbHVkZSA8bGlu dXgvcG1fcW9zLmg+CiAjaW5jbHVkZSA8bGludXgvcmVzZXJ2YXRpb24uaD4KICNpbmNsdWRlIDxs aW51eC9zaG1lbV9mcy5oPgpAQCAtMjI1OSw2ICsyMjYwLDggQEAgc3RydWN0IGRybV9pOTE1X3By aXZhdGUgewogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICprZXJuZWxfY29udGV4dDsKIAkvKiBD b250ZXh0IG9ubHkgdG8gYmUgdXNlZCBmb3IgaW5qZWN0aW5nIHByZWVtcHRpb24gY29tbWFuZHMg Ki8KIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqcHJlZW1wdF9jb250ZXh0OworCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZV9jbGFzc1tNQVhfRU5HSU5FX0NMQVNTICsgMV0KKwkJCQkJ ICAgIFtNQVhfRU5HSU5FX0lOU1RBTkNFICsgMV07CiAJc3RydWN0IGk5MTVfdm1hICpzZW1hcGhv cmU7CiAKIAlzdHJ1Y3QgZHJtX2RtYV9oYW5kbGUgKnN0YXR1c19wYWdlX2RtYWg7CkBAIC0yNzIx LDYgKzI3MjQsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJCWludAlpcnE7CiAJfSBs cGVfYXVkaW87CiAKKwlzdHJ1Y3QgaTkxNV9wbXUgcG11OworCiAJLyoKIAkgKiBOT1RFOiBUaGlz IGlzIHRoZSBkcmkxL3VtcyBkdW5nZW9uLCBkb24ndCBhZGQgc3R1ZmYgaGVyZS4gWW91ciBwYXRj aAogCSAqIHdpbGwgYmUgcmVqZWN0ZWQuIEluc3RlYWQgbG9vayBmb3IgYSBiZXR0ZXIgcGxhY2Uu CkBAIC0zOTQ5LDYgKzM5NTQsMTUgQEAgZXh0ZXJuIHZvaWQgaTkxNV9wZXJmX2Zpbmkoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiB2b2lkIGk5MTVfcGVyZl9yZWdp c3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZvaWQgaTkx NV9wZXJmX3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAor LyogaTkxNV9wbXUuYyAqLworI2lmZGVmIENPTkZJR19QRVJGX0VWRU5UUwordm9pZCBpOTE1X3Bt dV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cit2b2lkIGk5MTVfcG11 X3VucmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOworI2Vsc2UKK3N0YXRp YyBpbmxpbmUgdm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSkge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KSB7fQorI2VuZGlmCisKIC8qIGk5MTVfc3VzcGVuZC5jICov CiBleHRlcm4gaW50IGk5MTVfc2F2ZV9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwogZXh0ZXJuIGludCBpOTE1X3Jlc3RvcmVfc3RhdGUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cG11LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZjUxNzMwYmM0OWUyCi0tLSAvZGV2L251bGwKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuYwpAQCAtMCwwICsxLDY1OCBAQAorLyoKKyAq IENvcHlyaWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9u IGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRo b3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmln aHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3Vi bGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBw ZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRv IHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJv dmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5n IHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUg U09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lO RCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBU SEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAq IFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlN LCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwgT1VUIE9GIE9S IElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFM SU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworCisjaW5jbHVkZSA8bGludXgvcGVy Zl9ldmVudC5oPgorI2luY2x1ZGUgPGxpbnV4L3BtX3J1bnRpbWUuaD4KKworI2luY2x1ZGUgImk5 MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9wbXUuaCIKKyNpbmNsdWRlICJpbnRlbF9yaW5nYnVm ZmVyLmgiCisKKy8qIEZyZXF1ZW5jeSBmb3IgdGhlIHNhbXBsaW5nIHRpbWVyIGZvciBldmVudHMg d2hpY2ggbmVlZCBpdC4gKi8KKyNkZWZpbmUgRlJFUVVFTkNZIDIwMAorI2RlZmluZSBQRVJJT0Qg bWF4X3QodTY0LCAxMDAwMCwgTlNFQ19QRVJfU0VDIC8gRlJFUVVFTkNZKQorCisjZGVmaW5lIEVO R0lORV9TQU1QTEVfTUFTSyBcCisJKEJJVChJOTE1X1NBTVBMRV9CVVNZKSB8IFwKKwkgQklUKEk5 MTVfU0FNUExFX1dBSVQpIHwgXAorCSBCSVQoSTkxNV9TQU1QTEVfU0VNQSkpCisKKyNkZWZpbmUg RU5HSU5FX1NBTVBMRV9CSVRTICgxIDw8IEk5MTVfUE1VX1NBTVBMRV9CSVRTKQorCitzdGF0aWMg Y3B1bWFza190IGk5MTVfcG11X2NwdW1hc2sgPSBDUFVfTUFTS19OT05FOworCitzdGF0aWMgdTgg ZW5naW5lX2NvbmZpZ19zYW1wbGUodTY0IGNvbmZpZykKK3sKKwlyZXR1cm4gY29uZmlnICYgSTkx NV9QTVVfU0FNUExFX01BU0s7Cit9CisKK3N0YXRpYyB1OCBlbmdpbmVfZXZlbnRfc2FtcGxlKHN0 cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlyZXR1cm4gZW5naW5lX2NvbmZpZ19zYW1wbGUo ZXZlbnQtPmF0dHIuY29uZmlnKTsKK30KKworc3RhdGljIHU4IGVuZ2luZV9ldmVudF9jbGFzcyhz dHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJcmV0dXJuIChldmVudC0+YXR0ci5jb25maWcg Pj4gSTkxNV9QTVVfQ0xBU1NfU0hJRlQpICYgMHhmZjsKK30KKworc3RhdGljIHU4IGVuZ2luZV9l dmVudF9pbnN0YW5jZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJcmV0dXJuIChldmVu dC0+YXR0ci5jb25maWcgPj4gSTkxNV9QTVVfU0FNUExFX0JJVFMpICYgMHhmZjsKK30KKworc3Rh dGljIGJvb2wgaXNfZW5naW5lX2NvbmZpZyh1NjQgY29uZmlnKQoreworCXJldHVybiBjb25maWcg PCBfX0k5MTVfUE1VX09USEVSKDApOworfQorCitzdGF0aWMgdW5zaWduZWQgaW50IGNvbmZpZ19l bmFibGVkX2JpdCh1NjQgY29uZmlnKQoreworCWlmIChpc19lbmdpbmVfY29uZmlnKGNvbmZpZykp CisJCXJldHVybiBlbmdpbmVfY29uZmlnX3NhbXBsZShjb25maWcpOworCWVsc2UKKwkJcmV0dXJu IEVOR0lORV9TQU1QTEVfQklUUyArIChjb25maWcgLSBfX0k5MTVfUE1VX09USEVSKDApKTsKK30K Kworc3RhdGljIHU2NCBjb25maWdfZW5hYmxlZF9tYXNrKHU2NCBjb25maWcpCit7CisJcmV0dXJu IEJJVF9VTEwoY29uZmlnX2VuYWJsZWRfYml0KGNvbmZpZykpOworfQorCitzdGF0aWMgYm9vbCBp c19lbmdpbmVfZXZlbnQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXJldHVybiBpc19l bmdpbmVfY29uZmlnKGV2ZW50LT5hdHRyLmNvbmZpZyk7Cit9CisKK3N0YXRpYyB1bnNpZ25lZCBp bnQgZXZlbnRfZW5hYmxlZF9iaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXJldHVy biBjb25maWdfZW5hYmxlZF9iaXQoZXZlbnQtPmF0dHIuY29uZmlnKTsKK30KKworc3RhdGljIGJv b2wgZ3JhYl9mb3JjZXdha2Uoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGJvb2wgZncp Cit7CisJaWYgKCFmdykKKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoaTkxNSwgRk9SQ0VX QUtFX0FMTCk7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQKK3VwZGF0ZV9zYW1w bGUoc3RydWN0IGk5MTVfcG11X3NhbXBsZSAqc2FtcGxlLCB1MzIgdW5pdCwgdTMyIHZhbCkKK3sK KwkvKgorCSAqIFNpbmNlIHdlIGFyZSBkb2luZyBzdG9jaGFzdGljIHNhbXBsaW5nIGZvciB0aGVz ZSBjb3VudGVycywKKwkgKiBhdmVyYWdlIHRoZSBkZWx0YSB3aXRoIHRoZSBwcmV2aW91cyB2YWx1 ZSBmb3IgYmV0dGVyIGFjY3VyYWN5LgorCSAqLworCXNhbXBsZS0+Y3VyICs9IGRpdl91NjQobXVs X3UzMl91MzIoc2FtcGxlLT5wcmV2ICsgdmFsLCB1bml0KSwgMik7CisJc2FtcGxlLT5wcmV2ID0g dmFsOworfQorCitzdGF0aWMgdm9pZCBlbmdpbmVzX3NhbXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCWVu dW0gaW50ZWxfZW5naW5lX2lkIGlkOworCWJvb2wgZncgPSBmYWxzZTsKKworCWlmICgoZGV2X3By aXYtPnBtdS5lbmFibGUgJiBFTkdJTkVfU0FNUExFX01BU0spID09IDApCisJCXJldHVybjsKKwor CWlmICghZGV2X3ByaXYtPmd0LmF3YWtlKQorCQlyZXR1cm47CisKKwlpZiAoIWludGVsX3J1bnRp bWVfcG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdikpCisJCXJldHVybjsKKworCWZvcl9lYWNoX2Vu Z2luZShlbmdpbmUsIGRldl9wcml2LCBpZCkgeworCQl1MzIgY3VycmVudF9zZXFubyA9IGludGVs X2VuZ2luZV9nZXRfc2Vxbm8oZW5naW5lKTsKKwkJdTMyIGxhc3Rfc2Vxbm8gPSBpbnRlbF9lbmdp bmVfbGFzdF9zdWJtaXQoZW5naW5lKTsKKwkJdTMyIHZhbDsKKworCQl2YWwgPSAhaTkxNV9zZXFu b19wYXNzZWQoY3VycmVudF9zZXFubywgbGFzdF9zZXFubyk7CisKKwkJdXBkYXRlX3NhbXBsZSgm ZW5naW5lLT5wbXUuc2FtcGxlW0k5MTVfU0FNUExFX0JVU1ldLAorCQkJICAgICAgUEVSSU9ELCB2 YWwpOworCisJCWlmICh2YWwgJiYgKGVuZ2luZS0+cG11LmVuYWJsZSAmCisJCSAgICAoQklUKEk5 MTVfU0FNUExFX1dBSVQpIHwgQklUKEk5MTVfU0FNUExFX1NFTUEpKSkpIHsKKwkJCWZ3ID0gZ3Jh Yl9mb3JjZXdha2UoZGV2X3ByaXYsIGZ3KTsKKworCQkJdmFsID0gSTkxNV9SRUFEX0ZXKFJJTkdf Q1RMKGVuZ2luZS0+bW1pb19iYXNlKSk7CisJCX0gZWxzZSB7CisJCQl2YWwgPSAwOworCQl9CisK KwkJdXBkYXRlX3NhbXBsZSgmZW5naW5lLT5wbXUuc2FtcGxlW0k5MTVfU0FNUExFX1dBSVRdLAor CQkJICAgICAgUEVSSU9ELCAhISh2YWwgJiBSSU5HX1dBSVQpKTsKKworCQl1cGRhdGVfc2FtcGxl KCZlbmdpbmUtPnBtdS5zYW1wbGVbSTkxNV9TQU1QTEVfU0VNQV0sCisJCQkgICAgICBQRVJJT0Qs ICEhKHZhbCAmIFJJTkdfV0FJVF9TRU1BUEhPUkUpKTsKKwl9CisKKwlpZiAoZncpCisJCWludGVs X3VuY29yZV9mb3JjZXdha2VfcHV0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCWludGVs X3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKK30KKworc3RhdGljIHZvaWQgZnJlcXVlbmN5X3Nh bXBsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaWYgKGRldl9wcml2 LT5wbXUuZW5hYmxlICYKKwkgICAgY29uZmlnX2VuYWJsZWRfbWFzayhJOTE1X1BNVV9BQ1RVQUxf RlJFUVVFTkNZKSkgeworCQl1MzIgdmFsOworCisJCXZhbCA9IGRldl9wcml2LT5ycHMuY3VyX2Zy ZXE7CisJCWlmIChkZXZfcHJpdi0+Z3QuYXdha2UgJiYKKwkJICAgIGludGVsX3J1bnRpbWVfcG1f Z2V0X2lmX2luX3VzZShkZXZfcHJpdikpIHsKKwkJCXZhbCA9IGludGVsX2dldF9jYWdmKGRldl9w cml2LAorCQkJCQkgICAgIEk5MTVfUkVBRF9OT1RSQUNFKEdFTjZfUlBTVEFUMSkpOworCQkJaW50 ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworCQl9CisKKwkJdXBkYXRlX3NhbXBsZSgmZGV2 X3ByaXYtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9GUkVRX0FDVF0sCisJCQkgICAgICAxLCBp bnRlbF9ncHVfZnJlcShkZXZfcHJpdiwgdmFsKSk7CisJfQorCisJaWYgKGRldl9wcml2LT5wbXUu ZW5hYmxlICYKKwkgICAgY29uZmlnX2VuYWJsZWRfbWFzayhJOTE1X1BNVV9SRVFVRVNURURfRlJF UVVFTkNZKSkgeworCQl1cGRhdGVfc2FtcGxlKCZkZXZfcHJpdi0+cG11LnNhbXBsZVtfX0k5MTVf U0FNUExFX0ZSRVFfUkVRXSwgMSwKKwkJCSAgICAgIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBk ZXZfcHJpdi0+cnBzLmN1cl9mcmVxKSk7CisJfQorfQorCitzdGF0aWMgZW51bSBocnRpbWVyX3Jl c3RhcnQgaTkxNV9zYW1wbGUoc3RydWN0IGhydGltZXIgKmhydGltZXIpCit7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoaHJ0aW1lciwgc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUsIHBtdS50aW1lcik7CisKKwlpZiAoaTkxNS0+cG11LmVuYWJsZSA9PSAw KQorCQlyZXR1cm4gSFJUSU1FUl9OT1JFU1RBUlQ7CisKKwllbmdpbmVzX3NhbXBsZShpOTE1KTsK KwlmcmVxdWVuY3lfc2FtcGxlKGk5MTUpOworCisJaHJ0aW1lcl9mb3J3YXJkX25vdyhocnRpbWVy LCBuc190b19rdGltZShQRVJJT0QpKTsKKwlyZXR1cm4gSFJUSU1FUl9SRVNUQVJUOworfQorCitz dGF0aWMgdm9pZCBpOTE1X3BtdV9ldmVudF9kZXN0cm95KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCkKK3sKKwlXQVJOX09OKGV2ZW50LT5wYXJlbnQpOworfQorCitzdGF0aWMgaW50IGVuZ2luZV9l dmVudF9pbml0KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11LCB0eXBlb2YoKmk5MTUp LCBwbXUuYmFzZSk7CisKKwlpZiAoIWludGVsX2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LCBlbmdp bmVfZXZlbnRfY2xhc3MoZXZlbnQpLAorCQkJCSAgICAgIGVuZ2luZV9ldmVudF9pbnN0YW5jZShl dmVudCkpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCXN3aXRjaCAoZW5naW5lX2V2ZW50X3NhbXBs ZShldmVudCkpIHsKKwljYXNlIEk5MTVfU0FNUExFX0JVU1k6CisJY2FzZSBJOTE1X1NBTVBMRV9X QUlUOgorCQlicmVhazsKKwljYXNlIEk5MTVfU0FNUExFX1NFTUE6CisJCWlmIChJTlRFTF9HRU4o aTkxNSkgPCA2KQorCQkJcmV0dXJuIC1FTk9ERVY7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXJl dHVybiAtRU5PRU5UOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGk5MTVfcG11 X2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigqaTkx NSksIHBtdS5iYXNlKTsKKwlpbnQgY3B1LCByZXQ7CisKKwlpZiAoZXZlbnQtPmF0dHIudHlwZSAh PSBldmVudC0+cG11LT50eXBlKQorCQlyZXR1cm4gLUVOT0VOVDsKKworCS8qIHVuc3VwcG9ydGVk IG1vZGVzIGFuZCBmaWx0ZXJzICovCisJaWYgKGV2ZW50LT5hdHRyLnNhbXBsZV9wZXJpb2QpIC8q IG5vIHNhbXBsaW5nICovCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGhhc19icmFuY2hfc3Rh Y2soZXZlbnQpKQorCQlyZXR1cm4gLUVPUE5PVFNVUFA7CisKKwlpZiAoZXZlbnQtPmNwdSA8IDAp CisJCXJldHVybiAtRUlOVkFMOworCisJY3B1ID0gY3B1bWFza19hbnlfYW5kKCZpOTE1X3BtdV9j cHVtYXNrLAorCQkJICAgICAgdG9wb2xvZ3lfc2libGluZ19jcHVtYXNrKGV2ZW50LT5jcHUpKTsK KwlpZiAoY3B1ID49IG5yX2NwdV9pZHMpCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKGlzX2Vu Z2luZV9ldmVudChldmVudCkpIHsKKwkJcmV0ID0gZW5naW5lX2V2ZW50X2luaXQoZXZlbnQpOwor CX0gZWxzZSB7CisJCXJldCA9IDA7CisJCXN3aXRjaCAoZXZlbnQtPmF0dHIuY29uZmlnKSB7CisJ CWNhc2UgSTkxNV9QTVVfQUNUVUFMX0ZSRVFVRU5DWToKKwkJCWlmIChJU19WQUxMRVlWSUVXKGk5 MTUpIHx8IElTX0NIRVJSWVZJRVcoaTkxNSkpCisJCQkJIC8qIFJlcXVpcmVzIGEgbXV0ZXggZm9y IHNhbXBsaW5nISAqLworCQkJCXJldCA9IC1FTk9ERVY7CisJCWNhc2UgSTkxNV9QTVVfUkVRVUVT VEVEX0ZSRVFVRU5DWToKKwkJCWlmIChJTlRFTF9HRU4oaTkxNSkgPCA2KQorCQkJCXJldCA9IC1F Tk9ERVY7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXJldCA9IC1FTk9FTlQ7CisJCQlicmVh azsKKwkJfQorCX0KKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJZXZlbnQtPmNwdSA9IGNw dTsKKwlpZiAoIWV2ZW50LT5wYXJlbnQpCisJCWV2ZW50LT5kZXN0cm95ID0gaTkxNV9wbXVfZXZl bnRfZGVzdHJveTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdTY0IF9faTkxNV9wbXVfZXZl bnRfcmVhZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCppOTE1KSwg cG11LmJhc2UpOworCXU2NCB2YWwgPSAwOworCisJaWYgKGlzX2VuZ2luZV9ldmVudChldmVudCkp IHsKKwkJdTggc2FtcGxlID0gZW5naW5lX2V2ZW50X3NhbXBsZShldmVudCk7CisJCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKworCQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3Vw X3VzZXIoaTkxNSwKKwkJCQkJCSAgZW5naW5lX2V2ZW50X2NsYXNzKGV2ZW50KSwKKwkJCQkJCSAg ZW5naW5lX2V2ZW50X2luc3RhbmNlKGV2ZW50KSk7CisKKwkJaWYgKFdBUk5fT05fT05DRSghZW5n aW5lKSkgeworCQkJLyogRG8gbm90aGluZyAqLworCQl9IGVsc2UgeworCQkJdmFsID0gZW5naW5l LT5wbXUuc2FtcGxlW3NhbXBsZV0uY3VyOworCQl9CisJfSBlbHNlIHsKKwkJc3dpdGNoIChldmVu dC0+YXR0ci5jb25maWcpIHsKKwkJY2FzZSBJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZOgorCQkJ dmFsID0KKwkJCSAgIGRpdl91NjQoaTkxNS0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX0ZSRVFf QUNUXS5jdXIsCisJCQkJICAgRlJFUVVFTkNZKTsKKwkJCWJyZWFrOworCQljYXNlIEk5MTVfUE1V X1JFUVVFU1RFRF9GUkVRVUVOQ1k6CisJCQl2YWwgPQorCQkJICAgZGl2X3U2NChpOTE1LT5wbXUu c2FtcGxlW19fSTkxNV9TQU1QTEVfRlJFUV9SRVFdLmN1ciwKKwkJCQkgICBGUkVRVUVOQ1kpOwor CQkJYnJlYWs7CisJCX0KKwl9CisKKwlyZXR1cm4gdmFsOworfQorCitzdGF0aWMgdm9pZCBpOTE1 X3BtdV9ldmVudF9yZWFkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlzdHJ1Y3QgaHdf cGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsKKwl1NjQgcHJldiwgbmV3OworCithZ2FpbjoK KwlwcmV2ID0gbG9jYWw2NF9yZWFkKCZod2MtPnByZXZfY291bnQpOworCW5ldyA9IF9faTkxNV9w bXVfZXZlbnRfcmVhZChldmVudCk7CisKKwlpZiAobG9jYWw2NF9jbXB4Y2hnKCZod2MtPnByZXZf Y291bnQsIHByZXYsIG5ldykgIT0gcHJldikKKwkJZ290byBhZ2FpbjsKKworCWxvY2FsNjRfYWRk KG5ldyAtIHByZXYsICZldmVudC0+Y291bnQpOworfQorCitzdGF0aWMgdm9pZCBpOTE1X3BtdV9l bmFibGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5wbXUsIHR5cGVvZigqaTkxNSksIHBt dS5iYXNlKTsKKwl1bnNpZ25lZCBpbnQgYml0ID0gZXZlbnRfZW5hYmxlZF9iaXQoZXZlbnQpOwor CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlzcGluX2xvY2tfaXJxc2F2ZSgmaTkxNS0+cG11Lmxv Y2ssIGZsYWdzKTsKKworCS8qCisJICogU3RhcnQgdGhlIHNhbXBsaW5nIHRpbWVyIHdoZW4gZW5h YmxpbmcgdGhlIGZpcnN0IGV2ZW50LgorCSAqLworCWlmIChpOTE1LT5wbXUuZW5hYmxlID09IDAp CisJCWhydGltZXJfc3RhcnRfcmFuZ2VfbnMoJmk5MTUtPnBtdS50aW1lciwKKwkJCQkgICAgICAg bnNfdG9fa3RpbWUoUEVSSU9EKSwgMCwKKwkJCQkgICAgICAgSFJUSU1FUl9NT0RFX1JFTF9QSU5O RUQpOworCisJLyoKKwkgKiBVcGRhdGUgdGhlIGJpdG1hc2sgb2YgZW5hYmxlZCBldmVudHMgYW5k IGluY3JlbWVudAorCSAqIHRoZSBldmVudCByZWZlcmVuY2UgY291bnRlci4KKwkgKi8KKwlHRU1f QlVHX09OKGJpdCA+PSBJOTE1X1BNVV9NQVNLX0JJVFMpOworCUdFTV9CVUdfT04oaTkxNS0+cG11 LmVuYWJsZV9jb3VudFtiaXRdID09IH4wKTsKKwlpOTE1LT5wbXUuZW5hYmxlIHw9IEJJVF9VTEwo Yml0KTsKKwlpOTE1LT5wbXUuZW5hYmxlX2NvdW50W2JpdF0rKzsKKworCS8qCisJICogRm9yIHBl ci1lbmdpbmUgZXZlbnRzIHRoZSBiaXRtYXNrIGFuZCByZWZlcmVuY2UgY291bnRpbmcKKwkgKiBp cyBzdG9yZWQgcGVyIGVuZ2luZS4KKwkgKi8KKwlpZiAoaXNfZW5naW5lX2V2ZW50KGV2ZW50KSkg eworCQl1OCBzYW1wbGUgPSBlbmdpbmVfZXZlbnRfc2FtcGxlKGV2ZW50KTsKKwkJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBf dXNlcihpOTE1LAorCQkJCQkJICBlbmdpbmVfZXZlbnRfY2xhc3MoZXZlbnQpLAorCQkJCQkJICBl bmdpbmVfZXZlbnRfaW5zdGFuY2UoZXZlbnQpKTsKKwkJR0VNX0JVR19PTighZW5naW5lKTsKKwkJ ZW5naW5lLT5wbXUuZW5hYmxlIHw9IEJJVChzYW1wbGUpOworCisJCUdFTV9CVUdfT04oc2FtcGxl ID49IEk5MTVfUE1VX1NBTVBMRV9CSVRTKTsKKwkJR0VNX0JVR19PTihlbmdpbmUtPnBtdS5lbmFi bGVfY291bnRbc2FtcGxlXSA9PSB+MCk7CisJCWVuZ2luZS0+cG11LmVuYWJsZV9jb3VudFtzYW1w bGVdKys7CisJfQorCisJLyoKKwkgKiBTdG9yZSB0aGUgY3VycmVudCBjb3VudGVyIHZhbHVlIHNv IHdlIGNhbiByZXBvcnQgdGhlIGNvcnJlY3QgZGVsdGEKKwkgKiBmb3IgYWxsIGxpc3RlbmVycy4g RXZlbiB3aGVuIHRoZSBldmVudCB3YXMgYWxyZWFkeSBlbmFibGVkIGFuZCBoYXMKKwkgKiBhbiBl eGlzdGluZyBub24temVybyB2YWx1ZS4KKwkgKi8KKwlsb2NhbDY0X3NldCgmZXZlbnQtPmh3LnBy ZXZfY291bnQsIF9faTkxNV9wbXVfZXZlbnRfcmVhZChldmVudCkpOworCisJc3Bpbl91bmxvY2tf aXJxcmVzdG9yZSgmaTkxNS0+cG11LmxvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQgaTkx NV9wbXVfZGlzYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwgdHlwZW9mKCpp OTE1KSwgcG11LmJhc2UpOworCXVuc2lnbmVkIGludCBiaXQgPSBldmVudF9lbmFibGVkX2JpdChl dmVudCk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZpOTE1 LT5wbXUubG9jaywgZmxhZ3MpOworCisJaWYgKGlzX2VuZ2luZV9ldmVudChldmVudCkpIHsKKwkJ dTggc2FtcGxlID0gZW5naW5lX2V2ZW50X3NhbXBsZShldmVudCk7CisJCXN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZTsKKworCQllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIo aTkxNSwKKwkJCQkJCSAgZW5naW5lX2V2ZW50X2NsYXNzKGV2ZW50KSwKKwkJCQkJCSAgZW5naW5l X2V2ZW50X2luc3RhbmNlKGV2ZW50KSk7CisJCUdFTV9CVUdfT04oIWVuZ2luZSk7CisJCUdFTV9C VUdfT04oc2FtcGxlID49IEk5MTVfUE1VX1NBTVBMRV9CSVRTKTsKKwkJR0VNX0JVR19PTihlbmdp bmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9PSAwKTsKKwkJLyoKKwkJICogRGVjcmVtZW50 IHRoZSByZWZlcmVuY2UgY291bnQgYW5kIGNsZWFyIHRoZSBlbmFibGVkCisJCSAqIGJpdG1hc2sg d2hlbiB0aGUgbGFzdCBsaXN0ZW5lciBvbiBhbiBldmVudCBnb2VzIGF3YXkuCisJCSAqLworCQlp ZiAoLS1lbmdpbmUtPnBtdS5lbmFibGVfY291bnRbc2FtcGxlXSA9PSAwKQorCQkJZW5naW5lLT5w bXUuZW5hYmxlICY9IH5CSVQoc2FtcGxlKTsKKwl9CisKKwlHRU1fQlVHX09OKGJpdCA+PSBJOTE1 X1BNVV9NQVNLX0JJVFMpOworCUdFTV9CVUdfT04oaTkxNS0+cG11LmVuYWJsZV9jb3VudFtiaXRd ID09IDApOworCS8qCisJICogRGVjcmVtZW50IHRoZSByZWZlcmVuY2UgY291bnQgYW5kIGNsZWFy IHRoZSBlbmFibGVkCisJICogYml0bWFzayB3aGVuIHRoZSBsYXN0IGxpc3RlbmVyIG9uIGFuIGV2 ZW50IGdvZXMgYXdheS4KKwkgKi8KKwlpZiAoLS1pOTE1LT5wbXUuZW5hYmxlX2NvdW50W2JpdF0g PT0gMCkKKwkJaTkxNS0+cG11LmVuYWJsZSAmPSB+QklUX1VMTChiaXQpOworCisJc3Bpbl91bmxv Y2tfaXJxcmVzdG9yZSgmaTkxNS0+cG11LmxvY2ssIGZsYWdzKTsKK30KKworc3RhdGljIHZvaWQg aTkxNV9wbXVfZXZlbnRfc3RhcnQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3Mp Cit7CisJaTkxNV9wbXVfZW5hYmxlKGV2ZW50KTsKKwlldmVudC0+aHcuc3RhdGUgPSAwOworfQor CitzdGF0aWMgdm9pZCBpOTE1X3BtdV9ldmVudF9zdG9wKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVu dCwgaW50IGZsYWdzKQoreworCWlmIChmbGFncyAmIFBFUkZfRUZfVVBEQVRFKQorCQlpOTE1X3Bt dV9ldmVudF9yZWFkKGV2ZW50KTsKKwlpOTE1X3BtdV9kaXNhYmxlKGV2ZW50KTsKKwlldmVudC0+ aHcuc3RhdGUgPSBQRVJGX0hFU19TVE9QUEVEOworfQorCitzdGF0aWMgaW50IGk5MTVfcG11X2V2 ZW50X2FkZChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykKK3sKKwlpZiAoZmxh Z3MgJiBQRVJGX0VGX1NUQVJUKQorCQlpOTE1X3BtdV9ldmVudF9zdGFydChldmVudCwgZmxhZ3Mp OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfcG11X2V2ZW50X2RlbChzdHJ1 Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludCBmbGFncykKK3sKKwlpOTE1X3BtdV9ldmVudF9zdG9w KGV2ZW50LCBQRVJGX0VGX1VQREFURSk7Cit9CisKK3N0YXRpYyBpbnQgaTkxNV9wbXVfZXZlbnRf ZXZlbnRfaWR4KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIHNzaXplX3QgaTkxNV9wbXVfZm9ybWF0X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAor CQkJCSAgICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0 cnVjdCBkZXZfZXh0X2F0dHJpYnV0ZSAqZWF0dHI7CisKKwllYXR0ciA9IGNvbnRhaW5lcl9vZihh dHRyLCBzdHJ1Y3QgZGV2X2V4dF9hdHRyaWJ1dGUsIGF0dHIpOworCXJldHVybiBzcHJpbnRmKGJ1 ZiwgIiVzXG4iLCAoY2hhciAqKWVhdHRyLT52YXIpOworfQorCisjZGVmaW5lIEk5MTVfUE1VX0ZP Uk1BVF9BVFRSKF9uYW1lLCBfY29uZmlnKSBcCisJKCYoKHN0cnVjdCBkZXZfZXh0X2F0dHJpYnV0 ZVtdKSB7IFwKKwkJeyAuYXR0ciA9IF9fQVRUUihfbmFtZSwgMDQ0NCwgaTkxNV9wbXVfZm9ybWF0 X3Nob3csIE5VTEwpLCBcCisJCSAgLnZhciA9ICh2b2lkICopX2NvbmZpZywgfSBcCisJfSlbMF0u YXR0ci5hdHRyKQorCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaTkxNV9wbXVfZm9ybWF0X2F0 dHJzW10gPSB7CisJSTkxNV9QTVVfRk9STUFUX0FUVFIoaTkxNV9ldmVudGlkLCAiY29uZmlnOjAt MjAiKSwKKwlOVUxMLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAg aTkxNV9wbXVfZm9ybWF0X2F0dHJfZ3JvdXAgPSB7CisJLm5hbWUgPSAiZm9ybWF0IiwKKwkuYXR0 cnMgPSBpOTE1X3BtdV9mb3JtYXRfYXR0cnMsCit9OworCitzdGF0aWMgc3NpemVfdCBpOTE1X3Bt dV9ldmVudF9zaG93KHN0cnVjdCBkZXZpY2UgKmRldiwKKwkJCQkgICBzdHJ1Y3QgZGV2aWNlX2F0 dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKQoreworCXN0cnVjdCBkZXZfZXh0X2F0dHJpYnV0ZSAq ZWF0dHI7CisKKwllYXR0ciA9IGNvbnRhaW5lcl9vZihhdHRyLCBzdHJ1Y3QgZGV2X2V4dF9hdHRy aWJ1dGUsIGF0dHIpOworCXJldHVybiBzcHJpbnRmKGJ1ZiwgImNvbmZpZz0weCVseFxuIiwgKHVu c2lnbmVkIGxvbmcpZWF0dHItPnZhcik7Cit9CisKKyNkZWZpbmUgSTkxNV9FVkVOVF9BVFRSKF9u YW1lLCBfY29uZmlnKSBcCisJKCYoKHN0cnVjdCBkZXZfZXh0X2F0dHJpYnV0ZVtdKSB7IFwKKwkJ eyAuYXR0ciA9IF9fQVRUUihfbmFtZSwgMDQ0NCwgaTkxNV9wbXVfZXZlbnRfc2hvdywgTlVMTCks IFwKKwkJICAudmFyID0gKHZvaWQgKilfY29uZmlnLCB9IFwKKwl9KVswXS5hdHRyLmF0dHIpCisK KyNkZWZpbmUgSTkxNV9FVkVOVF9TVFIoX25hbWUsIF9zdHIpIFwKKwkoJigoc3RydWN0IHBlcmZf cG11X2V2ZW50c19hdHRyW10pIHsgXAorCQl7IC5hdHRyCSAgICAgPSBfX0FUVFIoX25hbWUsIDA0 NDQsIHBlcmZfZXZlbnRfc3lzZnNfc2hvdywgTlVMTCksIFwKKwkJICAuaWQJICAgICA9IDAsIFwK KwkJICAuZXZlbnRfc3RyID0gX3N0ciwgfSBcCisJfSlbMF0uYXR0ci5hdHRyKQorCisjZGVmaW5l IEk5MTVfRVZFTlQoX25hbWUsIF9jb25maWcsIF91bml0KSBcCisJSTkxNV9FVkVOVF9BVFRSKF9u YW1lLCBfY29uZmlnKSwgXAorCUk5MTVfRVZFTlRfU1RSKF9uYW1lLnVuaXQsIF91bml0KQorCisj ZGVmaW5lIEk5MTVfRU5HSU5FX0VWRU5UKF9uYW1lLCBfY2xhc3MsIF9pbnN0YW5jZSwgX3NhbXBs ZSkgXAorCUk5MTVfRVZFTlRfQVRUUihfbmFtZSwgX19JOTE1X1BNVV9FTkdJTkUoX2NsYXNzLCBf aW5zdGFuY2UsIF9zYW1wbGUpKSwgXAorCUk5MTVfRVZFTlRfU1RSKF9uYW1lLnVuaXQsICJucyIp CisKKyNkZWZpbmUgSTkxNV9FTkdJTkVfRVZFTlRTKF9uYW1lLCBfY2xhc3MsIF9pbnN0YW5jZSkg XAorCUk5MTVfRU5HSU5FX0VWRU5UKF9uYW1lIyNfaW5zdGFuY2UtYnVzeSwgX2NsYXNzLCBfaW5z dGFuY2UsIEk5MTVfU0FNUExFX0JVU1kpLCBcCisJSTkxNV9FTkdJTkVfRVZFTlQoX25hbWUjI19p bnN0YW5jZS1zZW1hLCBfY2xhc3MsIF9pbnN0YW5jZSwgSTkxNV9TQU1QTEVfU0VNQSksIFwKKwlJ OTE1X0VOR0lORV9FVkVOVChfbmFtZSMjX2luc3RhbmNlLXdhaXQsIF9jbGFzcywgX2luc3RhbmNl LCBJOTE1X1NBTVBMRV9XQUlUKQorCitzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaTkxNV9wbXVf ZXZlbnRzX2F0dHJzW10gPSB7CisJSTkxNV9FTkdJTkVfRVZFTlRTKHJjcywgSTkxNV9FTkdJTkVf Q0xBU1NfUkVOREVSLCAwKSwKKwlJOTE1X0VOR0lORV9FVkVOVFMoYmNzLCBJOTE1X0VOR0lORV9D TEFTU19DT1BZLCAwKSwKKwlJOTE1X0VOR0lORV9FVkVOVFModmNzLCBJOTE1X0VOR0lORV9DTEFT U19WSURFTywgMCksCisJSTkxNV9FTkdJTkVfRVZFTlRTKHZjcywgSTkxNV9FTkdJTkVfQ0xBU1Nf VklERU8sIDEpLAorCUk5MTVfRU5HSU5FX0VWRU5UUyh2ZWNzLCBJOTE1X0VOR0lORV9DTEFTU19W SURFT19FTkhBTkNFLCAwKSwKKworCUk5MTVfRVZFTlQoYWN0dWFsLWZyZXF1ZW5jeSwgICAgSTkx NV9QTVVfQUNUVUFMX0ZSRVFVRU5DWSwgICAgIk1IeiIpLAorCUk5MTVfRVZFTlQocmVxdWVzdGVk LWZyZXF1ZW5jeSwgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5DWSwgIk1IeiIpLAorCisJTlVM TCwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwIGk5MTVfcG11X2V2 ZW50c19hdHRyX2dyb3VwID0geworCS5uYW1lID0gImV2ZW50cyIsCisJLmF0dHJzID0gaTkxNV9w bXVfZXZlbnRzX2F0dHJzLAorfTsKKworc3RhdGljIHNzaXplX3QKK2k5MTVfcG11X2dldF9hdHRy X2NwdW1hc2soc3RydWN0IGRldmljZSAqZGV2LAorCQkJICBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0 ZSAqYXR0ciwKKwkJCSAgY2hhciAqYnVmKQoreworCXJldHVybiBjcHVtYXBfcHJpbnRfdG9fcGFn ZWJ1Zih0cnVlLCBidWYsICZpOTE1X3BtdV9jcHVtYXNrKTsKK30KKworc3RhdGljIERFVklDRV9B VFRSKGNwdW1hc2ssIDA0NDQsIGk5MTVfcG11X2dldF9hdHRyX2NwdW1hc2ssIE5VTEwpOworCitz dGF0aWMgc3RydWN0IGF0dHJpYnV0ZSAqaTkxNV9jcHVtYXNrX2F0dHJzW10gPSB7CisJJmRldl9h dHRyX2NwdW1hc2suYXR0ciwKKwlOVUxMLAorfTsKKworc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgaTkxNV9wbXVfY3B1bWFza19hdHRyX2dyb3VwID0geworCS5hdHRycyA9IGk5MTVfY3B1 bWFza19hdHRycywKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICpp OTE1X3BtdV9hdHRyX2dyb3Vwc1tdID0geworCSZpOTE1X3BtdV9mb3JtYXRfYXR0cl9ncm91cCwK KwkmaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAsCisJJmk5MTVfcG11X2NwdW1hc2tfYXR0cl9n cm91cCwKKwlOVUxMCit9OworCitzdGF0aWMgaW50IGk5MTVfcG11X2NwdV9vbmxpbmUodW5zaWdu ZWQgaW50IGNwdSwgc3RydWN0IGhsaXN0X25vZGUgKm5vZGUpCit7CisJdW5zaWduZWQgaW50IHRh cmdldDsKKworCXRhcmdldCA9IGNwdW1hc2tfYW55X2FuZCgmaTkxNV9wbXVfY3B1bWFzaywgJmk5 MTVfcG11X2NwdW1hc2spOworCS8qIFNlbGVjdCB0aGUgZmlyc3Qgb25saW5lIENQVSBhcyBhIGRl c2lnbmF0ZWQgcmVhZGVyLiAqLworCWlmICh0YXJnZXQgPj0gbnJfY3B1X2lkcykKKwkJY3B1bWFz a19zZXRfY3B1KGNwdSwgJmk5MTVfcG11X2NwdW1hc2spOworCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgaTkxNV9wbXVfY3B1X29mZmxpbmUodW5zaWduZWQgaW50IGNwdSwgc3RydWN0IGhs aXN0X25vZGUgKm5vZGUpCit7CisJc3RydWN0IGk5MTVfcG11ICpwbXUgPSBobGlzdF9lbnRyeV9z YWZlKG5vZGUsIHR5cGVvZigqcG11KSwgbm9kZSk7CisJdW5zaWduZWQgaW50IHRhcmdldDsKKwor CWlmIChjcHVtYXNrX3Rlc3RfYW5kX2NsZWFyX2NwdShjcHUsICZpOTE1X3BtdV9jcHVtYXNrKSkg eworCQl0YXJnZXQgPSBjcHVtYXNrX2FueV9idXQodG9wb2xvZ3lfc2libGluZ19jcHVtYXNrKGNw dSksIGNwdSk7CisJCS8qIE1pZ3JhdGUgZXZlbnRzIGlmIHRoZXJlIGlzIGEgdmFsaWQgdGFyZ2V0 ICovCisJCWlmICh0YXJnZXQgPCBucl9jcHVfaWRzKSB7CisJCQljcHVtYXNrX3NldF9jcHUodGFy Z2V0LCAmaTkxNV9wbXVfY3B1bWFzayk7CisJCQlwZXJmX3BtdV9taWdyYXRlX2NvbnRleHQoJnBt dS0+YmFzZSwgY3B1LCB0YXJnZXQpOworCQl9CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3ZvaWQg aTkxNV9wbXVfcmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJaW50 IHJldDsKKworCWlmIChJTlRFTF9HRU4oaTkxNSkgPD0gMikgeworCQlEUk1fSU5GTygiUE1VIG5v dCBzdXBwb3J0ZWQgZm9yIHRoaXMgR1BVLiIpOworCQlyZXR1cm47CisJfQorCisJcmV0ID0gY3B1 aHBfc2V0dXBfc3RhdGVfbXVsdGkoQ1BVSFBfQVBfUEVSRl9YODZfVU5DT1JFX09OTElORSwKKwkJ CQkgICAgICAicGVyZi94ODYvaW50ZWwvaTkxNTpvbmxpbmUiLAorCQkJCSAgICAgIGk5MTVfcG11 X2NwdV9vbmxpbmUsCisJCQkJICAgICAgaTkxNV9wbXVfY3B1X29mZmxpbmUpOworCWlmIChyZXQp CisJCWdvdG8gZXJyX2hwX3N0YXRlOworCisJcmV0ID0gY3B1aHBfc3RhdGVfYWRkX2luc3RhbmNl KENQVUhQX0FQX1BFUkZfWDg2X1VOQ09SRV9PTkxJTkUsCisJCQkJICAgICAgICZpOTE1LT5wbXUu bm9kZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfaHBfaW5zdGFuY2U7CisKKwlpOTE1LT5wbXUu YmFzZS5hdHRyX2dyb3Vwcwk9IGk5MTVfcG11X2F0dHJfZ3JvdXBzOworCWk5MTUtPnBtdS5iYXNl LnRhc2tfY3R4X25yCT0gcGVyZl9pbnZhbGlkX2NvbnRleHQ7CisJaTkxNS0+cG11LmJhc2UuZXZl bnRfaW5pdAk9IGk5MTVfcG11X2V2ZW50X2luaXQ7CisJaTkxNS0+cG11LmJhc2UuYWRkCQk9IGk5 MTVfcG11X2V2ZW50X2FkZDsKKwlpOTE1LT5wbXUuYmFzZS5kZWwJCT0gaTkxNV9wbXVfZXZlbnRf ZGVsOworCWk5MTUtPnBtdS5iYXNlLnN0YXJ0CQk9IGk5MTVfcG11X2V2ZW50X3N0YXJ0OworCWk5 MTUtPnBtdS5iYXNlLnN0b3AJCT0gaTkxNV9wbXVfZXZlbnRfc3RvcDsKKwlpOTE1LT5wbXUuYmFz ZS5yZWFkCQk9IGk5MTVfcG11X2V2ZW50X3JlYWQ7CisJaTkxNS0+cG11LmJhc2UuZXZlbnRfaWR4 CT0gaTkxNV9wbXVfZXZlbnRfZXZlbnRfaWR4OworCisJc3Bpbl9sb2NrX2luaXQoJmk5MTUtPnBt dS5sb2NrKTsKKwlocnRpbWVyX2luaXQoJmk5MTUtPnBtdS50aW1lciwgQ0xPQ0tfTU9OT1RPTklD LCBIUlRJTUVSX01PREVfUkVMKTsKKwlpOTE1LT5wbXUudGltZXIuZnVuY3Rpb24gPSBpOTE1X3Nh bXBsZTsKKwlpOTE1LT5wbXUuZW5hYmxlID0gMDsKKworCXJldCA9IHBlcmZfcG11X3JlZ2lzdGVy KCZpOTE1LT5wbXUuYmFzZSwgImk5MTUiLCAtMSk7CisJaWYgKHJldCA9PSAwKQorCQlyZXR1cm47 CisKKwlpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0ID0gTlVMTDsKKworCVdBUk5fT04oY3B1aHBf c3RhdGVfcmVtb3ZlX2luc3RhbmNlKENQVUhQX0FQX1BFUkZfWDg2X1VOQ09SRV9PTkxJTkUsCisJ CQkJCSAgICAmaTkxNS0+cG11Lm5vZGUpKTsKKworZXJyX2hwX2luc3RhbmNlOgorCWNwdWhwX3Jl bW92ZV9tdWx0aV9zdGF0ZShDUFVIUF9BUF9QRVJGX1g4Nl9VTkNPUkVfT05MSU5FKTsKKworZXJy X2hwX3N0YXRlOgorCURSTV9OT1RFKCJGYWlsZWQgdG8gcmVnaXN0ZXIgUE1VISAoZXJyPSVkKVxu IiwgcmV0KTsKK30KKwordm9pZCBpOTE1X3BtdV91bnJlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1KQoreworCWlmICghaTkxNS0+cG11LmJhc2UuZXZlbnRfaW5pdCkKKwkJcmV0 dXJuOworCisJV0FSTl9PTihjcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2UoQ1BVSFBfQVBfUEVS Rl9YODZfVU5DT1JFX09OTElORSwKKwkJCQkJICAgICZpOTE1LT5wbXUubm9kZSkpOworCWNwdWhw X3JlbW92ZV9tdWx0aV9zdGF0ZShDUFVIUF9BUF9QRVJGX1g4Nl9VTkNPUkVfT05MSU5FKTsKKwor CWk5MTUtPnBtdS5lbmFibGUgPSAwOworCisJaHJ0aW1lcl9jYW5jZWwoJmk5MTUtPnBtdS50aW1l cik7CisKKwlwZXJmX3BtdV91bnJlZ2lzdGVyKCZpOTE1LT5wbXUuYmFzZSk7CisJaTkxNS0+cG11 LmJhc2UuZXZlbnRfaW5pdCA9IE5VTEw7Cit9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3BtdS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuaApuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjBmODg0ZGQzNDk2YQotLS0gL2Rldi9u dWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmgKQEAgLTAsMCArMSw5NiBA QAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE3IEludGVsIENvcnBvcmF0aW9uCisgKgorICogUGVy bWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24g b2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1 bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0byBkZWFsIGluIHRoZSBTb2Z0 d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCisg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUs IGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICogU29mdHdhcmUgaXMgZnVybmlz aGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisg KiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAo aW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxsIGJlIGluY2x1ZGVkIGluIGFs bCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlCisgKiBTb2Z0d2FyZS4KKyAq CisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBP RiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElN SVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQg U0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1Ig QU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4g QUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORworICogRlJPTSwg T1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBP VEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqLworI2lmbmRlZiBfX0k5 MTVfUE1VX0hfXworI2RlZmluZSBfX0k5MTVfUE1VX0hfXworCitlbnVtIHsKKwlfX0k5MTVfU0FN UExFX0ZSRVFfQUNUID0gMCwKKwlfX0k5MTVfU0FNUExFX0ZSRVFfUkVRLAorCV9fSTkxNV9OVU1f UE1VX1NBTVBMRVJTCit9OworCisvKioKKyAqIEhvdyBtYW55IGRpZmZlcmVudCBldmVudHMgd2Ug dHJhY2sgaW4gdGhlIGdsb2JhbCBQTVUgbWFzay4KKyAqCisgKiBJdCBpcyBhbHNvIHVzZWQgdG8g a25vdyB0byBuZWVkZWQgbnVtYmVyIG9mIGV2ZW50IHJlZmVyZW5jZSBjb3VudGVycy4KKyAqLwor I2RlZmluZSBJOTE1X1BNVV9NQVNLX0JJVFMgXAorCSgoMSA8PCBJOTE1X1BNVV9TQU1QTEVfQklU UykgKyBcCisJIChJOTE1X1BNVV9MQVNUICsgMSAtIF9fSTkxNV9QTVVfT1RIRVIoMCkpKQorCitz dHJ1Y3QgaTkxNV9wbXVfc2FtcGxlIHsKKwl1NjQgY3VyOworCXUzMiBwcmV2OworfTsKKworc3Ry dWN0IGk5MTVfcG11IHsKKwkvKioKKwkgKiBAbm9kZTogTGlzdCBub2RlIGZvciBDUFUgaG90cGx1 ZyBoYW5kbGluZy4KKwkgKi8KKwlzdHJ1Y3QgaGxpc3Rfbm9kZSBub2RlOworCS8qKgorCSAqIEBi YXNlOiBQTVUgYmFzZS4KKwkgKi8KKwlzdHJ1Y3QgcG11IGJhc2U7CisJLyoqCisJICogQGxvY2s6 IExvY2sgcHJvdGVjdGluZyBlbmFibGUgbWFzayBhbmQgcmVmIGNvdW50IGhhbmRsaW5nLgorCSAq LworCXNwaW5sb2NrX3QgbG9jazsKKwkvKioKKwkgKiBAdGltZXI6IFRpbWVyIGZvciBpbnRlcm5h bCBpOTE1IFBNVSBzYW1wbGluZy4KKwkgKi8KKwlzdHJ1Y3QgaHJ0aW1lciB0aW1lcjsKKwkvKioK KwkgKiBAZW5hYmxlOiBCaXRtYXNrIG9mIGFsbCBjdXJyZW50bHkgZW5hYmxlZCBldmVudHMuCisJ ICoKKwkgKiBCaXRzIGFyZSBkZXJpdmVkIGZyb20gdUFQSSBldmVudCBudW1iZXJzIGluIGEgd2F5 IHRoYXQgbG93IDE2IGJpdHMKKwkgKiBjb3JyZXNwb25kIHRvIGVuZ2luZSBldmVudCBfc2FtcGxl XyBfdHlwZV8gKEk5MTVfU0FNUExFX1FVRVVFRCBpcworCSAqIGJpdCAwKSwgYW5kIGhpZ2hlciBi aXRzIGNvcnJlc3BvbmQgdG8gb3RoZXIgZXZlbnRzIChmb3IgaW5zdGFuY2UKKwkgKiBJOTE1X1BN VV9BQ1RVQUxfRlJFUVVFTkNZIGlzIGJpdCAxNiBldGMpLgorCSAqCisJICogSW4gb3RoZXIgd29y ZHMsIGxvdyAxNiBiaXRzIGFyZSBub3QgcGVyIGVuZ2luZSBidXQgcGVyIGVuZ2luZQorCSAqIHNh bXBsZXIgdHlwZSwgd2hpbGUgdGhlIHVwcGVyIGJpdHMgYXJlIGRpcmVjdGx5IG1hcHBlZCB0byBv dGhlcgorCSAqIGV2ZW50IHR5cGVzLgorCSAqLworCXU2NCBlbmFibGU7CisJLyoqCisJICogQGVu YWJsZV9jb3VudDogUmVmZXJlbmNlIGNvdW50cyBmb3IgdGhlIGVuYWJsZWQgZXZlbnRzLgorCSAq CisJICogQXJyYXkgaW5kaWNlcyBhcmUgbWFwcGVkIGluIHRoZSBzYW1lIHdheSBhcyBiaXRzIGlu IHRoZSBAZW5hYmxlIGZpZWxkCisJICogYW5kIHRoZXkgYXJlIHVzZWQgdG8gY29udHJvbCBzYW1w bGluZyBvbi9vZmYgd2hlbiBtdWx0aXBsZSBjbGllbnRzCisJICogYXJlIHVzaW5nIHRoZSBQTVUg QVBJLgorCSAqLworCXVuc2lnbmVkIGludCBlbmFibGVfY291bnRbSTkxNV9QTVVfTUFTS19CSVRT XTsKKwkvKioKKwkgKiBAc2FtcGxlOiBDdXJyZW50IGFuZCBwcmV2aW91cyAocmF3KSBjb3VudGVy cyBmb3Igc2FtcGxpbmcgZXZlbnRzLgorCSAqCisJICogVGhlc2UgY291bnRlcnMgYXJlIHVwZGF0 ZWQgZnJvbSB0aGUgaTkxNSBQTVUgc2FtcGxpbmcgdGltZXIuCisJICoKKwkgKiBPbmx5IGdsb2Jh bCBjb3VudGVycyBhcmUgaGVsZCBoZXJlLCB3aGlsZSB0aGUgcGVyLWVuZ2luZSBvbmVzIGFyZSBp bgorCSAqIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MuCisJICovCisJc3RydWN0IGk5MTVfcG11X3Nh bXBsZSBzYW1wbGVbX19JOTE1X05VTV9QTVVfU0FNUExFUlNdOworfTsKKworI2VuZGlmCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAppbmRleCBlN2RiYTU1MzliMTEuLjQzNmNmZjkyMDJmNiAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAorKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCkBAIC0xODYsNiArMTg2LDkgQEAgc3RhdGljIGlubGluZSBib29s IGk5MTVfbW1pb19yZWdfdmFsaWQoaTkxNV9yZWdfdCByZWcpCiAjZGVmaW5lIFZJREVPX0VOSEFO Q0VNRU5UX0NMQVNTCTIKICNkZWZpbmUgQ09QWV9FTkdJTkVfQ0xBU1MJMwogI2RlZmluZSBPVEhF Ul9DTEFTUwkJNAorI2RlZmluZSBNQVhfRU5HSU5FX0NMQVNTCTQKKworI2RlZmluZSBNQVhfRU5H SU5FX0lOU1RBTkNFICAgIDEKIAogLyogUENJIGNvbmZpZyBzcGFjZSAqLwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IDhiODA1M2Q4ZTI0Yi4uODY3MDM2Y2M4MjA3 IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYworKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtMjAwLDYgKzIwMCwx NSBAQCBpbnRlbF9lbmdpbmVfc2V0dXAoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAogCUdFTV9CVUdfT04oaW5mby0+Y2xhc3MgPj0gQVJSQVlfU0laRShpbnRlbF9lbmdpbmVfY2xh c3NlcykpOwogCWNsYXNzX2luZm8gPSAmaW50ZWxfZW5naW5lX2NsYXNzZXNbaW5mby0+Y2xhc3Nd OwogCisJaWYgKEdFTV9XQVJOX09OKGluZm8tPmNsYXNzID4gTUFYX0VOR0lORV9DTEFTUykpCisJ CXJldHVybiAtRUlOVkFMOworCisJaWYgKEdFTV9XQVJOX09OKGluZm8tPmluc3RhbmNlID4gTUFY X0VOR0lORV9JTlNUQU5DRSkpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKEdFTV9XQVJOX09O KGRldl9wcml2LT5lbmdpbmVfY2xhc3NbaW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNlXSkpCisJ CXJldHVybiAtRUlOVkFMOworCiAJR0VNX0JVR19PTihkZXZfcHJpdi0+ZW5naW5lW2lkXSk7CiAJ ZW5naW5lID0ga3phbGxvYyhzaXplb2YoKmVuZ2luZSksIEdGUF9LRVJORUwpOwogCWlmICghZW5n aW5lKQpAQCAtMjI3LDYgKzIzNiw3IEBAIGludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlBVE9NSUNfSU5JVF9OT1RJRklFUl9IRUFEKCZlbmdp bmUtPmNvbnRleHRfc3RhdHVzX25vdGlmaWVyKTsKIAorCWRldl9wcml2LT5lbmdpbmVfY2xhc3Nb aW5mby0+Y2xhc3NdW2luZm8tPmluc3RhbmNlXSA9IGVuZ2luZTsKIAlkZXZfcHJpdi0+ZW5naW5l W2lkXSA9IGVuZ2luZTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE2MTYsNiArMTYyNiwzMSBAQCBib29s IGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lKQogCX0KIH0KIAorc3RhdGljIHU4IHVzZXJfY2xhc3NfbWFwW0k5MTVfRU5HSU5FX0NMQVNT X01BWF0gPSB7CisJW0k5MTVfRU5HSU5FX0NMQVNTX09USEVSXSA9IE9USEVSX0NMQVNTLAorCVtJ OTE1X0VOR0lORV9DTEFTU19SRU5ERVJdID0gUkVOREVSX0NMQVNTLAorCVtJOTE1X0VOR0lORV9D TEFTU19DT1BZXSA9IENPUFlfRU5HSU5FX0NMQVNTLAorCVtJOTE1X0VOR0lORV9DTEFTU19WSURF T10gPSBWSURFT19ERUNPREVfQ0xBU1MsCisJW0k5MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VOSEFO Q0VdID0gVklERU9fRU5IQU5DRU1FTlRfQ0xBU1MsCit9OworCitzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICoKK2ludGVsX2VuZ2luZV9sb29rdXBfdXNlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq aTkxNSwgdTggY2xhc3MsIHU4IGluc3RhbmNlKQoreworCWlmIChjbGFzcyA+PSBBUlJBWV9TSVpF KHVzZXJfY2xhc3NfbWFwKSkKKwkJcmV0dXJuIE5VTEw7CisKKwljbGFzcyA9IHVzZXJfY2xhc3Nf bWFwW2NsYXNzXTsKKworCWlmIChXQVJOX09OX09OQ0UoY2xhc3MgPiBNQVhfRU5HSU5FX0NMQVNT KSkKKwkJcmV0dXJuIE5VTEw7CisKKwlpZiAoaW5zdGFuY2UgPiBNQVhfRU5HSU5FX0lOU1RBTkNF KQorCQlyZXR1cm4gTlVMTDsKKworCXJldHVybiBpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2lu c3RhbmNlXTsKK30KKwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQog I2luY2x1ZGUgInNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIgogI2VuZGlmCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKaW5kZXggMGZlZGRhMTc0ODhjLi5iODRmYzYxMGE2YzEg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTUsNiArNSw3IEBA CiAjaW5jbHVkZSAiaTkxNV9nZW1fYmF0Y2hfcG9vbC5oIgogI2luY2x1ZGUgImk5MTVfZ2VtX3Jl cXVlc3QuaCIKICNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgorI2luY2x1ZGUgImk5MTVf cG11LmgiCiAjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgogCiAjZGVmaW5lIEk5MTVfQ01EX0hB U0hfT1JERVIgOQpAQCAtMzM1LDYgKzMzNiwyOCBAQCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzIHsK IAkJSTkxNV9TRUxGVEVTVF9ERUNMQVJFKGJvb2wgbW9jayA6IDEpOwogCX0gYnJlYWRjcnVtYnM7 CiAKKwlzdHJ1Y3QgeworCQkvKioKKwkJICogQGVuYWJsZTogQml0bWFzayBvZiBlbmFibGUgc2Ft cGxlIGV2ZW50cyBvbiB0aGlzIGVuZ2luZS4KKwkJICoKKwkJICogQml0cyBjb3JyZXNwb25kIHRv IHNhbXBsZSBldmVudCB0eXBlcywgZm9yIGluc3RhbmNlCisJCSAqIEk5MTVfU0FNUExFX1FVRVVF RCBpcyBiaXQgMCBldGMuCisJCSAqLworCQl1MzIgZW5hYmxlOworCQkvKioKKwkJICogQGVuYWJs ZV9jb3VudDogUmVmZXJlbmNlIGNvdW50IGZvciB0aGUgZW5hYmxlZCBzYW1wbGVycy4KKwkJICoK KwkJICogSW5kZXggbnVtYmVyIGNvcnJlc3BvbmRzIHRvIHRoZSBiaXQgbnVtYmVyIGZyb20gQGVu YWJsZS4KKwkJICovCisJCXVuc2lnbmVkIGludCBlbmFibGVfY291bnRbSTkxNV9QTVVfU0FNUExF X0JJVFNdOworCQkvKioKKwkJICogQHNhbXBsZTogQ291bnRlciB2YWx1ZXMgZm9yIHNhbXBsaW5n IGV2ZW50cy4KKwkJICoKKwkJICogT3VyIGludGVybmFsIHRpbWVyIHN0b3JlcyB0aGUgY3VycmVu dCBjb3VudGVycyBpbiB0aGlzIGZpZWxkLgorCQkgKi8KKwkJc3RydWN0IGk5MTVfcG11X3NhbXBs ZSBzYW1wbGVbSTkxNV9FTkdJTkVfU0FNUExFX01BWF07CisJfSBwbXU7CisKIAkvKgogCSAqIEEg cG9vbCBvZiBvYmplY3RzIHRvIHVzZSBhcyBzaGFkb3cgY29waWVzIG9mIGNsaWVudCBiYXRjaCBi dWZmZXJzCiAJICogd2hlbiB0aGUgY29tbWFuZCBwYXJzZXIgaXMgZW5hYmxlZC4gUHJldmVudHMg dGhlIGNsaWVudCBmcm9tCkBAIC04MzksNCArODYyLDcgQEAgdm9pZCBpbnRlbF9lbmdpbmVzX3Jl c2V0X2RlZmF1bHRfc3VibWlzc2lvbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7CiAK IGJvb2wgaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICplbmdpbmUpOwogCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2ludGVsX2VuZ2luZV9sb29r dXBfdXNlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTggY2xhc3MsIHU4IGluc3Rh bmNlKTsKKwogI2VuZGlmIC8qIF9JTlRFTF9SSU5HQlVGRkVSX0hfICovCmRpZmYgLS1naXQgYS9p bmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgK aW5kZXggNzI2NmI1MzE5MWVlLi4zZmNjM2ViYjE4NzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTg2 LDYgKzg2LDU0IEBAIGVudW0gaTkxNV9tb2NzX3RhYmxlX2luZGV4IHsKIAlJOTE1X01PQ1NfQ0FD SEVELAogfTsKIAorZW51bSBkcm1faTkxNV9nZW1fZW5naW5lX2NsYXNzIHsKKwlJOTE1X0VOR0lO RV9DTEFTU19PVEhFUiA9IDAsCisJSTkxNV9FTkdJTkVfQ0xBU1NfUkVOREVSID0gMSwKKwlJOTE1 X0VOR0lORV9DTEFTU19DT1BZID0gMiwKKwlJOTE1X0VOR0lORV9DTEFTU19WSURFTyA9IDMsCisJ STkxNV9FTkdJTkVfQ0xBU1NfVklERU9fRU5IQU5DRSA9IDQsCisJSTkxNV9FTkdJTkVfQ0xBU1Nf TUFYIC8qIG5vbi1BQkkgKi8KK307CisKKy8qKgorICogRE9DOiBwZXJmX2V2ZW50cyBleHBvc2Vk IGJ5IGk5MTUgdGhyb3VnaCAvc3lzL2J1cy9ldmVudF9zb3VyY2VzL2RyaXZlcnMvaTkxNQorICoK KyAqLworCitlbnVtIGRybV9pOTE1X3BtdV9lbmdpbmVfc2FtcGxlIHsKKwlJOTE1X1NBTVBMRV9C VVNZID0gMCwKKwlJOTE1X1NBTVBMRV9XQUlUID0gMSwKKwlJOTE1X1NBTVBMRV9TRU1BID0gMiwK KwlJOTE1X0VOR0lORV9TQU1QTEVfTUFYIC8qIG5vbi1BQkkgKi8KK307CisKKyNkZWZpbmUgSTkx NV9QTVVfU0FNUExFX0JJVFMgKDQpCisjZGVmaW5lIEk5MTVfUE1VX1NBTVBMRV9NQVNLICgweGYp CisjZGVmaW5lIEk5MTVfUE1VX1NBTVBMRV9JTlNUQU5DRV9CSVRTICg4KQorI2RlZmluZSBJOTE1 X1BNVV9DTEFTU19TSElGVCBcCisJKEk5MTVfUE1VX1NBTVBMRV9CSVRTICsgSTkxNV9QTVVfU0FN UExFX0lOU1RBTkNFX0JJVFMpCisKKyNkZWZpbmUgX19JOTE1X1BNVV9FTkdJTkUoY2xhc3MsIGlu c3RhbmNlLCBzYW1wbGUpIFwKKwkoKGNsYXNzKSA8PCBJOTE1X1BNVV9DTEFTU19TSElGVCB8IFwK KwkoaW5zdGFuY2UpIDw8IEk5MTVfUE1VX1NBTVBMRV9CSVRTIHwgXAorCShzYW1wbGUpKQorCisj ZGVmaW5lIEk5MTVfUE1VX0VOR0lORV9CVVNZKGNsYXNzLCBpbnN0YW5jZSkgXAorCV9fSTkxNV9Q TVVfRU5HSU5FKGNsYXNzLCBpbnN0YW5jZSwgSTkxNV9TQU1QTEVfQlVTWSkKKworI2RlZmluZSBJ OTE1X1BNVV9FTkdJTkVfV0FJVChjbGFzcywgaW5zdGFuY2UpIFwKKwlfX0k5MTVfUE1VX0VOR0lO RShjbGFzcywgaW5zdGFuY2UsIEk5MTVfU0FNUExFX1dBSVQpCisKKyNkZWZpbmUgSTkxNV9QTVVf RU5HSU5FX1NFTUEoY2xhc3MsIGluc3RhbmNlKSBcCisJX19JOTE1X1BNVV9FTkdJTkUoY2xhc3Ms IGluc3RhbmNlLCBJOTE1X1NBTVBMRV9TRU1BKQorCisjZGVmaW5lIF9fSTkxNV9QTVVfT1RIRVIo eCkgKF9fSTkxNV9QTVVfRU5HSU5FKDB4ZmYsIDB4ZmYsIDB4ZikgKyAxICsgKHgpKQorCisjZGVm aW5lIEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1kJX19JOTE1X1BNVV9PVEhFUigwKQorI2RlZmlu ZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZCV9fSTkxNV9QTVVfT1RIRVIoMSkKKworI2Rl ZmluZSBJOTE1X1BNVV9MQVNUIEk5MTVfUE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1kKKwogLyogRWFj aCByZWdpb24gaXMgYSBtaW5pbXVtIG9mIDE2aywgYW5kIHRoZXJlIGFyZSBhdCBtb3N0IDI1NSBv ZiB0aGVtLgogICovCiAjZGVmaW5lIEk5MTVfTlJfVEVYX1JFR0lPTlMgMjU1CS8qIHRhYmxlIHNp emUgMmsgLSBtYXhpbXVtIGR1ZSB0byB1c2UKLS0gCjIuOS41CgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK