From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 08/10 v5] drm/i915: Integrate GuC-based command submission Date: Wed, 29 Jul 2015 18:48:36 +0100 Message-ID: <1438192118-5807-9-git-send-email-david.s.gordon@intel.com> References: <1438192118-5807-1-git-send-email-david.s.gordon@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 C069F6EB18 for ; Wed, 29 Jul 2015 10:48:58 -0700 (PDT) In-Reply-To: <1438192118-5807-1-git-send-email-david.s.gordon@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 RnJvbTogQWxleCBEYWkgPHl1LmRhaUBpbnRlbC5jb20+CgpHdUMtYmFzZWQgc3VibWlzc2lvbiBp cyBtb3N0bHkgdGhlIHNhbWUgYXMgZXhlY2xpc3QgbW9kZSwgdXAgdG8KaW50ZWxfbG9naWNhbF9y aW5nX2FkdmFuY2VfYW5kX3N1Ym1pdCgpLCB3aGVyZSB0aGUgY29udGV4dCBiZWluZwpkaXNwYXRj aGVkIHdvdWxkIGJlIGFkZGVkIHRvIHRoZSBleGVjbGlzdCBxdWV1ZTsgYXQgdGhpcyBwb2ludAp3 ZSBzdWJtaXQgdGhlIGNvbnRleHQgdG8gdGhlIEd1QyBiYWNrZW5kIGluc3RlYWQuCgpUaGVyZSBh cmUsIGhvd2V2ZXIsIGEgZmV3IG90aGVyIGNoYW5nZXMgYWxzbyByZXF1aXJlZCwgbm90YWJseToK MS4gIENvbnRleHRzIG11c3QgYmUgcGlubmVkIGF0IEdHVFQgYWRkcmVzc2VzIGFjY2Vzc2libGUg YnkgdGhlIEd1QwogICAgaS5lLiBOT1QgaW4gdGhlIHJhbmdlIFswLi5XT1BDTV9TSVpFKSwgc28g d2UgaGF2ZSB0byBhZGQgdGhlCiAgICBQSU5fT0ZGU0VUX0JJQVMgZmxhZyB0byB0aGUgcmVsZXZh bnQgR0dUVC1waW5uaW5nIGNhbGxzLgoKMi4gIFRoZSBHdUMncyBUTEIgbXVzdCBiZSBpbnZhbGlk YXRlZCBhZnRlciBhIGNvbnRleHQgaXMgcGlubmVkIGF0CiAgICBhIG5ldyBHR1RUIGFkZHJlc3Mu CgozLiAgR3VDIGZpcm13YXJlIHVzZXMgdGhlIG9uZSBwYWdlIGJlZm9yZSBSaW5nIENvbnRleHQg YXMgc2hhcmVkIGRhdGEuCiAgICBUaGVyZWZvcmUsIHdoZW5ldmVyIGRyaXZlciB3YW50cyB0byBn ZXQgYmFzZSBhZGRyZXNzIG9mIExSQywgd2UKICAgIHdpbGwgb2Zmc2V0IG9uZSBwYWdlIGZvciBp dC4gTFJDX1BQSFdTUF9QTiBpcyBkZWZpbmVkIGFzIHRoZSBwYWdlCiAgICBudW1iZXIgb2YgTFJD QS4KCjQuICBJbiB0aGUgd29yayBxdWV1ZSB1c2VkIHRvIHBhc3MgcmVxdWVzdHMgdG8gdGhlIEd1 QywgdGhlIEd1QwogICAgZmlybXdhcmUgcmVxdWlyZXMgdGhlIHJpbmctdGFpbC1vZmZzZXQgdG8g YmUgcmVwcmVzZW50ZWQgYXMgYW4KICAgIDExLWJpdCB2YWx1ZSwgZXhwcmVzc2VkIGluIFFXb3Jk cy4gVGhlcmVmb3JlLCB0aGUgcmluZ2J1ZmZlcgogICAgc2l6ZSBtdXN0IGJlIHJlZHVjZWQgdG8g dGhlIHJlcHJlc2VudGFibGUgcmFuZ2UgKDQgcGFnZXMpLgoKdjI6CiAgICBEZWZlciBhZGRpbmcg I2RlZmluZXMgdW50aWwgbmVlZGVkIFtDaHJpcyBXaWxzb25dCiAgICBSYXRpb25hbGlzZSB0eXBl IGRlY2xhcmF0aW9ucyBbQ2hyaXMgV2lsc29uXQoKdjQ6CiAgICBTcXVhc2hlZCBrZXJuZWxkb2Mg cGF0Y2ggaW50byBoZXJlIFtEYW5pZWwgVmV0dGVyXQoKdjU6CiAgICBVcGRhdGUgcmVxdWVzdC0+ dGFpbCBpbiBjb2RlIGNvbW1vbiB0byBib3RoIEd1QyBhbmQgZXhlY2xpc3QgbW9kZXMuCiAgICBB ZGQgYSBwcml2YXRlIHZlcnNpb24gb2YgbHJfY29udGV4dF91cGRhdGUoKSwgYXMgc2hhcmluZyB0 aGUKICAgICAgICBleGVjbGlzdCB2ZXJzaW9uIGxlYWRzIHRvIHJhY2UgY29uZGl0aW9ucyB3aGVu IHRoZSBDUFUgYW5kCiAgICAgICAgdGhlIEd1QyBib3RoIHVwZGF0ZSBUQUlMIGluIHRoZSBjb250 ZXh0IGltYWdlLgogICAgQ29udmVyc2lvbiBvZiBlcnJvci1jYXB0dXJlZCBIV1MgcGFnZSB0byBz dHJpbmcgbXVzdCBhY2NvdW50CiAgICAgICAgZm9yIG9mZnNldCBmcm9tIHN0YXJ0IG9mIG9iamVj dCB0byBhY3R1YWwgSFdTIChMUkNfUFBIV1NQX1BOKS4KCklzc3VlOiBWSVotNDg4NApTaWduZWQt b2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4KU2lnbmVkLW9mZi1ieTogRGF2ZSBH b3Jkb24gPGRhdmlkLnMuZ29yZG9uQGludGVsLmNvbT4KLS0tCiBEb2N1bWVudGF0aW9uL0RvY0Jv b2svZHJtLnRtcGwgICAgICAgICAgICAgfCAxNCArKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dwdV9lcnJvci5jICAgICAgfCAxMyArKy0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n dWNfc3VibWlzc2lvbi5jIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgMSArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgfCA1NSArKysrKysrKysrKysrKy0tLS0t LS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oICAgICAgICAgICB8ICA2ICsrKwog NyBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2RybS50bXBsIGIvRG9jdW1lbnRhdGlvbi9E b2NCb29rL2RybS50bXBsCmluZGV4IDQxMTE5MDIuLmEwMWZjYTkgMTAwNjQ0Ci0tLSBhL0RvY3Vt ZW50YXRpb24vRG9jQm9vay9kcm0udG1wbAorKysgYi9Eb2N1bWVudGF0aW9uL0RvY0Jvb2svZHJt LnRtcGwKQEAgLTQxNTIsNiArNDE1MiwyMCBAQCBpbnQgbnVtX2lvY3Rsczs8L3N5bm9wc2lzPgog ICAgICAgPC9zZWN0Mj4KICAgICA8L3NlY3QxPgogICAgIDxzZWN0MT4KKyAgICAgIDx0aXRsZT5H dUMtYmFzZWQgQ29tbWFuZCBTdWJtaXNzaW9uPC90aXRsZT4KKyAgICAgIDxzZWN0Mj4KKyAgICAg ICAgPHRpdGxlPkd1QzwvdGl0bGU+CishUGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19s b2FkZXIuYyBHdUMtc3BlY2lmaWMgZmlybXdhcmUgbG9hZGVyCishSWRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2d1Y19sb2FkZXIuYworICAgICAgPC9zZWN0Mj4KKyAgICAgIDxzZWN0Mj4KKyAg ICAgICAgPHRpdGxlPkd1QyBDbGllbnQ8L3RpdGxlPgorIVBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9ndWNfc3VibWlzc2lvbi5jIEd1Qy1iYXNlZCBjb21tYW5kIHN1Ym1pc3Npc29uCishSWRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2d1Y19zdWJtaXNzaW9uLmMKKyAgICAgIDwvc2VjdDI+ CisgICAgPC9zZWN0MT4KKworICAgIDxzZWN0MT4KICAgICAgIDx0aXRsZT4gVHJhY2luZyA8L3Rp dGxlPgogICAgICAgPHBhcmE+CiAgICAgVGhpcyBzZWN0aW9ucyBjb3ZlcnMgYWxsIHRoaW5ncyBy ZWxhdGVkIHRvIHRoZSB0cmFjZXBvaW50cyBpbXBsZW1lbnRlZCBpbgpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwppbmRleCBiYzEyYzcwLi5jZDQwOTA5IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2RlYnVnZnMuYwpAQCAtMTk5NSw3ICsxOTk1LDcgQEAgc3RhdGljIHZvaWQgaTkxNV9kdW1w X2xyY19vYmooc3RydWN0IHNlcV9maWxlICptLAogCQlyZXR1cm47CiAJfQogCi0JcGFnZSA9IGk5 MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCAxKTsKKwlwYWdlID0gaTkxNV9nZW1fb2Jq ZWN0X2dldF9wYWdlKGN0eF9vYmosIExSQ19TVEFURV9QTik7CiAJaWYgKCFXQVJOX09OKHBhZ2Ug PT0gTlVMTCkpIHsKIAkJcmVnX3N0YXRlID0ga21hcF9hdG9taWMocGFnZSk7CiAKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dwdV9lcnJvci5jCmluZGV4IDZmNDI1NjkuLjAwY2E1YWUgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwpAQCAtNDU4LDIxICs0NTgsMjIgQEAgaW50IGk5 MTVfZXJyb3Jfc3RhdGVfdG9fc3RyKHN0cnVjdCBkcm1faTkxNV9lcnJvcl9zdGF0ZV9idWYgKm0s CiAJCX0KIAogCQlpZiAoKG9iaiA9IGVycm9yLT5yaW5nW2ldLmh3c19wYWdlKSkgewotCQkJZXJy X3ByaW50ZihtLCAiJXMgLS0tIEhXIFN0YXR1cyA9IDB4JTA4eFxuIiwKKwkJCWVycl9wcmludGYo bSwgIiVzIC0tLSBIVyBTdGF0dXMgPSAweCUwOGx4XG4iLAogCQkJCSAgIGRldl9wcml2LT5yaW5n W2ldLm5hbWUsCi0JCQkJICAgb2JqLT5ndHRfb2Zmc2V0KTsKKwkJCQkgICBvYmotPmd0dF9vZmZz ZXQgKyBMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFKTsKIAkJCW9mZnNldCA9IDA7CiAJCQlmb3Ig KGVsdCA9IDA7IGVsdCA8IFBBR0VfU0laRS8xNjsgZWx0ICs9IDQpIHsKIAkJCQllcnJfcHJpbnRm KG0sICJbJTA0eF0gJTA4eCAlMDh4ICUwOHggJTA4eFxuIiwKIAkJCQkJICAgb2Zmc2V0LAotCQkJ CQkgICBvYmotPnBhZ2VzWzBdW2VsdF0sCi0JCQkJCSAgIG9iai0+cGFnZXNbMF1bZWx0KzFdLAot CQkJCQkgICBvYmotPnBhZ2VzWzBdW2VsdCsyXSwKLQkJCQkJICAgb2JqLT5wYWdlc1swXVtlbHQr M10pOworCQkJCQkgICBvYmotPnBhZ2VzW0xSQ19QUEhXU1BfUE5dW2VsdF0sCisJCQkJCSAgIG9i ai0+cGFnZXNbTFJDX1BQSFdTUF9QTl1bZWx0KzFdLAorCQkJCQkgICBvYmotPnBhZ2VzW0xSQ19Q UEhXU1BfUE5dW2VsdCsyXSwKKwkJCQkJICAgb2JqLT5wYWdlc1tMUkNfUFBIV1NQX1BOXVtlbHQr M10pOwogCQkJCQlvZmZzZXQgKz0gMTY7CiAJCQl9CiAJCX0KIAorCiAJCWlmICgob2JqID0gZXJy b3ItPnJpbmdbaV0uY3R4KSkgewogCQkJZXJyX3ByaW50ZihtLCAiJXMgLS0tIEhXIENvbnRleHQg PSAweCUwOHhcbiIsCiAJCQkJICAgZGV2X3ByaXYtPnJpbmdbaV0ubmFtZSwKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ3VjX3N1Ym1pc3Npb24uYwppbmRleCA1NDM3OTYwLi41ZjBjMzhlIDEw MDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lvbi5jCkBAIC0zNTIsMTgg KzM1Miw1OCBAQCBzdGF0aWMgdm9pZCBndWNfaW5pdF9wcm9jX2Rlc2Moc3RydWN0IGludGVsX2d1 YyAqZ3VjLAogc3RhdGljIHZvaWQgZ3VjX2luaXRfY3R4X2Rlc2Moc3RydWN0IGludGVsX2d1YyAq Z3VjLAogCQkJICAgICAgc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50KQogeworCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjdHggPSBjbGllbnQtPm93bmVyOwogCXN0cnVjdCBndWNfY29udGV4 dF9kZXNjIGRlc2M7CiAJc3RydWN0IHNnX3RhYmxlICpzZzsKKwlpbnQgaTsKIAogCW1lbXNldCgm ZGVzYywgMCwgc2l6ZW9mKGRlc2MpKTsKIAogCWRlc2MuYXR0cmlidXRlID0gR1VDX0NUWF9ERVND X0FUVFJfQUNUSVZFIHwgR1VDX0NUWF9ERVNDX0FUVFJfS0VSTkVMOwogCWRlc2MuY29udGV4dF9p ZCA9IGNsaWVudC0+Y3R4X2luZGV4OwogCWRlc2MucHJpb3JpdHkgPSBjbGllbnQtPnByaW9yaXR5 OwotCWRlc2MuZW5naW5lc191c2VkID0gKDEgPDwgUkNTKSB8ICgxIDw8IFZDUykgfCAoMSA8PCBC Q1MpIHwKLQkJCSAgICAoMSA8PCBWRUNTKSB8ICgxIDw8IFZDUzIpOyAvKiBhbGwgZW5naW5lcyAq LwogCWRlc2MuZGJfaWQgPSBjbGllbnQtPmRvb3JiZWxsX2lkOwogCisJZm9yIChpID0gMDsgaSA8 IEk5MTVfTlVNX1JJTkdTOyBpKyspIHsKKwkJc3RydWN0IGd1Y19leGVjbGlzdF9jb250ZXh0ICps cmMgPSAmZGVzYy5scmNbaV07CisJCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0g Y3R4LT5lbmdpbmVbaV0ucmluZ2J1ZjsKKwkJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZzsK KwkJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKKwkJdWludDY0X3QgY3R4X2Rlc2M7 CisKKwkJLyogVE9ETzogV2UgaGF2ZSBhIGRlc2lnbiBpc3N1ZSB0byBiZSBzb2x2ZWQgaGVyZS4g T25seSB3aGVuIHdlCisJCSAqIHJlY2VpdmUgdGhlIGZpcnN0IGJhdGNoLCB3ZSBrbm93IHdoaWNo IGVuZ2luZSBpcyB1c2VkIGJ5IHRoZQorCQkgKiB1c2VyLiBCdXQgaGVyZSBHdUMgZXhwZWN0cyB0 aGUgbHJjIGFuZCByaW5nIHRvIGJlIHBpbm5lZC4gSXQKKwkJICogaXMgbm90IGFuIGlzc3VlIGZv ciBkZWZhdWx0IGNvbnRleHQsIHdoaWNoIGlzIHRoZSBvbmx5IG9uZQorCQkgKiBmb3Igbm93IHdo byBvd25zIGEgR3VDIGNsaWVudC4gQnV0IGZvciBmdXR1cmUgb3duZXIgb2YgR3VDCisJCSAqIGNs aWVudCwgbmVlZCB0byBtYWtlIHN1cmUgbHJjIGlzIHBpbm5lZCBwcmlvciB0byBlbnRlciBoZXJl LgorCQkgKi8KKwkJb2JqID0gY3R4LT5lbmdpbmVbaV0uc3RhdGU7CisJCWlmICghb2JqKQorCQkJ YnJlYWs7CS8qIFhYWDogY29udGludWU/ICovCisKKwkJcmluZyA9IHJpbmdidWYtPnJpbmc7CisJ CWN0eF9kZXNjID0gaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKGN0eCwgcmluZyk7CisJCWxy Yy0+Y29udGV4dF9kZXNjID0gKHUzMiljdHhfZGVzYzsKKworCQkvKiBUaGUgc3RhdGUgcGFnZSBp cyBhZnRlciBQUEhXU1AgKi8KKwkJbHJjLT5yaW5nX2xjcmEgPSBpOTE1X2dlbV9vYmpfZ2d0dF9v ZmZzZXQob2JqKSArCisJCQkJTFJDX1NUQVRFX1BOICogUEFHRV9TSVpFOworCQlscmMtPmNvbnRl eHRfaWQgPSAoY2xpZW50LT5jdHhfaW5kZXggPDwgR1VDX0VMQ19DVFhJRF9PRkZTRVQpIHwKKwkJ CQkocmluZy0+aWQgPDwgR1VDX0VMQ19FTkdJTkVfT0ZGU0VUKTsKKworCQlvYmogPSByaW5nYnVm LT5vYmo7CisKKwkJbHJjLT5yaW5nX2JlZ2luID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KG9i aik7CisJCWxyYy0+cmluZ19lbmQgPSBscmMtPnJpbmdfYmVnaW4gKyBvYmotPmJhc2Uuc2l6ZSAt IDE7CisJCWxyYy0+cmluZ19uZXh0X2ZyZWVfbG9jYXRpb24gPSBscmMtPnJpbmdfYmVnaW47CisJ CWxyYy0+cmluZ19jdXJyZW50X3RhaWxfcG9pbnRlcl92YWx1ZSA9IDA7CisKKwkJZGVzYy5lbmdp bmVzX3VzZWQgfD0gKDEgPDwgcmluZy0+aWQpOworCX0KKworCVdBUk5fT04oZGVzYy5lbmdpbmVz X3VzZWQgPT0gMCk7CisKIAkvKgogCSAqIFRoZSBDUFUgYWRkcmVzcyBpcyBvbmx5IG5lZWRlZCBh dCBjZXJ0YWluIHBvaW50cywgc28ga21hcF9hdG9taWMgb24KIAkgKiBkZW1hbmQgaW5zdGVhZCBv ZiBzdG9yaW5nIGl0IGluIHRoZSBjdHggZGVzY3JpcHRvci4KQEAgLTQ4OSw2ICs1MjksMjkgQEAg c3RhdGljIGludCBndWNfYWRkX3dvcmtxdWV1ZV9pdGVtKHN0cnVjdCBpOTE1X2d1Y19jbGllbnQg KmdjLAogCXJldHVybiAwOwogfQogCisjZGVmaW5lIENUWF9SSU5HX0JVRkZFUl9TVEFSVAkJMHgw OAorCisvKiBVcGRhdGUgdGhlIHJpbmdidWZmZXIgcG9pbnRlciBpbiBhIHNhdmVkIGNvbnRleHQg aW1hZ2UgKi8KK3N0YXRpYyB2b2lkIGxyX2NvbnRleHRfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9n ZW1fcmVxdWVzdCAqcnEpCit7CisJZW51bSBpbnRlbF9yaW5nX2lkIHJpbmdfaWQgPSBycS0+cmlu Zy0+aWQ7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBycS0+Y3R4LT5l bmdpbmVbcmluZ19pZF0uc3RhdGU7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKnJiX29i aiA9IHJxLT5yaW5nYnVmLT5vYmo7CisJc3RydWN0IHBhZ2UgKnBhZ2U7CisJdWludDMyX3QgKnJl Z19zdGF0ZTsKKworCUJVR19PTighY3R4X29iaik7CisJV0FSTl9PTighaTkxNV9nZW1fb2JqX2lz X3Bpbm5lZChjdHhfb2JqKSk7CisJV0FSTl9PTighaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChyYl9v YmopKTsKKworCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJDX1NU QVRFX1BOKTsKKwlyZWdfc3RhdGUgPSBrbWFwX2F0b21pYyhwYWdlKTsKKworCXJlZ19zdGF0ZVtD VFhfUklOR19CVUZGRVJfU1RBUlQrMV0gPSBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQocmJfb2Jq KTsKKworCWt1bm1hcF9hdG9taWMocmVnX3N0YXRlKTsKK30KKwogLyoqCiAgKiBpOTE1X2d1Y19z dWJtaXQoKSAtIFN1Ym1pdCBjb21tYW5kcyB0aHJvdWdoIEd1QwogICogQGNsaWVudDoJdGhlIGd1 YyBjbGllbnQgd2hlcmUgY29tbWFuZHMgd2lsbCBnbyB0aHJvdWdoCkBAIC01MDUsNiArNTY4LDEw IEBAIGludCBpOTE1X2d1Y19zdWJtaXQoc3RydWN0IGk5MTVfZ3VjX2NsaWVudCAqY2xpZW50LAog CXVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAJaW50IHFfcmV0LCBiX3JldDsKIAorCS8qIE5lZWQgdGhp cyBiZWNhdXNlIG9mIHRoZSBkZWZlcnJlZCBwaW4gY3R4IGFuZCByaW5nICovCisJLyogU2hhbGwg d2UgbW92ZSB0aGlzIHJpZ2h0IGFmdGVyIHJpbmcgaXMgcGlubmVkPyAqLworCWxyX2NvbnRleHRf dXBkYXRlKHJxKTsKKwogCXNwaW5fbG9ja19pcnFzYXZlKCZjbGllbnQtPndxX2xvY2ssIGZsYWdz KTsKIAogCXFfcmV0ID0gZ3VjX2FkZF93b3JrcXVldWVfaXRlbShjbGllbnQsIHJxKTsKQEAgLTYz MSwxMSArNjk4LDEzIEBAIHN0YXRpYyB2b2lkIGd1Y19jbGllbnRfZnJlZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LAogICogCQlUaGUga2VybmVsIGNsaWVudCB0byByZXBsYWNlIEV4ZWNMaXN0IHN1 Ym1pc3Npb24gaXMgY3JlYXRlZCB3aXRoCiAgKiAJCU5PUk1BTCBwcmlvcml0eS4gUHJpb3JpdHkg b2YgYSBjbGllbnQgZm9yIHNjaGVkdWxlciBjYW4gYmUgSElHSCwKICAqIAkJd2hpbGUgYSBwcmVl bXB0aW9uIGNvbnRleHQgY2FuIHVzZSBDUklUSUNBTC4KKyAqIEBjdHgJCXRoZSBjb250ZXh0IHRv IG93biB0aGUgY2xpZW50ICh3ZSB1c2UgdGhlIGRlZmF1bHQgcmVuZGVyIGNvbnRleHQpCiAgKgog ICogUmV0dXJuOglBbiBpOTE1X2d1Y19jbGllbnQgb2JqZWN0IGlmIHN1Y2Nlc3MuCiAgKi8KIHN0 YXRpYyBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpndWNfY2xpZW50X2FsbG9jKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCi0JCQkJCQl1aW50MzJfdCBwcmlvcml0eSkKKwkJCQkJCXVpbnQzMl90IHBy aW9yaXR5LAorCQkJCQkJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKIHsKIAlzdHJ1Y3QgaTkx NV9ndWNfY2xpZW50ICpjbGllbnQ7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTY0OCw2ICs3MTcsNyBAQCBzdGF0aWMgc3RydWN0IGk5 MTVfZ3VjX2NsaWVudCAqZ3VjX2NsaWVudF9hbGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAog CiAJY2xpZW50LT5kb29yYmVsbF9pZCA9IEdVQ19JTlZBTElEX0RPT1JCRUxMX0lEOwogCWNsaWVu dC0+cHJpb3JpdHkgPSBwcmlvcml0eTsKKwljbGllbnQtPm93bmVyID0gY3R4OwogCWNsaWVudC0+ Z3VjID0gZ3VjOwogCiAJY2xpZW50LT5jdHhfaW5kZXggPSAodWludDMyX3QpaWRhX3NpbXBsZV9n ZXQoJmd1Yy0+Y3R4X2lkcywgMCwKQEAgLTc3OSwxMCArODQ5LDExIEBAIGludCBpOTE1X2d1Y19z dWJtaXNzaW9uX2VuYWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVs X2d1YyAqZ3VjID0gJmRldl9wcml2LT5ndWM7CisJc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCA9 IGRldl9wcml2LT5yaW5nW1JDU10uZGVmYXVsdF9jb250ZXh0OwogCXN0cnVjdCBpOTE1X2d1Y19j bGllbnQgKmNsaWVudDsKIAogCS8qIGNsaWVudCBmb3IgZXhlY2J1ZiBzdWJtaXNzaW9uICovCi0J Y2xpZW50ID0gZ3VjX2NsaWVudF9hbGxvYyhkZXYsIEdVQ19DVFhfUFJJT1JJVFlfTk9STUFMKTsK KwljbGllbnQgPSBndWNfY2xpZW50X2FsbG9jKGRldiwgR1VDX0NUWF9QUklPUklUWV9OT1JNQUws IGN0eCk7CiAJaWYgKCFjbGllbnQpIHsKIAkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gY3JlYXRlIGV4 ZWNidWYgZ3VjX2NsaWVudFxuIik7CiAJCXJldHVybiAtRU5PTUVNOwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9ndWMuaAppbmRleCAwMzIxZWU2Li45Y2I0M2NkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ndWMu aApAQCAtMjksNiArMjksNyBAQAogCiBzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50IHsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqY2xpZW50X29iajsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAq b3duZXI7CiAJc3RydWN0IGludGVsX2d1YyAqZ3VjOwogCXVpbnQzMl90IHByaW9yaXR5OwogCXVp bnQzMl90IGN0eF9pbmRleDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggMzA5ZDA4OC4u YTA3MGE2ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKQEAgLTI1NSw3ICsyNTUsOCBAQCBp bnQgaW50ZWxfc2FuaXRpemVfZW5hYmxlX2V4ZWNsaXN0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBpbnQgZW5hYmxlX2V4ZWNsaXN0cwogICovCiB1MzIgaW50ZWxfZXhlY2xpc3RzX2N0eF9pZChz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaikKIHsKLQl1MzIgbHJjYSA9IGk5MTVf Z2VtX29ial9nZ3R0X29mZnNldChjdHhfb2JqKTsKKwl1MzIgbHJjYSA9IGk5MTVfZ2VtX29ial9n Z3R0X29mZnNldChjdHhfb2JqKSArCisJCQlMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwogCiAJ LyogTFJDQSBpcyByZXF1aXJlZCB0byBiZSA0SyBhbGlnbmVkIHNvIHRoZSBtb3JlIHNpZ25pZmlj YW50IDIwIGJpdHMKIAkgKiBhcmUgZ2xvYmFsbHkgdW5pcXVlICovCkBAIC0yNjgsNyArMjY5LDgg QEAgdWludDY0X3QgaW50ZWxfbHJfY29udGV4dF9kZXNjcmlwdG9yKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X29iaiA9IGN0eC0+ZW5naW5lW3JpbmctPmlkXS5zdGF0 ZTsKIAl1aW50NjRfdCBkZXNjOwotCXVpbnQ2NF90IGxyY2EgPSBpOTE1X2dlbV9vYmpfZ2d0dF9v ZmZzZXQoY3R4X29iaik7CisJdWludDY0X3QgbHJjYSA9IGk5MTVfZ2VtX29ial9nZ3R0X29mZnNl dChjdHhfb2JqKSArCisJCQlMUkNfUFBIV1NQX1BOICogUEFHRV9TSVpFOwogCiAJV0FSTl9PTihs cmNhICYgMHhGRkZGRkZGRjAwMDAwRkZGVUxMKTsKIApAQCAtMzQyLDcgKzM0NCw3IEBAIHN0YXRp YyBpbnQgZXhlY2xpc3RzX3VwZGF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEpCiAJV0FSTl9PTighaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChjdHhfb2JqKSk7CiAJV0FS Tl9PTighaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChyYl9vYmopKTsKIAotCXBhZ2UgPSBpOTE1X2dl bV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgMSk7CisJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9n ZXRfcGFnZShjdHhfb2JqLCBMUkNfU1RBVEVfUE4pOwogCXJlZ19zdGF0ZSA9IGttYXBfYXRvbWlj KHBhZ2UpOwogCiAJcmVnX3N0YXRlW0NUWF9SSU5HX1RBSUwrMV0gPSBycS0+dGFpbDsKQEAgLTUz NSw4ICs1MzcsNiBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCkKIAogCWk5MTVfZ2VtX3JlcXVlc3RfcmVmZXJl bmNlKHJlcXVlc3QpOwogCi0JcmVxdWVzdC0+dGFpbCA9IHJlcXVlc3QtPnJpbmdidWYtPnRhaWw7 Ci0KIAlzcGluX2xvY2tfaXJxKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKIAogCWxpc3RfZm9yX2Vh Y2hfZW50cnkoY3Vyc29yLCAmcmluZy0+ZXhlY2xpc3RfcXVldWUsIGV4ZWNsaXN0X2xpbmspCkBA IC02ODksMTMgKzY4OSwxOSBAQCBzdGF0aWMgdm9pZAogaW50ZWxfbG9naWNhbF9yaW5nX2FkdmFu Y2VfYW5kX3N1Ym1pdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCiB7CiAJ c3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmVxdWVzdC0+aTkxNTsKIAogCWludGVsX2xvZ2lj YWxfcmluZ19hZHZhbmNlKHJlcXVlc3QtPnJpbmdidWYpOwogCisJcmVxdWVzdC0+dGFpbCA9IHJl cXVlc3QtPnJpbmdidWYtPnRhaWw7CisKIAlpZiAoaW50ZWxfcmluZ19zdG9wcGVkKHJpbmcpKQog CQlyZXR1cm47CiAKLQlleGVjbGlzdHNfY29udGV4dF9xdWV1ZShyZXF1ZXN0KTsKKwlpZiAoZGV2 X3ByaXYtPmd1Yy5leGVjYnVmX2NsaWVudCkKKwkJaTkxNV9ndWNfc3VibWl0KGRldl9wcml2LT5n dWMuZXhlY2J1Zl9jbGllbnQsIHJlcXVlc3QpOworCWVsc2UKKwkJZXhlY2xpc3RzX2NvbnRleHRf cXVldWUocmVxdWVzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9fd3JhcF9yaW5nX2J1ZmZlcihzdHJ1 Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmluZ2J1ZikKQEAgLTk4NSw2ICs5OTEsNyBAQCBpbnQgbG9n aWNhbF9yaW5nX2ZsdXNoX2FsbF9jYWNoZXMoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXEpCiAKIHN0YXRpYyBpbnQgaW50ZWxfbHJfY29udGV4dF9waW4oc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpycSkKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBy cS0+aTkxNTsKIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0gcnEtPnJpbmc7CiAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKmN0eF9vYmogPSBycS0+Y3R4LT5lbmdpbmVbcmluZy0+ aWRdLnN0YXRlOwogCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmID0gcnEtPnJpbmdi dWY7CkBAIC05OTIsMTQgKzk5OSwxOCBAQCBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcGlu KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnEpCiAKIAlXQVJOX09OKCFtdXRleF9pc19s b2NrZWQoJnJpbmctPmRldi0+c3RydWN0X211dGV4KSk7CiAJaWYgKHJxLT5jdHgtPmVuZ2luZVty aW5nLT5pZF0ucGluX2NvdW50KysgPT0gMCkgewotCQlyZXQgPSBpOTE1X2dlbV9vYmpfZ2d0dF9w aW4oY3R4X29iaiwKLQkJCQlHRU44X0xSX0NPTlRFWFRfQUxJR04sIDApOworCQlyZXQgPSBpOTE1 X2dlbV9vYmpfZ2d0dF9waW4oY3R4X29iaiwgR0VOOF9MUl9DT05URVhUX0FMSUdOLAorCQkJCVBJ Tl9PRkZTRVRfQklBUyB8IEdVQ19XT1BDTV9UT1ApOwogCQlpZiAocmV0KQogCQkJZ290byByZXNl dF9waW5fY291bnQ7CiAKIAkJcmV0ID0gaW50ZWxfcGluX2FuZF9tYXBfcmluZ2J1ZmZlcl9vYmoo cmluZy0+ZGV2LCByaW5nYnVmKTsKIAkJaWYgKHJldCkKIAkJCWdvdG8gdW5waW5fY3R4X29iajsK KworCQkvKiBJbnZhbGlkYXRlIEd1QyBUTEIuICovCisJCWlmIChpOTE1LmVuYWJsZV9ndWNfc3Vi bWlzc2lvbikKKwkJCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7 CiAJfQogCiAJcmV0dXJuIHJldDsKQEAgLTIxMjEsNyArMjEzMiw3IEBAIHBvcHVsYXRlX2xyX2Nv bnRleHQoc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKmN0eF9vCiAKIAkvKiBUaGUgc2Vjb25kIHBhZ2Ugb2YgdGhlIGNvbnRleHQgb2JqZWN0IGNv bnRhaW5zIHNvbWUgZmllbGRzIHdoaWNoIG11c3QKIAkgKiBiZSBzZXQgdXAgcHJpb3IgdG8gdGhl IGZpcnN0IGV4ZWN1dGlvbi4gKi8KLQlwYWdlID0gaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdlKGN0 eF9vYmosIDEpOworCXBhZ2UgPSBpOTE1X2dlbV9vYmplY3RfZ2V0X3BhZ2UoY3R4X29iaiwgTFJD X1NUQVRFX1BOKTsKIAlyZWdfc3RhdGUgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAogCS8qIEEgY29u dGV4dCBpcyBhY3R1YWxseSBhIGJpZyBiYXRjaCBidWZmZXIgd2l0aCBzZXZlcmFsIE1JX0xPQURf UkVHSVNURVJfSU1NCkBAIC0yMjgwLDEyICsyMjkxLDEzIEBAIHN0YXRpYyB2b2lkIGxyY19zZXR1 cF9oYXJkd2FyZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAogCQlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9jdHhfb2JqKQogewogCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7CisJc3Ry dWN0IHBhZ2UgKnBhZ2U7CiAKLQkvKiBUaGUgc3RhdHVzIHBhZ2UgaXMgb2Zmc2V0IDAgZnJvbSB0 aGUgZGVmYXVsdCBjb250ZXh0IG9iamVjdAotCSAqIGluIExSQyBtb2RlLiAqLwotCXJpbmctPnN0 YXR1c19wYWdlLmdmeF9hZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGRlZmF1bHRfY3R4 X29iaik7Ci0JcmluZy0+c3RhdHVzX3BhZ2UucGFnZV9hZGRyID0KLQkJCWttYXAoc2dfcGFnZShk ZWZhdWx0X2N0eF9vYmotPnBhZ2VzLT5zZ2wpKTsKKwkvKiBUaGUgSFdTUCBpcyBwYXJ0IG9mIHRo ZSBkZWZhdWx0IGNvbnRleHQgb2JqZWN0IGluIExSQyBtb2RlLiAqLworCXJpbmctPnN0YXR1c19w YWdlLmdmeF9hZGRyID0gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KGRlZmF1bHRfY3R4X29iaikK KwkJCSsgTFJDX1BQSFdTUF9QTiAqIFBBR0VfU0laRTsKKwlwYWdlID0gaTkxNV9nZW1fb2JqZWN0 X2dldF9wYWdlKGRlZmF1bHRfY3R4X29iaiwgTFJDX1BQSFdTUF9QTik7CisJcmluZy0+c3RhdHVz X3BhZ2UucGFnZV9hZGRyID0ga21hcChwYWdlKTsKIAlyaW5nLT5zdGF0dXNfcGFnZS5vYmogPSBk ZWZhdWx0X2N0eF9vYmo7CiAKIAlJOTE1X1dSSVRFKFJJTkdfSFdTX1BHQShyaW5nLT5tbWlvX2Jh c2UpLApAQCAtMjMxMSw2ICsyMzIzLDcgQEAgaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRf Y3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgsCiB7CiAJY29uc3QgYm9vbCBpc19nbG9i YWxfZGVmYXVsdF9jdHggPSAoY3R4ID09IHJpbmctPmRlZmF1bHRfY29udGV4dCk7CiAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpjdHhfb2JqOwogCXVpbnQzMl90IGNvbnRleHRfc2l6ZTsKIAlzdHJ1Y3QgaW50ZWxfcmluZ2J1 ZmZlciAqcmluZ2J1ZjsKQEAgLTIzMjEsNiArMjMzNCw5IEBAIGludCBpbnRlbF9scl9jb250ZXh0 X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCiAJY29udGV4dF9z aXplID0gcm91bmRfdXAoZ2V0X2xyX2NvbnRleHRfc2l6ZShyaW5nKSwgNDA5Nik7CiAKKwkvKiBP bmUgZXh0cmEgcGFnZSBhcyB0aGUgc2hhcmluZyBkYXRhIGJldHdlZW4gZHJpdmVyIGFuZCBHdUMg Ki8KKwljb250ZXh0X3NpemUgKz0gUEFHRV9TSVpFICogTFJDX1BQSFdTUF9QTjsKKwogCWN0eF9v YmogPSBpOTE1X2dlbV9hbGxvY19vYmplY3QoZGV2LCBjb250ZXh0X3NpemUpOwogCWlmICghY3R4 X29iaikgewogCQlEUk1fREVCVUdfRFJJVkVSKCJBbGxvYyBMUkMgYmFja2luZyBvYmogZmFpbGVk LlxuIik7CkBAIC0yMzI4LDEzICsyMzQ0LDE4IEBAIGludCBpbnRlbF9scl9jb250ZXh0X2RlZmVy cmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAogCX0KIAogCWlmIChpc19nbG9i YWxfZGVmYXVsdF9jdHgpIHsKLQkJcmV0ID0gaTkxNV9nZW1fb2JqX2dndHRfcGluKGN0eF9vYmos IEdFTjhfTFJfQ09OVEVYVF9BTElHTiwgMCk7CisJCXJldCA9IGk5MTVfZ2VtX29ial9nZ3R0X3Bp bihjdHhfb2JqLCBHRU44X0xSX0NPTlRFWFRfQUxJR04sCisJCQkJUElOX09GRlNFVF9CSUFTIHwg R1VDX1dPUENNX1RPUCk7CiAJCWlmIChyZXQpIHsKIAkJCURSTV9ERUJVR19EUklWRVIoIlBpbiBM UkMgYmFja2luZyBvYmogZmFpbGVkOiAlZFxuIiwKIAkJCQkJcmV0KTsKIAkJCWRybV9nZW1fb2Jq ZWN0X3VucmVmZXJlbmNlKCZjdHhfb2JqLT5iYXNlKTsKIAkJCXJldHVybiByZXQ7CiAJCX0KKwor CQkvKiBJbnZhbGlkYXRlIEd1QyBUTEIuICovCisJCWlmIChpOTE1LmVuYWJsZV9ndWNfc3VibWlz c2lvbikKKwkJCUk5MTVfV1JJVEUoR0VOOF9HVENSLCBHRU44X0dUQ1JfSU5WQUxJREFURSk7CiAJ fQogCiAJcmluZ2J1ZiA9IGt6YWxsb2Moc2l6ZW9mKCpyaW5nYnVmKSwgR0ZQX0tFUk5FTCk7CkBA IC0yMzQ3LDcgKzIzNjgsNyBAQCBpbnQgaW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUo c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKIAogCXJpbmdidWYtPnJpbmcgPSByaW5nOwogCi0J cmluZ2J1Zi0+c2l6ZSA9IDMyICogUEFHRV9TSVpFOworCXJpbmdidWYtPnNpemUgPSA0ICogUEFH RV9TSVpFOwogCXJpbmdidWYtPmVmZmVjdGl2ZV9zaXplID0gcmluZ2J1Zi0+c2l6ZTsKIAlyaW5n YnVmLT5oZWFkID0gMDsKIAlyaW5nYnVmLT50YWlsID0gMDsKQEAgLTI0NDcsNyArMjQ2OCw3IEBA IHZvaWQgaW50ZWxfbHJfY29udGV4dF9yZXNldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJ V0FSTigxLCAiRmFpbGVkIGdldF9wYWdlcyBmb3IgY29udGV4dCBvYmpcbiIpOwogCQkJY29udGlu dWU7CiAJCX0KLQkJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCAxKTsK KwkJcGFnZSA9IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZShjdHhfb2JqLCBMUkNfU1RBVEVfUE4p OwogCQlyZWdfc3RhdGUgPSBrbWFwX2F0b21pYyhwYWdlKTsKIAogCQlyZWdfc3RhdGVbQ1RYX1JJ TkdfSEVBRCsxXSA9IDA7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCmluZGV4IDVlNTc4OGMuLjRj YzU0YjMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5oCkBAIC02OCw2ICs2OCwxMiBAQCBzdGF0 aWMgaW5saW5lIHZvaWQgaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQoc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKnJpbmdidWYsCiB9CiAKIC8qIExvZ2ljYWwgUmluZyBDb250ZXh0cyAqLworCisvKiBP bmUgZXh0cmEgcGFnZSBpcyBhZGRlZCBiZWZvcmUgTFJDIGZvciBHdUMgYXMgc2hhcmVkIGRhdGEg Ki8KKyNkZWZpbmUgTFJDX0dVQ1NIUl9QTgkoMCkKKyNkZWZpbmUgTFJDX1BQSFdTUF9QTgkoTFJD X0dVQ1NIUl9QTiArIDEpCisjZGVmaW5lIExSQ19TVEFURV9QTgkoTFJDX1BQSFdTUF9QTiArIDEp CisKIHZvaWQgaW50ZWxfbHJfY29udGV4dF9mcmVlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgp OwogaW50IGludGVsX2xyX2NvbnRleHRfZGVmZXJyZWRfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjdHgsCiAJCQkJICAgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKTsKLS0gCjEu OS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=