From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anusha Srivatsa Subject: [PATCH] drm/i915/huc: Add HuC fw loading support Date: Wed, 11 Jan 2017 07:13:21 -0800 Message-ID: <1484147601-25526-1-git-send-email-anusha.srivatsa@intel.com> References: <20170111141329.GB108112@mwajdecz-MOBL1.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1BEC66E936 for ; Wed, 11 Jan 2017 15:16:40 +0000 (UTC) In-Reply-To: <20170111141329.GB108112@mwajdecz-MOBL1.ger.corp.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 Cc: Alex Dai , Peter Antoine List-Id: intel-gfx@lists.freedesktop.org VGhlIEh1QyBsb2FkaW5nIHByb2Nlc3MgaXMgc2ltaWxhciB0byBHdUMuIFRoZSBpbnRlbF91Y19m d19mZXRjaCgpCmlzIHVzZWQgZm9yIGJvdGggY2FzZXMuCgpIdUMgbG9hZGluZyBuZWVkcyB0byBi ZSBiZWZvcmUgR3VDIGxvYWRpbmcuIFRoZSBXT1BDTSBzZXR0aW5nIG11c3QKYmUgZG9uZSBlYXJs eSBiZWZvcmUgbG9hZGluZyBhbnkgb2YgdGhlbS4KCnYyOiByZWJhc2VkIG9uLXRvcCBvZiBkcm0t aW50ZWwtbmlnaHRseS4KICAgIHJlbW92ZWQgaWYoSEFTX0dVQygpKSBiZWZvcmUgdGhlIGd1YyBj YWxsLiAoRC5Hb3Jkb24pCiAgICB1cGRhdGUgaHVjX3ZlcnNpb24gbnVtYmVyIG9mIGZvcm1hdC4K djM6IHJlYmFzZWQgdG8gZHJtLWludGVsLW5pZ2h0bHksIGNoYW5nZWQgdGhlIGZpbGUgbmFtZSBm b3JtYXQgdG8KICAgIG1hdGNoIHRoZSBvbmUgaW4gdGhlIGh1YyBwYWNrYWdlLgogICAgQ2hhbmdl ZCBkZXYtPmRldl9wcml2YXRlIHRvIHRvX2k5MTUoKQp2NDogbW92ZWQgZnVuY3Rpb24gYmFjayB0 byB3aGVyZSBpdCB3YXMuCiAgICBjaGFuZ2Ugd2FpdF9mb3JfYXRvbWljIHRvIHdhaXRfZm9yLgp2 NTogcmViYXNlZCArIGNvbW1lbnQgY2hhbmdlcy4Kdjc6IHJlYmFzZWQuCnY4OiByZWJhc2VkLgp2 OTogcmViYXNlZC4gQ2hhbmdlZCB0aGUgeWVhciBpbiB0aGUgY29weXJpZ2h0IG1lc3NhZ2UgdG8g cmVmbGVjdAp0aGUgcmlnaHQgeWVhci5Db3JyZWN0IHRoZSBjb21tZW50cyxyZW1vdmUgdGhlIHVu d2FudGVkIFdBUk4gbWVzc2FnZSwKcmVwbGFjZSBkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgp IHdpdGggaTkxNV9nZW1fb2JqZWN0X3B1dCgpLk1ha2UgdGhlCnByb3RvdHlwZXMgaW4gaW50ZWxf aHVjLmggbm9uLWV4dGVybi4KdjEwOiByZWJhc2VkLiBVcGRhdGUgdGhlIGZpbGUgY29uc3RydWN0 aW9uIGRvbmUgYnkgSHVDLiBJdCBpcyBzaW1pbGFyIHRvCkd1Qy5BZG9wdGVkIHRoZSBhcHByb2Fj aCB1c2VkIGluLQpodHRwczovL3BhdGNod29yay5mcmVlZGVza3RvcC5vcmcvcGF0Y2gvMTA0MzU1 LyA8VHZydGtvIFVyc3VsaW4+CnYxMTogRml4IHdhcm5pbmdzIHJlbW92ZSBvbGQgZGVjbGFyYXRp b24KdjEyOiBDaGFuZ2UgZGV2IHRvIGRldl9wcml2IGluIG1hY3JvIGRlZmluaXRpb24uCkNvcnJl Y3RlZCBjb21tZW50cy4KdjEzOiByZWJhc2VkLgp2MTQ6IHJlYmFzZWQgb24gdG9wIG9mIGRybS10 aXAKdjE1OiByZWJhc2VkLiBVcGRhdGVkIGZ1bmN0aW9ucyBpbnRlbF9odWNfbG9hZCgpLGludGVs X2h1Y19pbml0KCkgYW5kCmludGVsX3VjX2Z3X2ZldGNoKCkgdG8gYWNjZXB0IGRldl9wcml2IGlu c3RlYWQgb2YgZGV2LiBNb3ZlZCBjb250ZW50cwpvZiBpbnRlbF9odWMuaCB0byBpbnRlbF91Yy5o CnYxNjogY2hhbmdlIFNLTF9GV18gdG8gU0tMX0hVQ19GV18uIEFkZCBpbnRlbF8gcHJlZml4IHRv IGd1Y193b3BjbV9zaXplKCkuClJlbW92ZSB1bndhbnRlZCBjaGVja3MgaW4gaW50ZWxfdWMuaC4g UmVuYW1lIGh1Y19mdyBpbiBzdHJ1Y3QgaW50ZWxfaHVjCnRvIHNpbXBseSBmdyB0byBhdm9pZCBy ZWR1bmRlbmN5Lgp2MTc6IHJlYmFzZWQuCnYxODogcmViYXNlZC4gQ29ycmVjdCBjb21tZW50cy4K djE5OiByZWJhc2VkLiBDb3JyZWN0IGNvbW1lbnRzLiBNYWtlIGludGVsX2h1Y19maW5pKCkgYWNj ZXB0IGRldl9wcml2Cmluc3RlYWQgb2YgZGV2IGxpa2UgaW50ZWxfaHVjX2luaXQoKSBhbmQgaW50 ZWxfaHVjX2xvYWQoKS5Nb3ZlIGRlZmluaXRpb24gCnRvIGk5MTVfZ3VjX3JlZy5oIGZyb20gaW50 ZWxfdWMuaC4gQ2xlYW4gRE1BX0NUUkwgYml0cyBhZnRlciBIdUMgRE1BCnRyYW5zZmVyIGluIGh1 Y191Y29kZV94ZmVyKCkgaW5zdGVhZCBvZiBndWNfdWNvZGVfeGZlcigpLiBBZGQgc3VpdGFibGUg CldBUk5zIHRvIGdpdmUgZXh0cmEgaW5mby4KCkNjOiBBcmthZGl1c3ogSGlsZXIgPGFya2FkaXVz ei5oaWxlckBpbnRlbC5jb20+CkNjOiBNaWNoYWwgV2FqZGVjemtvIDxtaWNoYWwud2FqZGVjemtv QGludGVsLmNvbT4KVGVzdGVkLWJ5OiBYaWFuZyBIYWloYW8gPGhhaWhhby54aWFuZ0BpbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVs LmNvbT4KU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1v ZmYtYnk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgotLS0KIGRyaXZl cnMvZ3B1L2RybS9pOTE1L01ha2VmaWxlICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgIHwgICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3JlZy5oICAgICB8ICAgNiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVy LmMgfCAgIDcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyB8IDI2 NCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdWMuaCAgICAgICAgIHwgIDE0ICsrCiA3IGZpbGVzIGNoYW5nZWQsIDI5NCBpbnNlcnRp b25zKCspLCAzIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNTE5NjUw OS4uNDVhZTEyNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTU3LDYgKzU3LDcgQEAgaTkxNS15 ICs9IGk5MTVfY21kX3BhcnNlci5vIFwKICMgZ2VuZXJhbC1wdXJwb3NlIG1pY3JvY29udHJvbGxl ciAoR3VDKSBzdXBwb3J0CiBpOTE1LXkgKz0gaW50ZWxfdWMubyBcCiAJICBpbnRlbF9ndWNfbG9h ZGVyLm8gXAorCSAgaW50ZWxfaHVjX2xvYWRlci5vIFwKIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24u bwogCiAjIGF1dG9nZW5lcmF0ZWQgbnVsbCByZW5kZXIgc3RhdGUKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5jCmluZGV4IGFlZmFiOWEuLmQ2ZjMyZjQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAt NTk5LDYgKzU5OSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9sb2FkX21vZGVzZXRfaW5pdChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQogCWlmIChyZXQpCiAJCWdvdG8gY2xlYW51cF9pcnE7CiAKKwlpbnRl bF9odWNfaW5pdChkZXZfcHJpdik7CiAJaW50ZWxfZ3VjX2luaXQoZGV2X3ByaXYpOwogCiAJcmV0 ID0gaTkxNV9nZW1faW5pdChkZXZfcHJpdik7CkBAIC02MjcsNiArNjI4LDcgQEAgc3RhdGljIGlu dCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAJaTkxNV9n ZW1fZmluaShkZXZfcHJpdik7CiBjbGVhbnVwX2lycToKIAlpbnRlbF9ndWNfZmluaShkZXZfcHJp dik7CisJaW50ZWxfaHVjX2ZpbmkoZGV2X3ByaXYpOwogCWRybV9pcnFfdW5pbnN0YWxsKGRldik7 CiAJaW50ZWxfdGVhcmRvd25fZ21idXMoZGV2X3ByaXYpOwogY2xlYW51cF9jc3I6CkBAIC0xMzE0 LDYgKzEzMTYsNyBAQCB2b2lkIGk5MTVfZHJpdmVyX3VubG9hZChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQogCWRyYWluX3dvcmtxdWV1ZShkZXZfcHJpdi0+d3EpOwogCiAJaW50ZWxfZ3VjX2Zpbmko ZGV2X3ByaXYpOworCWludGVsX2h1Y19maW5pKGRldl9wcml2KTsKIAlpOTE1X2dlbV9maW5pKGRl dl9wcml2KTsKIAlpbnRlbF9mYmNfY2xlYW51cF9jZmIoZGV2X3ByaXYpOwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAppbmRleCBiODRjMWQxLi4yYTE3ZGYyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKQEAgLTIwNzMsNiArMjA3Myw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAogCXN0 cnVjdCBpbnRlbF9ndnQgKmd2dDsKIAorCXN0cnVjdCBpbnRlbF9odWMgaHVjOwogCXN0cnVjdCBp bnRlbF9ndWMgZ3VjOwogCiAJc3RydWN0IGludGVsX2NzciBjc3I7CkBAIC0yODQ3LDYgKzI4NDgs NyBAQCBpbnRlbF9pbmZvKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK ICNkZWZpbmUgSEFTX0dVQyhkZXZfcHJpdikJKChkZXZfcHJpdiktPmluZm8uaGFzX2d1YykKICNk ZWZpbmUgSEFTX0dVQ19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQogI2RlZmlu ZSBIQVNfR1VDX1NDSEVEKGRldl9wcml2KQkoSEFTX0dVQyhkZXZfcHJpdikpCisjZGVmaW5lIEhB U19IVUNfVUNPREUoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkKIAogI2RlZmluZSBIQVNf UkVTT1VSQ0VfU1RSRUFNRVIoZGV2X3ByaXYpICgoZGV2X3ByaXYpLT5pbmZvLmhhc19yZXNvdXJj ZV9zdHJlYW1lcikKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNf cmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaAppbmRleCA2YTBhZGFm Li4zNWNmOTkxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcu aAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaApAQCAtNjEsMTIgKzYx LDE4IEBACiAjZGVmaW5lICAgRE1BX0FERFJFU1NfU1BBQ0VfR1RUCQkgICg4IDw8IDE2KQogI2Rl ZmluZSBETUFfQ09QWV9TSVpFCQkJX01NSU8oMHhjMzEwKQogI2RlZmluZSBETUFfQ1RSTAkJCV9N TUlPKDB4YzMxNCkKKyNkZWZpbmUgICBIVUNfVUtFUk5FTAkJCSAgKDE8PDkpCiAjZGVmaW5lICAg VU9TX01PVkUJCQkgICgxPDw0KQogI2RlZmluZSAgIFNUQVJUX0RNQQkJCSAgKDE8PDApCiAjZGVm aW5lIERNQV9HVUNfV09QQ01fT0ZGU0VUCQlfTU1JTygweGMzNDApCisjZGVmaW5lICAgSFVDX0xP QURJTkdfQUdFTlRfVkNSCQkgICgwPDwxKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX0dV QwkJICAoMTw8MSkKICNkZWZpbmUgICBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFCSAgMHg4MDAwMAkv KiA1MTJLQiAqLwogI2RlZmluZSBHVUNfTUFYX0lETEVfQ09VTlQJCV9NTUlPKDB4QzNFNCkKIAor I2RlZmluZSBIVUNfU1RBVFVTMiAgICAgICAgICAgICBfTU1JTygweEQzQjApCisjZGVmaW5lICAg SFVDX0ZXX1ZFUklGSUVEICAgICAgICgxPDw3KQorCiAvKiBEZWZpbmVzIFdPUENNIHNwYWNlIGF2 YWlsYWJsZSB0byBHdUMgZmlybXdhcmUgKi8KICNkZWZpbmUgR1VDX1dPUENNX1NJWkUJCQlfTU1J TygweGMwNTApCiAvKiBHdUMgYWRkcmVzc2VzIGJlbG93IEdVQ19XT1BDTV9UT1AgZG9uJ3QgbWFw IHRocm91Z2ggdGhlIEdUVCAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j CmluZGV4IGE3YTRjZDQuLjNiMDUyMzIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNf bG9hZGVyLmMKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94ZmVyX2Rt YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0dXJuIHJldDsKIH0KIAot c3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCit1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQogewogCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKIApAQCAtMzcyLDcg KzM3Miw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXIoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCWludGVsX3VuY29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JD RVdBS0VfQUxMKTsKIAogCS8qIGluaXQgV09QQ00gKi8KLQlJOTE1X1dSSVRFKEdVQ19XT1BDTV9T SVpFLCBndWNfd29wY21fc2l6ZShkZXZfcHJpdikpOworCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJ WkUsIGludGVsX2d1Y193b3BjbV9zaXplKGRldl9wcml2KSk7CiAJSTkxNV9XUklURShETUFfR1VD X1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09GRlNFVF9WQUxVRSk7CiAKIAkvKiBFbmFibGUgTUlB IGNhY2hpbmcuIEd1QyBjbG9jayBnYXRpbmcgaXMgZGlzYWJsZWQuICovCkBAIC01MTEsNiArNTEx LDcgQEAgaW50IGludGVsX2d1Y19zZXR1cChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJCWlmIChlcnIpCiAJCQlnb3RvIGZhaWw7CiAKKwkJaW50ZWxfaHVjX2xvYWQoZGV2X3By aXYpOwogCQllcnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAJCWlmICghZXJyKQogCQkJ YnJlYWs7CkBAIC02NTgsNyArNjU5LDcgQEAgdm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCXNpemUgPSB1Y19mdy0+aGVhZGVyX3NpemUg KyB1Y19mdy0+dWNvZGVfc2l6ZTsKIAogCQkvKiBUb3AgMzJrIG9mIFdPUENNIGlzIHJlc2VydmVk ICg4SyBzdGFjayArIDI0ayBSQzYgY29udGV4dCkuICovCi0JCWlmIChzaXplID4gZ3VjX3dvcGNt X3NpemUoZGV2X3ByaXYpKSB7CisJCWlmIChzaXplID4gaW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2 X3ByaXYpKSB7CiAJCQlEUk1fRVJST1IoIkZpcm13YXJlIGlzIHRvbyBsYXJnZSB0byBmaXQgaW4g V09QQ01cbiIpOwogCQkJZ290byBmYWlsOwogCQl9CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9odWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9o dWNfbG9hZGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWUzMDA3OQot LS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIu YwpAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE2IEludGVsIENvcnBv cmF0aW9uCisgKgorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFy Z2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBh bmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCisgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCisgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKKyAqIGFuZC9vciBzZWxsIGNvcGll cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQorICog U29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcg Y29uZGl0aW9uczoKKyAqCisgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw ZXJtaXNzaW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0CisgKiBwYXJhZ3JhcGgpIHNoYWxs IGJlIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhl CisgKiBTb2Z0d2FyZS4KKyAqCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5D TFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ VFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VN RU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwKKyAqIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xE RVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSCisgKiBMSUFCSUxJ VFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwg QVJJU0lORworICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdB UkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUworICogSU4gVEhFIFNPRlRXQVJFLgorICoK KyAqLworI2luY2x1ZGUgPGxpbnV4L2Zpcm13YXJlLmg+CisjaW5jbHVkZSAiaTkxNV9kcnYuaCIK KyNpbmNsdWRlICJpbnRlbF91Yy5oIgorCisvKioKKyAqIERPQzogSHVDIEZpcm13YXJlCisgKgor ICogTW90aXZhdGlvbjoKKyAqIEdFTjkgaW50cm9kdWNlcyBhIG5ldyBkZWRpY2F0ZWQgZmlybXdh cmUgZm9yIHVzYWdlIGluIG1lZGlhIEhFVkMgKEhpZ2gKKyAqIEVmZmljaWVuY3kgVmlkZW8gQ29k aW5nKSBvcGVyYXRpb25zLiBVc2Vyc3BhY2UgY2FuIHVzZSB0aGUgZmlybXdhcmUKKyAqIGNhcGFi aWxpdGllcyBieSBhZGRpbmcgSHVDIHNwZWNpZmljIGNvbW1hbmRzIHRvIGJhdGNoIGJ1ZmZlcnMu CisgKgorICogSW1wbGVtZW50YXRpb246CisgKiBUaGUgc2FtZSBmaXJtd2FyZSBsb2FkZXIgaXMg dXNlZCBhcyB0aGUgR3VDLiBIb3dldmVyLCB0aGUgYWN0dWFsCisgKiBsb2FkaW5nIHRvIEhXIGlz IGRlZmVycmVkIHVudGlsIEdFTSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgorICoKKyAqIE5vdGUg dGhhdCBIdUMgZmlybXdhcmUgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5n LgorICovCisKKyNkZWZpbmUgU0tMX0hVQ19GV19NQUpPUiAwMQorI2RlZmluZSBTS0xfSFVDX0ZX X01JTk9SIDA3CisjZGVmaW5lIFNLTF9CTERfTlVNIDEzOTgKKworI2RlZmluZSBIVUNfRldfUEFU SChwbGF0Zm9ybSwgbWFqb3IsIG1pbm9yLCBibGRfbnVtKSBcCisJImk5MTUvIiBfX3N0cmluZ2lm eShwbGF0Zm9ybSkgIl9odWNfdmVyIiBfX3N0cmluZ2lmeShtYWpvcikgIl8iIFwKKwlfX3N0cmlu Z2lmeShtaW5vcikgIl8iIF9fc3RyaW5naWZ5KGJsZF9udW0pICIuYmluIgorCisjZGVmaW5lIEk5 MTVfU0tMX0hVQ19VQ09ERSBIVUNfRldfUEFUSChza2wsIFNLTF9IVUNfRldfTUFKT1IsIFwKKwlT S0xfSFVDX0ZXX01JTk9SLCBTS0xfQkxEX05VTSkKK01PRFVMRV9GSVJNV0FSRShJOTE1X1NLTF9I VUNfVUNPREUpOworCisvKioKKyAqIGh1Y191Y29kZV94ZmVyKCkgLSBETUEncyB0aGUgZmlybXdh cmUKKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCisgKgorICogVHJh bnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0aW9uIGJ5IHRoZSBtaWNy b2NvbnRyb2xsZXIuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG9uIGZh aWx1cmUKKyAqLworc3RhdGljIGludCBodWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0IGludGVsX3VjX2Z3ICpodWNfZncgPSAmZGV2X3By aXYtPmh1Yy5mdzsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKwl1bnNpZ25lZCBsb25nIG9mZnNl dCA9IDA7CisJdTMyIHNpemU7CisJaW50IHJldDsKKworCXJldCA9IGk5MTVfZ2VtX29iamVjdF9z ZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctPm9iaiwgZmFsc2UpOworCWlmIChyZXQpIHsKKwkJRFJN X0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWlsZWQgJWRcbiIsIHJldCk7CisJCXJldHVybiBy ZXQ7CisJfQorCisJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKGh1Y19mdy0+b2JqLCBO VUxMLCAwLCAwLCAwKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigi cGluIGZhaWxlZCAlZFxuIiwgKGludClQVFJfRVJSKHZtYSkpOworCQlyZXR1cm4gUFRSX0VSUih2 bWEpOworCX0KKworCS8qIEludmFsaWRhdGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxh dGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8KKwlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9HVENS X0lOVkFMSURBVEUpOworCisJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZP UkNFV0FLRV9BTEwpOworCisJLyogaW5pdCBXT1BDTSAqLworCUk5MTVfV1JJVEUoR1VDX1dPUENN X1NJWkUsIGludGVsX2d1Y193b3BjbV9zaXplKGRldl9wcml2KSk7CisJSTkxNV9XUklURShETUFf R1VDX1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09GRlNFVF9WQUxVRSB8CisJCQlIVUNfTE9BRElO R19BR0VOVF9HVUMpOworCisJLyogU2V0IHRoZSBzb3VyY2UgYWRkcmVzcyBmb3IgdGhlIHVDb2Rl ICovCisJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh2bWEpICsgaHVjX2Z3LT5oZWFkZXJfb2Zm c2V0OworCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7 CisJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4 RkZGRik7CisKKwkvKiBIYXJkd2FyZSBkb2Vzbid0IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVz cyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwKKwkgKiBidXQgc3RpbGwgcHJvZ3JhbSB0aGUgY29ycmVj dCBhZGRyZXNzIHNwYWNlLgorCSAqLworCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDApOwor CUk5MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CisK KwlzaXplID0gaHVjX2Z3LT5oZWFkZXJfc2l6ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKKwlJOTE1 X1dSSVRFKERNQV9DT1BZX1NJWkUsIHNpemUpOworCisJLyogU3RhcnQgdGhlIERNQSAqLworCUk5 MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJMRShIVUNfVUtFUk5FTCB8IFNUQVJU X0RNQSkpOworCisJLyogV2FpdCBmb3IgRE1BIHRvIGZpbmlzaCAqLworCXJldCA9IHdhaXRfZm9y KChJOTE1X1JFQUQoRE1BX0NUUkwpICYgU1RBUlRfRE1BKSA9PSAwLCAxMDApOworCisJRFJNX0RF QlVHX0RSSVZFUigiSHVDIERNQSB0cmFuc2ZlciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJl dCk7CisKKwkvKiBEaXNhYmxlIHRoZSBiaXRzIG9uY2UgRE1BIGlzIG92ZXIgKi8KKwlJOTE1X1dS SVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9ESVNBQkxFKEhVQ19VS0VSTkVMKSk7CisKKwlpbnRl bF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwkvKgor CSAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0 IHdlIGNhbiB1bnBpbiBpdAorCSAqIG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBk b2Vzbid0IGNvbnRpbnVlIHRvIHRha2UgdXAgc3BhY2UuCisJICovCisJaTkxNV92bWFfdW5waW4o dm1hKTsKKworCXJldHVybiByZXQ7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2luaXQoKSAtIGlu aXRpYXRlIEh1QyBmaXJtd2FyZSBsb2FkaW5nIHJlcXVlc3QKKyAqIEBkZXZfcHJpdjogdGhlIGRy bV9pOTE1X3ByaXZhdGUgZGV2aWNlCisgKgorICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIg bG9hZCwgYnV0IGFmdGVyIEdFTSBpcyBpbml0aWFsaXNlZC4gVGhlIGxvYWRpbmcKKyAqIHdpbGwg Y29udGludWUgb25seSB3aGVuIGRyaXZlciBleHBsaWNpdGx5IHNwZWNpZnkgZmlybXdhcmUgbmFt ZSBhbmQgdmVyc2lvbi4KKyAqIEFsbCBvdGhlciBjYXNlcyBhcmUgY29uc2lkZXJlZCBhcyBJTlRF TF9VQ19GSVJNV0FSRV9OT05FIGVpdGhlciBiZWNhdXNlIEhXCisgKiBpcyBub3QgY2FwYWJsZSBv ciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQuIEFuZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yIG1lc3Nh Z2UKKyAqIGZvciBJTlRFTF9VQ19GSVJNV0FSRV9OT05FIGNhc2VzLgorICoKKyAqIFRoZSBETUEt Y29weWluZyB0byBIVyBpcyBkb25lIGxhdGVyIHdoZW4gaW50ZWxfaHVjX2xvYWQoKSBpcyBjYWxs ZWQuCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9odWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOworCXN0 cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmh1Yy0+Znc7CisJY29uc3QgY2hhciAqZndfcGF0 aCA9IE5VTEw7CisKKwlodWNfZnctPnBhdGggPSBOVUxMOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVz ID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxf VUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnctPmZ3ID0gSU5URUxfVUNfRldfVFlQRV9IVUM7CisK KwlpZiAoIUhBU19IVUNfVUNPREUoZGV2X3ByaXYpKQorCQlyZXR1cm47CisKKwlpZiAoSVNfU0tZ TEFLRShkZXZfcHJpdikpIHsKKwkJZndfcGF0aCA9IEk5MTVfU0tMX0hVQ19VQ09ERTsKKwkJaHVj X2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tMX0hVQ19GV19NQUpPUjsKKwkJaHVjX2Z3LT5taW5v cl92ZXJfd2FudGVkID0gU0tMX0hVQ19GV19NSU5PUjsKKwl9CisKKwlodWNfZnctPnBhdGggPSBm d19wYXRoOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElO RzsKKworCURSTV9ERUJVR19EUklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4i LCBmd19wYXRoKTsKKworCVdBUk4oaHVjX2Z3LT5wYXRoID09IE5VTEwsICJIdUMgcHJlc2VudCBi dXQgbm8gZncgcGF0aFxuIik7CisKKwlpbnRlbF91Y19md19mZXRjaChkZXZfcHJpdiwgaHVjX2Z3 KTsKK30KKworLyoqCisgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2 aWNlCisgKiBAZGV2X3ByaXY6IHRoZSBkcm1faTkxNV9wcml2YXRlIGRldmljZQorICoKKyAqIENh bGxlZCBmcm9tIGd1Y19zZXR1cCgpIGR1cmluZyBkcml2ZXIgbG9hZGluZyBhbmQgYWxzbyBhZnRl ciBhIEdQVSByZXNldC4KKyAqIEJlIG5vdGUgdGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRvbmUg YmVmb3JlIEd1QyBsb2FkaW5nLgorICoKKyAqIFRoZSBmaXJtd2FyZSBpbWFnZSBzaG91bGQgaGF2 ZSBhbHJlYWR5IGJlZW4gZmV0Y2hlZCBpbnRvIG1lbW9yeSBieSB0aGUKKyAqIGVhcmxpZXIgY2Fs bCB0byBpbnRlbF9odWNfaW5pdCgpLCBzbyBoZXJlIHdlIG5lZWQgb25seSBjaGVjayB0aGF0Cisg KiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRyYW5zZmVyIHRoZSBpbWFnZSB0byB0aGUgaC93Lgor ICoKKyAqIFJldHVybjoJbm9uLXplcm8gY29kZSBvbiBlcnJvcgorICovCitpbnQgaW50ZWxfaHVj X2xvYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRl bF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuZnc7CisJaW50IGVycjsKKworCWlmICho dWNfZnctPmZldGNoX3N0YXR1cyA9PSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FKQorCQlyZXR1cm4g MDsKKworCURSTV9ERUJVR19EUklWRVIoIiVzIGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNc biIsCisJCWh1Y19mdy0+cGF0aCwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5m ZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3Rh dHVzKSk7CisKKwlpZiAoaHVjX2Z3LT5mZXRjaF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVf U1VDQ0VTUyAmJgorCSAgICBodWNfZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJF X0ZBSUwpCisJCXJldHVybiAtRU5PRVhFQzsKKworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRF TF9VQ19GSVJNV0FSRV9QRU5ESU5HOworCisJc3dpdGNoIChodWNfZnctPmZldGNoX3N0YXR1cykg eworCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfRkFJTDoKKwkJLyogc29tZXRoaW5nIHdlbnQgd3Jv bmcgOiggKi8KKwkJZXJyID0gLUVJTzsKKwkJZ290byBmYWlsOworCisJY2FzZSBJTlRFTF9VQ19G SVJNV0FSRV9OT05FOgorCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfUEVORElORzoKKwlkZWZhdWx0 OgorCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLworCQlXQVJOX09OQ0UoMSwgIkh1QyBmdyAlcyBpbnZh bGlkIGZldGNoX3N0YXR1cyAlcyBbJWRdXG4iLAorCQkJaHVjX2Z3LT5wYXRoLAorCQkJaW50ZWxf dWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQkJaHVjX2Z3LT5mZXRj aF9zdGF0dXMpOworCQllcnIgPSAtRU5YSU87CisJCWdvdG8gZmFpbDsKKworCWNhc2UgSU5URUxf VUNfRklSTVdBUkVfU1VDQ0VTUzoKKwkJYnJlYWs7CisJfQorCisJZXJyID0gaHVjX3Vjb2RlX3hm ZXIoZGV2X3ByaXYpOworCWlmIChlcnIpCisJCWdvdG8gZmFpbDsKKworCWh1Y19mdy0+bG9hZF9z dGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9TVUNDRVNTOworCisJRFJNX0RFQlVHX0RSSVZFUigi JXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT5wYXRoLAorCQlp bnRlbF91Y19md19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3Vj X2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKworCXJldHVybiAwOworCitm YWlsOgorCWlmIChodWNfZnctPmxvYWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJ TkcpCisJCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOworCisJ RFJNX0VSUk9SKCJGYWlsZWQgdG8gY29tcGxldGUgSHVDIHVDb2RlIGxvYWQgd2l0aCByZXQgJWRc biIsIGVycik7CisKKwlyZXR1cm4gZXJyOworfQorCisvKioKKyAqIGludGVsX2h1Y19maW5pKCkg LSBjbGVhbiB1cCByZXNvdXJjZXMgYWxsb2NhdGVkIGZvciBIdUMKKyAqIEBkZXZfcHJpdjogdGhl IGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCisgKgorICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2luZyB0 aGUgaHVjIGZpcm13YXJlIEdFTSBvYmouCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVj X2Z3ID0gJmRldl9wcml2LT5odWMuZnc7CisKKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0 cnVjdF9tdXRleCk7CisJaWYgKGh1Y19mdy0+b2JqKQorCQlpOTE1X2dlbV9vYmplY3RfcHV0KGh1 Y19mdy0+b2JqKTsKKwlodWNfZnctPm9iaiA9IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlodWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VD X0ZJUk1XQVJFX05PTkU7Cit9CisKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91Yy5oCmluZGV4IGNlMDQxMDUu LjQzOTFlY2IgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdWMuaApAQCAtMTc2LDYgKzE3NiwxMyBAQCBz dHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3QgbXV0ZXggc2VuZF9tdXRleDsKIH07CiAKK3N0cnVj dCBpbnRlbF9odWMgeworCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLworCXN0 cnVjdCBpbnRlbF91Y19mdyBmdzsKKworCS8qIEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8KK307 CisKIC8qIGludGVsX3VjLmMgKi8KIHZvaWQgaW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogaW50IGludGVsX2d1Y19zZW5kKHN0cnVjdCBpbnRl bF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rpb24sIHUzMiBsZW4pOwpAQCAtMTkxLDYgKzE5OCw4 IEBAIGV4dGVybiB2b2lkIGludGVsX2d1Y19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiBleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51 bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3Bl bmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxf Z3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRl bF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJc3RydWN0 IGludGVsX3VjX2Z3ICp1Y19mdyk7CiB1MzIgaW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICov CkBAIC0yMTQsNCArMjIzLDkgQEAgc3RhdGljIGlubGluZSB1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0 cnVjdCBpOTE1X3ZtYSAqdm1hKQogCXJldHVybiBvZmZzZXQ7CiB9CiAKKy8qIGludGVsX2h1Y19s b2FkZXIuYyAqLwordm9pZCBpbnRlbF9odWNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOwordm9pZCBpbnRlbF9odWNfZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAg KmRldl9wcml2KTsKK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpOworCiAjZW5kaWYKLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK