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.8 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,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 EE54DC10F00 for ; Fri, 6 Mar 2020 13:39:36 +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 CF65F2072D for ; Fri, 6 Mar 2020 13:39:36 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CF65F2072D 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 9473D6ED0F; Fri, 6 Mar 2020 13:39:33 +0000 (UTC) Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id 656366ED17 for ; Fri, 6 Mar 2020 13:39:28 +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 20467747-1500050 for multiple; Fri, 06 Mar 2020 13:38:54 +0000 From: Chris Wilson To: intel-gfx@lists.freedesktop.org Date: Fri, 6 Mar 2020 13:38:47 +0000 Message-Id: <20200306133852.3420322-12-chris@chris-wilson.co.uk> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200306133852.3420322-1-chris@chris-wilson.co.uk> References: <20200306133852.3420322-1-chris@chris-wilson.co.uk> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH 12/17] 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 MjAgKwogZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1wcm94eS5jICAgIHwgMTg5ICsrKysrKysr KwogZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jICAgICAgICAgIHwgICA0ICstCiBkcml2ZXJz L2RtYS1idWYvc2VsZnRlc3RzLmggICAgICAgICAgfCAgIDEgKwogZHJpdmVycy9kbWEtYnVmL3N0 LWRtYS1mZW5jZS1wcm94eS5jIHwgNTgxICsrKysrKysrKysrKysrKysrKysrKysrKysrKwogaW5j bHVkZS9saW51eC9kbWEtZmVuY2UtcHJveHkuaCAgICAgIHwgIDIwICsKIDcgZmlsZXMgY2hhbmdl ZCwgODI0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS1wcml2YXRlLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLXByb3h5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2 ZXJzL2RtYS1idWYvc3QtZG1hLWZlbmNlLXByb3h5LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNs dWRlL2xpbnV4L2RtYS1mZW5jZS1wcm94eS5oCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVm L01ha2VmaWxlIGIvZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCmluZGV4IDk5NWUwNWY2MDlmZi4u YWZhZjZkYWRkOWEzIDEwMDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvTWFrZWZpbGUKKysrIGIv ZHJpdmVycy9kbWEtYnVmL01ha2VmaWxlCkBAIC0xLDYgKzEsMTIgQEAKICMgU1BEWC1MaWNlbnNl LUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQotb2JqLXkgOj0gZG1hLWJ1Zi5vIGRtYS1mZW5jZS5v IGRtYS1mZW5jZS1hcnJheS5vIGRtYS1mZW5jZS1jaGFpbi5vIFwKLQkgZG1hLXJlc3YubyBzZXFu by1mZW5jZS5vCitvYmoteSA6PSBcCisJZG1hLWJ1Zi5vIFwKKwlkbWEtZmVuY2UubyBcCisJZG1h LWZlbmNlLWFycmF5Lm8gXAorCWRtYS1mZW5jZS1jaGFpbi5vIFwKKwlkbWEtZmVuY2UtcHJveHku byBcCisJZG1hLXJlc3YubyBcCisJc2Vxbm8tZmVuY2Uubwogb2JqLSQoQ09ORklHX0RNQUJVRl9I RUFQUykJKz0gZG1hLWhlYXAubwogb2JqLSQoQ09ORklHX0RNQUJVRl9IRUFQUykJKz0gaGVhcHMv CiBvYmotJChDT05GSUdfU1lOQ19GSUxFKQkJKz0gc3luY19maWxlLm8KQEAgLTEwLDYgKzE2LDcg QEAgb2JqLSQoQ09ORklHX1VETUFCVUYpCQkrPSB1ZG1hYnVmLm8KIGRtYWJ1Zl9zZWxmdGVzdHMt eSA6PSBcCiAJc2VsZnRlc3QubyBcCiAJc3QtZG1hLWZlbmNlLm8gXAotCXN0LWRtYS1mZW5jZS1j aGFpbi5vCisJc3QtZG1hLWZlbmNlLWNoYWluLm8gXAorCXN0LWRtYS1mZW5jZS1wcm94eS5vCiAK IG9iai0kKENPTkZJR19ETUFCVUZfU0VMRlRFU1RTKQkrPSBkbWFidWZfc2VsZnRlc3RzLm8KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9kbWEtZmVuY2UtcHJpdmF0ZS5oIGIvZHJpdmVycy9k bWEtYnVmL2RtYS1mZW5jZS1wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAwLi42OTI0ZDI4YWYwZmEKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2RtYS1i dWYvZG1hLWZlbmNlLXByaXZhdGUuaApAQCAtMCwwICsxLDIwIEBACisvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovCisvKgorICogRmVuY2UgbWVjaGFuaXNtIGZvciBk bWEtYnVmIGFuZCB0byBhbGxvdyBmb3IgYXN5bmNocm9ub3VzIGRtYSBhY2Nlc3MKKyAqCisgKiBD b3B5cmlnaHQgKEMpIDIwMTIgQ2Fub25pY2FsIEx0ZAorICogQ29weXJpZ2h0IChDKSAyMDEyIFRl eGFzIEluc3RydW1lbnRzCisgKgorICogQXV0aG9yczoKKyAqIFJvYiBDbGFyayA8cm9iZGNsYXJr QGdtYWlsLmNvbT4KKyAqIE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBjYW5v bmljYWwuY29tPgorICovCisKKyNpZm5kZWYgRE1BX0ZFTkNFX1BSSVZBVEVfSAorI2RlZmluZSBE TUFfRkVOQ0VfUFJJQVZURV9ICisKK3N0cnVjdCBkbWFfZmVuY2U7CisKK2Jvb2wgX19kbWFfZmVu Y2VfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSk7CisKKyNlbmRpZiAv KiBETUFfRkVOQ0VfUFJJQVZURV9IICovCmRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1h LWZlbmNlLXByb3h5LmMgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLXByb3h5LmMKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi42ZGNlNTQzZDA3NTcKLS0tIC9kZXYv bnVsbAorKysgYi9kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLXByb3h5LmMKQEAgLTAsMCArMSwx ODkgQEAKKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKy8qCisgKiBk bWEtZmVuY2UtcHJveHk6IHBsYWNlaG9sZGVyIHVuc2lnbmFsZWQgZmVuY2UKKyAqCisgKiBDb3B5 cmlnaHQgKEMpIDIwMTctMjAxOSBJbnRlbCBDb3Jwb3JhdGlvbgorICovCisKKyNpbmNsdWRlIDxs aW51eC9kbWEtZmVuY2UuaD4KKyNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UtcHJveHkuaD4KKyNp bmNsdWRlIDxsaW51eC9leHBvcnQuaD4KKyNpbmNsdWRlIDxsaW51eC9pcnFfd29yay5oPgorI2lu Y2x1ZGUgPGxpbnV4L3NsYWIuaD4KKworI2luY2x1ZGUgImRtYS1mZW5jZS1wcml2YXRlLmgiCisK K3N0cnVjdCBkbWFfZmVuY2VfcHJveHkgeworCXN0cnVjdCBkbWFfZmVuY2UgYmFzZTsKKwlzcGlu bG9ja190IGxvY2s7CisKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpyZWFsOworCXN0cnVjdCBkbWFfZmVu Y2VfY2IgY2I7CisJc3RydWN0IGlycV93b3JrIHdvcms7Cit9OworCitzdGF0aWMgY29uc3QgY2hh ciAqcHJveHlfZ2V0X2RyaXZlcl9uYW1lKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXN0 cnVjdCBkbWFfZmVuY2VfcHJveHkgKnAgPSBjb250YWluZXJfb2YoZmVuY2UsIHR5cGVvZigqcCks IGJhc2UpOworCXN0cnVjdCBkbWFfZmVuY2UgKnJlYWwgPSBSRUFEX09OQ0UocC0+cmVhbCk7CisK KwlyZXR1cm4gcmVhbCA/IHJlYWwtPm9wcy0+Z2V0X2RyaXZlcl9uYW1lKHJlYWwpIDogInByb3h5 IjsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKnByb3h5X2dldF90aW1lbGluZV9uYW1lKHN0cnVj dCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBkbWFfZmVuY2VfcHJveHkgKnAgPSBjb250 YWluZXJfb2YoZmVuY2UsIHR5cGVvZigqcCksIGJhc2UpOworCXN0cnVjdCBkbWFfZmVuY2UgKnJl YWwgPSBSRUFEX09OQ0UocC0+cmVhbCk7CisKKwlyZXR1cm4gcmVhbCA/IHJlYWwtPm9wcy0+Z2V0 X3RpbWVsaW5lX25hbWUocmVhbCkgOiAidW5zZXQiOworfQorCitzdGF0aWMgdm9pZCBwcm94eV9p cnFfd29yayhzdHJ1Y3QgaXJxX3dvcmsgKndvcmspCit7CisJc3RydWN0IGRtYV9mZW5jZV9wcm94 eSAqcCA9IGNvbnRhaW5lcl9vZih3b3JrLCB0eXBlb2YoKnApLCB3b3JrKTsKKworCWRtYV9mZW5j ZV9zaWduYWwoJnAtPmJhc2UpOworCWRtYV9mZW5jZV9wdXQoJnAtPmJhc2UpOworfQorCitzdGF0 aWMgdm9pZCBwcm94eV9jYWxsYmFjayhzdHJ1Y3QgZG1hX2ZlbmNlICpyZWFsLCBzdHJ1Y3QgZG1h X2ZlbmNlX2NiICpjYikKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX3Byb3h5ICpwID0gY29udGFpbmVy X29mKGNiLCB0eXBlb2YoKnApLCBjYik7CisKKwlpZiAocmVhbC0+ZXJyb3IpCisJCWRtYV9mZW5j ZV9zZXRfZXJyb3IoJnAtPmJhc2UsIHJlYWwtPmVycm9yKTsKKworCS8qIExvd2VyIHRoZSBoZWln aHQgb2YgdGhlIHByb3h5IGNoYWluIC0+IHNpbmdsZSBzdGFjayBmcmFtZSAqLworCWlycV93b3Jr X3F1ZXVlKCZwLT53b3JrKTsKK30KKworc3RhdGljIGJvb2wgcHJveHlfZW5hYmxlX3NpZ25hbGlu ZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK3sKKwlzdHJ1Y3QgZG1hX2ZlbmNlX3Byb3h5ICpw ID0gY29udGFpbmVyX29mKGZlbmNlLCB0eXBlb2YoKnApLCBiYXNlKTsKKwlzdHJ1Y3QgZG1hX2Zl bmNlICpyZWFsID0gUkVBRF9PTkNFKHAtPnJlYWwpOworCWJvb2wgcmV0ID0gdHJ1ZTsKKworCWlm IChyZWFsKSB7CisJCXNwaW5fbG9ja19uZXN0ZWQocmVhbC0+bG9jaywgU0lOR0xFX0RFUFRIX05F U1RJTkcpOworCQlyZXQgPSBfX2RtYV9mZW5jZV9lbmFibGVfc2lnbmFsaW5nKHJlYWwpOworCQlz cGluX3VubG9jayhyZWFsLT5sb2NrKTsKKwl9CisKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMg dm9pZCBwcm94eV9yZWxlYXNlKHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBk bWFfZmVuY2VfcHJveHkgKnAgPSBjb250YWluZXJfb2YoZmVuY2UsIHR5cGVvZigqcCksIGJhc2Up OworCisJZG1hX2ZlbmNlX3B1dChwLT5yZWFsKTsKKwlkbWFfZmVuY2VfZnJlZSgmcC0+YmFzZSk7 Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyBkbWFfZmVuY2VfcHJveHlf b3BzID0geworCS5nZXRfZHJpdmVyX25hbWUgPSBwcm94eV9nZXRfZHJpdmVyX25hbWUsCisJLmdl dF90aW1lbGluZV9uYW1lID0gcHJveHlfZ2V0X3RpbWVsaW5lX25hbWUsCisJLmVuYWJsZV9zaWdu YWxpbmcgPSBwcm94eV9lbmFibGVfc2lnbmFsaW5nLAorCS53YWl0ID0gZG1hX2ZlbmNlX2RlZmF1 bHRfd2FpdCwKKwkucmVsZWFzZSA9IHByb3h5X3JlbGVhc2UsCit9OworCisvKioKKyAqIGRtYV9m ZW5jZV9jcmVhdGVfcHJveHkgLSBDcmVhdGUgYW4gdW5zZXQgZG1hLWZlbmNlCisgKgorICogZG1h X2ZlbmNlX2NyZWF0ZV9wcm94eSgpIGNyZWF0ZXMgYSBuZXcgZG1hX2ZlbmNlIHN0dWIgdGhhdCBp cyBpbml0aWFsbHkKKyAqIHVuc2lnbmFsZWQgYW5kIG1heSBsYXRlciBiZSByZXBsYWNlZCB3aXRo IGEgcmVhbCBmZW5jZS4gQW55IGxpc3RlbmVycworICogdG8gdGhlIHByb3h5IGZlbmNlIHdpbGwg YmUgc2lnbmFsZWQgd2hlbiB0aGUgdGFyZ2V0IGZlbmNlIHNpZ25hbHMgaXRzCisgKiBjb21wbGV0 aW9uLgorICovCitzdHJ1Y3QgZG1hX2ZlbmNlICpkbWFfZmVuY2VfY3JlYXRlX3Byb3h5KHZvaWQp Cit7CisJc3RydWN0IGRtYV9mZW5jZV9wcm94eSAqcDsKKworCXAgPSBremFsbG9jKHNpemVvZigq cCksIEdGUF9LRVJORUwpOworCWlmICghcCkKKwkJcmV0dXJuIE5VTEw7CisKKwlzcGluX2xvY2tf aW5pdCgmcC0+bG9jayk7CisJZG1hX2ZlbmNlX2luaXQoJnAtPmJhc2UsICZkbWFfZmVuY2VfcHJv eHlfb3BzLCAmcC0+bG9jaywKKwkJICAgICAgIGRtYV9mZW5jZV9jb250ZXh0X2FsbG9jKDEpLCAw KTsKKwlpbml0X2lycV93b3JrKCZwLT53b3JrLCBwcm94eV9pcnFfd29yayk7CisKKwlyZXR1cm4g JnAtPmJhc2U7Cit9CitFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9jcmVhdGVfcHJveHkpOworCitz dGF0aWMgdm9pZCB3cmFwX3NpZ25hbF9sb2NrZWQoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UsIHN0 cnVjdCBkbWFfZmVuY2UgKnJlYWwpCit7CisJaWYgKHJlYWwtPmVycm9yKQorCQlkbWFfZmVuY2Vf c2V0X2Vycm9yKGZlbmNlLCByZWFsLT5lcnJvcik7CisJZG1hX2ZlbmNlX3NpZ25hbF9sb2NrZWQo ZmVuY2UpOworfQorCitzdGF0aWMgdm9pZCBwcm94eV9hc3NpZ24oc3RydWN0IGRtYV9mZW5jZSAq ZmVuY2UsIHN0cnVjdCBkbWFfZmVuY2UgKnJlYWwpCit7CisJc3RydWN0IGRtYV9mZW5jZV9wcm94 eSAqcCA9IGNvbnRhaW5lcl9vZihmZW5jZSwgdHlwZW9mKCpwKSwgYmFzZSk7CisJdW5zaWduZWQg bG9uZyBmbGFnczsKKworCWlmIChXQVJOX09OKGZlbmNlID09IHJlYWwpKQorCQlyZXR1cm47CisK KwlpZiAoV0FSTl9PTih0ZXN0X2JpdChETUFfRkVOQ0VfRkxBR19TSUdOQUxFRF9CSVQsICZmZW5j ZS0+ZmxhZ3MpKSkKKwkJcmV0dXJuOworCisJaWYgKFdBUk5fT04ocC0+cmVhbCkpCisJCXJldHVy bjsKKworCXNwaW5fbG9ja19pcnFzYXZlKHAtPmJhc2UubG9jaywgZmxhZ3MpOworCisJaWYgKHVu bGlrZWx5KCFyZWFsKSkgeworCQlkbWFfZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcC0+YmFzZSk7CisJ CWdvdG8gdW5sb2NrOworCX0KKworCXAtPnJlYWwgPSBkbWFfZmVuY2VfZ2V0KHJlYWwpOworCisJ c3Bpbl9sb2NrX25lc3RlZChyZWFsLT5sb2NrLCBTSU5HTEVfREVQVEhfTkVTVElORyk7CisJaWYg KGRtYV9mZW5jZV9pc19zaWduYWxlZChyZWFsKSkgeworCQl3cmFwX3NpZ25hbF9sb2NrZWQoJnAt PmJhc2UsIHJlYWwpOworCX0gZWxzZSBpZiAodGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdfRU5BQkxF X1NJR05BTF9CSVQsCisJCQkgICAgJnAtPmJhc2UuZmxhZ3MpICYmCisJCSAgICFfX2RtYV9mZW5j ZV9lbmFibGVfc2lnbmFsaW5nKHJlYWwpKSB7CisJCXdyYXBfc2lnbmFsX2xvY2tlZCgmcC0+YmFz ZSwgcmVhbCk7CisJfSBlbHNlIHsKKwkJZG1hX2ZlbmNlX2dldCgmcC0+YmFzZSk7CisJCXAtPmNi LmZ1bmMgPSBwcm94eV9jYWxsYmFjazsKKwkJbGlzdF9hZGRfdGFpbCgmcC0+Y2Iubm9kZSwgJnJl YWwtPmNiX2xpc3QpOworCX0KKwlzcGluX3VubG9jayhyZWFsLT5sb2NrKTsKKwordW5sb2NrOgor CXNwaW5fdW5sb2NrX2lycXJlc3RvcmUocC0+YmFzZS5sb2NrLCBmbGFncyk7Cit9CisKKy8qKgor ICogZG1hX2ZlbmNlX3JlcGxhY2VfcHJveHkgLSBSZXBsYWNlIHRoZSBwcm94eSBmZW5jZSB3aXRo IHRoZSByZWFsIHRhcmdldAorICogQHNsb3Q6IHBvaW50ZXIgdG8gbG9jYXRpb24gb2YgZmVuY2Ug dG8gdXBkYXRlCisgKiBAZmVuY2U6IHRoZSBuZXcgZmVuY2UgdG8gc3RvcmUgaW4gQHNsb3QKKyAq CisgKiBPbmNlIHRoZSByZWFsIGRtYV9mZW5jZSBpcyBrbm93biwgd2UgY2FuIHJlcGxhY2UgdGhl IHByb3h5IGZlbmNlIGhvbGRlcgorICogd2l0aCBhIHBvaW50ZXIgdG8gdGhlIHJlYWwgZG1hIGZl bmNlLiBGdXR1cmUgbGlzdGVuZXJzIHdpbGwgYXR0YWNoIHRvCisgKiB0aGUgcmVhbCBmZW5jZSwg YXZvaWRpbmcgYW55IGluZGlyZWN0aW9uIG92ZXJoZWFkLiBQcmV2aW91cyBsaXN0ZW5lcnMKKyAq IHdpbGwgcmVtYWluIGF0dGFjaGVkIHRvIHRoZSBwcm94eSBmZW5jZSwgYW5kIGJlIHNpZ25hbGVk IGluIHR1cm4gd2hlbgorICogdGhlIHRhcmdldCBmZW5jZSBjb21wbGV0ZXMuCisgKi8KK3N0cnVj dCBkbWFfZmVuY2UgKgorZG1hX2ZlbmNlX3JlcGxhY2VfcHJveHkoc3RydWN0IGRtYV9mZW5jZSBf X3JjdSAqKnNsb3QsIHN0cnVjdCBkbWFfZmVuY2UgKmZlbmNlKQoreworCXN0cnVjdCBkbWFfZmVu Y2UgKm9sZDsKKworCWlmIChmZW5jZSkKKwkJZG1hX2ZlbmNlX2dldChmZW5jZSk7CisKKwlvbGQg PSByY3VfcmVwbGFjZV9wb2ludGVyKCpzbG90LCBmZW5jZSwgdHJ1ZSk7CisJaWYgKG9sZCAmJiBv bGQtPm9wcyA9PSAmZG1hX2ZlbmNlX3Byb3h5X29wcykKKwkJcHJveHlfYXNzaWduKG9sZCwgZmVu Y2UpOworCisJcmV0dXJuIG9sZDsKK30KK0VYUE9SVF9TWU1CT0woZG1hX2ZlbmNlX3JlcGxhY2Vf cHJveHkpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2RtYS1mZW5jZS5jIGIvZHJpdmVy cy9kbWEtYnVmL2RtYS1mZW5jZS5jCmluZGV4IDA1MmE0MWUyNDUxYy4uZmE3YmVkYzY3MDNkIDEw MDY0NAotLS0gYS9kcml2ZXJzL2RtYS1idWYvZG1hLWZlbmNlLmMKKysrIGIvZHJpdmVycy9kbWEt YnVmL2RtYS1mZW5jZS5jCkBAIC0xOSw2ICsxOSw4IEBACiAjZGVmaW5lIENSRUFURV9UUkFDRV9Q T0lOVFMKICNpbmNsdWRlIDx0cmFjZS9ldmVudHMvZG1hX2ZlbmNlLmg+CiAKKyNpbmNsdWRlICJk bWEtZmVuY2UtcHJpdmF0ZS5oIgorCiBFWFBPUlRfVFJBQ0VQT0lOVF9TWU1CT0woZG1hX2ZlbmNl X2VtaXQpOwogRVhQT1JUX1RSQUNFUE9JTlRfU1lNQk9MKGRtYV9mZW5jZV9lbmFibGVfc2lnbmFs KTsKIEVYUE9SVF9UUkFDRVBPSU5UX1NZTUJPTChkbWFfZmVuY2Vfc2lnbmFsZWQpOwpAQCAtMjcz LDcgKzI3NSw3IEBAIHZvaWQgZG1hX2ZlbmNlX2ZyZWUoc3RydWN0IGRtYV9mZW5jZSAqZmVuY2Up CiB9CiBFWFBPUlRfU1lNQk9MKGRtYV9mZW5jZV9mcmVlKTsKIAotc3RhdGljIGJvb2wgX19kbWFf ZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKK2Jvb2wgX19k bWFfZmVuY2VfZW5hYmxlX3NpZ25hbGluZyhzdHJ1Y3QgZG1hX2ZlbmNlICpmZW5jZSkKIHsKIAli b29sIHdhc19zZXQ7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9zZWxmdGVzdHMuaCBi L2RyaXZlcnMvZG1hLWJ1Zi9zZWxmdGVzdHMuaAppbmRleCA1NTkxOGVmOWFkYWIuLjYxNmVjYTcw ZTJkOCAxMDA2NDQKLS0tIGEvZHJpdmVycy9kbWEtYnVmL3NlbGZ0ZXN0cy5oCisrKyBiL2RyaXZl cnMvZG1hLWJ1Zi9zZWxmdGVzdHMuaApAQCAtMTIsMyArMTIsNCBAQAogc2VsZnRlc3Qoc2FuaXR5 Y2hlY2ssIF9fc2FuaXR5Y2hlY2tfXykgLyoga2VlcCBmaXJzdCAoaWd0IHNlbGZjaGVjaykgKi8K IHNlbGZ0ZXN0KGRtYV9mZW5jZSwgZG1hX2ZlbmNlKQogc2VsZnRlc3QoZG1hX2ZlbmNlX2NoYWlu LCBkbWFfZmVuY2VfY2hhaW4pCitzZWxmdGVzdChkbWFfZmVuY2VfcHJveHksIGRtYV9mZW5jZV9w cm94eSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9zdC1kbWEtZmVuY2UtcHJveHkuYyBi L2RyaXZlcnMvZG1hLWJ1Zi9zdC1kbWEtZmVuY2UtcHJveHkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwMDAuLjY1OGY2YjkwYWJjNAotLS0gL2Rldi9udWxsCisrKyBiL2Ry aXZlcnMvZG1hLWJ1Zi9zdC1kbWEtZmVuY2UtcHJveHkuYwpAQCAtMCwwICsxLDU4MSBAQAorLy8g U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAorLyoKKyAqIENvcHlyaWdodCDCqSAyMDE5IElu dGVsIENvcnBvcmF0aW9uCisgKi8KKworI2luY2x1ZGUgPGxpbnV4L2RlbGF5Lmg+CisjaW5jbHVk ZSA8bGludXgvZG1hLWZlbmNlLmg+CisjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLXByb3h5Lmg+ CisjaW5jbHVkZSA8bGludXgva2VybmVsLmg+CisjaW5jbHVkZSA8bGludXgvc2NoZWQvc2lnbmFs Lmg+CisjaW5jbHVkZSA8bGludXgvc2xhYi5oPgorI2luY2x1ZGUgPGxpbnV4L3NwaW5sb2NrLmg+ CisKKyNpbmNsdWRlICJzZWxmdGVzdC5oIgorCitzdGF0aWMgc3RydWN0IGttZW1fY2FjaGUgKnNs YWJfZmVuY2VzOworCitzdGF0aWMgc3RydWN0IG1vY2tfZmVuY2UgeworCXN0cnVjdCBkbWFfZmVu Y2UgYmFzZTsKKwlzcGlubG9ja190IGxvY2s7Cit9ICp0b19tb2NrX2ZlbmNlKHN0cnVjdCBkbWFf ZmVuY2UgKmYpIHsKKwlyZXR1cm4gY29udGFpbmVyX29mKGYsIHN0cnVjdCBtb2NrX2ZlbmNlLCBi YXNlKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKm1vY2tfbmFtZShzdHJ1Y3QgZG1hX2ZlbmNl ICpmKQoreworCXJldHVybiAibW9jayI7Cit9CisKK3N0YXRpYyB2b2lkIG1vY2tfZmVuY2VfcmVs ZWFzZShzdHJ1Y3QgZG1hX2ZlbmNlICpmKQoreworCWttZW1fY2FjaGVfZnJlZShzbGFiX2ZlbmNl cywgdG9fbW9ja19mZW5jZShmKSk7Cit9CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNl X29wcyBtb2NrX29wcyA9IHsKKwkuZ2V0X2RyaXZlcl9uYW1lID0gbW9ja19uYW1lLAorCS5nZXRf dGltZWxpbmVfbmFtZSA9IG1vY2tfbmFtZSwKKwkucmVsZWFzZSA9IG1vY2tfZmVuY2VfcmVsZWFz ZSwKK307CisKK3N0YXRpYyBzdHJ1Y3QgZG1hX2ZlbmNlICptb2NrX2ZlbmNlKHZvaWQpCit7CisJ c3RydWN0IG1vY2tfZmVuY2UgKmY7CisKKwlmID0ga21lbV9jYWNoZV9hbGxvYyhzbGFiX2ZlbmNl cywgR0ZQX0tFUk5FTCk7CisJaWYgKCFmKQorCQlyZXR1cm4gTlVMTDsKKworCXNwaW5fbG9ja19p bml0KCZmLT5sb2NrKTsKKwlkbWFfZmVuY2VfaW5pdCgmZi0+YmFzZSwgJm1vY2tfb3BzLCAmZi0+ bG9jaywgMCwgMCk7CisKKwlyZXR1cm4gJmYtPmJhc2U7Cit9CisKK3N0YXRpYyBpbnQgc2FuaXR5 Y2hlY2sodm9pZCAqYXJnKQoreworCXN0cnVjdCBkbWFfZmVuY2UgKmY7CisKKwlmID0gZG1hX2Zl bmNlX2NyZWF0ZV9wcm94eSgpOworCWlmICghZikKKwkJcmV0dXJuIC1FTk9NRU07CisKKwlkbWFf ZmVuY2Vfc2lnbmFsKGYpOworCWRtYV9mZW5jZV9wdXQoZik7CisKKwlyZXR1cm4gMDsKK30KKwor c3RydWN0IGZlbmNlcyB7CisJc3RydWN0IGRtYV9mZW5jZSAqcmVhbDsKKwlzdHJ1Y3QgZG1hX2Zl bmNlICpwcm94eTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICpzbG90OworfTsKKworc3RhdGlj IGludCBjcmVhdGVfZmVuY2VzKHN0cnVjdCBmZW5jZXMgKmYsIGJvb2wgYXR0YWNoKQoreworCWYt PnByb3h5ID0gZG1hX2ZlbmNlX2NyZWF0ZV9wcm94eSgpOworCWlmICghZi0+cHJveHkpCisJCXJl dHVybiAtRU5PTUVNOworCisJUkNVX0lOSVRfUE9JTlRFUihmLT5zbG90LCBmLT5wcm94eSk7CisK KwlmLT5yZWFsID0gbW9ja19mZW5jZSgpOworCWlmICghZi0+cmVhbCkgeworCQlkbWFfZmVuY2Vf cHV0KGYtPnByb3h5KTsKKwkJcmV0dXJuIC1FTk9NRU07CisJfQorCisJaWYgKGF0dGFjaCkKKwkJ ZG1hX2ZlbmNlX3JlcGxhY2VfcHJveHkoJmYtPnNsb3QsIGYtPnJlYWwpOworCisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfZmVuY2VzKHN0cnVjdCBmZW5jZXMgKmYpCit7CisJZG1h X2ZlbmNlX3B1dChkbWFfZmVuY2VfcmVwbGFjZV9wcm94eSgmZi0+c2xvdCwgTlVMTCkpOworCWRt YV9mZW5jZV9wdXQoZi0+cmVhbCk7CisJZG1hX2ZlbmNlX3B1dChmLT5wcm94eSk7Cit9CisKK3N0 YXRpYyBpbnQgd3JhcF9zaWduYWxpbmcodm9pZCAqYXJnKQoreworCXN0cnVjdCBmZW5jZXMgZjsK KwlpbnQgZXJyID0gLUVJTlZBTDsKKworCWlmIChjcmVhdGVfZmVuY2VzKCZmLCB0cnVlKSkKKwkJ cmV0dXJuIC1FTk9NRU07CisKKwlpZiAoZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGYucHJveHkpKSB7 CisJCXByX2VycigiRmVuY2UgdW5leHBlY3RlZGx5IHNpZ25hbGVkIG9uIGNyZWF0aW9uXG4iKTsK KwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlpZiAoZG1hX2ZlbmNlX3NpZ25hbChmLnJlYWwpKSB7 CisJCXByX2VycigiRmVuY2UgcmVwb3J0ZWQgYmVpbmcgYWxyZWFkeSBzaWduYWxlZFxuIik7CisJ CWdvdG8gZXJyX2ZyZWU7CisJfQorCisJaWYgKCFkbWFfZmVuY2VfaXNfc2lnbmFsZWQoZi5wcm94 eSkpIHsKKwkJcHJfZXJyKCJGZW5jZSBub3QgcmVwb3J0aW5nIHNpZ25hbGVkXG4iKTsKKwkJZ290 byBlcnJfZnJlZTsKKwl9CisKKwllcnIgPSAwOworZXJyX2ZyZWU6CisJZnJlZV9mZW5jZXMoJmYp OworCXJldHVybiBlcnI7Cit9CisKK3N0YXRpYyBpbnQgd3JhcF9zaWduYWxpbmdfcmVjdXJzZSh2 b2lkICphcmcpCit7CisJc3RydWN0IGZlbmNlcyBmOworCXN0cnVjdCBkbWFfZmVuY2UgKmNoYWlu OworCWludCBlcnIgPSAtRUlOVkFMOworCisJaWYgKGNyZWF0ZV9mZW5jZXMoJmYsIGZhbHNlKSkK KwkJcmV0dXJuIC1FTk9NRU07CisKKwljaGFpbiA9IGRtYV9mZW5jZV9jcmVhdGVfcHJveHkoKTsK KwlpZiAoIWNoYWluKSB7CisJCWVyciA9IC1FTk9NRU07CisJCWdvdG8gZXJyX2ZyZWU7CisJfQor CisJZG1hX2ZlbmNlX3JlcGxhY2VfcHJveHkoJmYuc2xvdCwgY2hhaW4pOworCWRtYV9mZW5jZV9w dXQoZG1hX2ZlbmNlX3JlcGxhY2VfcHJveHkoJmYuc2xvdCwgZi5yZWFsKSk7CisJZG1hX2ZlbmNl X3B1dChjaGFpbik7CisKKwkvKiBmLnJlYWwgPC0gY2hhaW4gPC0gZi5wcm94eSAqLworCisJaWYg KGRtYV9mZW5jZV9pc19zaWduYWxlZChmLnByb3h5KSkgeworCQlwcl9lcnIoIkZlbmNlIHVuZXhw ZWN0ZWRseSBzaWduYWxlZCBvbiBjcmVhdGlvblxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQor CisJaWYgKGRtYV9mZW5jZV9zaWduYWwoZi5yZWFsKSkgeworCQlwcl9lcnIoIkZlbmNlIHJlcG9y dGVkIGJlaW5nIGFscmVhZHkgc2lnbmFsZWRcbiIpOworCQlnb3RvIGVycl9mcmVlOworCX0KKwor CWlmICghZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGYucHJveHkpKSB7CisJCXByX2VycigiRmVuY2Ug bm90IHJlcG9ydGluZyBzaWduYWxlZFxuIik7CisJCWdvdG8gZXJyX2ZyZWU7CisJfQorCisJZXJy ID0gMDsKK2Vycl9mcmVlOgorCWZyZWVfZmVuY2VzKCZmKTsKKwlyZXR1cm4gZXJyOworfQorCitz dHJ1Y3Qgc2ltcGxlX2NiIHsKKwlzdHJ1Y3QgZG1hX2ZlbmNlX2NiIGNiOworCWJvb2wgc2VlbjsK K307CisKK3N0YXRpYyB2b2lkIHNpbXBsZV9jYWxsYmFjayhzdHJ1Y3QgZG1hX2ZlbmNlICpmLCBz dHJ1Y3QgZG1hX2ZlbmNlX2NiICpjYikKK3sKKwlzbXBfc3RvcmVfbWIoY29udGFpbmVyX29mKGNi LCBzdHJ1Y3Qgc2ltcGxlX2NiLCBjYiktPnNlZW4sIHRydWUpOworfQorCitzdGF0aWMgaW50IHdy YXBfYWRkX2NhbGxiYWNrKHZvaWQgKmFyZykKK3sKKwlzdHJ1Y3Qgc2ltcGxlX2NiIGNiID0ge307 CisJc3RydWN0IGZlbmNlcyBmOworCWludCBlcnIgPSAtRUlOVkFMOworCisJaWYgKGNyZWF0ZV9m ZW5jZXMoJmYsIHRydWUpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWlmIChkbWFfZmVuY2VfYWRk X2NhbGxiYWNrKGYucHJveHksICZjYi5jYiwgc2ltcGxlX2NhbGxiYWNrKSkgeworCQlwcl9lcnIo IkZhaWxlZCB0byBhZGQgY2FsbGJhY2ssIGZlbmNlIGFscmVhZHkgc2lnbmFsZWQhXG4iKTsKKwkJ Z290byBlcnJfZnJlZTsKKwl9CisKKwlkbWFfZmVuY2Vfc2lnbmFsKGYucmVhbCk7CisJaWYgKCFj Yi5zZWVuKSB7CisJCXByX2VycigiQ2FsbGJhY2sgZmFpbGVkIVxuIik7CisJCWdvdG8gZXJyX2Zy ZWU7CisJfQorCisJZXJyID0gMDsKK2Vycl9mcmVlOgorCWZyZWVfZmVuY2VzKCZmKTsKKwlyZXR1 cm4gZXJyOworfQorCitzdGF0aWMgaW50IHdyYXBfYWRkX2NhbGxiYWNrX3JlY3Vyc2Uodm9pZCAq YXJnKQoreworCXN0cnVjdCBzaW1wbGVfY2IgY2IgPSB7fTsKKwlzdHJ1Y3QgZG1hX2ZlbmNlICpj aGFpbjsKKwlzdHJ1Y3QgZmVuY2VzIGY7CisJaW50IGVyciA9IC1FSU5WQUw7CisKKwlpZiAoY3Jl YXRlX2ZlbmNlcygmZiwgZmFsc2UpKQorCQlyZXR1cm4gLUVOT01FTTsKKworCWNoYWluID0gZG1h X2ZlbmNlX2NyZWF0ZV9wcm94eSgpOworCWlmICghY2hhaW4pIHsKKwkJZXJyID0gLUVOT01FTTsK KwkJZ290byBlcnJfZnJlZTsKKwl9CisKKwlkbWFfZmVuY2VfcmVwbGFjZV9wcm94eSgmZi5zbG90 LCBjaGFpbik7CisJZG1hX2ZlbmNlX3B1dChkbWFfZmVuY2VfcmVwbGFjZV9wcm94eSgmZi5zbG90 LCBmLnJlYWwpKTsKKwlkbWFfZmVuY2VfcHV0KGNoYWluKTsKKworCS8qIGYucmVhbCA8LSBjaGFp biA8LSBmLnByb3h5ICovCisKKwlpZiAoZG1hX2ZlbmNlX2FkZF9jYWxsYmFjayhmLnByb3h5LCAm 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 ayksCisJCVNVQlRFU1Qod3JhcF9hZGRfY2FsbGJhY2tfcmVjdXJzZSksCisJCVNVQlRFU1Qod3Jh cF9sYXRlX2FkZF9jYWxsYmFjayksCisJCVNVQlRFU1Qod3JhcF9lYXJseV9hZGRfY2FsbGJhY2sp LAorCQlTVUJURVNUKHdyYXBfZWFybHlfYWRkX2NhbGxiYWNrX2xhdGUpLAorCQlTVUJURVNUKHdy YXBfZWFybHlfYWRkX2NhbGxiYWNrX2Vhcmx5KSwKKwkJU1VCVEVTVCh3cmFwX3JtX2NhbGxiYWNr KSwKKwkJU1VCVEVTVCh3cmFwX2xhdGVfcm1fY2FsbGJhY2spLAorCQlTVUJURVNUKHdyYXBfc3Rh dHVzKSwKKwkJU1VCVEVTVCh3cmFwX2Vycm9yKSwKKwkJU1VCVEVTVCh3cmFwX3dhaXQpLAorCQlT VUJURVNUKHdyYXBfd2FpdF90aW1lb3V0KSwKKwl9OworCWludCByZXQ7CisKKwlzbGFiX2ZlbmNl cyA9IEtNRU1fQ0FDSEUobW9ja19mZW5jZSwKKwkJCQkgU0xBQl9UWVBFU0FGRV9CWV9SQ1UgfAor CQkJCSBTTEFCX0hXQ0FDSEVfQUxJR04pOworCWlmICghc2xhYl9mZW5jZXMpCisJCXJldHVybiAt RU5PTUVNOworCisJcmV0ID0gc3VidGVzdHModGVzdHMsIE5VTEwpOworCisJa21lbV9jYWNoZV9k ZXN0cm95KHNsYWJfZmVuY2VzKTsKKworCXJldHVybiByZXQ7Cit9CmRpZmYgLS1naXQgYS9pbmNs dWRlL2xpbnV4L2RtYS1mZW5jZS1wcm94eS5oIGIvaW5jbHVkZS9saW51eC9kbWEtZmVuY2UtcHJv eHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjU4N2Q1MDQ0ZjBi ZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbGludXgvZG1hLWZlbmNlLXByb3h5LmgKQEAg LTAsMCArMSwyMCBAQAorLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAq LworLyoKKyAqIGRtYS1mZW5jZS1wcm94eTogYWxsb3dzIHdhaXRpbmcgdXBvbiB1bnNldCBhbmQg ZnV0dXJlIGZlbmNlcworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBJbnRlbCBDb3Jwb3JhdGlv bgorICovCisKKyNpZm5kZWYgX19MSU5VWF9ETUFfRkVOQ0VfUFJPWFlfSAorI2RlZmluZSBfX0xJ TlVYX0RNQV9GRU5DRV9QUk9YWV9ICisKKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KKworc3Ry dWN0IGRtYV9mZW5jZTsKKworc3RydWN0IGRtYV9mZW5jZSAqZG1hX2ZlbmNlX2NyZWF0ZV9wcm94 eSh2b2lkKTsKKworc3RydWN0IGRtYV9mZW5jZSAqCitkbWFfZmVuY2VfcmVwbGFjZV9wcm94eShz dHJ1Y3QgZG1hX2ZlbmNlIF9fcmN1ICoqc2xvdCwgc3RydWN0IGRtYV9mZW5jZSAqZmVuY2UpOwor CisjZW5kaWYgLyogX19MSU5VWF9ETUFfRkVOQ0VfUFJPWFlfSCAqLwotLSAKMi4yNS4xCgpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK