From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anusha Srivatsa Subject: [PATCH 3/8] drm/i915/huc: Add HuC fw loading support Date: Wed, 23 Nov 2016 14:27:38 -0800 Message-ID: <1479940063-2961-4-git-send-email-anusha.srivatsa@intel.com> References: <1479940063-2961-1-git-send-email-anusha.srivatsa@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 C76C66E026 for ; Wed, 23 Nov 2016 22:27:52 +0000 (UTC) In-Reply-To: <1479940063-2961-1-git-send-email-anusha.srivatsa@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 RnJvbTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+CgpUaGUgSHVDIGxv YWRpbmcgcHJvY2VzcyBpcyBzaW1pbGFyIHRvIEd1Qy4gVGhlIGludGVsX3VjX2Z3X2ZldGNoKCkK aXMgdXNlZCBmb3IgYm90aCBjYXNlcy4KCkh1QyBsb2FkaW5nIG5lZWRzIHRvIGJlIGJlZm9yZSBH dUMgbG9hZGluZy4gVGhlIFdPUENNIHNldHRpbmcgbXVzdApiZSBkb25lIGVhcmx5IGJlZm9yZSBs b2FkaW5nIGFueSBvZiB0aGVtLgoKdjI6IHJlYmFzZWQgb24tdG9wIG9mIGRybS1pbnRlbC1uaWdo dGx5LgogICAgcmVtb3ZlZCBpZihIQVNfR1VDKCkpIGJlZm9yZSB0aGUgZ3VjIGNhbGwuIChELkdv cmRvbikKICAgIHVwZGF0ZSBodWNfdmVyc2lvbiBudW1iZXIgb2YgZm9ybWF0Lgp2MzogcmViYXNl ZCB0byBkcm0taW50ZWwtbmlnaHRseSwgY2hhbmdlZCB0aGUgZmlsZSBuYW1lIGZvcm1hdCB0bwog ICAgbWF0Y2ggdGhlIG9uZSBpbiB0aGUgaHVjIHBhY2thZ2UuCiAgICBDaGFuZ2VkIGRldi0+ZGV2 X3ByaXZhdGUgdG8gdG9faTkxNSgpCnY0OiBtb3ZlZCBmdW5jdGlvbiBiYWNrIHRvIHdoZXJlIGl0 IHdhcy4KICAgIGNoYW5nZSB3YWl0X2Zvcl9hdG9taWMgdG8gd2FpdF9mb3IuCnY1OiByZWJhc2Vk ICsgY29tbWVudCBjaGFuZ2VzLgp2NzogcmViYXNlZC4Kdjg6IHJlYmFzZWQuCnY5OiByZWJhc2Vk LiBDaGFuZ2VkIHRoZSB5ZWFyIGluIHRoZSBjb3B5cmlnaHQgbWVzc2FnZSB0byByZWZsZWN0CnRo ZSByaWdodCB5ZWFyLkNvcnJlY3QgdGhlIGNvbW1lbnRzLHJlbW92ZSB0aGUgdW53YW50ZWQgV0FS TiBtZXNzYWdlLApyZXBsYWNlIGRybV9nZW1fb2JqZWN0X3VucmVmZXJlbmNlKCkgd2l0aCBpOTE1 X2dlbV9vYmplY3RfcHV0KCkuTWFrZSB0aGUKcHJvdG90eXBlcyBpbiBpbnRlbF9odWMuaCBub24t ZXh0ZXJuLgp2MTA6IHJlYmFzZWQuIFVwZGF0ZSB0aGUgZmlsZSBjb25zdHJ1Y3Rpb24gZG9uZSBi eSBIdUMuIEl0IGlzIHNpbWlsYXIgdG8KR3VDLkFkb3B0ZWQgdGhlIGFwcHJvYWNoIHVzZWQgaW4t Cmh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC8xMDQzNTUvIDxUdnJ0a28g VXJzdWxpbj4KdjExOiBGaXggd2FybmluZ3MgcmVtb3ZlIG9sZCBkZWNsYXJhdGlvbgp2MTI6IENo YW5nZSBkZXYgdG8gZGV2X3ByaXYgaW4gbWFjcm8gZGVmaW5pdGlvbi4KQ29ycmVjdGVkIGNvbW1l bnRzLgp2MTM6IHJlYmFzZWQuCgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGlu dGVsLmNvbT4KVGVzdGVkLWJ5OiBYaWFuZyBIYWloYW8gPGhhaWhhby54aWFuZ0BpbnRlbC5jb20+ ClNpZ25lZC1vZmYtYnk6IEFudXNoYSBTcml2YXRzYSA8YW51c2hhLnNyaXZhdHNhQGludGVsLmNv bT4KU2lnbmVkLW9mZi1ieTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+ClNpZ25lZC1vZmYt Ynk6IFBldGVyIEFudG9pbmUgPHBldGVyLmFudG9pbmVAaW50ZWwuY29tPgpSZXZpZXdlZC1ieTog RGF2ZSBHb3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9k cm0vaTkxNS9NYWtlZmlsZSAgICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaCAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3Vj X3JlZy5oICAgICB8ICAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAg ICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIHwgICA2 ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCAgICAgICAgfCAgNDIgKysrKysK IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Y19sb2FkZXIuYyB8IDI2NiArKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKwogNyBmaWxlcyBjaGFuZ2VkLCAzMjAgaW5zZXJ0aW9ucygr KSwgMiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9odWMuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2h1Y19sb2FkZXIuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L01ha2Vm aWxlIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKaW5kZXggNTgwNjAyZC4uYzYwZTY4 MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKQEAgLTU2LDYgKzU2LDcgQEAgaTkxNS15ICs9IGk5MTVf Y21kX3BhcnNlci5vIFwKIAogIyBnZW5lcmFsLXB1cnBvc2UgbWljcm9jb250cm9sbGVyIChHdUMp IHN1cHBvcnQKIGk5MTUteSArPSBpbnRlbF9ndWNfbG9hZGVyLm8gXAorCSAgaW50ZWxfaHVjX2xv YWRlci5vIFwKIAkgIGk5MTVfZ3VjX3N1Ym1pc3Npb24ubwogCiAjIGF1dG9nZW5lcmF0ZWQgbnVs bCByZW5kZXIgc3RhdGUKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGM0NGYyNDEuLjRkNGUw YTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUg ImludGVsX2Jpb3MuaCIKICNpbmNsdWRlICJpbnRlbF9kcGxsX21nci5oIgogI2luY2x1ZGUgImlu dGVsX2d1Yy5oIgorI2luY2x1ZGUgImludGVsX2h1Yy5oIgogI2luY2x1ZGUgImludGVsX2xyYy5o IgogI2luY2x1ZGUgImludGVsX3JpbmdidWZmZXIuaCIKIApAQCAtMTkxNSw2ICsxOTE2LDcgQEAg c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCiAJc3RydWN0IGludGVsX2d2dCAqZ3Z0OwogCisJ c3RydWN0IGludGVsX2h1YyBodWM7CiAJc3RydWN0IGludGVsX2d1YyBndWM7CiAKIAlzdHJ1Y3Qg aW50ZWxfY3NyIGNzcjsKQEAgLTI3NjgsNiArMjc3MCw3IEBAIGludGVsX2luZm8oY29uc3Qgc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogI2RlZmluZSBIQVNfR1VDKGRldl9wcml2 KQkoKGRldl9wcml2KS0+aW5mby5oYXNfZ3VjKQogI2RlZmluZSBIQVNfR1VDX1VDT0RFKGRldl9w cml2KQkoSEFTX0dVQyhkZXZfcHJpdikpCiAjZGVmaW5lIEhBU19HVUNfU0NIRUQoZGV2X3ByaXYp CShIQVNfR1VDKGRldl9wcml2KSkKKyNkZWZpbmUgSEFTX0hVQ19VQ09ERShkZXZfcHJpdikJKEhB U19HVUMoZGV2X3ByaXYpKQogCiAjZGVmaW5lIEhBU19SRVNPVVJDRV9TVFJFQU1FUihkZXZfcHJp dikgKChkZXZfcHJpdiktPmluZm8uaGFzX3Jlc291cmNlX3N0cmVhbWVyKQogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3JlZy5oCmluZGV4IGE0N2UxZTQuLjY0ZTk0MmEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ3VjX3JlZy5oCkBAIC02MSw5ICs2MSwxMiBAQAogI2RlZmluZSAgIERNQV9BRERS RVNTX1NQQUNFX0dUVAkJICAoOCA8PCAxNikKICNkZWZpbmUgRE1BX0NPUFlfU0laRQkJCV9NTUlP KDB4YzMxMCkKICNkZWZpbmUgRE1BX0NUUkwJCQlfTU1JTygweGMzMTQpCisjZGVmaW5lICAgSFVD X1VLRVJORUwJCQkgICgxPDw5KQogI2RlZmluZSAgIFVPU19NT1ZFCQkJICAoMTw8NCkKICNkZWZp bmUgICBTVEFSVF9ETUEJCQkgICgxPDwwKQogI2RlZmluZSBETUFfR1VDX1dPUENNX09GRlNFVAkJ X01NSU8oMHhjMzQwKQorI2RlZmluZSAgIEhVQ19MT0FESU5HX0FHRU5UX1ZDUgkJICAoMDw8MSkK KyNkZWZpbmUgICBIVUNfTE9BRElOR19BR0VOVF9HVUMJCSAgKDE8PDEpCiAjZGVmaW5lICAgR1VD X1dPUENNX09GRlNFVF9WQUxVRQkgIDB4ODAwMDAJLyogNTEyS0IgKi8KICNkZWZpbmUgR1VDX01B WF9JRExFX0NPVU5UCQlfTU1JTygweEMzRTQpCiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Yy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKaW5k ZXggNDVkZmE0MC4uZmY2YWJhNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZ3VjLmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmgKQEAgLTE4Myw2 ICsxODMsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaW50ZWxfdWNfZndfc3RhdHVzX3JlcHIoZW51 bSBpbnRlbF91Y19md19zdGF0dXMgc3RhdHVzKTsKIGV4dGVybiBpbnQgaW50ZWxfZ3VjX3N1c3Bl bmQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiBleHRlcm4gaW50IGludGVsX2d1Y19yZXN1bWUo c3RydWN0IGRybV9kZXZpY2UgKmRldik7CiB2b2lkIGludGVsX3VjX2Z3X2ZldGNoKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHN0cnVjdCBpbnRlbF91Y19mdyAqdWNfZncpOwordTMyIGd1Y193b3Bj bV9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiAKIC8qIGk5MTVfZ3Vj X3N1Ym1pc3Npb24uYyAqLwogaW50IGk5MTVfZ3VjX3N1Ym1pc3Npb25faW5pdChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xv YWRlci5jCmluZGV4IDcwYjM3MmIuLjA5MGM3MjcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2d1Y19sb2FkZXIuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWNfbG9hZGVyLmMKQEAgLTMwOSw3ICszMDksOCBAQCBzdGF0aWMgaW50IGd1Y191Y29kZV94 ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJSTkxNV9XUklURShE TUFfQUREUl8xX0hJR0gsIERNQV9BRERSRVNTX1NQQUNFX1dPUENNKTsKIAogCS8qIEZpbmFsbHkg c3RhcnQgdGhlIERNQSAqLwotCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklUX0VOQUJM RShVT1NfTU9WRSB8IFNUQVJUX0RNQSkpOworCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURf QklUX0VOQUJMRShVT1NfTU9WRSB8IFNUQVJUX0RNQSkgfAorCQkJX01BU0tFRF9CSVRfRElTQUJM RShIVUNfVUtFUk5FTCkpOwogCiAJLyoKIAkgKiBXYWl0IGZvciB0aGUgRE1BIHRvIGNvbXBsZXRl ICYgdGhlIEd1QyB0byBzdGFydCB1cC4KQEAgLTMzNCw3ICszMzUsNyBAQCBzdGF0aWMgaW50IGd1 Y191Y29kZV94ZmVyX2RtYShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJcmV0 dXJuIHJldDsKIH0KIAotc3RhdGljIHUzMiBndWNfd29wY21fc2l6ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCit1MzIgZ3VjX3dvcGNtX3NpemUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2KQogewogCXUzMiB3b3BjbV9zaXplID0gR1VDX1dPUENNX1RPUDsKIApA QCAtNTEyLDYgKzUxMyw3IEBAIGludCBpbnRlbF9ndWNfc2V0dXAoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKIAkJaWYgKGVycikKIAkJCWdvdG8gZmFpbDsKIAorCQlpbnRlbF9odWNfbG9hZChkZXYp OwogCQllcnIgPSBndWNfdWNvZGVfeGZlcihkZXZfcHJpdik7CiAJCWlmICghZXJyKQogCQkJYnJl YWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWMuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2h1Yy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAuLjNjZTAyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9odWMuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IMKpIDIwMTYgSW50 ZWwgQ29ycG9yYXRpb24KKyAqCisgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVl IG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQorICogY29weSBvZiB0aGlzIHNv ZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUi KSwKKyAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1 ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KKyAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2Rp ZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLAorICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCisgKiBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZv bGxvd2luZyBjb25kaXRpb25zOgorICoKKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFu ZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKKyAqIHBhcmFncmFw aCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9u cyBvZiB0aGUKKyAqIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAi QVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBM SUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNI QU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05J TkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAorICogVEhFIEFVVEhPUlMgT1IgQ09QWVJJ R0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAq IExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RI RVJXSVNFLCBBUklTSU5HCisgKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRI RSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTCisgKiBJTiBUSEUgU09GVFdB UkUuCisgKgorICovCisjaWZuZGVmIF9JTlRFTF9IVUNfSF8KKyNkZWZpbmUgX0lOVEVMX0hVQ19I XworCisjaW5jbHVkZSAiaW50ZWxfZ3VjLmgiCisKKyNkZWZpbmUgSFVDX1NUQVRVUzIJCV9NTUlP KDB4RDNCMCkKKyNkZWZpbmUgICBIVUNfRldfVkVSSUZJRUQJKDE8PDcpCisKK3N0cnVjdCBpbnRl bF9odWMgeworCS8qIEdlbmVyaWMgdUMgZmlybXdhcmUgbWFuYWdlbWVudCAqLworCXN0cnVjdCBp bnRlbF91Y19mdyBodWNfZnc7CisKKwkvKiBIdUMtc3BlY2lmaWMgYWRkaXRpb25zICovCit9Owor Cit2b2lkIGludGVsX2h1Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwordm9pZCBpbnRl bF9odWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKK2ludCBpbnRlbF9odWNfbG9hZChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaHVjX2xvYWRlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf aHVjX2xvYWRlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjOWMwOTYK LS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9odWNfbG9hZGVy LmMKQEAgLTAsMCArMSwyNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxNiBJbnRlbCBDb3Jw b3JhdGlvbgorICoKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hh cmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUg YW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICog dG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVy Z2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMg cGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUgbmV4dAorICogcGFyYWdyYXBoKSBzaGFs bCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRo ZQorICogU29mdHdhcmUuCisgKgorICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAorICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdF TUVOVC4gIElOIE5PIEVWRU5UIFNIQUxMCisgKiBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9M REVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklM SVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0Us IEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRX QVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MKKyAqIElOIFRIRSBTT0ZUV0FSRS4KKyAq CisgKi8KKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPgorI2luY2x1ZGUgImk5MTVfZHJ2Lmgi CisjaW5jbHVkZSAiaW50ZWxfaHVjLmgiCisKKy8qKgorICogRE9DOiBIdUMgRmlybXdhcmUKKyAq CisgKiBNb3RpdmF0aW9uOgorICogR0VOOSBpbnRyb2R1Y2VzIGEgbmV3IGRlZGljYXRlZCBmaXJt d2FyZSBmb3IgdXNhZ2UgaW4gbWVkaWEgSEVWQyAoSGlnaAorICogRWZmaWNpZW5jeSBWaWRlbyBD b2RpbmcpIG9wZXJhdGlvbnMuIFVzZXJzcGFjZSBjYW4gdXNlIHRoZSBmaXJtd2FyZQorICogY2Fw YWJpbGl0aWVzIGJ5IGFkZGluZyBIdUMgc3BlY2lmaWMgY29tbWFuZHMgdG8gYmF0Y2ggYnVmZmVy cy4KKyAqCisgKiBJbXBsZW1lbnRhdGlvbjoKKyAqIFRoZSBzYW1lIGZpcm13YXJlIGxvYWRlciBp cyB1c2VkIGFzIHRoZSBHdUMuIEhvd2V2ZXIsIHRoZSBhY3R1YWwKKyAqIGxvYWRpbmcgdG8gSFcg aXMgZGVmZXJyZWQgdW50aWwgR0VNIGluaXRpYWxpemF0aW9uIGlzIGRvbmUuCisgKgorICogTm90 ZSB0aGF0IEh1QyBmaXJtd2FyZSBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRp bmcuCisgKi8KKworI2RlZmluZSBTS0xfRldfTUFKT1IgMDEKKyNkZWZpbmUgU0tMX0ZXX01JTk9S IDA3CisjZGVmaW5lIFNLTF9CTERfTlVNIDEzOTgKKworI2RlZmluZSBIVUNfRldfUEFUSChwbGF0 Zm9ybSwgbWFqb3IsIG1pbm9yLCBibGRfbnVtKSBcCisJImk5MTUvIiBfX3N0cmluZ2lmeShwbGF0 Zm9ybSkgIl9odWNfdmVyIiBfX3N0cmluZ2lmeShtYWpvcikgIl8iIFwKKwlfX3N0cmluZ2lmeSht aW5vcikgIl8iIF9fc3RyaW5naWZ5KGJsZF9udW0pICIuYmluIgorCisjZGVmaW5lIEk5MTVfU0tM X0hVQ19VQ09ERSBIVUNfRldfUEFUSChza2wsIFNLTF9GV19NQUpPUiwgXAorCVNLTF9GV19NSU5P UiwgU0tMX0JMRF9OVU0pCitNT0RVTEVfRklSTVdBUkUoSTkxNV9TS0xfSFVDX1VDT0RFKTsKKwor LyoqCisgKiBodWNfdWNvZGVfeGZlcigpIC0gRE1BJ3MgdGhlIGZpcm13YXJlCisgKiBAZGV2X3By aXY6IHRoZSBkcm0gZGV2aWNlCisgKgorICogVGhpcyBmdW5jdGlvbiB0YWtlcyB0aGUgZ2VtIG9i amVjdCBjb250YWluaW5nIHRoZSBmaXJtd2FyZSwgc2V0cyB1cCB0aGUgRE1BCisgKiBlbmdpbmUg TU1JTywgdHJpZ2dlcnMgdGhlIERNQSBvcGVyYXRpb24gYW5kIHdhaXRzIGZvciBpdCB0byBmaW5p c2guCisgKgorICogVHJhbnNmZXIgdGhlIGZpcm13YXJlIGltYWdlIHRvIFJBTSBmb3IgZXhlY3V0 aW9uIGJ5IHRoZSBtaWNyb2NvbnRyb2xsZXIuCisgKgorICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3Ms IG5vbi16ZXJvIG9uIGZhaWx1cmUKKyAqLworCitzdGF0aWMgaW50IGh1Y191Y29kZV94ZmVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3QgaW50ZWxfdWNfZncg Kmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsK Kwl1bnNpZ25lZCBsb25nIG9mZnNldCA9IDA7CisJdTMyIHNpemU7CisJaW50IHJldDsKKworCXJl dCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFpbihodWNfZnctPnVjX2Z3X29iaiwg ZmFsc2UpOworCWlmIChyZXQpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigic2V0LWRvbWFpbiBmYWls ZWQgJWRcbiIsIHJldCk7CisJCXJldHVybiByZXQ7CisJfQorCisJdm1hID0gaTkxNV9nZW1fb2Jq ZWN0X2dndHRfcGluKGh1Y19mdy0+dWNfZndfb2JqLCBOVUxMLCAwLCAwLCAwKTsKKwlpZiAoSVNf RVJSKHZtYSkpIHsKKwkJRFJNX0RFQlVHX0RSSVZFUigicGluIGZhaWxlZCAlZFxuIiwgKGludClQ VFJfRVJSKHZtYSkpOworCQlyZXR1cm4gUFRSX0VSUih2bWEpOworCX0KKworCS8qIEludmFsaWRh dGUgR3VDIFRMQiB0byBsZXQgR3VDIHRha2UgdGhlIGxhdGVzdCB1cGRhdGVzIHRvIEdUVC4gKi8K KwlJOTE1X1dSSVRFKEdFTjhfR1RDUiwgR0VOOF9HVENSX0lOVkFMSURBVEUpOworCisJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9nZXQoZGV2X3ByaXYsIEZPUkNFV0FLRV9BTEwpOworCisJLyogaW5p dCBXT1BDTSAqLworCUk5MTVfV1JJVEUoR1VDX1dPUENNX1NJWkUsIGd1Y193b3BjbV9zaXplKGRl dl9wcml2KSk7CisJSTkxNV9XUklURShETUFfR1VDX1dPUENNX09GRlNFVCwgR1VDX1dPUENNX09G RlNFVF9WQUxVRSB8CisJCQlIVUNfTE9BRElOR19BR0VOVF9HVUMpOworCisJLyogU2V0IHRoZSBz b3VyY2UgYWRkcmVzcyBmb3IgdGhlIHVDb2RlICovCisJb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNl dCh2bWEpICsgaHVjX2Z3LT5oZWFkZXJfb2Zmc2V0OworCUk5MTVfV1JJVEUoRE1BX0FERFJfMF9M T1csIGxvd2VyXzMyX2JpdHMob2Zmc2V0KSk7CisJSTkxNV9XUklURShETUFfQUREUl8wX0hJR0gs IHVwcGVyXzMyX2JpdHMob2Zmc2V0KSAmIDB4RkZGRik7CisKKwkvKiBIYXJkd2FyZSBkb2Vzbid0 IGxvb2sgYXQgZGVzdGluYXRpb24gYWRkcmVzcyBmb3IgSHVDLiBTZXQgaXQgdG8gMCwKKwkgKiBi dXQgc3RpbGwgcHJvZ3JhbSB0aGUgY29ycmVjdCBhZGRyZXNzIHNwYWNlLgorCSAqLworCUk5MTVf V1JJVEUoRE1BX0FERFJfMV9MT1csIDApOworCUk5MTVfV1JJVEUoRE1BX0FERFJfMV9ISUdILCBE TUFfQUREUkVTU19TUEFDRV9XT1BDTSk7CisKKwlzaXplID0gaHVjX2Z3LT5oZWFkZXJfc2l6ZSAr IGh1Y19mdy0+dWNvZGVfc2l6ZTsKKwlJOTE1X1dSSVRFKERNQV9DT1BZX1NJWkUsIHNpemUpOwor CisJLyogU3RhcnQgdGhlIERNQSAqLworCUk5MTVfV1JJVEUoRE1BX0NUUkwsIF9NQVNLRURfQklU X0VOQUJMRShIVUNfVUtFUk5FTCB8IFNUQVJUX0RNQSkpOworCisJLyogV2FpdCBmb3IgRE1BIHRv IGZpbmlzaCAqLworCXJldCA9IHdhaXRfZm9yKChJOTE1X1JFQUQoRE1BX0NUUkwpICYgU1RBUlRf RE1BKSA9PSAwLCAxMDApOworCisJRFJNX0RFQlVHX0RSSVZFUigiSHVDIERNQSB0cmFuc2ZlciB3 YWl0IG92ZXIgd2l0aCByZXQgJWRcbiIsIHJldCk7CisKKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X3B1dChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7CisKKwkvKgorCSAqIFdlIGtlZXAgdGhlIG9i amVjdCBwYWdlcyBmb3IgcmV1c2UgZHVyaW5nIHJlc3VtZS4gQnV0IHdlIGNhbiB1bnBpbiBpdAor CSAqIG5vdyB0aGF0IERNQSBoYXMgY29tcGxldGVkLCBzbyBpdCBkb2Vzbid0IGNvbnRpbnVlIHRv IHRha2UgdXAgc3BhY2UuCisJICovCisJaTkxNV92bWFfdW5waW4odm1hKTsKKworCXJldHVybiBy ZXQ7Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2luaXQoKSAtIGluaXRpYXRlIEh1QyBmaXJtd2Fy ZSBsb2FkaW5nIHJlcXVlc3QKKyAqIEBkZXY6IHRoZSBkcm0gZGV2aWNlCisgKgorICogQ2FsbGVk IGVhcmx5IGR1cmluZyBkcml2ZXIgbG9hZCwgYnV0IGFmdGVyIEdFTSBpcyBpbml0aWFsaXNlZC4g VGhlIGxvYWRpbmcKKyAqIHdpbGwgY29udGludWUgb25seSB3aGVuIGRyaXZlciBleHBsaWNpdGx5 IHNwZWNpZnkgZmlybXdhcmUgbmFtZSBhbmQgdmVyc2lvbi4KKyAqIEFsbCBvdGhlciBjYXNlcyBh cmUgY29uc2lkZXJlZCBhcyBVQ19GSVJNV0FSRV9OT05FIGVpdGhlciBiZWNhdXNlIEhXIGlzIG5v dAorICogY2FwYWJsZSBvciBkcml2ZXIgeWV0IHN1cHBvcnQgaXQuIEFuZCB0aGVyZSB3aWxsIGJl IG5vIGVycm9yIG1lc3NhZ2UgZm9yCisgKiBVQ19GSVJNV0FSRV9OT05FIGNhc2VzLgorICoKKyAq IFRoZSBETUEtY29weWluZyB0byBIVyBpcyBkb25lIGxhdGVyIHdoZW4gaW50ZWxfaHVjX2xvYWQo KSBpcyBjYWxsZWQuCisgKi8KK3ZvaWQgaW50ZWxfaHVjX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRl dik7CisJc3RydWN0IGludGVsX2h1YyAqaHVjID0gJmRldl9wcml2LT5odWM7CisJc3RydWN0IGlu dGVsX3VjX2Z3ICpodWNfZncgPSAmaHVjLT5odWNfZnc7CisJY29uc3QgY2hhciAqZndfcGF0aCA9 IE5VTEw7CisKKwlodWNfZnctPnVjX2RldiA9IGRldjsKKwlodWNfZnctPnVjX2Z3X3BhdGggPSBO VUxMOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnct PmxvYWRfc3RhdHVzID0gVUNfRklSTVdBUkVfTk9ORTsKKwlodWNfZnctPmZ3X3R5cGUgPSBVQ19G V19UWVBFX0hVQzsKKworCWlmICghSEFTX0hVQ19VQ09ERShkZXZfcHJpdikpCisJCXJldHVybjsK KworCWlmIChJU19TS1lMQUtFKGRldl9wcml2KSkgeworCQlmd19wYXRoID0gSTkxNV9TS0xfSFVD X1VDT0RFOworCQlodWNfZnctPm1ham9yX3Zlcl93YW50ZWQgPSBTS0xfRldfTUFKT1I7CisJCWh1 Y19mdy0+bWlub3JfdmVyX3dhbnRlZCA9IFNLTF9GV19NSU5PUjsKKwl9CisKKwlodWNfZnctPnVj X2Z3X3BhdGggPSBmd19wYXRoOworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklSTVdBUkVf UEVORElORzsKKworCURSTV9ERUJVR19EUklWRVIoIkh1QyBmaXJtd2FyZSBwZW5kaW5nLCBwYXRo ICVzXG4iLCBmd19wYXRoKTsKKworCWludGVsX3VjX2Z3X2ZldGNoKGRldiwgaHVjX2Z3KTsKK30K KworLyoqCisgKiBpbnRlbF9odWNfbG9hZCgpIC0gbG9hZCBIdUMgdUNvZGUgdG8gZGV2aWNlCisg KiBAZGV2OiB0aGUgZHJtIGRldmljZQorICoKKyAqIENhbGxlZCBmcm9tIGdlbV9pbml0X2h3KCkg ZHVyaW5nIGRyaXZlciBsb2FkaW5nIGFuZCBhbHNvIGFmdGVyIGEgR1BVIHJlc2V0LgorICogQmUg bm90ZSB0aGF0IEh1QyBsb2FkaW5nIG11c3QgYmUgZG9uZSBiZWZvcmUgR3VDIGxvYWRpbmcuCisg KgorICogVGhlIGZpcm13YXJlIGltYWdlIHNob3VsZCBoYXZlIGFscmVhZHkgYmVlbiBmZXRjaGVk IGludG8gbWVtb3J5IGJ5IHRoZQorICogZWFybGllciBjYWxsIHRvIGludGVsX2h1Y19pbml0KCks IHNvIGhlcmUgd2UgbmVlZCBvbmx5IGNoZWNrIHRoYXQKKyAqIGlzIHN1Y2NlZWRlZCwgYW5kIHRo ZW4gdHJhbnNmZXIgdGhlIGltYWdlIHRvIHRoZSBoL3cuCisgKgorICogUmV0dXJuOglub24temVy byBjb2RlIG9uIGVycm9yCisgKi8KK2ludCBpbnRlbF9odWNfbG9hZChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUo ZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19mdyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19m dzsKKwlpbnQgZXJyOworCisJaWYgKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzID09IFVDX0ZJUk1XQVJF X05PTkUpCisJCXJldHVybiAwOworCisJRFJNX0RFQlVHX0RSSVZFUigiJXMgZncgc3RhdHVzOiBm ZXRjaCAlcywgbG9hZCAlc1xuIiwKKwkJaHVjX2Z3LT51Y19md19wYXRoLAorCQlpbnRlbF91Y19m d19zdGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCWludGVsX3VjX2Z3X3N0YXR1 c19yZXByKGh1Y19mdy0+bG9hZF9zdGF0dXMpKTsKKworCWlmIChodWNfZnctPmZldGNoX3N0YXR1 cyA9PSBVQ19GSVJNV0FSRV9TVUNDRVNTICYmCisJICAgIGh1Y19mdy0+bG9hZF9zdGF0dXMgPT0g VUNfRklSTVdBUkVfRkFJTCkKKwkJcmV0dXJuIC1FTk9FWEVDOworCisJaHVjX2Z3LT5sb2FkX3N0 YXR1cyA9IFVDX0ZJUk1XQVJFX1BFTkRJTkc7CisKKwlzd2l0Y2ggKGh1Y19mdy0+ZmV0Y2hfc3Rh dHVzKSB7CisJY2FzZSBVQ19GSVJNV0FSRV9GQUlMOgorCQkvKiBzb21ldGhpbmcgd2VudCB3cm9u ZyA6KCAqLworCQllcnIgPSAtRUlPOworCQlnb3RvIGZhaWw7CisKKwljYXNlIFVDX0ZJUk1XQVJF X05PTkU6CisJY2FzZSBVQ19GSVJNV0FSRV9QRU5ESU5HOgorCWRlZmF1bHQ6CisJCS8qICJjYW4n dCBoYXBwZW4iICovCisJCVdBUk5fT05DRSgxLCAiSHVDIGZ3ICVzIGludmFsaWQgZmV0Y2hfc3Rh dHVzICVzIFslZF1cbiIsCisJCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJCQlpbnRlbF91Y19md19z dGF0dXNfcmVwcihodWNfZnctPmZldGNoX3N0YXR1cyksCisJCQlodWNfZnctPmZldGNoX3N0YXR1 cyk7CisJCWVyciA9IC1FTlhJTzsKKwkJZ290byBmYWlsOworCisJY2FzZSBVQ19GSVJNV0FSRV9T VUNDRVNTOgorCQlicmVhazsKKwl9CisKKwllcnIgPSBodWNfdWNvZGVfeGZlcihkZXZfcHJpdik7 CisJaWYgKGVycikKKwkJZ290byBmYWlsOworCisJaHVjX2Z3LT5sb2FkX3N0YXR1cyA9IFVDX0ZJ Uk1XQVJFX1NVQ0NFU1M7CisKKwlEUk1fREVCVUdfRFJJVkVSKCIlcyBmdyBzdGF0dXM6IGZldGNo ICVzLCBsb2FkICVzXG4iLAorCQlodWNfZnctPnVjX2Z3X3BhdGgsCisJCWludGVsX3VjX2Z3X3N0 YXR1c19yZXByKGh1Y19mdy0+ZmV0Y2hfc3RhdHVzKSwKKwkJaW50ZWxfdWNfZndfc3RhdHVzX3Jl cHIoaHVjX2Z3LT5sb2FkX3N0YXR1cykpOworCisJcmV0dXJuIDA7CisKK2ZhaWw6CisJaWYgKGh1 Y19mdy0+bG9hZF9zdGF0dXMgPT0gVUNfRklSTVdBUkVfUEVORElORykKKwkJaHVjX2Z3LT5sb2Fk X3N0YXR1cyA9IFVDX0ZJUk1XQVJFX0ZBSUw7CisKKwlEUk1fRVJST1IoIkZhaWxlZCB0byBjb21w bGV0ZSBIdUMgdUNvZGUgbG9hZCB3aXRoIHJldCAlZFxuIiwgZXJyKTsKKworCXJldHVybiBlcnI7 Cit9CisKKy8qKgorICogaW50ZWxfaHVjX2ZpbmkoKSAtIGNsZWFuIHVwIHJlc291cmNlcyBhbGxv Y2F0ZWQgZm9yIEh1QworICogQGRldjogdGhlIGRybSBkZXZpY2UKKyAqCisgKiBDbGVhbnMgdXAg YnkgcmVsZWFzaW5nIHRoZSBodWMgZmlybXdhcmUgR0VNIG9iai4KKyAqLwordm9pZCBpbnRlbF9o dWNfZmluaShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgaW50ZWxfdWNfZncgKmh1Y19m dyA9ICZkZXZfcHJpdi0+aHVjLmh1Y19mdzsKKworCW11dGV4X2xvY2soJmRldi0+c3RydWN0X211 dGV4KTsKKwlpZiAoaHVjX2Z3LT51Y19md19vYmopCisJCWk5MTVfZ2VtX29iamVjdF9wdXQoaHVj X2Z3LT51Y19md19vYmopOworCWh1Y19mdy0+dWNfZndfb2JqID0gTlVMTDsKKwltdXRleF91bmxv Y2soJmRldi0+c3RydWN0X211dGV4KTsKKworCWh1Y19mdy0+ZmV0Y2hfc3RhdHVzID0gVUNfRklS TVdBUkVfTk9ORTsKK30KLS0gCjIuNy40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0 aW5mby9pbnRlbC1nZngK