From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.0 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 553EDC433E2 for ; Wed, 15 Jul 2020 11:52:01 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id F03FF20658 for ; Wed, 15 Jul 2020 11:52:00 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F03FF20658 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=chris-wilson.co.uk Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 992076EACE; Wed, 15 Jul 2020 11:52:00 +0000 (UTC) Received: from fireflyinternet.com (unknown [77.68.26.236]) by gabe.freedesktop.org (Postfix) with ESMTPS id C98CD6EACB for ; Wed, 15 Jul 2020 11:51:58 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from build.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 21826133-1500050 for multiple; Wed, 15 Jul 2020 12:51:54 +0100 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Wed, 15 Jul 2020 12:51:07 +0100 Message-Id: <20200715115147.11866-26-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200715115147.11866-1-chris@chris-wilson.co.uk> References: <20200715115147.11866-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 26/66] drm/i915: Add an implementation for i915_gem_ww_ctx locking, v2. X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNv bT4KCmk5MTVfZ2VtX3d3X2N0eCBpcyB1c2VkIHRvIGxvY2sgYWxsIGdlbSBibydzIGZvciBwaW5u aW5nIGFuZCBtZW1vcnkKZXZpY3Rpb24uIFdlIGRvbid0IHVzZSBpdCB5ZXQsIGJ1dCBsZXRzIHN0 YXJ0IGFkZGluZyB0aGUgZGVmaW5pdGlvbgpmaXJzdC4KClRvIHVzZSBpdCwgd2UgaGF2ZSB0byBw YXNzIGEgbm9uLU5VTEwgd3cgdG8gZ2VtX29iamVjdF9sb2NrLCBhbmQgZG9uJ3QKdW5sb2NrIGRp cmVjdGx5LiBJdCBpcyBkb25lIGluIGk5MTVfZ2VtX3d3X2N0eF9maW5pLgoKQ2hhbmdlcyBzaW5j ZSB2MToKLSBDaGFuZ2Ugd3dfY3R4IGFuZCBvYmogb3JkZXIgaW4gbG9ja2luZyBmdW5jdGlvbnMg KEpvbmFzIExhaHRpbmVuKQoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0 ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9N YWtlZmlsZSAgICAgICAgICAgICAgICAgfCAgIDQgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nbG9iYWxzLmMgICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2xvYmFscy5oICAgICAgICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9tbS9pOTE1 X2FjcXVpcmVfY3R4LmMgICAgfCAxMzkgKysrKysrKysrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv bW0vaTkxNV9hY3F1aXJlX2N0eC5oICAgIHwgIDM0ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUv bW0vc3RfYWNxdWlyZV9jdHguYyAgICAgIHwgMjQyICsrKysrKysrKysrKysrKysrKwogLi4uL2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmggIHwgICAxICsKIDcgZmlsZXMg Y2hhbmdlZCwgNDIyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dw dS9kcm0vaTkxNS9tbS9pOTE1X2FjcXVpcmVfY3R4LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2dwdS9kcm0vaTkxNS9tbS9pOTE1X2FjcXVpcmVfY3R4LmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9tbS9zdF9hY3F1aXJlX2N0eC5jCgpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9NYWtl ZmlsZQppbmRleCBiZGE0YzBlNDA4ZjguLmEzYTRjOGE1NTVlYyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvTWFrZWZp bGUKQEAgLTEyNSw2ICsxMjUsMTAgQEAgZ3QteSArPSBcCiAJZ3QvZ2VuOV9yZW5kZXJzdGF0ZS5v CiBpOTE1LXkgKz0gJChndC15KQogCisjIE1lbW9yeSArIERNQSBtYW5hZ2VtZW50CitpOTE1LXkg Kz0gXAorCW1tL2k5MTVfYWNxdWlyZV9jdHgubworCiAjIEdFTSAoR3JhcGhpY3MgRXhlY3V0aW9u IE1hbmFnZW1lbnQpIGNvZGUKIGdlbS15ICs9IFwKIAlnZW0vaTkxNV9nZW1fYnVzeS5vIFwKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nbG9iYWxzLmMKaW5kZXggM2FhMjEzNjg0MjkzLi41MWVjNDJhMTQ2 OTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5jCkBAIC04Nyw2ICs4Nyw3IEBAIHN0 YXRpYyB2b2lkIF9faTkxNV9nbG9iYWxzX2NsZWFudXAodm9pZCkKIAogc3RhdGljIF9faW5pdGNv bnN0IGludCAoKiBjb25zdCBpbml0Zm5bXSkodm9pZCkgPSB7CiAJaTkxNV9nbG9iYWxfYWN0aXZl X2luaXQsCisJaTkxNV9nbG9iYWxfYWNxdWlyZV9pbml0LAogCWk5MTVfZ2xvYmFsX2J1ZGR5X2lu aXQsCiAJaTkxNV9nbG9iYWxfY29udGV4dF9pbml0LAogCWk5MTVfZ2xvYmFsX2dlbV9jb250ZXh0 X2luaXQsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2xvYmFscy5oCmluZGV4IGIyZjVjZDliOWIxYS4u MTEyMjdhYmYyNzY5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2Jh bHMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dsb2JhbHMuaApAQCAtMjcsNiAr MjcsNyBAQCB2b2lkIGk5MTVfZ2xvYmFsc19leGl0KHZvaWQpOwogCiAvKiBjb25zdHJ1Y3RvcnMg Ki8KIGludCBpOTE1X2dsb2JhbF9hY3RpdmVfaW5pdCh2b2lkKTsKK2ludCBpOTE1X2dsb2JhbF9h Y3F1aXJlX2luaXQodm9pZCk7CiBpbnQgaTkxNV9nbG9iYWxfYnVkZHlfaW5pdCh2b2lkKTsKIGlu dCBpOTE1X2dsb2JhbF9jb250ZXh0X2luaXQodm9pZCk7CiBpbnQgaTkxNV9nbG9iYWxfZ2VtX2Nv bnRleHRfaW5pdCh2b2lkKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L21tL2k5 MTVfYWNxdWlyZV9jdHguYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L21tL2k5MTVfYWNxdWlyZV9j dHguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmQxYzNiOTU4YzE1 ZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L21tL2k5MTVfYWNxdWly ZV9jdHguYwpAQCAtMCwwICsxLDEzOSBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1J VAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lu Y2x1ZGUgPGxpbnV4L2RtYS1yZXN2Lmg+CisKKyNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIKKyNp bmNsdWRlICJnZW0vaTkxNV9nZW1fb2JqZWN0LmgiCisKKyNpbmNsdWRlICJpOTE1X2FjcXVpcmVf Y3R4LmgiCisKK3N0YXRpYyBzdHJ1Y3QgaTkxNV9nbG9iYWxfYWNxdWlyZSB7CisJc3RydWN0IGk5 MTVfZ2xvYmFsIGJhc2U7CisJc3RydWN0IGttZW1fY2FjaGUgKnNsYWJfYWNxdWlyZXM7Cit9IGds b2JhbDsKKworc3RydWN0IGk5MTVfYWNxdWlyZSB7CisJc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iajsKKwlzdHJ1Y3QgaTkxNV9hY3F1aXJlICpuZXh0OworfTsKKworc3RhdGljIHN0cnVj dCBpOTE1X2FjcXVpcmUgKmk5MTVfYWNxdWlyZV9hbGxvYyh2b2lkKQoreworCXJldHVybiBrbWVt X2NhY2hlX2FsbG9jKGdsb2JhbC5zbGFiX2FjcXVpcmVzLCBHRlBfS0VSTkVMKTsKK30KKworc3Rh dGljIHZvaWQgaTkxNV9hY3F1aXJlX2ZyZWUoc3RydWN0IGk5MTVfYWNxdWlyZSAqbG5rKQorewor CWttZW1fY2FjaGVfZnJlZShnbG9iYWwuc2xhYl9hY3F1aXJlcywgbG5rKTsKK30KKwordm9pZCBp OTE1X2FjcXVpcmVfY3R4X2luaXQoc3RydWN0IGk5MTVfYWNxdWlyZV9jdHggKmN0eCkKK3sKKwl3 d19hY3F1aXJlX2luaXQoJmN0eC0+Y3R4LCAmcmVzZXJ2YXRpb25fd3dfY2xhc3MpOworCWN0eC0+ bG9ja2VkID0gTlVMTDsKK30KKworaW50IGk5MTVfYWNxdWlyZV9jdHhfbG9jayhzdHJ1Y3QgaTkx NV9hY3F1aXJlX2N0eCAqY3R4LAorCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQoreworCXN0cnVjdCBpOTE1X2FjcXVpcmUgKmxvY2ssICpsbms7CisJaW50IGVycjsKKworCWxv Y2sgPSBpOTE1X2FjcXVpcmVfYWxsb2MoKTsKKwlpZiAoIWxvY2spCisJCXJldHVybiAtRU5PTUVN OworCisJbG9jay0+b2JqID0gaTkxNV9nZW1fb2JqZWN0X2dldChvYmopOworCWxvY2stPm5leHQg PSBOVUxMOworCisJd2hpbGUgKChsbmsgPSBsb2NrKSkgeworCQlvYmogPSBsbmstPm9iajsKKwkJ bG9jayA9IGxuay0+bmV4dDsKKworCQllcnIgPSBkbWFfcmVzdl9sb2NrX2ludGVycnVwdGlibGUo b2JqLT5iYXNlLnJlc3YsICZjdHgtPmN0eCk7CisJCWlmIChlcnIgPT0gLUVERUFETEspIHsKKwkJ CXN0cnVjdCBpOTE1X2FjcXVpcmUgKm9sZDsKKworCQkJd2hpbGUgKChvbGQgPSBjdHgtPmxvY2tl ZCkpIHsKKwkJCQlpOTE1X2dlbV9vYmplY3RfdW5sb2NrKG9sZC0+b2JqKTsKKwkJCQljdHgtPmxv Y2tlZCA9IG9sZC0+bmV4dDsKKwkJCQlvbGQtPm5leHQgPSBsb2NrOworCQkJCWxvY2sgPSBvbGQ7 CisJCQl9CisKKwkJCWVyciA9IGRtYV9yZXN2X2xvY2tfc2xvd19pbnRlcnJ1cHRpYmxlKG9iai0+ YmFzZS5yZXN2LAorCQkJCQkJCSAgICAgICAmY3R4LT5jdHgpOworCQl9CisJCWlmICghZXJyKSB7 CisJCQlsbmstPm5leHQgPSBjdHgtPmxvY2tlZDsKKwkJCWN0eC0+bG9ja2VkID0gbG5rOworCQl9 IGVsc2UgeworCQkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCQkJaTkxNV9hY3F1aXJlX2Zy ZWUobG5rKTsKKwkJfQorCQlpZiAoZXJyID09IC1FQUxSRUFEWSkKKwkJCWVyciA9IDA7CisJCWlm IChlcnIpCisJCQlicmVhazsKKwl9CisKKwl3aGlsZSAoKGxuayA9IGxvY2spKSB7CisJCWxvY2sg PSBsbmstPm5leHQ7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQobG5rLT5vYmopOworCQlpOTE1X2Fj cXVpcmVfZnJlZShsbmspOworCX0KKworCXJldHVybiBlcnI7Cit9CisKK2ludCBpOTE1X2FjcXVp cmVfbW0oc3RydWN0IGk5MTVfYWNxdWlyZV9jdHggKmFjcXVpcmUpCit7CisJcmV0dXJuIDA7Cit9 CisKK3ZvaWQgaTkxNV9hY3F1aXJlX2N0eF9maW5pKHN0cnVjdCBpOTE1X2FjcXVpcmVfY3R4ICpj dHgpCit7CisJc3RydWN0IGk5MTVfYWNxdWlyZSAqbG5rOworCisJd2hpbGUgKChsbmsgPSBjdHgt PmxvY2tlZCkpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X3VubG9jayhsbmstPm9iaik7CisJCWk5MTVf Z2VtX29iamVjdF9wdXQobG5rLT5vYmopOworCisJCWN0eC0+bG9ja2VkID0gbG5rLT5uZXh0Owor CQlpOTE1X2FjcXVpcmVfZnJlZShsbmspOworCX0KKworCXd3X2FjcXVpcmVfZmluaSgmY3R4LT5j dHgpOworfQorCisjaWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0k5MTVfU0VMRlRFU1QpCisjaW5j bHVkZSAic3RfYWNxdWlyZV9jdHguYyIKKyNlbmRpZgorCitzdGF0aWMgdm9pZCBpOTE1X2dsb2Jh bF9hY3F1aXJlX3Nocmluayh2b2lkKQoreworCWttZW1fY2FjaGVfc2hyaW5rKGdsb2JhbC5zbGFi X2FjcXVpcmVzKTsKK30KKworc3RhdGljIHZvaWQgaTkxNV9nbG9iYWxfYWNxdWlyZV9leGl0KHZv aWQpCit7CisJa21lbV9jYWNoZV9kZXN0cm95KGdsb2JhbC5zbGFiX2FjcXVpcmVzKTsKK30KKwor c3RhdGljIHN0cnVjdCBpOTE1X2dsb2JhbF9hY3F1aXJlIGdsb2JhbCA9IHsgeworCS5zaHJpbmsg PSBpOTE1X2dsb2JhbF9hY3F1aXJlX3NocmluaywKKwkuZXhpdCA9IGk5MTVfZ2xvYmFsX2FjcXVp cmVfZXhpdCwKK30gfTsKKworaW50IF9faW5pdCBpOTE1X2dsb2JhbF9hY3F1aXJlX2luaXQodm9p ZCkKK3sKKwlnbG9iYWwuc2xhYl9hY3F1aXJlcyA9IEtNRU1fQ0FDSEUoaTkxNV9hY3F1aXJlLCAw KTsKKwlpZiAoIWdsb2JhbC5zbGFiX2FjcXVpcmVzKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWk5 MTVfZ2xvYmFsX3JlZ2lzdGVyKCZnbG9iYWwuYmFzZSk7CisJcmV0dXJuIDA7Cit9CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9tbS9pOTE1X2FjcXVpcmVfY3R4LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9tbS9pOTE1X2FjcXVpcmVfY3R4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwMDAwLi4yZDI2M2FjMTQ2MGQKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9tbS9pOTE1X2FjcXVpcmVfY3R4LmgKQEAgLTAsMCArMSwzNCBAQAor LyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLworLyoKKyAqIENvcHlyaWdodCDCqSAy MDIwIEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2lmbmRlZiBfX0k5MTVfQUNRVUlSRV9DVFhf SF9fCisjZGVmaW5lIF9fSTkxNV9BQ1FVSVJFX0NUWF9IX18KKworI2luY2x1ZGUgPGxpbnV4L2xp c3QuaD4KKyNpbmNsdWRlIDxsaW51eC93d19tdXRleC5oPgorCitzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdDsKK3N0cnVjdCBpOTE1X2FjcXVpcmU7CisKK3N0cnVjdCBpOTE1X2FjcXVpcmVfY3R4 IHsKKwlzdHJ1Y3Qgd3dfYWNxdWlyZV9jdHggY3R4OworCXN0cnVjdCBpOTE1X2FjcXVpcmUgKmxv Y2tlZDsKK307CisKK3ZvaWQgaTkxNV9hY3F1aXJlX2N0eF9pbml0KHN0cnVjdCBpOTE1X2FjcXVp cmVfY3R4ICphY3F1aXJlKTsKKworc3RhdGljIGlubGluZSB2b2lkIGk5MTVfYWNxdWlyZV9jdHhf ZG9uZShzdHJ1Y3QgaTkxNV9hY3F1aXJlX2N0eCAqYWNxdWlyZSkKK3sKKwl3d19hY3F1aXJlX2Rv bmUoJmFjcXVpcmUtPmN0eCk7Cit9CisKK3ZvaWQgaTkxNV9hY3F1aXJlX2N0eF9maW5pKHN0cnVj dCBpOTE1X2FjcXVpcmVfY3R4ICphY3F1aXJlKTsKKworaW50IF9fbXVzdF9jaGVjayBpOTE1X2Fj cXVpcmVfY3R4X2xvY2soc3RydWN0IGk5MTVfYWNxdWlyZV9jdHggKmFjcXVpcmUsCisJCQkJICAg ICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOworCitpbnQgaTkxNV9hY3F1aXJl X21tKHN0cnVjdCBpOTE1X2FjcXVpcmVfY3R4ICphY3F1aXJlKTsKKworI2VuZGlmIC8qIF9fSTkx NV9BQ1FVSVJFX0NUWF9IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L21t L3N0X2FjcXVpcmVfY3R4LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9tbS9zdF9hY3F1aXJlX2N0 eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNmU5NGJkYmIzMjY1 Ci0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvbW0vc3RfYWNxdWlyZV9j dHguYwpAQCAtMCwwICsxLDI0MiBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAor LyoKKyAqIENvcHlyaWdodCDCqSAyMDIwIEludGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1 ZGUgImk5MTVfZHJ2LmgiCisjaW5jbHVkZSAiaTkxNV9zZWxmdGVzdC5oIgorCisjaW5jbHVkZSAi c2VsZnRlc3RzL2k5MTVfcmFuZG9tLmgiCisjaW5jbHVkZSAic2VsZnRlc3RzL21vY2tfZ2VtX2Rl dmljZS5oIgorCitzdGF0aWMgaW50IGNoZWNrZWRfYWNxdWlyZV9sb2NrKHN0cnVjdCBpOTE1X2Fj cXVpcmVfY3R4ICphY3F1aXJlLAorCQkJCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos CisJCQkJY29uc3QgY2hhciAqbmFtZSkKK3sKKwlpbnQgZXJyOworCisJZXJyID0gaTkxNV9hY3F1 aXJlX2N0eF9sb2NrKGFjcXVpcmUsIG9iaik7CisJaWYgKGVycikgeworCQlwcl9lcnIoImk5MTVf YWNxdWlyZV9sb2NrKCVzKSBmYWlsZWQsIGVycjolZFxuIiwgbmFtZSwgZXJyKTsKKwkJcmV0dXJu IGVycjsKKwl9CisKKwlpZiAoIW11dGV4X2lzX2xvY2tlZCgmb2JqLT5iYXNlLnJlc3YtPmxvY2su YmFzZSkpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gbG9jayAlcyFcbiIsIG5hbWUpOworCQlyZXR1 cm4gLUVJTlZBTDsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBpZ3RfYWNxdWly ZV9sb2NrKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFy ZzsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqYSwgKmI7CisJc3RydWN0IGk5MTVfYWNx dWlyZV9jdHggYWNxdWlyZTsKKwlpbnQgZXJyOworCisJYSA9IGk5MTVfZ2VtX29iamVjdF9jcmVh dGVfaW50ZXJuYWwoaTkxNSwgUEFHRV9TSVpFKTsKKwlpZiAoSVNfRVJSKGEpKQorCQlyZXR1cm4g UFRSX0VSUihhKTsKKworCWIgPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2ludGVybmFsKGk5MTUs IFBBR0VfU0laRSk7CisJaWYgKElTX0VSUihiKSkgeworCQllcnIgPSBQVFJfRVJSKGIpOworCQln b3RvIG91dF9hOworCX0KKworCWk5MTVfYWNxdWlyZV9jdHhfaW5pdCgmYWNxdWlyZSk7CisKKwll cnIgPSBjaGVja2VkX2FjcXVpcmVfbG9jaygmYWNxdWlyZSwgYSwgIkEiKTsKKwlpZiAoZXJyKQor CQlnb3RvIG91dF9maW5pOworCisJZXJyID0gY2hlY2tlZF9hY3F1aXJlX2xvY2soJmFjcXVpcmUs IGIsICJCIik7CisJaWYgKGVycikKKwkJZ290byBvdXRfZmluaTsKKworCS8qIEFnYWluIGZvciBF QUxSRUFEWSAqLworCisJZXJyID0gY2hlY2tlZF9hY3F1aXJlX2xvY2soJmFjcXVpcmUsIGEsICJB Iik7CisJaWYgKGVycikKKwkJZ290byBvdXRfZmluaTsKKworCWVyciA9IGNoZWNrZWRfYWNxdWly ZV9sb2NrKCZhY3F1aXJlLCBiLCAiQiIpOworCWlmIChlcnIpCisJCWdvdG8gb3V0X2Zpbmk7CisK KwlpOTE1X2FjcXVpcmVfY3R4X2RvbmUoJmFjcXVpcmUpOworCisJaWYgKCFtdXRleF9pc19sb2Nr ZWQoJmEtPmJhc2UucmVzdi0+bG9jay5iYXNlKSkgeworCQlwcl9lcnIoIkZhaWxlZCB0byBsb2Nr IEEsIGFmdGVyIGk5MTVfYWNxdWlyZV9kb25lXG4iKTsKKwkJZXJyID0gLUVJTlZBTDsKKwl9CisJ aWYgKCFtdXRleF9pc19sb2NrZWQoJmItPmJhc2UucmVzdi0+bG9jay5iYXNlKSkgeworCQlwcl9l cnIoIkZhaWxlZCB0byBsb2NrIEIsIGFmdGVyIGk5MTVfYWNxdWlyZV9kb25lXG4iKTsKKwkJZXJy ID0gLUVJTlZBTDsKKwl9CisKK291dF9maW5pOgorCWk5MTVfYWNxdWlyZV9jdHhfZmluaSgmYWNx dWlyZSk7CisKKwlpZiAobXV0ZXhfaXNfbG9ja2VkKCZhLT5iYXNlLnJlc3YtPmxvY2suYmFzZSkp IHsKKwkJcHJfZXJyKCJBIGlzIHN0aWxsIGxvY2tlZCFcbiIpOworCQllcnIgPSAtRUlOVkFMOwor CX0KKwlpZiAobXV0ZXhfaXNfbG9ja2VkKCZiLT5iYXNlLnJlc3YtPmxvY2suYmFzZSkpIHsKKwkJ cHJfZXJyKCJCIGlzIHN0aWxsIGxvY2tlZCFcbiIpOworCQllcnIgPSAtRUlOVkFMOworCX0KKwor CWk5MTVfZ2VtX29iamVjdF9wdXQoYik7CitvdXRfYToKKwlpOTE1X2dlbV9vYmplY3RfcHV0KGEp OworCXJldHVybiBlcnI7Cit9CisKK3N0cnVjdCBkZWFkbG9jayB7CisJc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9ials2NF07Cit9OworCitzdGF0aWMgaW50IF9faWd0X2FjcXVpcmVfZGVh ZGxvY2sodm9pZCAqYXJnKQoreworCXN0cnVjdCBkZWFkbG9jayAqZGwgPSBhcmc7CisJY29uc3Qg dW5zaWduZWQgaW50IHRvdGFsID0gQVJSQVlfU0laRShkbC0+b2JqKTsKKwlJOTE1X1JORF9TVEFU RShwcm5nKTsKKwl1bnNpZ25lZCBpbnQgKm9yZGVyOworCWludCBuLCBjb3VudCwgZXJyID0gMDsK KworCW9yZGVyID0gaTkxNV9yYW5kb21fb3JkZXIodG90YWwsICZwcm5nKTsKKwlpZiAoIW9yZGVy KQorCQlyZXR1cm4gLUVOT01FTTsKKworCXdoaWxlICgha3RocmVhZF9zaG91bGRfc3RvcCgpKSB7 CisJCXN0cnVjdCBpOTE1X2FjcXVpcmVfY3R4IGFjcXVpcmU7CisKKwkJaTkxNV9yYW5kb21fcmVv cmRlcihvcmRlciwgdG90YWwsICZwcm5nKTsKKwkJY291bnQgPSBpOTE1X3ByYW5kb21fdTMyX21h eF9zdGF0ZSh0b3RhbCwgJnBybmcpOworCisJCWk5MTVfYWNxdWlyZV9jdHhfaW5pdCgmYWNxdWly ZSk7CisKKwkJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKKwkJCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBkbC0+b2JqW29yZGVyW25dXTsKKworCQkJZXJyID0gY2hlY2tl ZF9hY3F1aXJlX2xvY2soJmFjcXVpcmUsIG9iaiwgImRsIik7CisJCQlpZiAoZXJyKSB7CisJCQkJ aTkxNV9hY3F1aXJlX2N0eF9maW5pKCZhY3F1aXJlKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJ fQorCisJCWk5MTVfYWNxdWlyZV9jdHhfZG9uZSgmYWNxdWlyZSk7CisKKyNpZiBJU19FTkFCTEVE KENPTkZJR19MT0NLREVQKQorCQlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykgeworCQkJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IGRsLT5vYmpbb3JkZXJbbl1dOworCisJCQlp ZiAoIWxvY2tkZXBfaXNfaGVsZCgmb2JqLT5iYXNlLnJlc3YtPmxvY2suYmFzZSkpIHsKKwkJCQlw cl9lcnIoImxvY2sgbm90IHRha2VuIVxuIik7CisJCQkJaTkxNV9hY3F1aXJlX2N0eF9maW5pKCZh Y3F1aXJlKTsKKwkJCQllcnIgPSAtRUlOVkFMOworCQkJCWdvdG8gb3V0OworCQkJfQorCQl9Cisj ZW5kaWYKKworCQlpOTE1X2FjcXVpcmVfY3R4X2ZpbmkoJmFjcXVpcmUpOworCisjaWYgSVNfRU5B QkxFRChDT05GSUdfTE9DS0RFUCkKKwkJZm9yIChuID0gMDsgbiA8IGNvdW50OyBuKyspIHsKKwkJ CXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSBkbC0+b2JqW29yZGVyW25dXTsKKwor CQkJaWYgKGxvY2tkZXBfaXNfaGVsZCgmb2JqLT5iYXNlLnJlc3YtPmxvY2suYmFzZSkpIHsKKwkJ CQlwcl9lcnIoImxvY2sgc3RpbGwgaGVsZCBhZnRlciBmaW5pIVxuIik7CisJCQkJZXJyID0gLUVJ TlZBTDsKKwkJCQlnb3RvIG91dDsKKwkJCX0KKwkJfQorI2VuZGlmCisJfQorCitvdXQ6CisJa2Zy ZWUob3JkZXIpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgaWd0X2FjcXVpcmVfZGVh ZGxvY2sodm9pZCAqYXJnKQoreworCXVuc2lnbmVkIGludCBuY3B1cyA9IG51bV9vbmxpbmVfY3B1 cygpOworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOworCXN0cnVjdCB0YXNr X3N0cnVjdCAqKnRocmVhZHM7CisJc3RydWN0IGRlYWRsb2NrIGRsOworCWludCByZXQgPSAwLCBu OworCisJdGhyZWFkcyA9IGtjYWxsb2MobmNwdXMsIHNpemVvZigqdGhyZWFkcyksIEdGUF9LRVJO RUwpOworCWlmICghdGhyZWFkcykKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlmb3IgKG4gPSAwOyBu IDwgQVJSQVlfU0laRShkbC5vYmopOyBuICs9IDIpIHsKKwkJZGwub2JqW25dID0gaTkxNV9nZW1f b2JqZWN0X2NyZWF0ZV9pbnRlcm5hbChpOTE1LCBQQUdFX1NJWkUpOworCQlpZiAoSVNfRVJSKGRs Lm9ialtuXSkpIHsKKwkJCXJldCA9IFBUUl9FUlIoZGwub2JqW25dKTsKKwkJCWdvdG8gb3V0X29i ajsKKwkJfQorCisJCS8qIFJlcGVhdCB0aGUgb2JqZWN0cyBmb3IgLUVBTFJFQURZICovCisJCWRs Lm9ialtuICsgMV0gPSBpOTE1X2dlbV9vYmplY3RfZ2V0KGRsLm9ialtuXSk7CisJfQorCisJZm9y IChuID0gMDsgbiA8IG5jcHVzOyBuKyspIHsKKwkJdGhyZWFkc1tuXSA9IGt0aHJlYWRfcnVuKF9f aWd0X2FjcXVpcmVfZGVhZGxvY2ssCisJCQkJCSAmZGwsICJpZ3QvJWQiLCBuKTsKKwkJaWYgKElT X0VSUih0aHJlYWRzW25dKSkgeworCQkJcmV0ID0gUFRSX0VSUih0aHJlYWRzW25dKTsKKwkJCW5j cHVzID0gbjsKKwkJCWJyZWFrOworCQl9CisKKwkJZ2V0X3Rhc2tfc3RydWN0KHRocmVhZHNbbl0p OworCX0KKworCXlpZWxkKCk7IC8qIHN0YXJ0IGFsbCB0aHJlYWRzIGJlZm9yZSB3ZSBiZWdpbiAq LworCW1zbGVlcChqaWZmaWVzX3RvX21zZWNzKGk5MTVfc2VsZnRlc3QudGltZW91dF9qaWZmaWVz KSk7CisKKwlmb3IgKG4gPSAwOyBuIDwgbmNwdXM7IG4rKykgeworCQlpbnQgZXJyOworCisJCWVy ciA9IGt0aHJlYWRfc3RvcCh0aHJlYWRzW25dKTsKKwkJaWYgKGVyciA8IDAgJiYgIXJldCkKKwkJ CXJldCA9IGVycjsKKworCQlwdXRfdGFza19zdHJ1Y3QodGhyZWFkc1tuXSk7CisJfQorCitvdXRf b2JqOgorCWZvciAobiA9IDA7IG4gPCBBUlJBWV9TSVpFKGRsLm9iaik7IG4rKykgeworCQlpZiAo SVNfRVJSKGRsLm9ialtuXSkpCisJCQlicmVhazsKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChkbC5v Ympbbl0pOworCX0KKwlrZnJlZSh0aHJlYWRzKTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaTkx NV9hY3F1aXJlX21vY2tfc2VsZnRlc3RzKHZvaWQpCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKKwkJU1VCVEVTVChpZ3RfYWNxdWlyZV9sb2NrKSwKKwkJ U1VCVEVTVChpZ3RfYWNxdWlyZV9kZWFkbG9jayksCisJfTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNTsKKwlpbnQgZXJyID0gMDsKKworCWk5MTUgPSBtb2NrX2dlbV9kZXZpY2UoKTsK KwlpZiAoIWk5MTUpCisJCXJldHVybiAtRU5PTUVNOworCisJZXJyID0gaTkxNV9zdWJ0ZXN0cyh0 ZXN0cywgaTkxNSk7CisJZHJtX2Rldl9wdXQoJmk5MTUtPmRybSk7CisKKwlyZXR1cm4gZXJyOwor fQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19z ZWxmdGVzdHMuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2Vs ZnRlc3RzLmgKaW5kZXggM2RiMzRkM2VlYTU4Li5jYjZmOTQ2MzMzNTYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRlc3RzLmgKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMuaApAQCAt MjYsNiArMjYsNyBAQCBzZWxmdGVzdChlbmdpbmUsIGludGVsX2VuZ2luZV9jc19tb2NrX3NlbGZ0 ZXN0cykKIHNlbGZ0ZXN0KHRpbWVsaW5lcywgaW50ZWxfdGltZWxpbmVfbW9ja19zZWxmdGVzdHMp CiBzZWxmdGVzdChyZXF1ZXN0cywgaTkxNV9yZXF1ZXN0X21vY2tfc2VsZnRlc3RzKQogc2VsZnRl c3Qob2JqZWN0cywgaTkxNV9nZW1fb2JqZWN0X21vY2tfc2VsZnRlc3RzKQorc2VsZnRlc3QoYWNx dWlyZSwgaTkxNV9hY3F1aXJlX21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3QocGh5cywgaTkxNV9n ZW1fcGh5c19tb2NrX3NlbGZ0ZXN0cykKIHNlbGZ0ZXN0KGRtYWJ1ZiwgaTkxNV9nZW1fZG1hYnVm X21vY2tfc2VsZnRlc3RzKQogc2VsZnRlc3Qodm1hLCBpOTE1X3ZtYV9tb2NrX3NlbGZ0ZXN0cykK LS0gCjIuMjAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==