From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH] drm/i915: Reduce context HW ID lifetime Date: Thu, 30 Aug 2018 11:24:54 +0100 Message-ID: <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 CD1796E704 for ; Thu, 30 Aug 2018 10:25:07 +0000 (UTC) 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: Oscar Mateo , Mika Kuoppala List-Id: intel-gfx@lists.freedesktop.org RnV0dXJlIGdlbiByZWR1Y2UgdGhlIG51bWJlciBvZiBiaXRzIHdlIHdpbGwgaGF2ZSBhdmFpbGFi bGUgdG8KZGlmZmVyZW50aWF0ZSBiZXR3ZWVuIGNvbnRleHRzLCBzbyByZWR1Y2UgdGhlIGxpZmV0 aW1lIG9mIHRoZSBJRAphc3NpZ25tZW50IGZyb20gdGhhdCBvZiB0aGUgY29udGV4dCB0byBpdHMg Y3VycmVudCBhY3RpdmUgY3ljbGUgKGkuZS4Kb25seSB3aGlsZSBpdCBpcyBwaW5uZWQgZm9yIHVz ZSBieSB0aGUgSFcsIHdpbGwgaXQgaGF2ZSBhIGNvbnN0YW50IElEKS4KVGhpcyBtZWFucyB0aGF0 IGluc3RlYWQgb2YgYSBtYXggb2YgMmsgYWxsb2NhdGVkIGNvbnRleHRzICh3b3JzdCBjYXNlCmJl Zm9yZSBmdW4gd2l0aCBiaXQgdHdpZGRsaW5nKSwgd2UgaW5zdGVhZCBoYXZlIGEgbGltaXQgb2Yg MmsgaW4gZmxpZ2h0CmNvbnRleHRzIChtaW51cyBhIGZldyB0aGF0IGhhdmUgYmVlbiBwaW5uZWQg YnkgdGhlIGtlcm5lbCBvciBieSBwZXJmKS4KCldlIGNhbm5vdCByZWR1Y2UgdGhlIHNjb3BlIG9m IGFuIEhXLUlEIHRvIGFuIGVuZ2luZSAoYWxsb3dpbmcgdGhlIHNhbWUKZ2VtX2NvbnRleHQgdG8g aGF2ZSBkaWZmZXJlbnQgaWRzIG9uIGVhY2ggZW5naW5lKSBhcyBpbiB0aGUgZnV0dXJlIHdlCndp bGwgbmVlZCB0byBwcmVhc3NpZ24gYW4gaWQgYmVmb3JlIHdlIGtub3cgd2hpY2ggZW5naW5lIHRo ZQpjb250ZXh0IGlzIGJlaW5nIGV4ZWN1dGVkIG9uLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlv bmVsLmcubGFuZHdlcmxpbkBpbnRlbC5jb20+CkNjOiBPc2NhciBNYXRlbyA8b3NjYXIubWF0ZW9A aW50ZWwuY29tPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K Q2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50ZWwuY29tPgpDYzogTWljaGVsIFRo aWVycnkgPG1pY2hlbC50aGllcnJ5QGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2RlYnVnZnMuYyAgICAgICAgICAgfCAgIDUgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICAgICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgICAgICAgfCAyMDcgKysrKysrKysrKysrKy0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggICAgICAgfCAgMTcgKysKIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8ICAgOCArCiBkcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgfCAgMTEgKy0KIDYgZmlsZXMgY2hh bmdlZCwgMTgxIGluc2VydGlvbnMoKyksIDY5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKaW5kZXggYTUyNjVjMjM2YTMzLi5iZjNiNmM2ZGI1MWQgMTAwNjQ0Ci0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCkBAIC0xOTUzLDcgKzE5NTMsMTAgQEAgc3RhdGljIGlu dCBpOTE1X2NvbnRleHRfc3RhdHVzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqdW51c2VkKQog CQlyZXR1cm4gcmV0OwogCiAJbGlzdF9mb3JfZWFjaF9lbnRyeShjdHgsICZkZXZfcHJpdi0+Y29u dGV4dHMubGlzdCwgbGluaykgewotCQlzZXFfcHJpbnRmKG0sICJIVyBjb250ZXh0ICV1ICIsIGN0 eC0+aHdfaWQpOworCQlzZXFfcHV0cyhtLCAiSFcgY29udGV4dCAiKTsKKwkJaWYgKCFsaXN0X2Vt cHR5KCZjdHgtPmh3X2lkX2xpbmspKQorCQkJc2VxX3ByaW50ZihtLCAiJXggW3BpbiAldV0iLAor CQkJCSAgIGN0eC0+aHdfaWQsIGF0b21pY19yZWFkKCZjdHgtPnBpbl9od19pZCkpOwogCQlpZiAo Y3R4LT5waWQpIHsKIAkJCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKIApkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKaW5kZXggZTViOWQzYzc3MTM5Li5jYTZiNTVkMjlkNmEgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaApAQCAtMTg2Miw2ICsxODYyLDcgQEAgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg ewogCXN0cnVjdCBtdXRleCBhdl9tdXRleDsKIAogCXN0cnVjdCB7CisJCXN0cnVjdCBtdXRleCBt dXRleDsKIAkJc3RydWN0IGxpc3RfaGVhZCBsaXN0OwogCQlzdHJ1Y3QgbGxpc3RfaGVhZCBmcmVl X2xpc3Q7CiAJCXN0cnVjdCB3b3JrX3N0cnVjdCBmcmVlX3dvcms7CkBAIC0xODc0LDYgKzE4NzUs NyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7CiAjZGVmaW5lIE1BWF9DT05URVhUX0hXX0lE ICgxPDwyMSkgLyogZXhjbHVzaXZlICovCiAjZGVmaW5lIE1BWF9HVUNfQ09OVEVYVF9IV19JRCAo MSA8PCAyMCkgLyogZXhjbHVzaXZlICovCiAjZGVmaW5lIEdFTjExX01BWF9DT05URVhUX0hXX0lE ICgxPDwxMSkgLyogZXhjbHVzaXZlICovCisJCXN0cnVjdCBsaXN0X2hlYWQgaHdfaWRfbGlzdDsK IAl9IGNvbnRleHRzOwogCiAJdTMyIGZkaV9yeF9jb25maWc7CmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKaW5kZXggZjE1YTAzOTc3MmRiLi5kMzM5MDk0MmYzN2IgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTExNSw2ICsxMTUsODUgQEAg c3RhdGljIHZvaWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJcmN1 X3JlYWRfdW5sb2NrKCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgaW50IG5ld19od19pZChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgZ2ZwX3QgZ2ZwKQoreworCXVuc2lnbmVkIGludCBtYXg7 CisKKwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7CisKKwlpZiAo SU5URUxfR0VOKGk5MTUpID49IDExKQorCQltYXggPSBHRU4xMV9NQVhfQ09OVEVYVF9IV19JRDsK KwllbHNlIGlmIChVU0VTX0dVQ19TVUJNSVNTSU9OKGk5MTUpKQorCQkvKgorCQkgKiBXaGVuIHVz aW5nIEd1QyBpbiBwcm94eSBzdWJtaXNzaW9uLCBHdUMgY29uc3VtZXMgdGhlCisJCSAqIGhpZ2hl c3QgYml0IGluIHRoZSBjb250ZXh0IGlkIHRvIGluZGljYXRlIHByb3h5IHN1Ym1pc3Npb24uCisJ CSAqLworCQltYXggPSBNQVhfR1VDX0NPTlRFWFRfSFdfSUQ7CisJZWxzZQorCQltYXggPSBNQVhf Q09OVEVYVF9IV19JRDsKKworCXJldHVybiBpZGFfc2ltcGxlX2dldCgmaTkxNS0+Y29udGV4dHMu aHdfaWRhLCAwLCBtYXgsIGdmcCk7Cit9CisKK3N0YXRpYyBpbnQgc3RlYWxfaHdfaWQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCwgKmNuOworCUxJU1RfSEVBRChwaW5uZWQpOworCWludCBpZCA9IC1FTk9TUEM7CisKKwlsb2Nr ZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7CisKKwlsaXN0X2Zvcl9lYWNo X2VudHJ5X3NhZmUoY3R4LCBjbiwKKwkJCQkgJmk5MTUtPmNvbnRleHRzLmh3X2lkX2xpc3QsIGh3 X2lkX2xpbmspIHsKKwkJaWYgKGF0b21pY19yZWFkKCZjdHgtPnBpbl9od19pZCkpIHsKKwkJCWxp c3RfbW92ZV90YWlsKCZjdHgtPmh3X2lkX2xpbmssICZwaW5uZWQpOworCQkJY29udGludWU7CisJ CX0KKworCQlHRU1fQlVHX09OKCFjdHgtPmh3X2lkKTsgLyogcGVybWEtcGlubmVkIGtlcm5lbCBj b250ZXh0ICovCisJCWxpc3RfZGVsX2luaXQoJmN0eC0+aHdfaWRfbGluayk7CisJCWlkID0gY3R4 LT5od19pZDsKKwkJYnJlYWs7CisJfQorCisJbGlzdF9zcGxpY2VfdGFpbCgmcGlubmVkLCAmaTkx NS0+Y29udGV4dHMuaHdfaWRfbGlzdCk7CisJcmV0dXJuIGlkOworfQorCitzdGF0aWMgaW50IGFz c2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdW5zaWduZWQgaW50ICpv dXQpCit7CisJaW50IHJldDsKKworCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmk5MTUtPmNvbnRleHRz Lm11dGV4KTsKKworCXJldCA9IG5ld19od19pZChpOTE1LCBHRlBfS0VSTkVMIHwgX19HRlBfUkVU UllfTUFZRkFJTCB8IF9fR0ZQX05PV0FSTik7CisJaWYgKHVubGlrZWx5KHJldCA8IDApKSB7CisJ CXJldCA9IHN0ZWFsX2h3X2lkKGk5MTUpOworCQlpZiAocmV0IDwgMCkgLyogb25jZSBhZ2FpbiBm b3IgdGhlIGNvcnJlY3QgZXJybyBjb2RlICovCisJCQlyZXQgPSBuZXdfaHdfaWQoaTkxNSwgR0ZQ X0tFUk5FTCk7CisJCWlmIChyZXQgPCAwKQorCQkJcmV0dXJuIHJldDsKKwl9CisKKwkqb3V0ID0g cmV0OworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCByZWxlYXNlX2h3X2lkKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSBjdHgtPmk5MTU7CisKKwlpZiAobGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5rKSkKKwkJcmV0 dXJuOworCisJbXV0ZXhfbG9jaygmaTkxNS0+Y29udGV4dHMubXV0ZXgpOworCWlmICghbGlzdF9l bXB0eSgmY3R4LT5od19pZF9saW5rKSkgeworCQlpZGFfc2ltcGxlX3JlbW92ZSgmaTkxNS0+Y29u dGV4dHMuaHdfaWRhLCBjdHgtPmh3X2lkKTsKKwkJbGlzdF9kZWxfaW5pdCgmY3R4LT5od19pZF9s aW5rKTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZpOTE1LT5jb250ZXh0cy5tdXRleCk7Cit9CisKIHN0 YXRpYyB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4KQogewogCXVuc2lnbmVkIGludCBuOwpAQCAtMTIyLDYgKzIwMSw3IEBAIHN0YXRpYyB2b2lk IGk5MTVfZ2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQogCWxv Y2tkZXBfYXNzZXJ0X2hlbGQoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJR0VNX0JV R19PTighaTkxNV9nZW1fY29udGV4dF9pc19jbG9zZWQoY3R4KSk7CiAKKwlyZWxlYXNlX2h3X2lk KGN0eCk7CiAJaTkxNV9wcGd0dF9wdXQoY3R4LT5wcGd0dCk7CiAKIAlmb3IgKG4gPSAwOyBuIDwg QVJSQVlfU0laRShjdHgtPl9fZW5naW5lKTsgbisrKSB7CkBAIC0xMzYsNyArMjE2LDYgQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCiAKIAlsaXN0X2RlbCgmY3R4LT5saW5rKTsKIAotCWlkYV9zaW1wbGVfcmVtb3ZlKCZjdHgt Pmk5MTUtPmNvbnRleHRzLmh3X2lkYSwgY3R4LT5od19pZCk7CiAJa2ZyZWVfcmN1KGN0eCwgcmN1 KTsKIH0KIApAQCAtMTkwLDYgKzI2OSwxMiBAQCBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0 cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiB7CiAJaTkxNV9nZW1fY29udGV4dF9zZXRfY2xv c2VkKGN0eCk7CiAKKwkvKgorCSAqIFRoaXMgY29udGV4dCB3aWxsIG5ldmVyIGFnYWluIGJlIGFz c2luZ2VkIHRvIEhXLCBzbyB3ZSBjYW4KKwkgKiByZXVzZSBpdHMgSUQgZm9yIHRoZSBuZXh0IGNv bnRleHQuCisJICovCisJcmVsZWFzZV9od19pZChjdHgpOworCiAJLyoKIAkgKiBUaGUgTFVUIHVz ZXMgdGhlIFZNQSBhcyBhIGJhY2twb2ludGVyIHRvIHVucmVmIHRoZSBvYmplY3QsCiAJICogc28g d2UgbmVlZCB0byBjbGVhciB0aGUgTFVUIGJlZm9yZSB3ZSBjbG9zZSBhbGwgdGhlIFZNQSAoaW5z aWRlCkBAIC0yMDMsNDMgKzI4OCw2IEBAIHN0YXRpYyB2b2lkIGNvbnRleHRfY2xvc2Uoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwogfQog Ci1zdGF0aWMgaW50IGFzc2lnbl9od19pZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHVuc2lnbmVkICpvdXQpCi17Ci0JaW50IHJldDsKLQl1bnNpZ25lZCBpbnQgbWF4OwotCi0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTEpIHsKLQkJbWF4ID0gR0VOMTFfTUFYX0NPTlRF WFRfSFdfSUQ7Ci0JfSBlbHNlIHsKLQkJLyoKLQkJICogV2hlbiB1c2luZyBHdUMgaW4gcHJveHkg c3VibWlzc2lvbiwgR3VDIGNvbnN1bWVzIHRoZQotCQkgKiBoaWdoZXN0IGJpdCBpbiB0aGUgY29u dGV4dCBpZCB0byBpbmRpY2F0ZSBwcm94eSBzdWJtaXNzaW9uLgotCQkgKi8KLQkJaWYgKFVTRVNf R1VDX1NVQk1JU1NJT04oZGV2X3ByaXYpKQotCQkJbWF4ID0gTUFYX0dVQ19DT05URVhUX0hXX0lE OwotCQllbHNlCi0JCQltYXggPSBNQVhfQ09OVEVYVF9IV19JRDsKLQl9Ci0KLQotCXJldCA9IGlk YV9zaW1wbGVfZ2V0KCZkZXZfcHJpdi0+Y29udGV4dHMuaHdfaWRhLAotCQkJICAgICAwLCBtYXgs IEdGUF9LRVJORUwpOwotCWlmIChyZXQgPCAwKSB7Ci0JCS8qIENvbnRleHRzIGFyZSBvbmx5IHJl bGVhc2VkIHdoZW4gbm8gbG9uZ2VyIGFjdGl2ZS4KLQkJICogRmx1c2ggYW55IHBlbmRpbmcgcmV0 aXJlcyB0byBob3BlZnVsbHkgcmVsZWFzZSBzb21lCi0JCSAqIHN0YWxlIGNvbnRleHRzIGFuZCB0 cnkgYWdhaW4uCi0JCSAqLwotCQlpOTE1X3JldGlyZV9yZXF1ZXN0cyhkZXZfcHJpdik7Ci0JCXJl dCA9IGlkYV9zaW1wbGVfZ2V0KCZkZXZfcHJpdi0+Y29udGV4dHMuaHdfaWRhLAotCQkJCSAgICAg MCwgbWF4LCBHRlBfS0VSTkVMKTsKLQkJaWYgKHJldCA8IDApCi0JCQlyZXR1cm4gcmV0OwotCX0K LQotCSpvdXQgPSByZXQ7Ci0JcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyB1MzIgZGVmYXVsdF9kZXNj X3RlbXBsYXRlKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCQkJCSBjb25z dCBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiB7CkBAIC0yNzYsMTIgKzMyNCw2IEBAIF9f Y3JlYXRlX2h3X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCWlm IChjdHggPT0gTlVMTCkKIAkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CiAKLQlyZXQgPSBhc3Np Z25faHdfaWQoZGV2X3ByaXYsICZjdHgtPmh3X2lkKTsKLQlpZiAocmV0KSB7Ci0JCWtmcmVlKGN0 eCk7Ci0JCXJldHVybiBFUlJfUFRSKHJldCk7Ci0JfQotCiAJa3JlZl9pbml0KCZjdHgtPnJlZik7 CiAJbGlzdF9hZGRfdGFpbCgmY3R4LT5saW5rLCAmZGV2X3ByaXYtPmNvbnRleHRzLmxpc3QpOwog CWN0eC0+aTkxNSA9IGRldl9wcml2OwpAQCAtMjk1LDYgKzMzNyw3IEBAIF9fY3JlYXRlX2h3X2Nv bnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCiAJSU5JVF9SQURJWF9U UkVFKCZjdHgtPmhhbmRsZXNfdm1hLCBHRlBfS0VSTkVMKTsKIAlJTklUX0xJU1RfSEVBRCgmY3R4 LT5oYW5kbGVzX2xpc3QpOworCUlOSVRfTElTVF9IRUFEKCZjdHgtPmh3X2lkX2xpbmspOwogCiAJ LyogRGVmYXVsdCBjb250ZXh0IHdpbGwgbmV2ZXIgaGF2ZSBhIGZpbGVfcHJpdiAqLwogCXJldCA9 IERFRkFVTFRfQ09OVEVYVF9IQU5ETEU7CkBAIC00MjEsMTUgKzQ2NCwzNSBAQCBpOTE1X2dlbV9j b250ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gY3R4Owog fQogCitzdGF0aWMgdm9pZAorZGVzdHJveV9rZXJuZWxfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqKmN0eHApCit7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKworCS8q IEtlZXAgdGhlIGNvbnRleHQgcmVmIHNvIHRoYXQgd2UgY2FuIGZyZWUgaXQgaW1tZWRpYXRlbHkg b3Vyc2VsdmVzICovCisJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9nZXQoZmV0Y2hfYW5kX3plcm8o Y3R4cCkpOworCUdFTV9CVUdfT04oIWk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOwor CisJY29udGV4dF9jbG9zZShjdHgpOworCWk5MTVfZ2VtX2NvbnRleHRfZnJlZShjdHgpOworfQor CiBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCiBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJu ZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQogewogCXN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHg7CisJaW50IGVycjsKIAogCWN0eCA9IGk5MTVfZ2VtX2NyZWF0 ZV9jb250ZXh0KGk5MTUsIE5VTEwpOwogCWlmIChJU19FUlIoY3R4KSkKIAkJcmV0dXJuIGN0eDsK IAorCWVyciA9IGk5MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKGN0eCk7CisJaWYgKGVycikgewor CQlkZXN0cm95X2tlcm5lbF9jb250ZXh0KCZjdHgpOworCQlyZXR1cm4gRVJSX1BUUihlcnIpOwor CX0KKwogCWk5MTVfZ2VtX2NvbnRleHRfY2xlYXJfYmFubmFibGUoY3R4KTsKIAljdHgtPnNjaGVk LnByaW9yaXR5ID0gcHJpbzsKIAljdHgtPnJpbmdfc2l6ZSA9IFBBR0VfU0laRTsKQEAgLTQzOSwx NyArNTAyLDE5IEBAIGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2tlcm5lbChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHByaW8pCiAJcmV0dXJuIGN0eDsKIH0KIAotc3RhdGljIHZv aWQKLWRlc3Ryb3lfa2VybmVsX2NvbnRleHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKipjdHhw KQorc3RhdGljIHZvaWQgaW5pdF9jb250ZXh0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSkKIHsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCW11dGV4X2luaXQoJmk5MTUt PmNvbnRleHRzLm11dGV4KTsKKwlJTklUX0xJU1RfSEVBRCgmaTkxNS0+Y29udGV4dHMubGlzdCk7 CiAKLQkvKiBLZWVwIHRoZSBjb250ZXh0IHJlZiBzbyB0aGF0IHdlIGNhbiBmcmVlIGl0IGltbWVk aWF0ZWx5IG91cnNlbHZlcyAqLwotCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfZ2V0KGZldGNoX2Fu ZF96ZXJvKGN0eHApKTsKLQlHRU1fQlVHX09OKCFpOTE1X2dlbV9jb250ZXh0X2lzX2tlcm5lbChj dHgpKTsKKwkvKiBVc2luZyB0aGUgc2ltcGxlIGlkYSBpbnRlcmZhY2UsIHRoZSBtYXggaXMgbGlt aXRlZCBieSBzaXplb2YoaW50KSAqLworCUJVSUxEX0JVR19PTihNQVhfQ09OVEVYVF9IV19JRCA+ IElOVF9NQVgpOworCUJVSUxEX0JVR19PTihHRU4xMV9NQVhfQ09OVEVYVF9IV19JRCA+IElOVF9N QVgpOworCWlkYV9pbml0KCZpOTE1LT5jb250ZXh0cy5od19pZGEpOworCUlOSVRfTElTVF9IRUFE KCZpOTE1LT5jb250ZXh0cy5od19pZF9saXN0KTsKIAotCWNvbnRleHRfY2xvc2UoY3R4KTsKLQlp OTE1X2dlbV9jb250ZXh0X2ZyZWUoY3R4KTsKKwlJTklUX1dPUksoJmk5MTUtPmNvbnRleHRzLmZy ZWVfd29yaywgY29udGV4dHNfZnJlZV93b3JrZXIpOworCWluaXRfbGxpc3RfaGVhZCgmaTkxNS0+ Y29udGV4dHMuZnJlZV9saXN0KTsKIH0KIAogc3RhdGljIGJvb2wgbmVlZHNfcHJlZW1wdF9jb250 ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQpAQCAtNDcwLDE0ICs1MzUsNyBAQCBp bnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotCUlOSVRfTElTVF9IRUFEKCZkZXZfcHJp di0+Y29udGV4dHMubGlzdCk7Ci0JSU5JVF9XT1JLKCZkZXZfcHJpdi0+Y29udGV4dHMuZnJlZV93 b3JrLCBjb250ZXh0c19mcmVlX3dvcmtlcik7Ci0JaW5pdF9sbGlzdF9oZWFkKCZkZXZfcHJpdi0+ Y29udGV4dHMuZnJlZV9saXN0KTsKLQotCS8qIFVzaW5nIHRoZSBzaW1wbGUgaWRhIGludGVyZmFj ZSwgdGhlIG1heCBpcyBsaW1pdGVkIGJ5IHNpemVvZihpbnQpICovCi0JQlVJTERfQlVHX09OKE1B WF9DT05URVhUX0hXX0lEID4gSU5UX01BWCk7Ci0JQlVJTERfQlVHX09OKEdFTjExX01BWF9DT05U RVhUX0hXX0lEID4gSU5UX01BWCk7Ci0JaWRhX2luaXQoJmRldl9wcml2LT5jb250ZXh0cy5od19p ZGEpOworCWluaXRfY29udGV4dHMoZGV2X3ByaXYpOwogCiAJLyogbG93ZXN0IHByaW9yaXR5OyBp ZGxlIHRhc2sgKi8KIAljdHggPSBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoZGV2X3By aXYsIEk5MTVfUFJJT1JJVFlfTUlOKTsKQEAgLTQ5MCw2ICs1NDgsNyBAQCBpbnQgaTkxNV9nZW1f Y29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJICogYWxs IHVzZXIgY29udGV4dHMgd2lsbCBoYXZlIG5vbi16ZXJvIGh3X2lkLgogCSAqLwogCUdFTV9CVUdf T04oY3R4LT5od19pZCk7CisJR0VNX0JVR19PTighYXRvbWljX3JlYWQoJmN0eC0+cGluX2h3X2lk KSk7CiAJZGV2X3ByaXYtPmtlcm5lbF9jb250ZXh0ID0gY3R4OwogCiAJLyogaGlnaGVzdCBwcmlv cml0eTsgcHJlZW1wdGluZyB0YXNrICovCkBAIC01MjcsNiArNTg2LDcgQEAgdm9pZCBpOTE1X2dl bV9jb250ZXh0c19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogCWRlc3Ryb3lf a2VybmVsX2NvbnRleHQoJmk5MTUtPmtlcm5lbF9jb250ZXh0KTsKIAogCS8qIE11c3QgZnJlZSBh bGwgZGVmZXJyZWQgY29udGV4dHMgKHZpYSBmbHVzaF93b3JrcXVldWUpIGZpcnN0ICovCisJR0VN X0JVR19PTighbGlzdF9lbXB0eSgmaTkxNS0+Y29udGV4dHMuaHdfaWRfbGlzdCkpOwogCWlkYV9k ZXN0cm95KCZpOTE1LT5jb250ZXh0cy5od19pZGEpOwogfQogCkBAIC05MzIsNiArOTkyLDMzIEBA IGludCBpOTE1X2dlbV9jb250ZXh0X3Jlc2V0X3N0YXRzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJcmV0dXJuIHJldDsKIH0KIAoraW50IF9faTkxNV9nZW1fY29udGV4dF9waW5faHdf aWQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsKKwlpbnQgZXJyID0gMDsKKworCW11dGV4X2xvY2soJmk5 MTUtPmNvbnRleHRzLm11dGV4KTsKKworCUdFTV9CVUdfT04oaTkxNV9nZW1fY29udGV4dF9pc19j bG9zZWQoY3R4KSk7CisKKwlpZiAobGlzdF9lbXB0eSgmY3R4LT5od19pZF9saW5rKSkgeworCQlH RU1fQlVHX09OKGF0b21pY19yZWFkKCZjdHgtPnBpbl9od19pZCkpOworCisJCWVyciA9IGFzc2ln bl9od19pZChpOTE1LCAmY3R4LT5od19pZCk7CisJCWlmIChlcnIpCisJCQlnb3RvIG91dF91bmxv Y2s7CisKKwkJbGlzdF9hZGRfdGFpbCgmY3R4LT5od19pZF9saW5rLCAmaTkxNS0+Y29udGV4dHMu aHdfaWRfbGlzdCk7CisJfQorCisJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmY3R4LT5waW5faHdf aWQpID09IH4wdSk7CisJYXRvbWljX2luYygmY3R4LT5waW5faHdfaWQpOworCitvdXRfdW5sb2Nr OgorCW11dGV4X3VubG9jaygmaTkxNS0+Y29udGV4dHMubXV0ZXgpOworCXJldHVybiBlcnI7Cit9 CisKICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fSTkxNV9TRUxGVEVTVCkKICNpbmNsdWRlICJz ZWxmdGVzdHMvbW9ja19jb250ZXh0LmMiCiAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfZ2VtX2Nv bnRleHQuYyIKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRl eHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCA4NTFk YWQ2ZGVjZDcuLmM3M2FjNjE0ZjU4YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fY29udGV4dC5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuaApAQCAtMTM2LDYgKzEzNiw4IEBAIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0IHsKIAkg KiBpZCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb250ZXh0LgogCSAqLwogCXVuc2lnbmVkIGlu dCBod19pZDsKKwlhdG9taWNfdCBwaW5faHdfaWQ7CisJc3RydWN0IGxpc3RfaGVhZCBod19pZF9s aW5rOwogCiAJLyoqCiAJICogQHVzZXJfaGFuZGxlOiB1c2Vyc3BhY2UgaWRlbnRpZmllcgpAQCAt MjU0LDYgKzI1NiwyMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9nZW1fY29udGV4dF9zZXRf Zm9yY2Vfc2luZ2xlX3N1Ym1pc3Npb24oc3RydWN0IGk5MTVfZ2VtXwogCV9fc2V0X2JpdChDT05U RVhUX0ZPUkNFX1NJTkdMRV9TVUJNSVNTSU9OLCAmY3R4LT5mbGFncyk7CiB9CiAKK2ludCBfX2k5 MTVfZ2VtX2NvbnRleHRfcGluX2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpOwor c3RhdGljIGlubGluZSBpbnQgaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoc3RydWN0IGk5MTVf Z2VtX2NvbnRleHQgKmN0eCkKK3sKKwlpZiAoYXRvbWljX2luY19ub3RfemVybygmY3R4LT5waW5f aHdfaWQpKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBfX2k5MTVfZ2VtX2NvbnRleHRfcGluX2h3 X2lkKGN0eCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3VucGlu X2h3X2lkKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCit7CisJR0VNX0JVR19PTihhdG9t aWNfcmVhZCgmY3R4LT5waW5faHdfaWQpID09IDB1KTsKKwlhdG9taWNfZGVjKCZjdHgtPnBpbl9o d19pZCk7Cit9CisKIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9jb250ZXh0X2lzX2RlZmF1 bHQoY29uc3Qgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmMpCiB7CiAJcmV0dXJuIGMtPnVzZXJf aGFuZGxlID09IERFRkFVTFRfQ09OVEVYVF9IQU5ETEU7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5j CmluZGV4IGY4Y2ViOWM5OWRkNi4uMmVhM2FlYTNlMzQyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9scmMuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9s cmMuYwpAQCAtMTI3Miw2ICsxMjcyLDggQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NvbnRleHRf ZGVzdHJveShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAKIHN0YXRpYyB2b2lkIGV4ZWNsaXN0 c19jb250ZXh0X3VucGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKKwlpOTE1X2dlbV9j b250ZXh0X3VucGluX2h3X2lkKGNlLT5nZW1fY29udGV4dCk7CisKIAlpbnRlbF9yaW5nX3VucGlu KGNlLT5yaW5nKTsKIAogCWNlLT5zdGF0ZS0+b2JqLT5waW5fZ2xvYmFsLS07CkBAIC0xMzMwLDYg KzEzMzIsMTAgQEAgX19leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lLAogCWlmIChyZXQpCiAJCWdvdG8gdW5waW5fbWFwOwogCisJcmV0ID0gaTkxNV9n ZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKKwlpZiAocmV0KQorCQlnb3RvIHVucGluX3Jpbmc7 CisKIAlpbnRlbF9scl9jb250ZXh0X2Rlc2NyaXB0b3JfdXBkYXRlKGN0eCwgZW5naW5lLCBjZSk7 CiAKIAljZS0+bHJjX3JlZ19zdGF0ZSA9IHZhZGRyICsgTFJDX1NUQVRFX1BOICogUEFHRV9TSVpF OwpAQCAtMTM0Miw2ICsxMzQ4LDggQEAgX19leGVjbGlzdHNfY29udGV4dF9waW4oc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGN0eCk7CiAJcmV0 dXJuIGNlOwogCit1bnBpbl9yaW5nOgorCWludGVsX3JpbmdfdW5waW4oY2UtPnJpbmcpOwogdW5w aW5fbWFwOgogCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAoY2UtPnN0YXRlLT5vYmopOwogdW5w aW5fdm1hOgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tf Y29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5j CmluZGV4IDg5MDRmMWNlNjRlMy4uZDkzN2JkZmYyNmY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCkBAIC00Myw2ICs0Myw3IEBAIG1vY2tfY29u dGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAogCUlOSVRfUkFESVhfVFJFRSgm Y3R4LT5oYW5kbGVzX3ZtYSwgR0ZQX0tFUk5FTCk7CiAJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFu ZGxlc19saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmY3R4LT5od19pZF9saW5rKTsKIAogCWZvciAo biA9IDA7IG4gPCBBUlJBWV9TSVpFKGN0eC0+X19lbmdpbmUpOyBuKyspIHsKIAkJc3RydWN0IGlu dGVsX2NvbnRleHQgKmNlID0gJmN0eC0+X19lbmdpbmVbbl07CkBAIC01MCwxMSArNTEsOSBAQCBt b2NrX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJCWNlLT5nZW1fY29u dGV4dCA9IGN0eDsKIAl9CiAKLQlyZXQgPSBpZGFfc2ltcGxlX2dldCgmaTkxNS0+Y29udGV4dHMu aHdfaWRhLAotCQkJICAgICAwLCBNQVhfQ09OVEVYVF9IV19JRCwgR0ZQX0tFUk5FTCk7CisJcmV0 ID0gaTkxNV9nZW1fY29udGV4dF9waW5faHdfaWQoY3R4KTsKIAlpZiAocmV0IDwgMCkKIAkJZ290 byBlcnJfaGFuZGxlczsKLQljdHgtPmh3X2lkID0gcmV0OwogCiAJaWYgKG5hbWUpIHsKIAkJY3R4 LT5uYW1lID0ga3N0cmR1cChuYW1lLCBHRlBfS0VSTkVMKTsKQEAgLTg1LDExICs4NCw3IEBAIHZv aWQgbW9ja19jb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAKIHZv aWQgbW9ja19pbml0X2NvbnRleHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KQogewot CUlOSVRfTElTVF9IRUFEKCZpOTE1LT5jb250ZXh0cy5saXN0KTsKLQlpZGFfaW5pdCgmaTkxNS0+ Y29udGV4dHMuaHdfaWRhKTsKLQotCUlOSVRfV09SSygmaTkxNS0+Y29udGV4dHMuZnJlZV93b3Jr LCBjb250ZXh0c19mcmVlX3dvcmtlcik7Ci0JaW5pdF9sbGlzdF9oZWFkKCZpOTE1LT5jb250ZXh0 cy5mcmVlX2xpc3QpOworCWluaXRfY29udGV4dHMoaTkxNSk7CiB9CiAKIHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICoKLS0gCjIuMTkuMC5yYzEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2ludGVsLWdmeAo=