From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH v2] drm/i915/execlists: Cancel banned contexts on schedule-out Date: Fri, 11 Oct 2019 12:16:01 +0100 Message-ID: <20191011111601.26850-1-chris@chris-wilson.co.uk> References: <20191010071434.31195-7-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 A9F966E0B8 for ; Fri, 11 Oct 2019 11:16:49 +0000 (UTC) In-Reply-To: <20191010071434.31195-7-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 T24gc2NoZWR1bGUtb3V0IChDUyBjb21wbGV0aW9uKSBvZiBhIGJhbm5lZCBjb250ZXh0LCBzY3J1 YiB0aGUgY29udGV4dAppbWFnZSBzbyB0aGF0IHdlIGRvIG5vdCByZXBsYXkgdGhlIGFjdGl2ZSBw YXlsb2FkLiBUaGUgaW50ZW50IGlzIHRoYXQgd2UKc2tpcCBiYW5uZWQgcGF5bG9hZHMgb24gcmVx dWVzdCBzdWJtaXNzaW9uIHNvIHRoYXQgdGhlIHRpbWVsaW5lCmFkdmFuY2VtZW50IGNvbnRpbnVl cyBvbiBpbiB0aGUgYmFja2dyb3VuZC4gSG93ZXZlciwgaWYgd2UgYXJlIHJldHVybmluZwp0byBh IHByZWVtcHRlZCByZXF1ZXN0LCBpOTE1X3JlcXVlc3Rfc2tpcCgpIGlzIGluZWZmZWN0aXZlIGFu ZCBpbnN0ZWFkIHdlCm5lZWQgdG8gcGF0Y2ggdXAgdGhlIGNvbnRleHQgaW1hZ2Ugc28gdGhhdCBp dCBjb250aW51ZXMgZnJvbSB0aGUgc3RhcnQKb2YgdGhlIG5leHQgcmVxdWVzdC4KCnYyOiBGaXh1 cCBjYW5jZWxsYXRpb24gc28gdGhhdCB3ZSBvbmx5IHNjcnViIHRoZSBwYXlsb2FkIG9mIHRoZSBh Y3RpdmUKcmVxdWVzdCBhbmQgZG8gbm90IHNob3J0LWNpcmN1aXQgdGhlIGJyZWFkY3J1bWJzICh3 aGljaCBtaWdodCBjYXVzZQpvdGhlciBjb250ZXh0cyB0byBleGVjdXRlIG91dCBvZiBvcmRlciku CgpTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4K Q2M6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbHJjLmMgICAgfCAgOTEgKysrKysrLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9scmMuYyB8IDI3MyArKysrKysrKysrKysrKysrKysr KysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2xyYy5jCmluZGV4IDA5ZmM1ZWNmZGQwOS4uODA5 YTVkZDk3YzE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMu YworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9scmMuYwpAQCAtMjM0LDYgKzIz NCw5IEBAIHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh1MzIgKnJlZ19zdGF0 ZSwKIAkJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCQkg ICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLAogCQkJCSAgICAgYm9vbCBjbG9zZSk7 CitzdGF0aWMgdm9pZAorX19leGVjbGlzdHNfdXBkYXRlX3JlZ19zdGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsCisJCQkgICAgIGNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSk7CiAKIHN0YXRpYyB2b2lkIF9fY29udGV4dF9waW5fYWNxdWlyZShzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UpCiB7CkBAIC0yNTYsNiArMjU5LDI5IEBAIHN0YXRpYyB2b2lkIG1hcmtf ZWlvKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRl KHJxKTsKIH0KIAorc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKmFjdGl2ZV9yZXF1ZXN0KHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQoreworCWNvbnN0IHN0cnVjdCBpbnRlbF9jb250ZXh0ICog Y29uc3QgY2UgPSBycS0+aHdfY29udGV4dDsKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICphY3RpdmUg PSBOVUxMOworCXN0cnVjdCBsaXN0X2hlYWQgKmxpc3Q7CisKKwlpZiAoIWk5MTVfcmVxdWVzdF9p c19hY3RpdmUocnEpKSAvKiB1bndvdW5kLCBidXQgaW5jb21wbGV0ZSEgKi8KKwkJcmV0dXJuIHJx OworCisJbGlzdCA9ICZpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+cmVxdWVzdHM7 CisJbGlzdF9mb3JfZWFjaF9lbnRyeV9mcm9tX3JldmVyc2UocnEsIGxpc3QsIGxpbmspIHsKKwkJ aWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEpKQorCQkJYnJlYWs7CisKKwkJaWYgKHJxLT5o d19jb250ZXh0ICE9IGNlKQorCQkJYnJlYWs7CisKKwkJYWN0aXZlID0gcnE7CisJfQorCisJcmV0 dXJuIGFjdGl2ZTsKK30KKwogc3RhdGljIGlubGluZSB1MzIgaW50ZWxfaHdzX3ByZWVtcHRfYWRk cmVzcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CiAJcmV0dXJuIChpOTE1X2dn dHRfb2Zmc2V0KGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKSArCkBAIC05NzcsNiArMTAwMyw0NSBA QCBzdGF0aWMgdm9pZCBraWNrX3NpYmxpbmdzKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCXRhc2tsZXRfc2NoZWR1bGUoJnZlLT5iYXNlLmV4ZWNs aXN0cy50YXNrbGV0KTsKIH0KIAorc3RhdGljIHZvaWQgY2FuY2VsX2FjdGl2ZShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwKKwkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQorewor CXN0cnVjdCBpbnRlbF9jb250ZXh0ICogY29uc3QgY2UgPSBycS0+aHdfY29udGV4dDsKKwl1MzIg KnJlZ3MgPSBjZS0+bHJjX3JlZ19zdGF0ZTsKKworCS8qCisJICogVGhlIGV4ZWN1dGluZyBjb250 ZXh0IGhhcyBiZWVuIGNhbmNlbGxlZC4gRml4dXAgdGhlIGNvbnRleHQgc28gdGhhdAorCSAqIGl0 IGNvbnRpbnVlcyBvbiBmcm9tIHRoZSBicmVhZGNydW1iIGFmdGVyIHRoZSBiYXRjaCBhbmQgd2ls bCBiZQorCSAqIG1hcmtlZCBhcyBpbmNvbXBsZXRlIFstRUlPXSB1cG9uIHNpZ25hbGluZy4gV2Ug cHJlc2VydmUgdGhlCisJICogYnJlYWRjcnVtYnMgYW5kIHNlbWFwaG9yZXMgb2YgdGhlIHN1YnNl cXVlbnQgcmVxdWVzdHMgc28gdGhhdAorCSAqIGludGVyLXRpbWVsaW5lIGRlcGVuZGVuY2llcyBy ZW1haW4gY29ycmVjdGx5IG9yZGVyZWQuCisJICovCisJR0VNX1RSQUNFKCIlcyglcyk6IHsgcnE9 JWxseDolbGxkIH1cbiIsCisJCSAgX19mdW5jX18sIGVuZ2luZS0+bmFtZSwgcnEtPmZlbmNlLmNv bnRleHQsIHJxLT5mZW5jZS5zZXFubyk7CisKKwlfX2NvbnRleHRfcGluX2FjcXVpcmUoY2UpOwor CisJLyogT24gcmVzdWJtaXNzaW9uIG9mIHRoZSBhY3RpdmUgcmVxdWVzdCwgaXQncyBwYXlsb2Fk IGJlIHNjcnViYmVkICovCisJcnEgPSBhY3RpdmVfcmVxdWVzdChycSk7CisJaWYgKHJxKQorCQlj ZS0+cmluZy0+aGVhZCA9IGludGVsX3Jpbmdfd3JhcChjZS0+cmluZywgcnEtPmhlYWQpOworCWVs c2UKKwkJY2UtPnJpbmctPmhlYWQgPSBjZS0+cmluZy0+dGFpbDsKKworCS8qIFNjcnViIHRoZSBj b250ZXh0IGltYWdlIHRvIHByZXZlbnQgcmVwbGF5aW5nIHRoZSBwcmV2aW91cyBiYXRjaCAqLwor CW1lbWNweShyZWdzLCAvKiBza2lwIHJlc3RvcmluZyB0aGUgdmFuaWxsYSBQUEhXU1AgKi8KKwkg ICAgICAgZW5naW5lLT5waW5uZWRfZGVmYXVsdF9zdGF0ZSArIExSQ19TVEFURV9QTiAqIFBBR0Vf U0laRSwKKwkgICAgICAgZW5naW5lLT5jb250ZXh0X3NpemUgLSBQQUdFX1NJWkUpOworCisJZXhl Y2xpc3RzX2luaXRfcmVnX3N0YXRlKHJlZ3MsIGNlLCBlbmdpbmUsIGNlLT5yaW5nLCBmYWxzZSk7 CisJX19leGVjbGlzdHNfdXBkYXRlX3JlZ19zdGF0ZShjZSwgZW5naW5lKTsKKworCS8qIFdlJ3Zl IHN3aXRjaGVkIGF3YXksIHNvIHRoaXMgc2hvdWxkIGJlIGEgbm8tb3AsIGJ1dCBpbnRlbnQgbWF0 dGVycyAqLworCWNlLT5scmNfZGVzYyB8PSBDVFhfREVTQ19GT1JDRV9SRVNUT1JFOworCisJX19j b250ZXh0X3Bpbl9yZWxlYXNlKGNlKTsKK30KKwogc3RhdGljIGlubGluZSB2b2lkCiBfX2V4ZWNs aXN0c19zY2hlZHVsZV9vdXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkgc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqIGNvbnN0IGVuZ2luZSkKQEAgLTk4Nyw2ICsxMDUyLDkgQEAgX19leGVj bGlzdHNfc2NoZWR1bGVfb3V0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCWV4ZWNsaXN0c19j b250ZXh0X3N0YXR1c19jaGFuZ2UocnEsIElOVEVMX0NPTlRFWFRfU0NIRURVTEVfT1VUKTsKIAlp bnRlbF9ndF9wbV9wdXQoZW5naW5lLT5ndCk7CiAKKwlpZiAodW5saWtlbHkoaTkxNV9nZW1fY29u dGV4dF9pc19iYW5uZWQoY2UtPmdlbV9jb250ZXh0KSkpCisJCWNhbmNlbF9hY3RpdmUocnEsIGVu Z2luZSk7CisKIAkvKgogCSAqIElmIHRoaXMgaXMgcGFydCBvZiBhIHZpcnR1YWwgZW5naW5lLCBp dHMgbmV4dCByZXF1ZXN0IG1heQogCSAqIGhhdmUgYmVlbiBibG9ja2VkIHdhaXRpbmcgZm9yIGFj Y2VzcyB0byB0aGUgYWN0aXZlIGNvbnRleHQuCkBAIC0yNzc2LDI5ICsyODQ0LDYgQEAgc3RhdGlj IHZvaWQgcmVzZXRfY3NiX3BvaW50ZXJzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK IAkJCSAgICAgICAmZXhlY2xpc3RzLT5jc2Jfc3RhdHVzW3Jlc2V0X3ZhbHVlXSk7CiB9CiAKLXN0 YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICphY3RpdmVfcmVxdWVzdChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKLXsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqIGNvbnN0IGNlID0gcnEt Pmh3X2NvbnRleHQ7Ci0Jc3RydWN0IGk5MTVfcmVxdWVzdCAqYWN0aXZlID0gTlVMTDsKLQlzdHJ1 Y3QgbGlzdF9oZWFkICpsaXN0OwotCi0JaWYgKCFpOTE1X3JlcXVlc3RfaXNfYWN0aXZlKHJxKSkg LyogdW53b3VuZCwgYnV0IGluY29tcGxldGUhICovCi0JCXJldHVybiBycTsKLQotCWxpc3QgPSAm aTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPnJlcXVlc3RzOwotCWxpc3RfZm9yX2Vh Y2hfZW50cnlfZnJvbV9yZXZlcnNlKHJxLCBsaXN0LCBsaW5rKSB7Ci0JCWlmIChpOTE1X3JlcXVl c3RfY29tcGxldGVkKHJxKSkKLQkJCWJyZWFrOwotCi0JCWlmIChycS0+aHdfY29udGV4dCAhPSBj ZSkKLQkJCWJyZWFrOwotCi0JCWFjdGl2ZSA9IHJxOwotCX0KLQotCXJldHVybiBhY3RpdmU7Ci19 Ci0KIHN0YXRpYyB2b2lkIF9fZXhlY2xpc3RzX3Jlc2V0X3JlZ19zdGF0ZShjb25zdCBzdHJ1Y3Qg aW50ZWxfY29udGV4dCAqY2UsCiAJCQkJCWNvbnN0IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSkKIHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xy Yy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfbHJjLmMKaW5kZXggMTI3NmRh MDU5ZGM2Li45ZDg0MmUzMjdhYTEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L3NlbGZ0ZXN0X2xyYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2xy Yy5jCkBAIC03LDYgKzcsNyBAQAogI2luY2x1ZGUgPGxpbnV4L3ByaW1lX251bWJlcnMuaD4KIAog I2luY2x1ZGUgImdlbS9pOTE1X2dlbV9wbS5oIgorI2luY2x1ZGUgImd0L2ludGVsX2VuZ2luZV9o ZWFydGJlYXQuaCIKICNpbmNsdWRlICJndC9pbnRlbF9yZXNldC5oIgogCiAjaW5jbHVkZSAiaTkx NV9zZWxmdGVzdC5oIgpAQCAtMTAxNiw2ICsxMDE3LDI3NyBAQCBzdGF0aWMgaW50IGxpdmVfbm9w cmVlbXB0KHZvaWQgKmFyZykKIAlnb3RvIGVycl9jbGllbnRfYjsKIH0KIAorc3RydWN0IGxpdmVf cHJlZW1wdF9jYW5jZWwgeworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKKwlzdHJ1 Y3QgcHJlZW1wdF9jbGllbnQgYSwgYjsKK307CisKK3N0YXRpYyBpbnQgX19jYW5jZWxfYWN0aXZl MChzdHJ1Y3QgbGl2ZV9wcmVlbXB0X2NhbmNlbCAqYXJnKQoreworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxOworCXN0cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7CisJaW50IGVycjsKKworCS8qIFByZWVt cHQgY2FuY2VsIG9mIEVMU1AwICovCisJR0VNX1RSQUNFKCIlcyglcylcbiIsIF9fZnVuY19fLCBh cmctPmVuZ2luZS0+bmFtZSk7CisKKwlpZiAoaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgYXJnLT5l bmdpbmUtPmk5MTUsCisJCQkJX19mdW5jX18sIGFyZy0+ZW5naW5lLT5uYW1lKSkKKwkJcmV0dXJu IC1FSU87CisKKwljbGVhcl9iaXQoQ09OVEVYVF9CQU5ORUQsICZhcmctPmEuY3R4LT5mbGFncyk7 CisJcnEgPSBzcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZhcmctPmEuc3BpbiwKKwkJCQkgICAgYXJn LT5hLmN0eCwgYXJnLT5lbmdpbmUsCisJCQkJICAgIE1JX0FSQl9DSEVDSyk7CisJaWYgKElTX0VS UihycSkpCisJCXJldHVybiBQVFJfRVJSKHJxKTsKKworCWk5MTVfcmVxdWVzdF9nZXQocnEpOwor CWk5MTVfcmVxdWVzdF9hZGQocnEpOworCWlmICghaWd0X3dhaXRfZm9yX3NwaW5uZXIoJmFyZy0+ YS5zcGluLCBycSkpIHsKKwkJZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQorCisJaTkxNV9n ZW1fY29udGV4dF9zZXRfYmFubmVkKGFyZy0+YS5jdHgpOworCWVyciA9IGludGVsX2VuZ2luZV9w dWxzZShhcmctPmVuZ2luZSk7CisJaWYgKGVycikKKwkJZ290byBvdXQ7CisKKwlpZiAoaTkxNV9y ZXF1ZXN0X3dhaXQocnEsIDAsIEhaIC8gNSkgPCAwKSB7CisJCWVyciA9IC1FSU87CisJCWdvdG8g b3V0OworCX0KKworCWlmIChycS0+ZmVuY2UuZXJyb3IgIT0gLUVJTykgeworCQlwcl9lcnIoIkNh bmNlbGxlZCBpbmZsaWdodDAgcmVxdWVzdCBkaWQgbm90IHJlcG9ydCAtRUlPXG4iKTsKKwkJZXJy ID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCitvdXQ6CisJaTkxNV9yZXF1ZXN0X3B1dChy cSk7CisJaWYgKGlndF9saXZlX3Rlc3RfZW5kKCZ0KSkKKwkJZXJyID0gLUVJTzsKKwlyZXR1cm4g ZXJyOworfQorCitzdGF0aWMgaW50IF9fY2FuY2VsX2FjdGl2ZTEoc3RydWN0IGxpdmVfcHJlZW1w dF9jYW5jZWwgKmFyZykKK3sKKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycVsyXSA9IHt9OworCXN0 cnVjdCBpZ3RfbGl2ZV90ZXN0IHQ7CisJaW50IGVycjsKKworCS8qIFByZWVtcHQgY2FuY2VsIG9m IEVMU1AxICovCisJR0VNX1RSQUNFKCIlcyglcylcbiIsIF9fZnVuY19fLCBhcmctPmVuZ2luZS0+ bmFtZSk7CisKKwlpZiAoaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgYXJnLT5lbmdpbmUtPmk5MTUs CisJCQkJX19mdW5jX18sIGFyZy0+ZW5naW5lLT5uYW1lKSkKKwkJcmV0dXJuIC1FSU87CisKKwlj bGVhcl9iaXQoQ09OVEVYVF9CQU5ORUQsICZhcmctPmEuY3R4LT5mbGFncyk7CisJcnFbMF0gPSBz cGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZhcmctPmEuc3BpbiwKKwkJCQkgICAgICAgYXJnLT5hLmN0 eCwgYXJnLT5lbmdpbmUsCisJCQkJICAgICAgIE1JX05PT1ApOyAvKiBubyBwcmVlbXB0aW9uICov CisJaWYgKElTX0VSUihycVswXSkpCisJCXJldHVybiBQVFJfRVJSKHJxWzBdKTsKKworCWk5MTVf cmVxdWVzdF9nZXQocnFbMF0pOworCWk5MTVfcmVxdWVzdF9hZGQocnFbMF0pOworCWlmICghaWd0 X3dhaXRfZm9yX3NwaW5uZXIoJmFyZy0+YS5zcGluLCBycVswXSkpIHsKKwkJZXJyID0gLUVJTzsK KwkJZ290byBvdXQ7CisJfQorCisJY2xlYXJfYml0KENPTlRFWFRfQkFOTkVELCAmYXJnLT5iLmN0 eC0+ZmxhZ3MpOworCXJxWzFdID0gc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgmYXJnLT5iLnNwaW4s CisJCQkJICAgICAgIGFyZy0+Yi5jdHgsIGFyZy0+ZW5naW5lLAorCQkJCSAgICAgICBNSV9BUkJf Q0hFQ0spOworCWlmIChJU19FUlIocnFbMV0pKSB7CisJCWVyciA9IFBUUl9FUlIocnFbMV0pOwor CQlnb3RvIG91dDsKKwl9CisKKwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzFdKTsKKwllcnIgPSBpOTE1 X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxWzFdLCAmcnFbMF0tPmZlbmNlKTsKKwlpOTE1X3Jl cXVlc3RfYWRkKHJxWzFdKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWk5MTVfZ2VtX2Nv bnRleHRfc2V0X2Jhbm5lZChhcmctPmIuY3R4KTsKKwllcnIgPSBpbnRlbF9lbmdpbmVfcHVsc2Uo YXJnLT5lbmdpbmUpOworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJaWd0X3NwaW5uZXJfZW5k KCZhcmctPmEuc3Bpbik7CisJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxWzFdLCAwLCBIWiAvIDUp IDwgMCkgeworCQllcnIgPSAtRUlPOworCQlnb3RvIG91dDsKKwl9CisKKwlpZiAocnFbMF0tPmZl bmNlLmVycm9yICE9IDApIHsKKwkJcHJfZXJyKCJOb3JtYWwgaW5mbGlnaHQwIHJlcXVlc3QgZGlk IG5vdCBjb21wbGV0ZVxuIik7CisJCWVyciA9IC1FSU5WQUw7CisJCWdvdG8gb3V0OworCX0KKwor CWlmIChycVsxXS0+ZmVuY2UuZXJyb3IgIT0gLUVJTykgeworCQlwcl9lcnIoIkNhbmNlbGxlZCBp bmZsaWdodDEgcmVxdWVzdCBkaWQgbm90IHJlcG9ydCAtRUlPXG4iKTsKKwkJZXJyID0gLUVJTlZB TDsKKwkJZ290byBvdXQ7CisJfQorCitvdXQ6CisJaTkxNV9yZXF1ZXN0X3B1dChycVsxXSk7CisJ aTkxNV9yZXF1ZXN0X3B1dChycVswXSk7CisJaWYgKGlndF9saXZlX3Rlc3RfZW5kKCZ0KSkKKwkJ ZXJyID0gLUVJTzsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IF9fY2FuY2VsX3F1ZXVl ZChzdHJ1Y3QgbGl2ZV9wcmVlbXB0X2NhbmNlbCAqYXJnKQoreworCXN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxWzNdID0ge307CisJc3RydWN0IGlndF9saXZlX3Rlc3QgdDsKKwlpbnQgZXJyOworCisJ LyogRnVsbCBFTFNQIGFuZCBvbmUgaW4gdGhlIHdpbmdzICovCisJR0VNX1RSQUNFKCIlcyglcylc biIsIF9fZnVuY19fLCBhcmctPmVuZ2luZS0+bmFtZSk7CisKKwlpZiAoaWd0X2xpdmVfdGVzdF9i ZWdpbigmdCwgYXJnLT5lbmdpbmUtPmk5MTUsCisJCQkJX19mdW5jX18sIGFyZy0+ZW5naW5lLT5u YW1lKSkKKwkJcmV0dXJuIC1FSU87CisKKwljbGVhcl9iaXQoQ09OVEVYVF9CQU5ORUQsICZhcmct PmEuY3R4LT5mbGFncyk7CisJcnFbMF0gPSBzcGlubmVyX2NyZWF0ZV9yZXF1ZXN0KCZhcmctPmEu c3BpbiwKKwkJCQkgICAgICAgYXJnLT5hLmN0eCwgYXJnLT5lbmdpbmUsCisJCQkJICAgICAgIE1J X0FSQl9DSEVDSyk7CisJaWYgKElTX0VSUihycVswXSkpCisJCXJldHVybiBQVFJfRVJSKHJxWzBd KTsKKworCWk5MTVfcmVxdWVzdF9nZXQocnFbMF0pOworCWk5MTVfcmVxdWVzdF9hZGQocnFbMF0p OworCWlmICghaWd0X3dhaXRfZm9yX3NwaW5uZXIoJmFyZy0+YS5zcGluLCBycVswXSkpIHsKKwkJ ZXJyID0gLUVJTzsKKwkJZ290byBvdXQ7CisJfQorCisJY2xlYXJfYml0KENPTlRFWFRfQkFOTkVE LCAmYXJnLT5iLmN0eC0+ZmxhZ3MpOworCXJxWzFdID0gaWd0X3JlcXVlc3RfYWxsb2MoYXJnLT5i LmN0eCwgYXJnLT5lbmdpbmUpOworCWlmIChJU19FUlIocnFbMV0pKSB7CisJCWVyciA9IFBUUl9F UlIocnFbMV0pOworCQlnb3RvIG91dDsKKwl9CisKKwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzFdKTsK KwllcnIgPSBpOTE1X3JlcXVlc3RfYXdhaXRfZG1hX2ZlbmNlKHJxWzFdLCAmcnFbMF0tPmZlbmNl KTsKKwlpOTE1X3JlcXVlc3RfYWRkKHJxWzFdKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKwor CXJxWzJdID0gc3Bpbm5lcl9jcmVhdGVfcmVxdWVzdCgmYXJnLT5iLnNwaW4sCisJCQkJICAgICAg IGFyZy0+YS5jdHgsIGFyZy0+ZW5naW5lLAorCQkJCSAgICAgICBNSV9BUkJfQ0hFQ0spOworCWlm IChJU19FUlIocnFbMl0pKSB7CisJCWVyciA9IFBUUl9FUlIocnFbMl0pOworCQlnb3RvIG91dDsK Kwl9CisKKwlpOTE1X3JlcXVlc3RfZ2V0KHJxWzJdKTsKKwllcnIgPSBpOTE1X3JlcXVlc3RfYXdh aXRfZG1hX2ZlbmNlKHJxWzJdLCAmcnFbMV0tPmZlbmNlKTsKKwlpOTE1X3JlcXVlc3RfYWRkKHJx WzJdKTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWk5MTVfZ2VtX2NvbnRleHRfc2V0X2Jh bm5lZChhcmctPmEuY3R4KTsKKwllcnIgPSBpbnRlbF9lbmdpbmVfcHVsc2UoYXJnLT5lbmdpbmUp OworCWlmIChlcnIpCisJCWdvdG8gb3V0OworCisJaWYgKGk5MTVfcmVxdWVzdF93YWl0KHJxWzJd LCAwLCBIWiAvIDUpIDwgMCkgeworCQllcnIgPSAtRUlPOworCQlnb3RvIG91dDsKKwl9CisKKwlp ZiAocnFbMF0tPmZlbmNlLmVycm9yICE9IC1FSU8pIHsKKwkJcHJfZXJyKCJDYW5jZWxsZWQgaW5m bGlnaHQwIHJlcXVlc3QgZGlkIG5vdCByZXBvcnQgLUVJT1xuIik7CisJCWVyciA9IC1FSU5WQUw7 CisJCWdvdG8gb3V0OworCX0KKworCWlmIChycVsxXS0+ZmVuY2UuZXJyb3IgIT0gMCkgeworCQlw cl9lcnIoIk5vcm1hbCBpbmZsaWdodDEgcmVxdWVzdCBkaWQgbm90IGNvbXBsZXRlXG4iKTsKKwkJ ZXJyID0gLUVJTlZBTDsKKwkJZ290byBvdXQ7CisJfQorCisJaWYgKHJxWzJdLT5mZW5jZS5lcnJv ciAhPSAtRUlPKSB7CisJCXByX2VycigiQ2FuY2VsbGVkIHF1ZXVlZCByZXF1ZXN0IGRpZCBub3Qg cmVwb3J0IC1FSU9cbiIpOworCQllcnIgPSAtRUlOVkFMOworCQlnb3RvIG91dDsKKwl9CisKK291 dDoKKwlpOTE1X3JlcXVlc3RfcHV0KHJxWzJdKTsKKwlpOTE1X3JlcXVlc3RfcHV0KHJxWzFdKTsK KwlpOTE1X3JlcXVlc3RfcHV0KHJxWzBdKTsKKwlpZiAoaWd0X2xpdmVfdGVzdF9lbmQoJnQpKQor CQllcnIgPSAtRUlPOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgbGl2ZV9wcmVlbXB0 X2NhbmNlbCh2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBh cmc7CisJc3RydWN0IGxpdmVfcHJlZW1wdF9jYW5jZWwgZGF0YTsKKwllbnVtIGludGVsX2VuZ2lu ZV9pZCBpZDsKKwlpbnQgZXJyID0gLUVOT01FTTsKKworCS8qCisJICogVG8gY2FuY2VsIGFuIGlu ZmxpZ2h0IGNvbnRleHQsIHdlIG5lZWQgdG8gZmlyc3QgcmVtb3ZlIGl0IGZyb20gdGhlCisJICog R1BVLiBUaGF0IHNvdW5kcyBsaWtlIHByZWVtcHRpb24hIFBsdXMgYSBsaXR0bGUgYml0IG9mIGJv b2trZWVwaW5nLgorCSAqLworCisJaWYgKCFIQVNfTE9HSUNBTF9SSU5HX1BSRUVNUFRJT04oaTkx NSkpCisJCXJldHVybiAwOworCisJaWYgKHByZWVtcHRfY2xpZW50X2luaXQoaTkxNSwgJmRhdGEu YSkpCisJCXJldHVybiAtRU5PTUVNOworCWlmIChwcmVlbXB0X2NsaWVudF9pbml0KGk5MTUsICZk YXRhLmIpKQorCQlnb3RvIGVycl9jbGllbnRfYTsKKworCWZvcl9lYWNoX2VuZ2luZShkYXRhLmVu Z2luZSwgaTkxNSwgaWQpIHsKKwkJaWYgKCFpbnRlbF9lbmdpbmVfaGFzX3ByZWVtcHRpb24oZGF0 YS5lbmdpbmUpKQorCQkJY29udGludWU7CisKKwkJZXJyID0gX19jYW5jZWxfYWN0aXZlMCgmZGF0 YSk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl93ZWRnZWQ7CisKKwkJZXJyID0gX19jYW5jZWxf YWN0aXZlMSgmZGF0YSk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl93ZWRnZWQ7CisKKwkJZXJy ID0gX19jYW5jZWxfcXVldWVkKCZkYXRhKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gZXJyX3dlZGdl ZDsKKwl9CisKKwllcnIgPSAwOworZXJyX2NsaWVudF9iOgorCXByZWVtcHRfY2xpZW50X2Zpbmko JmRhdGEuYik7CitlcnJfY2xpZW50X2E6CisJcHJlZW1wdF9jbGllbnRfZmluaSgmZGF0YS5hKTsK KwlyZXR1cm4gZXJyOworCitlcnJfd2VkZ2VkOgorCUdFTV9UUkFDRV9EVU1QKCk7CisJaWd0X3Nw aW5uZXJfZW5kKCZkYXRhLmIuc3Bpbik7CisJaWd0X3NwaW5uZXJfZW5kKCZkYXRhLmEuc3Bpbik7 CisJaW50ZWxfZ3Rfc2V0X3dlZGdlZCgmaTkxNS0+Z3QpOworCWdvdG8gZXJyX2NsaWVudF9iOwor fQorCiBzdGF0aWMgaW50IGxpdmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KHZvaWQgKmFyZykKIHsK IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKQEAgLTI0NTIsNiArMjcyNCw3 IEBAIGludCBpbnRlbF9leGVjbGlzdHNfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUpCiAJCVNVQlRFU1QobGl2ZV9wcmVlbXB0KSwKIAkJU1VCVEVTVChsaXZlX2xh dGVfcHJlZW1wdCksCiAJCVNVQlRFU1QobGl2ZV9ub3ByZWVtcHQpLAorCQlTVUJURVNUKGxpdmVf cHJlZW1wdF9jYW5jZWwpLAogCQlTVUJURVNUKGxpdmVfc3VwcHJlc3Nfc2VsZl9wcmVlbXB0KSwK IAkJU1VCVEVTVChsaXZlX3N1cHByZXNzX3dhaXRfcHJlZW1wdCksCiAJCVNVQlRFU1QobGl2ZV9j aGFpbl9wcmVlbXB0KSwKLS0gCjIuMjMuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4