From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 07/10] drm/i915/execlists: Cancel banned contexts on schedule-out Date: Thu, 10 Oct 2019 08:14:31 +0100 Message-ID: <20191010071434.31195-7-chris@chris-wilson.co.uk> References: <20191010071434.31195-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 597D96EAA9 for ; Thu, 10 Oct 2019 07:14:47 +0000 (UTC) In-Reply-To: <20191010071434.31195-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 List-Id: intel-gfx@lists.freedesktop.org T24gY29tcGxldGlvbiBvZiBhIGJhbm5lZCBjb250ZXh0LCBzY3J1YiB0aGUgY29udGV4dCBpbWFn ZSBzbyB0aGF0IHdlIGRvCm5vdCByZXBsYXkgdGhlIGFjdGl2ZSBwYXlsb2FkLiBUaGUgaW50ZW50 IGlzIHRoYXQgd2Ugc2tpcCBiYW5uZWQKcGF5bG9hZHMgb24gcmVxdWVzdCBzdWJtaXNzaW9uIHNv IHRoYXQgdGhlIHRpbWVsaW5lIGFkdmFuY2VtZW50CmNvbnRpbnVlcyBvbiBpbiB0aGUgYmFja2dy b3VuZC4gSG93ZXZlciwgaWYgd2UgYXJlIHJldHVybmluZyB0byBhCnByZWVtcHRlZCByZXF1ZXN0 LCBpOTE1X3JlcXVlc3Rfc2tpcCgpIGlzIGluZWZmZWN0aXZlIGFuZCBpbnN0ZWFkIHdlCm5lZWQg dG8gcGF0Y2ggdXAgdGhlIGNvbnRleHQgaW1hZ2Ugc28gdGhhdCBpdCBjb250aW51ZXMgZnJvbSB0 aGUgc3RhcnQKb2YgdGhlIG5leHQgcmVxdWVzdC4KClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2xyYy5jICAgIHwgIDU4ICsrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2Vs ZnRlc3RfbHJjLmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKwogMiBmaWxlcyBjaGFu Z2VkLCAzMzEgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMKaW5k ZXggZWI5OWYxZTgwNGY3Li43OWM3ZWJlYTJmY2MgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2ludGVsX2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2xyYy5jCkBAIC0yMzQsNiArMjM0LDkgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2luaXRfcmVn X3N0YXRlKHUzMiAqcmVnX3N0YXRlLAogCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAogCQkJCSAgICAgY29uc3Qgc3RydWN0IGludGVsX3JpbmcgKnJpbmcsCiAJ CQkJICAgICBib29sIGNsb3NlKTsKK3N0YXRpYyB2b2lkCitfX2V4ZWNsaXN0c191cGRhdGVfcmVn X3N0YXRlKGNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCSAgICAgY29uc3Qgc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsKIAogc3RhdGljIHZvaWQgX19jb250ZXh0X3Bp bl9hY3F1aXJlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIHsKQEAgLTEwMjIsNiArMTAyNSw1 OCBAQCBzdGF0aWMgdm9pZCBraWNrX3NpYmxpbmdzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCXRhc2tsZXRfc2NoZWR1bGUoJnZlLT5iYXNlLmV4 ZWNsaXN0cy50YXNrbGV0KTsKIH0KIAorc3RhdGljIHZvaWQKK21hcmtfY29tcGxldGUoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKK3sKKwlj b25zdCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKiBjb25zdCB0bCA9IHJjdV9kZXJlZmVyZW5jZShy cS0+dGltZWxpbmUpOworCisJKih1MzIgKil0bC0+aHdzcF9zZXFubyA9IHJxLT5mZW5jZS5zZXFu bzsKKwlHRU1fQlVHX09OKCFpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSk7CisKKwlsaXN0X2Zv cl9lYWNoX2VudHJ5X2Zyb21fcmV2ZXJzZShycSwgJnRsLT5yZXF1ZXN0cywgbGluaykgeworCQlp ZiAoaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJxKSkKKwkJCWJyZWFrOworCisJCW1hcmtfZWlvKHJx KTsKKwl9CisKKwlpbnRlbF9lbmdpbmVfcXVldWVfYnJlYWRjcnVtYnMoZW5naW5lKTsKK30KKwor c3RhdGljIHZvaWQgY2FuY2VsX2FjdGl2ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKKwkJCSAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICogY29uc3QgY2UgPSBycS0+aHdfY29udGV4dDsKKwl1MzIgKnJlZ3MgPSBjZS0+bHJjX3JlZ19z dGF0ZTsKKworCWlmIChpOTE1X3JlcXVlc3RfY29tcGxldGVkKHJxKSkKKwkJcmV0dXJuOworCisJ R0VNX1RSQUNFKCIlcyglcyk6IHsgcnE9JWxseDolbGxkIH1cbiIsCisJCSAgX19mdW5jX18sIGVu Z2luZS0+bmFtZSwgcnEtPmZlbmNlLmNvbnRleHQsIHJxLT5mZW5jZS5zZXFubyk7CisJX19jb250 ZXh0X3Bpbl9hY3F1aXJlKGNlKTsKKworCS8qIFNjcnViIHRoZSBjb250ZXh0IGltYWdlIHRvIHBy ZXZlbnQgcmVwbGF5aW5nIHRoZSBwcmV2aW91cyBiYXRjaCAqLworCW1lbWNweShyZWdzLCAvKiBz a2lwIHJlc3RvcmluZyB0aGUgdmFuaWxsYSBQUEhXU1AgKi8KKwkgICAgICAgZW5naW5lLT5waW5u ZWRfZGVmYXVsdF9zdGF0ZSArIExSQ19TVEFURV9QTiAqIFBBR0VfU0laRSwKKwkgICAgICAgZW5n aW5lLT5jb250ZXh0X3NpemUgLSBQQUdFX1NJWkUpOworCWV4ZWNsaXN0c19pbml0X3JlZ19zdGF0 ZShyZWdzLCBjZSwgZW5naW5lLCBjZS0+cmluZywgZmFsc2UpOworCisJLyogUmluZyB3aWxsIGJl IGFkdmFuY2VkIG9uIHJldGlyZTsgaGVyZSB3ZSBuZWVkIHRvIHJlc2V0IHRoZSBjb250ZXh0ICov CisJY2UtPnJpbmctPmhlYWQgPSBpbnRlbF9yaW5nX3dyYXAoY2UtPnJpbmcsIHJxLT53YV90YWls KTsKKwlfX2V4ZWNsaXN0c191cGRhdGVfcmVnX3N0YXRlKGNlLCBlbmdpbmUpOworCisJLyogV2Un dmUgc3dpdGNoZWQgYXdheSwgc28gdGhpcyBzaG91bGQgYmUgYSBuby1vcCwgYnV0IGludGVudCBt YXR0ZXJzICovCisJY2UtPmxyY19kZXNjIHw9IENUWF9ERVNDX0ZPUkNFX1JFU1RPUkU7CisKKwkv KiBMZXQgZXZlcnlvbmUga25vdyB0aGF0IHRoZSByZXF1ZXN0IG1heSBub3cgYmUgcmV0aXJlZCAq LworCXJjdV9yZWFkX2xvY2soKTsKKwltYXJrX2NvbXBsZXRlKHJxLCBlbmdpbmUpOworCXJjdV9y ZWFkX3VubG9jaygpOworCisJX19jb250ZXh0X3Bpbl9yZWxlYXNlKGNlKTsKK30KKwogc3RhdGlj IGlubGluZSB2b2lkCiBfX2V4ZWNsaXN0c19zY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsCiAJCQkgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSkKQEAgLTEw MzIsNiArMTA4Nyw5IEBAIF9fZXhlY2xpc3RzX3NjaGVkdWxlX291dChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSwKIAlleGVjbGlzdHNfY29udGV4dF9zdGF0dXNfY2hhbmdlKHJxLCBJTlRFTF9DT05U RVhUX1NDSEVEVUxFX09VVCk7CiAJaW50ZWxfZ3RfcG1fcHV0KGVuZ2luZS0+Z3QpOwogCisJaWYg KHVubGlrZWx5KGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFubmVkKGNlLT5nZW1fY29udGV4dCkpKQor CQljYW5jZWxfYWN0aXZlKHJxLCBlbmdpbmUpOworCiAJLyoKIAkgKiBJZiB0aGlzIGlzIHBhcnQg b2YgYSB2aXJ0dWFsIGVuZ2luZSwgaXRzIG5leHQgcmVxdWVzdCBtYXkKIAkgKiBoYXZlIGJlZW4g YmxvY2tlZCB3YWl0aW5nIGZvciBhY2Nlc3MgdG8gdGhlIGFjdGl2ZSBjb250ZXh0LgpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYwppbmRleCAxOThjZjJmNzU0ZjQuLjE3MDMxMzBl ZjBlZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKQEAgLTcsNiArNyw3 IEBACiAjaW5jbHVkZSA8bGludXgvcHJpbWVfbnVtYmVycy5oPgogCiAjaW5jbHVkZSAiZ2VtL2k5 MTVfZ2VtX3BtLmgiCisjaW5jbHVkZSAiZ3QvaW50ZWxfZW5naW5lX2hlYXJ0YmVhdC5oIgogI2lu Y2x1ZGUgImd0L2ludGVsX3Jlc2V0LmgiCiAKICNpbmNsdWRlICJpOTE1X3NlbGZ0ZXN0LmgiCkBA IC05ODYsNiArOTg3LDI3NyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wcmVlbXB0KHZvaWQgKmFyZykK IAlnb3RvIGVycl9jbGllbnRfYjsKIH0KIAorc3RydWN0IGxpdmVfcHJlZW1wdF9jYW5jZWwgewor CXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1Y3QgcHJlZW1wdF9jbGllbnQg YSwgYjsKK307CisKK3N0YXRpYyBpbnQgX19jYW5jZWxfYWN0aXZlMChzdHJ1Y3QgbGl2ZV9wcmVl bXB0X2NhbmNlbCAqYXJnKQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCXN0cnVjdCBp Z3RfbGl2ZV90ZXN0IHQ7CisJaW50IGVycjsKKworCS8qIFByZWVtcHQgY2FuY2VsIG9mIEVMU1Aw ICovCisJR0VNX1RSQUNFKCIlcyglcylcbiIsIF9fZnVuY19fLCBhcmctPmVuZ2luZS0+bmFtZSk7 CisKKwlpZiAoaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgYXJnLT5lbmdpbmUtPmk5MTUsCisJCQkJ X19mdW5jX18sIGFyZy0+ZW5naW5lLT5uYW1lKSkKKwkJcmV0dXJuIC1FSU87CisKKwljbGVhcl9i aXQoQ09OVEVYVF9CQU5ORUQsICZhcmctPmEuY3R4LT5mbGFncyk7CisJcnEgPSBzcGlubmVyX2Ny ZWF0ZV9yZXF1ZXN0KCZhcmctPmEuc3BpbiwKKwkJCQkgICAgYXJnLT5hLmN0eCwgYXJnLT5lbmdp bmUsCisJCQkJICAgIE1JX0FSQl9DSEVDSyk7CisJaWYgKElTX0VSUihycSkpCisJCXJldHVybiBQ VFJfRVJSKHJxKTsKKworCWk5MTVfcmVxdWVzdF9nZXQocnEpOworCWk5MTVfcmVxdWVzdF9hZGQo cnEpOworCWlmICghaWd0X3dhaXRfZm9yX3NwaW5uZXIoJmFyZy0+YS5zcGluLCBycSkpIHsKKwkJ ZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQorCisJaTkxNV9nZW1fY29udGV4dF9zZXRfYmFu bmVkKGFyZy0+YS5jdHgpOworCWVyciA9IGludGVsX2VuZ2luZV9wdWxzZShhcmctPmVuZ2luZSk7 CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKKwlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQocnEsIDAs IEhaIC8gNSkgPCAwKSB7CisJCWVyciA9IC1FSU87CisJCWdvdG8gb3V0OworCX0KKworCWlmIChy cS0+ZmVuY2UuZXJyb3IgIT0gLUVJTykgeworCQlwcl9lcnIoIkNhbmNlbGxlZCBpbmZsaWdodDAg cmVxdWVzdCBkaWQgbm90IHJlcG9ydCAtRUlPXG4iKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290 byBvdXQ7CisJfQorCitvdXQ6CisJaTkxNV9yZXF1ZXN0X3B1dChycSk7CisJaWYgKGlndF9saXZl X3Rlc3RfZW5kKCZ0KSkKKwkJZXJyID0gLUVJTzsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMg aW50IF9fY2FuY2VsX2FjdGl2ZTEoc3RydWN0IGxpdmVfcHJlZW1wdF9jYW5jZWwgKmFyZykKK3sK KwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycVsyXSA9IHt9OworCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0 IHQ7CisJaW50IGVycjsKKworCS8qIFByZWVtcHQgY2FuY2VsIG9mIEVMU1AxICovCisJR0VNX1RS QUNFKCIlcyglcylcbiIsIF9fZnVuY19fLCBhcmctPmVuZ2luZS0+bmFtZSk7CisKKwlpZiAoaWd0 X2xpdmVfdGVzdF9iZWdpbigmdCwgYXJnLT5lbmdpbmUtPmk5MTUsCisJCQkJX19mdW5jX18sIGFy Zy0+ZW5naW5lLT5uYW1lKSkKKwkJcmV0dXJuIC1FSU87CisKKwljbGVhcl9iaXQoQ09OVEVYVF9C QU5ORUQsICZhcmctPmEuY3R4LT5mbGFncyk7CisJcnFbMF0gPSBzcGlubmVyX2NyZWF0ZV9yZXF1 ZXN0KCZhcmctPmEuc3BpbiwKKwkJCQkgICAgICAgYXJnLT5hLmN0eCwgYXJnLT5lbmdpbmUsCisJ CQkJICAgICAgIE1JX05PT1ApOyAvKiBubyBwcmVlbXB0aW9uICovCisJaWYgKElTX0VSUihycVsw XSkpCisJCXJldHVybiBQVFJfRVJSKHJxWzBdKTsKKworCWk5MTVfcmVxdWVzdF9nZXQocnFbMF0p OworCWk5MTVfcmVxdWVzdF9hZGQocnFbMF0pOworCWlmICghaWd0X3dhaXRfZm9yX3NwaW5uZXIo JmFyZy0+YS5zcGluLCBycVswXSkpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQor CisJY2xlYXJfYml0KENPTlRFWFRfQkFOTkVELCAmYXJnLT5iLmN0eC0+ZmxhZ3MpOworCXJxWzFd ID0gc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgmYXJnLT5iLnNwaW4sCisJCQkJICAgICAgIGFyZy0+ Yi5jdHgsIGFyZy0+ZW5naW5lLAorCQkJCSAgICAgICBNSV9BUkJfQ0hFQ0spOworCWlmIChJU19F UlIocnFbMV0pKSB7CisJCWVyciA9IFBUUl9FUlIocnFbMV0pOworCQlnb3RvIG91dDsKKwl9CisK KwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzFdKTsKKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1h X2ZlbmNlKHJxWzFdLCAmcnFbMF0tPmZlbmNlKTsKKwlpOTE1X3JlcXVlc3RfYWRkKHJxWzFdKTsK KwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Jhbm5lZChh cmctPmIuY3R4KTsKKwllcnIgPSBpbnRlbF9lbmdpbmVfcHVsc2UoYXJnLT5lbmdpbmUpOworCWlm IChlcnIpCisJCWdvdG8gb3V0OworCisJaWd0X3NwaW5uZXJfZW5kKCZhcmctPmEuc3Bpbik7CisJ aWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxWzFdLCAwLCBIWiAvIDUpIDwgMCkgeworCQllcnIgPSAt RUlPOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAocnFbMF0tPmZlbmNlLmVycm9yICE9IDApIHsK KwkJcHJfZXJyKCJOb3JtYWwgaW5mbGlnaHQwIHJlcXVlc3QgZGlkIG5vdCBjb21wbGV0ZVxuIik7 CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKworCWlmIChycVsxXS0+ZmVuY2Uu ZXJyb3IgIT0gLUVJTykgeworCQlwcl9lcnIoIkNhbmNlbGxlZCBpbmZsaWdodDEgcmVxdWVzdCBk aWQgbm90IHJlcG9ydCAtRUlPXG4iKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJ fQorCitvdXQ6CisJaTkxNV9yZXF1ZXN0X3B1dChycVsxXSk7CisJaTkxNV9yZXF1ZXN0X3B1dChy cVswXSk7CisJaWYgKGlndF9saXZlX3Rlc3RfZW5kKCZ0KSkKKwkJZXJyID0gLUVJTzsKKwlyZXR1 cm4gZXJyOworfQorCitzdGF0aWMgaW50IF9fY2FuY2VsX3F1ZXVlZChzdHJ1Y3QgbGl2ZV9wcmVl bXB0X2NhbmNlbCAqYXJnKQoreworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxWzNdID0ge307CisJ c3RydWN0IGlndF9saXZlX3Rlc3QgdDsKKwlpbnQgZXJyOworCisJLyogRnVsbCBFTFNQIGFuZCBv bmUgaW4gdGhlIHdpbmdzICovCisJR0VNX1RSQUNFKCIlcyglcylcbiIsIF9fZnVuY19fLCBhcmct PmVuZ2luZS0+bmFtZSk7CisKKwlpZiAoaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgYXJnLT5lbmdp bmUtPmk5MTUsCisJCQkJX19mdW5jX18sIGFyZy0+ZW5naW5lLT5uYW1lKSkKKwkJcmV0dXJuIC1F SU87CisKKwljbGVhcl9iaXQoQ09OVEVYVF9CQU5ORUQsICZhcmctPmEuY3R4LT5mbGFncyk7CisJ cnFbMF0gPSBzcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZhcmctPmEuc3BpbiwKKwkJCQkgICAgICAg YXJnLT5hLmN0eCwgYXJnLT5lbmdpbmUsCisJCQkJICAgICAgIE1JX0FSQl9DSEVDSyk7CisJaWYg KElTX0VSUihycVswXSkpCisJCXJldHVybiBQVFJfRVJSKHJxWzBdKTsKKworCWk5MTVfcmVxdWVz dF9nZXQocnFbMF0pOworCWk5MTVfcmVxdWVzdF9hZGQocnFbMF0pOworCWlmICghaWd0X3dhaXRf Zm9yX3NwaW5uZXIoJmFyZy0+YS5zcGluLCBycVswXSkpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290 byBvdXQ7CisJfQorCisJY2xlYXJfYml0KENPTlRFWFRfQkFOTkVELCAmYXJnLT5iLmN0eC0+Zmxh Z3MpOworCXJxWzFdID0gaWd0X3JlcXVlc3RfYWxsb2MoYXJnLT5iLmN0eCwgYXJnLT5lbmdpbmUp OworCWlmIChJU19FUlIocnFbMV0pKSB7CisJCWVyciA9IFBUUl9FUlIocnFbMV0pOworCQlnb3Rv IG91dDsKKwl9CisKKwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzFdKTsKKwllcnIgPSBpOTE1X3JlcXVl c3RfYXdhaXRfZG1hX2ZlbmNlKHJxWzFdLCAmcnFbMF0tPmZlbmNlKTsKKwlpOTE1X3JlcXVlc3Rf YWRkKHJxWzFdKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCXJxWzJdID0gc3Bpbm5lcl9j cmVhdGVfcmVxdWVzdCgmYXJnLT5iLnNwaW4sCisJCQkJICAgICAgIGFyZy0+YS5jdHgsIGFyZy0+ ZW5naW5lLAorCQkJCSAgICAgICBNSV9BUkJfQ0hFQ0spOworCWlmIChJU19FUlIocnFbMl0pKSB7 CisJCWVyciA9IFBUUl9FUlIocnFbMl0pOworCQlnb3RvIG91dDsKKwl9CisKKwlpOTE1X3JlcXVl c3RfZ2V0KHJxWzJdKTsKKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxWzJd LCAmcnFbMV0tPmZlbmNlKTsKKwlpOTE1X3JlcXVlc3RfYWRkKHJxWzJdKTsKKwlpZiAoZXJyKQor CQlnb3RvIG91dDsKKworCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Jhbm5lZChhcmctPmEuY3R4KTsK KwllcnIgPSBpbnRlbF9lbmdpbmVfcHVsc2UoYXJnLT5lbmdpbmUpOworCWlmIChlcnIpCisJCWdv dG8gb3V0OworCisJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxWzJdLCAwLCBIWiAvIDUpIDwgMCkg eworCQllcnIgPSAtRUlPOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAocnFbMF0tPmZlbmNlLmVy cm9yICE9IC1FSU8pIHsKKwkJcHJfZXJyKCJDYW5jZWxsZWQgaW5mbGlnaHQwIHJlcXVlc3QgZGlk IG5vdCByZXBvcnQgLUVJT1xuIik7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0K KworCWlmIChycVsxXS0+ZmVuY2UuZXJyb3IgIT0gMCkgeworCQlwcl9lcnIoIk5vcm1hbCBpbmZs aWdodDEgcmVxdWVzdCBkaWQgbm90IGNvbXBsZXRlXG4iKTsKKwkJZXJyID0gLUVJTlZBTDsKKwkJ Z290byBvdXQ7CisJfQorCisJaWYgKHJxWzJdLT5mZW5jZS5lcnJvciAhPSAtRUlPKSB7CisJCXBy X2VycigiQ2FuY2VsbGVkIHF1ZXVlZCByZXF1ZXN0IGRpZCBub3QgcmVwb3J0IC1FSU9cbiIpOwor CQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKK291dDoKKwlpOTE1X3JlcXVlc3Rf cHV0KHJxWzJdKTsKKwlpOTE1X3JlcXVlc3RfcHV0KHJxWzFdKTsKKwlpOTE1X3JlcXVlc3RfcHV0 KHJxWzBdKTsKKwlpZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQorCQllcnIgPSAtRUlPOworCXJl dHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0X2NhbmNlbCh2b2lkICphcmcp Cit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBhcmc7CisJc3RydWN0IGxpdmVf cHJlZW1wdF9jYW5jZWwgZGF0YTsKKwllbnVtIGludGVsX2VuZ2luZV9pZCBpZDsKKwlpbnQgZXJy ID0gLUVOT01FTTsKKworCS8qCisJICogVG8gY2FuY2VsIGFuIGluZmxpZ2h0IGNvbnRleHQsIHdl IG5lZWQgdG8gZmlyc3QgcmVtb3ZlIGl0IGZyb20gdGhlCisJICogR1BVLiBUaGF0IHNvdW5kcyBs aWtlIHByZWVtcHRpb24hIFBsdXMgYSBsaXR0bGUgYml0IG9mIGJvb2trZWVwaW5nLgorCSAqLwor CisJaWYgKCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkxNSkpCisJCXJldHVybiAwOwor CisJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmRhdGEuYSkpCisJCXJldHVybiAtRU5P TUVNOworCWlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZkYXRhLmIpKQorCQlnb3RvIGVy cl9jbGllbnRfYTsKKworCWZvcl9lYWNoX2VuZ2luZShkYXRhLmVuZ2luZSwgaTkxNSwgaWQpIHsK KwkJaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRpb24oZGF0YS5lbmdpbmUpKQorCQkJY29u dGludWU7CisKKwkJZXJyID0gX19jYW5jZWxfYWN0aXZlMCgmZGF0YSk7CisJCWlmIChlcnIpCisJ CQlnb3RvIGVycl93ZWRnZWQ7CisKKwkJZXJyID0gX19jYW5jZWxfYWN0aXZlMSgmZGF0YSk7CisJ CWlmIChlcnIpCisJCQlnb3RvIGVycl93ZWRnZWQ7CisKKwkJZXJyID0gX19jYW5jZWxfcXVldWVk KCZkYXRhKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX3dlZGdlZDsKKwl9CisKKwllcnIgPSAw OworZXJyX2NsaWVudF9iOgorCXByZWVtcHRfY2xpZW50X2ZpbmkoJmRhdGEuYik7CitlcnJfY2xp ZW50X2E6CisJcHJlZW1wdF9jbGllbnRfZmluaSgmZGF0YS5hKTsKKwlyZXR1cm4gZXJyOworCitl cnJfd2VkZ2VkOgorCUdFTV9UUkFDRV9EVU1QKCk7CisJaWd0X3NwaW5uZXJfZW5kKCZkYXRhLmIu c3Bpbik7CisJaWd0X3NwaW5uZXJfZW5kKCZkYXRhLmEuc3Bpbik7CisJaW50ZWxfZ3Rfc2V0X3dl ZGdlZCgmaTkxNS0+Z3QpOworCWdvdG8gZXJyX2NsaWVudF9iOworfQorCiBzdGF0aWMgaW50IGxp dmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGFyZzsKQEAgLTIyNzAsNiArMjU0Miw3IEBAIGludCBpbnRlbF9leGVj bGlzdHNfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiAJCVNV QlRFU1QobGl2ZV9wcmVlbXB0KSwKIAkJU1VCVEVTVChsaXZlX2xhdGVfcHJlZW1wdCksCiAJCVNV QlRFU1QobGl2ZV9ub3ByZWVtcHQpLAorCQlTVUJURVNUKGxpdmVfcHJlZW1wdF9jYW5jZWwpLAog CQlTVUJURVNUKGxpdmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KSwKIAkJU1VCVEVTVChsaXZlX3N1 cHByZXNzX3dhaXRfcHJlZW1wdCksCiAJCVNVQlRFU1QobGl2ZV9jaGFpbl9wcmVlbXB0KSwKLS0g CjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4