From mboxrd@z Thu Jan 1 00:00:00 1970 From: Animesh Manna Subject: [PATCH v4 1/8] drm/i915/skl: Add support to load SKL CSR firmware. Date: Thu, 16 Apr 2015 14:22:07 +0530 Message-ID: <1429174334-12089-2-git-send-email-animesh.manna@intel.com> References: <1429174334-12089-1-git-send-email-animesh.manna@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 8BD5C6E999 for ; Thu, 16 Apr 2015 00:56:26 -0700 (PDT) In-Reply-To: <1429174334-12089-1-git-send-email-animesh.manna@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 RnJvbTogIkEuU3VuaWwgS2FtYXRoIiA8c3VuaWwua2FtYXRoQGludGVsLmNvbT4KCkRpc3BsYXkg Q29udGV4dCBTYXZlIGFuZCBSZXN0b3JlIHN1cHBvcnQgaXMgbmVlZGVkIGZvcgp2YXJpb3VzIFNL TCBEaXNwbGF5IEMgc3RhdGVzIGxpa2UgREM1LCBEQzYuCgpUaGlzIGltcGxlbWVudGF0aW9uIGlz IGFkZGVkIGJhc2VkIG9uIGZpcnN0IHZlcnNpb24gb2YgRE1DIENTUiBwcm9ncmFtCnRoYXQgd2Ug cmVjZWl2ZWQgZnJvbSBoL3cgdGVhbS4KCkhlcmUgd2UgYXJlIHVzaW5nIHJlcXVlc3RfZmlybXdh cmUgYmFzZWQgZGVzaWduLgpGaW5hbGx5IHRoaXMgZmlybXdhcmUgc2hvdWxkIGVuZCB1cCBpbiBs aW51eC1maXJtd2FyZSB0cmVlLgoKRm9yIFNLTCBwbGF0Zm9ybSBpdHMgbWFuZGF0b3J5IHRvIGVu c3VyZSB0aGF0IHdlIGxvYWQgdGhpcwpjc3IgcHJvZ3JhbSBiZWZvcmUgZW5hYmxpbmcgREMgc3Rh dGVzIGxpa2UgREM1L0RDNi4KCkFzIENTUiBwcm9ncmFtIGdldHMgcmVzZXQgb24gdmFyaW91cyBj b25kaXRpb25zLCB3ZSBzaG91bGQgZW5zdXJlCnRvIGxvYWQgaXQgZHVyaW5nIGJvb3QgYW5kIGlu IGZ1dHVyZSBjaGFuZ2UgdG8gYmUgYWRkZWQgdG8gbG9hZAp0aGlzIHN5c3RlbSByZXN1bWUgc2Vx dWVuY2UgdG9vLgoKdjE6IEluaXRpYWwgcmVsZXNlIGFzIFJGQyBwYXRjaAoKdjI6IERlc2lnbiBj aGFuZ2UgYXMgcGVyIERhbmllbCwgRGFtaWVuIGFuZCBTaG9iaXQncyByZXZpZXcgY29tbWVudHMK cmVxdWVzdCBmaXJtd2FyZSBtZXRob2QgZm9sbG93ZWQuCgp2MzogU29tZSBvcHRpbWl6YXRpb24g YW5kIGZ1bmN0aW9uYWwgY2hhbmdlcy4KUHVsbGVkIHJlZ2lzdGVyIGRlZmluZXMgaW50byBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oClVzZWQga21lbWR1cCB0byBhbGxvY2F0ZSBhbmQg ZHVwbGljYXRlIGZpcm13YXJlIGNvbnRlbnQuCkVuc3VyZWQgdG8gZnJlZSBhbGxvY2F0ZWQgYnVm ZmVyLgoKdjQ6IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29tbWVudHMgZnJvbSBTYXRoZWVzaCBh bmQgRGFuaWVsClJlbW92ZWQgdGVtcG9yYXJ5IGJ1ZmZlci4KT3B0aW1pemVkIG51bWJlciBvZiB3 cml0ZXMgYnkgcmVwbGFjaW5nIEk5MTVfV1JJVEUgd2l0aCBJOTE1X1dSSVRFNjQuCgp2NToKTW9k aWZpZWQgYXMgcGVyIHJldmlldyBjb21lbW50cyBmcm9tIERhbWllbi4KLSBDaGFuZ2VkIG5hbWUg Zm9yIGZ1bmN0aW9ucyBhbmQgZmlybXdhcmUuCi0gSW50cm9kdWNlZCBIQVNfQ1NSLgotIFJldmVy dGVkIGJhY2sgcHJldmlvdXMgY2hhbmdlIGFuZCB1c2VkIGNzcl9idWYgd2l0aCB1OCBzaXplLgot IFVzaW5nIGNwdV90b19iZTY0IGZvciBlbmRpYW5uZXNzIGNoYW5nZS4KCk1vZGlmaWVkIGFzIHBl ciByZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgotIE1vZGlmaWVkIHJlZ2lzdGVycyBhbmQgbWFj cm8gbmFtZXMgdG8gYmUgYSBiaXQgY2xvc2VyIHRvIGJzcGVjIHRlcm1pbm9sb2d5CmFuZCB0aGUg ZXhpc3RpbmcgcmVnaXN0ZXIgbmFtaW5nIGluIHRoZSBkcml2ZXIuCi0gRWFybHkgcmV0dXJuIGZv ciBub24gU0tMIHBsYXRmb3JtcyBpbiBpbnRlbF9sb2FkX2Nzcl9wcm9ncmFtIGZ1bmN0aW9uLgot IEFkZGVkIGxvY2tpbmcgYXJvdW5kIENTUiBwcm9ncmFtIGxvYWQgZnVuY3Rpb24gYXMgaXQgbWF5 IGJlIGNhbGxlZApjb25jdXJyZW50bHkgZHVyaW5nIHN5c3RlbS9ydW50aW1lIHJlc3VtZS4KLSBS ZWxlYXNpbmcgdGhlIGZ3IGJlZm9yZSBsb2FkaW5nIHRoZSBwcm9ncmFtIGZvciBjb25zaXN0ZW5j eQotIEhhbmRsZWQgZXJyb3IgcGF0aCBkdXJpbmcgZi93IGxvYWQuCgp2NjogTW9kaWZpZWQgYXMg cGVyIHJldmlldyBjb21tZW50cyBmcm9tIEltcmUuCi0gQ29ycmVjdGVkIG91dF9mcmVlY3NyIHNl cXVlbmNlLgoKdjc6IE1vZGlmaWVkIGFzIHBlciByZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgpG YWlsIGxvYWRpbmcgZncgaWYgZnctPnNpemUlOCE9MC4KCnY4OiBSZWJhc2UgdG8gbGF0ZXN0LgoK djk6IFJlYmFzZSBvbiB0b3Agb2YgLW5pZ2h0bHkgKERhbWllbikKCnYxMDogRW5hYmxlZCBzdXBw b3J0IGZvciBkbWMgZmlybXdhcmUgdmVyIDEuMC4KQWNjb3JkaW5nIHRvIHZlciAxLjAgaW4gYSBz aW5nbGUgYmluYXJ5IHBhY2thZ2UgYWxsIHRoZSBmaXJtd2FyZSdzIHRoYXQgYXJlCnJlcXVpcmVk IGZvciBkaWZmZXJlbnQgc3RlcHBpbmcncyBvZiB0aGUgcHJvZHVjdCB3aWxsIGJlIHN0b3JlZC4g VGhlIHBhY2thZ2UKY29udGFpbnMgdGhlIGNzcyBoZWFkZXIsIGZvbGxvd2VkIGJ5IHRoZSBwYWNr YWdlIGhlYWRlciBhbmQgdGhlIGFjdHVhbCBkbWMKZmlybXdhcmVzLiBQYWNrYWdlIGhlYWRlciBj b250YWlucyB0aGUgZmlybXdhcmUvc3RlcHBpbmcgbWFwcGluZyB0YWJsZSBhbmQKdGhlIGNvcnJl c3BvbmRpbmcgZmlybXdhcmUgb2Zmc2V0cyB0byB0aGUgaW5kaXZpZHVhbCBiaW5hcmllcywgd2l0 aGluIHRoZQpwYWNrYWdlLiBFYWNoIGluZGl2aWR1YWwgcHJvZ3JhbSBiaW5hcnkgY29udGFpbnMg dGhlIGhlYWRlciBhbmQgdGhlIHBheWxvYWQKc2VjdGlvbnMgd2hvc2Ugc2l6ZSBpc8Kgc3BlY2lm aWVkIGluIHRoZSBoZWFkZXIgc2VjdGlvbi4gVGhpcyBjaGFuZ2VzIGFyZSBkb25lCnRvIGV4dHJh Y3QgdGhlIHNwZWNpZmljIGZpcm1hd2FyZSBmcm9tIHRoZSBwYWNrYWdlLiAoQW5pbWVzaCkKCnYx MTogTW9kaWZpZWQgYXMgcGVyIHJldmlldyBjb21lbW50cyBmcm9tIEltcmUuCi0gQWRkZWQgY29k ZSBjb21tZW50IGZyb20gYnBlYyBmb3IgaGVhZGVyIHN0cnVjdHVyZSBlbGVtZW50cy4KLSBBZGRl ZCBfX3BhY2tlZCB0byBhdm9pZCBzdHJ1Y3R1cmUgcGFkZGluZy4KLSBBZGRlZCBoZWxwZXIgZnVu Y3Rpb25zIGZvciBzdGVwcGluZyBhbmQgc3Vic3RlcHBpbmcgaW5mby4KLSBBZGRlZCBjb2RlIGNv bW1lbnQgZm9yIENTUl9NQVhfRldfU0laRS4KLSBEaXNhYmxlZCBCWFQgZmlybXdhcmUgbG9hZGlu Zywgd2lsbCBiZSBlbmFibGVkIHdpdGggZG1jIDEuMCBzdXBwb3J0LgotIENoYW5nZWQgc2tsX3N0 ZXBwaW5nX2luZm8gYmFzZWQgb24gYnNwZWMsIGVhcmxpZXIgdXNlZCBmcm9tIGNvbmZpZyBEQi4K LSBSZW1vdmVkIGR1cGxpY2F0ZSBjYWxsIG9mIGNwdV90b19iZSogZnJvbSBpbnRlbF9jc3JfbG9h ZF9wcm9ncmFtIGZ1bmN0aW9uLgotIFVzZWQgY3B1X3RvX2JlMzIgaW5zdGVhZCBvZiBjcHVfdG9f YmU2NCBhcyBmaXJtd2FyZSBiaW5hcnkgaW4gZHdvcmQgYWxpZ25lZC4KLSBBZGRlZCBzYW5pdHkg Y2hlY2sgZm9yIGhlYWRlciBsZW5ndGguCi0gQWRkZWQgc2FuaXR5IGNoZWNrIGZvciBtbWlvIGFk ZHJlc3MgZ290IGZyb20gZmlybXdhcmUgYmluYXJ5LgotIGttYWxsb2MgZG9uZSBzZXBhcmF0ZWx5 IGZvciBkbWMgaGVhZGVyIGFuZCBkbWMgZmlybXdhcmUuIChBbmltZXNoKQoKdjEyOiBNb2RpZmll ZCBhcyBwZXIgcmV2aWV3IGNvbWVtbnRzIGZyb20gSW1yZS4KLSBDb3JyZWN0ZWQgdGhlIHR5cG8g ZXJyb3IgaW4gc2tsIHN0ZXBwaW5nIGluZm8gc3RydWN0dXJlLgotIEFkZGVkIG91dC1vZi1ib3Vu ZCBhY2Nlc3MgZm9yIHNrbF9zdGVwcGluZ19pbmZvLgotIFNhbml0eSBjaGVjayBmb3IgbW1pbyBh ZGRyZXNzIG1vZGlmaWVkLgotIFNhbml0eSBjaGVjayBhZGRlZCBmb3Igc3RlcHBpbmcgYW5kIHN1 YnN0ZXBwaWcuCi0gTW9kaWZpZWQgdGhlIGludGVsX2RtY19pbmZvIHN0cnVjdHVyZSwgY2FjaGUg b25seSB0aGUgcmVxdWlyZWQgaGVhZGVyIGluZm8uIChBbmltZXNoKQoKdjEzOiBjbGFyaWZ5IGZp cm13YXJlIGxvYWQgZXJyb3IgbWVzc2FnZS4KVGhlIHJlYXNvbiBmb3IgYSBmaXJtd2FyZSBsb2Fk aW5nIGZhaWx1cmUgY2FuIGJlIG9ic2N1cmUgaWYgdGhlIGRyaXZlcgppcyBidWlsdC1pbi4gUHJv dmlkZSBhbiBleHBsYW5hdGlvbiB0byB0aGUgdXNlciBhYm91dCB0aGUgbGlrZWx5IHJlYXNvbiBm b3IKdGhlIGZhaWx1cmUgYW5kIGhvdyB0byByZXNvbHZlIGl0LiAoSW1yZSkKCnYxNDogU3VnZ2Vz dGVkIGJ5IEphbmkuCi0gZml4IHMvSTkxNS9DT05GSUdfRFJNX0k5MTUvIHR5cG8KLSBhZGQgZndf cGF0aCB0byB0aGUgZmlybXdhcmUgb2JqZWN0IGluc3RlYWQgb2YgdXNpbmcgYSBzdGF0aWMgcHRy IChKYW5pKQoKdjE1OgoxKSBDaGFuZ2VkIHRoZSBmaXJtd2FyZSBuYW1lIGFzIGRtY19nZW45LmJp biwgZXZlcnl0aW1lIGZvciBhIG5ldyBmaXJtd2FyZSB2ZXJzaW9uIGEgc3ltYm9saWMgbGluawp3 aXRoIHNhbWUgbmFtZSB3aWxsIGhlbHAgbm90IHRvIGJ1aWxkIGtlcm5lbCBhZ2Fpbi4KMikgQ2hh bmdlcyBkb25lIGFzIHBlciByZXZpZXcgY29tbWVudHMgZnJvbSBJbXJlLgotIEVycm9yIGNoZWNr IHJlbW92ZWQgZm9yIGludGVsX2Nzcl91Y29kZV9pbml0LgotIE1vdmVkIGNzci1zcGVjaWZpYyBk YXRhIHN0cnVjdHVyZSB0byBpbnRlbF9jc3IuaCBhbmQgb3B0aW1pemF0aW9uIGRvbmUgb24gc3Ry dWN0dXJlIGRlZmluaXRpb24uCi0gZnctPmRhdGEgdXNlZCBkaXJlY3RseSBmb3IgcGFyc2luZyB0 aGUgaGVhZGVyIGluZm8gJiBtZW1vcnkgYWxsb2NhdGlvbgpvbmx5IGRvbmUgc2VwYXJhdGVseSBm b3IgcGF5bG9hZC4gKEFuaW1lc2gpCgp2MTY6Ci0gTm8gbmVlZCBmb3Igb3V0X3JlZ3MgbGFiZWwg aW4gaTkxNV9kcml2ZXJfbG9hZCgpLCBzbyByZW1vdmVkIGl0LgotIENoYW5nZWQgdGhlIGZpcm13 YXJlIG5hbWUgYXMgc2tsX2RtY192ZXIxLmJpbiwgZm9sbG93ZWQgbmFtaW5nIGNvbnZlbnRpb24g PHBsYXRmb3JtPl9kbWNfPGFwaS12ZXJzaW9uPi5iaW4gKEFuaW1lc2gpCgpJc3N1ZTogVklaLTI1 NjkKU2lnbmVkLW9mZi1ieTogQS5TdW5pbCBLYW1hdGggPHN1bmlsLmthbWF0aEBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IERhbWllbiBMZXNwaWF1IDxkYW1pZW4ubGVzcGlhdUBpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IEFuaW1lc2ggTWFubmEgPGFuaW1lc2gubWFubmFAaW50ZWwuY29tPgpT aWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgICAgfCAgIDMgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZG1hLmMgIHwgIDExICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICB8 ICAyMCArKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggIHwgIDE3ICsrCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jc3IuYyB8IDM2NyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIHwgICA1 ICsKIDYgZmlsZXMgY2hhbmdlZCwgNDIwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiBj cmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMKCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L01ha2VmaWxlCmluZGV4IGE2OTAwMmUuLjUyMzhkZWIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2VmaWxl CkBAIC0xMiw3ICsxMiw4IEBAIGk5MTUteSA6PSBpOTE1X2Rydi5vIFwKICAgICAgICAgICBpOTE1 X3N1c3BlbmQubyBcCiAJICBpOTE1X3N5c2ZzLm8gXAogCSAgaW50ZWxfcG0ubyBcCi0JICBpbnRl bF9ydW50aW1lX3BtLm8KKwkgIGludGVsX3J1bnRpbWVfcG0ubyBcCisJICBpbnRlbF9jc3Iubwog CiBpOTE1LSQoQ09ORklHX0NPTVBBVCkgICArPSBpOTE1X2lvYzMyLm8KIGk5MTUtJChDT05GSUdf REVCVUdfRlMpICs9IGk5MTVfZGVidWdmcy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2RtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kbWEuYwppbmRleCBl NDQxMTZmLi5hMjM4ODg5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rt YS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZG1hLmMKQEAgLTgxNiw2ICs4MTYs NyBAQCBpbnQgaTkxNV9kcml2ZXJfbG9hZChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1bnNpZ25l ZCBsb25nIGZsYWdzKQogCXNwaW5fbG9ja19pbml0KCZkZXZfcHJpdi0+bW1pb19mbGlwX2xvY2sp OwogCW11dGV4X2luaXQoJmRldl9wcml2LT5kcGlvX2xvY2spOwogCW11dGV4X2luaXQoJmRldl9w cml2LT5tb2Rlc2V0X3Jlc3RvcmVfbG9jayk7CisJbXV0ZXhfaW5pdCgmZGV2X3ByaXYtPmNzcl9s b2NrKTsKIAogCWludGVsX3BtX3NldHVwKGRldik7CiAKQEAgLTg2MSw5ICs4NjIsMTIgQEAgaW50 IGk5MTVfZHJpdmVyX2xvYWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdW5zaWduZWQgbG9uZyBm bGFncykKIAogCWludGVsX3VuY29yZV9pbml0KGRldik7CiAKKwkvKiBMb2FkIENTUiBGaXJtd2Fy ZSBmb3IgU0tMICovCisJaW50ZWxfY3NyX3Vjb2RlX2luaXQoZGV2KTsKKwogCXJldCA9IGk5MTVf Z2VtX2d0dF9pbml0KGRldik7CiAJaWYgKHJldCkKLQkJZ290byBvdXRfcmVnczsKKwkJZ290byBv dXRfZnJlZWNzcjsKIAogCS8qIFdBUk5JTkc6IEFwcGFyZW50bHkgd2UgbXVzdCBraWNrIGZiZGV2 IGRyaXZlcnMgYmVmb3JlIHZnYWNvbiwKIAkgKiBvdGhlcndpc2UgdGhlIHZnYSBmYmRldiBkcml2 ZXIgZmFsbHMgb3Zlci4gKi8KQEAgLTEwMzMsNyArMTAzNyw4IEBAIG91dF9tdHJyZnJlZToKIAlp b19tYXBwaW5nX2ZyZWUoZGV2X3ByaXYtPmd0dC5tYXBwYWJsZSk7CiBvdXRfZ3R0OgogCWk5MTVf Z2xvYmFsX2d0dF9jbGVhbnVwKGRldik7Ci1vdXRfcmVnczoKK291dF9mcmVlY3NyOgorCWludGVs X2Nzcl91Y29kZV9maW5pKGRldik7CiAJaW50ZWxfdW5jb3JlX2ZpbmkoZGV2KTsKIAlwY2lfaW91 bm1hcChkZXYtPnBkZXYsIGRldl9wcml2LT5yZWdzKTsKIHB1dF9icmlkZ2U6CkBAIC0xMTEzLDYg KzExMTgsOCBAQCBpbnQgaTkxNV9kcml2ZXJfdW5sb2FkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp CiAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CiAJaTkxNV9nZW1fY2xlYW51cF9z dG9sZW4oZGV2KTsKIAorCWludGVsX2Nzcl91Y29kZV9maW5pKGRldik7CisKIAlpbnRlbF90ZWFy ZG93bl9nbWJ1cyhkZXYpOwogCWludGVsX3RlYXJkb3duX21jaGJhcihkZXYpOwogCmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYwppbmRleCBjM2ZkYmIwLi5hY2QwZTJiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmMKQEAgLTU1Niw2ICs1NTYsMjYgQEAgdm9pZCBpbnRlbF9ocGRfY2FuY2VsX3dvcmsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWNhbmNlbF9kZWxheWVkX3dvcmtfc3lu YygmZGV2X3ByaXYtPmhvdHBsdWdfcmVlbmFibGVfd29yayk7CiB9CiAKK3ZvaWQgaTkxNV9maXJt d2FyZV9sb2FkX2Vycm9yX3ByaW50KGNvbnN0IGNoYXIgKmZ3X3BhdGgsIGludCBlcnIpCit7CisJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gbG9hZCBmaXJtd2FyZSAlcyAoJWQpXG4iLCBmd19wYXRoLCBl cnIpOworCisJLyoKKwkgKiBJZiB0aGUgcmVhc29uIGlzIG5vdCBrbm93biBhc3N1bWUgLUVOT0VO VCBzaW5jZSB0aGF0J3MgdGhlIG1vc3QKKwkgKiB1c3VhbCBmYWlsdXJlIG1vZGUuCisJICovCisJ aWYgKCFlcnIpCisJCWVyciA9IC1FTk9FTlQ7CisKKwlpZiAoIShJU19CVUlMVElOKENPTkZJR19E Uk1fSTkxNSkgJiYgZXJyID09IC1FTk9FTlQpKQorCQlyZXR1cm47CisKKwlEUk1fRVJST1IoCisJ ICAiVGhlIGRyaXZlciBpcyBidWlsdC1pbiwgc28gdG8gbG9hZCB0aGUgZmlybXdhcmUgeW91IG5l ZWQgdG9cbiIKKwkgICJpbmNsdWRlIGl0IGVpdGhlciBpbiB0aGUga2VybmVsIChzZWUgQ09ORklH X0VYVFJBX0ZJUk1XQVJFKSBvclxuIgorCSAgImluIHlvdXIgaW5pdHJkL2luaXRyYW1mcyBpbWFn ZS5cbiIpOworfQorCiBzdGF0aWMgdm9pZCBpbnRlbF9zdXNwZW5kX2VuY29kZXJzKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZGV2X3ByaXYtPmRldjsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IDQ3YmU0YTUuLjkwZTQ3 YTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNjY3LDYgKzY2NywxNSBAQCBzdHJ1Y3Qg aW50ZWxfdW5jb3JlIHsKICNkZWZpbmUgZm9yX2VhY2hfZndfZG9tYWluKGRvbWFpbl9fLCBkZXZf cHJpdl9fLCBpX18pIFwKIAlmb3JfZWFjaF9md19kb21haW5fbWFzayhkb21haW5fXywgRk9SQ0VX QUtFX0FMTCwgZGV2X3ByaXZfXywgaV9fKQogCitzdHJ1Y3QgaW50ZWxfY3NyIHsKKwljb25zdCBj aGFyICpmd19wYXRoOworCV9fYmUzMiAqZG1jX3BheWxvYWQ7CisJdWludDMyX3QgZG1jX2Z3X3Np emU7CisJdWludDMyX3QgbW1pb19jb3VudDsKKwl1aW50MzJfdCBtbWlvYWRkcls4XTsKKwl1aW50 MzJfdCBtbWlvZGF0YVs4XTsKK307CisKICNkZWZpbmUgREVWX0lORk9fRk9SX0VBQ0hfRkxBRyhm dW5jLCBzZXApIFwKIAlmdW5jKGlzX21vYmlsZSkgc2VwIFwKIAlmdW5jKGlzX2k4NXgpIHNlcCBc CkBAIC0xNTczLDYgKzE1ODIsMTEgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3Ry dWN0IGk5MTVfdmlydHVhbF9ncHUgdmdwdTsKIAorCXN0cnVjdCBpbnRlbF9jc3IgY3NyOworCisJ LyogRGlzcGxheSBDU1ItcmVsYXRlZCBwcm90ZWN0aW9uICovCisJc3RydWN0IG11dGV4IGNzcl9s b2NrOworCiAJc3RydWN0IGludGVsX2dtYnVzIGdtYnVzW0dNQlVTX05VTV9QSU5TXTsKIAogCS8q KiBnbWJ1c19tdXRleCBwcm90ZWN0cyBhZ2FpbnN0IGNvbmN1cnJlbnQgdXNhZ2Ugb2YgdGhlIHNp bmdsZSBodyBnbWJ1cwpAQCAtMjQyNSw2ICsyNDM5LDggQEAgc3RydWN0IGRybV9pOTE1X2NtZF90 YWJsZSB7CiAjZGVmaW5lIEhBU19SQzYoZGV2KQkJKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDYp CiAjZGVmaW5lIEhBU19SQzZwKGRldikJCShJTlRFTF9JTkZPKGRldiktPmdlbiA9PSA2IHx8IElT X0lWWUJSSURHRShkZXYpKQogCisjZGVmaW5lIEhBU19DU1IoZGV2KQkoSVNfU0tZTEFLRShkZXYp KQorCiAjZGVmaW5lIElOVEVMX1BDSF9ERVZJQ0VfSURfTUFTSwkJMHhmZjAwCiAjZGVmaW5lIElO VEVMX1BDSF9JQlhfREVWSUNFX0lEX1RZUEUJCTB4M2IwMAogI2RlZmluZSBJTlRFTF9QQ0hfQ1BU X0RFVklDRV9JRF9UWVBFCQkweDFjMDAKQEAgLTI1MTUsNiArMjUzMSw3IEBAIGV4dGVybiB1bnNp Z25lZCBsb25nIGk5MTVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp OwogZXh0ZXJuIHZvaWQgaTkxNV91cGRhdGVfZ2Z4X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpOwogaW50IHZsdl9mb3JjZV9nZnhfY2xvY2soc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBib29sIG9uKTsKIHZvaWQgaW50ZWxfaHBkX2NhbmNlbF93b3JrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cit2b2lkIGk5MTVfZmlybXdhcmVfbG9h ZF9lcnJvcl9wcmludChjb25zdCBjaGFyICpmd19wYXRoLCBpbnQgZXJyKTsKIAogLyogaTkxNV9p cnEuYyAqLwogdm9pZCBpOTE1X3F1ZXVlX2hhbmdjaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nzci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfY3NyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMC4uZjVmYTU3NAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Nzci5jCkBAIC0wLDAgKzEsMzY3IEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTQgSW50 ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdB UkUuCisgKgorICovCisjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4KKyNpbmNsdWRlICJpOTE1 X2Rydi5oIgorI2luY2x1ZGUgImk5MTVfcmVnLmgiCisKKyNkZWZpbmUgSTkxNV9DU1JfU0tMICJp OTE1L3NrbF9kbWNfdmVyMS5iaW4iCisKK01PRFVMRV9GSVJNV0FSRShJOTE1X0NTUl9TS0wpOwor CisvKgorKiBTS0wgQ1NSIHJlZ2lzdGVycyBmb3IgREM1IGFuZCBEQzYKKyovCisjZGVmaW5lIENT Ul9QUk9HUkFNX0JBU0UJCTB4ODAwMDAKKyNkZWZpbmUgQ1NSX1NTUF9CQVNFX0FERFJfR0VOOQkJ MHgwMDAwMkZDMAorI2RlZmluZSBDU1JfSFRQX0FERFJfU0tMCQkweDAwNTAwMDM0CisjZGVmaW5l IENTUl9TU1BfQkFTRQkJCTB4OEYwNzQKKyNkZWZpbmUgQ1NSX0hUUF9TS0wJCQkweDhGMDA0Cisj ZGVmaW5lIENTUl9MQVNUX1dSSVRFCQkJMHg4RjAzNAorI2RlZmluZSBDU1JfTEFTVF9XUklURV9W QUxVRQkJMHhjMDAzYjQwMAorLyogTU1JTyBhZGRyZXNzIHJhbmdlIGZvciBDU1IgcHJvZ3JhbSAo MHg4MDAwMCAtIDB4ODJGRkYpICovCisjZGVmaW5lIENTUl9NQVhfRldfU0laRQkJCTB4MkZGRgor I2RlZmluZSBDU1JfREVGQVVMVF9GV19PRkZTRVQJCTB4RkZGRkZGRkYKKyNkZWZpbmUgQ1NSX01N SU9fU1RBUlRfUkFOR0UJMHg4MDAwMAorI2RlZmluZSBDU1JfTU1JT19FTkRfUkFOR0UJCTB4OEZG RkYKKworc3RydWN0IGludGVsX2Nzc19oZWFkZXIgeworCS8qIDB4MDkgZm9yIERNQyAqLworCXVp bnQzMl90IG1vZHVsZV90eXBlOworCisJLyogSW5jbHVkZXMgdGhlIERNQyBzcGVjaWZpYyBoZWFk ZXIgaW4gZHdvcmRzICovCisJdWludDMyX3QgaGVhZGVyX2xlbjsKKworCS8qIGFsd2F5cyB2YWx1 ZSB3b3VsZCBiZSAweDEwMDAwICovCisJdWludDMyX3QgaGVhZGVyX3ZlcjsKKworCS8qIE5vdCB1 c2VkICovCisJdWludDMyX3QgbW9kdWxlX2lkOworCisJLyogTm90IHVzZWQgKi8KKwl1aW50MzJf dCBtb2R1bGVfdmVuZG9yOworCisJLyogaW4gWVlZWU1NREQgZm9ybWF0ICovCisJdWludDMyX3Qg ZGF0ZTsKKworCS8qIFNpemUgaW4gZHdvcmRzIChDU1NfSGVhZGVybGVuICsgUGFja2FnZUhlYWRl ckxlbiArIGRtYyBGV3NMZW4pLzQgKi8KKwl1aW50MzJfdCBzaXplOworCisJLyogTm90IHVzZWQg Ki8KKwl1aW50MzJfdCBrZXlfc2l6ZTsKKworCS8qIE5vdCB1c2VkICovCisJdWludDMyX3QgbW9k dWx1c19zaXplOworCisJLyogTm90IHVzZWQgKi8KKwl1aW50MzJfdCBleHBvbmVudF9zaXplOwor CisJLyogTm90IHVzZWQgKi8KKwl1aW50MzJfdCByZXNlcnZlZDFbMTJdOworCisJLyogTWFqb3Ig TWlub3IgKi8KKwl1aW50MzJfdCB2ZXJzaW9uOworCisJLyogTm90IHVzZWQgKi8KKwl1aW50MzJf dCByZXNlcnZlZDJbOF07CisKKwkvKiBOb3QgdXNlZCAqLworCXVpbnQzMl90IGtlcm5lbF9oZWFk ZXJfaW5mbzsKK30gX19wYWNrZWQ7CisKK3N0cnVjdCBpbnRlbF9md19pbmZvIHsKKwl1aW50MTZf dCByZXNlcnZlZDE7CisKKwkvKiBTdGVwcGluZyAoQSwgQiwgQywgLi4uLCAqKS4gKiBpcyBhIHdp bGRjYXJkICovCisJY2hhciBzdGVwcGluZzsKKworCS8qIFN1Yi1zdGVwcGluZyAoMCwgMSwgLi4u LCAqKS4gKiBpcyBhIHdpbGRjYXJkICovCisJY2hhciBzdWJzdGVwcGluZzsKKworCXVpbnQzMl90 IG9mZnNldDsKKwl1aW50MzJfdCByZXNlcnZlZDI7Cit9IF9fcGFja2VkOworCitzdHJ1Y3QgaW50 ZWxfcGFja2FnZV9oZWFkZXIgeworCS8qIERNQyBjb250YWluZXIgaGVhZGVyIGxlbmd0aCBpbiBk d29yZHMgKi8KKwl1bnNpZ25lZCBjaGFyIGhlYWRlcl9sZW47CisKKwkvKiBhbHdheXMgdmFsdWUg d291bGQgYmUgMHgwMSAqLworCXVuc2lnbmVkIGNoYXIgaGVhZGVyX3ZlcjsKKworCXVuc2lnbmVk IGNoYXIgcmVzZXJ2ZWRbMTBdOworCisJLyogTnVtYmVyIG9mIHZhbGlkIGVudHJpZXMgaW4gdGhl IEZXSW5mbyBhcnJheSBiZWxvdyAqLworCXVpbnQzMl90IG51bV9lbnRyaWVzOworCisJc3RydWN0 IGludGVsX2Z3X2luZm8gZndfaW5mb1syMF07Cit9IF9fcGFja2VkOworCitzdHJ1Y3QgaW50ZWxf ZG1jX2hlYWRlciB7CisJLyogYWx3YXlzIHZhbHVlIHdvdWxkIGJlIDB4NDA0MDNFM0UgKi8KKwl1 aW50MzJfdCBzaWduYXR1cmU7CisKKwkvKiBETUMgYmluYXJ5IGhlYWRlciBsZW5ndGggKi8KKwl1 bnNpZ25lZCBjaGFyIGhlYWRlcl9sZW47CisKKwkvKiAweDAxICovCisJdW5zaWduZWQgY2hhciBo ZWFkZXJfdmVyOworCisJLyogUmVzZXJ2ZWQgKi8KKwl1aW50MTZfdCBkbWNjX3ZlcjsKKworCS8q IE1ham9yLCBNaW5vciAqLworCXVpbnQzMl90CXByb2plY3Q7CisKKwkvKiBGaXJtd2FyZSBwcm9n cmFtIHNpemUgKGV4Y2x1ZGluZyBoZWFkZXIpIGluIGR3b3JkcyAqLworCXVpbnQzMl90CWZ3X3Np emU7CisKKwkvKiBNYWpvciBNaW5vciB2ZXJzaW9uICovCisJdWludDMyX3QgZndfdmVyc2lvbjsK KworCS8qIE51bWJlciBvZiB2YWxpZCBNTUlPIGN5Y2xlcyBwcmVzZW50LiAqLworCXVpbnQzMl90 IG1taW9fY291bnQ7CisKKwkvKiBNTUlPIGFkZHJlc3MgKi8KKwl1aW50MzJfdCBtbWlvYWRkcls4 XTsKKworCS8qIE1NSU8gZGF0YSAqLworCXVpbnQzMl90IG1taW9kYXRhWzhdOworCisJLyogRlcg ZmlsZW5hbWUgICovCisJdW5zaWduZWQgY2hhciBkZmlsZVszMl07CisKKwl1aW50MzJfdCByZXNl cnZlZDFbMl07Cit9IF9fcGFja2VkOworCitzdHJ1Y3Qgc3RlcHBpbmdfaW5mbyB7CisJY2hhciBz dGVwcGluZzsKKwljaGFyIHN1YnN0ZXBwaW5nOworfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBz dGVwcGluZ19pbmZvIHNrbF9zdGVwcGluZ19pbmZvW10gPSB7CisJCXsnQScsICcwJ30sIHsnQics ICcwJ30sIHsnQycsICcwJ30sCisJCXsnRCcsICcwJ30sIHsnRScsICcwJ30sIHsnRicsICcwJ30s CisJCXsnRycsICcwJ30sIHsnSCcsICcwJ30sIHsnSScsICcwJ30KK307CisKK3N0YXRpYyBjaGFy IGludGVsX2dldF9zdGVwcGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCWlmIChJU19T S1lMQUtFKGRldikgJiYgKGRldi0+cGRldi0+cmV2aXNpb24gPAorCQkJQVJSQVlfU0laRShza2xf c3RlcHBpbmdfaW5mbykpKQorCQlyZXR1cm4gc2tsX3N0ZXBwaW5nX2luZm9bZGV2LT5wZGV2LT5y ZXZpc2lvbl0uc3RlcHBpbmc7CisJZWxzZQorCQlyZXR1cm4gLUVOT0RBVEE7Cit9CisKK3N0YXRp YyBjaGFyIGludGVsX2dldF9zdWJzdGVwcGluZyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQorewor CWlmIChJU19TS1lMQUtFKGRldikgJiYgKGRldi0+cGRldi0+cmV2aXNpb24gPAorCQkJQVJSQVlf U0laRShza2xfc3RlcHBpbmdfaW5mbykpKQorCQlyZXR1cm4gc2tsX3N0ZXBwaW5nX2luZm9bZGV2 LT5wZGV2LT5yZXZpc2lvbl0uc3Vic3RlcHBpbmc7CisJZWxzZQorCQlyZXR1cm4gLUVOT0RBVEE7 Cit9CisKK3ZvaWQgaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZh dGU7CisJX19iZTMyICpwYXlsb2FkID0gZGV2X3ByaXYtPmNzci5kbWNfcGF5bG9hZDsKKwl1aW50 MzJfdCBpLCBmd19zaXplOworCisJaWYgKCFJU19HRU45KGRldikpIHsKKwkJRFJNX0VSUk9SKCJO byBDU1Igc3VwcG9ydCBhdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm1cbiIpOworCQlyZXR1cm47 CisJfQorCisJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPmNzcl9sb2NrKTsKKwlmd19zaXplID0gZGV2 X3ByaXYtPmNzci5kbWNfZndfc2l6ZTsKKwlmb3IgKGkgPSAwOyBpIDwgZndfc2l6ZTsgaSsrKQor CQlJOTE1X1dSSVRFKENTUl9QUk9HUkFNX0JBU0UgKyBpICogNCwKKwkJCSh1MzIgX19mb3JjZSlw YXlsb2FkW2ldKTsKKworCWZvciAoaSA9IDA7IGkgPCBkZXZfcHJpdi0+Y3NyLm1taW9fY291bnQ7 IGkrKykgeworCQlJOTE1X1dSSVRFKGRldl9wcml2LT5jc3IubW1pb2FkZHJbaV0sCisJCQlkZXZf cHJpdi0+Y3NyLm1taW9kYXRhW2ldKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+Y3Ny X2xvY2spOworfQorCitzdGF0aWMgdm9pZCBmaW5pc2hfY3NyX2xvYWQoY29uc3Qgc3RydWN0IGZp cm13YXJlICpmdywgdm9pZCAqY29udGV4dCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBjb250ZXh0OworCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ ZGV2OworCXN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyICpjc3NfaGVhZGVyOworCXN0cnVjdCBpbnRl bF9wYWNrYWdlX2hlYWRlciAqcGFja2FnZV9oZWFkZXI7CisJc3RydWN0IGludGVsX2RtY19oZWFk ZXIgKmRtY19oZWFkZXI7CisJc3RydWN0IGludGVsX2NzciAqY3NyID0gJmRldl9wcml2LT5jc3I7 CisJY2hhciBzdGVwcGluZyA9IGludGVsX2dldF9zdGVwcGluZyhkZXYpOworCWNoYXIgc3Vic3Rl cHBpbmcgPSBpbnRlbF9nZXRfc3Vic3RlcHBpbmcoZGV2KTsKKwl1aW50MzJfdCBkbWNfb2Zmc2V0 ID0gQ1NSX0RFRkFVTFRfRldfT0ZGU0VULCByZWFkY291bnQgPSAwLCBuYnl0ZXM7CisJdWludDMy X3QgaTsKKwlfX2JlMzIgKmRtY19wYXlsb2FkOworCisJaWYgKCFmdykgeworCQlpOTE1X2Zpcm13 YXJlX2xvYWRfZXJyb3JfcHJpbnQoY3NyLT5md19wYXRoLCAwKTsKKwkJZ290byBvdXQ7CisJfQor CisJaWYgKChzdGVwcGluZyA9PSAtRU5PREFUQSkgfHwgKHN1YnN0ZXBwaW5nID09IC1FTk9EQVRB KSkgeworCQlEUk1fRVJST1IoIlVua25vd24gc3RlcHBpbmcgaW5mbywgZmlybXdhcmUgbG9hZGlu ZyBmYWlsZWRcbiIpOworCQlnb3RvIG91dDsKKwl9CisKKwkvKiBFeHRyYWN0IENTUyBIZWFkZXIg aW5mb3JtYXRpb24qLworCWNzc19oZWFkZXIgPSAoc3RydWN0IGludGVsX2Nzc19oZWFkZXIgKilm dy0+ZGF0YTsKKwlpZiAoc2l6ZW9mKHN0cnVjdCBpbnRlbF9jc3NfaGVhZGVyKSAhPQorCQkoY3Nz X2hlYWRlci0+aGVhZGVyX2xlbiAqIDQpKSB7CisJCURSTV9FUlJPUigiRmlybXdhcmUgaGFzIHdy b25nIENTUyBoZWFkZXIgbGVuZ3RoICV1IGJ5dGVzXG4iLAorCQkJKGNzc19oZWFkZXItPmhlYWRl cl9sZW4gKiA0KSk7CisJCWdvdG8gb3V0OworCX0KKwlyZWFkY291bnQgKz0gc2l6ZW9mKHN0cnVj dCBpbnRlbF9jc3NfaGVhZGVyKTsKKworCS8qIEV4dHJhY3QgUGFja2FnZSBIZWFkZXIgaW5mb3Jt YXRpb24qLworCXBhY2thZ2VfaGVhZGVyID0gKHN0cnVjdCBpbnRlbF9wYWNrYWdlX2hlYWRlciAq KQorCQkJCQkmZnctPmRhdGFbcmVhZGNvdW50XTsKKwlpZiAoc2l6ZW9mKHN0cnVjdCBpbnRlbF9w YWNrYWdlX2hlYWRlcikgIT0KKwkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpIHsK KwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBoYXMgd3JvbmcgcGFja2FnZSBoZWFkZXIgbGVuZ3RoICV1 IGJ5dGVzXG4iLAorCQkJKHBhY2thZ2VfaGVhZGVyLT5oZWFkZXJfbGVuICogNCkpOworCQlnb3Rv IG91dDsKKwl9CisJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50ZWxfcGFja2FnZV9oZWFk ZXIpOworCisJLyogU2VhcmNoIGZvciBkbWNfb2Zmc2V0IHRvIGZpbmQgZmlyd2FyZSBiaW5hcnku ICovCisJZm9yIChpID0gMDsgaSA8IHBhY2thZ2VfaGVhZGVyLT5udW1fZW50cmllczsgaSsrKSB7 CisJCWlmIChwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5zdWJzdGVwcGluZyA9PSAnKicgJiYK KwkJCXN0ZXBwaW5nID09IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ldLnN0ZXBwaW5nKSB7CisJ CQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0ub2Zmc2V0OworCQkJYnJl YWs7CisJCX0gZWxzZSBpZiAoc3RlcHBpbmcgPT0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9baV0u c3RlcHBpbmcgJiYKKwkJCXN1YnN0ZXBwaW5nID09IHBhY2thZ2VfaGVhZGVyLT5md19pbmZvW2ld LnN1YnN0ZXBwaW5nKSB7CisJCQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9oZWFkZXItPmZ3X2luZm9b aV0ub2Zmc2V0OworCQkJYnJlYWs7CisJCX0gZWxzZSBpZiAocGFja2FnZV9oZWFkZXItPmZ3X2lu Zm9baV0uc3RlcHBpbmcgPT0gJyonICYmCisJCQlwYWNrYWdlX2hlYWRlci0+ZndfaW5mb1tpXS5z dWJzdGVwcGluZyA9PSAnKicpCisJCQlkbWNfb2Zmc2V0ID0gcGFja2FnZV9oZWFkZXItPmZ3X2lu Zm9baV0ub2Zmc2V0OworCX0KKwlpZiAoZG1jX29mZnNldCA9PSBDU1JfREVGQVVMVF9GV19PRkZT RVQpIHsKKwkJRFJNX0VSUk9SKCJGaXJtd2FyZSBub3Qgc3VwcG9ydGVkIGZvciAlYyBzdGVwcGlu Z1xuIiwgc3RlcHBpbmcpOworCQlnb3RvIG91dDsKKwl9CisJcmVhZGNvdW50ICs9IGRtY19vZmZz ZXQ7CisKKwkvKiBFeHRyYWN0IGRtY19oZWFkZXIgaW5mb3JtYXRpb24uICovCisJZG1jX2hlYWRl ciA9IChzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlciAqKSZmdy0+ZGF0YVtyZWFkY291bnRdOworCWlm IChzaXplb2Yoc3RydWN0IGludGVsX2RtY19oZWFkZXIpICE9IChkbWNfaGVhZGVyLT5oZWFkZXJf bGVuKSkgeworCQlEUk1fRVJST1IoIkZpcm13YXJlIGhhcyB3cm9uZyBkbWMgaGVhZGVyIGxlbmd0 aCAldSBieXRlc1xuIiwKKwkJCQkoZG1jX2hlYWRlci0+aGVhZGVyX2xlbikpOworCQlnb3RvIG91 dDsKKwl9CisJcmVhZGNvdW50ICs9IHNpemVvZihzdHJ1Y3QgaW50ZWxfZG1jX2hlYWRlcik7CisK KwkvKiBDYWNoZSB0aGUgZG1jIGhlYWRlciBpbmZvLiAqLworCWlmIChkbWNfaGVhZGVyLT5tbWlv X2NvdW50ID4gQVJSQVlfU0laRShjc3ItPm1taW9hZGRyKSkgeworCQlEUk1fRVJST1IoIkZpcm13 YXJlIGhhcyB3cm9uZyBtbWlvIGNvdW50ICV1XG4iLAorCQkJCQkJZG1jX2hlYWRlci0+bW1pb19j b3VudCk7CisJCWdvdG8gb3V0OworCX0KKwljc3ItPm1taW9fY291bnQgPSBkbWNfaGVhZGVyLT5t bWlvX2NvdW50OworCWZvciAoaSA9IDA7IGkgPCBkbWNfaGVhZGVyLT5tbWlvX2NvdW50OyBpKysp IHsKKwkJaWYgKGRtY19oZWFkZXItPm1taW9hZGRyW2ldIDwgQ1NSX01NSU9fU1RBUlRfUkFOR0Ug JiYKKwkJCWRtY19oZWFkZXItPm1taW9hZGRyW2ldID4gQ1NSX01NSU9fRU5EX1JBTkdFKSB7CisJ CQlEUk1fRVJST1IoIiBGaXJtd2FyZSBoYXMgd3JvbmcgbW1pbyBhZGRyZXNzIDB4JXhcbiIsCisJ CQkJCQlkbWNfaGVhZGVyLT5tbWlvYWRkcltpXSk7CisJCQlnb3RvIG91dDsKKwkJfQorCQljc3It Pm1taW9hZGRyW2ldID0gZG1jX2hlYWRlci0+bW1pb2FkZHJbaV07CisJCWNzci0+bW1pb2RhdGFb aV0gPSBkbWNfaGVhZGVyLT5tbWlvZGF0YVtpXTsKKwl9CisKKwkvKiBmd19zaXplIGlzIGluIGR3 b3Jkcywgc28gbXVsdGlwbGllZCBieSA0IHRvIGNvbnZlcnQgaW50byBieXRlcy4gKi8KKwluYnl0 ZXMgPSBkbWNfaGVhZGVyLT5md19zaXplICogNDsKKwlpZiAobmJ5dGVzID4gQ1NSX01BWF9GV19T SVpFKSB7CisJCURSTV9FUlJPUigiQ1NSIGZpcm13YXJlIHRvbyBiaWcgKCV1KSBieXRlc1xuIiwg bmJ5dGVzKTsKKwkJZ290byBvdXQ7CisJfQorCWNzci0+ZG1jX2Z3X3NpemUgPSBkbWNfaGVhZGVy LT5md19zaXplOworCisJY3NyLT5kbWNfcGF5bG9hZCA9IGttYWxsb2MobmJ5dGVzLCBHRlBfS0VS TkVMKTsKKwlpZiAoIWNzci0+ZG1jX3BheWxvYWQpIHsKKwkJRFJNX0VSUk9SKCJNZW1vcnkgYWxs b2NhdGlvbiBmYWlsZWQgZm9yIGRtYyBwYXlsb2FkXG4iKTsKKwkJZ290byBvdXQ7CisJfQorCisJ ZG1jX3BheWxvYWQgPSBjc3ItPmRtY19wYXlsb2FkOworCWZvciAoaSA9IDA7IGkgPCBkbWNfaGVh ZGVyLT5md19zaXplOyBpKyspIHsKKwkJdWludDMyX3QgKnRtcCA9ICh1MzIgKikmZnctPmRhdGFb cmVhZGNvdW50ICsgaSAqIDRdOworCQkvKgorCQkgKiBUaGUgZmlybXdhcmUgcGF5bG9hZCBpcyBh biBhcnJheSBvZiAzMiBiaXQgd29yZHMgc3RvcmVkIGluCisJCSAqIGxpdHRsZS1lbmRpYW4gZm9y bWF0IGluIHRoZSBmaXJtd2FyZSBpbWFnZSBhbmQgcHJvZ3JhbW1lZAorCQkgKiBhcyAzMiBiaXQg YmlnLWVuZGlhbiBmb3JtYXQgdG8gbWVtb3J5LgorCQkgKi8KKwkJZG1jX3BheWxvYWRbaV0gPSBj cHVfdG9fYmUzMigqdG1wKTsKKwl9CisKKwkvKiBsb2FkIGNzciBwcm9ncmFtIGR1cmluZyBzeXN0 ZW0gYm9vdCwgYXMgbmVlZGVkIGZvciBEQyBzdGF0ZXMgKi8KKwlpbnRlbF9jc3JfbG9hZF9wcm9n cmFtKGRldik7CitvdXQ6CisJcmVsZWFzZV9maXJtd2FyZShmdyk7Cit9CisKK3ZvaWQgaW50ZWxf Y3NyX3Vjb2RlX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCXN0cnVjdCBpbnRlbF9j c3IgKmNzciA9ICZkZXZfcHJpdi0+Y3NyOworCWludCByZXQ7CisKKwlpZiAoIUhBU19DU1IoZGV2 KSkKKwkJcmV0dXJuOworCisJaWYgKElTX1NLWUxBS0UoZGV2KSkKKwkJY3NyLT5md19wYXRoID0g STkxNV9DU1JfU0tMOworCWVsc2UgeworCQlEUk1fRVJST1IoIlVuZXhwZWN0ZWQ6IG5vIGtub3du IENTUiBmaXJtd2FyZSBmb3IgcGxhdGZvcm1cbiIpOworCQlyZXR1cm47CisJfQorCisJLyogQ1NS IHN1cHBvcnRlZCBmb3IgcGxhdGZvcm0sIGxvYWQgZmlybXdhcmUgKi8KKwlyZXQgPSByZXF1ZXN0 X2Zpcm13YXJlX25vd2FpdChUSElTX01PRFVMRSwgdHJ1ZSwgY3NyLT5md19wYXRoLAorCQkJCSZk ZXZfcHJpdi0+ZGV2LT5wZGV2LT5kZXYsCisJCQkJR0ZQX0tFUk5FTCwgZGV2X3ByaXYsCisJCQkJ ZmluaXNoX2Nzcl9sb2FkKTsKKwlpZiAocmV0KQorCQlpOTE1X2Zpcm13YXJlX2xvYWRfZXJyb3Jf cHJpbnQoY3NyLT5md19wYXRoLCByZXQpOworCit9CisKK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2Zp bmkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOworCisJaWYgKCFIQVNfQ1NSKGRldikpCisJCXJl dHVybjsKKworCWtmcmVlKGRldl9wcml2LT5jc3IuZG1jX3BheWxvYWQpOworfQpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAppbmRleCA3YTBhYTI0Li5mM2EyZDg4IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaApAQCAtMTA2Miw2ICsxMDYyLDExIEBAIHZvaWQgaW50ZWxfbW9kZXNldF9wcmVjbG9z ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwogdW5zaWdu ZWQgbG9uZyBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHN0cnVjdCBpbnRlbF9wbGFuZSAqaW50ZWxf cGxhbmUsCiAJCQkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKIAorLyog aW50ZWxfY3NyLmMgKi8KK3ZvaWQgaW50ZWxfY3NyX3Vjb2RlX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldik7Cit2b2lkIGludGVsX2Nzcl9sb2FkX3Byb2dyYW0oc3RydWN0IGRybV9kZXZpY2Ug KmRldik7Cit2b2lkIGludGVsX2Nzcl91Y29kZV9maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp OworCiAvKiBpbnRlbF9kcC5jICovCiB2b2lkIGludGVsX2RwX2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgaW50IG91dHB1dF9yZWcsIGVudW0gcG9ydCBwb3J0KTsKIGJvb2wgaW50ZWxfZHBf aW5pdF9jb25uZWN0b3Ioc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQs Ci0tIAoyLjAuMgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK