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 869F1C48BCF for ; Wed, 9 Jun 2021 06:35:12 +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 57F2861181 for ; Wed, 9 Jun 2021 06:35:12 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 57F2861181 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 16B866E34B; Wed, 9 Jun 2021 06:35:06 +0000 (UTC) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9D1C96E212; Wed, 9 Jun 2021 06:35:04 +0000 (UTC) IronPort-SDR: By/+WBMjH9QUomKwdhCYehbRbWcHdwh9ZGZGDiRekr5B5zeABCL+oG5KbtzPnvzhNTjCTmOFHK P1rjGfxd8/KA== X-IronPort-AV: E=McAfee;i="6200,9189,10009"; a="268868913" X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="268868913" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2021 23:35:04 -0700 IronPort-SDR: Gv6hZhJxhx+ivPyr6OfWW/UhNTOa8ArchKn/aH/brAScF7HDZbhleRcoj01tw2ehA0oQgEJhvK r5U2IMCy4qGQ== X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="482265855" Received: from ekolpasx-mobl.ccr.corp.intel.com (HELO thellst-mobl1.intel.com) ([10.249.254.109]) by orsmga001-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Jun 2021 23:35:01 -0700 From: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= To: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org Date: Wed, 9 Jun 2021 08:34:35 +0200 Message-Id: <20210609063436.284332-9-thomas.hellstrom@linux.intel.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210609063436.284332-1-thomas.hellstrom@linux.intel.com> References: <20210609063436.284332-1-thomas.hellstrom@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v2 8/9] drm/i915/gt: Pipelined clear 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?= , matthew.auld@intel.com, Chris Wilson Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" RnJvbTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+CgpVcGRhdGUgdGhl IFBURSBhbmQgZW1pdCBhIGNsZWFyIHdpdGhpbiBhIHNpbmdsZSB1bnByZWVtcHRpYmxlIHBhY2tl dApzdWNoIHRoYXQgd2UgY2FuIHNjaGVkdWxlIGFuZCBwaXBlbGluZSBjbGVhcnMuCgpTaWduZWQt b2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KQ28tZGV2ZWxv cGVkLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5j b20+ClNpZ25lZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxp bnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRl LmMgICAgfCAxNDEgKysrKysrKysrKysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9taWdyYXRlLmggICAgfCAgMjAgKysrCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxm dGVzdF9taWdyYXRlLmMgfCAxNjMgKysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5n ZWQsIDMyNCBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfbWlncmF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfbWlncmF0 ZS5jCmluZGV4IDcwNzc2MzE2ODYzZC4uZmRhMDVjZTNlYjljIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfbWlncmF0ZS5jCkBAIC00OTAsNiArNDkwLDExMiBAQCBpbnRlbF9jb250ZXh0 X21pZ3JhdGVfY29weShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJcmV0dXJuIGVycjsKIH0K IAorc3RhdGljIGludCBlbWl0X2NsZWFyKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgc2l6 ZSwgdTMyIHZhbHVlKQoreworCWNvbnN0IGludCBnZW4gPSBJTlRFTF9HRU4ocnEtPmVuZ2luZS0+ aTkxNSk7CisJdTMyICpjczsKKworCUdFTV9CVUdfT04oc2l6ZSA+PiBQQUdFX1NISUZUID4gUzE2 X01BWCk7CisKKwljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIGdlbiA+PSA4ID8gOCA6IDYpOwor CWlmIChJU19FUlIoY3MpKQorCQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwlpZiAoZ2VuID49IDgp IHsKKwkJKmNzKysgPSBYWV9DT0xPUl9CTFRfQ01EIHwgQkxUX1dSSVRFX1JHQkEgfCAoNyAtIDIp OworCQkqY3MrKyA9IEJMVF9ERVBUSF8zMiB8IEJMVF9ST1BfQ09MT1JfQ09QWSB8IFBBR0VfU0la RTsKKwkJKmNzKysgPSAwOworCQkqY3MrKyA9IHNpemUgPj4gUEFHRV9TSElGVCA8PCAxNiB8IFBB R0VfU0laRSAvIDQ7CisJCSpjcysrID0gMDsgLyogb2Zmc2V0ICovCisJCSpjcysrID0gMDsKKwkJ KmNzKysgPSB2YWx1ZTsKKwkJKmNzKysgPSBNSV9OT09QOworCX0gZWxzZSB7CisJCSpjcysrID0g WFlfQ09MT1JfQkxUX0NNRCB8IEJMVF9XUklURV9SR0JBIHwgKDYgLSAyKTsKKwkJKmNzKysgPSBC TFRfREVQVEhfMzIgfCBCTFRfUk9QX0NPTE9SX0NPUFkgfCBQQUdFX1NJWkU7CisJCSpjcysrID0g MDsKKwkJKmNzKysgPSBzaXplID4+IFBBR0VfU0hJRlQgPDwgMTYgfCBQQUdFX1NJWkUgLyA0Owor CQkqY3MrKyA9IDA7CisJCSpjcysrID0gdmFsdWU7CisJfQorCisJaW50ZWxfcmluZ19hZHZhbmNl KHJxLCBjcyk7CisJcmV0dXJuIDA7Cit9CisKK2ludAoraW50ZWxfY29udGV4dF9taWdyYXRlX2Ns ZWFyKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKKwkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICph d2FpdCwKKwkJCSAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnLAorCQkJICAgIGVudW0gaTkxNV9j YWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKKwkJCSAgICBib29sIGlzX2xtZW0sCisJCQkgICAgdTMy IHZhbHVlLAorCQkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKipvdXQpCit7CisJc3RydWN0IHNn dF9kbWEgaXQgPSBzZ19zZ3Qoc2cpOworCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOworCWludCBl cnI7CisKKwkqb3V0ID0gTlVMTDsKKworCUdFTV9CVUdfT04oY2UtPnJpbmctPnNpemUgPCBTWl82 NEspOworCisJZG8geworCQlpbnQgbGVuOworCisJCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShj ZSk7CisJCWlmIChJU19FUlIocnEpKSB7CisJCQllcnIgPSBQVFJfRVJSKHJxKTsKKwkJCWdvdG8g b3V0X2NlOworCQl9CisKKwkJaWYgKGF3YWl0KSB7CisJCQllcnIgPSBpOTE1X3JlcXVlc3RfYXdh aXRfZG1hX2ZlbmNlKHJxLCBhd2FpdCk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gb3V0X3JxOwor CisJCQlpZiAocnEtPmVuZ2luZS0+ZW1pdF9pbml0X2JyZWFkY3J1bWIpIHsKKwkJCQllcnIgPSBy cS0+ZW5naW5lLT5lbWl0X2luaXRfYnJlYWRjcnVtYihycSk7CisJCQkJaWYgKGVycikKKwkJCQkJ Z290byBvdXRfcnE7CisJCQl9CisKKwkJCWF3YWl0ID0gTlVMTDsKKwkJfQorCisJCS8qIFRoZSBQ VEUgdXBkYXRlcyArIGNsZWFyIG11c3Qgbm90IGJlIGludGVycnVwdGVkLiAqLworCQllcnIgPSBl bWl0X25vX2FyYml0cmF0aW9uKHJxKTsKKwkJaWYgKGVycikKKwkJCWdvdG8gb3V0X3JxOworCisJ CWxlbiA9IGVtaXRfcHRlKHJxLCAmaXQsIGNhY2hlX2xldmVsLCBpc19sbWVtLCAwLCBDSFVOS19T Wik7CisJCWlmIChsZW4gPD0gMCkgeworCQkJZXJyID0gbGVuOworCQkJZ290byBvdXRfcnE7CisJ CX0KKworCQllcnIgPSBycS0+ZW5naW5lLT5lbWl0X2ZsdXNoKHJxLCBFTUlUX0lOVkFMSURBVEUp OworCQlpZiAoZXJyKQorCQkJZ290byBvdXRfcnE7CisKKwkJZXJyID0gZW1pdF9jbGVhcihycSwg bGVuLCB2YWx1ZSk7CisKKwkJLyogQXJiaXRyYXRpb24gaXMgcmUtZW5hYmxlZCBiZXR3ZWVuIHJl cXVlc3RzLiAqLworb3V0X3JxOgorCQlpZiAoKm91dCkKKwkJCWk5MTVfcmVxdWVzdF9wdXQoKm91 dCk7CisJCSpvdXQgPSBpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKKwkJaTkxNV9yZXF1ZXN0X2FkZChy cSk7CisJCWlmIChlcnIgfHwgIWl0LnNnIHx8ICFzZ19kbWFfbGVuKGl0LnNnKSkKKwkJCWJyZWFr OworCisJCWNvbmRfcmVzY2hlZCgpOworCX0gd2hpbGUgKDEpOworCitvdXRfY2U6CisJcmV0dXJu IGVycjsKK30KKwogaW50IGludGVsX21pZ3JhdGVfY29weShzdHJ1Y3QgaW50ZWxfbWlncmF0ZSAq bSwKIAkJICAgICAgIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAogCQkgICAgICAgc3RydWN0 IGRtYV9mZW5jZSAqYXdhaXQsCkBAIC01MjgsNiArNjM0LDQxIEBAIGludCBpbnRlbF9taWdyYXRl X2NvcHkoc3RydWN0IGludGVsX21pZ3JhdGUgKm0sCiAJcmV0dXJuIGVycjsKIH0KIAoraW50Citp bnRlbF9taWdyYXRlX2NsZWFyKHN0cnVjdCBpbnRlbF9taWdyYXRlICptLAorCQkgICAgc3RydWN0 IGk5MTVfZ2VtX3d3X2N0eCAqd3csCisJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICphd2FpdCwKKwkJ ICAgIHN0cnVjdCBzY2F0dGVybGlzdCAqc2csCisJCSAgICBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwg Y2FjaGVfbGV2ZWwsCisJCSAgICBib29sIGlzX2xtZW0sCisJCSAgICB1MzIgdmFsdWUsCisJCSAg ICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICoqb3V0KQoreworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZTsKKwlpbnQgZXJyOworCisJKm91dCA9IE5VTEw7CisJaWYgKCFtLT5jb250ZXh0KQorCQlyZXR1 cm4gLUVOT0RFVjsKKworCWNlID0gaW50ZWxfbWlncmF0ZV9jcmVhdGVfY29udGV4dChtKTsKKwlp ZiAoSVNfRVJSKGNlKSkKKwkJY2UgPSBpbnRlbF9jb250ZXh0X2dldChtLT5jb250ZXh0KTsKKwlH RU1fQlVHX09OKElTX0VSUihjZSkpOworCisJZXJyID0gaW50ZWxfY29udGV4dF9waW5fd3coY2Us IHd3KTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWVyciA9IGludGVsX2NvbnRleHRfbWln cmF0ZV9jbGVhcihjZSwgYXdhaXQsIHNnLCBjYWNoZV9sZXZlbCwKKwkJCQkJICBpc19sbWVtLCB2 YWx1ZSwgb3V0KTsKKworCWludGVsX2NvbnRleHRfdW5waW4oY2UpOworb3V0OgorCWludGVsX2Nv bnRleHRfcHV0KGNlKTsKKwlyZXR1cm4gZXJyOworfQorCiB2b2lkIGludGVsX21pZ3JhdGVfZmlu aShzdHJ1Y3QgaW50ZWxfbWlncmF0ZSAqbSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmgKaW5kZXggMzJjNjExOTBlZDcz Li40ZTE4ZTc1NWEwMGIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X21pZ3JhdGUuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9taWdyYXRlLmgK QEAgLTYsNiArNiw4IEBACiAjaWZuZGVmIF9fSU5URUxfTUlHUkFURV9fCiAjZGVmaW5lIF9fSU5U RUxfTUlHUkFURV9fCiAKKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorCiAjaW5jbHVkZSAiaW50 ZWxfbWlncmF0ZV90eXBlcy5oIgogCiBzdHJ1Y3QgZG1hX2ZlbmNlOwpAQCAtNDAsNiArNDIsMjQg QEAgaW50IGludGVsX2NvbnRleHRfbWlncmF0ZV9jb3B5KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj ZSwKIAkJCSAgICAgICBib29sIGRzdF9pc19sbWVtLAogCQkJICAgICAgIHN0cnVjdCBpOTE1X3Jl cXVlc3QgKipvdXQpOwogCitpbnQKK2ludGVsX21pZ3JhdGVfY2xlYXIoc3RydWN0IGludGVsX21p Z3JhdGUgKm0sCisJCSAgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJICAgIHN0cnVj dCBkbWFfZmVuY2UgKmF3YWl0LAorCQkgICAgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZywKKwkJICAg IGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKKwkJICAgIGJvb2wgaXNfbG1lbSwK KwkJICAgIHUzMiB2YWx1ZSwKKwkJICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKipvdXQpOworaW50 CitpbnRlbF9jb250ZXh0X21pZ3JhdGVfY2xlYXIoc3RydWN0IGludGVsX2NvbnRleHQgKmNlLAor CQkJICAgIHN0cnVjdCBkbWFfZmVuY2UgKmF3YWl0LAorCQkJICAgIHN0cnVjdCBzY2F0dGVybGlz dCAqc2csCisJCQkgICAgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAorCQkJICAg IGJvb2wgaXNfbG1lbSwKKwkJCSAgICB1MzIgdmFsdWUsCisJCQkgICAgc3RydWN0IGk5MTVfcmVx dWVzdCAqKm91dCk7CisKIHZvaWQgaW50ZWxfbWlncmF0ZV9maW5pKHN0cnVjdCBpbnRlbF9taWdy YXRlICptKTsKIAogI2VuZGlmIC8qIF9fSU5URUxfTUlHUkFURV9fICovCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9taWdyYXRlLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9zZWxmdGVzdF9taWdyYXRlLmMKaW5kZXggOTc4NGQxNDllYmYxLi4xNTljODY1 NmUxYjAgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X21pZ3Jh dGUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9taWdyYXRlLmMKQEAg LTEyOSw2ICsxMjksODIgQEAgc3RhdGljIGludCBjb3B5KHN0cnVjdCBpbnRlbF9taWdyYXRlICpt aWdyYXRlLAogCXJldHVybiBlcnI7CiB9CiAKK3N0YXRpYyBpbnQgY2xlYXIoc3RydWN0IGludGVs X21pZ3JhdGUgKm1pZ3JhdGUsCisJCSBpbnQgKCpmbikoc3RydWN0IGludGVsX21pZ3JhdGUgKm1p Z3JhdGUsCisJCQkgICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJCSAgIHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICB1MzIgdmFsdWUsCisJCQkgICBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICoqb3V0KSwKKwkJIHUzMiBzeiwgc3RydWN0IHJuZF9zdGF0ZSAqcHJuZykK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IG1pZ3JhdGUtPmNvbnRleHQtPmVu Z2luZS0+aTkxNTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOworCXN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxOworCXN0cnVjdCBpOTE1X2dlbV93d19jdHggd3c7CisJdTMyICp2YWRk cjsKKwlpbnQgZXJyID0gMDsKKwlpbnQgaTsKKworCW9iaiA9IGNyZWF0ZV9sbWVtX29yX2ludGVy bmFsKGk5MTUsIHN6KTsKKwlpZiAoSVNfRVJSKG9iaikpCisJCXJldHVybiAwOworCisJZm9yX2k5 MTVfZ2VtX3d3KCZ3dywgZXJyLCB0cnVlKSB7CisJCWVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2Nr KG9iaiwgJnd3KTsKKwkJaWYgKGVycikKKwkJCWNvbnRpbnVlOworCisJCXZhZGRyID0gaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAob2JqLCBJOTE1X01BUF9XQyk7CisJCWlmIChJU19FUlIodmFkZHIp KSB7CisJCQllcnIgPSBQVFJfRVJSKHZhZGRyKTsKKwkJCWNvbnRpbnVlOworCQl9CisKKwkJZm9y IChpID0gMDsgaSA8IHN6IC8gc2l6ZW9mKHUzMik7IGkrKykKKwkJCXZhZGRyW2ldID0gfmk7CisJ CWk5MTVfZ2VtX29iamVjdF9mbHVzaF9tYXAob2JqKTsKKworCQllcnIgPSBmbihtaWdyYXRlLCAm d3csIG9iaiwgc3osICZycSk7CisJCWlmICghZXJyKQorCQkJY29udGludWU7CisKKwkJaWYgKGVy ciAhPSAtRURFQURMSyAmJiBlcnIgIT0gLUVJTlRSICYmIGVyciAhPSAtRVJFU1RBUlRTWVMpCisJ CQlwcl9lcnIoIiVwcyBmYWlsZWQsIHNpemU6ICV1XG4iLCBmbiwgc3opOworCQlpZiAocnEpIHsK KwkJCWk5MTVfcmVxdWVzdF93YWl0KHJxLCAwLCBIWik7CisJCQlpOTE1X3JlcXVlc3RfcHV0KHJx KTsKKwkJfQorCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CisJfQorCWlmIChlcnIp CisJCWdvdG8gZXJyX291dDsKKworCWlmIChycSkgeworCQlpZiAoaTkxNV9yZXF1ZXN0X3dhaXQo cnEsIDAsIEhaKSA8IDApIHsKKwkJCXByX2VycigiJXBzIHRpbWVkIG91dCwgc2l6ZTogJXVcbiIs IGZuLCBzeik7CisJCQllcnIgPSAtRVRJTUU7CisJCX0KKwkJaTkxNV9yZXF1ZXN0X3B1dChycSk7 CisJfQorCisJZm9yIChpID0gMDsgIWVyciAmJiBpIDwgc3ogLyBQQUdFX1NJWkU7IGkrKykgewor CQlpbnQgeCA9IGkgKiAxMDI0ICsgaTkxNV9wcmFuZG9tX3UzMl9tYXhfc3RhdGUoMTAyNCwgcHJu Zyk7CisKKwkJaWYgKHZhZGRyW3hdICE9IHN6KSB7CisJCQlwcl9lcnIoIiVwcyBmYWlsZWQsIHNp emU6ICV1LCBvZmZzZXQ6ICV6dVxuIiwKKwkJCSAgICAgICBmbiwgc3osIHggKiBzaXplb2YodTMy KSk7CisJCQlpZ3RfaGV4ZHVtcCh2YWRkciArIGkgKiAxMDI0LCA0MDk2KTsKKwkJCWVyciA9IC1F SU5WQUw7CisJCX0KKwl9CisKKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7CitlcnJf b3V0OgorCWk5MTVfZ2VtX29iamVjdF9wdXQob2JqKTsKKworCXJldHVybiBlcnI7Cit9CisKIHN0 YXRpYyBpbnQgX19taWdyYXRlX2NvcHkoc3RydWN0IGludGVsX21pZ3JhdGUgKm1pZ3JhdGUsCiAJ CQkgIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAogCQkJICBzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqc3JjLApAQCAtMTY5LDYgKzI0NSw0NCBAQCBnbG9iYWxfY29weShzdHJ1Y3QgaW50 ZWxfbWlncmF0ZSAqbWlncmF0ZSwgdTMyIHN6LCBzdHJ1Y3Qgcm5kX3N0YXRlICpwcm5nKQogCXJl dHVybiBjb3B5KG1pZ3JhdGUsIF9fZ2xvYmFsX2NvcHksIHN6LCBwcm5nKTsKIH0KIAorc3RhdGlj IGludCBfX21pZ3JhdGVfY2xlYXIoc3RydWN0IGludGVsX21pZ3JhdGUgKm1pZ3JhdGUsCisJCQkg ICBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4ICp3dywKKwkJCSAgIHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCisJCQkgICB1MzIgdmFsdWUsCisJCQkgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICoqb3V0KQoreworCXJldHVybiBpbnRlbF9taWdyYXRlX2NsZWFyKG1pZ3JhdGUsIHd3LCBOVUxM LAorCQkJCSAgIG9iai0+bW0ucGFnZXMtPnNnbCwKKwkJCQkgICBvYmotPmNhY2hlX2xldmVsLAor CQkJCSAgIGk5MTVfZ2VtX29iamVjdF9pc19sbWVtKG9iaiksCisJCQkJICAgdmFsdWUsIG91dCk7 Cit9CisKK3N0YXRpYyBpbnQgX19nbG9iYWxfY2xlYXIoc3RydWN0IGludGVsX21pZ3JhdGUgKm1p Z3JhdGUsCisJCQkgIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3LAorCQkJICBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJICB1MzIgdmFsdWUsCisJCQkgIHN0cnVjdCBpOTE1 X3JlcXVlc3QgKipvdXQpCit7CisJcmV0dXJuIGludGVsX2NvbnRleHRfbWlncmF0ZV9jbGVhciht aWdyYXRlLT5jb250ZXh0LCBOVUxMLAorCQkJCQkgICBvYmotPm1tLnBhZ2VzLT5zZ2wsCisJCQkJ CSAgIG9iai0+Y2FjaGVfbGV2ZWwsCisJCQkJCSAgIGk5MTVfZ2VtX29iamVjdF9pc19sbWVtKG9i aiksCisJCQkJCSAgIHZhbHVlLCBvdXQpOworfQorCitzdGF0aWMgaW50CittaWdyYXRlX2NsZWFy KHN0cnVjdCBpbnRlbF9taWdyYXRlICptaWdyYXRlLCB1MzIgc3osIHN0cnVjdCBybmRfc3RhdGUg KnBybmcpCit7CisJcmV0dXJuIGNsZWFyKG1pZ3JhdGUsIF9fbWlncmF0ZV9jbGVhciwgc3osIHBy bmcpOworfQorCitzdGF0aWMgaW50CitnbG9iYWxfY2xlYXIoc3RydWN0IGludGVsX21pZ3JhdGUg Km1pZ3JhdGUsIHUzMiBzeiwgc3RydWN0IHJuZF9zdGF0ZSAqcHJuZykKK3sKKwlyZXR1cm4gY2xl YXIobWlncmF0ZSwgX19nbG9iYWxfY2xlYXIsIHN6LCBwcm5nKTsKK30KKwogc3RhdGljIGludCBs aXZlX21pZ3JhdGVfY29weSh2b2lkICphcmcpCiB7CiAJc3RydWN0IGludGVsX21pZ3JhdGUgKm1p Z3JhdGUgPSBhcmc7CkBAIC0xOTAsNiArMzA0LDI4IEBAIHN0YXRpYyBpbnQgbGl2ZV9taWdyYXRl X2NvcHkodm9pZCAqYXJnKQogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGxpdmVfbWlncmF0 ZV9jbGVhcih2b2lkICphcmcpCit7CisJc3RydWN0IGludGVsX21pZ3JhdGUgKm1pZ3JhdGUgPSBh cmc7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBtaWdyYXRlLT5jb250ZXh0LT5l bmdpbmUtPmk5MTU7CisJSTkxNV9STkRfU1RBVEUocHJuZyk7CisJaW50IGk7CisKKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShzaXplcyk7IGkrKykgeworCQlpbnQgZXJyOworCisJCWVyciA9 IG1pZ3JhdGVfY2xlYXIobWlncmF0ZSwgc2l6ZXNbaV0sICZwcm5nKTsKKwkJaWYgKGVyciA9PSAw KQorCQkJZXJyID0gZ2xvYmFsX2NsZWFyKG1pZ3JhdGUsIHNpemVzW2ldLCAmcHJuZyk7CisKKwkJ aTkxNV9nZW1fZHJhaW5fZnJlZWRfb2JqZWN0cyhpOTE1KTsKKwkJaWYgKGVycikKKwkJCXJldHVy biBlcnI7CisJfQorCisJcmV0dXJuIDA7Cit9CisKIHN0cnVjdCB0aHJlYWRlZF9taWdyYXRlIHsK IAlzdHJ1Y3QgaW50ZWxfbWlncmF0ZSAqbWlncmF0ZTsKIAlzdHJ1Y3QgdGFza19zdHJ1Y3QgKnRz azsKQEAgLTI3MSwxMiArNDA3LDM5IEBAIHN0YXRpYyBpbnQgdGhyZWFkX2dsb2JhbF9jb3B5KHZv aWQgKmFyZykKIAlyZXR1cm4gdGhyZWFkZWRfbWlncmF0ZShhcmcsIF9fdGhyZWFkX2dsb2JhbF9j b3B5LCAwKTsKIH0KIAorc3RhdGljIGludCBfX3RocmVhZF9taWdyYXRlX2NsZWFyKHZvaWQgKmFy ZykKK3sKKwlzdHJ1Y3QgdGhyZWFkZWRfbWlncmF0ZSAqdG0gPSBhcmc7CisKKwlyZXR1cm4gbWln cmF0ZV9jbGVhcih0bS0+bWlncmF0ZSwgMiAqIENIVU5LX1NaLCAmdG0tPnBybmcpOworfQorCitz dGF0aWMgaW50IF9fdGhyZWFkX2dsb2JhbF9jbGVhcih2b2lkICphcmcpCit7CisJc3RydWN0IHRo cmVhZGVkX21pZ3JhdGUgKnRtID0gYXJnOworCisJcmV0dXJuIGdsb2JhbF9jbGVhcih0bS0+bWln cmF0ZSwgMiAqIENIVU5LX1NaLCAmdG0tPnBybmcpOworfQorCitzdGF0aWMgaW50IHRocmVhZF9t aWdyYXRlX2NsZWFyKHZvaWQgKmFyZykKK3sKKwlyZXR1cm4gdGhyZWFkZWRfbWlncmF0ZShhcmcs IF9fdGhyZWFkX21pZ3JhdGVfY2xlYXIsIDApOworfQorCitzdGF0aWMgaW50IHRocmVhZF9nbG9i YWxfY2xlYXIodm9pZCAqYXJnKQoreworCXJldHVybiB0aHJlYWRlZF9taWdyYXRlKGFyZywgX190 aHJlYWRfZ2xvYmFsX2NsZWFyLCAwKTsKK30KKwogaW50IGludGVsX21pZ3JhdGVfbGl2ZV9zZWxm dGVzdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCiB7CiAJc3RhdGljIGNvbnN0IHN0 cnVjdCBpOTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKIAkJU1VCVEVTVChsaXZlX21pZ3JhdGVfY29w eSksCisJCVNVQlRFU1QobGl2ZV9taWdyYXRlX2NsZWFyKSwKIAkJU1VCVEVTVCh0aHJlYWRfbWln cmF0ZV9jb3B5KSwKKwkJU1VCVEVTVCh0aHJlYWRfbWlncmF0ZV9jbGVhciksCiAJCVNVQlRFU1Qo dGhyZWFkX2dsb2JhbF9jb3B5KSwKKwkJU1VCVEVTVCh0aHJlYWRfZ2xvYmFsX2NsZWFyKSwKIAl9 OwogCXN0cnVjdCBpbnRlbF9taWdyYXRlIG07CiAJaW50IGVycjsKLS0gCjIuMzEuMQoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==