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,URIBL_BLOCKED,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 17925C4332B for ; Thu, 11 Mar 2021 13:49:45 +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 AED3A64F97 for ; Thu, 11 Mar 2021 13:49:44 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org AED3A64F97 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 71BF06ECDE; Thu, 11 Mar 2021 13:49:24 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id CE23F6ECBE for ; Thu, 11 Mar 2021 13:48:56 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Thu, 11 Mar 2021 14:41:59 +0100 Message-Id: <20210311134249.588632-20-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210311134249.588632-1-maarten.lankhorst@linux.intel.com> References: <20210311134249.588632-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v8 19/69] 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 cm0vaTkxNS9ndC9pbnRlbF9yaW5nX3N1Ym1pc3Npb24uYwppbmRleCAyODIwODlkNjQ3ODkuLmY4 YWQ4OTFhZDYzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmlu Z19zdWJtaXNzaW9uLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfcmluZ19z dWJtaXNzaW9uLmMKQEAgLTQzNiw2ICs0MzYsMjYgQEAgc3RhdGljIHZvaWQgcmluZ19jb250ZXh0 X2Rlc3Ryb3koc3RydWN0IGtyZWYgKnJlZikKIAlpbnRlbF9jb250ZXh0X2ZyZWUoY2UpOwogfQog CitzdGF0aWMgaW50IHJpbmdfY29udGV4dF9pbml0X2RlZmF1bHRfc3RhdGUoc3RydWN0IGludGVs X2NvbnRleHQgKmNlLAorCQkJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dykKK3sKKwlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gY2UtPnN0YXRlLT5vYmo7CisJdm9pZCAq dmFkZHI7CisKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBf V0IpOworCWlmIChJU19FUlIodmFkZHIpKQorCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CisKKwlz aG1lbV9yZWFkKGNlLT5lbmdpbmUtPmRlZmF1bHRfc3RhdGUsIDAsCisJCSAgIHZhZGRyLCBjZS0+ ZW5naW5lLT5jb250ZXh0X3NpemUpOworCisJaTkxNV9nZW1fb2JqZWN0X2ZsdXNoX21hcChvYmop OworCV9faTkxNV9nZW1fb2JqZWN0X3JlbGVhc2VfbWFwKG9iaik7CisKKwlfX3NldF9iaXQoQ09O VEVYVF9WQUxJRF9CSVQsICZjZS0+ZmxhZ3MpOworCXJldHVybiAwOworfQorCiBzdGF0aWMgaW50 IHJpbmdfY29udGV4dF9wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCQlzdHJ1 Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKIAkJCQl2b2lkICoqdW51c2VkKQpAQCAtNDQzLDYgKzQ2 MywxMyBAQCBzdGF0aWMgaW50IHJpbmdfY29udGV4dF9wcmVfcGluKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bTsKIAlpbnQgZXJyID0gMDsK IAorCWlmIChjZS0+ZW5naW5lLT5kZWZhdWx0X3N0YXRlICYmCisJICAgICF0ZXN0X2JpdChDT05U RVhUX1ZBTElEX0JJVCwgJmNlLT5mbGFncykpIHsKKwkJZXJyID0gcmluZ19jb250ZXh0X2luaXRf ZGVmYXVsdF9zdGF0ZShjZSwgd3cpOworCQlpZiAoZXJyKQorCQkJcmV0dXJuIGVycjsKKwl9CisK IAl2bSA9IHZtX2FsaWFzKGNlLT52bSk7CiAJaWYgKHZtKQogCQllcnIgPSBnZW42X3BwZ3R0X3Bp bihpOTE1X3ZtX3RvX3BwZ3R0KCh2bSkpLCB3dyk7CkBAIC00OTgsMjIgKzUyNSw2IEBAIGFsbG9j X2NvbnRleHRfdm1hKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAlpZiAoSVNfSVZZ QlJJREdFKGk5MTUpKQogCQlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2NvaGVyZW5jeShvYmos IEk5MTVfQ0FDSEVfTDNfTExDKTsKIAotCWlmIChlbmdpbmUtPmRlZmF1bHRfc3RhdGUpIHsKLQkJ dm9pZCAqdmFkZHI7Ci0KLQkJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChvYmosIEk5 MTVfTUFQX1dCKTsKLQkJaWYgKElTX0VSUih2YWRkcikpIHsKLQkJCWVyciA9IFBUUl9FUlIodmFk ZHIpOwotCQkJZ290byBlcnJfb2JqOwotCQl9Ci0KLQkJc2htZW1fcmVhZChlbmdpbmUtPmRlZmF1 bHRfc3RhdGUsIDAsCi0JCQkgICB2YWRkciwgZW5naW5lLT5jb250ZXh0X3NpemUpOwotCi0JCWk5 MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAob2JqKTsKLQkJX19pOTE1X2dlbV9vYmplY3RfcmVsZWFz ZV9tYXAob2JqKTsKLQl9Ci0KIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZlbmdpbmUt Pmd0LT5nZ3R0LT52bSwgTlVMTCk7CiAJaWYgKElTX0VSUih2bWEpKSB7CiAJCWVyciA9IFBUUl9F UlIodm1hKTsKQEAgLTU0NSw4ICs1NTYsNiBAQCBzdGF0aWMgaW50IHJpbmdfY29udGV4dF9hbGxv YyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJCQlyZXR1cm4gUFRSX0VSUih2bWEpOwogCiAJ CWNlLT5zdGF0ZSA9IHZtYTsKLQkJaWYgKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkKLQkJCV9fc2V0 X2JpdChDT05URVhUX1ZBTElEX0JJVCwgJmNlLT5mbGFncyk7CiAJfQogCiAJcmV0dXJuIDA7CkBA IC0xMTUxLDM3ICsxMTYwLDE1IEBAIHN0YXRpYyBpbnQgZ2VuN19jdHhfc3dpdGNoX2JiX3NldHVw KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKiBjb25zdCBlbmdpbmUsCiAJcmV0dXJuIGdlbjdfc2V0 dXBfY2xlYXJfZ3ByX2JiKGVuZ2luZSwgdm1hKTsKIH0KIAotc3RhdGljIGludCBnZW43X2N0eF9z d2l0Y2hfYmJfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCitzdGF0aWMgaW50 IGdlbjdfY3R4X3N3aXRjaF9iYl9pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwK KwkJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJCQkgICBzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCXN0cnVjdCBp OTE1X3ZtYSAqdm1hOwotCWludCBzaXplOwogCWludCBlcnI7CiAKLQlzaXplID0gZ2VuN19jdHhf c3dpdGNoX2JiX3NldHVwKGVuZ2luZSwgTlVMTCAvKiBwcm9iZSBzaXplICovKTsKLQlpZiAoc2l6 ZSA8PSAwKQotCQlyZXR1cm4gc2l6ZTsKLQotCXNpemUgPSBBTElHTihzaXplLCBQQUdFX1NJWkUp OwotCW9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoZW5naW5lLT5pOTE1LCBz aXplKTsKLQlpZiAoSVNfRVJSKG9iaikpCi0JCXJldHVybiBQVFJfRVJSKG9iaik7Ci0KLQl2bWEg PSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIGVuZ2luZS0+Z3QtPnZtLCBOVUxMKTsKLQlpZiAoSVNf RVJSKHZtYSkpIHsKLQkJZXJyID0gUFRSX0VSUih2bWEpOwotCQlnb3RvIGVycl9vYmo7Ci0JfQot Ci0Jdm1hLT5wcml2YXRlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsgLyogZHVtbXkg cmVzaWR1YWxzICovCi0JaWYgKElTX0VSUih2bWEtPnByaXZhdGUpKSB7Ci0JCWVyciA9IFBUUl9F UlIodm1hLT5wcml2YXRlKTsKLQkJZ290byBlcnJfb2JqOwotCX0KLQotCWVyciA9IGk5MTVfdm1h X3Bpbih2bWEsIDAsIDAsIFBJTl9VU0VSIHwgUElOX0hJR0gpOworCWVyciA9IGk5MTVfdm1hX3Bp bl93dyh2bWEsIHd3LCAwLCAwLCBQSU5fVVNFUiB8IFBJTl9ISUdIKTsKIAlpZiAoZXJyKQotCQln b3RvIGVycl9wcml2YXRlOworCQlyZXR1cm4gZXJyOwogCiAJZXJyID0gaTkxNV92bWFfc3luYyh2 bWEpOwogCWlmIChlcnIpCkBAIC0xMTk2LDE3ICsxMTgzLDUzIEBAIHN0YXRpYyBpbnQgZ2VuN19j dHhfc3dpdGNoX2JiX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQogCiBlcnJf dW5waW46CiAJaTkxNV92bWFfdW5waW4odm1hKTsKLWVycl9wcml2YXRlOgotCWludGVsX2NvbnRl eHRfcHV0KHZtYS0+cHJpdmF0ZSk7Ci1lcnJfb2JqOgotCWk5MTVfZ2VtX29iamVjdF9wdXQob2Jq KTsKIAlyZXR1cm4gZXJyOwogfQogCitzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpnZW43X2N0eF92 bWEoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQoreworCXN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmo7CisJc3RydWN0IGk5MTVfdm1hICp2bWE7CisJaW50IHNpemUsIGVycjsK KworCWlmICghSVNfR0VOKGVuZ2luZS0+aTkxNSwgNykgfHwgZW5naW5lLT5jbGFzcyAhPSBSRU5E RVJfQ0xBU1MpCisJCXJldHVybiAwOworCisJZXJyID0gZ2VuN19jdHhfc3dpdGNoX2JiX3NldHVw KGVuZ2luZSwgTlVMTCAvKiBwcm9iZSBzaXplICovKTsKKwlpZiAoZXJyIDwgMCkKKwkJcmV0dXJu IEVSUl9QVFIoZXJyKTsKKwlpZiAoIWVycikKKwkJcmV0dXJuIE5VTEw7CisKKwlzaXplID0gQUxJ R04oZXJyLCBQQUdFX1NJWkUpOworCisJb2JqID0gaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9pbnRl cm5hbChlbmdpbmUtPmk5MTUsIHNpemUpOworCWlmIChJU19FUlIob2JqKSkKKwkJcmV0dXJuIEVS Ul9DQVNUKG9iaik7CisKKwl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosIGVuZ2luZS0+Z3Qt PnZtLCBOVUxMKTsKKwlpZiAoSVNfRVJSKHZtYSkpIHsKKwkJaTkxNV9nZW1fb2JqZWN0X3B1dChv YmopOworCQlyZXR1cm4gRVJSX0NBU1Qodm1hKTsKKwl9CisKKwl2bWEtPnByaXZhdGUgPSBpbnRl bF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOyAvKiBkdW1teSByZXNpZHVhbHMgKi8KKwlpZiAoSVNf RVJSKHZtYS0+cHJpdmF0ZSkpIHsKKwkJZXJyID0gUFRSX0VSUih2bWEtPnByaXZhdGUpOworCQl2 bWEtPnByaXZhdGUgPSBOVUxMOworCQlpOTE1X2dlbV9vYmplY3RfcHV0KG9iaik7CisJCXJldHVy biBFUlJfUFRSKGVycik7CisJfQorCisJcmV0dXJuIHZtYTsKK30KKwogaW50IGludGVsX3Jpbmdf c3VibWlzc2lvbl9zZXR1cChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiB7CisJc3Ry dWN0IGk5MTVfZ2VtX3d3X2N0eCB3dzsKIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5l OwogCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOworCXN0cnVjdCBpOTE1X3ZtYSAqZ2VuN193YV92 bWE7CiAJaW50IGVycjsKIAogCXNldHVwX2NvbW1vbihlbmdpbmUpOwpAQCAtMTIzNyw0MyArMTI2 MCw3MiBAQCBpbnQgaW50ZWxfcmluZ19zdWJtaXNzaW9uX3NldHVwKHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSkKIAl9CiAJR0VNX0JVR19PTih0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJl YWRjcnVtYik7CiAKLQllcnIgPSBpbnRlbF90aW1lbGluZV9waW4odGltZWxpbmUsIE5VTEwpOwot CWlmIChlcnIpCi0JCWdvdG8gZXJyX3RpbWVsaW5lOwotCiAJcmluZyA9IGludGVsX2VuZ2luZV9j cmVhdGVfcmluZyhlbmdpbmUsIFNaXzE2Syk7CiAJaWYgKElTX0VSUihyaW5nKSkgewogCQllcnIg PSBQVFJfRVJSKHJpbmcpOwotCQlnb3RvIGVycl90aW1lbGluZV91bnBpbjsKKwkJZ290byBlcnJf dGltZWxpbmU7CiAJfQogCi0JZXJyID0gaW50ZWxfcmluZ19waW4ocmluZywgTlVMTCk7Ci0JaWYg KGVycikKLQkJZ290byBlcnJfcmluZzsKLQogCUdFTV9CVUdfT04oZW5naW5lLT5sZWdhY3kucmlu Zyk7CiAJZW5naW5lLT5sZWdhY3kucmluZyA9IHJpbmc7CiAJZW5naW5lLT5sZWdhY3kudGltZWxp bmUgPSB0aW1lbGluZTsKIAotCUdFTV9CVUdfT04odGltZWxpbmUtPmh3c3BfZ2d0dCAhPSBlbmdp bmUtPnN0YXR1c19wYWdlLnZtYSk7CisJZ2VuN193YV92bWEgPSBnZW43X2N0eF92bWEoZW5naW5l KTsKKwlpZiAoSVNfRVJSKGdlbjdfd2Ffdm1hKSkgeworCQllcnIgPSBQVFJfRVJSKGdlbjdfd2Ff dm1hKTsKKwkJZ290byBlcnJfcmluZzsKKwl9CiAKLQlpZiAoSVNfR0VOKGVuZ2luZS0+aTkxNSwg NykgJiYgZW5naW5lLT5jbGFzcyA9PSBSRU5ERVJfQ0xBU1MpIHsKLQkJZXJyID0gZ2VuN19jdHhf c3dpdGNoX2JiX2luaXQoZW5naW5lKTsKKwlpOTE1X2dlbV93d19jdHhfaW5pdCgmd3csIGZhbHNl KTsKKworcmV0cnk6CisJZXJyID0gaTkxNV9nZW1fb2JqZWN0X2xvY2sodGltZWxpbmUtPmh3c3Bf Z2d0dC0+b2JqLCAmd3cpOworCWlmICghZXJyICYmIGdlbjdfd2Ffdm1hKQorCQllcnIgPSBpOTE1 X2dlbV9vYmplY3RfbG9jayhnZW43X3dhX3ZtYS0+b2JqLCAmd3cpOworCWlmICghZXJyICYmIGVu Z2luZS0+bGVnYWN5LnJpbmctPnZtYS0+b2JqKQorCQllcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9j ayhlbmdpbmUtPmxlZ2FjeS5yaW5nLT52bWEtPm9iaiwgJnd3KTsKKwlpZiAoIWVycikKKwkJZXJy ID0gaW50ZWxfdGltZWxpbmVfcGluKHRpbWVsaW5lLCAmd3cpOworCWlmICghZXJyKSB7CisJCWVy ciA9IGludGVsX3JpbmdfcGluKHJpbmcsICZ3dyk7CiAJCWlmIChlcnIpCi0JCQlnb3RvIGVycl9y aW5nX3VucGluOworCQkJaW50ZWxfdGltZWxpbmVfdW5waW4odGltZWxpbmUpOworCX0KKwlpZiAo ZXJyKQorCQlnb3RvIG91dDsKKworCUdFTV9CVUdfT04odGltZWxpbmUtPmh3c3BfZ2d0dCAhPSBl bmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7CisKKwlpZiAoZ2VuN193YV92bWEpIHsKKwkJZXJyID0g Z2VuN19jdHhfc3dpdGNoX2JiX2luaXQoZW5naW5lLCAmd3csIGdlbjdfd2Ffdm1hKTsKKwkJaWYg KGVycikgeworCQkJaW50ZWxfcmluZ191bnBpbihyaW5nKTsKKwkJCWludGVsX3RpbWVsaW5lX3Vu cGluKHRpbWVsaW5lKTsKKwkJfQogCX0KIAorb3V0OgorCWlmIChlcnIgPT0gLUVERUFETEspIHsK KwkJZXJyID0gaTkxNV9nZW1fd3dfY3R4X2JhY2tvZmYoJnd3KTsKKwkJaWYgKCFlcnIpCisJCQln b3RvIHJldHJ5OworCX0KKwlpOTE1X2dlbV93d19jdHhfZmluaSgmd3cpOworCWlmIChlcnIpCisJ CWdvdG8gZXJyX2dlbjdfcHV0OworCiAJLyogRmluYWxseSwgdGFrZSBvd25lcnNoaXAgYW5kIHJl c3BvbnNpYmlsaXR5IGZvciBjbGVhbnVwISAqLwogCWVuZ2luZS0+cmVsZWFzZSA9IHJpbmdfcmVs ZWFzZTsKIAogCXJldHVybiAwOwogCi1lcnJfcmluZ191bnBpbjoKLQlpbnRlbF9yaW5nX3VucGlu KHJpbmcpOworZXJyX2dlbjdfcHV0OgorCWlmIChnZW43X3dhX3ZtYSkgeworCQlpbnRlbF9jb250 ZXh0X3B1dChnZW43X3dhX3ZtYS0+cHJpdmF0ZSk7CisJCWk5MTVfZ2VtX29iamVjdF9wdXQoZ2Vu N193YV92bWEtPm9iaik7CisJfQogZXJyX3Jpbmc6CiAJaW50ZWxfcmluZ19wdXQocmluZyk7Ci1l cnJfdGltZWxpbmVfdW5waW46Ci0JaW50ZWxfdGltZWxpbmVfdW5waW4odGltZWxpbmUpOwogZXJy X3RpbWVsaW5lOgogCWludGVsX3RpbWVsaW5lX3B1dCh0aW1lbGluZSk7CiBlcnI6Ci0tIAoyLjMw LjEKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVs LWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=