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=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham 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 3AFF2C433E9 for ; Tue, 5 Jan 2021 15:46:18 +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 E69BF22BF3 for ; Tue, 5 Jan 2021 15:46:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E69BF22BF3 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=linux.intel.com 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 6BB176E14C; Tue, 5 Jan 2021 15:45:51 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id AE6766E147 for ; Tue, 5 Jan 2021 15:45:40 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Tue, 5 Jan 2021 16:35:13 +0100 Message-Id: <20210105153558.134272-20-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.30.0.rc1 In-Reply-To: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> References: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v6 19/64] drm/i915: Make ring submission compatible with obj->mm.lock removal, 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: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Dan Carpenter Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" V2UgbWFwIHRoZSBpbml0aWFsIGNvbnRleHQgZHVyaW5nIGZpcnN0IHBpbi4KClRoaXMgYWxsb3dz IHVzIHRvIHJlbW92ZSBwaW5fbWFwIGZyb20gc3RhdGUgYWxsb2NhdGlvbiwgd2hpY2ggc2F2ZXMK dXMgYSBmZXcgcmV0cnkgbG9vcHMuIFdlIHdvbid0IG5lZWQgdGhpcyB1bnRpbCBmaXJzdCBwaW4g YW55d2F5LgoKaW50ZWxfcmluZ19zdWJtaXNzaW9uX3NldHVwKCkgaXMgYWxzbyByZXdvcmtlZCBz bGlnaHRseSB0byBkbyBhbGwKcGlubmluZyBpbiBhIHNpbmdsZSB3dyBsb29wLgoKQ2hhbmdlcyBz aW5jZSB2MToKLSBIYW5kbGUgLUVERUFETEsgYmFja29mZiBpbiBpbnRlbF9yaW5nX3N1Ym1pc3Np b25fc2V0dXAoKSBiZXR0ZXIuCi0gSGFuZGxlIHNtYXRjaCBlcnJvcnMgcmVwb3J0ZWQgYnkgRGFu IGFuZCB0ZXN0Ym90LgoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KUmVwb3J0ZWQtYnk6IGtlcm5lbCB0ZXN0IHJvYm90 IDxsa3BAaW50ZWwuY29tPgpSZXBvcnRlZC1ieTogRGFuIENhcnBlbnRlciA8ZGFuLmNhcnBlbnRl ckBvcmFjbGUuY29tPgpSZXZpZXdlZC1ieTogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxs c3Ryb21AbGludXguaW50ZWwuY29tPgotLS0KIC4uLi9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmlu Z19zdWJtaXNzaW9uLmMgICB8IDE4NCArKysrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCAxMTggaW5zZXJ0aW9ucygrKSwgNjYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19zdWJtaXNzaW9uLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYwppbmRleCA0ZWE3NDFmNDg4YTguLmI0 NGY3ZTY0Yzk4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmlu Z19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19z dWJtaXNzaW9uLmMKQEAgLTUxMSw2ICs1MTEsMjYgQEAgc3RhdGljIHZvaWQgcmluZ19jb250ZXh0 X2Rlc3Ryb3koc3RydWN0IGtyZWYgKnJlZikKIAlpbnRlbF9jb250ZXh0X2ZyZWUoY2UpOwogfQog CitzdGF0aWMgaW50IHJpbmdfY29udGV4dF9pbml0X2RlZmF1bHRfc3RhdGUoc3RydWN0IGludGVs X2NvbnRleHQgKmNlLAorCQkJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dykKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gY2UtPnN0YXRlLT5vYmo7CisJdm9pZCAq dmFkZHI7CisKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBf V0IpOworCWlmIChJU19FUlIodmFkZHIpKQorCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CisKKwlz aG1lbV9yZWFkKGNlLT5lbmdpbmUtPmRlZmF1bHRfc3RhdGUsIDAsCisJCSAgIHZhZGRyLCBjZS0+ ZW5naW5lLT5jb250ZXh0X3NpemUpOworCisJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChvYmop OworCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbWFwKG9iaik7CisKKwlfX3NldF9iaXQoQ09O VEVYVF9WQUxJRF9CSVQsICZjZS0+ZmxhZ3MpOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50 IHJpbmdfY29udGV4dF9wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCQlzdHJ1 Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKIAkJCQl2b2lkICoqdW51c2VkKQpAQCAtNTE4LDYgKzUz OCwxMyBAQCBzdGF0aWMgaW50IHJpbmdfY29udGV4dF9wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKIAlpbnQgZXJyID0gMDsK IAorCWlmIChjZS0+ZW5naW5lLT5kZWZhdWx0X3N0YXRlICYmCisJICAgICF0ZXN0X2JpdChDT05U RVhUX1ZBTElEX0JJVCwgJmNlLT5mbGFncykpIHsKKwkJZXJyID0gcmluZ19jb250ZXh0X2luaXRf ZGVmYXVsdF9zdGF0ZShjZSwgd3cpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisK IAl2bSA9IHZtX2FsaWFzKGNlLT52bSk7CiAJaWYgKHZtKQogCQllcnIgPSBnZW42X3BwZ3R0X3Bp bihpOTE1X3ZtX3RvX3BwZ3R0KCh2bSkpLCB3dyk7CkBAIC01NzMsMjIgKzYwMCw2IEBAIGFsbG9j X2NvbnRleHRfdm1hKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfSVZZ QlJJREdFKGk5MTUpKQogCQlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShvYmos IEk5MTVfQ0FDSEVfTDNfTExDKTsKIAotCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpIHsKLQkJ dm9pZCAqdmFkZHI7Ci0KLQkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5 MTVfTUFQX1dCKTsKLQkJaWYgKElTX0VSUih2YWRkcikpIHsKLQkJCWVyciA9IFBUUl9FUlIodmFk ZHIpOwotCQkJZ290byBlcnJfb2JqOwotCQl9Ci0KLQkJc2htZW1fcmVhZChlbmdpbmUtPmRlZmF1 bHRfc3RhdGUsIDAsCi0JCQkgICB2YWRkciwgZW5naW5lLT5jb250ZXh0X3NpemUpOwotCi0JCWk5 MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAob2JqKTsKLQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9tYXAob2JqKTsKLQl9Ci0KIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZlbmdpbmUt Pmd0LT5nZ3R0LT52bSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEpKSB7CiAJCWVyciA9IFBUUl9F UlIodm1hKTsKQEAgLTYyMCw4ICs2MzEsNiBAQCBzdGF0aWMgaW50IHJpbmdfY29udGV4dF9hbGxv YyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCQlyZXR1cm4gUFRSX0VSUih2bWEpOwogCiAJ CWNlLT5zdGF0ZSA9IHZtYTsKLQkJaWYgKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkKLQkJCV9fc2V0 X2JpdChDT05URVhUX1ZBTElEX0JJVCwgJmNlLT5mbGFncyk7CiAJfQogCiAJcmV0dXJuIDA7CkBA IC0xMjIwLDM3ICsxMjI5LDE1IEBAIHN0YXRpYyBpbnQgZ2VuN19jdHhfc3dpdGNoX2JiX3NldHVw KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUsCiAJcmV0dXJuIGdlbjdfc2V0 dXBfY2xlYXJfZ3ByX2JiKGVuZ2luZSwgdm1hKTsKIH0KIAotc3RhdGljIGludCBnZW43X2N0eF9z d2l0Y2hfYmJfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMgaW50 IGdlbjdfY3R4X3N3aXRjaF9iYl9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK KwkJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJCQkgICBzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwotCWludCBzaXplOwogCWludCBlcnI7CiAKLQlzaXplID0gZ2VuN19jdHhf c3dpdGNoX2JiX3NldHVwKGVuZ2luZSwgTlVMTCAvKiBwcm9iZSBzaXplICovKTsKLQlpZiAoc2l6 ZSA8PSAwKQotCQlyZXR1cm4gc2l6ZTsKLQotCXNpemUgPSBBTElHTihzaXplLCBQQUdFX1NJWkUp OwotCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoZW5naW5lLT5pOTE1LCBz aXplKTsKLQlpZiAoSVNfRVJSKG9iaikpCi0JCXJldHVybiBQVFJfRVJSKG9iaik7Ci0KLQl2bWEg PSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIGVuZ2luZS0+Z3QtPnZtLCBOVUxMKTsKLQlpZiAoSVNf RVJSKHZtYSkpIHsKLQkJZXJyID0gUFRSX0VSUih2bWEpOwotCQlnb3RvIGVycl9vYmo7Ci0JfQot Ci0Jdm1hLT5wcml2YXRlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsgLyogZHVtbXkg cmVzaWR1YWxzICovCi0JaWYgKElTX0VSUih2bWEtPnByaXZhdGUpKSB7Ci0JCWVyciA9IFBUUl9F UlIodm1hLT5wcml2YXRlKTsKLQkJZ290byBlcnJfb2JqOwotCX0KLQotCWVyciA9IGk5MTVfdm1h X3Bpbih2bWEsIDAsIDAsIFBJTl9VU0VSIHwgUElOX0hJR0gpOworCWVyciA9IGk5MTVfdm1hX3Bp bl93dyh2bWEsIHd3LCAwLCAwLCBQSU5fVVNFUiB8IFBJTl9ISUdIKTsKIAlpZiAoZXJyKQotCQln b3RvIGVycl9wcml2YXRlOworCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gaTkxNV92bWFfc3luYyh2 bWEpOwogCWlmIChlcnIpCkBAIC0xMjY1LDE3ICsxMjUyLDUzIEBAIHN0YXRpYyBpbnQgZ2VuN19j dHhfc3dpdGNoX2JiX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBlcnJf dW5waW46CiAJaTkxNV92bWFfdW5waW4odm1hKTsKLWVycl9wcml2YXRlOgotCWludGVsX2NvbnRl eHRfcHV0KHZtYS0+cHJpdmF0ZSk7Ci1lcnJfb2JqOgotCWk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpnZW43X2N0eF92 bWEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJaW50IHNpemUsIGVycjsK KworCWlmICghSVNfSEFTV0VMTChlbmdpbmUtPmk5MTUpIHx8IGVuZ2luZS0+Y2xhc3MgIT0gUkVO REVSX0NMQVNTKQorCQlyZXR1cm4gMDsKKworCWVyciA9IGdlbjdfY3R4X3N3aXRjaF9iYl9zZXR1 cChlbmdpbmUsIE5VTEwgLyogcHJvYmUgc2l6ZSAqLyk7CisJaWYgKGVyciA8IDApCisJCXJldHVy biBFUlJfUFRSKGVycik7CisJaWYgKCFlcnIpCisJCXJldHVybiBOVUxMOworCisJc2l6ZSA9IEFM SUdOKGVyciwgUEFHRV9TSVpFKTsKKworCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50 ZXJuYWwoZW5naW5lLT5pOTE1LCBzaXplKTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiBF UlJfQ0FTVChvYmopOworCisJdm1hID0gaTkxNV92bWFfaW5zdGFuY2Uob2JqLCBlbmdpbmUtPmd0 LT52bSwgTlVMTCk7CisJaWYgKElTX0VSUih2bWEpKSB7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKKwkJcmV0dXJuIEVSUl9DQVNUKHZtYSk7CisJfQorCisJdm1hLT5wcml2YXRlID0gaW50 ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsgLyogZHVtbXkgcmVzaWR1YWxzICovCisJaWYgKElT X0VSUih2bWEtPnByaXZhdGUpKSB7CisJCWVyciA9IFBUUl9FUlIodm1hLT5wcml2YXRlKTsKKwkJ dm1hLT5wcml2YXRlID0gTlVMTDsKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOworCQlyZXR1 cm4gRVJSX1BUUihlcnIpOworCX0KKworCXJldHVybiB2bWE7Cit9CisKIGludCBpbnRlbF9yaW5n X3N1Ym1pc3Npb25fc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogeworCXN0 cnVjdCBpOTE1X2dlbV93d19jdHggd3c7CiAJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGlu ZTsKIAlzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZzsKKwlzdHJ1Y3QgaTkxNV92bWEgKmdlbjdfd2Ff dm1hOwogCWludCBlcnI7CiAKIAlzZXR1cF9jb21tb24oZW5naW5lKTsKQEAgLTEzMDYsNDMgKzEz MjksNzIgQEAgaW50IGludGVsX3Jpbmdfc3VibWlzc2lvbl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCiAJfQogCUdFTV9CVUdfT04odGltZWxpbmUtPmhhc19pbml0aWFsX2Jy ZWFkY3J1bWIpOwogCi0JZXJyID0gaW50ZWxfdGltZWxpbmVfcGluKHRpbWVsaW5lLCBOVUxMKTsK LQlpZiAoZXJyKQotCQlnb3RvIGVycl90aW1lbGluZTsKLQogCXJpbmcgPSBpbnRlbF9lbmdpbmVf Y3JlYXRlX3JpbmcoZW5naW5lLCBTWl8xNkspOwogCWlmIChJU19FUlIocmluZykpIHsKIAkJZXJy ID0gUFRSX0VSUihyaW5nKTsKLQkJZ290byBlcnJfdGltZWxpbmVfdW5waW47CisJCWdvdG8gZXJy X3RpbWVsaW5lOwogCX0KIAotCWVyciA9IGludGVsX3JpbmdfcGluKHJpbmcsIE5VTEwpOwotCWlm IChlcnIpCi0JCWdvdG8gZXJyX3Jpbmc7Ci0KIAlHRU1fQlVHX09OKGVuZ2luZS0+bGVnYWN5LnJp bmcpOwogCWVuZ2luZS0+bGVnYWN5LnJpbmcgPSByaW5nOwogCWVuZ2luZS0+bGVnYWN5LnRpbWVs aW5lID0gdGltZWxpbmU7CiAKLQlHRU1fQlVHX09OKHRpbWVsaW5lLT5od3NwX2dndHQgIT0gZW5n aW5lLT5zdGF0dXNfcGFnZS52bWEpOworCWdlbjdfd2Ffdm1hID0gZ2VuN19jdHhfdm1hKGVuZ2lu ZSk7CisJaWYgKElTX0VSUihnZW43X3dhX3ZtYSkpIHsKKwkJZXJyID0gUFRSX0VSUihnZW43X3dh X3ZtYSk7CisJCWdvdG8gZXJyX3Jpbmc7CisJfQogCi0JaWYgKElTX0hBU1dFTEwoZW5naW5lLT5p OTE1KSAmJiBlbmdpbmUtPmNsYXNzID09IFJFTkRFUl9DTEFTUykgewotCQllcnIgPSBnZW43X2N0 eF9zd2l0Y2hfYmJfaW5pdChlbmdpbmUpOworCWk5MTVfZ2VtX3d3X2N0eF9pbml0KCZ3dywgZmFs c2UpOworCityZXRyeToKKwllcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9jayh0aW1lbGluZS0+aHdz cF9nZ3R0LT5vYmosICZ3dyk7CisJaWYgKCFlcnIgJiYgZ2VuN193YV92bWEpCisJCWVyciA9IGk5 MTVfZ2VtX29iamVjdF9sb2NrKGdlbjdfd2Ffdm1hLT5vYmosICZ3dyk7CisJaWYgKCFlcnIgJiYg ZW5naW5lLT5sZWdhY3kucmluZy0+dm1hLT5vYmopCisJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9s b2NrKGVuZ2luZS0+bGVnYWN5LnJpbmctPnZtYS0+b2JqLCAmd3cpOworCWlmICghZXJyKQorCQll cnIgPSBpbnRlbF90aW1lbGluZV9waW4odGltZWxpbmUsICZ3dyk7CisJaWYgKCFlcnIpIHsKKwkJ ZXJyID0gaW50ZWxfcmluZ19waW4ocmluZywgJnd3KTsKIAkJaWYgKGVycikKLQkJCWdvdG8gZXJy X3JpbmdfdW5waW47CisJCQlpbnRlbF90aW1lbGluZV91bnBpbih0aW1lbGluZSk7CiAJfQorCWlm IChlcnIpCisJCWdvdG8gb3V0OworCisJR0VNX0JVR19PTih0aW1lbGluZS0+aHdzcF9nZ3R0ICE9 IGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKKworCWlmIChnZW43X3dhX3ZtYSkgeworCQllcnIg PSBnZW43X2N0eF9zd2l0Y2hfYmJfaW5pdChlbmdpbmUsICZ3dywgZ2VuN193YV92bWEpOworCQlp ZiAoZXJyKSB7CisJCQlpbnRlbF9yaW5nX3VucGluKHJpbmcpOworCQkJaW50ZWxfdGltZWxpbmVf dW5waW4odGltZWxpbmUpOworCQl9CisJfQorCitvdXQ6CisJaWYgKGVyciA9PSAtRURFQURMSykg eworCQllcnIgPSBpOTE1X2dlbV93d19jdHhfYmFja29mZigmd3cpOworCQlpZiAoIWVycikKKwkJ CWdvdG8gcmV0cnk7CisJfQorCWk5MTVfZ2VtX3d3X2N0eF9maW5pKCZ3dyk7CisJaWYgKGVycikK KwkJZ290byBlcnJfZ2VuN19wdXQ7CiAKIAkvKiBGaW5hbGx5LCB0YWtlIG93bmVyc2hpcCBhbmQg cmVzcG9uc2liaWxpdHkgZm9yIGNsZWFudXAhICovCiAJZW5naW5lLT5yZWxlYXNlID0gcmluZ19y ZWxlYXNlOwogCiAJcmV0dXJuIDA7CiAKLWVycl9yaW5nX3VucGluOgotCWludGVsX3JpbmdfdW5w aW4ocmluZyk7CitlcnJfZ2VuN19wdXQ6CisJaWYgKGdlbjdfd2Ffdm1hKSB7CisJCWludGVsX2Nv bnRleHRfcHV0KGdlbjdfd2Ffdm1hLT5wcml2YXRlKTsKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChn ZW43X3dhX3ZtYS0+b2JqKTsKKwl9CiBlcnJfcmluZzoKIAlpbnRlbF9yaW5nX3B1dChyaW5nKTsK LWVycl90aW1lbGluZV91bnBpbjoKLQlpbnRlbF90aW1lbGluZV91bnBpbih0aW1lbGluZSk7CiBl cnJfdGltZWxpbmU6CiAJaW50ZWxfdGltZWxpbmVfcHV0KHRpbWVsaW5lKTsKIGVycjoKLS0gCjIu MzAuMC5yYzEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpo dHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=