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=-9.7 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 3D7F6C35673 for ; Sun, 23 Feb 2020 20:54:54 +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 1C66720656 for ; Sun, 23 Feb 2020 20:54:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1C66720656 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 ABA4D6E11E; Sun, 23 Feb 2020 20:54:53 +0000 (UTC) Received: from fireflyinternet.com (unknown [77.68.26.236]) by gabe.freedesktop.org (Postfix) with ESMTPS id D301D6E11E for ; Sun, 23 Feb 2020 20:54:51 +0000 (UTC) X-Default-Received-SPF: pass (skip=forwardok (res=PASS)) x-ip-name=78.156.65.138; Received: from haswell.alporthouse.com (unverified [78.156.65.138]) by fireflyinternet.com (Firefly Internet (M1)) with ESMTP id 20324780-1500050 for multiple; Sun, 23 Feb 2020 20:54:36 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Sun, 23 Feb 2020 20:54:26 +0000 Message-Id: <20200223205432.3993019-2-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200223205432.3993019-1-chris@chris-wilson.co.uk> References: <20200223205432.3993019-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 1/6] dma-buf: Proxy fence, an unsignaled fence placeholder 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" T2Z0ZW4gd2UgbmVlZCB0byBjcmVhdGUgYSBmZW5jZSBmb3IgYSBmdXR1cmUgZXZlbnQgdGhhdCBo YXMgbm90IHlldCBiZWVuCmFzc29jaWF0ZWQgd2l0aCBhIGZlbmNlLiBXZSBjYW4gc3RvcmUgYSBw cm94eSBmZW5jZSwgYSBwbGFjZWhvbGRlciwgaW4KdGhlIHRpbWVsaW5lIGFuZCByZXBsYWNlIGl0 IGxhdGVyIHdoZW4gdGhlIHJlYWwgZmVuY2UgaXMga25vd24uIEFueQpsaXN0ZW5lcnMgdGhhdCBh dHRhY2ggdG8gdGhlIHByb3h5IGZlbmNlIHdpbGwgYXV0b21hdGljYWxseSBiZSBzaWduYWxlZAp3 aGVuIHRoZSByZWFsIGZlbmNlIGNvbXBsZXRlcywgYW5kIGFueSBmdXR1cmUgbGlzdGVuZXJzIHdp bGwgaW5zdGVhZCBiZQphdHRhY2ggZGlyZWN0bHkgdG8gdGhlIHJlYWwgZmVuY2UgYXZvaWRpbmcg YW55IGluZGlyZWN0aW9uIG92ZXJoZWFkLgoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBMaW9uZWwgTGFuZHdlcmxpbiA8bGlvbmVsLmcu bGFuZHdlcmxpbkBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlICAgICAg ICAgICAgIHwgIDEzICstCiBkcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLXByaXZhdGUuaCAgfCAg MjAgKwogZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1wcm94eS5jICAgIHwgMTg4ICsrKysrKysr KysKIGRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYyAgICAgICAgICB8ICAgNCArLQogZHJpdmVy cy9kbWEtYnVmL3NlbGZ0ZXN0cy5oICAgICAgICAgIHwgICAxICsKIGRyaXZlcnMvZG1hLWJ1Zi9z dC1kbWEtZmVuY2UtcHJveHkuYyB8IDU0MSArKysrKysrKysrKysrKysrKysrKysrKysrKysKIGlu Y2x1ZGUvbGludXgvZG1hLWZlbmNlLXByb3h5LmggICAgICB8ICAyMCArCiA3IGZpbGVzIGNoYW5n ZWQsIDc4MyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtcHJpdmF0ZS5oCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1wcm94eS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgZHJp dmVycy9kbWEtYnVmL3N0LWRtYS1mZW5jZS1wcm94eS5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5j bHVkZS9saW51eC9kbWEtZmVuY2UtcHJveHkuaAoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1 Zi9NYWtlZmlsZSBiL2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQppbmRleCA5YzE5MDAyNmJmYWIu LmFmNzQzYmYwNzIwZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCisrKyBi L2RyaXZlcnMvZG1hLWJ1Zi9NYWtlZmlsZQpAQCAtMSw2ICsxLDEyIEBACiAjIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKLW9iai15IDo9IGRtYS1idWYubyBkbWEtZmVuY2Uu byBkbWEtZmVuY2UtYXJyYXkubyBkbWEtZmVuY2UtY2hhaW4ubyBcCi0JIGRtYS1yZXN2Lm8gc2Vx bm8tZmVuY2Uubworb2JqLXkgOj0gXAorCWRtYS1idWYubyBcCisJZG1hLWZlbmNlLm8gXAorCWRt YS1mZW5jZS1hcnJheS5vIFwKKwlkbWEtZmVuY2UtY2hhaW4ubyBcCisJZG1hLWZlbmNlLXByb3h5 Lm8gXAorCWRtYS1yZXN2Lm8gXAorCXNlcW5vLWZlbmNlLm8KIG9iai0kKENPTkZJR19ETUFCVUZf SEVBUFMpCSs9IGRtYS1oZWFwLm8KIG9iai0kKENPTkZJR19ETUFCVUZfSEVBUFMpCSs9IGhlYXBz Lwogb2JqLSQoQ09ORklHX1NZTkNfRklMRSkJCSs9IHN5bmNfZmlsZS5vCkBAIC05LDYgKzE1LDcg QEAgb2JqLSQoQ09ORklHX1VETUFCVUYpCQkrPSB1ZG1hYnVmLm8KIAogZG1hYnVmX3NlbGZ0ZXN0 cy15IDo9IFwKIAlzZWxmdGVzdC5vIFwKLQlzdC1kbWEtZmVuY2UubworCXN0LWRtYS1mZW5jZS5v IFwKKwlzdC1kbWEtZmVuY2UtcHJveHkubwogCiBvYmotJChDT05GSUdfRE1BQlVGX1NFTEZURVNU UykJKz0gZG1hYnVmX3NlbGZ0ZXN0cy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1h LWZlbmNlLXByaXZhdGUuaCBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtcHJpdmF0ZS5oCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNjkyNGQyOGFmMGZhCi0tLSAv ZGV2L251bGwKKysrIGIvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1wcml2YXRlLmgKQEAgLTAs MCArMSwyMCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLwor LyoKKyAqIEZlbmNlIG1lY2hhbmlzbSBmb3IgZG1hLWJ1ZiBhbmQgdG8gYWxsb3cgZm9yIGFzeW5j aHJvbm91cyBkbWEgYWNjZXNzCisgKgorICogQ29weXJpZ2h0IChDKSAyMDEyIENhbm9uaWNhbCBM dGQKKyAqIENvcHlyaWdodCAoQykgMjAxMiBUZXhhcyBJbnN0cnVtZW50cworICoKKyAqIEF1dGhv cnM6CisgKiBSb2IgQ2xhcmsgPHJvYmRjbGFya0BnbWFpbC5jb20+CisgKiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAY2Fub25pY2FsLmNvbT4KKyAqLworCisjaWZuZGVmIERN QV9GRU5DRV9QUklWQVRFX0gKKyNkZWZpbmUgRE1BX0ZFTkNFX1BSSUFWVEVfSAorCitzdHJ1Y3Qg ZG1hX2ZlbmNlOworCitib29sIF9fZG1hX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UpOworCisjZW5kaWYgLyogRE1BX0ZFTkNFX1BSSUFWVEVfSCAqLwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1wcm94eS5jIGIvZHJpdmVycy9kbWEt YnVmL2RtYS1mZW5jZS1wcm94eS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw MDAwMC4uMmNjMDAwMmRjNDdmCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9kbWEtYnVmL2Rt YS1mZW5jZS1wcm94eS5jCkBAIC0wLDAgKzEsMTg4IEBACisvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMC1vbmx5CisvKgorICogZG1hLWZlbmNlLXByb3h5OiBwbGFjZWhvbGRlciB1 bnNpZ25hbGVkIGZlbmNlCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMTkgSW50ZWwgQ29y cG9yYXRpb24KKyAqLworCisjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+CisjaW5jbHVkZSA8 bGludXgvZG1hLWZlbmNlLXByb3h5Lmg+CisjaW5jbHVkZSA8bGludXgvZXhwb3J0Lmg+CisjaW5j bHVkZSA8bGludXgvaXJxX3dvcmsuaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisKKyNpbmNs dWRlICJkbWEtZmVuY2UtcHJpdmF0ZS5oIgorCitzdHJ1Y3QgZG1hX2ZlbmNlX3Byb3h5IHsKKwlz dHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7CisJc3BpbmxvY2tfdCBsb2NrOworCisJc3RydWN0IGRtYV9m ZW5jZSAqcmVhbDsKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiIGNiOworCXN0cnVjdCBpcnFfd29yayB3 b3JrOworfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5X2dldF9kcml2ZXJfbmFtZShzdHJ1 Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX3Byb3h5ICpwID0gY29u dGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnApLCBiYXNlKTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpy ZWFsID0gUkVBRF9PTkNFKHAtPnJlYWwpOworCisJcmV0dXJuIHJlYWwgPyByZWFsLT5vcHMtPmdl dF9kcml2ZXJfbmFtZShyZWFsKSA6ICJwcm94eSI7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpw cm94eV9nZXRfdGltZWxpbmVfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1 Y3QgZG1hX2ZlbmNlX3Byb3h5ICpwID0gY29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnApLCBi YXNlKTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpyZWFsID0gUkVBRF9PTkNFKHAtPnJlYWwpOworCisJ cmV0dXJuIHJlYWwgPyByZWFsLT5vcHMtPmdldF90aW1lbGluZV9uYW1lKHJlYWwpIDogInVuc2V0 IjsKK30KKworc3RhdGljIHZvaWQgcHJveHlfaXJxX3dvcmsoc3RydWN0IGlycV93b3JrICp3b3Jr KQoreworCXN0cnVjdCBkbWFfZmVuY2VfcHJveHkgKnAgPSBjb250YWluZXJfb2Yod29yaywgdHlw ZW9mKCpwKSwgd29yayk7CisKKwlkbWFfZmVuY2Vfc2lnbmFsKCZwLT5iYXNlKTsKKwlkbWFfZmVu Y2VfcHV0KCZwLT5iYXNlKTsKK30KKworc3RhdGljIHZvaWQgcHJveHlfY2FsbGJhY2soc3RydWN0 IGRtYV9mZW5jZSAqcmVhbCwgc3RydWN0IGRtYV9mZW5jZV9jYiAqY2IpCit7CisJc3RydWN0IGRt YV9mZW5jZV9wcm94eSAqcCA9IGNvbnRhaW5lcl9vZihjYiwgdHlwZW9mKCpwKSwgY2IpOworCisJ aWYgKHJlYWwtPmVycm9yKQorCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZwLT5iYXNlLCByZWFsLT5l cnJvcik7CisKKwlpcnFfd29ya19xdWV1ZSgmcC0+d29yayk7Cit9CisKK3N0YXRpYyBib29sIHBy b3h5X2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpCit7CisJc3RydWN0 IGRtYV9mZW5jZV9wcm94eSAqcCA9IGNvbnRhaW5lcl9vZihmZW5jZSwgdHlwZW9mKCpwKSwgYmFz ZSk7CisJc3RydWN0IGRtYV9mZW5jZSAqcmVhbCA9IFJFQURfT05DRShwLT5yZWFsKTsKKwlib29s IHJldCA9IHRydWU7CisKKwlpZiAocmVhbCkgeworCQlzcGluX2xvY2tfbmVzdGVkKHJlYWwtPmxv Y2ssIFNJTkdMRV9ERVBUSF9ORVNUSU5HKTsKKwkJcmV0ID0gX19kbWFfZmVuY2VfZW5hYmxlX3Np Z25hbGluZyhyZWFsKTsKKwkJc3Bpbl91bmxvY2socmVhbC0+bG9jayk7CisJfQorCisJcmV0dXJu IHJldDsKK30KKworc3RhdGljIHZvaWQgcHJveHlfcmVsZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpm ZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX3Byb3h5ICpwID0gY29udGFpbmVyX29mKGZlbmNl LCB0eXBlb2YoKnApLCBiYXNlKTsKKworCWRtYV9mZW5jZV9wdXQocC0+cmVhbCk7CisJZG1hX2Zl bmNlX2ZyZWUoJnAtPmJhc2UpOworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9v cHMgZG1hX2ZlbmNlX3Byb3h5X29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0gcHJveHlfZ2V0 X2RyaXZlcl9uYW1lLAorCS5nZXRfdGltZWxpbmVfbmFtZSA9IHByb3h5X2dldF90aW1lbGluZV9u YW1lLAorCS5lbmFibGVfc2lnbmFsaW5nID0gcHJveHlfZW5hYmxlX3NpZ25hbGluZywKKwkud2Fp dCA9IGRtYV9mZW5jZV9kZWZhdWx0X3dhaXQsCisJLnJlbGVhc2UgPSBwcm94eV9yZWxlYXNlLAor fTsKKworLyoqCisgKiBkbWFfZmVuY2VfY3JlYXRlX3Byb3h5IC0gQ3JlYXRlIGFuIHVuc2V0IGRt YS1mZW5jZQorICoKKyAqIGRtYV9mZW5jZV9jcmVhdGVfcHJveHkoKSBjcmVhdGVzIGEgbmV3IGRt YV9mZW5jZSBzdHViIHRoYXQgaXMgaW5pdGlhbGx5CisgKiB1bnNpZ25hbGVkIGFuZCBtYXkgbGF0 ZXIgYmUgcmVwbGFjZWQgd2l0aCBhIHJlYWwgZmVuY2UuIEFueSBsaXN0ZW5lcnMKKyAqIHRvIHRo ZSBwcm94eSBmZW5jZSB3aWxsIGJlIHNpZ25hbGVkIHdoZW4gdGhlIHRhcmdldCBmZW5jZSBzaWdu YWxzIGl0cworICogY29tcGxldGlvbi4KKyAqLworc3RydWN0IGRtYV9mZW5jZSAqZG1hX2ZlbmNl X2NyZWF0ZV9wcm94eSh2b2lkKQoreworCXN0cnVjdCBkbWFfZmVuY2VfcHJveHkgKnA7CisKKwlw ID0ga3phbGxvYyhzaXplb2YoKnApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXApCisJCXJldHVybiBO VUxMOworCisJc3Bpbl9sb2NrX2luaXQoJnAtPmxvY2spOworCWRtYV9mZW5jZV9pbml0KCZwLT5i YXNlLCAmZG1hX2ZlbmNlX3Byb3h5X29wcywgJnAtPmxvY2ssCisJCSAgICAgICBkbWFfZmVuY2Vf Y29udGV4dF9hbGxvYygxKSwgMCk7CisJaW5pdF9pcnFfd29yaygmcC0+d29yaywgcHJveHlfaXJx X3dvcmspOworCisJcmV0dXJuICZwLT5iYXNlOworfQorRVhQT1JUX1NZTUJPTChkbWFfZmVuY2Vf Y3JlYXRlX3Byb3h5KTsKKworc3RhdGljIHZvaWQgd3JhcF9zaWduYWxfbG9ja2VkKHN0cnVjdCBk bWFfZmVuY2UgKmZlbmNlLCBzdHJ1Y3QgZG1hX2ZlbmNlICpyZWFsKQoreworCWlmIChyZWFsLT5l cnJvcikKKwkJZG1hX2ZlbmNlX3NldF9lcnJvcihmZW5jZSwgcmVhbC0+ZXJyb3IpOworCWRtYV9m ZW5jZV9zaWduYWxfbG9ja2VkKGZlbmNlKTsKK30KKworc3RhdGljIHZvaWQgcHJveHlfYXNzaWdu KHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlLCBzdHJ1Y3QgZG1hX2ZlbmNlICpyZWFsKQoreworCXN0 cnVjdCBkbWFfZmVuY2VfcHJveHkgKnAgPSBjb250YWluZXJfb2YoZmVuY2UsIHR5cGVvZigqcCks IGJhc2UpOworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwlpZiAoV0FSTl9PTihmZW5jZSA9PSBy ZWFsKSkKKwkJcmV0dXJuOworCisJaWYgKFdBUk5fT04odGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdf U0lHTkFMRURfQklULCAmZmVuY2UtPmZsYWdzKSkpCisJCXJldHVybjsKKworCWlmIChXQVJOX09O KHAtPnJlYWwpKQorCQlyZXR1cm47CisKKwlzcGluX2xvY2tfaXJxc2F2ZShwLT5iYXNlLmxvY2ss IGZsYWdzKTsKKworCWlmICh1bmxpa2VseSghcmVhbCkpIHsKKwkJZG1hX2ZlbmNlX3NpZ25hbF9s b2NrZWQoJnAtPmJhc2UpOworCQlnb3RvIHVubG9jazsKKwl9CisKKwlwLT5yZWFsID0gZG1hX2Zl bmNlX2dldChyZWFsKTsKKworCXNwaW5fbG9ja19uZXN0ZWQocmVhbC0+bG9jaywgU0lOR0xFX0RF UFRIX05FU1RJTkcpOworCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFsZWQocmVhbCkpIHsKKwkJd3Jh cF9zaWduYWxfbG9ja2VkKCZwLT5iYXNlLCByZWFsKTsKKwl9IGVsc2UgaWYgKHRlc3RfYml0KERN QV9GRU5DRV9GTEFHX0VOQUJMRV9TSUdOQUxfQklULAorCQkJICAgICZwLT5iYXNlLmZsYWdzKSAm JgorCQkgICAhX19kbWFfZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhyZWFsKSkgeworCQl3cmFwX3Np Z25hbF9sb2NrZWQoJnAtPmJhc2UsIHJlYWwpOworCX0gZWxzZSB7CisJCWRtYV9mZW5jZV9nZXQo JnAtPmJhc2UpOworCQlwLT5jYi5mdW5jID0gcHJveHlfY2FsbGJhY2s7CisJCWxpc3RfYWRkX3Rh aWwoJnAtPmNiLm5vZGUsICZyZWFsLT5jYl9saXN0KTsKKwl9CisJc3Bpbl91bmxvY2socmVhbC0+ bG9jayk7CisKK3VubG9jazoKKwlzcGluX3VubG9ja19pcnFyZXN0b3JlKHAtPmJhc2UubG9jaywg ZmxhZ3MpOworfQorCisvKioKKyAqIGRtYV9mZW5jZV9yZXBsYWNlX3Byb3h5IC0gUmVwbGFjZSB0 aGUgcHJveHkgZmVuY2Ugd2l0aCB0aGUgcmVhbCB0YXJnZXQKKyAqIEBzbG90OiBwb2ludGVyIHRv IGxvY2F0aW9uIG9mIGZlbmNlIHRvIHVwZGF0ZQorICogQGZlbmNlOiB0aGUgbmV3IGZlbmNlIHRv IHN0b3JlIGluIEBzbG90CisgKgorICogT25jZSB0aGUgcmVhbCBkbWFfZmVuY2UgaXMga25vd24s IHdlIGNhbiByZXBsYWNlIHRoZSBwcm94eSBmZW5jZSBob2xkZXIKKyAqIHdpdGggYSBwb2ludGVy IHRvIHRoZSByZWFsIGRtYSBmZW5jZS4gRnV0dXJlIGxpc3RlbmVycyB3aWxsIGF0dGFjaCB0bwor ICogdGhlIHJlYWwgZmVuY2UsIGF2b2lkaW5nIGFueSBpbmRpcmVjdGlvbiBvdmVyaGVhZC4gUHJl dmlvdXMgbGlzdGVuZXJzCisgKiB3aWxsIHJlbWFpbiBhdHRhY2hlZCB0byB0aGUgcHJveHkgZmVu Y2UsIGFuZCBiZSBzaWduYWxlZCBpbiB0dXJuIHdoZW4KKyAqIHRoZSB0YXJnZXQgZmVuY2UgY29t cGxldGVzLgorICovCitzdHJ1Y3QgZG1hX2ZlbmNlICoKK2RtYV9mZW5jZV9yZXBsYWNlX3Byb3h5 KHN0cnVjdCBkbWFfZmVuY2UgX19yY3UgKipzbG90LCBzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkK K3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpvbGQ7CisKKwlpZiAoZmVuY2UpCisJCWRtYV9mZW5jZV9n ZXQoZmVuY2UpOworCisJb2xkID0gcmN1X3JlcGxhY2VfcG9pbnRlcigqc2xvdCwgZmVuY2UsIHRy dWUpOworCWlmIChvbGQgJiYgb2xkLT5vcHMgPT0gJmRtYV9mZW5jZV9wcm94eV9vcHMpCisJCXBy b3h5X2Fzc2lnbihvbGQsIGZlbmNlKTsKKworCXJldHVybiBvbGQ7Cit9CitFWFBPUlRfU1lNQk9M KGRtYV9mZW5jZV9yZXBsYWNlX3Byb3h5KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9k bWEtZmVuY2UuYyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYwppbmRleCAwNTJhNDFlMjQ1 MWMuLmZhN2JlZGM2NzAzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5j CisrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UuYwpAQCAtMTksNiArMTksOCBAQAogI2Rl ZmluZSBDUkVBVEVfVFJBQ0VfUE9JTlRTCiAjaW5jbHVkZSA8dHJhY2UvZXZlbnRzL2RtYV9mZW5j ZS5oPgogCisjaW5jbHVkZSAiZG1hLWZlbmNlLXByaXZhdGUuaCIKKwogRVhQT1JUX1RSQUNFUE9J TlRfU1lNQk9MKGRtYV9mZW5jZV9lbWl0KTsKIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChkbWFf ZmVuY2VfZW5hYmxlX3NpZ25hbCk7CiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woZG1hX2ZlbmNl X3NpZ25hbGVkKTsKQEAgLTI3Myw3ICsyNzUsNyBAQCB2b2lkIGRtYV9mZW5jZV9mcmVlKHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlKQogfQogRVhQT1JUX1NZTUJPTChkbWFfZmVuY2VfZnJlZSk7CiAK LXN0YXRpYyBib29sIF9fZG1hX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRtYV9mZW5j ZSAqZmVuY2UpCitib29sIF9fZG1hX2ZlbmNlX2VuYWJsZV9zaWduYWxpbmcoc3RydWN0IGRtYV9m ZW5jZSAqZmVuY2UpCiB7CiAJYm9vbCB3YXNfc2V0OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Rt YS1idWYvc2VsZnRlc3RzLmggYi9kcml2ZXJzL2RtYS1idWYvc2VsZnRlc3RzLmgKaW5kZXggNTMy MDM4NmYwMmU1Li4wNzBhMTU3ZGU1NTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9zZWxm dGVzdHMuaAorKysgYi9kcml2ZXJzL2RtYS1idWYvc2VsZnRlc3RzLmgKQEAgLTExLDMgKzExLDQg QEAKICAqLwogc2VsZnRlc3Qoc2FuaXR5Y2hlY2ssIF9fc2FuaXR5Y2hlY2tfXykgLyoga2VlcCBm aXJzdCAoaWd0IHNlbGZjaGVjaykgKi8KIHNlbGZ0ZXN0KGRtYV9mZW5jZSwgZG1hX2ZlbmNlKQor c2VsZnRlc3QoZG1hX2ZlbmNlX3Byb3h5LCBkbWFfZmVuY2VfcHJveHkpCmRpZmYgLS1naXQgYS9k cml2ZXJzL2RtYS1idWYvc3QtZG1hLWZlbmNlLXByb3h5LmMgYi9kcml2ZXJzL2RtYS1idWYvc3Qt ZG1hLWZlbmNlLXByb3h5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw Li40ZTA2NmI4ZTVhN2YKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2RtYS1idWYvc3QtZG1h LWZlbmNlLXByb3h5LmMKQEAgLTAsMCArMSw1NDEgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBNSVQKKy8qCisgKiBDb3B5cmlnaHQgwqkgMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICov CisKKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPgorI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5o PgorI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS1wcm94eS5oPgorI2luY2x1ZGUgPGxpbnV4L2tl cm5lbC5oPgorI2luY2x1ZGUgPGxpbnV4L3NjaGVkL3NpZ25hbC5oPgorI2luY2x1ZGUgPGxpbnV4 L3NsYWIuaD4KKyNpbmNsdWRlIDxsaW51eC9zcGlubG9jay5oPgorCisjaW5jbHVkZSAic2VsZnRl c3QuaCIKKworc3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpzbGFiX2ZlbmNlczsKKworc3RhdGlj IHN0cnVjdCBtb2NrX2ZlbmNlIHsKKwlzdHJ1Y3QgZG1hX2ZlbmNlIGJhc2U7CisJc3BpbmxvY2tf dCBsb2NrOworfSAqdG9fbW9ja19mZW5jZShzdHJ1Y3QgZG1hX2ZlbmNlICpmKSB7CisJcmV0dXJu IGNvbnRhaW5lcl9vZihmLCBzdHJ1Y3QgbW9ja19mZW5jZSwgYmFzZSk7Cit9CisKK3N0YXRpYyBj b25zdCBjaGFyICptb2NrX25hbWUoc3RydWN0IGRtYV9mZW5jZSAqZikKK3sKKwlyZXR1cm4gIm1v Y2siOworfQorCitzdGF0aWMgdm9pZCBtb2NrX2ZlbmNlX3JlbGVhc2Uoc3RydWN0IGRtYV9mZW5j ZSAqZikKK3sKKwlrbWVtX2NhY2hlX2ZyZWUoc2xhYl9mZW5jZXMsIHRvX21vY2tfZmVuY2UoZikp OworfQorCitzdGF0aWMgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgbW9ja19vcHMgPSB7CisJ LmdldF9kcml2ZXJfbmFtZSA9IG1vY2tfbmFtZSwKKwkuZ2V0X3RpbWVsaW5lX25hbWUgPSBtb2Nr X25hbWUsCisJLnJlbGVhc2UgPSBtb2NrX2ZlbmNlX3JlbGVhc2UsCit9OworCitzdGF0aWMgc3Ry dWN0IGRtYV9mZW5jZSAqbW9ja19mZW5jZSh2b2lkKQoreworCXN0cnVjdCBtb2NrX2ZlbmNlICpm OworCisJZiA9IGttZW1fY2FjaGVfYWxsb2Moc2xhYl9mZW5jZXMsIEdGUF9LRVJORUwpOworCWlm ICghZikKKwkJcmV0dXJuIE5VTEw7CisKKwlzcGluX2xvY2tfaW5pdCgmZi0+bG9jayk7CisJZG1h X2ZlbmNlX2luaXQoJmYtPmJhc2UsICZtb2NrX29wcywgJmYtPmxvY2ssIDAsIDApOworCisJcmV0 dXJuICZmLT5iYXNlOworfQorCitzdGF0aWMgaW50IHNhbml0eWNoZWNrKHZvaWQgKmFyZykKK3sK KwlzdHJ1Y3QgZG1hX2ZlbmNlICpmOworCisJZiA9IGRtYV9mZW5jZV9jcmVhdGVfcHJveHkoKTsK KwlpZiAoIWYpCisJCXJldHVybiAtRU5PTUVNOworCisJZG1hX2ZlbmNlX3NpZ25hbChmKTsKKwlk bWFfZmVuY2VfcHV0KGYpOworCisJcmV0dXJuIDA7Cit9CisKK3N0cnVjdCBmZW5jZXMgeworCXN0 cnVjdCBkbWFfZmVuY2UgKnJlYWw7CisJc3RydWN0IGRtYV9mZW5jZSAqcHJveHk7CisJc3RydWN0 IGRtYV9mZW5jZSBfX3JjdSAqc2xvdDsKK307CisKK3N0YXRpYyBpbnQgY3JlYXRlX2ZlbmNlcyhz dHJ1Y3QgZmVuY2VzICpmLCBib29sIGF0dGFjaCkKK3sKKwlmLT5wcm94eSA9IGRtYV9mZW5jZV9j cmVhdGVfcHJveHkoKTsKKwlpZiAoIWYtPnByb3h5KQorCQlyZXR1cm4gLUVOT01FTTsKKworCVJD VV9JTklUX1BPSU5URVIoZi0+c2xvdCwgZi0+cHJveHkpOworCisJZi0+cmVhbCA9IG1vY2tfZmVu Y2UoKTsKKwlpZiAoIWYtPnJlYWwpIHsKKwkJZG1hX2ZlbmNlX3B1dChmLT5wcm94eSk7CisJCXJl dHVybiAtRU5PTUVNOworCX0KKworCWlmIChhdHRhY2gpCisJCWRtYV9mZW5jZV9yZXBsYWNlX3By b3h5KCZmLT5zbG90LCBmLT5yZWFsKTsKKworCXJldHVybiAwOworfQorCitzdGF0aWMgdm9pZCBm cmVlX2ZlbmNlcyhzdHJ1Y3QgZmVuY2VzICpmKQoreworCWRtYV9mZW5jZV9wdXQoZG1hX2ZlbmNl X3JlcGxhY2VfcHJveHkoJmYtPnNsb3QsIE5VTEwpKTsKKwlkbWFfZmVuY2VfcHV0KGYtPnJlYWwp OworCWRtYV9mZW5jZV9wdXQoZi0+cHJveHkpOworfQorCitzdGF0aWMgaW50IHdyYXBfc2lnbmFs aW5nKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZmVuY2VzIGY7CisJaW50IGVyciA9IC1FSU5WQUw7 CisKKwlpZiAoY3JlYXRlX2ZlbmNlcygmZiwgdHJ1ZSkpCisJCXJldHVybiAtRU5PTUVNOworCisJ aWYgKGRtYV9mZW5jZV9pc19zaWduYWxlZChmLnByb3h5KSkgeworCQlwcl9lcnIoIkZlbmNlIHVu ZXhwZWN0ZWRseSBzaWduYWxlZCBvbiBjcmVhdGlvblxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJ fQorCisJaWYgKGRtYV9mZW5jZV9zaWduYWwoZi5yZWFsKSkgeworCQlwcl9lcnIoIkZlbmNlIHJl cG9ydGVkIGJlaW5nIGFscmVhZHkgc2lnbmFsZWRcbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0K KworCWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGYucHJveHkpKSB7CisJCXByX2VycigiRmVu Y2Ugbm90IHJlcG9ydGluZyBzaWduYWxlZFxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJ ZXJyID0gMDsKK2Vycl9mcmVlOgorCWZyZWVfZmVuY2VzKCZmKTsKKwlyZXR1cm4gZXJyOworfQor CitzdGF0aWMgaW50IHdyYXBfc2lnbmFsaW5nX3JlY3Vyc2Uodm9pZCAqYXJnKQoreworCXN0cnVj dCBmZW5jZXMgZjsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpjaGFpbjsKKwlpbnQgZXJyID0gLUVJTlZB TDsKKworCWlmIChjcmVhdGVfZmVuY2VzKCZmLCBmYWxzZSkpCisJCXJldHVybiAtRU5PTUVNOwor CisJY2hhaW4gPSBkbWFfZmVuY2VfY3JlYXRlX3Byb3h5KCk7CisJaWYgKCFjaGFpbikgeworCQll cnIgPSAtRU5PTUVNOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWRtYV9mZW5jZV9yZXBsYWNl X3Byb3h5KCZmLnNsb3QsIGNoYWluKTsKKwlkbWFfZmVuY2VfcHV0KGRtYV9mZW5jZV9yZXBsYWNl X3Byb3h5KCZmLnNsb3QsIGYucmVhbCkpOworCWRtYV9mZW5jZV9wdXQoY2hhaW4pOworCisJLyog Zi5yZWFsIDwtIGNoYWluIDwtIGYucHJveHkgKi8KKworCWlmIChkbWFfZmVuY2VfaXNfc2lnbmFs ZWQoZi5wcm94eSkpIHsKKwkJcHJfZXJyKCJGZW5jZSB1bmV4cGVjdGVkbHkgc2lnbmFsZWQgb24g Y3JlYXRpb25cbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWlmIChkbWFfZmVuY2Vfc2ln bmFsKGYucmVhbCkpIHsKKwkJcHJfZXJyKCJGZW5jZSByZXBvcnRlZCBiZWluZyBhbHJlYWR5IHNp Z25hbGVkXG4iKTsKKwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlpZiAoIWRtYV9mZW5jZV9pc19z aWduYWxlZChmLnByb3h5KSkgeworCQlwcl9lcnIoIkZlbmNlIG5vdCByZXBvcnRpbmcgc2lnbmFs ZWRcbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWVyciA9IDA7CitlcnJfZnJlZToKKwlm cmVlX2ZlbmNlcygmZik7CisJcmV0dXJuIGVycjsKK30KKworc3RydWN0IHNpbXBsZV9jYiB7CisJ c3RydWN0IGRtYV9mZW5jZV9jYiBjYjsKKwlib29sIHNlZW47Cit9OworCitzdGF0aWMgdm9pZCBz aW1wbGVfY2FsbGJhY2soc3RydWN0IGRtYV9mZW5jZSAqZiwgc3RydWN0IGRtYV9mZW5jZV9jYiAq Y2IpCit7CisJc21wX3N0b3JlX21iKGNvbnRhaW5lcl9vZihjYiwgc3RydWN0IHNpbXBsZV9jYiwg Y2IpLT5zZWVuLCB0cnVlKTsKK30KKworc3RhdGljIGludCB3cmFwX2FkZF9jYWxsYmFjayh2b2lk ICphcmcpCit7CisJc3RydWN0IHNpbXBsZV9jYiBjYiA9IHt9OworCXN0cnVjdCBmZW5jZXMgZjsK KwlpbnQgZXJyID0gLUVJTlZBTDsKKworCWlmIChjcmVhdGVfZmVuY2VzKCZmLCB0cnVlKSkKKwkJ cmV0dXJuIC1FTk9NRU07CisKKwlpZiAoZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLnByb3h5LCAm Y2IuY2IsIHNpbXBsZV9jYWxsYmFjaykpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gYWRkIGNhbGxi YWNrLCBmZW5jZSBhbHJlYWR5IHNpZ25hbGVkIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQor CisJZG1hX2ZlbmNlX3NpZ25hbChmLnJlYWwpOworCWlmICghY2Iuc2VlbikgeworCQlwcl9lcnIo IkNhbGxiYWNrIGZhaWxlZCFcbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWVyciA9IDA7 CitlcnJfZnJlZToKKwlmcmVlX2ZlbmNlcygmZik7CisJcmV0dXJuIGVycjsKK30KKworc3RhdGlj IGludCB3cmFwX2xhdGVfYWRkX2NhbGxiYWNrKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qgc2ltcGxl X2NiIGNiID0ge307CisJc3RydWN0IGZlbmNlcyBmOworCWludCBlcnIgPSAtRUlOVkFMOworCisJ aWYgKGNyZWF0ZV9mZW5jZXMoJmYsIHRydWUpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRtYV9m ZW5jZV9zaWduYWwoZi5yZWFsKTsKKworCWlmICghZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLnBy b3h5LCAmY2IuY2IsIHNpbXBsZV9jYWxsYmFjaykpIHsKKwkJcHJfZXJyKCJBZGRlZCBjYWxsYmFj aywgYnV0IGZlbmNlIHdhcyBhbHJlYWR5IHNpZ25hbGVkIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7 CisJfQorCisJZG1hX2ZlbmNlX3NpZ25hbChmLnJlYWwpOworCWlmIChjYi5zZWVuKSB7CisJCXBy X2VycigiQ2FsbGJhY2sgY2FsbGVkIGFmdGVyIGZhaWxlZCBhdHRhY2htZW50IVxuIik7CisJCWdv dG8gZXJyX2ZyZWU7CisJfQorCisJZXJyID0gMDsKK2Vycl9mcmVlOgorCWZyZWVfZmVuY2VzKCZm KTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHdyYXBfZWFybHlfYWRkX2NhbGxiYWNr KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qgc2ltcGxlX2NiIGNiID0ge307CisJc3RydWN0IGZlbmNl cyBmOworCWludCBlcnIgPSAtRUlOVkFMOworCisJaWYgKGNyZWF0ZV9mZW5jZXMoJmYsIGZhbHNl KSkKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlpZiAoZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLnBy b3h5LCAmY2IuY2IsIHNpbXBsZV9jYWxsYmFjaykpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gYWRk IGNhbGxiYWNrLCBmZW5jZSBhbHJlYWR5IHNpZ25hbGVkIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7 CisJfQorCisJZG1hX2ZlbmNlX3JlcGxhY2VfcHJveHkoJmYuc2xvdCwgZi5yZWFsKTsKKwlkbWFf ZmVuY2Vfc2lnbmFsKGYucmVhbCk7CisJaWYgKCFjYi5zZWVuKSB7CisJCXByX2VycigiQ2FsbGJh Y2sgZmFpbGVkIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJZXJyID0gMDsKK2Vycl9m cmVlOgorCWZyZWVfZmVuY2VzKCZmKTsKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50IHdy YXBfZWFybHlfYWRkX2NhbGxiYWNrX2xhdGUodm9pZCAqYXJnKQoreworCXN0cnVjdCBzaW1wbGVf Y2IgY2IgPSB7fTsKKwlzdHJ1Y3QgZmVuY2VzIGY7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlp ZiAoY3JlYXRlX2ZlbmNlcygmZiwgZmFsc2UpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWRtYV9m ZW5jZV9zaWduYWwoZi5yZWFsKTsKKworCWlmIChkbWFfZmVuY2VfYWRkX2NhbGxiYWNrKGYucHJv eHksICZjYi5jYiwgc2ltcGxlX2NhbGxiYWNrKSkgeworCQlwcl9lcnIoIkZhaWxlZCB0byBhZGQg Y2FsbGJhY2ssIGZlbmNlIGFscmVhZHkgc2lnbmFsZWQhXG4iKTsKKwkJZ290byBlcnJfZnJlZTsK Kwl9CisKKwlkbWFfZmVuY2VfcmVwbGFjZV9wcm94eSgmZi5zbG90LCBmLnJlYWwpOworCWRtYV9m ZW5jZV9zaWduYWwoZi5yZWFsKTsKKwlpZiAoIWNiLnNlZW4pIHsKKwkJcHJfZXJyKCJDYWxsYmFj ayBmYWlsZWQhXG4iKTsKKwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwllcnIgPSAwOworZXJyX2Zy ZWU6CisJZnJlZV9mZW5jZXMoJmYpOworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgd3Jh cF9lYXJseV9hZGRfY2FsbGJhY2tfZWFybHkodm9pZCAqYXJnKQoreworCXN0cnVjdCBzaW1wbGVf Y2IgY2IgPSB7fTsKKwlzdHJ1Y3QgZmVuY2VzIGY7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlp ZiAoY3JlYXRlX2ZlbmNlcygmZiwgZmFsc2UpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChk bWFfZmVuY2VfYWRkX2NhbGxiYWNrKGYucHJveHksICZjYi5jYiwgc2ltcGxlX2NhbGxiYWNrKSkg eworCQlwcl9lcnIoIkZhaWxlZCB0byBhZGQgY2FsbGJhY2ssIGZlbmNlIGFscmVhZHkgc2lnbmFs ZWQhXG4iKTsKKwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlkbWFfZmVuY2VfcmVwbGFjZV9wcm94 eSgmZi5zbG90LCBmLnJlYWwpOworCWRtYV9mZW5jZV9zaWduYWwoZi5yZWFsKTsKKwlpZiAoIWNi LnNlZW4pIHsKKwkJcHJfZXJyKCJDYWxsYmFjayBmYWlsZWQhXG4iKTsKKwkJZ290byBlcnJfZnJl ZTsKKwl9CisKKwllcnIgPSAwOworZXJyX2ZyZWU6CisJZnJlZV9mZW5jZXMoJmYpOworCXJldHVy biBlcnI7Cit9CisKK3N0YXRpYyBpbnQgd3JhcF9ybV9jYWxsYmFjayh2b2lkICphcmcpCit7CisJ c3RydWN0IHNpbXBsZV9jYiBjYiA9IHt9OworCXN0cnVjdCBmZW5jZXMgZjsKKwlpbnQgZXJyID0g LUVJTlZBTDsKKworCWlmIChjcmVhdGVfZmVuY2VzKCZmLCB0cnVlKSkKKwkJcmV0dXJuIC1FTk9N RU07CisKKwlpZiAoZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLnByb3h5LCAmY2IuY2IsIHNpbXBs ZV9jYWxsYmFjaykpIHsKKwkJcHJfZXJyKCJGYWlsZWQgdG8gYWRkIGNhbGxiYWNrLCBmZW5jZSBh bHJlYWR5IHNpZ25hbGVkIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJaWYgKCFkbWFf ZmVuY2VfcmVtb3ZlX2NhbGxiYWNrKGYucHJveHksICZjYi5jYikpIHsKKwkJcHJfZXJyKCJGYWls ZWQgdG8gcmVtb3ZlIGNhbGxiYWNrIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJZG1h X2ZlbmNlX3NpZ25hbChmLnJlYWwpOworCWlmIChjYi5zZWVuKSB7CisJCXByX2VycigiQ2FsbGJh Y2sgc3RpbGwgc2lnbmFsZWQgYWZ0ZXIgcmVtb3ZhbCFcbiIpOworCQlnb3RvIGVycl9mcmVlOwor CX0KKworCWVyciA9IDA7CitlcnJfZnJlZToKKwlmcmVlX2ZlbmNlcygmZik7CisJcmV0dXJuIGVy cjsKK30KKworc3RhdGljIGludCB3cmFwX2xhdGVfcm1fY2FsbGJhY2sodm9pZCAqYXJnKQorewor CXN0cnVjdCBzaW1wbGVfY2IgY2IgPSB7fTsKKwlzdHJ1Y3QgZmVuY2VzIGY7CisJaW50IGVyciA9 IC1FSU5WQUw7CisKKwlpZiAoY3JlYXRlX2ZlbmNlcygmZiwgdHJ1ZSkpCisJCXJldHVybiAtRU5P TUVNOworCisJaWYgKGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZi5wcm94eSwgJmNiLmNiLCBzaW1w bGVfY2FsbGJhY2spKSB7CisJCXByX2VycigiRmFpbGVkIHRvIGFkZCBjYWxsYmFjaywgZmVuY2Ug YWxyZWFkeSBzaWduYWxlZCFcbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWRtYV9mZW5j ZV9zaWduYWwoZi5yZWFsKTsKKwlpZiAoIWNiLnNlZW4pIHsKKwkJcHJfZXJyKCJDYWxsYmFjayBm YWlsZWQhXG4iKTsKKwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlpZiAoZG1hX2ZlbmNlX3JlbW92 ZV9jYWxsYmFjayhmLnByb3h5LCAmY2IuY2IpKSB7CisJCXByX2VycigiQ2FsbGJhY2sgcmVtb3Zh bCBzdWNjZWVkIGFmdGVyIGJlaW5nIGV4ZWN1dGVkIVxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJ fQorCisJZXJyID0gMDsKK2Vycl9mcmVlOgorCWZyZWVfZmVuY2VzKCZmKTsKKwlyZXR1cm4gZXJy OworfQorCitzdGF0aWMgaW50IHdyYXBfc3RhdHVzKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZmVu Y2VzIGY7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlpZiAoY3JlYXRlX2ZlbmNlcygmZiwgdHJ1 ZSkpCisJCXJldHVybiAtRU5PTUVNOworCisJaWYgKGRtYV9mZW5jZV9nZXRfc3RhdHVzKGYucHJv eHkpKSB7CisJCXByX2VycigiRmVuY2UgdW5leHBlY3RlZGx5IGhhcyBzaWduYWxlZCBzdGF0dXMg b24gY3JlYXRpb25cbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWRtYV9mZW5jZV9zaWdu YWwoZi5yZWFsKTsKKwlpZiAoIWRtYV9mZW5jZV9nZXRfc3RhdHVzKGYucHJveHkpKSB7CisJCXBy X2VycigiRmVuY2Ugbm90IHJlcG9ydGluZyBzaWduYWxlZCBzdGF0dXNcbiIpOworCQlnb3RvIGVy cl9mcmVlOworCX0KKworCWVyciA9IDA7CitlcnJfZnJlZToKKwlmcmVlX2ZlbmNlcygmZik7CisJ cmV0dXJuIGVycjsKK30KKworc3RhdGljIGludCB3cmFwX2Vycm9yKHZvaWQgKmFyZykKK3sKKwlz dHJ1Y3QgZmVuY2VzIGY7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlpZiAoY3JlYXRlX2ZlbmNl cygmZiwgdHJ1ZSkpCisJCXJldHVybiAtRU5PTUVNOworCisJZG1hX2ZlbmNlX3NldF9lcnJvcihm LnJlYWwsIC1FSU8pOworCisJaWYgKGRtYV9mZW5jZV9nZXRfc3RhdHVzKGYucHJveHkpKSB7CisJ CXByX2VycigiRmVuY2UgdW5leHBlY3RlZGx5IGhhcyBlcnJvciBzdGF0dXMgYmVmb3JlIHNpZ25h bFxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJZG1hX2ZlbmNlX3NpZ25hbChmLnJlYWwp OworCWlmIChkbWFfZmVuY2VfZ2V0X3N0YXR1cyhmLnByb3h5KSAhPSAtRUlPKSB7CisJCXByX2Vy cigiRmVuY2Ugbm90IHJlcG9ydGluZyBlcnJvciBzdGF0dXMsIGdvdCAlZFxuIiwKKwkJICAgICAg IGRtYV9mZW5jZV9nZXRfc3RhdHVzKGYucHJveHkpKTsKKwkJZ290byBlcnJfZnJlZTsKKwl9CisK KwllcnIgPSAwOworZXJyX2ZyZWU6CisJZnJlZV9mZW5jZXMoJmYpOworCXJldHVybiBlcnI7Cit9 CisKK3N0YXRpYyBpbnQgd3JhcF93YWl0KHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3QgZmVuY2VzIGY7 CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlpZiAoY3JlYXRlX2ZlbmNlcygmZiwgdHJ1ZSkpCisJ CXJldHVybiAtRU5PTUVNOworCisJaWYgKGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZi5wcm94eSwg ZmFsc2UsIDApICE9IDApIHsKKwkJcHJfZXJyKCJXYWl0IHJlcG9ydGVkIGNvbXBsZXRlIGJlZm9y ZSBiZWluZyBzaWduYWxlZFxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJZG1hX2ZlbmNl X3NpZ25hbChmLnJlYWwpOworCisJaWYgKGRtYV9mZW5jZV93YWl0X3RpbWVvdXQoZi5wcm94eSwg ZmFsc2UsIDApID09IDApIHsKKwkJcHJfZXJyKCJXYWl0IHJlcG9ydGVkIGluY29tcGxldGUgYWZ0 ZXIgYmVpbmcgc2lnbmFsZWRcbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKworCWVyciA9IDA7 CitlcnJfZnJlZToKKwlkbWFfZmVuY2Vfc2lnbmFsKGYucmVhbCk7CisJZnJlZV9mZW5jZXMoJmYp OworCXJldHVybiBlcnI7Cit9CisKK3N0cnVjdCB3YWl0X3RpbWVyIHsKKwlzdHJ1Y3QgdGltZXJf bGlzdCB0aW1lcjsKKwlzdHJ1Y3QgZmVuY2VzIGY7Cit9OworCitzdGF0aWMgdm9pZCB3YWl0X3Rp bWVyKHN0cnVjdCB0aW1lcl9saXN0ICp0aW1lcikKK3sKKwlzdHJ1Y3Qgd2FpdF90aW1lciAqd3Qg PSBmcm9tX3RpbWVyKHd0LCB0aW1lciwgdGltZXIpOworCisJZG1hX2ZlbmNlX3NpZ25hbCh3dC0+ Zi5yZWFsKTsKK30KKworc3RhdGljIGludCB3cmFwX3dhaXRfdGltZW91dCh2b2lkICphcmcpCit7 CisJc3RydWN0IHdhaXRfdGltZXIgd3Q7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlpZiAoY3Jl YXRlX2ZlbmNlcygmd3QuZiwgdHJ1ZSkpCisJCXJldHVybiAtRU5PTUVNOworCisJdGltZXJfc2V0 dXBfb25fc3RhY2soJnd0LnRpbWVyLCB3YWl0X3RpbWVyLCAwKTsKKworCWlmIChkbWFfZmVuY2Vf d2FpdF90aW1lb3V0KHd0LmYucHJveHksIGZhbHNlLCAxKSAhPSAwKSB7CisJCXByX2VycigiV2Fp dCByZXBvcnRlZCBjb21wbGV0ZSBiZWZvcmUgYmVpbmcgc2lnbmFsZWRcbiIpOworCQlnb3RvIGVy cl9mcmVlOworCX0KKworCW1vZF90aW1lcigmd3QudGltZXIsIGppZmZpZXMgKyAxKTsKKworCWlm IChkbWFfZmVuY2Vfd2FpdF90aW1lb3V0KHd0LmYucHJveHksIGZhbHNlLCAyKSAhPSAwKSB7CisJ CWlmICh0aW1lcl9wZW5kaW5nKCZ3dC50aW1lcikpIHsKKwkJCXByX25vdGljZSgiVGltZXIgZGlk IG5vdCBmaXJlIHdpdGhpbiB0aGUgamlmZmllIVxuIik7CisJCQllcnIgPSAwOyAvKiBub3Qgb3Vy IGZhdWx0ISAqLworCQl9IGVsc2UgeworCQkJcHJfZXJyKCJXYWl0IHJlcG9ydGVkIGluY29tcGxl dGUgYWZ0ZXIgdGltZW91dFxuIik7CisJCX0KKwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwllcnIg PSAwOworZXJyX2ZyZWU6CisJZGVsX3RpbWVyX3N5bmMoJnd0LnRpbWVyKTsKKwlkZXN0cm95X3Rp bWVyX29uX3N0YWNrKCZ3dC50aW1lcik7CisJZG1hX2ZlbmNlX3NpZ25hbCh3dC5mLnJlYWwpOwor CWZyZWVfZmVuY2VzKCZ3dC5mKTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQgZG1hX2ZlbmNlX3By b3h5KHZvaWQpCit7CisJc3RhdGljIGNvbnN0IHN0cnVjdCBzdWJ0ZXN0IHRlc3RzW10gPSB7CisJ CVNVQlRFU1Qoc2FuaXR5Y2hlY2spLAorCQlTVUJURVNUKHdyYXBfc2lnbmFsaW5nKSwKKwkJU1VC VEVTVCh3cmFwX3NpZ25hbGluZ19yZWN1cnNlKSwKKwkJU1VCVEVTVCh3cmFwX2FkZF9jYWxsYmFj ayksCisJCVNVQlRFU1Qod3JhcF9sYXRlX2FkZF9jYWxsYmFjayksCisJCVNVQlRFU1Qod3JhcF9l YXJseV9hZGRfY2FsbGJhY2spLAorCQlTVUJURVNUKHdyYXBfZWFybHlfYWRkX2NhbGxiYWNrX2xh dGUpLAorCQlTVUJURVNUKHdyYXBfZWFybHlfYWRkX2NhbGxiYWNrX2Vhcmx5KSwKKwkJU1VCVEVT VCh3cmFwX3JtX2NhbGxiYWNrKSwKKwkJU1VCVEVTVCh3cmFwX2xhdGVfcm1fY2FsbGJhY2spLAor CQlTVUJURVNUKHdyYXBfc3RhdHVzKSwKKwkJU1VCVEVTVCh3cmFwX2Vycm9yKSwKKwkJU1VCVEVT VCh3cmFwX3dhaXQpLAorCQlTVUJURVNUKHdyYXBfd2FpdF90aW1lb3V0KSwKKwl9OworCWludCBy ZXQ7CisKKwlzbGFiX2ZlbmNlcyA9IEtNRU1fQ0FDSEUobW9ja19mZW5jZSwKKwkJCQkgU0xBQl9U WVBFU0FGRV9CWV9SQ1UgfAorCQkJCSBTTEFCX0hXQ0FDSEVfQUxJR04pOworCWlmICghc2xhYl9m ZW5jZXMpCisJCXJldHVybiAtRU5PTUVNOworCisJcmV0ID0gc3VidGVzdHModGVzdHMsIE5VTEwp OworCisJa21lbV9jYWNoZV9kZXN0cm95KHNsYWJfZmVuY2VzKTsKKworCXJldHVybiByZXQ7Cit9 CmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2RtYS1mZW5jZS1wcm94eS5oIGIvaW5jbHVkZS9s aW51eC9kbWEtZmVuY2UtcHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMDAuLjU4N2Q1MDQ0ZjBiZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvZG1h LWZlbmNlLXByb3h5LmgKQEAgLTAsMCArMSwyMCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEdQTC0yLjAtb25seSAqLworLyoKKyAqIGRtYS1mZW5jZS1wcm94eTogYWxsb3dzIHdhaXRp bmcgdXBvbiB1bnNldCBhbmQgZnV0dXJlIGZlbmNlcworICoKKyAqIENvcHlyaWdodCAoQykgMjAx NyBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpZm5kZWYgX19MSU5VWF9ETUFfRkVOQ0VfUFJP WFlfSAorI2RlZmluZSBfX0xJTlVYX0RNQV9GRU5DRV9QUk9YWV9ICisKKyNpbmNsdWRlIDxsaW51 eC9rZXJuZWwuaD4KKworc3RydWN0IGRtYV9mZW5jZTsKKworc3RydWN0IGRtYV9mZW5jZSAqZG1h X2ZlbmNlX2NyZWF0ZV9wcm94eSh2b2lkKTsKKworc3RydWN0IGRtYV9mZW5jZSAqCitkbWFfZmVu Y2VfcmVwbGFjZV9wcm94eShzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICoqc2xvdCwgc3RydWN0IGRt YV9mZW5jZSAqZmVuY2UpOworCisjZW5kaWYgLyogX19MSU5VWF9ETUFfRkVOQ0VfUFJPWFlfSCAq LwotLSAKMi4yNS4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n ZngK