From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anusha Srivatsa Subject: [PATCH] drm/i915/huc: Add HuC fw loading support Date: Thu, 12 Jan 2017 08:38:09 -0800 Message-ID: <1484239089-16374-1-git-send-email-anusha.srivatsa@intel.com> References: <20170111142353.GG18077@nuc-i3427.alporthouse.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id D81086EB42 for ; Thu, 12 Jan 2017 16:41:58 +0000 (UTC) In-Reply-To: <20170111142353.GG18077@nuc-i3427.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: 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 UmVuYW1lIGh1Y19mdyBpbiBzdHJ1Y3QgaW50ZWxfaHVjIHRvCnNpbXBseSBmdyB0byBhdm9pZCBy ZWR1bmRlbmN5Lgp2MTc6IHJlYmFzZWQuCnYxODogcmViYXNlZC4gQ29ycmVjdCBjb21tZW50cy4K djE5OiByZWJhc2VkLiBDb3JyZWN0IGNvbW1lbnRzLiBNYWtlIGludGVsX2h1Y19maW5pKCkgYWNj ZXB0IGRldl9wcml2IGluc3RlYWQgb2YgZGV2Cmxpa2UgaW50ZWxfaHVjX2luaXQoKSBhbmQgaW50 ZWxfaHVjX2xvYWQoKS5Nb3ZlIGRlZmluaXRpb24gdG8gaTkxNV9ndWNfcmVnLmggZnJvbQppbnRl bF91Yy5oLiBDbGVhbiBETUFfQ1RSTCBiaXRzIGFmdGVyIEh1QyBETUEgdHJhbnNmZXIgaW4gaHVj X3Vjb2RlX3hmZXIoKQppbnN0ZWFkIG9mIGd1Y191Y29kZV94ZmVyKCkuIEFkZCBzdWl0YWJsZSBX QVJOcyB0byBnaXZlIGV4dHJhIGluZm8uCnYyMDogcmViYXNlZC4gQWRkIHByb3BlciBiaWFzIGZv ciBIdUMgYW5kIG1ha2Ugc3VyZSB0aGVyZSBhcmUKYXNzZXJ0cyBvbiBmYWlsdXJlIGJ5IHVzaW5n IGd1Y19nZ3R0X29mZnNldF92bWEoKQoKQ2M6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6Lmhp bGVyQGludGVsLmNvbT4KQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50 ZWwuY29tPgpUZXN0ZWQtYnk6IFhpYW5nIEhhaWhhbyA8aGFpaGFvLnhpYW5nQGludGVsLmNvbT4K U2lnbmVkLW9mZi1ieTogQW51c2hhIFNyaXZhdHNhIDxhbnVzaGEuc3JpdmF0c2FAaW50ZWwuY29t PgpTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfcmVn LmggICAgIHwgICA2ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYyB8 ICAgNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIHwgMjY1ICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF91Yy5oICAgICAgICAgfCAgMTQgKysKIDcgZmlsZXMgY2hhbmdlZCwgMjk1IGluc2VydGlvbnMo KyksIDMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfaHVjX2xvYWRlci5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv TWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQppbmRleCA1MTk2NTA5Li40 NWFlMTI0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZQpAQCAtNTcsNiArNTcsNyBAQCBpOTE1LXkgKz0g aTkxNV9jbWRfcGFyc2VyLm8gXAogIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChH dUMpIHN1cHBvcnQKIGk5MTUteSArPSBpbnRlbF91Yy5vIFwKIAkgIGludGVsX2d1Y19sb2FkZXIu byBcCisJICBpbnRlbF9odWNfbG9hZGVyLm8gXAogCSAgaTkxNV9ndWNfc3VibWlzc2lvbi5vCiAK ICMgYXV0b2dlbmVyYXRlZCBudWxsIHJlbmRlciBzdGF0ZQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK aW5kZXggNGU1ZWE1OC4uZDdhMGI0OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC01OTks NiArNTk5LDcgQEAgc3RhdGljIGludCBpOTE1X2xvYWRfbW9kZXNldF9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJaWYgKHJldCkKIAkJZ290byBjbGVhbnVwX2lycTsKIAorCWludGVsX2h1 Y19pbml0KGRldl9wcml2KTsKIAlpbnRlbF9ndWNfaW5pdChkZXZfcHJpdik7CiAKIAlyZXQgPSBp OTE1X2dlbV9pbml0KGRldl9wcml2KTsKQEAgLTYyNyw2ICs2MjgsNyBAQCBzdGF0aWMgaW50IGk5 MTVfbG9hZF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlpOTE1X2dlbV9m aW5pKGRldl9wcml2KTsKIGNsZWFudXBfaXJxOgogCWludGVsX2d1Y19maW5pKGRldl9wcml2KTsK KwlpbnRlbF9odWNfZmluaShkZXZfcHJpdik7CiAJZHJtX2lycV91bmluc3RhbGwoZGV2KTsKIAlp bnRlbF90ZWFyZG93bl9nbWJ1cyhkZXZfcHJpdik7CiBjbGVhbnVwX2NzcjoKQEAgLTEzMTQsNiAr MTMxNiw3IEBAIHZvaWQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJZHJhaW5fd29ya3F1ZXVlKGRldl9wcml2LT53cSk7CiAKIAlpbnRlbF9ndWNfZmluaShkZXZf cHJpdik7CisJaW50ZWxfaHVjX2ZpbmkoZGV2X3ByaXYpOwogCWk5MTVfZ2VtX2ZpbmkoZGV2X3By aXYpOwogCWludGVsX2ZiY19jbGVhbnVwX2NmYihkZXZfcHJpdik7CiAKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCmluZGV4IGI4NGMxZDEuLjJhMTdkZjIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApA QCAtMjA3Myw2ICsyMDczLDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0 IGludGVsX2d2dCAqZ3Z0OwogCisJc3RydWN0IGludGVsX2h1YyBodWM7CiAJc3RydWN0IGludGVs X2d1YyBndWM7CiAKIAlzdHJ1Y3QgaW50ZWxfY3NyIGNzcjsKQEAgLTI4NDcsNiArMjg0OCw3IEBA IGludGVsX2luZm8oY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogI2Rl ZmluZSBIQVNfR1VDKGRldl9wcml2KQkoKGRldl9wcml2KS0+aW5mby5oYXNfZ3VjKQogI2RlZmlu ZSBIQVNfR1VDX1VDT0RFKGRldl9wcml2KQkoSEFTX0dVQyhkZXZfcHJpdikpCiAjZGVmaW5lIEhB U19HVUNfU0NIRUQoZGV2X3ByaXYpCShIQVNfR1VDKGRldl9wcml2KSkKKyNkZWZpbmUgSEFTX0hV Q19VQ09ERShkZXZfcHJpdikJKEhBU19HVUMoZGV2X3ByaXYpKQogCiAjZGVmaW5lIEhBU19SRVNP VVJDRV9TVFJFQU1FUihkZXZfcHJpdikgKChkZXZfcHJpdiktPmluZm8uaGFzX3Jlc291cmNlX3N0 cmVhbWVyKQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCmluZGV4IDZhMGFkYWYuLjM1 Y2Y5OTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCkBAIC02MSwxMiArNjEsMTgg QEAKICNkZWZpbmUgICBETUFfQUREUkVTU19TUEFDRV9HVFQJCSAgKDggPDwgMTYpCiAjZGVmaW5l IERNQV9DT1BZX1NJWkUJCQlfTU1JTygweGMzMTApCiAjZGVmaW5lIERNQV9DVFJMCQkJX01NSU8o MHhjMzE0KQorI2RlZmluZSAgIEhVQ19VS0VSTkVMCQkJICAoMTw8OSkKICNkZWZpbmUgICBVT1Nf TU9WRQkJCSAgKDE8PDQpCiAjZGVmaW5lICAgU1RBUlRfRE1BCQkJICAoMTw8MCkKICNkZWZpbmUg RE1BX0dVQ19XT1BDTV9PRkZTRVQJCV9NTUlPKDB4YzM0MCkKKyNkZWZpbmUgICBIVUNfTE9BRElO R19BR0VOVF9WQ1IJCSAgKDA8PDEpCisjZGVmaW5lICAgSFVDX0xPQURJTkdfQUdFTlRfR1VDCQkg ICgxPDwxKQogI2RlZmluZSAgIEdVQ19XT1BDTV9PRkZTRVRfVkFMVUUJICAweDgwMDAwCS8qIDUx MktCICovCiAjZGVmaW5lIEdVQ19NQVhfSURMRV9DT1VOVAkJX01NSU8oMHhDM0U0KQogCisjZGVm aW5lIEhVQ19TVEFUVVMyICAgICAgICAgICAgIF9NTUlPKDB4RDNCMCkKKyNkZWZpbmUgICBIVUNf RldfVkVSSUZJRUQgICAgICAgKDE8PDcpCisKIC8qIERlZmluZXMgV09QQ00gc3BhY2UgYXZhaWxh YmxlIHRvIEd1QyBmaXJtd2FyZSAqLwogI2RlZmluZSBHVUNfV09QQ01fU0laRQkJCV9NTUlPKDB4 YzA1MCkKIC8qIEd1QyBhZGRyZXNzZXMgYmVsb3cgR1VDX1dPUENNX1RPUCBkb24ndCBtYXAgdGhy b3VnaCB0aGUgR1RUICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMKaW5k ZXggOGNhMmY2Mi4uODYxYzE1NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjX2xvYWRlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19sb2Fk ZXIuYwpAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyBpbnQgZ3VjX3Vjb2RlX3hmZXJfZG1hKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0 aWMgdTMyIGd1Y193b3BjbV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK K3UzMiBpbnRlbF9ndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiB7CiAJdTMyIHdvcGNtX3NpemUgPSBHVUNfV09QQ01fVE9QOwogCkBAIC0zNzMsNyArMzcz LDcgQEAgc3RhdGljIGludCBndWNfdWNvZGVfeGZlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYpCiAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FL RV9BTEwpOwogCiAJLyogaW5pdCBXT1BDTSAqLwotCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUs IGd1Y193b3BjbV9zaXplKGRldl9wcml2KSk7CisJSTkxNV9XUklURShHVUNfV09QQ01fU0laRSwg aW50ZWxfZ3VjX3dvcGNtX3NpemUoZGV2X3ByaXYpKTsKIAlJOTE1X1dSSVRFKERNQV9HVUNfV09Q Q01fT0ZGU0VULCBHVUNfV09QQ01fT0ZGU0VUX1ZBTFVFKTsKIAogCS8qIEVuYWJsZSBNSUEgY2Fj aGluZy4gR3VDIGNsb2NrIGdhdGluZyBpcyBkaXNhYmxlZC4gKi8KQEAgLTUxMiw2ICs1MTIsNyBA QCBpbnQgaW50ZWxfZ3VjX3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAkJaWYgKGVycikKIAkJCWdvdG8gZmFpbDsKIAorCQlpbnRlbF9odWNfbG9hZChkZXZfcHJpdik7 CiAJCWVyciA9IGd1Y191Y29kZV94ZmVyKGRldl9wcml2KTsKIAkJaWYgKCFlcnIpCiAJCQlicmVh azsKQEAgLTY1OSw3ICs2NjAsNyBAQCB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJc2l6ZSA9IHVjX2Z3LT5oZWFkZXJfc2l6ZSArIHVj X2Z3LT51Y29kZV9zaXplOwogCiAJCS8qIFRvcCAzMmsgb2YgV09QQ00gaXMgcmVzZXJ2ZWQgKDhL IHN0YWNrICsgMjRrIFJDNiBjb250ZXh0KS4gKi8KLQkJaWYgKHNpemUgPiBndWNfd29wY21fc2l6 ZShkZXZfcHJpdikpIHsKKwkJaWYgKHNpemUgPiBpbnRlbF9ndWNfd29wY21fc2l6ZShkZXZfcHJp dikpIHsKIAkJCURSTV9FUlJPUigiRmlybXdhcmUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBXT1BD TVxuIik7CiAJCQlnb3RvIGZhaWw7CiAJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2h1Y19sb2FkZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19s b2FkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDQzYTcyCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jCkBA IC0wLDAgKzEsMjY1IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50ZWwgQ29ycG9yYXRp b24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg dG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKKyAqIHRvIGRl YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0 IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw dWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNlbGwgY29waWVzIG9m IHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCisgKiBTb2Z0 d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k aXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1p c3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFwaCkgc2hhbGwgYmUg aW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUKKyAq IFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRI T1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJ TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK KyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQu ICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMg QkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwg V0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklT SU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBP UiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdBUkUuCisgKgorICov CisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlICJpOTE1X2Rydi5oIgorI2lu Y2x1ZGUgImludGVsX3VjLmgiCisKKy8qKgorICogRE9DOiBIdUMgRmlybXdhcmUKKyAqCisgKiBN b3RpdmF0aW9uOgorICogR0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBmaXJtd2FyZSBm b3IgdXNhZ2UgaW4gbWVkaWEgSEVWQyAoSGlnaAorICogRWZmaWNpZW5jeSBWaWRlbyBDb2Rpbmcp IG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQorICogY2FwYWJpbGl0 aWVzIGJ5IGFkZGluZyBIdUMgc3BlY2lmaWMgY29tbWFuZHMgdG8gYmF0Y2ggYnVmZmVycy4KKyAq CisgKiBJbXBsZW1lbnRhdGlvbjoKKyAqIFRoZSBzYW1lIGZpcm13YXJlIGxvYWRlciBpcyB1c2Vk IGFzIHRoZSBHdUMuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKKyAqIGxvYWRpbmcgdG8gSFcgaXMgZGVm ZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCisgKgorICogTm90ZSB0aGF0 IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCisg Ki8KKworI2RlZmluZSBTS0xfSFVDX0ZXX01BSk9SIDAxCisjZGVmaW5lIFNLTF9IVUNfRldfTUlO T1IgMDcKKyNkZWZpbmUgU0tMX0JMRF9OVU0gMTM5OAorCisjZGVmaW5lIEhVQ19GV19QQVRIKHBs YXRmb3JtLCBtYWpvciwgbWlub3IsIGJsZF9udW0pIFwKKwkiaTkxNS8iIF9fc3RyaW5naWZ5KHBs YXRmb3JtKSAiX2h1Y192ZXIiIF9fc3RyaW5naWZ5KG1ham9yKSAiXyIgXAorCV9fc3RyaW5naWZ5 KG1pbm9yKSAiXyIgX19zdHJpbmdpZnkoYmxkX251bSkgIi5iaW4iCisKKyNkZWZpbmUgSTkxNV9T S0xfSFVDX1VDT0RFIEhVQ19GV19QQVRIKHNrbCwgU0tMX0hVQ19GV19NQUpPUiwgXAorCVNLTF9I VUNfRldfTUlOT1IsIFNLTF9CTERfTlVNKQorTU9EVUxFX0ZJUk1XQVJFKEk5MTVfU0tMX0hVQ19V Q09ERSk7CisKKy8qKgorICogaHVjX3Vjb2RlX3hmZXIoKSAtIERNQSdzIHRoZSBmaXJtd2FyZQor ICogQGRldl9wcml2OiB0aGUgZHJtX2k5MTVfcHJpdmF0ZSBkZXZpY2UKKyAqCisgKiBUcmFuc2Zl ciB0aGUgZmlybXdhcmUgaW1hZ2UgdG8gUkFNIGZvciBleGVjdXRpb24gYnkgdGhlIG1pY3JvY29u dHJvbGxlci4KKyAqCisgKiBSZXR1cm46IDAgb24gc3VjY2Vzcywgbm9uLXplcm8gb24gZmFpbHVy ZQorICovCitzdGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+ aHVjLmZ3OworCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOworCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0g MDsKKwl1MzIgc2l6ZTsKKwlpbnQgcmV0OworCisJcmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90 b19ndHRfZG9tYWluKGh1Y19mdy0+b2JqLCBmYWxzZSk7CisJaWYgKHJldCkgeworCQlEUk1fREVC VUdfRFJJVkVSKCJzZXQtZG9tYWluIGZhaWxlZCAlZFxuIiwgcmV0KTsKKwkJcmV0dXJuIHJldDsK Kwl9CisKKwl2bWEgPSBpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oaHVjX2Z3LT5vYmosIE5VTEws IDAsIDAsCisJCQkJUElOX09GRlNFVF9CSUFTIHwgR1VDX1dPUENNX1RPUCk7CisJaWYgKElTX0VS Uih2bWEpKSB7CisJCURSTV9ERUJVR19EUklWRVIoInBpbiBmYWlsZWQgJWRcbiIsIChpbnQpUFRS X0VSUih2bWEpKTsKKwkJcmV0dXJuIFBUUl9FUlIodm1hKTsKKwl9CisKKwkvKiBJbnZhbGlkYXRl IEd1QyBUTEIgdG8gbGV0IEd1QyB0YWtlIHRoZSBsYXRlc3QgdXBkYXRlcyB0byBHVFQuICovCisJ STkxNV9XUklURShHRU44X0dUQ1IsIEdFTjhfR1RDUl9JTlZBTElEQVRFKTsKKworCWludGVsX3Vu Y29yZV9mb3JjZXdha2VfZ2V0KGRldl9wcml2LCBGT1JDRVdBS0VfQUxMKTsKKworCS8qIGluaXQg V09QQ00gKi8KKwlJOTE1X1dSSVRFKEdVQ19XT1BDTV9TSVpFLCBpbnRlbF9ndWNfd29wY21fc2l6 ZShkZXZfcHJpdikpOworCUk5MTVfV1JJVEUoRE1BX0dVQ19XT1BDTV9PRkZTRVQsIEdVQ19XT1BD TV9PRkZTRVRfVkFMVUUgfAorCQkJSFVDX0xPQURJTkdfQUdFTlRfR1VDKTsKKworCS8qIFNldCB0 aGUgc291cmNlIGFkZHJlc3MgZm9yIHRoZSB1Q29kZSAqLworCW9mZnNldCA9IGd1Y19nZ3R0X29m ZnNldCh2bWEpICsgaHVjX2Z3LT5oZWFkZXJfb2Zmc2V0OworCUk5MTVfV1JJVEUoRE1BX0FERFJf MF9MT1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7CisJSTkxNV9XUklURShETUFfQUREUl8wX0hJ R0gsIHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4RkZGRik7CisKKwkvKiBIYXJkd2FyZSBkb2Vz bid0IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwKKwkg KiBidXQgc3RpbGwgcHJvZ3JhbSB0aGUgY29ycmVjdCBhZGRyZXNzIHNwYWNlLgorCSAqLworCUk5 MTVfV1JJVEUoRE1BX0FERFJfMV9MT1csIDApOworCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdI LCBETUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CisKKwlzaXplID0gaHVjX2Z3LT5oZWFkZXJfc2l6 ZSArIGh1Y19mdy0+dWNvZGVfc2l6ZTsKKwlJOTE1X1dSSVRFKERNQV9DT1BZX1NJWkUsIHNpemUp OworCisJLyogU3RhcnQgdGhlIERNQSAqLworCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURf QklUX0VOQUJMRShIVUNfVUtFUk5FTCB8IFNUQVJUX0RNQSkpOworCisJLyogV2FpdCBmb3IgRE1B IHRvIGZpbmlzaCAqLworCXJldCA9IHdhaXRfZm9yKChJOTE1X1JFQUQoRE1BX0NUUkwpICYgU1RB UlRfRE1BKSA9PSAwLCAxMDApOworCisJRFJNX0RFQlVHX0RSSVZFUigiSHVDIERNQSB0cmFuc2Zl ciB3YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJldCk7CisKKwkvKiBEaXNhYmxlIHRoZSBiaXRz IG9uY2UgRE1BIGlzIG92ZXIgKi8KKwlJOTE1X1dSSVRFKERNQV9DVFJMLCBfTUFTS0VEX0JJVF9E SVNBQkxFKEhVQ19VS0VSTkVMKSk7CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZf cHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwkvKgorCSAqIFdlIGtlZXAgdGhlIG9iamVjdCBwYWdl cyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAorCSAqIG5vdyB0 aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vzbid0IGNvbnRpbnVlIHRvIHRha2UgdXAg c3BhY2UuCisJICovCisJaTkxNV92bWFfdW5waW4odm1hKTsKKworCXJldHVybiByZXQ7Cit9CisK Ky8qKgorICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBmaXJtd2FyZSBsb2FkaW5n IHJlcXVlc3QKKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCisgKgor ICogQ2FsbGVkIGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdFTSBpcyBpbml0 aWFsaXNlZC4gVGhlIGxvYWRpbmcKKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRyaXZlciBl eHBsaWNpdGx5IHNwZWNpZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4KKyAqIEFsbCBvdGhl ciBjYXNlcyBhcmUgY29uc2lkZXJlZCBhcyBJTlRFTF9VQ19GSVJNV0FSRV9OT05FIGVpdGhlciBi ZWNhdXNlIEhXCisgKiBpcyBub3QgY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQuIEFu ZCB0aGVyZSB3aWxsIGJlIG5vIGVycm9yIG1lc3NhZ2UKKyAqIGZvciBJTlRFTF9VQ19GSVJNV0FS RV9OT05FIGNhc2VzLgorICoKKyAqIFRoZSBETUEtY29weWluZyB0byBIVyBpcyBkb25lIGxhdGVy IHdoZW4gaW50ZWxfaHVjX2xvYWQoKSBpcyBjYWxsZWQuCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2lu aXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF9o dWMgKmh1YyA9ICZkZXZfcHJpdi0+aHVjOworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0g Jmh1Yy0+Znc7CisJY29uc3QgY2hhciAqZndfcGF0aCA9IE5VTEw7CisKKwlodWNfZnctPnBhdGgg PSBOVUxMOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsK KwlodWNfZnctPmxvYWRfc3RhdHVzID0gSU5URUxfVUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnct PmZ3ID0gSU5URUxfVUNfRldfVFlQRV9IVUM7CisKKwlpZiAoIUhBU19IVUNfVUNPREUoZGV2X3By aXYpKQorCQlyZXR1cm47CisKKwlpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpIHsKKwkJZndfcGF0 aCA9IEk5MTVfU0tMX0hVQ19VQ09ERTsKKwkJaHVjX2Z3LT5tYWpvcl92ZXJfd2FudGVkID0gU0tM X0hVQ19GV19NQUpPUjsKKwkJaHVjX2Z3LT5taW5vcl92ZXJfd2FudGVkID0gU0tMX0hVQ19GV19N SU5PUjsKKwl9CisKKwlodWNfZnctPnBhdGggPSBmd19wYXRoOworCWh1Y19mdy0+ZmV0Y2hfc3Rh dHVzID0gSU5URUxfVUNfRklSTVdBUkVfUEVORElORzsKKworCURSTV9ERUJVR19EUklWRVIoIkh1 QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRoICVzXG4iLCBmd19wYXRoKTsKKworCVdBUk4oaHVjX2Z3 LT5wYXRoID09IE5VTEwsICJIdUMgcHJlc2VudCBidXQgbm8gZncgcGF0aFxuIik7CisKKwlpbnRl bF91Y19md19mZXRjaChkZXZfcHJpdiwgaHVjX2Z3KTsKK30KKworLyoqCisgKiBpbnRlbF9odWNf bG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCisgKiBAZGV2X3ByaXY6IHRoZSBkcm1f aTkxNV9wcml2YXRlIGRldmljZQorICoKKyAqIENhbGxlZCBmcm9tIGd1Y19zZXR1cCgpIGR1cmlu ZyBkcml2ZXIgbG9hZGluZyBhbmQgYWxzbyBhZnRlciBhIEdQVSByZXNldC4KKyAqIEJlIG5vdGUg dGhhdCBIdUMgbG9hZGluZyBtdXN0IGJlIGRvbmUgYmVmb3JlIEd1QyBsb2FkaW5nLgorICoKKyAq IFRoZSBmaXJtd2FyZSBpbWFnZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGJlZW4gZmV0Y2hlZCBpbnRv IG1lbW9yeSBieSB0aGUKKyAqIGVhcmxpZXIgY2FsbCB0byBpbnRlbF9odWNfaW5pdCgpLCBzbyBo ZXJlIHdlIG5lZWQgb25seSBjaGVjayB0aGF0CisgKiBpcyBzdWNjZWVkZWQsIGFuZCB0aGVuIHRy YW5zZmVyIHRoZSBpbWFnZSB0byB0aGUgaC93LgorICoKKyAqIFJldHVybjoJbm9uLXplcm8gY29k ZSBvbiBlcnJvcgorICovCitpbnQgaW50ZWxfaHVjX2xvYWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQoreworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2 LT5odWMuZnc7CisJaW50IGVycjsKKworCWlmIChodWNfZnctPmZldGNoX3N0YXR1cyA9PSBJTlRF TF9VQ19GSVJNV0FSRV9OT05FKQorCQlyZXR1cm4gMDsKKworCURSTV9ERUJVR19EUklWRVIoIiVz IGZ3IHN0YXR1czogZmV0Y2ggJXMsIGxvYWQgJXNcbiIsCisJCWh1Y19mdy0+cGF0aCwKKwkJaW50 ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5mZXRjaF9zdGF0dXMpLAorCQlpbnRlbF91Y19m d19zdGF0dXNfcmVwcihodWNfZnctPmxvYWRfc3RhdHVzKSk7CisKKwlpZiAoaHVjX2Z3LT5mZXRj aF9zdGF0dXMgPT0gSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUyAmJgorCSAgICBodWNfZnctPmxv YWRfc3RhdHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX0ZBSUwpCisJCXJldHVybiAtRU5PRVhFQzsK KworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9QRU5ESU5HOworCisJ c3dpdGNoIChodWNfZnctPmZldGNoX3N0YXR1cykgeworCWNhc2UgSU5URUxfVUNfRklSTVdBUkVf RkFJTDoKKwkJLyogc29tZXRoaW5nIHdlbnQgd3JvbmcgOiggKi8KKwkJZXJyID0gLUVJTzsKKwkJ Z290byBmYWlsOworCisJY2FzZSBJTlRFTF9VQ19GSVJNV0FSRV9OT05FOgorCWNhc2UgSU5URUxf VUNfRklSTVdBUkVfUEVORElORzoKKwlkZWZhdWx0OgorCQkvKiAiY2FuJ3QgaGFwcGVuIiAqLwor CQlXQVJOX09OQ0UoMSwgIkh1QyBmdyAlcyBpbnZhbGlkIGZldGNoX3N0YXR1cyAlcyBbJWRdXG4i LAorCQkJaHVjX2Z3LT5wYXRoLAorCQkJaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoaHVjX2Z3LT5m ZXRjaF9zdGF0dXMpLAorCQkJaHVjX2Z3LT5mZXRjaF9zdGF0dXMpOworCQllcnIgPSAtRU5YSU87 CisJCWdvdG8gZmFpbDsKKworCWNhc2UgSU5URUxfVUNfRklSTVdBUkVfU1VDQ0VTUzoKKwkJYnJl YWs7CisJfQorCisJZXJyID0gaHVjX3Vjb2RlX3hmZXIoZGV2X3ByaXYpOworCWlmIChlcnIpCisJ CWdvdG8gZmFpbDsKKworCWh1Y19mdy0+bG9hZF9zdGF0dXMgPSBJTlRFTF9VQ19GSVJNV0FSRV9T VUNDRVNTOworCisJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBmZXRjaCAlcywgbG9h ZCAlc1xuIiwKKwkJaHVjX2Z3LT5wYXRoLAorCQlpbnRlbF91Y19md19zdGF0dXNfcmVwcihodWNf ZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1c19yZXByKGh1Y19mdy0+bG9h ZF9zdGF0dXMpKTsKKworCXJldHVybiAwOworCitmYWlsOgorCWlmIChodWNfZnctPmxvYWRfc3Rh dHVzID09IElOVEVMX1VDX0ZJUk1XQVJFX1BFTkRJTkcpCisJCWh1Y19mdy0+bG9hZF9zdGF0dXMg PSBJTlRFTF9VQ19GSVJNV0FSRV9GQUlMOworCisJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY29tcGxl dGUgSHVDIHVDb2RlIGxvYWQgd2l0aCByZXQgJWRcbiIsIGVycik7CisKKwlyZXR1cm4gZXJyOwor fQorCisvKioKKyAqIGludGVsX2h1Y19maW5pKCkgLSBjbGVhbiB1cCByZXNvdXJjZXMgYWxsb2Nh dGVkIGZvciBIdUMKKyAqIEBkZXZfcHJpdjogdGhlIGRybV9pOTE1X3ByaXZhdGUgZGV2aWNlCisg KgorICogQ2xlYW5zIHVwIGJ5IHJlbGVhc2luZyB0aGUgaHVjIGZpcm13YXJlIEdFTSBvYmouCisg Ki8KK3ZvaWQgaW50ZWxfaHVjX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQoreworCXN0cnVjdCBpbnRlbF91Y19mdyAqaHVjX2Z3ID0gJmRldl9wcml2LT5odWMuZnc7CisK KwltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKGh1Y19mdy0+ b2JqKQorCQlpOTE1X2dlbV9vYmplY3RfcHV0KGh1Y19mdy0+b2JqKTsKKwlodWNfZnctPm9iaiA9 IE5VTEw7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlo dWNfZnctPmZldGNoX3N0YXR1cyA9IElOVEVMX1VDX0ZJUk1XQVJFX05PTkU7Cit9CisKZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF91Yy5oCmluZGV4IGNlMDQxMDUuLjQzOTFlY2IgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdWMuaApAQCAtMTc2LDYgKzE3NiwxMyBAQCBzdHJ1Y3QgaW50ZWxfZ3VjIHsKIAlzdHJ1Y3Qg bXV0ZXggc2VuZF9tdXRleDsKIH07CiAKK3N0cnVjdCBpbnRlbF9odWMgeworCS8qIEdlbmVyaWMg dUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLworCXN0cnVjdCBpbnRlbF91Y19mdyBmdzsKKworCS8q IEh1Qy1zcGVjaWZpYyBhZGRpdGlvbnMgKi8KK307CisKIC8qIGludGVsX3VjLmMgKi8KIHZvaWQg aW50ZWxfdWNfaW5pdF9lYXJseShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwog aW50IGludGVsX2d1Y19zZW5kKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgY29uc3QgdTMyICphY3Rp b24sIHUzMiBsZW4pOwpAQCAtMTkxLDYgKzE5OCw4IEBAIGV4dGVybiB2b2lkIGludGVsX2d1Y19m aW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiBleHRlcm4gY29uc3QgY2hh ciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVz KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3BlbmQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF91Y19md19mZXRjaChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJc3RydWN0IGludGVsX3VjX2Z3ICp1Y19mdyk7CiB1MzIg aW50ZWxfZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IAogLyogaTkxNV9ndWNfc3VibWlzc2lvbi5jICovCkBAIC0yMTQsNCArMjIzLDkgQEAgc3RhdGlj IGlubGluZSB1MzIgZ3VjX2dndHRfb2Zmc2V0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQogCXJldHVy biBvZmZzZXQ7CiB9CiAKKy8qIGludGVsX2h1Y19sb2FkZXIuYyAqLwordm9pZCBpbnRlbF9odWNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwordm9pZCBpbnRlbF9odWNf ZmluaShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAgKmRldl9wcml2KTsKK2ludCBpbnRlbF9odWNf bG9hZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOworCiAjZW5kaWYKLS0gCjIu Ny40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK