From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915: Reduce context HW ID lifetime Date: Tue, 4 Sep 2018 16:31:17 +0100 Message-ID: <20180904153117.3907-1-chris@chris-wilson.co.uk> References: <20180830102454.26956-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2391F6E032 for ; Tue, 4 Sep 2018 15:31:28 +0000 (UTC) In-Reply-To: <20180830102454.26956-1-chris@chris-wilson.co.uk> 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: Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org RnV0dXJlIGdlbiByZWR1Y2UgdGhlIG51bWJlciBvZiBiaXRzIHdlIHdpbGwgaGF2ZSBhdmFpbGFi bGUgdG8KZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGNvbnRleHRzLCBzbyByZWR1Y2UgdGhlIGxpZmV0 aW1lIG9mIHRoZSBJRAphc3NpZ25tZW50IGZyb20gdGhhdCBvZiB0aGUgY29udGV4dCB0byBpdHMg Y3VycmVudCBhY3RpdmUgY3ljbGUgKGkuZS4Kb25seSB3aGlsZSBpdCBpcyBwaW5uZWQgZm9yIHVz ZSBieSB0aGUgSFcsIHdpbGwgaXQgaGF2ZSBhIGNvbnN0YW50IElEKS4KVGhpcyBtZWFucyB0aGF0 IGluc3RlYWQgb2YgYSBtYXggb2YgMmsgYWxsb2NhdGVkIGNvbnRleHRzICh3b3JzdCBjYXNlCmJl Zm9yZSBmdW4gd2l0aCBiaXQgdHdpZGRsaW5nKSwgd2UgaW5zdGVhZCBoYXZlIGEgbGltaXQgb2Yg MmsgaW4gZmxpZ2h0CmNvbnRleHRzIChtaW51cyBhIGZldyB0aGF0IGhhdmUgYmVlbiBwaW5uZWQg YnkgdGhlIGtlcm5lbCBvciBieSBwZXJmKS4KClRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIGNvbnRl eHRzIGlkIHdlIHJlcXVpcmUsIHdlIGFsbG9jYXRlIGEgY29udGV4dCBpZApvbiBmaXJzdCBhbmQg bWFyayBpdCBhcyBwaW5uZWQgZm9yIGFzIGxvbmcgYXMgdGhlIEdFTSBjb250ZXh0IGl0c2VsZiBp cywKdGhhdCBpcyB3ZSBrZWVwIGl0IHBpbm5lZCBpdCB3aGlsZSBhY3RpdmUgb24gZWFjaCBlbmdp bmUuIElmIHdlIGV4aGF1c3QKb3VyIGNvbnRleHQgaWQgc3BhY2UsIHRoZW4gd2UgdHJ5IHRvIHJl Y2xhaW0gYW4gaWQgZnJvbSBhbiBpZGxlIGNvbnRleHQuCkluIHRoZSBleHRyZW1lIGNhc2Ugd2hl cmUgYWxsIGNvbnRleHQgaWRzIGFyZSBwaW5uZWQgYnkgYWN0aXZlIGNvbnRleHRzLAp3ZSBmb3Jj ZSB0aGUgc3lzdGVtIHRvIGlkbGUgaW4gb3JkZXIgdG8gcmVjb3ZlciBpZHMuCgpXZSBjYW5ub3Qg cmVkdWNlIHRoZSBzY29wZSBvZiBhbiBIVy1JRCB0byBhbiBlbmdpbmUgKGFsbG93aW5nIHRoZSBz YW1lCmdlbV9jb250ZXh0IHRvIGhhdmUgZGlmZmVyZW50IGlkcyBvbiBlYWNoIGVuZ2luZSkgYXMg aW4gdGhlIGZ1dHVyZSB3ZQp3aWxsIG5lZWQgdG8gcHJlYXNzaWduIGFuIGlkIGJlZm9yZSB3ZSBr bm93IHdoaWNoIGVuZ2luZSB0aGUKY29udGV4dCBpcyBiZWluZyBleGVjdXRlZCBvbi4KCnYyOiBJ bXByb3ZlZCBjb21tZW50YXJ5IChUdnJ0a28pIFtJIHRyaWVkIGF0IGxlYXN0XQoKUmVmZXJlbmNl czogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3Nzg4ClNp Z25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzog TGlvbmVsIExhbmR3ZXJsaW4gPGxpb25lbC5nLmxhbmR3ZXJsaW5AaW50ZWwuY29tPgpDYzogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KQ2M6IE1pa2EgS3VvcHBhbGEg PG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgpDYzogTWljaGVsIFRoaWVycnkgPG1pY2hlbC50aGll cnJ5QGludGVsLmNvbT4KQ2M6IE1pY2hhbCBXYWpkZWN6a28gPG1pY2hhbC53YWpkZWN6a29AaW50 ZWwuY29tPgpDYzogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlv QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg ICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAg ICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgICAg ICAgfCAyMjIgKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmggICAgICAgfCAgMjMgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xy Yy5jICAgICAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMgfCAgMTEgKy0KIDYgZmlsZXMgY2hhbmdlZCwgMjAxIGluc2VydGlvbnMo KyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKaW5kZXgg NGFkMGUyZWQ4NjEwLi4xZjcwNTFlOTdhZmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jCkBAIC0xOTUzLDcgKzE5NTMsMTAgQEAgc3RhdGljIGludCBpOTE1X2NvbnRleHRfc3RhdHVz KHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQogCQlyZXR1cm4gcmV0OwogCiAJbGlz dF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCwgbGluaykgewot CQlzZXFfcHJpbnRmKG0sICJIVyBjb250ZXh0ICV1ICIsIGN0eC0+aHdfaWQpOworCQlzZXFfcHV0 cyhtLCAiSFcgY29udGV4dCAiKTsKKwkJaWYgKCFsaXN0X2VtcHR5KCZjdHgtPmh3X2lkX2xpbmsp KQorCQkJc2VxX3ByaW50ZihtLCAiJXggW3BpbiAldV0iLCBjdHgtPmh3X2lkLAorCQkJCSAgIGF0 b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkpOwogCQlpZiAoY3R4LT5waWQpIHsKIAkJ CXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKaW5kZXgg NWE0ZGE1YjcyM2ZkLi43Njc2MTVlY2RlYTUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt MTg2MSw2ICsxODYxLDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgewogCXN0cnVjdCBtdXRl eCBhdl9tdXRleDsKIAogCXN0cnVjdCB7CisJCXN0cnVjdCBtdXRleCBtdXRleDsKIAkJc3RydWN0 IGxpc3RfaGVhZCBsaXN0OwogCQlzdHJ1Y3QgbGxpc3RfaGVhZCBmcmVlX2xpc3Q7CiAJCXN0cnVj dCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7CkBAIC0xODczLDYgKzE4NzQsNyBAQCBzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSB7CiAjZGVmaW5lIE1BWF9DT05URVhUX0hXX0lEICgxPDwyMSkgLyogZXhj bHVzaXZlICovCiAjZGVmaW5lIE1BWF9HVUNfQ09OVEVYVF9IV19JRCAoMSA8PCAyMCkgLyogZXhj bHVzaXZlICovCiAjZGVmaW5lIEdFTjExX01BWF9DT05URVhUX0hXX0lEICgxPDwxMSkgLyogZXhj bHVzaXZlICovCisJCXN0cnVjdCBsaXN0X2hlYWQgaHdfaWRfbGlzdDsKIAl9IGNvbnRleHRzOwog CiAJdTMyIGZkaV9yeF9jb25maWc7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKaW5kZXggZjE1YTAzOTc3MmRiLi43NDdiODE3MGExNWEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTExNSw2ICsxMTUsOTUgQEAgc3RhdGljIHZvaWQgbHV0 X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJcmN1X3JlYWRfdW5sb2NrKCk7 CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IG5ld19od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwgZ2ZwX3QgZ2ZwKQoreworCXVuc2lnbmVkIGludCBtYXg7CisKKwlsb2NrZGVwX2Fz c2VydF9oZWxkKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7CisKKwlpZiAoSU5URUxfR0VOKGk5MTUp ID49IDExKQorCQltYXggPSBHRU4xMV9NQVhfQ09OVEVYVF9IV19JRDsKKwllbHNlIGlmIChVU0VT X0dVQ19TVUJNSVNTSU9OKGk5MTUpKQorCQkvKgorCQkgKiBXaGVuIHVzaW5nIEd1QyBpbiBwcm94 eSBzdWJtaXNzaW9uLCBHdUMgY29uc3VtZXMgdGhlCisJCSAqIGhpZ2hlc3QgYml0IGluIHRoZSBj b250ZXh0IGlkIHRvIGluZGljYXRlIHByb3h5IHN1Ym1pc3Npb24uCisJCSAqLworCQltYXggPSBN QVhfR1VDX0NPTlRFWFRfSFdfSUQ7CisJZWxzZQorCQltYXggPSBNQVhfQ09OVEVYVF9IV19JRDsK KworCXJldHVybiBpZGFfc2ltcGxlX2dldCgmaTkxNS0+Y29udGV4dHMuaHdfaWRhLCAwLCBtYXgs IGdmcCk7Cit9CisKK3N0YXRpYyBpbnQgc3RlYWxfaHdfaWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgKmNuOworCUxJU1Rf SEVBRChwaW5uZWQpOworCWludCBpZCA9IC1FTk9TUEM7CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxk KCZpOTE1LT5jb250ZXh0cy5tdXRleCk7CisKKwlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoY3R4 LCBjbiwKKwkJCQkgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QsIGh3X2lkX2xpbmspIHsKKwkJ aWYgKGF0b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkpIHsKKwkJCWxpc3RfbW92ZV90 YWlsKCZjdHgtPmh3X2lkX2xpbmssICZwaW5uZWQpOworCQkJY29udGludWU7CisJCX0KKworCQlH RU1fQlVHX09OKCFjdHgtPmh3X2lkKTsgLyogcGVybWEtcGlubmVkIGtlcm5lbCBjb250ZXh0ICov CisJCWxpc3RfZGVsX2luaXQoJmN0eC0+aHdfaWRfbGluayk7CisJCWlkID0gY3R4LT5od19pZDsK KwkJYnJlYWs7CisJfQorCisJLyoKKwkgKiBSZW1lbWJlciBob3cgZmFyIHdlIGdvdCB1cCBvbiB0 aGUgbGFzdCByZXBvc3Nlc2lvbiBzY2FuLCBzbyB0aGUKKwkgKiBsaXN0IGlzIGtlcHQgaW4gYSAi bGVhc3QgcmVjZW50bHkgc2Nhbm5lZCIgb3JkZXIuCisJICovCisJbGlzdF9zcGxpY2VfdGFpbCgm cGlubmVkLCAmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCk7CisJcmV0dXJuIGlkOworfQorCitz dGF0aWMgaW50IGFzc2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5z aWduZWQgaW50ICpvdXQpCit7CisJaW50IHJldDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5 MTUtPmNvbnRleHRzLm11dGV4KTsKKworCS8qCisJICogV2UgcHJlZmVyIHRvIHN0ZWFsL3N0YWxs IG91cnNlbHZlcyBhbmQgb3VyIHVzZXJzIG92ZXIgdGhhdCBvZiB0aGUKKwkgKiBlbnRpcmUgc3lz dGVtLiBUaGF0IG1heSBiZSBhIGxpdHRsZSB1bmZhaXIgdG8gb3VyIHVzZXJzLCBhbmQKKwkgKiBl dmVuIGh1cnQgaGlnaCBwcmlvcml0eSBjbGllbnRzLiBUaGUgY2hvaWNlIGlzIHdoZXRoZXIgdG8g b29ta2lsbAorCSAqIHNvbWV0aGluZyBlbHNlLCBvciBzdGVhbCBhIGNvbnRleHQgaWQuCisJICov CisJcmV0ID0gbmV3X2h3X2lkKGk5MTUsIEdGUF9LRVJORUwgfCBfX0dGUF9SRVRSWV9NQVlGQUlM IHwgX19HRlBfTk9XQVJOKTsKKwlpZiAodW5saWtlbHkocmV0IDwgMCkpIHsKKwkJcmV0ID0gc3Rl YWxfaHdfaWQoaTkxNSk7CisJCWlmIChyZXQgPCAwKSAvKiBvbmNlIGFnYWluIGZvciB0aGUgY29y cmVjdCBlcnJubyBjb2RlICovCisJCQlyZXQgPSBuZXdfaHdfaWQoaTkxNSwgR0ZQX0tFUk5FTCk7 CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwkqb3V0ID0gcmV0OworCXJl dHVybiAwOworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBjdHgtPmk5 MTU7CisKKwlpZiAobGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5rKSkKKwkJcmV0dXJuOworCisJ bXV0ZXhfbG9jaygmaTkxNS0+Y29udGV4dHMubXV0ZXgpOworCWlmICghbGlzdF9lbXB0eSgmY3R4 LT5od19pZF9saW5rKSkgeworCQlpZGFfc2ltcGxlX3JlbW92ZSgmaTkxNS0+Y29udGV4dHMuaHdf aWRhLCBjdHgtPmh3X2lkKTsKKwkJbGlzdF9kZWxfaW5pdCgmY3R4LT5od19pZF9saW5rKTsKKwl9 CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cit9CisKIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogewog CXVuc2lnbmVkIGludCBuOwpAQCAtMTIyLDYgKzIxMSw3IEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2Vt X2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCWxvY2tkZXBfYXNz ZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJR0VNX0JVR19PTighaTkx NV9nZW1fY29udGV4dF9pc19jbG9zZWQoY3R4KSk7CiAKKwlyZWxlYXNlX2h3X2lkKGN0eCk7CiAJ aTkxNV9wcGd0dF9wdXQoY3R4LT5wcGd0dCk7CiAKIAlmb3IgKG4gPSAwOyBuIDwgQVJSQVlfU0la RShjdHgtPl9fZW5naW5lKTsgbisrKSB7CkBAIC0xMzYsNyArMjI2LDYgQEAgc3RhdGljIHZvaWQg aTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAKIAls aXN0X2RlbCgmY3R4LT5saW5rKTsKIAotCWlkYV9zaW1wbGVfcmVtb3ZlKCZjdHgtPmk5MTUtPmNv bnRleHRzLmh3X2lkYSwgY3R4LT5od19pZCk7CiAJa2ZyZWVfcmN1KGN0eCwgcmN1KTsKIH0KIApA QCAtMTkwLDYgKzI3OSwxMiBAQCBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCiB7CiAJaTkxNV9nZW1fY29udGV4dF9zZXRfY2xvc2VkKGN0eCk7 CiAKKwkvKgorCSAqIFRoaXMgY29udGV4dCB3aWxsIG5ldmVyIGFnYWluIGJlIGFzc2luZ2VkIHRv IEhXLCBzbyB3ZSBjYW4KKwkgKiByZXVzZSBpdHMgSUQgZm9yIHRoZSBuZXh0IGNvbnRleHQuCisJ ICovCisJcmVsZWFzZV9od19pZChjdHgpOworCiAJLyoKIAkgKiBUaGUgTFVUIHVzZXMgdGhlIFZN QSBhcyBhIGJhY2twb2ludGVyIHRvIHVucmVmIHRoZSBvYmplY3QsCiAJICogc28gd2UgbmVlZCB0 byBjbGVhciB0aGUgTFVUIGJlZm9yZSB3ZSBjbG9zZSBhbGwgdGhlIFZNQSAoaW5zaWRlCkBAIC0y MDMsNDMgKzI5OCw2IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfY2xvc2Uoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCkKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwogfQogCi1zdGF0aWMg aW50IGFzc2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2ln bmVkICpvdXQpCi17Ci0JaW50IHJldDsKLQl1bnNpZ25lZCBpbnQgbWF4OwotCi0JaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gMTEpIHsKLQkJbWF4ID0gR0VOMTFfTUFYX0NPTlRFWFRfSFdfSUQ7 Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogV2hlbiB1c2luZyBHdUMgaW4gcHJveHkgc3VibWlzc2lv biwgR3VDIGNvbnN1bWVzIHRoZQotCQkgKiBoaWdoZXN0IGJpdCBpbiB0aGUgY29udGV4dCBpZCB0 byBpbmRpY2F0ZSBwcm94eSBzdWJtaXNzaW9uLgotCQkgKi8KLQkJaWYgKFVTRVNfR1VDX1NVQk1J U1NJT04oZGV2X3ByaXYpKQotCQkJbWF4ID0gTUFYX0dVQ19DT05URVhUX0hXX0lEOwotCQllbHNl Ci0JCQltYXggPSBNQVhfQ09OVEVYVF9IV19JRDsKLQl9Ci0KLQotCXJldCA9IGlkYV9zaW1wbGVf Z2V0KCZkZXZfcHJpdi0+Y29udGV4dHMuaHdfaWRhLAotCQkJICAgICAwLCBtYXgsIEdGUF9LRVJO RUwpOwotCWlmIChyZXQgPCAwKSB7Ci0JCS8qIENvbnRleHRzIGFyZSBvbmx5IHJlbGVhc2VkIHdo ZW4gbm8gbG9uZ2VyIGFjdGl2ZS4KLQkJICogRmx1c2ggYW55IHBlbmRpbmcgcmV0aXJlcyB0byBo b3BlZnVsbHkgcmVsZWFzZSBzb21lCi0JCSAqIHN0YWxlIGNvbnRleHRzIGFuZCB0cnkgYWdhaW4u Ci0JCSAqLwotCQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Ci0JCXJldCA9IGlkYV9z aW1wbGVfZ2V0KCZkZXZfcHJpdi0+Y29udGV4dHMuaHdfaWRhLAotCQkJCSAgICAgMCwgbWF4LCBH RlBfS0VSTkVMKTsKLQkJaWYgKHJldCA8IDApCi0JCQlyZXR1cm4gcmV0OwotCX0KLQotCSpvdXQg PSByZXQ7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNjX3RlbXBsYXRl KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCSBjb25zdCBzdHJ1Y3Qg aTkxNV9od19wcGd0dCAqcHBndHQpCiB7CkBAIC0yNzYsMTIgKzMzNCw2IEBAIF9fY3JlYXRlX2h3 X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlmIChjdHggPT0g TlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBhc3NpZ25faHdfaWQo ZGV2X3ByaXYsICZjdHgtPmh3X2lkKTsKLQlpZiAocmV0KSB7Ci0JCWtmcmVlKGN0eCk7Ci0JCXJl dHVybiBFUlJfUFRSKHJldCk7Ci0JfQotCiAJa3JlZl9pbml0KCZjdHgtPnJlZik7CiAJbGlzdF9h ZGRfdGFpbCgmY3R4LT5saW5rLCAmZGV2X3ByaXYtPmNvbnRleHRzLmxpc3QpOwogCWN0eC0+aTkx NSA9IGRldl9wcml2OwpAQCAtMjk1LDYgKzM0Nyw3IEBAIF9fY3JlYXRlX2h3X2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJSU5JVF9SQURJWF9UUkVFKCZjdHgt PmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5oYW5kbGVz X2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwogCiAJLyogRGVmYXVs dCBjb250ZXh0IHdpbGwgbmV2ZXIgaGF2ZSBhIGZpbGVfcHJpdiAqLwogCXJldCA9IERFRkFVTFRf Q09OVEVYVF9IQU5ETEU7CkBAIC00MjEsMTUgKzQ3NCwzNSBAQCBpOTE1X2dlbV9jb250ZXh0X2Ny ZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gY3R4OwogfQogCitzdGF0 aWMgdm9pZAorZGVzdHJveV9rZXJuZWxfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq KmN0eHApCit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKworCS8qIEtlZXAgdGhl IGNvbnRleHQgcmVmIHNvIHRoYXQgd2UgY2FuIGZyZWUgaXQgaW1tZWRpYXRlbHkgb3Vyc2VsdmVz ICovCisJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9nZXQoZmV0Y2hfYW5kX3plcm8oY3R4cCkpOwor CUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOworCisJY29udGV4 dF9jbG9zZShjdHgpOworCWk5MTVfZ2VtX2NvbnRleHRfZnJlZShjdHgpOworfQorCiBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqCiBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQogewogCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7CisJaW50IGVycjsKIAogCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0 KGk5MTUsIE5VTEwpOwogCWlmIChJU19FUlIoY3R4KSkKIAkJcmV0dXJuIGN0eDsKIAorCWVyciA9 IGk5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKGN0eCk7CisJaWYgKGVycikgeworCQlkZXN0cm95 X2tlcm5lbF9jb250ZXh0KCZjdHgpOworCQlyZXR1cm4gRVJSX1BUUihlcnIpOworCX0KKwogCWk5 MTVfZ2VtX2NvbnRleHRfY2xlYXJfYmFubmFibGUoY3R4KTsKIAljdHgtPnNjaGVkLnByaW9yaXR5 ID0gcHJpbzsKIAljdHgtPnJpbmdfc2l6ZSA9IFBBR0VfU0laRTsKQEAgLTQzOSwxNyArNTEyLDE5 IEBAIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwgaW50IHByaW8pCiAJcmV0dXJuIGN0eDsKIH0KIAotc3RhdGljIHZvaWQKLWRlc3Ry b3lfa2VybmVsX2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKipjdHhwKQorc3RhdGlj IHZvaWQgaW5pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKIHsKLQlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCW11dGV4X2luaXQoJmk5MTUtPmNvbnRleHRz Lm11dGV4KTsKKwlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Y29udGV4dHMubGlzdCk7CiAKLQkvKiBL ZWVwIHRoZSBjb250ZXh0IHJlZiBzbyB0aGF0IHdlIGNhbiBmcmVlIGl0IGltbWVkaWF0ZWx5IG91 cnNlbHZlcyAqLwotCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0KGZldGNoX2FuZF96ZXJvKGN0 eHApKTsKLQlHRU1fQlVHX09OKCFpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChjdHgpKTsKKwkv KiBVc2luZyB0aGUgc2ltcGxlIGlkYSBpbnRlcmZhY2UsIHRoZSBtYXggaXMgbGltaXRlZCBieSBz aXplb2YoaW50KSAqLworCUJVSUxEX0JVR19PTihNQVhfQ09OVEVYVF9IV19JRCA+IElOVF9NQVgp OworCUJVSUxEX0JVR19PTihHRU4xMV9NQVhfQ09OVEVYVF9IV19JRCA+IElOVF9NQVgpOworCWlk YV9pbml0KCZpOTE1LT5jb250ZXh0cy5od19pZGEpOworCUlOSVRfTElTVF9IRUFEKCZpOTE1LT5j b250ZXh0cy5od19pZF9saXN0KTsKIAotCWNvbnRleHRfY2xvc2UoY3R4KTsKLQlpOTE1X2dlbV9j b250ZXh0X2ZyZWUoY3R4KTsKKwlJTklUX1dPUksoJmk5MTUtPmNvbnRleHRzLmZyZWVfd29yaywg Y29udGV4dHNfZnJlZV93b3JrZXIpOworCWluaXRfbGxpc3RfaGVhZCgmaTkxNS0+Y29udGV4dHMu ZnJlZV9saXN0KTsKIH0KIAogc3RhdGljIGJvb2wgbmVlZHNfcHJlZW1wdF9jb250ZXh0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAtNDcwLDE0ICs1NDUsNyBAQCBpbnQgaTkxNV9n ZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJaWYg KHJldCkKIAkJcmV0dXJuIHJldDsKIAotCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJpdi0+Y29udGV4 dHMubGlzdCk7Ci0JSU5JVF9XT1JLKCZkZXZfcHJpdi0+Y29udGV4dHMuZnJlZV93b3JrLCBjb250 ZXh0c19mcmVlX3dvcmtlcik7Ci0JaW5pdF9sbGlzdF9oZWFkKCZkZXZfcHJpdi0+Y29udGV4dHMu ZnJlZV9saXN0KTsKLQotCS8qIFVzaW5nIHRoZSBzaW1wbGUgaWRhIGludGVyZmFjZSwgdGhlIG1h eCBpcyBsaW1pdGVkIGJ5IHNpemVvZihpbnQpICovCi0JQlVJTERfQlVHX09OKE1BWF9DT05URVhU X0hXX0lEID4gSU5UX01BWCk7Ci0JQlVJTERfQlVHX09OKEdFTjExX01BWF9DT05URVhUX0hXX0lE ID4gSU5UX01BWCk7Ci0JaWRhX2luaXQoJmRldl9wcml2LT5jb250ZXh0cy5od19pZGEpOworCWlu aXRfY29udGV4dHMoZGV2X3ByaXYpOwogCiAJLyogbG93ZXN0IHByaW9yaXR5OyBpZGxlIHRhc2sg Ki8KIAljdHggPSBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoZGV2X3ByaXYsIEk5MTVf UFJJT1JJVFlfTUlOKTsKQEAgLTQ4Nyw5ICs1NTUsMTMgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRz X2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCX0KIAkvKgogCSAqIEZv ciBlYXN5IHJlY29nbmlzYWJsaXR5LCB3ZSB3YW50IHRoZSBrZXJuZWwgY29udGV4dCB0byBiZSAw IGFuZCB0aGVuCi0JICogYWxsIHVzZXIgY29udGV4dHMgd2lsbCBoYXZlIG5vbi16ZXJvIGh3X2lk LgorCSAqIGFsbCB1c2VyIGNvbnRleHRzIHdpbGwgaGF2ZSBub24temVybyBod19pZC4gS2VybmVs IGNvbnRleHRzIGFyZQorCSAqIHBlcm1hbmVudGx5IHBpbm5lZCwgc28gdGhhdCB3ZSBuZXZlciBz dWZmZXIgYSBzdGFsbCBhbmQgY2FuCisJICogdXNlIHRoZW0gZnJvbSBhbnkgYWxsb2NhdGlvbiBj b250ZXh0IChlLmcuIGZvciBldmljdGluZyBvdGhlcgorCSAqIGNvbnRleHRzIGFuZCBmcm9tIGlu c2lkZSB0aGUgc2hyaW5rZXIpLgogCSAqLwogCUdFTV9CVUdfT04oY3R4LT5od19pZCk7CisJR0VN X0JVR19PTighYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50KSk7CiAJZGV2X3ByaXYt Pmtlcm5lbF9jb250ZXh0ID0gY3R4OwogCiAJLyogaGlnaGVzdCBwcmlvcml0eTsgcHJlZW1wdGlu ZyB0YXNrICovCkBAIC01MjcsNiArNTk5LDcgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0c19maW5p KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWRlc3Ryb3lfa2VybmVsX2NvbnRleHQo Jmk5MTUtPmtlcm5lbF9jb250ZXh0KTsKIAogCS8qIE11c3QgZnJlZSBhbGwgZGVmZXJyZWQgY29u dGV4dHMgKHZpYSBmbHVzaF93b3JrcXVldWUpIGZpcnN0ICovCisJR0VNX0JVR19PTighbGlzdF9l bXB0eSgmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCkpOwogCWlkYV9kZXN0cm95KCZpOTE1LT5j b250ZXh0cy5od19pZGEpOwogfQogCkBAIC05MzIsNiArMTAwNSwzMyBAQCBpbnQgaTkxNV9nZW1f Y29udGV4dF9yZXNldF9zdGF0c19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCXJldHVy biByZXQ7CiB9CiAKK2ludCBfX2k5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBj dHgtPmk5MTU7CisJaW50IGVyciA9IDA7CisKKwltdXRleF9sb2NrKCZpOTE1LT5jb250ZXh0cy5t dXRleCk7CisKKwlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRfaXNfY2xvc2VkKGN0eCkpOwor CisJaWYgKGxpc3RfZW1wdHkoJmN0eC0+aHdfaWRfbGluaykpIHsKKwkJR0VNX0JVR19PTihhdG9t aWNfcmVhZCgmY3R4LT5od19pZF9waW5fY291bnQpKTsKKworCQllcnIgPSBhc3NpZ25faHdfaWQo aTkxNSwgJmN0eC0+aHdfaWQpOworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfdW5sb2NrOworCisJ CWxpc3RfYWRkX3RhaWwoJmN0eC0+aHdfaWRfbGluaywgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xp c3QpOworCX0KKworCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJmN0eC0+aHdfaWRfcGluX2NvdW50 KSA9PSB+MHUpOworCWF0b21pY19pbmMoJmN0eC0+aHdfaWRfcGluX2NvdW50KTsKKworb3V0X3Vu bG9jazoKKwltdXRleF91bmxvY2soJmk5MTUtPmNvbnRleHRzLm11dGV4KTsKKwlyZXR1cm4gZXJy OworfQorCiAjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCiAjaW5jbHVk ZSAic2VsZnRlc3RzL21vY2tfY29udGV4dC5jIgogI2luY2x1ZGUgInNlbGZ0ZXN0cy9pOTE1X2dl bV9jb250ZXh0LmMiCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXgg ODUxZGFkNmRlY2Q3Li5lMDk2NzNjYTczMWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmgKQEAgLTEzNCw4ICsxMzQsMTYgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg ewogCSAqIGZ1bmN0aW9ucyBsaWtlIGZhdWx0IHJlcG9ydGluZywgUEFTSUQsIHNjaGVkdWxpbmcu IFRoZQogCSAqICZkcm1faTkxNV9wcml2YXRlLmNvbnRleHRfaHdfaWRhIGlzIHVzZWQgdG8gYXNz aWduIGEgdW5xaXVlCiAJICogaWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29udGV4dC4KKwkg KgorCSAqIEBod19pZF9waW5fY291bnQ6IC0gbnVtYmVyIG9mIHRpbWVzIHRoaXMgY29udGV4dCBo YWQgYmVlbiBwaW5uZWQKKwkgKiBmb3IgdXNlIChzaG91bGQgYmUsIGF0IG1vc3QsIG9uY2UgcGVy IGVuZ2luZSkuCisJICoKKwkgKiBAaHdfaWRfbGluazogLSBhbGwgY29udGV4dHMgd2l0aCBhbiBh c3NpZ25lZCBpZCBhcmUgdHJhY2tlZAorCSAqIGZvciBwb3NzaWJsZSByZXBvc3Nlc3Npb24uCiAJ ICovCiAJdW5zaWduZWQgaW50IGh3X2lkOworCWF0b21pY190IGh3X2lkX3Bpbl9jb3VudDsKKwlz dHJ1Y3QgbGlzdF9oZWFkIGh3X2lkX2xpbms7CiAKIAkvKioKIAkgKiBAdXNlcl9oYW5kbGU6IHVz ZXJzcGFjZSBpZGVudGlmaWVyCkBAIC0yNTQsNiArMjYyLDIxIEBAIHN0YXRpYyBpbmxpbmUgdm9p ZCBpOTE1X2dlbV9jb250ZXh0X3NldF9mb3JjZV9zaW5nbGVfc3VibWlzc2lvbihzdHJ1Y3QgaTkx NV9nZW1fCiAJX19zZXRfYml0KENPTlRFWFRfRk9SQ0VfU0lOR0xFX1NVQk1JU1NJT04sICZjdHgt PmZsYWdzKTsKIH0KIAoraW50IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5 MTVfZ2VtX2NvbnRleHQgKmN0eCk7CitzdGF0aWMgaW5saW5lIGludCBpOTE1X2dlbV9jb250ZXh0 X3Bpbl9od19pZChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQoreworCWlmIChhdG9taWNf aW5jX25vdF96ZXJvKCZjdHgtPmh3X2lkX3Bpbl9jb3VudCkpCisJCXJldHVybiAwOworCisJcmV0 dXJuIF9faTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKK30KKworc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfdW5waW5faHdfaWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCkKK3sKKwlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZjdHgtPmh3X2lkX3Bpbl9jb3Vu dCkgPT0gMHUpOworCWF0b21pY19kZWMoJmN0eC0+aHdfaWRfcGluX2NvdW50KTsKK30KKwogc3Rh dGljIGlubGluZSBib29sIGk5MTVfZ2VtX2NvbnRleHRfaXNfZGVmYXVsdChjb25zdCBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqYykKIHsKIAlyZXR1cm4gYy0+dXNlcl9oYW5kbGUgPT0gREVGQVVM VF9DT05URVhUX0hBTkRMRTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKaW5kZXggZGVmNDY3YzI0 NTFiLi45YjFmMGU1MjExYTAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCkBAIC0xMjcyLDYg KzEyNzIsOCBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfY29udGV4dF9kZXN0cm95KHN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZSkKIAogc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRfdW5waW4o c3RydWN0IGludGVsX2NvbnRleHQgKmNlKQogeworCWk5MTVfZ2VtX2NvbnRleHRfdW5waW5faHdf aWQoY2UtPmdlbV9jb250ZXh0KTsKKwogCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwogCiAJ Y2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwtLTsKQEAgLTEzMzAsNiArMTMzMiwxMCBAQCBfX2V4 ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCiAJaWYg KHJldCkKIAkJZ290byB1bnBpbl9tYXA7CiAKKwlyZXQgPSBpOTE1X2dlbV9jb250ZXh0X3Bpbl9o d19pZChjdHgpOworCWlmIChyZXQpCisJCWdvdG8gdW5waW5fcmluZzsKKwogCWludGVsX2xyX2Nv bnRleHRfZGVzY3JpcHRvcl91cGRhdGUoY3R4LCBlbmdpbmUsIGNlKTsKIAogCWNlLT5scmNfcmVn X3N0YXRlID0gdmFkZHIgKyBMUkNfU1RBVEVfUE4gKiBQQUdFX1NJWkU7CkBAIC0xMzQyLDYgKzEz NDgsOCBAQCBfX2V4ZWNsaXN0c19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsCiAJaTkxNV9nZW1fY29udGV4dF9nZXQoY3R4KTsKIAlyZXR1cm4gY2U7CiAKK3VucGlu X3Jpbmc6CisJaW50ZWxfcmluZ191bnBpbihjZS0+cmluZyk7CiB1bnBpbl9tYXA6CiAJaTkxNV9n ZW1fb2JqZWN0X3VucGluX21hcChjZS0+c3RhdGUtPm9iaik7CiB1bnBpbl92bWE6CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKaW5kZXggODkwNGYxY2U2 NGUzLi5kOTM3YmRmZjI2ZjkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9tb2NrX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19jb250ZXh0LmMKQEAgLTQzLDYgKzQzLDcgQEAgbW9ja19jb250ZXh0KHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1LAogCiAJSU5JVF9SQURJWF9UUkVFKCZjdHgtPmhhbmRsZXNfdm1h LCBHRlBfS0VSTkVMKTsKIAlJTklUX0xJU1RfSEVBRCgmY3R4LT5oYW5kbGVzX2xpc3QpOworCUlO SVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwogCiAJZm9yIChuID0gMDsgbiA8IEFSUkFZ X1NJWkUoY3R4LT5fX2VuZ2luZSk7IG4rKykgewogCQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Ug PSAmY3R4LT5fX2VuZ2luZVtuXTsKQEAgLTUwLDExICs1MSw5IEBAIG1vY2tfY29udGV4dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJY2UtPmdlbV9jb250ZXh0ID0gY3R4OwogCX0K IAotCXJldCA9IGlkYV9zaW1wbGVfZ2V0KCZpOTE1LT5jb250ZXh0cy5od19pZGEsCi0JCQkgICAg IDAsIE1BWF9DT05URVhUX0hXX0lELCBHRlBfS0VSTkVMKTsKKwlyZXQgPSBpOTE1X2dlbV9jb250 ZXh0X3Bpbl9od19pZChjdHgpOwogCWlmIChyZXQgPCAwKQogCQlnb3RvIGVycl9oYW5kbGVzOwot CWN0eC0+aHdfaWQgPSByZXQ7CiAKIAlpZiAobmFtZSkgewogCQljdHgtPm5hbWUgPSBrc3RyZHVw KG5hbWUsIEdGUF9LRVJORUwpOwpAQCAtODUsMTEgKzg0LDcgQEAgdm9pZCBtb2NrX2NvbnRleHRf Y2xvc2Uoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIAogdm9pZCBtb2NrX2luaXRfY29u dGV4dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7Ci0JSU5JVF9MSVNUX0hFQUQo Jmk5MTUtPmNvbnRleHRzLmxpc3QpOwotCWlkYV9pbml0KCZpOTE1LT5jb250ZXh0cy5od19pZGEp OwotCi0JSU5JVF9XT1JLKCZpOTE1LT5jb250ZXh0cy5mcmVlX3dvcmssIGNvbnRleHRzX2ZyZWVf d29ya2VyKTsKLQlpbml0X2xsaXN0X2hlYWQoJmk5MTUtPmNvbnRleHRzLmZyZWVfbGlzdCk7CisJ aW5pdF9jb250ZXh0cyhpOTE1KTsKIH0KIAogc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgotLSAK Mi4xOS4wLnJjMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==