From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: [CI 02/10] drm/i915/pmu: Expose a PMU interface for perf queries Date: Tue, 10 Oct 2017 16:18:59 +0100 Message-ID: <20171010151907.5594-2-tvrtko.ursulin@linux.intel.com> References: <20171010151907.5594-1-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x235.google.com (mail-wm0-x235.google.com [IPv6:2a00:1450:400c:c09::235]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4D41E6E530 for ; Tue, 10 Oct 2017 15:19:17 +0000 (UTC) Received: by mail-wm0-x235.google.com with SMTP id b189so6152113wmd.4 for ; Tue, 10 Oct 2017 08:19:17 -0700 (PDT) In-Reply-To: <20171010151907.5594-1-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Intel-gfx@lists.freedesktop.org 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 IHNvbW5lIGNvZGUgYWxpZ25tZW50IGNoYW5nZXMuIChDaHJpcyBXaWxzb24pCgp2MTQ6CiAqIFJl YmFzZS4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNv LnVrPgpTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwu Y29tPgpTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUm9nb3poa2luIDxkbWl0cnkudi5yb2dvemhraW5A aW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K Q2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogRG1pdHJ5IFJv Z296aGtpbiA8ZG1pdHJ5LnYucm9nb3poa2luQGludGVsLmNvbT4KQ2M6IFBldGVyIFppamxzdHJh IDxwZXRlcnpAaW5mcmFkZWFkLm9yZz4KUmV2aWV3ZWQtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNA Y2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAg ICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAg fCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgIDE0ICsK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMgICAgICAgICB8IDY1OCArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUuaCAg ICAgICAgIHwgIDk2ICsrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAg ICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgIHwgIDM1 ICsrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggfCAgMjYgKysKIGlu Y2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICB8ICA0OCArKysKIDkgZmlsZXMg Y2hhbmdlZCwgODgzIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3BtdS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9wbXUuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNjZkMjNiNjE5ZGIxLi5l OTRjZDY5YjcxNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlCkBAIC0yNiw2ICsyNiw3IEBAIGk5MTUt eSA6PSBpOTE1X2Rydi5vIFwKIAogaTkxNS0kKENPTkZJR19DT01QQVQpICAgKz0gaTkxNV9pb2Mz Mi5vCiBpOTE1LSQoQ09ORklHX0RFQlVHX0ZTKSArPSBpOTE1X2RlYnVnZnMubyBpbnRlbF9waXBl X2NyYy5vCitpOTE1LSQoQ09ORklHX1BFUkZfRVZFTlRTKSArPSBpOTE1X3BtdS5vCiAKICMgR0VN IGNvZGUKIGk5MTUteSArPSBpOTE1X2NtZF9wYXJzZXIubyBcCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YwppbmRleCA2NmZjMTU2YjI5NGEuLmQzNzNhODQwNTY2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCkBAIC0xMjE1LDYgKzEyMTUsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2RyaXZlcl9yZWdpc3Rl cihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJc3RydWN0IGRybV9kZXZpY2Ug KmRldiA9ICZkZXZfcHJpdi0+ZHJtOwogCiAJaTkxNV9nZW1fc2hyaW5rZXJfaW5pdChkZXZfcHJp dik7CisJaTkxNV9wbXVfcmVnaXN0ZXIoZGV2X3ByaXYpOwogCiAJLyoKIAkgKiBOb3RpZnkgYSB2 YWxpZCBzdXJmYWNlIGFmdGVyIG1vZGVzZXR0aW5nLApAQCAtMTI2OSw2ICsxMjcwLDcgQEAgc3Rh dGljIHZvaWQgaTkxNV9kcml2ZXJfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJaW50ZWxfb3ByZWdpb25fdW5yZWdpc3RlcihkZXZfcHJpdik7CiAKIAlpOTE1 X3BlcmZfdW5yZWdpc3RlcihkZXZfcHJpdik7CisJaTkxNV9wbXVfdW5yZWdpc3RlcihkZXZfcHJp dik7CiAKIAlpOTE1X3RlYXJkb3duX3N5c2ZzKGRldl9wcml2KTsKIAlpOTE1X2d1Y19sb2dfdW5y ZWdpc3RlcihkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCA4YzVkODk4NjA4 OTQuLmM2MzRhOGQxOTNiMyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC00MCw2ICs0MCw3 IEBACiAjaW5jbHVkZSA8bGludXgvaGFzaC5oPgogI2luY2x1ZGUgPGxpbnV4L2ludGVsLWlvbW11 Lmg+CiAjaW5jbHVkZSA8bGludXgva3JlZi5oPgorI2luY2x1ZGUgPGxpbnV4L3BlcmZfZXZlbnQu aD4KICNpbmNsdWRlIDxsaW51eC9wbV9xb3MuaD4KICNpbmNsdWRlIDxsaW51eC9yZXNlcnZhdGlv bi5oPgogI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+CkBAIC0yMjY2LDYgKzIyNjcsOCBAQCBz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmtlcm5l bF9jb250ZXh0OwogCS8qIENvbnRleHQgb25seSB0byBiZSB1c2VkIGZvciBpbmplY3RpbmcgcHJl ZW1wdGlvbiBjb21tYW5kcyAqLwogCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpwcmVlbXB0X2Nv bnRleHQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lX2NsYXNzW01BWF9FTkdJTkVf Q0xBU1MgKyAxXQorCQkJCQkgICAgW01BWF9FTkdJTkVfSU5TVEFOQ0UgKyAxXTsKIAlzdHJ1Y3Qg aTkxNV92bWEgKnNlbWFwaG9yZTsKIAogCXN0cnVjdCBkcm1fZG1hX2hhbmRsZSAqc3RhdHVzX3Bh Z2VfZG1haDsKQEAgLTI3MjgsNiArMjczMSw4IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsK IAkJaW50CWlycTsKIAl9IGxwZV9hdWRpbzsKIAorCXN0cnVjdCBpOTE1X3BtdSBwbXU7CisKIAkv KgogCSAqIE5PVEU6IFRoaXMgaXMgdGhlIGRyaTEvdW1zIGR1bmdlb24sIGRvbid0IGFkZCBzdHVm ZiBoZXJlLiBZb3VyIHBhdGNoCiAJICogd2lsbCBiZSByZWplY3RlZC4gSW5zdGVhZCBsb29rIGZv ciBhIGJldHRlciBwbGFjZS4KQEAgLTM5NzQsNiArMzk3OSwxNSBAQCBleHRlcm4gdm9pZCBpOTE1 X3BlcmZfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogZXh0ZXJuIHZv aWQgaTkxNV9wZXJmX3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 CiBleHRlcm4gdm9pZCBpOTE1X3BlcmZfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogCisvKiBpOTE1X3BtdS5jICovCisjaWZkZWYgQ09ORklHX1BFUkZfRVZF TlRTCit2b2lkIGk5MTVfcG11X3JlZ2lzdGVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 KTsKK3ZvaWQgaTkxNV9wbXVfdW5yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7CisjZWxzZQorc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcG11X3JlZ2lzdGVyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KSB7fQorc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcG11X3Vu cmVnaXN0ZXIoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpIHt9CisjZW5kaWYKKwogLyog aTkxNV9zdXNwZW5kLmMgKi8KIGV4dGVybiBpbnQgaTkxNV9zYXZlX3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gaW50IGk5MTVfcmVzdG9yZV9zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9wbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmMK bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mNTE3MzBiYzQ5ZTIKLS0t IC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3BtdS5jCkBAIC0wLDAg KzEsNjU4IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTcgSW50ZWwgQ29ycG9yYXRpb24KKyAq CisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lh dGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRlYWwgaW4g dGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0 YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNo LCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBT b2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0d2FyZSBp cyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25z OgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24g bm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVk ZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAqIFNvZnR3 YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdB UlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVU IE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBO TyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElB QkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhF UiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HCisg KiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUg VVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICovCisKKyNp bmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+CisjaW5jbHVkZSA8bGludXgvcG1fcnVudGltZS5o PgorCisjaW5jbHVkZSAiaTkxNV9kcnYuaCIKKyNpbmNsdWRlICJpOTE1X3BtdS5oIgorI2luY2x1 ZGUgImludGVsX3JpbmdidWZmZXIuaCIKKworLyogRnJlcXVlbmN5IGZvciB0aGUgc2FtcGxpbmcg dGltZXIgZm9yIGV2ZW50cyB3aGljaCBuZWVkIGl0LiAqLworI2RlZmluZSBGUkVRVUVOQ1kgMjAw CisjZGVmaW5lIFBFUklPRCBtYXhfdCh1NjQsIDEwMDAwLCBOU0VDX1BFUl9TRUMgLyBGUkVRVUVO Q1kpCisKKyNkZWZpbmUgRU5HSU5FX1NBTVBMRV9NQVNLIFwKKwkoQklUKEk5MTVfU0FNUExFX0JV U1kpIHwgXAorCSBCSVQoSTkxNV9TQU1QTEVfV0FJVCkgfCBcCisJIEJJVChJOTE1X1NBTVBMRV9T RU1BKSkKKworI2RlZmluZSBFTkdJTkVfU0FNUExFX0JJVFMgKDEgPDwgSTkxNV9QTVVfU0FNUExF X0JJVFMpCisKK3N0YXRpYyBjcHVtYXNrX3QgaTkxNV9wbXVfY3B1bWFzayA9IENQVV9NQVNLX05P TkU7CisKK3N0YXRpYyB1OCBlbmdpbmVfY29uZmlnX3NhbXBsZSh1NjQgY29uZmlnKQoreworCXJl dHVybiBjb25maWcgJiBJOTE1X1BNVV9TQU1QTEVfTUFTSzsKK30KKworc3RhdGljIHU4IGVuZ2lu ZV9ldmVudF9zYW1wbGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCXJldHVybiBlbmdp bmVfY29uZmlnX3NhbXBsZShldmVudC0+YXR0ci5jb25maWcpOworfQorCitzdGF0aWMgdTggZW5n aW5lX2V2ZW50X2NsYXNzKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlyZXR1cm4gKGV2 ZW50LT5hdHRyLmNvbmZpZyA+PiBJOTE1X1BNVV9DTEFTU19TSElGVCkgJiAweGZmOworfQorCitz dGF0aWMgdTggZW5naW5lX2V2ZW50X2luc3RhbmNlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkK K3sKKwlyZXR1cm4gKGV2ZW50LT5hdHRyLmNvbmZpZyA+PiBJOTE1X1BNVV9TQU1QTEVfQklUUykg JiAweGZmOworfQorCitzdGF0aWMgYm9vbCBpc19lbmdpbmVfY29uZmlnKHU2NCBjb25maWcpCit7 CisJcmV0dXJuIGNvbmZpZyA8IF9fSTkxNV9QTVVfT1RIRVIoMCk7Cit9CisKK3N0YXRpYyB1bnNp Z25lZCBpbnQgY29uZmlnX2VuYWJsZWRfYml0KHU2NCBjb25maWcpCit7CisJaWYgKGlzX2VuZ2lu ZV9jb25maWcoY29uZmlnKSkKKwkJcmV0dXJuIGVuZ2luZV9jb25maWdfc2FtcGxlKGNvbmZpZyk7 CisJZWxzZQorCQlyZXR1cm4gRU5HSU5FX1NBTVBMRV9CSVRTICsgKGNvbmZpZyAtIF9fSTkxNV9Q TVVfT1RIRVIoMCkpOworfQorCitzdGF0aWMgdTY0IGNvbmZpZ19lbmFibGVkX21hc2sodTY0IGNv bmZpZykKK3sKKwlyZXR1cm4gQklUX1VMTChjb25maWdfZW5hYmxlZF9iaXQoY29uZmlnKSk7Cit9 CisKK3N0YXRpYyBib29sIGlzX2VuZ2luZV9ldmVudChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQp Cit7CisJcmV0dXJuIGlzX2VuZ2luZV9jb25maWcoZXZlbnQtPmF0dHIuY29uZmlnKTsKK30KKwor c3RhdGljIHVuc2lnbmVkIGludCBldmVudF9lbmFibGVkX2JpdChzdHJ1Y3QgcGVyZl9ldmVudCAq ZXZlbnQpCit7CisJcmV0dXJuIGNvbmZpZ19lbmFibGVkX2JpdChldmVudC0+YXR0ci5jb25maWcp OworfQorCitzdGF0aWMgYm9vbCBncmFiX2ZvcmNld2FrZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwgYm9vbCBmdykKK3sKKwlpZiAoIWZ3KQorCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X2dldChpOTE1LCBGT1JDRVdBS0VfQUxMKTsKKworCXJldHVybiB0cnVlOworfQorCitzdGF0aWMg dm9pZAordXBkYXRlX3NhbXBsZShzdHJ1Y3QgaTkxNV9wbXVfc2FtcGxlICpzYW1wbGUsIHUzMiB1 bml0LCB1MzIgdmFsKQoreworCS8qCisJICogU2luY2Ugd2UgYXJlIGRvaW5nIHN0b2NoYXN0aWMg c2FtcGxpbmcgZm9yIHRoZXNlIGNvdW50ZXJzLAorCSAqIGF2ZXJhZ2UgdGhlIGRlbHRhIHdpdGgg dGhlIHByZXZpb3VzIHZhbHVlIGZvciBiZXR0ZXIgYWNjdXJhY3kuCisJICovCisJc2FtcGxlLT5j dXIgKz0gZGl2X3U2NChtdWxfdTMyX3UzMihzYW1wbGUtPnByZXYgKyB2YWwsIHVuaXQpLCAyKTsK KwlzYW1wbGUtPnByZXYgPSB2YWw7Cit9CisKK3N0YXRpYyB2b2lkIGVuZ2luZXNfc2FtcGxlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfZW5naW5l X2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CisJYm9vbCBmdyA9IGZhbHNl OworCisJaWYgKChkZXZfcHJpdi0+cG11LmVuYWJsZSAmIEVOR0lORV9TQU1QTEVfTUFTSykgPT0g MCkKKwkJcmV0dXJuOworCisJaWYgKCFkZXZfcHJpdi0+Z3QuYXdha2UpCisJCXJldHVybjsKKwor CWlmICghaW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKGRldl9wcml2KSkKKwkJcmV0dXJu OworCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7CisJCXUzMiBjdXJy ZW50X3NlcW5vID0gaW50ZWxfZW5naW5lX2dldF9zZXFubyhlbmdpbmUpOworCQl1MzIgbGFzdF9z ZXFubyA9IGludGVsX2VuZ2luZV9sYXN0X3N1Ym1pdChlbmdpbmUpOworCQl1MzIgdmFsOworCisJ CXZhbCA9ICFpOTE1X3NlcW5vX3Bhc3NlZChjdXJyZW50X3NlcW5vLCBsYXN0X3NlcW5vKTsKKwor CQl1cGRhdGVfc2FtcGxlKCZlbmdpbmUtPnBtdS5zYW1wbGVbSTkxNV9TQU1QTEVfQlVTWV0sCisJ CQkgICAgICBQRVJJT0QsIHZhbCk7CisKKwkJaWYgKHZhbCAmJiAoZW5naW5lLT5wbXUuZW5hYmxl ICYKKwkJICAgIChCSVQoSTkxNV9TQU1QTEVfV0FJVCkgfCBCSVQoSTkxNV9TQU1QTEVfU0VNQSkp KSkgeworCQkJZncgPSBncmFiX2ZvcmNld2FrZShkZXZfcHJpdiwgZncpOworCisJCQl2YWwgPSBJ OTE1X1JFQURfRlcoUklOR19DVEwoZW5naW5lLT5tbWlvX2Jhc2UpKTsKKwkJfSBlbHNlIHsKKwkJ CXZhbCA9IDA7CisJCX0KKworCQl1cGRhdGVfc2FtcGxlKCZlbmdpbmUtPnBtdS5zYW1wbGVbSTkx NV9TQU1QTEVfV0FJVF0sCisJCQkgICAgICBQRVJJT0QsICEhKHZhbCAmIFJJTkdfV0FJVCkpOwor CisJCXVwZGF0ZV9zYW1wbGUoJmVuZ2luZS0+cG11LnNhbXBsZVtJOTE1X1NBTVBMRV9TRU1BXSwK KwkJCSAgICAgIFBFUklPRCwgISEodmFsICYgUklOR19XQUlUX1NFTUFQSE9SRSkpOworCX0KKwor CWlmIChmdykKKwkJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9wdXQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOworCisJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOworfQorCitzdGF0aWMg dm9pZCBmcmVxdWVuY3lfc2FtcGxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3sKKwlpZiAoZGV2X3ByaXYtPnBtdS5lbmFibGUgJgorCSAgICBjb25maWdfZW5hYmxlZF9tYXNr KEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1kpKSB7CisJCXUzMiB2YWw7CisKKwkJdmFsID0gZGV2 X3ByaXYtPnJwcy5jdXJfZnJlcTsKKwkJaWYgKGRldl9wcml2LT5ndC5hd2FrZSAmJgorCQkgICAg aW50ZWxfcnVudGltZV9wbV9nZXRfaWZfaW5fdXNlKGRldl9wcml2KSkgeworCQkJdmFsID0gaW50 ZWxfZ2V0X2NhZ2YoZGV2X3ByaXYsCisJCQkJCSAgICAgSTkxNV9SRUFEX05PVFJBQ0UoR0VONl9S UFNUQVQxKSk7CisJCQlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7CisJCX0KKworCQl1 cGRhdGVfc2FtcGxlKCZkZXZfcHJpdi0+cG11LnNhbXBsZVtfX0k5MTVfU0FNUExFX0ZSRVFfQUNU XSwKKwkJCSAgICAgIDEsIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCB2YWwpKTsKKwl9CisKKwlp ZiAoZGV2X3ByaXYtPnBtdS5lbmFibGUgJgorCSAgICBjb25maWdfZW5hYmxlZF9tYXNrKEk5MTVf UE1VX1JFUVVFU1RFRF9GUkVRVUVOQ1kpKSB7CisJCXVwZGF0ZV9zYW1wbGUoJmRldl9wcml2LT5w bXUuc2FtcGxlW19fSTkxNV9TQU1QTEVfRlJFUV9SRVFdLCAxLAorCQkJICAgICAgaW50ZWxfZ3B1 X2ZyZXEoZGV2X3ByaXYsIGRldl9wcml2LT5ycHMuY3VyX2ZyZXEpKTsKKwl9Cit9CisKK3N0YXRp YyBlbnVtIGhydGltZXJfcmVzdGFydCBpOTE1X3NhbXBsZShzdHJ1Y3QgaHJ0aW1lciAqaHJ0aW1l cikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZiho cnRpbWVyLCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSwgcG11LnRpbWVyKTsKKworCWlmIChpOTE1 LT5wbXUuZW5hYmxlID09IDApCisJCXJldHVybiBIUlRJTUVSX05PUkVTVEFSVDsKKworCWVuZ2lu ZXNfc2FtcGxlKGk5MTUpOworCWZyZXF1ZW5jeV9zYW1wbGUoaTkxNSk7CisKKwlocnRpbWVyX2Zv cndhcmRfbm93KGhydGltZXIsIG5zX3RvX2t0aW1lKFBFUklPRCkpOworCXJldHVybiBIUlRJTUVS X1JFU1RBUlQ7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfcG11X2V2ZW50X2Rlc3Ryb3koc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50KQoreworCVdBUk5fT04oZXZlbnQtPnBhcmVudCk7Cit9CisKK3N0 YXRpYyBpbnQgZW5naW5lX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQorewor CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0KKwkJY29udGFpbmVyX29mKGV2ZW50LT5w bXUsIHR5cGVvZigqaTkxNSksIHBtdS5iYXNlKTsKKworCWlmICghaW50ZWxfZW5naW5lX2xvb2t1 cF91c2VyKGk5MTUsIGVuZ2luZV9ldmVudF9jbGFzcyhldmVudCksCisJCQkJICAgICAgZW5naW5l X2V2ZW50X2luc3RhbmNlKGV2ZW50KSkpCisJCXJldHVybiAtRU5PREVWOworCisJc3dpdGNoIChl bmdpbmVfZXZlbnRfc2FtcGxlKGV2ZW50KSkgeworCWNhc2UgSTkxNV9TQU1QTEVfQlVTWToKKwlj YXNlIEk5MTVfU0FNUExFX1dBSVQ6CisJCWJyZWFrOworCWNhc2UgSTkxNV9TQU1QTEVfU0VNQToK KwkJaWYgKElOVEVMX0dFTihpOTE1KSA8IDYpCisJCQlyZXR1cm4gLUVOT0RFVjsKKwkJYnJlYWs7 CisJZGVmYXVsdDoKKwkJcmV0dXJuIC1FTk9FTlQ7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0 YXRpYyBpbnQgaTkxNV9wbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7 CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQt PnBtdSwgdHlwZW9mKCppOTE1KSwgcG11LmJhc2UpOworCWludCBjcHUsIHJldDsKKworCWlmIChl dmVudC0+YXR0ci50eXBlICE9IGV2ZW50LT5wbXUtPnR5cGUpCisJCXJldHVybiAtRU5PRU5UOwor CisJLyogdW5zdXBwb3J0ZWQgbW9kZXMgYW5kIGZpbHRlcnMgKi8KKwlpZiAoZXZlbnQtPmF0dHIu c2FtcGxlX3BlcmlvZCkgLyogbm8gc2FtcGxpbmcgKi8KKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlp ZiAoaGFzX2JyYW5jaF9zdGFjayhldmVudCkpCisJCXJldHVybiAtRU9QTk9UU1VQUDsKKworCWlm IChldmVudC0+Y3B1IDwgMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljcHUgPSBjcHVtYXNrX2Fu eV9hbmQoJmk5MTVfcG11X2NwdW1hc2ssCisJCQkgICAgICB0b3BvbG9neV9zaWJsaW5nX2NwdW1h c2soZXZlbnQtPmNwdSkpOworCWlmIChjcHUgPj0gbnJfY3B1X2lkcykKKwkJcmV0dXJuIC1FTk9E RVY7CisKKwlpZiAoaXNfZW5naW5lX2V2ZW50KGV2ZW50KSkgeworCQlyZXQgPSBlbmdpbmVfZXZl bnRfaW5pdChldmVudCk7CisJfSBlbHNlIHsKKwkJcmV0ID0gMDsKKwkJc3dpdGNoIChldmVudC0+ YXR0ci5jb25maWcpIHsKKwkJY2FzZSBJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZOgorCQkJaWYg KElTX1ZBTExFWVZJRVcoaTkxNSkgfHwgSVNfQ0hFUlJZVklFVyhpOTE1KSkKKwkJCQkgLyogUmVx dWlyZXMgYSBtdXRleCBmb3Igc2FtcGxpbmchICovCisJCQkJcmV0ID0gLUVOT0RFVjsKKwkJY2Fz ZSBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZOgorCQkJaWYgKElOVEVMX0dFTihpOTE1KSA8 IDYpCisJCQkJcmV0ID0gLUVOT0RFVjsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJcmV0ID0g LUVOT0VOVDsKKwkJCWJyZWFrOworCQl9CisJfQorCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisK KwlldmVudC0+Y3B1ID0gY3B1OworCWlmICghZXZlbnQtPnBhcmVudCkKKwkJZXZlbnQtPmRlc3Ry b3kgPSBpOTE1X3BtdV9ldmVudF9kZXN0cm95OworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB1 NjQgX19pOTE1X3BtdV9ldmVudF9yZWFkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVudC0+cG11 LCB0eXBlb2YoKmk5MTUpLCBwbXUuYmFzZSk7CisJdTY0IHZhbCA9IDA7CisKKwlpZiAoaXNfZW5n aW5lX2V2ZW50KGV2ZW50KSkgeworCQl1OCBzYW1wbGUgPSBlbmdpbmVfZXZlbnRfc2FtcGxlKGV2 ZW50KTsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJCWVuZ2luZSA9IGlu dGVsX2VuZ2luZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkJICBlbmdpbmVfZXZlbnRfY2xhc3Mo ZXZlbnQpLAorCQkJCQkJICBlbmdpbmVfZXZlbnRfaW5zdGFuY2UoZXZlbnQpKTsKKworCQlpZiAo V0FSTl9PTl9PTkNFKCFlbmdpbmUpKSB7CisJCQkvKiBEbyBub3RoaW5nICovCisJCX0gZWxzZSB7 CisJCQl2YWwgPSBlbmdpbmUtPnBtdS5zYW1wbGVbc2FtcGxlXS5jdXI7CisJCX0KKwl9IGVsc2Ug eworCQlzd2l0Y2ggKGV2ZW50LT5hdHRyLmNvbmZpZykgeworCQljYXNlIEk5MTVfUE1VX0FDVFVB TF9GUkVRVUVOQ1k6CisJCQl2YWwgPQorCQkJICAgZGl2X3U2NChpOTE1LT5wbXUuc2FtcGxlW19f STkxNV9TQU1QTEVfRlJFUV9BQ1RdLmN1ciwKKwkJCQkgICBGUkVRVUVOQ1kpOworCQkJYnJlYWs7 CisJCWNhc2UgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5DWToKKwkJCXZhbCA9CisJCQkgICBk aXZfdTY0KGk5MTUtPnBtdS5zYW1wbGVbX19JOTE1X1NBTVBMRV9GUkVRX1JFUV0uY3VyLAorCQkJ CSAgIEZSRVFVRU5DWSk7CisJCQlicmVhazsKKwkJfQorCX0KKworCXJldHVybiB2YWw7Cit9CisK K3N0YXRpYyB2b2lkIGk5MTVfcG11X2V2ZW50X3JlYWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50 KQoreworCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3OworCXU2NCBwcmV2 LCBuZXc7CisKK2FnYWluOgorCXByZXYgPSBsb2NhbDY0X3JlYWQoJmh3Yy0+cHJldl9jb3VudCk7 CisJbmV3ID0gX19pOTE1X3BtdV9ldmVudF9yZWFkKGV2ZW50KTsKKworCWlmIChsb2NhbDY0X2Nt cHhjaGcoJmh3Yy0+cHJldl9jb3VudCwgcHJldiwgbmV3KSAhPSBwcmV2KQorCQlnb3RvIGFnYWlu OworCisJbG9jYWw2NF9hZGQobmV3IC0gcHJldiwgJmV2ZW50LT5jb3VudCk7Cit9CisKK3N0YXRp YyB2b2lkIGk5MTVfcG11X2VuYWJsZShzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpCit7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPQorCQljb250YWluZXJfb2YoZXZlbnQtPnBtdSwg dHlwZW9mKCppOTE1KSwgcG11LmJhc2UpOworCXVuc2lnbmVkIGludCBiaXQgPSBldmVudF9lbmFi bGVkX2JpdChldmVudCk7CisJdW5zaWduZWQgbG9uZyBmbGFnczsKKworCXNwaW5fbG9ja19pcnFz YXZlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOworCisJLyoKKwkgKiBTdGFydCB0aGUgc2FtcGxp bmcgdGltZXIgd2hlbiBlbmFibGluZyB0aGUgZmlyc3QgZXZlbnQuCisJICovCisJaWYgKGk5MTUt PnBtdS5lbmFibGUgPT0gMCkKKwkJaHJ0aW1lcl9zdGFydF9yYW5nZV9ucygmaTkxNS0+cG11LnRp bWVyLAorCQkJCSAgICAgICBuc190b19rdGltZShQRVJJT0QpLCAwLAorCQkJCSAgICAgICBIUlRJ TUVSX01PREVfUkVMX1BJTk5FRCk7CisKKwkvKgorCSAqIFVwZGF0ZSB0aGUgYml0bWFzayBvZiBl bmFibGVkIGV2ZW50cyBhbmQgaW5jcmVtZW50CisJICogdGhlIGV2ZW50IHJlZmVyZW5jZSBjb3Vu dGVyLgorCSAqLworCUdFTV9CVUdfT04oYml0ID49IEk5MTVfUE1VX01BU0tfQklUUyk7CisJR0VN X0JVR19PTihpOTE1LT5wbXUuZW5hYmxlX2NvdW50W2JpdF0gPT0gfjApOworCWk5MTUtPnBtdS5l bmFibGUgfD0gQklUX1VMTChiaXQpOworCWk5MTUtPnBtdS5lbmFibGVfY291bnRbYml0XSsrOwor CisJLyoKKwkgKiBGb3IgcGVyLWVuZ2luZSBldmVudHMgdGhlIGJpdG1hc2sgYW5kIHJlZmVyZW5j ZSBjb3VudGluZworCSAqIGlzIHN0b3JlZCBwZXIgZW5naW5lLgorCSAqLworCWlmIChpc19lbmdp bmVfZXZlbnQoZXZlbnQpKSB7CisJCXU4IHNhbXBsZSA9IGVuZ2luZV9ldmVudF9zYW1wbGUoZXZl bnQpOworCQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisKKwkJZW5naW5lID0gaW50 ZWxfZW5naW5lX2xvb2t1cF91c2VyKGk5MTUsCisJCQkJCQkgIGVuZ2luZV9ldmVudF9jbGFzcyhl dmVudCksCisJCQkJCQkgIGVuZ2luZV9ldmVudF9pbnN0YW5jZShldmVudCkpOworCQlHRU1fQlVH X09OKCFlbmdpbmUpOworCQllbmdpbmUtPnBtdS5lbmFibGUgfD0gQklUKHNhbXBsZSk7CisKKwkJ R0VNX0JVR19PTihzYW1wbGUgPj0gSTkxNV9QTVVfU0FNUExFX0JJVFMpOworCQlHRU1fQlVHX09O KGVuZ2luZS0+cG11LmVuYWJsZV9jb3VudFtzYW1wbGVdID09IH4wKTsKKwkJZW5naW5lLT5wbXUu ZW5hYmxlX2NvdW50W3NhbXBsZV0rKzsKKwl9CisKKwkvKgorCSAqIFN0b3JlIHRoZSBjdXJyZW50 IGNvdW50ZXIgdmFsdWUgc28gd2UgY2FuIHJlcG9ydCB0aGUgY29ycmVjdCBkZWx0YQorCSAqIGZv ciBhbGwgbGlzdGVuZXJzLiBFdmVuIHdoZW4gdGhlIGV2ZW50IHdhcyBhbHJlYWR5IGVuYWJsZWQg YW5kIGhhcworCSAqIGFuIGV4aXN0aW5nIG5vbi16ZXJvIHZhbHVlLgorCSAqLworCWxvY2FsNjRf c2V0KCZldmVudC0+aHcucHJldl9jb3VudCwgX19pOTE1X3BtdV9ldmVudF9yZWFkKGV2ZW50KSk7 CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOworfQor CitzdGF0aWMgdm9pZCBpOTE1X3BtdV9kaXNhYmxlKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9CisJCWNvbnRhaW5lcl9vZihldmVu dC0+cG11LCB0eXBlb2YoKmk5MTUpLCBwbXUuYmFzZSk7CisJdW5zaWduZWQgaW50IGJpdCA9IGV2 ZW50X2VuYWJsZWRfYml0KGV2ZW50KTsKKwl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJc3Bpbl9s b2NrX2lycXNhdmUoJmk5MTUtPnBtdS5sb2NrLCBmbGFncyk7CisKKwlpZiAoaXNfZW5naW5lX2V2 ZW50KGV2ZW50KSkgeworCQl1OCBzYW1wbGUgPSBlbmdpbmVfZXZlbnRfc2FtcGxlKGV2ZW50KTsK KwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCisJCWVuZ2luZSA9IGludGVsX2Vu Z2luZV9sb29rdXBfdXNlcihpOTE1LAorCQkJCQkJICBlbmdpbmVfZXZlbnRfY2xhc3MoZXZlbnQp LAorCQkJCQkJICBlbmdpbmVfZXZlbnRfaW5zdGFuY2UoZXZlbnQpKTsKKwkJR0VNX0JVR19PTigh ZW5naW5lKTsKKwkJR0VNX0JVR19PTihzYW1wbGUgPj0gSTkxNV9QTVVfU0FNUExFX0JJVFMpOwor CQlHRU1fQlVHX09OKGVuZ2luZS0+cG11LmVuYWJsZV9jb3VudFtzYW1wbGVdID09IDApOworCQkv KgorCQkgKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBhbmQgY2xlYXIgdGhlIGVuYWJs ZWQKKwkJICogYml0bWFzayB3aGVuIHRoZSBsYXN0IGxpc3RlbmVyIG9uIGFuIGV2ZW50IGdvZXMg YXdheS4KKwkJICovCisJCWlmICgtLWVuZ2luZS0+cG11LmVuYWJsZV9jb3VudFtzYW1wbGVdID09 IDApCisJCQllbmdpbmUtPnBtdS5lbmFibGUgJj0gfkJJVChzYW1wbGUpOworCX0KKworCUdFTV9C VUdfT04oYml0ID49IEk5MTVfUE1VX01BU0tfQklUUyk7CisJR0VNX0JVR19PTihpOTE1LT5wbXUu ZW5hYmxlX2NvdW50W2JpdF0gPT0gMCk7CisJLyoKKwkgKiBEZWNyZW1lbnQgdGhlIHJlZmVyZW5j ZSBjb3VudCBhbmQgY2xlYXIgdGhlIGVuYWJsZWQKKwkgKiBiaXRtYXNrIHdoZW4gdGhlIGxhc3Qg bGlzdGVuZXIgb24gYW4gZXZlbnQgZ29lcyBhd2F5LgorCSAqLworCWlmICgtLWk5MTUtPnBtdS5l bmFibGVfY291bnRbYml0XSA9PSAwKQorCQlpOTE1LT5wbXUuZW5hYmxlICY9IH5CSVRfVUxMKGJp dCk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZpOTE1LT5wbXUubG9jaywgZmxhZ3MpOwor fQorCitzdGF0aWMgdm9pZCBpOTE1X3BtdV9ldmVudF9zdGFydChzdHJ1Y3QgcGVyZl9ldmVudCAq ZXZlbnQsIGludCBmbGFncykKK3sKKwlpOTE1X3BtdV9lbmFibGUoZXZlbnQpOworCWV2ZW50LT5o dy5zdGF0ZSA9IDA7Cit9CisKK3N0YXRpYyB2b2lkIGk5MTVfcG11X2V2ZW50X3N0b3Aoc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQgZmxhZ3MpCit7CisJaWYgKGZsYWdzICYgUEVSRl9FRl9V UERBVEUpCisJCWk5MTVfcG11X2V2ZW50X3JlYWQoZXZlbnQpOworCWk5MTVfcG11X2Rpc2FibGUo ZXZlbnQpOworCWV2ZW50LT5ody5zdGF0ZSA9IFBFUkZfSEVTX1NUT1BQRUQ7Cit9CisKK3N0YXRp YyBpbnQgaTkxNV9wbXVfZXZlbnRfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZs YWdzKQoreworCWlmIChmbGFncyAmIFBFUkZfRUZfU1RBUlQpCisJCWk5MTVfcG11X2V2ZW50X3N0 YXJ0KGV2ZW50LCBmbGFncyk7CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIHZvaWQgaTkxNV9w bXVfZXZlbnRfZGVsKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQoreworCWk5 MTVfcG11X2V2ZW50X3N0b3AoZXZlbnQsIFBFUkZfRUZfVVBEQVRFKTsKK30KKworc3RhdGljIGlu dCBpOTE1X3BtdV9ldmVudF9ldmVudF9pZHgoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQorewor CXJldHVybiAwOworfQorCitzdGF0aWMgc3NpemVfdCBpOTE1X3BtdV9mb3JtYXRfc2hvdyhzdHJ1 Y3QgZGV2aWNlICpkZXYsCisJCQkJICAgIHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBj aGFyICpidWYpCit7CisJc3RydWN0IGRldl9leHRfYXR0cmlidXRlICplYXR0cjsKKworCWVhdHRy ID0gY29udGFpbmVyX29mKGF0dHIsIHN0cnVjdCBkZXZfZXh0X2F0dHJpYnV0ZSwgYXR0cik7CisJ cmV0dXJuIHNwcmludGYoYnVmLCAiJXNcbiIsIChjaGFyICopZWF0dHItPnZhcik7Cit9CisKKyNk ZWZpbmUgSTkxNV9QTVVfRk9STUFUX0FUVFIoX25hbWUsIF9jb25maWcpIFwKKwkoJigoc3RydWN0 IGRldl9leHRfYXR0cmlidXRlW10pIHsgXAorCQl7IC5hdHRyID0gX19BVFRSKF9uYW1lLCAwNDQ0 LCBpOTE1X3BtdV9mb3JtYXRfc2hvdywgTlVMTCksIFwKKwkJICAudmFyID0gKHZvaWQgKilfY29u ZmlnLCB9IFwKKwl9KVswXS5hdHRyLmF0dHIpCisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpp OTE1X3BtdV9mb3JtYXRfYXR0cnNbXSA9IHsKKwlJOTE1X1BNVV9GT1JNQVRfQVRUUihpOTE1X2V2 ZW50aWQsICJjb25maWc6MC0yMCIpLAorCU5VTEwsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0 IGF0dHJpYnV0ZV9ncm91cCBpOTE1X3BtdV9mb3JtYXRfYXR0cl9ncm91cCA9IHsKKwkubmFtZSA9 ICJmb3JtYXQiLAorCS5hdHRycyA9IGk5MTVfcG11X2Zvcm1hdF9hdHRycywKK307CisKK3N0YXRp YyBzc2l6ZV90IGk5MTVfcG11X2V2ZW50X3Nob3coc3RydWN0IGRldmljZSAqZGV2LAorCQkJCSAg IHN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLCBjaGFyICpidWYpCit7CisJc3RydWN0IGRl dl9leHRfYXR0cmlidXRlICplYXR0cjsKKworCWVhdHRyID0gY29udGFpbmVyX29mKGF0dHIsIHN0 cnVjdCBkZXZfZXh0X2F0dHJpYnV0ZSwgYXR0cik7CisJcmV0dXJuIHNwcmludGYoYnVmLCAiY29u ZmlnPTB4JWx4XG4iLCAodW5zaWduZWQgbG9uZyllYXR0ci0+dmFyKTsKK30KKworI2RlZmluZSBJ OTE1X0VWRU5UX0FUVFIoX25hbWUsIF9jb25maWcpIFwKKwkoJigoc3RydWN0IGRldl9leHRfYXR0 cmlidXRlW10pIHsgXAorCQl7IC5hdHRyID0gX19BVFRSKF9uYW1lLCAwNDQ0LCBpOTE1X3BtdV9l dmVudF9zaG93LCBOVUxMKSwgXAorCQkgIC52YXIgPSAodm9pZCAqKV9jb25maWcsIH0gXAorCX0p WzBdLmF0dHIuYXR0cikKKworI2RlZmluZSBJOTE1X0VWRU5UX1NUUihfbmFtZSwgX3N0cikgXAor CSgmKChzdHJ1Y3QgcGVyZl9wbXVfZXZlbnRzX2F0dHJbXSkgeyBcCisJCXsgLmF0dHIJICAgICA9 IF9fQVRUUihfbmFtZSwgMDQ0NCwgcGVyZl9ldmVudF9zeXNmc19zaG93LCBOVUxMKSwgXAorCQkg IC5pZAkgICAgID0gMCwgXAorCQkgIC5ldmVudF9zdHIgPSBfc3RyLCB9IFwKKwl9KVswXS5hdHRy LmF0dHIpCisKKyNkZWZpbmUgSTkxNV9FVkVOVChfbmFtZSwgX2NvbmZpZywgX3VuaXQpIFwKKwlJ OTE1X0VWRU5UX0FUVFIoX25hbWUsIF9jb25maWcpLCBcCisJSTkxNV9FVkVOVF9TVFIoX25hbWUu dW5pdCwgX3VuaXQpCisKKyNkZWZpbmUgSTkxNV9FTkdJTkVfRVZFTlQoX25hbWUsIF9jbGFzcywg X2luc3RhbmNlLCBfc2FtcGxlKSBcCisJSTkxNV9FVkVOVF9BVFRSKF9uYW1lLCBfX0k5MTVfUE1V X0VOR0lORShfY2xhc3MsIF9pbnN0YW5jZSwgX3NhbXBsZSkpLCBcCisJSTkxNV9FVkVOVF9TVFIo X25hbWUudW5pdCwgIm5zIikKKworI2RlZmluZSBJOTE1X0VOR0lORV9FVkVOVFMoX25hbWUsIF9j bGFzcywgX2luc3RhbmNlKSBcCisJSTkxNV9FTkdJTkVfRVZFTlQoX25hbWUjI19pbnN0YW5jZS1i dXN5LCBfY2xhc3MsIF9pbnN0YW5jZSwgSTkxNV9TQU1QTEVfQlVTWSksIFwKKwlJOTE1X0VOR0lO RV9FVkVOVChfbmFtZSMjX2luc3RhbmNlLXNlbWEsIF9jbGFzcywgX2luc3RhbmNlLCBJOTE1X1NB TVBMRV9TRU1BKSwgXAorCUk5MTVfRU5HSU5FX0VWRU5UKF9uYW1lIyNfaW5zdGFuY2Utd2FpdCwg X2NsYXNzLCBfaW5zdGFuY2UsIEk5MTVfU0FNUExFX1dBSVQpCisKK3N0YXRpYyBzdHJ1Y3QgYXR0 cmlidXRlICppOTE1X3BtdV9ldmVudHNfYXR0cnNbXSA9IHsKKwlJOTE1X0VOR0lORV9FVkVOVFMo cmNzLCBJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIsIDApLAorCUk5MTVfRU5HSU5FX0VWRU5UUyhi Y3MsIEk5MTVfRU5HSU5FX0NMQVNTX0NPUFksIDApLAorCUk5MTVfRU5HSU5FX0VWRU5UUyh2Y3Ms IEk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPLCAwKSwKKwlJOTE1X0VOR0lORV9FVkVOVFModmNzLCBJ OTE1X0VOR0lORV9DTEFTU19WSURFTywgMSksCisJSTkxNV9FTkdJTkVfRVZFTlRTKHZlY3MsIEk5 MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VOSEFOQ0UsIDApLAorCisJSTkxNV9FVkVOVChhY3R1YWwt ZnJlcXVlbmN5LCAgICBJOTE1X1BNVV9BQ1RVQUxfRlJFUVVFTkNZLCAgICAiTUh6IiksCisJSTkx NV9FVkVOVChyZXF1ZXN0ZWQtZnJlcXVlbmN5LCBJOTE1X1BNVV9SRVFVRVNURURfRlJFUVVFTkNZ LCAiTUh6IiksCisKKwlOVUxMLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVf Z3JvdXAgaTkxNV9wbXVfZXZlbnRzX2F0dHJfZ3JvdXAgPSB7CisJLm5hbWUgPSAiZXZlbnRzIiwK KwkuYXR0cnMgPSBpOTE1X3BtdV9ldmVudHNfYXR0cnMsCit9OworCitzdGF0aWMgc3NpemVfdAor aTkxNV9wbXVfZ2V0X2F0dHJfY3B1bWFzayhzdHJ1Y3QgZGV2aWNlICpkZXYsCisJCQkgIHN0cnVj dCBkZXZpY2VfYXR0cmlidXRlICphdHRyLAorCQkJICBjaGFyICpidWYpCit7CisJcmV0dXJuIGNw dW1hcF9wcmludF90b19wYWdlYnVmKHRydWUsIGJ1ZiwgJmk5MTVfcG11X2NwdW1hc2spOworfQor CitzdGF0aWMgREVWSUNFX0FUVFIoY3B1bWFzaywgMDQ0NCwgaTkxNV9wbXVfZ2V0X2F0dHJfY3B1 bWFzaywgTlVMTCk7CisKK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICppOTE1X2NwdW1hc2tfYXR0 cnNbXSA9IHsKKwkmZGV2X2F0dHJfY3B1bWFzay5hdHRyLAorCU5VTEwsCit9OworCitzdGF0aWMg c3RydWN0IGF0dHJpYnV0ZV9ncm91cCBpOTE1X3BtdV9jcHVtYXNrX2F0dHJfZ3JvdXAgPSB7CisJ LmF0dHJzID0gaTkxNV9jcHVtYXNrX2F0dHJzLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBh dHRyaWJ1dGVfZ3JvdXAgKmk5MTVfcG11X2F0dHJfZ3JvdXBzW10gPSB7CisJJmk5MTVfcG11X2Zv cm1hdF9hdHRyX2dyb3VwLAorCSZpOTE1X3BtdV9ldmVudHNfYXR0cl9ncm91cCwKKwkmaTkxNV9w bXVfY3B1bWFza19hdHRyX2dyb3VwLAorCU5VTEwKK307CisKK3N0YXRpYyBpbnQgaTkxNV9wbXVf Y3B1X29ubGluZSh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKK3sK Kwl1bnNpZ25lZCBpbnQgdGFyZ2V0OworCisJdGFyZ2V0ID0gY3B1bWFza19hbnlfYW5kKCZpOTE1 X3BtdV9jcHVtYXNrLCAmaTkxNV9wbXVfY3B1bWFzayk7CisJLyogU2VsZWN0IHRoZSBmaXJzdCBv bmxpbmUgQ1BVIGFzIGEgZGVzaWduYXRlZCByZWFkZXIuICovCisJaWYgKHRhcmdldCA+PSBucl9j cHVfaWRzKQorCQljcHVtYXNrX3NldF9jcHUoY3B1LCAmaTkxNV9wbXVfY3B1bWFzayk7CisKKwly ZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpOTE1X3BtdV9jcHVfb2ZmbGluZSh1bnNpZ25lZCBp bnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZSAqbm9kZSkKK3sKKwlzdHJ1Y3QgaTkxNV9wbXUgKnBt dSA9IGhsaXN0X2VudHJ5X3NhZmUobm9kZSwgdHlwZW9mKCpwbXUpLCBub2RlKTsKKwl1bnNpZ25l ZCBpbnQgdGFyZ2V0OworCisJaWYgKGNwdW1hc2tfdGVzdF9hbmRfY2xlYXJfY3B1KGNwdSwgJmk5 MTVfcG11X2NwdW1hc2spKSB7CisJCXRhcmdldCA9IGNwdW1hc2tfYW55X2J1dCh0b3BvbG9neV9z aWJsaW5nX2NwdW1hc2soY3B1KSwgY3B1KTsKKwkJLyogTWlncmF0ZSBldmVudHMgaWYgdGhlcmUg aXMgYSB2YWxpZCB0YXJnZXQgKi8KKwkJaWYgKHRhcmdldCA8IG5yX2NwdV9pZHMpIHsKKwkJCWNw dW1hc2tfc2V0X2NwdSh0YXJnZXQsICZpOTE1X3BtdV9jcHVtYXNrKTsKKwkJCXBlcmZfcG11X21p Z3JhdGVfY29udGV4dCgmcG11LT5iYXNlLCBjcHUsIHRhcmdldCk7CisJCX0KKwl9CisKKwlyZXR1 cm4gMDsKK30KKwordm9pZCBpOTE1X3BtdV9yZWdpc3RlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKK3sKKwlpbnQgcmV0OworCisJaWYgKElOVEVMX0dFTihpOTE1KSA8PSAyKSB7CisJ CURSTV9JTkZPKCJQTVUgbm90IHN1cHBvcnRlZCBmb3IgdGhpcyBHUFUuIik7CisJCXJldHVybjsK Kwl9CisKKwlyZXQgPSBjcHVocF9zZXR1cF9zdGF0ZV9tdWx0aShDUFVIUF9BUF9QRVJGX1g4Nl9V TkNPUkVfT05MSU5FLAorCQkJCSAgICAgICJwZXJmL3g4Ni9pbnRlbC9pOTE1Om9ubGluZSIsCisJ CQkJICAgICAgaTkxNV9wbXVfY3B1X29ubGluZSwKKwkJCQkgICAgICBpOTE1X3BtdV9jcHVfb2Zm bGluZSk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfaHBfc3RhdGU7CisKKwlyZXQgPSBjcHVocF9z dGF0ZV9hZGRfaW5zdGFuY2UoQ1BVSFBfQVBfUEVSRl9YODZfVU5DT1JFX09OTElORSwKKwkJCQkg ICAgICAgJmk5MTUtPnBtdS5ub2RlKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9ocF9pbnN0YW5j ZTsKKworCWk5MTUtPnBtdS5iYXNlLmF0dHJfZ3JvdXBzCT0gaTkxNV9wbXVfYXR0cl9ncm91cHM7 CisJaTkxNS0+cG11LmJhc2UudGFza19jdHhfbnIJPSBwZXJmX2ludmFsaWRfY29udGV4dDsKKwlp OTE1LT5wbXUuYmFzZS5ldmVudF9pbml0CT0gaTkxNV9wbXVfZXZlbnRfaW5pdDsKKwlpOTE1LT5w bXUuYmFzZS5hZGQJCT0gaTkxNV9wbXVfZXZlbnRfYWRkOworCWk5MTUtPnBtdS5iYXNlLmRlbAkJ PSBpOTE1X3BtdV9ldmVudF9kZWw7CisJaTkxNS0+cG11LmJhc2Uuc3RhcnQJCT0gaTkxNV9wbXVf ZXZlbnRfc3RhcnQ7CisJaTkxNS0+cG11LmJhc2Uuc3RvcAkJPSBpOTE1X3BtdV9ldmVudF9zdG9w OworCWk5MTUtPnBtdS5iYXNlLnJlYWQJCT0gaTkxNV9wbXVfZXZlbnRfcmVhZDsKKwlpOTE1LT5w bXUuYmFzZS5ldmVudF9pZHgJPSBpOTE1X3BtdV9ldmVudF9ldmVudF9pZHg7CisKKwlzcGluX2xv Y2tfaW5pdCgmaTkxNS0+cG11LmxvY2spOworCWhydGltZXJfaW5pdCgmaTkxNS0+cG11LnRpbWVy LCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOworCWk5MTUtPnBtdS50aW1lci5m dW5jdGlvbiA9IGk5MTVfc2FtcGxlOworCWk5MTUtPnBtdS5lbmFibGUgPSAwOworCisJcmV0ID0g cGVyZl9wbXVfcmVnaXN0ZXIoJmk5MTUtPnBtdS5iYXNlLCAiaTkxNSIsIC0xKTsKKwlpZiAocmV0 ID09IDApCisJCXJldHVybjsKKworCWk5MTUtPnBtdS5iYXNlLmV2ZW50X2luaXQgPSBOVUxMOwor CisJV0FSTl9PTihjcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2UoQ1BVSFBfQVBfUEVSRl9YODZf VU5DT1JFX09OTElORSwKKwkJCQkJICAgICZpOTE1LT5wbXUubm9kZSkpOworCitlcnJfaHBfaW5z dGFuY2U6CisJY3B1aHBfcmVtb3ZlX211bHRpX3N0YXRlKENQVUhQX0FQX1BFUkZfWDg2X1VOQ09S RV9PTkxJTkUpOworCitlcnJfaHBfc3RhdGU6CisJRFJNX05PVEUoIkZhaWxlZCB0byByZWdpc3Rl ciBQTVUhIChlcnI9JWQpXG4iLCByZXQpOworfQorCit2b2lkIGk5MTVfcG11X3VucmVnaXN0ZXIo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJaWYgKCFpOTE1LT5wbXUuYmFzZS5l dmVudF9pbml0KQorCQlyZXR1cm47CisKKwlXQVJOX09OKGNwdWhwX3N0YXRlX3JlbW92ZV9pbnN0 YW5jZShDUFVIUF9BUF9QRVJGX1g4Nl9VTkNPUkVfT05MSU5FLAorCQkJCQkgICAgJmk5MTUtPnBt dS5ub2RlKSk7CisJY3B1aHBfcmVtb3ZlX211bHRpX3N0YXRlKENQVUhQX0FQX1BFUkZfWDg2X1VO Q09SRV9PTkxJTkUpOworCisJaTkxNS0+cG11LmVuYWJsZSA9IDA7CisKKwlocnRpbWVyX2NhbmNl bCgmaTkxNS0+cG11LnRpbWVyKTsKKworCXBlcmZfcG11X3VucmVnaXN0ZXIoJmk5MTUtPnBtdS5i YXNlKTsKKwlpOTE1LT5wbXUuYmFzZS5ldmVudF9pbml0ID0gTlVMTDsKK30KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcG11LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3BtdS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uMGY4ODRk ZDM0OTZhCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9wbXUu aApAQCAtMCwwICsxLDk2IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTcgSW50ZWwgQ29ycG9y YXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJn ZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFu ZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRv IGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRo b3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBT b2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBj b25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBl cm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwg YmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUK KyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBX SVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNM VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU WSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1F TlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERF UlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElU WSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBB UklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FS RSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgor ICovCisjaWZuZGVmIF9fSTkxNV9QTVVfSF9fCisjZGVmaW5lIF9fSTkxNV9QTVVfSF9fCisKK2Vu dW0geworCV9fSTkxNV9TQU1QTEVfRlJFUV9BQ1QgPSAwLAorCV9fSTkxNV9TQU1QTEVfRlJFUV9S RVEsCisJX19JOTE1X05VTV9QTVVfU0FNUExFUlMKK307CisKKy8qKgorICogSG93IG1hbnkgZGlm ZmVyZW50IGV2ZW50cyB3ZSB0cmFjayBpbiB0aGUgZ2xvYmFsIFBNVSBtYXNrLgorICoKKyAqIEl0 IGlzIGFsc28gdXNlZCB0byBrbm93IHRvIG5lZWRlZCBudW1iZXIgb2YgZXZlbnQgcmVmZXJlbmNl IGNvdW50ZXJzLgorICovCisjZGVmaW5lIEk5MTVfUE1VX01BU0tfQklUUyBcCisJKCgxIDw8IEk5 MTVfUE1VX1NBTVBMRV9CSVRTKSArIFwKKwkgKEk5MTVfUE1VX0xBU1QgKyAxIC0gX19JOTE1X1BN VV9PVEhFUigwKSkpCisKK3N0cnVjdCBpOTE1X3BtdV9zYW1wbGUgeworCXU2NCBjdXI7CisJdTMy IHByZXY7Cit9OworCitzdHJ1Y3QgaTkxNV9wbXUgeworCS8qKgorCSAqIEBub2RlOiBMaXN0IG5v ZGUgZm9yIENQVSBob3RwbHVnIGhhbmRsaW5nLgorCSAqLworCXN0cnVjdCBobGlzdF9ub2RlIG5v ZGU7CisJLyoqCisJICogQGJhc2U6IFBNVSBiYXNlLgorCSAqLworCXN0cnVjdCBwbXUgYmFzZTsK KwkvKioKKwkgKiBAbG9jazogTG9jayBwcm90ZWN0aW5nIGVuYWJsZSBtYXNrIGFuZCByZWYgY291 bnQgaGFuZGxpbmcuCisJICovCisJc3BpbmxvY2tfdCBsb2NrOworCS8qKgorCSAqIEB0aW1lcjog VGltZXIgZm9yIGludGVybmFsIGk5MTUgUE1VIHNhbXBsaW5nLgorCSAqLworCXN0cnVjdCBocnRp bWVyIHRpbWVyOworCS8qKgorCSAqIEBlbmFibGU6IEJpdG1hc2sgb2YgYWxsIGN1cnJlbnRseSBl bmFibGVkIGV2ZW50cy4KKwkgKgorCSAqIEJpdHMgYXJlIGRlcml2ZWQgZnJvbSB1QVBJIGV2ZW50 IG51bWJlcnMgaW4gYSB3YXkgdGhhdCBsb3cgMTYgYml0cworCSAqIGNvcnJlc3BvbmQgdG8gZW5n aW5lIGV2ZW50IF9zYW1wbGVfIF90eXBlXyAoSTkxNV9TQU1QTEVfUVVFVUVEIGlzCisJICogYml0 IDApLCBhbmQgaGlnaGVyIGJpdHMgY29ycmVzcG9uZCB0byBvdGhlciBldmVudHMgKGZvciBpbnN0 YW5jZQorCSAqIEk5MTVfUE1VX0FDVFVBTF9GUkVRVUVOQ1kgaXMgYml0IDE2IGV0YykuCisJICoK KwkgKiBJbiBvdGhlciB3b3JkcywgbG93IDE2IGJpdHMgYXJlIG5vdCBwZXIgZW5naW5lIGJ1dCBw ZXIgZW5naW5lCisJICogc2FtcGxlciB0eXBlLCB3aGlsZSB0aGUgdXBwZXIgYml0cyBhcmUgZGly ZWN0bHkgbWFwcGVkIHRvIG90aGVyCisJICogZXZlbnQgdHlwZXMuCisJICovCisJdTY0IGVuYWJs ZTsKKwkvKioKKwkgKiBAZW5hYmxlX2NvdW50OiBSZWZlcmVuY2UgY291bnRzIGZvciB0aGUgZW5h YmxlZCBldmVudHMuCisJICoKKwkgKiBBcnJheSBpbmRpY2VzIGFyZSBtYXBwZWQgaW4gdGhlIHNh bWUgd2F5IGFzIGJpdHMgaW4gdGhlIEBlbmFibGUgZmllbGQKKwkgKiBhbmQgdGhleSBhcmUgdXNl ZCB0byBjb250cm9sIHNhbXBsaW5nIG9uL29mZiB3aGVuIG11bHRpcGxlIGNsaWVudHMKKwkgKiBh cmUgdXNpbmcgdGhlIFBNVSBBUEkuCisJICovCisJdW5zaWduZWQgaW50IGVuYWJsZV9jb3VudFtJ OTE1X1BNVV9NQVNLX0JJVFNdOworCS8qKgorCSAqIEBzYW1wbGU6IEN1cnJlbnQgYW5kIHByZXZp b3VzIChyYXcpIGNvdW50ZXJzIGZvciBzYW1wbGluZyBldmVudHMuCisJICoKKwkgKiBUaGVzZSBj b3VudGVycyBhcmUgdXBkYXRlZCBmcm9tIHRoZSBpOTE1IFBNVSBzYW1wbGluZyB0aW1lci4KKwkg KgorCSAqIE9ubHkgZ2xvYmFsIGNvdW50ZXJzIGFyZSBoZWxkIGhlcmUsIHdoaWxlIHRoZSBwZXIt ZW5naW5lIG9uZXMgYXJlIGluCisJICogc3RydWN0IGludGVsX2VuZ2luZV9jcy4KKwkgKi8KKwlz dHJ1Y3QgaTkxNV9wbXVfc2FtcGxlIHNhbXBsZVtfX0k5MTVfTlVNX1BNVV9TQU1QTEVSU107Cit9 OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCmluZGV4IDUwZTY1Yzk4Y2E2Yy4uZWM5 ZjY4NDU3NTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTE4Niw2ICsxODYsOSBAQCBz dGF0aWMgaW5saW5lIGJvb2wgaTkxNV9tbWlvX3JlZ192YWxpZChpOTE1X3JlZ190IHJlZykKICNk ZWZpbmUgVklERU9fRU5IQU5DRU1FTlRfQ0xBU1MJMgogI2RlZmluZSBDT1BZX0VOR0lORV9DTEFT UwkzCiAjZGVmaW5lIE9USEVSX0NMQVNTCQk0CisjZGVmaW5lIE1BWF9FTkdJTkVfQ0xBU1MJNAor CisjZGVmaW5lIE1BWF9FTkdJTkVfSU5TVEFOQ0UgICAgMQogCiAvKiBQQ0kgY29uZmlnIHNwYWNl ICovCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKaW5kZXggYTU5YjJhMzBm ZjVhLi40YzdkN2FkZTk5ZDggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5j CkBAIC0yMDIsNiArMjAyLDE1IEBAIGludGVsX2VuZ2luZV9zZXR1cChzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJR0VNX0JVR19PTihpbmZvLT5jbGFzcyA+PSBBUlJBWV9TSVpF KGludGVsX2VuZ2luZV9jbGFzc2VzKSk7CiAJY2xhc3NfaW5mbyA9ICZpbnRlbF9lbmdpbmVfY2xh c3Nlc1tpbmZvLT5jbGFzc107CiAKKwlpZiAoR0VNX1dBUk5fT04oaW5mby0+Y2xhc3MgPiBNQVhf RU5HSU5FX0NMQVNTKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoR0VNX1dBUk5fT04oaW5m by0+aW5zdGFuY2UgPiBNQVhfRU5HSU5FX0lOU1RBTkNFKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlpZiAoR0VNX1dBUk5fT04oZGV2X3ByaXYtPmVuZ2luZV9jbGFzc1tpbmZvLT5jbGFzc11baW5m by0+aW5zdGFuY2VdKSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKIAlHRU1fQlVHX09OKGRldl9wcml2 LT5lbmdpbmVbaWRdKTsKIAllbmdpbmUgPSBremFsbG9jKHNpemVvZigqZW5naW5lKSwgR0ZQX0tF Uk5FTCk7CiAJaWYgKCFlbmdpbmUpCkBAIC0yMjksNiArMjM4LDcgQEAgaW50ZWxfZW5naW5lX3Nl dHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCUFUT01JQ19JTklUX05P VElGSUVSX0hFQUQoJmVuZ2luZS0+Y29udGV4dF9zdGF0dXNfbm90aWZpZXIpOwogCisJZGV2X3By aXYtPmVuZ2luZV9jbGFzc1tpbmZvLT5jbGFzc11baW5mby0+aW5zdGFuY2VdID0gZW5naW5lOwog CWRldl9wcml2LT5lbmdpbmVbaWRdID0gZW5naW5lOwogCXJldHVybiAwOwogfQpAQCAtMTc3Niw2 ICsxNzg2LDMxIEBAIHZvaWQgaW50ZWxfZW5naW5lX2R1bXAoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLCBzdHJ1Y3QgZHJtX3ByaW50ZXIgKm0pCiAJZHJtX3ByaW50ZihtLCAiXG4iKTsK IH0KIAorc3RhdGljIHU4IHVzZXJfY2xhc3NfbWFwW0k5MTVfRU5HSU5FX0NMQVNTX01BWF0gPSB7 CisJW0k5MTVfRU5HSU5FX0NMQVNTX09USEVSXSA9IE9USEVSX0NMQVNTLAorCVtJOTE1X0VOR0lO RV9DTEFTU19SRU5ERVJdID0gUkVOREVSX0NMQVNTLAorCVtJOTE1X0VOR0lORV9DTEFTU19DT1BZ XSA9IENPUFlfRU5HSU5FX0NMQVNTLAorCVtJOTE1X0VOR0lORV9DTEFTU19WSURFT10gPSBWSURF T19ERUNPREVfQ0xBU1MsCisJW0k5MTVfRU5HSU5FX0NMQVNTX1ZJREVPX0VOSEFOQ0VdID0gVklE RU9fRU5IQU5DRU1FTlRfQ0xBU1MsCit9OworCitzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICoKK2lu dGVsX2VuZ2luZV9sb29rdXBfdXNlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTgg Y2xhc3MsIHU4IGluc3RhbmNlKQoreworCWlmIChjbGFzcyA+PSBBUlJBWV9TSVpFKHVzZXJfY2xh c3NfbWFwKSkKKwkJcmV0dXJuIE5VTEw7CisKKwljbGFzcyA9IHVzZXJfY2xhc3NfbWFwW2NsYXNz XTsKKworCWlmIChXQVJOX09OX09OQ0UoY2xhc3MgPiBNQVhfRU5HSU5FX0NMQVNTKSkKKwkJcmV0 dXJuIE5VTEw7CisKKwlpZiAoaW5zdGFuY2UgPiBNQVhfRU5HSU5FX0lOU1RBTkNFKQorCQlyZXR1 cm4gTlVMTDsKKworCXJldHVybiBpOTE1LT5lbmdpbmVfY2xhc3NbY2xhc3NdW2luc3RhbmNlXTsK K30KKwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQogI2luY2x1ZGUg InNlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIgogI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9yaW5nYnVmZmVyLmgKaW5kZXggMTcxODZmMDY3NDA4Li4yODliYjI1ZGQ5NjQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKQEAgLTUsNiArNSw3IEBACiAjaW5jbHVk ZSAiaTkxNV9nZW1fYmF0Y2hfcG9vbC5oIgogI2luY2x1ZGUgImk5MTVfZ2VtX3JlcXVlc3QuaCIK ICNpbmNsdWRlICJpOTE1X2dlbV90aW1lbGluZS5oIgorI2luY2x1ZGUgImk5MTVfcG11LmgiCiAj aW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgogCiBzdHJ1Y3QgZHJtX3ByaW50ZXI7CkBAIC0zMzcs NiArMzM4LDI4IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgewogCQlJOTE1X1NFTEZURVNUX0RF Q0xBUkUoYm9vbCBtb2NrIDogMSk7CiAJfSBicmVhZGNydW1iczsKIAorCXN0cnVjdCB7CisJCS8q KgorCQkgKiBAZW5hYmxlOiBCaXRtYXNrIG9mIGVuYWJsZSBzYW1wbGUgZXZlbnRzIG9uIHRoaXMg ZW5naW5lLgorCQkgKgorCQkgKiBCaXRzIGNvcnJlc3BvbmQgdG8gc2FtcGxlIGV2ZW50IHR5cGVz LCBmb3IgaW5zdGFuY2UKKwkJICogSTkxNV9TQU1QTEVfUVVFVUVEIGlzIGJpdCAwIGV0Yy4KKwkJ ICovCisJCXUzMiBlbmFibGU7CisJCS8qKgorCQkgKiBAZW5hYmxlX2NvdW50OiBSZWZlcmVuY2Ug Y291bnQgZm9yIHRoZSBlbmFibGVkIHNhbXBsZXJzLgorCQkgKgorCQkgKiBJbmRleCBudW1iZXIg Y29ycmVzcG9uZHMgdG8gdGhlIGJpdCBudW1iZXIgZnJvbSBAZW5hYmxlLgorCQkgKi8KKwkJdW5z aWduZWQgaW50IGVuYWJsZV9jb3VudFtJOTE1X1BNVV9TQU1QTEVfQklUU107CisJCS8qKgorCQkg KiBAc2FtcGxlOiBDb3VudGVyIHZhbHVlcyBmb3Igc2FtcGxpbmcgZXZlbnRzLgorCQkgKgorCQkg KiBPdXIgaW50ZXJuYWwgdGltZXIgc3RvcmVzIHRoZSBjdXJyZW50IGNvdW50ZXJzIGluIHRoaXMg ZmllbGQuCisJCSAqLworCQlzdHJ1Y3QgaTkxNV9wbXVfc2FtcGxlIHNhbXBsZVtJOTE1X0VOR0lO RV9TQU1QTEVfTUFYXTsKKwl9IHBtdTsKKwogCS8qCiAJICogQSBwb29sIG9mIG9iamVjdHMgdG8g dXNlIGFzIHNoYWRvdyBjb3BpZXMgb2YgY2xpZW50IGJhdGNoIGJ1ZmZlcnMKIAkgKiB3aGVuIHRo ZSBjb21tYW5kIHBhcnNlciBpcyBlbmFibGVkLiBQcmV2ZW50cyB0aGUgY2xpZW50IGZyb20KQEAg LTg0Myw0ICs4NjYsNyBAQCBib29sIGludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoc3RydWN0 IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogdm9pZCBpbnRlbF9lbmdpbmVfZHVtcChzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBkcm1fcHJpbnRlciAqcCk7CiAKK3N0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKgoraW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LCB1OCBjbGFzcywgdTggaW5zdGFuY2UpOworCiAjZW5kaWYg LyogX0lOVEVMX1JJTkdCVUZGRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0v aTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCAxMjViZGU3ZDk1 MDQuLmQzNWFmOWZmNjM1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o CisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtODYsNiArODYsNTQgQEAgZW51 bSBpOTE1X21vY3NfdGFibGVfaW5kZXggewogCUk5MTVfTU9DU19DQUNIRUQsCiB9OwogCitlbnVt IGRybV9pOTE1X2dlbV9lbmdpbmVfY2xhc3MgeworCUk5MTVfRU5HSU5FX0NMQVNTX09USEVSID0g MCwKKwlJOTE1X0VOR0lORV9DTEFTU19SRU5ERVIgPSAxLAorCUk5MTVfRU5HSU5FX0NMQVNTX0NP UFkgPSAyLAorCUk5MTVfRU5HSU5FX0NMQVNTX1ZJREVPID0gMywKKwlJOTE1X0VOR0lORV9DTEFT U19WSURFT19FTkhBTkNFID0gNCwKKwlJOTE1X0VOR0lORV9DTEFTU19NQVggLyogbm9uLUFCSSAq LworfTsKKworLyoqCisgKiBET0M6IHBlcmZfZXZlbnRzIGV4cG9zZWQgYnkgaTkxNSB0aHJvdWdo IC9zeXMvYnVzL2V2ZW50X3NvdXJjZXMvZHJpdmVycy9pOTE1CisgKgorICovCisKK2VudW0gZHJt X2k5MTVfcG11X2VuZ2luZV9zYW1wbGUgeworCUk5MTVfU0FNUExFX0JVU1kgPSAwLAorCUk5MTVf U0FNUExFX1dBSVQgPSAxLAorCUk5MTVfU0FNUExFX1NFTUEgPSAyLAorCUk5MTVfRU5HSU5FX1NB TVBMRV9NQVggLyogbm9uLUFCSSAqLworfTsKKworI2RlZmluZSBJOTE1X1BNVV9TQU1QTEVfQklU UyAoNCkKKyNkZWZpbmUgSTkxNV9QTVVfU0FNUExFX01BU0sgKDB4ZikKKyNkZWZpbmUgSTkxNV9Q TVVfU0FNUExFX0lOU1RBTkNFX0JJVFMgKDgpCisjZGVmaW5lIEk5MTVfUE1VX0NMQVNTX1NISUZU IFwKKwkoSTkxNV9QTVVfU0FNUExFX0JJVFMgKyBJOTE1X1BNVV9TQU1QTEVfSU5TVEFOQ0VfQklU UykKKworI2RlZmluZSBfX0k5MTVfUE1VX0VOR0lORShjbGFzcywgaW5zdGFuY2UsIHNhbXBsZSkg XAorCSgoY2xhc3MpIDw8IEk5MTVfUE1VX0NMQVNTX1NISUZUIHwgXAorCShpbnN0YW5jZSkgPDwg STkxNV9QTVVfU0FNUExFX0JJVFMgfCBcCisJKHNhbXBsZSkpCisKKyNkZWZpbmUgSTkxNV9QTVVf RU5HSU5FX0JVU1koY2xhc3MsIGluc3RhbmNlKSBcCisJX19JOTE1X1BNVV9FTkdJTkUoY2xhc3Ms IGluc3RhbmNlLCBJOTE1X1NBTVBMRV9CVVNZKQorCisjZGVmaW5lIEk5MTVfUE1VX0VOR0lORV9X QUlUKGNsYXNzLCBpbnN0YW5jZSkgXAorCV9fSTkxNV9QTVVfRU5HSU5FKGNsYXNzLCBpbnN0YW5j ZSwgSTkxNV9TQU1QTEVfV0FJVCkKKworI2RlZmluZSBJOTE1X1BNVV9FTkdJTkVfU0VNQShjbGFz cywgaW5zdGFuY2UpIFwKKwlfX0k5MTVfUE1VX0VOR0lORShjbGFzcywgaW5zdGFuY2UsIEk5MTVf U0FNUExFX1NFTUEpCisKKyNkZWZpbmUgX19JOTE1X1BNVV9PVEhFUih4KSAoX19JOTE1X1BNVV9F TkdJTkUoMHhmZiwgMHhmZiwgMHhmKSArIDEgKyAoeCkpCisKKyNkZWZpbmUgSTkxNV9QTVVfQUNU VUFMX0ZSRVFVRU5DWQlfX0k5MTVfUE1VX09USEVSKDApCisjZGVmaW5lIEk5MTVfUE1VX1JFUVVF U1RFRF9GUkVRVUVOQ1kJX19JOTE1X1BNVV9PVEhFUigxKQorCisjZGVmaW5lIEk5MTVfUE1VX0xB U1QgSTkxNV9QTVVfUkVRVUVTVEVEX0ZSRVFVRU5DWQorCiAvKiBFYWNoIHJlZ2lvbiBpcyBhIG1p bmltdW0gb2YgMTZrLCBhbmQgdGhlcmUgYXJlIGF0IG1vc3QgMjU1IG9mIHRoZW0uCiAgKi8KICNk ZWZpbmUgSTkxNV9OUl9URVhfUkVHSU9OUyAyNTUJLyogdGFibGUgc2l6ZSAyayAtIG1heGltdW0g ZHVlIHRvIHVzZQotLSAKMi45LjUKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=