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=unavailable 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 EA08DC433E2 for ; Tue, 23 Mar 2021 15:58:58 +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 B0A44619D0 for ; Tue, 23 Mar 2021 15:58:58 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org B0A44619D0 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=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 0A8576EC2E; Tue, 23 Mar 2021 15:58:04 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3E3466EC25 for ; Tue, 23 Mar 2021 15:57:45 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Subject: [PATCH v9 01/70] drm/i915: Do not share hwsp across contexts any more, v8. Date: Tue, 23 Mar 2021 16:49:50 +0100 Message-Id: <20210323155059.628690-2-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20210323155059.628690-1-maarten.lankhorst@linux.intel.com> References: <20210323155059.628690-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , kernel test robot , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" SW5zdGVhZCBvZiBzaGFyaW5nIHBhZ2VzIHdpdGggYnJlYWRjcnVtYnMsIGdpdmUgZWFjaCB0aW1l bGluZSBhCnNpbmdsZSBwYWdlLiBUaGlzIGFsbG93cyB1bnJlbGF0ZWQgdGltZWxpbmVzIG5vdCB0 byBzaGFyZSBsb2NrcwphbnkgbW9yZSBkdXJpbmcgY29tbWFuZCBzdWJtaXNzaW9uLgoKQXMgYW4g YWRkaXRpb25hbCBiZW5lZml0LCBzZXFubyB3cmFwYXJvdW5kIG5vIGxvbmdlciByZXF1aXJlcwpp OTE1X3ZtYV9waW4sIHdoaWNoIG1lYW5zIHdlIG5vIGxvbmdlciBuZWVkIHRvIHdvcnJ5IGFib3V0 IGEKcG90ZW50aWFsIC1FREVBRExLIGF0IGEgcG9pbnQgd2hlcmUgd2UgYXJlIHJlYWR5IHRvIHN1 Ym1pdC4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gRml4IGVycm9uZW91cyBpOTE1X3ZtYV9hY3F1aXJl IHRoYXQgc2hvdWxkIGJlIGEgaTkxNV92bWFfcmVsZWFzZSAoaWNrbGUpLgotIEV4dHJhIGNoZWNr IGZvciBjb21wbGV0aW9uIGluIGludGVsX3JlYWRfaHdzcCgpLgpDaGFuZ2VzIHNpbmNlIHYyOgot IEZpeCBpbmNvbnNpc3RlbnQgaW5kZW50IGluIGh3c3BfYWxsb2MoKSAoa2J1aWxkKQotIG1lbXNl dCBlbnRpcmUgY2FjaGVsaW5lIHRvIDAuCkNoYW5nZXMgc2luY2UgdjM6Ci0gRG8gc2FtZSBpbiBp bnRlbF90aW1lbGluZV9yZXNldF9zZXFubygpLCBhbmQgY2xmbHVzaCBmb3IgZ29vZCBtZWFzdXJl LgpDaGFuZ2VzIHNpbmNlIHY0OgotIFVzZSByZWZjb3VudGluZyBvbiB0aW1lbGluZSwgaW5zdGVh ZCBvZiByZWx5aW5nIG9uIGk5MTVfYWN0aXZlLgotIEZpeCB3YWl0aW5nIG9uIGtlcm5lbCByZXF1 ZXN0cy4KQ2hhbmdlcyBzaW5jZSB2NToKLSBCdW1wIGFtb3VudCBvZiBzbG90cyB0byBtYXhpbXVt ICgyNTYpLCBmb3IgYmVzdCB3cmFwYXJvdW5kcy4KLSBBZGQgaHdzcF9vZmZzZXQgdG8gaTkxNV9y ZXF1ZXN0IHRvIGZpeCBwb3RlbnRpYWwgd3JhcGFyb3VuZCBoYW5nLgotIEVuc3VyZSB0aW1lbGlu ZSB3cmFwIHRlc3Qgd29ya3Mgd2l0aCB0aGUgY2hhbmdlcy4KLSBBc3NpZ24gaHdzcCBpbiBpbnRl bF90aW1lbGluZV9yZWFkX2h3c3AoKSB3aXRoaW4gdGhlIHJjdSBsb2NrIHRvCiAgZml4IGEgaGFu Zy4KQ2hhbmdlcyBzaW5jZSB2NjoKLSBSZW5hbWUgaTkxNV9yZXF1ZXN0X2FjdGl2ZV9vZmZzZXQg dG8gaTkxNV9yZXF1ZXN0X2FjdGl2ZV9zZXFubygpLAogIGFuZCBlbGFib3JhdGUgdGhlIGZ1bmN0 aW9uLiAodHZydGtvKQpDaGFuZ2VzIHNpbmNlIHY3OgotIE1vdmUgaHVuayB0byB3aGVyZSBpdCBi ZWxvbmdzLiAoamVrc3RyYW5kKQotIFJlcGxhY2UgQ0FDSEVMSU5FX0JZVEVTIHdpdGggVElNRUxJ TkVfU0VRTk9fQllURVMuIChqZWtzdHJhbmQpCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVGhv bWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPiAjdjEKUmVwb3J0ZWQt Ynk6IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvZ2VuNl9lbmdpbmVfY3MuYyAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jICAgICAgfCAgMTMgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndF90eXBlcy5oICAgICAgfCAgIDQgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfdGltZWxpbmUuYyAgICAgIHwgNDIyICsrKystLS0tLS0tLS0tLS0tLQogLi4uL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oICAgIHwgIDE3ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYyAgfCAgIDUgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgICB8ICA4OCArKy0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAgIDQgLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDMxICstCiAxMSBmaWxlcyBj aGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgNDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jCmluZGV4IGI0OTFhNjQ5MTljOC4uOTY0NjIwMGQy NzkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMKQEAgLTE0Myw3 ICsxNDMsNyBAQCBzdGF0aWMgdTMyICpfX2dlbjJfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCB1MzIgKmNzLAogCQkJCSAgIGludCBmbHVzaCwgaW50IHBvc3QpCiB7CiAJ R0VNX0JVR19PTihpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9nZ3R0ICE9 IHJxLT5lbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7Ci0JR0VNX0JVR19PTihvZmZzZXRfaW5fcGFn ZShpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQpICE9IEk5MTVf R0VNX0hXU19TRVFOT19BRERSKTsKKwlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKHJxLT5od3Nw X3NlcW5vKSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7CiAKIAkqY3MrKyA9IE1JX0ZMVVNI OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2luZV9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuNl9lbmdpbmVfY3MuYwppbmRleCBjZTM4ZDFi Y2FiYTMuLmIzODhjZWVlYjFjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv Z2VuNl9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2lu ZV9jcy5jCkBAIC0xNjEsNyArMTYxLDcgQEAgdTMyICpnZW42X2VtaXRfYnJlYWRjcnVtYl9yY3Mo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiAJCSBQSVBFX0NPTlRST0xfRENfRkxV U0hfRU5BQkxFIHwKIAkJIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CiAJCSBQSVBFX0NPTlRST0xf Q1NfU1RBTEwpOwotCSpjcysrID0gaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3 c3Bfb2Zmc2V0IHwKKwkqY3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfc2Vxbm8ocnEpIHwKIAkJ UElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7CiAJKmNzKysgPSBycS0+ZmVuY2Uuc2Vxbm87CiAKQEAg LTM1OSw3ICszNTksNyBAQCB1MzIgKmdlbjdfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgdTMyICpjcykKIAkJIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CiAJCSBQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAogCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsK LQkqY3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldDsK KwkqY3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfc2Vxbm8ocnEpOwogCSpjcysrID0gcnEtPmZl bmNlLnNlcW5vOwogCiAJKmNzKysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKQEAgLTM3NCw3ICszNzQs NyBAQCB1MzIgKmdlbjdfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgdTMyICpjcykKIHUzMiAqZ2VuNl9lbWl0X2JyZWFkY3J1bWJfeGNzKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCB1MzIgKmNzKQogewogCUdFTV9CVUdfT04oaTkxNV9yZXF1ZXN0X2FjdGl2ZV90 aW1lbGluZShycSktPmh3c3BfZ2d0dCAhPSBycS0+ZW5naW5lLT5zdGF0dXNfcGFnZS52bWEpOwot CUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UoaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShy cSktPmh3c3Bfb2Zmc2V0KSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7CisJR0VNX0JVR19P TihvZmZzZXRfaW5fcGFnZShycS0+aHdzcF9zZXFubykgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FE RFIpOwogCiAJKmNzKysgPSBNSV9GTFVTSF9EVyB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcgfCBN SV9GTFVTSF9EV19TVE9SRV9JTkRFWDsKIAkqY3MrKyA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERS IHwgTUlfRkxVU0hfRFdfVVNFX0dUVDsKQEAgLTM5NCw3ICszOTQsNyBAQCB1MzIgKmdlbjdfZW1p dF9icmVhZGNydW1iX3hjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykKIAlpbnQg aTsKIAogCUdFTV9CVUdfT04oaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bf Z2d0dCAhPSBycS0+ZW5naW5lLT5zdGF0dXNfcGFnZS52bWEpOwotCUdFTV9CVUdfT04ob2Zmc2V0 X2luX3BhZ2UoaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0KSAh PSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7CisJR0VNX0JVR19PTihvZmZzZXRfaW5fcGFnZShy cS0+aHdzcF9zZXFubykgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIpOwogCiAJKmNzKysgPSBN SV9GTFVTSF9EVyB8IE1JX0lOVkFMSURBVEVfVExCIHwKIAkJTUlfRkxVU0hfRFdfT1BfU1RPUkVE VyB8IE1JX0ZMVVNIX0RXX1NUT1JFX0lOREVYOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhf ZW5naW5lX2NzLmMKaW5kZXggY2FjODBhZjdhZDFjLi42YjljMzRkM2FjOGQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYwpAQCAtMzM4LDE1ICszMzgsMTQgQEAgc3Rh dGljIHUzMiBwcmVlbXB0X2FkZHJlc3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiBzdGF0aWMgdTMyIGh3c3Bfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQog ewotCWNvbnN0IHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsOworCWNvbnN0IHN0 cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CiAKLQkvKiBCZWZvcmUgdGhlIHJlcXVlc3QgaXMgZXhl Y3V0ZWQsIHRoZSB0aW1lbGluZS9jYWNobGluZSBpcyBmaXhlZCAqLworCS8qIEJlZm9yZSB0aGUg cmVxdWVzdCBpcyBleGVjdXRlZCwgdGhlIHRpbWVsaW5lIGlzIGZpeGVkICovCisJdGwgPSByY3Vf ZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJxLT50aW1lbGluZSwKKwkJCQkgICAgICAgIWk5MTVfcmVx dWVzdF9zaWduYWxlZChycSkpOwogCi0JY2wgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJx LT5od3NwX2NhY2hlbGluZSwgMSk7Ci0JaWYgKGNsKQotCQlyZXR1cm4gY2wtPmdndHRfb2Zmc2V0 OwotCi0JcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQocnEtPnRpbWVsaW5lLCAxKS0+ aHdzcF9vZmZzZXQ7CisJLyogU2VlIHRoZSBjb21tZW50IGluIGk5MTVfcmVxdWVzdF9hY3RpdmVf c2Vxbm8oKS4gKi8KKwlyZXR1cm4gcGFnZV9tYXNrX2JpdHModGwtPmh3c3Bfb2Zmc2V0KSArIG9m ZnNldF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKTsKIH0KIAogaW50IGdlbjhfZW1pdF9pbml0X2Jy ZWFkY3J1bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGI0ZGYyNzVjYmE3OS4uZTZjZWZkMDBiNGExIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtNzUyLDYgKzc1Miw3 IEBAIHN0YXRpYyBpbnQgbWVhc3VyZV9icmVhZGNydW1iX2R3KHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSkKIAlmcmFtZS0+cnEuZW5naW5lID0gZW5naW5lOwogCWZyYW1lLT5ycS5jb250ZXh0ID0g Y2U7CiAJcmN1X2Fzc2lnbl9wb2ludGVyKGZyYW1lLT5ycS50aW1lbGluZSwgY2UtPnRpbWVsaW5l KTsKKwlmcmFtZS0+cnEuaHdzcF9zZXFubyA9IGNlLT50aW1lbGluZS0+aHdzcF9zZXFubzsKIAog CWZyYW1lLT5yaW5nLnZhZGRyID0gZnJhbWUtPmNzOwogCWZyYW1lLT5yaW5nLnNpemUgPSBzaXpl b2YoZnJhbWUtPmNzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCmlu ZGV4IDYyNmFmMzdjNzc5MC4uM2Y2ZGI4MzU3MzA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3R5cGVzLmgKQEAgLTQ1LDEwICs0NSw2IEBAIHN0cnVjdCBpbnRlbF9ndCB7CiAJ c3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyB7CiAJCXNwaW5sb2NrX3QgbG9jazsgLyogcHJvdGVj dHMgYWN0aXZlX2xpc3QgKi8KIAkJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlzdDsKLQotCQkv KiBQYWNrIG11bHRpcGxlIHRpbWVsaW5lcycgc2Vxbm9zIGludG8gdGhlIHNhbWUgcGFnZSAqLwot CQlzcGlubG9ja190IGh3c3BfbG9jazsKLQkJc3RydWN0IGxpc3RfaGVhZCBod3NwX2ZyZWVfbGlz dDsKIAl9IHRpbWVsaW5lczsKIAogCXN0cnVjdCBpbnRlbF9ndF9yZXF1ZXN0cyB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYwppbmRleCA0OTFiOGRmMTc0YzIuLmVmZTIw MzBjZmU1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxp bmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCkBAIC0x MSwyMSArMTEsOSBAQAogI2luY2x1ZGUgImludGVsX3JpbmcuaCIKICNpbmNsdWRlICJpbnRlbF90 aW1lbGluZS5oIgogCi0jZGVmaW5lIHB0cl9zZXRfYml0KHB0ciwgYml0KSAoKHR5cGVvZihwdHIp KSgodW5zaWduZWQgbG9uZykocHRyKSB8IEJJVChiaXQpKSkKLSNkZWZpbmUgcHRyX3Rlc3RfYml0 KHB0ciwgYml0KSAoKHVuc2lnbmVkIGxvbmcpKHB0cikgJiBCSVQoYml0KSkKKyNkZWZpbmUgVElN RUxJTkVfU0VRTk9fQllURVMgOAogCi0jZGVmaW5lIENBQ0hFTElORV9CSVRTIDYKLSNkZWZpbmUg Q0FDSEVMSU5FX0ZSRUUgQ0FDSEVMSU5FX0JJVFMKLQotc3RydWN0IGludGVsX3RpbWVsaW5lX2h3 c3AgewotCXN0cnVjdCBpbnRlbF9ndCAqZ3Q7Ci0Jc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAq Z3RfdGltZWxpbmVzOwotCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saW5rOwotCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwotCXU2NCBmcmVlX2JpdG1hcDsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQorc3RhdGljIHN0cnVjdCBpOTE1 X3ZtYSAqaHdzcF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKQEAgLTQ0LDIyMCArMzIsNTkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19od3Nw X2FsbG9jKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJcmV0dXJuIHZtYTsKIH0KIAotc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqCi1od3NwX2FsbG9jKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxp bmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQotewotCXN0cnVjdCBpbnRlbF9ndF90aW1lbGlu ZXMgKmd0ID0gJnRpbWVsaW5lLT5ndC0+dGltZWxpbmVzOwotCXN0cnVjdCBpbnRlbF90aW1lbGlu ZV9od3NwICpod3NwOwotCi0JQlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUodTY0KSAqIENBQ0hF TElORV9CWVRFUyA+IFBBR0VfU0laRSk7Ci0KLQlzcGluX2xvY2tfaXJxKCZndC0+aHdzcF9sb2Nr KTsKLQotCS8qIGh3c3BfZnJlZV9saXN0IG9ubHkgY29udGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZh aWxhYmxlIGNhY2hlbGluZXMgKi8KLQlod3NwID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZn dC0+aHdzcF9mcmVlX2xpc3QsCi0JCQkJCXR5cGVvZigqaHdzcCksIGZyZWVfbGluayk7Ci0JaWYg KCFod3NwKSB7Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCi0JCXNwaW5fdW5sb2NrX2lycSgm Z3QtPmh3c3BfbG9jayk7Ci0KLQkJaHdzcCA9IGttYWxsb2Moc2l6ZW9mKCpod3NwKSwgR0ZQX0tF Uk5FTCk7Ci0JCWlmICghaHdzcCkKLQkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JCXZt YSA9IF9faHdzcF9hbGxvYyh0aW1lbGluZS0+Z3QpOwotCQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJ CWtmcmVlKGh3c3ApOwotCQkJcmV0dXJuIHZtYTsKLQkJfQotCi0JCUdUX1RSQUNFKHRpbWVsaW5l LT5ndCwgIm5ldyBIV1NQIGFsbG9jYXRlZFxuIik7Ci0KLQkJdm1hLT5wcml2YXRlID0gaHdzcDsK LQkJaHdzcC0+Z3QgPSB0aW1lbGluZS0+Z3Q7Ci0JCWh3c3AtPnZtYSA9IHZtYTsKLQkJaHdzcC0+ ZnJlZV9iaXRtYXAgPSB+MHVsbDsKLQkJaHdzcC0+Z3RfdGltZWxpbmVzID0gZ3Q7Ci0KLQkJc3Bp bl9sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7Ci0JCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xpbmss ICZndC0+aHdzcF9mcmVlX2xpc3QpOwotCX0KLQotCUdFTV9CVUdfT04oIWh3c3AtPmZyZWVfYml0 bWFwKTsKLQkqY2FjaGVsaW5lID0gX19mZnM2NChod3NwLT5mcmVlX2JpdG1hcCk7Ci0JaHdzcC0+ ZnJlZV9iaXRtYXAgJj0gfkJJVF9VTEwoKmNhY2hlbGluZSk7Ci0JaWYgKCFod3NwLT5mcmVlX2Jp dG1hcCkKLQkJbGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7Ci0KLQlzcGluX3VubG9ja19pcnEo Jmd0LT5od3NwX2xvY2spOwotCi0JR0VNX0JVR19PTihod3NwLT52bWEtPnByaXZhdGUgIT0gaHdz cCk7Ci0JcmV0dXJuIGh3c3AtPnZtYTsKLX0KLQotc3RhdGljIHZvaWQgX19pZGxlX2h3c3BfZnJl ZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcCwgaW50IGNhY2hlbGluZSkKLXsKLQlz dHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICpndCA9IGh3c3AtPmd0X3RpbWVsaW5lczsKLQl1bnNp Z25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmd0LT5od3NwX2xvY2ssIGZs YWdzKTsKLQotCS8qIEFzIGEgY2FjaGVsaW5lIGJlY29tZXMgYXZhaWxhYmxlLCBwdWJsaXNoIHRo ZSBIV1NQIG9uIHRoZSBmcmVlbGlzdCAqLwotCWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCi0JCWxp c3RfYWRkX3RhaWwoJmh3c3AtPmZyZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7Ci0KLQlH RU1fQlVHX09OKGNhY2hlbGluZSA+PSBCSVRTX1BFUl9UWVBFKGh3c3AtPmZyZWVfYml0bWFwKSk7 Ci0JaHdzcC0+ZnJlZV9iaXRtYXAgfD0gQklUX1VMTChjYWNoZWxpbmUpOwotCi0JLyogQW5kIGlm IG5vIG9uZSBpcyBsZWZ0IHVzaW5nIGl0LCBnaXZlIHRoZSBwYWdlIGJhY2sgdG8gdGhlIHN5c3Rl bSAqLwotCWlmIChod3NwLT5mcmVlX2JpdG1hcCA9PSB+MHVsbCkgewotCQlpOTE1X3ZtYV9wdXQo aHdzcC0+dm1hKTsKLQkJbGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7Ci0JCWtmcmVlKGh3c3Ap OwotCX0KLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsK LX0KLQotc3RhdGljIHZvaWQgX19yY3VfY2FjaGVsaW5lX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpy Y3UpCi17Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wgPQotCQljb250YWlu ZXJfb2YocmN1LCB0eXBlb2YoKmNsKSwgcmN1KTsKLQotCS8qIE11c3Qgd2FpdCB1bnRpbCBhZnRl ciBhbGwgKnJxLT5od3NwIGFyZSBjb21wbGV0ZSBiZWZvcmUgcmVtb3ZpbmcgKi8KLQlpOTE1X2dl bV9vYmplY3RfdW5waW5fbWFwKGNsLT5od3NwLT52bWEtPm9iaik7Ci0JX19pZGxlX2h3c3BfZnJl ZShjbC0+aHdzcCwgcHRyX3VubWFza19iaXRzKGNsLT52YWRkciwgQ0FDSEVMSU5FX0JJVFMpKTsK LQotCWk5MTVfYWN0aXZlX2ZpbmkoJmNsLT5hY3RpdmUpOwotCWtmcmVlKGNsKTsKLX0KLQotc3Rh dGljIHZvaWQgX19pZGxlX2NhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNo ZWxpbmUgKmNsKQotewotCUdFTV9CVUdfT04oIWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3Rp dmUpKTsKLQljYWxsX3JjdSgmY2wtPnJjdSwgX19yY3VfY2FjaGVsaW5lX2ZyZWUpOwotfQotCiBf X2k5MTVfYWN0aXZlX2NhbGwKLXN0YXRpYyB2b2lkIF9fY2FjaGVsaW5lX3JldGlyZShzdHJ1Y3Qg aTkxNV9hY3RpdmUgKmFjdGl2ZSkKK3N0YXRpYyB2b2lkIF9fdGltZWxpbmVfcmV0aXJlKHN0cnVj dCBpOTE1X2FjdGl2ZSAqYWN0aXZlKQogewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxp bmUgKmNsID0KLQkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjbCksIGFjdGl2ZSk7CisJ c3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVv ZigqdGwpLCBhY3RpdmUpOwogCi0JaTkxNV92bWFfdW5waW4oY2wtPmh3c3AtPnZtYSk7Ci0JaWYg KHB0cl90ZXN0X2JpdChjbC0+dmFkZHIsIENBQ0hFTElORV9GUkVFKSkKLQkJX19pZGxlX2NhY2hl bGluZV9mcmVlKGNsKTsKKwlpOTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsKKwlpbnRlbF90 aW1lbGluZV9wdXQodGwpOwogfQogCi1zdGF0aWMgaW50IF9fY2FjaGVsaW5lX2FjdGl2ZShzdHJ1 Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKK3N0YXRpYyBpbnQgX190aW1lbGluZV9hY3RpdmUoc3Ry dWN0IGk5MTVfYWN0aXZlICphY3RpdmUpCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hl bGluZSAqY2wgPQotCQljb250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsK KwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlw ZW9mKCp0bCksIGFjdGl2ZSk7CiAKLQlfX2k5MTVfdm1hX3BpbihjbC0+aHdzcC0+dm1hKTsKKwlf X2k5MTVfdm1hX3Bpbih0bC0+aHdzcF9nZ3R0KTsKKwlpbnRlbF90aW1lbGluZV9nZXQodGwpOwog CXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAq Ci1jYWNoZWxpbmVfYWxsb2Moc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3AgKmh3c3AsIHVuc2ln bmVkIGludCBjYWNoZWxpbmUpCi17Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAq Y2w7Ci0Jdm9pZCAqdmFkZHI7Ci0KLQlHRU1fQlVHX09OKGNhY2hlbGluZSA+PSBCSVQoQ0FDSEVM SU5FX0JJVFMpKTsKLQotCWNsID0ga21hbGxvYyhzaXplb2YoKmNsKSwgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFjbCkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQl2YWRkciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGh3c3AtPnZtYS0+b2JqLCBJOTE1X01BUF9XQik7Ci0JaWYgKElTX0VS Uih2YWRkcikpIHsKLQkJa2ZyZWUoY2wpOwotCQlyZXR1cm4gRVJSX0NBU1QodmFkZHIpOwotCX0K LQotCWNsLT5od3NwID0gaHdzcDsKLQljbC0+dmFkZHIgPSBwYWdlX3BhY2tfYml0cyh2YWRkciwg Y2FjaGVsaW5lKTsKLQotCWk5MTVfYWN0aXZlX2luaXQoJmNsLT5hY3RpdmUsIF9fY2FjaGVsaW5l X2FjdGl2ZSwgX19jYWNoZWxpbmVfcmV0aXJlKTsKLQotCXJldHVybiBjbDsKLX0KLQotc3RhdGlj IHZvaWQgY2FjaGVsaW5lX2FjcXVpcmUoc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAq Y2wsCi0JCQkgICAgICB1MzIgZ2d0dF9vZmZzZXQpCi17Ci0JaWYgKCFjbCkKLQkJcmV0dXJuOwot Ci0JY2wtPmdndHRfb2Zmc2V0ID0gZ2d0dF9vZmZzZXQ7Ci0JaTkxNV9hY3RpdmVfYWNxdWlyZSgm Y2wtPmFjdGl2ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9yZWxlYXNlKHN0cnVjdCBp bnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewotCWlmIChjbCkKLQkJaTkxNV9hY3RpdmVf cmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9mcmVlKHN0 cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewotCWlmICghaTkxNV9hY3RpdmVf YWNxdWlyZV9pZl9idXN5KCZjbC0+YWN0aXZlKSkgewotCQlfX2lkbGVfY2FjaGVsaW5lX2ZyZWUo Y2wpOwotCQlyZXR1cm47Ci0JfQotCi0JR0VNX0JVR19PTihwdHJfdGVzdF9iaXQoY2wtPnZhZGRy LCBDQUNIRUxJTkVfRlJFRSkpOwotCWNsLT52YWRkciA9IHB0cl9zZXRfYml0KGNsLT52YWRkciwg Q0FDSEVMSU5FX0ZSRUUpOwotCi0JaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19 Ci0KIHN0YXRpYyBpbnQgaW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUg KnRpbWVsaW5lLAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJCQkgICAgICAgc3Ry dWN0IGk5MTVfdm1hICpod3NwLAogCQkJICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpCiB7CiAJ dm9pZCAqdmFkZHI7CisJdTMyICpzZXFubzsKIAogCWtyZWZfaW5pdCgmdGltZWxpbmUtPmtyZWYp OwogCWF0b21pY19zZXQoJnRpbWVsaW5lLT5waW5fY291bnQsIDApOwogCiAJdGltZWxpbmUtPmd0 ID0gZ3Q7CiAKLQl0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYiA9ICFod3NwOwotCXRp bWVsaW5lLT5od3NwX2NhY2hlbGluZSA9IE5VTEw7Ci0KLQlpZiAoIWh3c3ApIHsKLQkJc3RydWN0 IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7Ci0JCXVuc2lnbmVkIGludCBjYWNoZWxpbmU7 Ci0KLQkJaHdzcCA9IGh3c3BfYWxsb2ModGltZWxpbmUsICZjYWNoZWxpbmUpOworCWlmIChod3Nw KSB7CisJCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IG9mZnNldDsKKwkJdGltZWxpbmUtPmh3c3Bf Z2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKKwl9IGVsc2UgeworCQl0aW1lbGluZS0+aGFzX2lu aXRpYWxfYnJlYWRjcnVtYiA9IHRydWU7CisJCWh3c3AgPSBod3NwX2FsbG9jKGd0KTsKIAkJaWYg KElTX0VSUihod3NwKSkKIAkJCXJldHVybiBQVFJfRVJSKGh3c3ApOwotCi0JCWNsID0gY2FjaGVs aW5lX2FsbG9jKGh3c3AtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JCWlmIChJU19FUlIoY2wpKSB7 Ci0JCQlfX2lkbGVfaHdzcF9mcmVlKGh3c3AtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JCQlyZXR1 cm4gUFRSX0VSUihjbCk7Ci0JCX0KLQotCQl0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUgPSBjbDsK LQkJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0gY2FjaGVsaW5lICogQ0FDSEVMSU5FX0JZVEVTOwot Ci0JCXZhZGRyID0gcGFnZV9tYXNrX2JpdHMoY2wtPnZhZGRyKTsKLQl9IGVsc2UgewotCQl0aW1l bGluZS0+aHdzcF9vZmZzZXQgPSBvZmZzZXQ7Ci0JCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoaHdzcC0+b2JqLCBJOTE1X01BUF9XQik7Ci0JCWlmIChJU19FUlIodmFkZHIpKQotCQkJ cmV0dXJuIFBUUl9FUlIodmFkZHIpOworCQl0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaHdzcDsKIAl9 CiAKLQl0aW1lbGluZS0+aHdzcF9zZXFubyA9Ci0JCW1lbXNldCh2YWRkciArIHRpbWVsaW5lLT5o d3NwX29mZnNldCwgMCwgQ0FDSEVMSU5FX0JZVEVTKTsKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKGh3c3AtPm9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIodmFkZHIpKQor CQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CisKKwl0aW1lbGluZS0+aHdzcF9tYXAgPSB2YWRkcjsK KwlzZXFubyA9IHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0OworCVdSSVRFX09OQ0UoKnNl cW5vLCAwKTsKKwl0aW1lbGluZS0+aHdzcF9zZXFubyA9IHNlcW5vOwogCi0JdGltZWxpbmUtPmh3 c3BfZ2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKIAlHRU1fQlVHX09OKHRpbWVsaW5lLT5od3Nw X29mZnNldCA+PSBod3NwLT5zaXplKTsKIAogCXRpbWVsaW5lLT5mZW5jZV9jb250ZXh0ID0gZG1h X2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CkBAIC0yNjgsNiArOTUsNyBAQCBzdGF0aWMgaW50IGlu dGVsX3RpbWVsaW5lX2luaXQoc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSwKIAlJTklU X0xJU1RfSEVBRCgmdGltZWxpbmUtPnJlcXVlc3RzKTsKIAogCWk5MTVfc3luY21hcF9pbml0KCZ0 aW1lbGluZS0+c3luYyk7CisJaTkxNV9hY3RpdmVfaW5pdCgmdGltZWxpbmUtPmFjdGl2ZSwgX190 aW1lbGluZV9hY3RpdmUsIF9fdGltZWxpbmVfcmV0aXJlKTsKIAogCXJldHVybiAwOwogfQpAQCAt Mjc4LDIzICsxMDYsMTggQEAgdm9pZCBpbnRlbF9ndF9pbml0X3RpbWVsaW5lcyhzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQogCiAJc3Bpbl9sb2NrX2luaXQoJnRpbWVsaW5lcy0+bG9jayk7CiAJSU5JVF9M SVNUX0hFQUQoJnRpbWVsaW5lcy0+YWN0aXZlX2xpc3QpOwotCi0Jc3Bpbl9sb2NrX2luaXQoJnRp bWVsaW5lcy0+aHdzcF9sb2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmdGltZWxpbmVzLT5od3NwX2Zy ZWVfbGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0aW1lbGluZSkKK3N0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmko c3RydWN0IHJjdV9oZWFkICpyY3UpCiB7Ci0JR0VNX0JVR19PTihhdG9taWNfcmVhZCgmdGltZWxp bmUtPnBpbl9jb3VudCkpOwotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1 ZXN0cykpOwotCUdFTV9CVUdfT04odGltZWxpbmUtPnJldGlyZSk7CisJc3RydWN0IGludGVsX3Rp bWVsaW5lICp0aW1lbGluZSA9CisJCWNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBpbnRlbF90aW1l bGluZSwgcmN1KTsKIAotCWlmICh0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUpCi0JCWNhY2hlbGlu ZV9mcmVlKHRpbWVsaW5lLT5od3NwX2NhY2hlbGluZSk7Ci0JZWxzZQotCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fbWFwKHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7CisJaTkxNV9nZW1fb2JqZWN0 X3VucGluX21hcCh0aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmopOwogCiAJaTkxNV92bWFfcHV0KHRp bWVsaW5lLT5od3NwX2dndHQpOworCWk5MTVfYWN0aXZlX2ZpbmkoJnRpbWVsaW5lLT5hY3RpdmUp OworCWtmcmVlKHRpbWVsaW5lKTsKIH0KIAogc3RydWN0IGludGVsX3RpbWVsaW5lICoKQEAgLTM2 MCw5ICsxODMsOSBAQCBpbnQgaW50ZWxfdGltZWxpbmVfcGluKHN0cnVjdCBpbnRlbF90aW1lbGlu ZSAqdGwsIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3KQogCUdUX1RSQUNFKHRsLT5ndCwgInRp bWVsaW5lOiVsbHggdXNpbmcgSFdTUCBvZmZzZXQ6JXhcbiIsCiAJCSB0bC0+ZmVuY2VfY29udGV4 dCwgdGwtPmh3c3Bfb2Zmc2V0KTsKIAotCWNhY2hlbGluZV9hY3F1aXJlKHRsLT5od3NwX2NhY2hl bGluZSwgdGwtPmh3c3Bfb2Zmc2V0KTsKKwlpOTE1X2FjdGl2ZV9hY3F1aXJlKCZ0bC0+YWN0aXZl KTsKIAlpZiAoYXRvbWljX2ZldGNoX2luYygmdGwtPnBpbl9jb3VudCkpIHsKLQkJY2FjaGVsaW5l X3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5lKTsKKwkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwt PmFjdGl2ZSk7CiAJCV9faTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7CiAJfQogCkBAIC0z NzEsOSArMTk0LDEzIEBAIGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCwgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCiAKIHZvaWQgaW50ZWxfdGltZWxp bmVfcmVzZXRfc2Vxbm8oY29uc3Qgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIHsKKwl1MzIg Kmh3c3Bfc2Vxbm8gPSAodTMyICopdGwtPmh3c3Bfc2Vxbm87CiAJLyogTXVzdCBiZSBwaW5uZWQg dG8gYmUgd3JpdGFibGUsIGFuZCBubyByZXF1ZXN0cyBpbiBmbGlnaHQuICovCiAJR0VNX0JVR19P TighYXRvbWljX3JlYWQoJnRsLT5waW5fY291bnQpKTsKLQlXUklURV9PTkNFKCoodTMyICopdGwt Pmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CisKKwltZW1zZXQoaHdzcF9zZXFubyArIDEsIDAsIFRJ TUVMSU5FX1NFUU5PX0JZVEVTIC0gc2l6ZW9mKCpod3NwX3NlcW5vKSk7CisJV1JJVEVfT05DRSgq aHdzcF9zZXFubywgdGwtPnNlcW5vKTsKKwljbGZsdXNoKGh3c3Bfc2Vxbm8pOwogfQogCiB2b2lk IGludGVsX3RpbWVsaW5lX2VudGVyKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCkBAIC00NDks MTA2ICsyNzYsMjMgQEAgc3RhdGljIHUzMiB0aW1lbGluZV9hZHZhbmNlKHN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGwpCiAJcmV0dXJuIHRsLT5zZXFubyArPSAxICsgdGwtPmhhc19pbml0aWFsX2Jy ZWFkY3J1bWI7CiB9CiAKLXN0YXRpYyB2b2lkIHRpbWVsaW5lX3JvbGxiYWNrKHN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGwpCi17Ci0JdGwtPnNlcW5vIC09IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJl YWRjcnVtYjsKLX0KLQogc3RhdGljIG5vaW5saW5lIGludAogX19pbnRlbF90aW1lbGluZV9nZXRf c2Vxbm8oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKLQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLAogCQkJICAgdTMyICpzZXFubykKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2Fj aGVsaW5lICpjbDsKLQl1bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwotCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwotCXZvaWQgKnZhZGRyOwotCWludCBlcnI7Ci0KLQltaWdodF9sb2NrKCZ0bC0+Z3QtPmdn dHQtPnZtLm11dGV4KTsKLQlHVF9UUkFDRSh0bC0+Z3QsICJ0aW1lbGluZTolbGx4IHdyYXBwZWRc biIsIHRsLT5mZW5jZV9jb250ZXh0KTsKLQotCS8qCi0JICogSWYgdGhlcmUgaXMgYW4gb3V0c3Rh bmRpbmcgR1BVIHJlZmVyZW5jZSB0byB0aGlzIGNhY2hlbGluZSwKLQkgKiBzdWNoIGFzIGl0IGJl aW5nIHNhbXBsZWQgYnkgYSBIVyBzZW1hcGhvcmUgb24gYW5vdGhlciB0aW1lbGluZSwKLQkgKiB3 ZSBjYW5ub3Qgd3JhcGFyb3VuZCBvdXIgc2Vxbm8gdmFsdWUgKHRoZSBIVyBzZW1hcGhvcmUgZG9l cwotCSAqIGEgc3RyaWN0IGdyZWF0ZXItdGhhbi1vci1lcXVhbHMgY29tcGFyZSwgbm90IGk5MTVf c2Vxbm9fcGFzc2VkKS4KLQkgKiBTbyBpZiB0aGUgY2FjaGVsaW5lIGlzIHN0aWxsIGJ1c3ksIHdl IG11c3QgZGV0YWNoIG91cnNlbHZlcwotCSAqIGZyb20gaXQgYW5kIGxlYXZlIGl0IGluZmxpZ2h0 IGFsb25nc2lkZSBpdHMgdXNlcnMuCi0JICoKLQkgKiBIb3dldmVyLCBpZiBub2JvZHkgaXMgd2F0 Y2hpbmcgYW5kIHdlIGNhbiBndWFyYW50ZWUgdGhhdCBub2JvZHkKLQkgKiB3aWxsLCB3ZSBjb3Vs ZCBzaW1wbHkgcmV1c2UgdGhlIHNhbWUgY2FjaGVsaW5lLgotCSAqCi0JICogaWYgKGk5MTVfYWN0 aXZlX3JlcXVlc3RfaXNfc2lnbmFsZWQoJnRsLT5sYXN0X3JlcXVlc3QpICYmCi0JICogICAgIGk5 MTVfYWN0aXZlX2lzX3NpZ25hbGVkKCZ0bC0+aHdzcF9jYWNoZWxpbmUtPmFjdGl2ZSkpCi0JICoJ cmV0dXJuIDA7Ci0JICoKLQkgKiBUaGF0IHNlZW1zIHVubGlrZWx5IGZvciBhIGJ1c3kgdGltZWxp bmUgdGhhdCBuZWVkZWQgdG8gd3JhcCBpbgotCSAqIHRoZSBmaXJzdCBwbGFjZSwgc28ganVzdCBy ZXBsYWNlIHRoZSBjYWNoZWxpbmUuCi0JICovCi0KLQl2bWEgPSBod3NwX2FsbG9jKHRsLCAmY2Fj aGVsaW5lKTsKLQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJZXJyID0gUFRSX0VSUih2bWEpOwotCQln b3RvIGVycl9yb2xsYmFjazsKLQl9Ci0KLQllcnIgPSBpOTE1X2dndHRfcGluKHZtYSwgTlVMTCwg MCwgUElOX0hJR0gpOwotCWlmIChlcnIpIHsKLQkJX19pZGxlX2h3c3BfZnJlZSh2bWEtPnByaXZh dGUsIGNhY2hlbGluZSk7Ci0JCWdvdG8gZXJyX3JvbGxiYWNrOwotCX0KKwl1MzIgbmV4dF9vZnMg PSBvZmZzZXRfaW5fcGFnZSh0bC0+aHdzcF9vZmZzZXQgKyBUSU1FTElORV9TRVFOT19CWVRFUyk7 CiAKLQljbCA9IGNhY2hlbGluZV9hbGxvYyh2bWEtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JaWYg KElTX0VSUihjbCkpIHsKLQkJZXJyID0gUFRSX0VSUihjbCk7Ci0JCV9faWRsZV9od3NwX2ZyZWUo dm1hLT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCQlnb3RvIGVycl91bnBpbjsKLQl9Ci0JR0VNX0JV R19PTihjbC0+aHdzcC0+dm1hICE9IHZtYSk7Ci0KLQkvKgotCSAqIEF0dGFjaCB0aGUgb2xkIGNh Y2hlbGluZSB0byB0aGUgY3VycmVudCByZXF1ZXN0LCBzbyB0aGF0IHdlIG9ubHkKLQkgKiBmcmVl IGl0IGFmdGVyIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgcmV0aXJlZCwgd2hpY2ggZW5zdXJlcyB0 aGF0Ci0JICogYWxsIHdyaXRlcyBpbnRvIHRoZSBjYWNoZWxpbmUgZnJvbSBwcmV2aW91cyByZXF1 ZXN0cyBhcmUgY29tcGxldGUuCi0JICovCi0JZXJyID0gaTkxNV9hY3RpdmVfcmVmKCZ0bC0+aHdz cF9jYWNoZWxpbmUtPmFjdGl2ZSwKLQkJCSAgICAgIHRsLT5mZW5jZV9jb250ZXh0LAotCQkJICAg ICAgJnJxLT5mZW5jZSk7Ci0JaWYgKGVycikKLQkJZ290byBlcnJfY2FjaGVsaW5lOworCS8qIHcv YTogYml0IDUgbmVlZHMgdG8gYmUgemVybyBmb3IgTUlfRkxVU0hfRFcgYWRkcmVzcy4gKi8KKwlp ZiAoVElNRUxJTkVfU0VRTk9fQllURVMgPD0gQklUKDUpICYmIChuZXh0X29mcyAmIEJJVCg1KSkp CisJCW5leHRfb2ZzID0gb2Zmc2V0X2luX3BhZ2UobmV4dF9vZnMgKyBCSVQoNSkpOwogCi0JY2Fj aGVsaW5lX3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5lKTsgLyogb3duZXJzaGlwIG5vdyB4ZmVy ZWQgdG8gcnEgKi8KLQljYWNoZWxpbmVfZnJlZSh0bC0+aHdzcF9jYWNoZWxpbmUpOwotCi0JaTkx NV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7IC8qIGJpbmRpbmcga2VwdCBhbGl2ZSBieSBvbGQg Y2FjaGVsaW5lICovCi0JaTkxNV92bWFfcHV0KHRsLT5od3NwX2dndHQpOwotCi0JdGwtPmh3c3Bf Z2d0dCA9IGk5MTVfdm1hX2dldCh2bWEpOwotCi0JdmFkZHIgPSBwYWdlX21hc2tfYml0cyhjbC0+ dmFkZHIpOwotCXRsLT5od3NwX29mZnNldCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsK LQl0bC0+aHdzcF9zZXFubyA9Ci0JCW1lbXNldCh2YWRkciArIHRsLT5od3NwX29mZnNldCwgMCwg Q0FDSEVMSU5FX0JZVEVTKTsKLQotCXRsLT5od3NwX29mZnNldCArPSBpOTE1X2dndHRfb2Zmc2V0 KHZtYSk7Ci0JR1RfVFJBQ0UodGwtPmd0LCAidGltZWxpbmU6JWxseCB1c2luZyBIV1NQIG9mZnNl dDoleFxuIiwKLQkJIHRsLT5mZW5jZV9jb250ZXh0LCB0bC0+aHdzcF9vZmZzZXQpOwotCi0JY2Fj aGVsaW5lX2FjcXVpcmUoY2wsIHRsLT5od3NwX29mZnNldCk7Ci0JdGwtPmh3c3BfY2FjaGVsaW5l ID0gY2w7CisJdGwtPmh3c3Bfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0 KSArIG5leHRfb2ZzOworCXRsLT5od3NwX3NlcW5vID0gdGwtPmh3c3BfbWFwICsgbmV4dF9vZnM7 CisJaW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8odGwpOwogCiAJKnNlcW5vID0gdGltZWxpbmVf YWR2YW5jZSh0bCk7CiAJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgqdGwtPmh3c3Bfc2Vx bm8sICpzZXFubykpOwogCXJldHVybiAwOwotCi1lcnJfY2FjaGVsaW5lOgotCWNhY2hlbGluZV9m cmVlKGNsKTsKLWVycl91bnBpbjoKLQlpOTE1X3ZtYV91bnBpbih2bWEpOwotZXJyX3JvbGxiYWNr OgotCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKLQlyZXR1cm4gZXJyOwogfQogCiBpbnQgaW50ZWxf dGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCkBAIC01NTgsNTEg KzMwMiw1MiBAQCBpbnQgaW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1l bGluZSAqdGwsCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CiAKIAkvKiBSZXBsYWNl IHRoZSBIV1NQIG9uIHdyYXBhcm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KLQlpZiAodW5saWtl bHkoISpzZXFubyAmJiB0bC0+aHdzcF9jYWNoZWxpbmUpKQotCQlyZXR1cm4gX19pbnRlbF90aW1l bGluZV9nZXRfc2Vxbm8odGwsIHJxLCBzZXFubyk7CisJaWYgKHVubGlrZWx5KCEqc2Vxbm8gJiYg dGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpKQorCQlyZXR1cm4gX19pbnRlbF90aW1lbGluZV9n ZXRfc2Vxbm8odGwsIHNlcW5vKTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNhY2hl bGluZV9yZWYoc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wsCi0JCQkgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0JcmV0dXJuIGk5MTVfYWN0aXZlX2FkZF9yZXF1ZXN0KCZj bC0+YWN0aXZlLCBycSk7Ci19Ci0KIGludCBpbnRlbF90aW1lbGluZV9yZWFkX2h3c3Aoc3RydWN0 IGk5MTVfcmVxdWVzdCAqZnJvbSwKIAkJCSAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCiAJ CQkgICAgIHUzMiAqaHdzcCkKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpj bDsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOwogCWludCBlcnI7CiAKLQlHRU1fQlVHX09O KCFyY3VfYWNjZXNzX3BvaW50ZXIoZnJvbS0+aHdzcF9jYWNoZWxpbmUpKTsKLQogCXJjdV9yZWFk X2xvY2soKTsKLQljbCA9IHJjdV9kZXJlZmVyZW5jZShmcm9tLT5od3NwX2NhY2hlbGluZSk7Ci0J aWYgKGk5MTVfcmVxdWVzdF9zaWduYWxlZChmcm9tKSkgLyogY29uZmlybSBjYWNoZWxpbmUgaXMg dmFsaWQgKi8KLQkJZ290byB1bmxvY2s7Ci0JaWYgKHVubGlrZWx5KCFpOTE1X2FjdGl2ZV9hY3F1 aXJlX2lmX2J1c3koJmNsLT5hY3RpdmUpKSkKLQkJZ290byB1bmxvY2s7IC8qIHNlcW5vIHdyYXBw ZWQgYW5kIGNvbXBsZXRlZCEgKi8KLQlpZiAodW5saWtlbHkoX19pOTE1X3JlcXVlc3RfaXNfY29t cGxldGUoZnJvbSkpKQotCQlnb3RvIHJlbGVhc2U7CisJdGwgPSByY3VfZGVyZWZlcmVuY2UoZnJv bS0+dGltZWxpbmUpOworCWlmIChpOTE1X3JlcXVlc3Rfc2lnbmFsZWQoZnJvbSkgfHwKKwkgICAg IWk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVzeSgmdGwtPmFjdGl2ZSkpCisJCXRsID0gTlVMTDsK KworCWlmICh0bCkgeworCQkvKiBod3NwX29mZnNldCBtYXkgd3JhcGFyb3VuZCwgc28gdXNlIGZy b20tPmh3c3Bfc2Vxbm8gKi8KKwkJKmh3c3AgPSBpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3NwX2dn dHQpICsKKwkJCW9mZnNldF9pbl9wYWdlKGZyb20tPmh3c3Bfc2Vxbm8pOworCX0KKworCS8qIGVu c3VyZSB3ZSB3YWl0IG9uIHRoZSByaWdodCByZXF1ZXN0LCBpZiBub3QsIHdlIGNvbXBsZXRlZCAq LworCWlmICh0bCAmJiBfX2k5MTVfcmVxdWVzdF9pc19jb21wbGV0ZShmcm9tKSkgeworCQlpOTE1 X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0aXZlKTsKKwkJdGwgPSBOVUxMOworCX0KIAlyY3VfcmVh ZF91bmxvY2soKTsKIAotCWVyciA9IGNhY2hlbGluZV9yZWYoY2wsIHRvKTsKLQlpZiAoZXJyKQor CWlmICghdGwpCisJCXJldHVybiAxOworCisJLyogQ2FuJ3QgZG8gc2VtYXBob3JlIHdhaXRzIG9u IGtlcm5lbCBjb250ZXh0ICovCisJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikgewor CQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKKwl9CisKKwllcnIgPSBpOTE1X2FjdGl2ZV9h ZGRfcmVxdWVzdCgmdGwtPmFjdGl2ZSwgdG8pOwogCi0JKmh3c3AgPSBjbC0+Z2d0dF9vZmZzZXQ7 CiBvdXQ6Ci0JaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7CisJaTkxNV9hY3RpdmVf cmVsZWFzZSgmdGwtPmFjdGl2ZSk7CiAJcmV0dXJuIGVycjsKLQotcmVsZWFzZToKLQlpOTE1X2Fj dGl2ZV9yZWxlYXNlKCZjbC0+YWN0aXZlKTsKLXVubG9jazoKLQlyY3VfcmVhZF91bmxvY2soKTsK LQlyZXR1cm4gMTsKIH0KIAogdm9pZCBpbnRlbF90aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsKQpAQCAtNjExLDggKzM1Niw3IEBAIHZvaWQgaW50ZWxfdGltZWxpbmVfdW5w aW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIAlpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3Qo JnRsLT5waW5fY291bnQpKQogCQlyZXR1cm47CiAKLQljYWNoZWxpbmVfcmVsZWFzZSh0bC0+aHdz cF9jYWNoZWxpbmUpOwotCisJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7CiAJX19p OTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsKIH0KIApAQCAtNjIxLDggKzM2NSwxMSBAQCB2 b2lkIF9faW50ZWxfdGltZWxpbmVfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRpbWVsaW5lID0KIAkJY29udGFpbmVyX29mKGtyZWYsIHR5cGVvZigqdGlt ZWxpbmUpLCBrcmVmKTsKIAotCWludGVsX3RpbWVsaW5lX2ZpbmkodGltZWxpbmUpOwotCWtmcmVl X3JjdSh0aW1lbGluZSwgcmN1KTsKKwlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZ0aW1lbGluZS0+ cGluX2NvdW50KSk7CisJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJlcXVlc3Rz KSk7CisJR0VNX0JVR19PTih0aW1lbGluZS0+cmV0aXJlKTsKKworCWNhbGxfcmN1KCZ0aW1lbGlu ZS0+cmN1LCBpbnRlbF90aW1lbGluZV9maW5pKTsKIH0KIAogdm9pZCBpbnRlbF9ndF9maW5pX3Rp bWVsaW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQpAQCAtNjMwLDcgKzM3Nyw2IEBAIHZvaWQgaW50 ZWxfZ3RfZmluaV90aW1lbGluZXMoc3RydWN0IGludGVsX2d0ICpndCkKIAlzdHJ1Y3QgaW50ZWxf Z3RfdGltZWxpbmVzICp0aW1lbGluZXMgPSAmZ3QtPnRpbWVsaW5lczsKIAogCUdFTV9CVUdfT04o IWxpc3RfZW1wdHkoJnRpbWVsaW5lcy0+YWN0aXZlX2xpc3QpKTsKLQlHRU1fQlVHX09OKCFsaXN0 X2VtcHR5KCZ0aW1lbGluZXMtPmh3c3BfZnJlZV9saXN0KSk7CiB9CiAKIHZvaWQgaW50ZWxfZ3Rf c2hvd190aW1lbGluZXMoc3RydWN0IGludGVsX2d0ICpndCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oCmluZGV4IDlmNjc3YzliN2QwNi4uNzRlNjdk YmY4OWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGlu ZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5 cGVzLmgKQEAgLTE3LDcgKzE3LDYgQEAKIHN0cnVjdCBpOTE1X3ZtYTsKIHN0cnVjdCBpOTE1X3N5 bmNtYXA7CiBzdHJ1Y3QgaW50ZWxfZ3Q7Ci1zdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcDsKIAog c3RydWN0IGludGVsX3RpbWVsaW5lIHsKIAl1NjQgZmVuY2VfY29udGV4dDsKQEAgLTQ0LDEyICs0 MywxMSBAQCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewogCWF0b21pY190IHBpbl9jb3VudDsKIAlh dG9taWNfdCBhY3RpdmVfY291bnQ7CiAKKwl2b2lkICpod3NwX21hcDsKIAljb25zdCB1MzIgKmh3 c3Bfc2Vxbm87CiAJc3RydWN0IGk5MTVfdm1hICpod3NwX2dndHQ7CiAJdTMyIGh3c3Bfb2Zmc2V0 OwogCi0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqaHdzcF9jYWNoZWxpbmU7Ci0K IAlib29sIGhhc19pbml0aWFsX2JyZWFkY3J1bWI7CiAKIAkvKioKQEAgLTY2LDYgKzY0LDggQEAg c3RydWN0IGludGVsX3RpbWVsaW5lIHsKIAkgKi8KIAlzdHJ1Y3QgaTkxNV9hY3RpdmVfZmVuY2Ug bGFzdF9yZXF1ZXN0OwogCisJc3RydWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKKwogCS8qKiBBIGNo YWluIG9mIGNvbXBsZXRlZCB0aW1lbGluZXMgcmVhZHkgZm9yIGVhcmx5IHJldGlyZW1lbnQuICov CiAJc3RydWN0IGludGVsX3RpbWVsaW5lICpyZXRpcmU7CiAKQEAgLTg5LDE1ICs4OSw0IEBAIHN0 cnVjdCBpbnRlbF90aW1lbGluZSB7CiAJc3RydWN0IHJjdV9oZWFkIHJjdTsKIH07CiAKLXN0cnVj dCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgewotCXN0cnVjdCBpOTE1X2FjdGl2ZSBhY3RpdmU7 Ci0KLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcDsKLQl2b2lkICp2YWRkcjsKLQot CXUzMiBnZ3R0X29mZnNldDsKLQotCXN0cnVjdCByY3VfaGVhZCByY3U7Ci19OwotCiAjZW5kaWYg LyogX19JOTE1X1RJTUVMSU5FX1RZUEVTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9lbmdpbmVfY3MuYwppbmRleCA4NGQ4ODNkZTMwZWUuLjdlNDY2YWUxMTRmOCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKQEAgLTQx LDYgKzQxLDkgQEAgc3RhdGljIGludCBwZXJmX2VuZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiBz dGF0aWMgaW50IHdyaXRlX3RpbWVzdGFtcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IHNs b3QpCiB7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9CisJCXJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQocnEtPnRpbWVsaW5lLAorCQkJCQkgICFpOTE1X3JlcXVlc3Rfc2lnbmFsZWQocnEp KTsKIAl1MzIgY21kOwogCXUzMiAqY3M7CiAKQEAgLTUzLDcgKzU2LDcgQEAgc3RhdGljIGludCB3 cml0ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQogCQljbWQr KzsKIAkqY3MrKyA9IGNtZDsKIAkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfVElN RVNUQU1QKHJxLT5lbmdpbmUtPm1taW9fYmFzZSkpOwotCSpjcysrID0gaTkxNV9yZXF1ZXN0X3Rp bWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQgKyBzbG90ICogc2l6ZW9mKHUzMik7CisJKmNzKysgPSB0 bC0+aHdzcF9vZmZzZXQgKyBzbG90ICogc2l6ZW9mKHUzMik7CiAJKmNzKysgPSAwOwogCiAJaW50 ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfdGltZWxpbmUuYwppbmRleCBkMjgzZGNlNWI0YWMuLmJlNDY0NjVhNTdjOSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCkBAIC0zNCwxMCArMzQsMTEg QEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaHdzcF9jYWNoZWxpbmUoc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCkKIHsKIAl1bnNpZ25lZCBsb25nIGFkZHJlc3MgPSAodW5zaWduZWQgbG9uZylwYWdl X2FkZHJlc3MoaHdzcF9wYWdlKHRsKSk7CiAKLQlyZXR1cm4gKGFkZHJlc3MgKyB0bC0+aHdzcF9v ZmZzZXQpIC8gQ0FDSEVMSU5FX0JZVEVTOworCXJldHVybiAoYWRkcmVzcyArIG9mZnNldF9pbl9w YWdlKHRsLT5od3NwX29mZnNldCkpIC8gVElNRUxJTkVfU0VRTk9fQllURVM7CiB9CiAKLSNkZWZp bmUgQ0FDSEVMSU5FU19QRVJfUEFHRSAoUEFHRV9TSVpFIC8gQ0FDSEVMSU5FX0JZVEVTKQorLyog T25seSBoYWxmIG9mIHNlcW5vJ3MgYXJlIHVzYWJsZSwgc2VlIF9faW50ZWxfdGltZWxpbmVfZ2V0 X3NlcW5vKCkgKi8KKyNkZWZpbmUgQ0FDSEVMSU5FU19QRVJfUEFHRSAoUEFHRV9TSVpFIC8gVElN RUxJTkVfU0VRTk9fQllURVMgLyAyKQogCiBzdHJ1Y3QgbW9ja19od3NwX2ZyZWVsaXN0IHsKIAlz dHJ1Y3QgaW50ZWxfZ3QgKmd0OwpAQCAtNjY1LDcgKzY2Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9o d3NwX3dyYXAodm9pZCAqYXJnKQogCWlmIChJU19FUlIodGwpKQogCQlyZXR1cm4gUFRSX0VSUih0 bCk7CiAKLQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9jYWNo ZWxpbmUpCisJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikKIAkJZ290byBvdXRfZnJl ZTsKIAogCWVyciA9IGludGVsX3RpbWVsaW5lX3Bpbih0bCwgTlVMTCk7CkBAIC04MzIsMTIgKzgz MywyNiBAQCBzdGF0aWMgaW50IHNldHVwX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywg c3RydWN0IGludGVsX2d0ICpndCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgc3dpdGNo X3RsX2xvY2soc3RydWN0IGk5MTVfcmVxdWVzdCAqZnJvbSwgc3RydWN0IGk5MTVfcmVxdWVzdCAq dG8pCit7CisJLyogc29tZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhpbmsgY28t cm91dGluZXMgKi8KKworCWlmIChmcm9tKSB7CisJCWxvY2tkZXBfdW5waW5fbG9jaygmZnJvbS0+ Y29udGV4dC0+dGltZWxpbmUtPm11dGV4LCBmcm9tLT5jb29raWUpOworCQltdXRleF91bmxvY2so JmZyb20tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJfQorCisJaWYgKHRvKSB7CisJCW11 dGV4X2xvY2soJnRvLT5jb250ZXh0LT50aW1lbGluZS0+bXV0ZXgpOworCQl0by0+Y29va2llID0g bG9ja2RlcF9waW5fbG9jaygmdG8tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJfQorfQor CiBzdGF0aWMgaW50IGNyZWF0ZV93YXRjaGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncsCiAJCQkg IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgaW50IHJpbmdzeikKIHsKIAlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bDsKIAog CWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKIAlpZiAoSVNfRVJSKGNlKSkKQEAg LTg1MCwxMSArODY1LDggQEAgc3RhdGljIGludCBjcmVhdGVfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93 YXRjaGVyICp3LAogCQlyZXR1cm4gUFRSX0VSUih3LT5ycSk7CiAKIAl3LT5hZGRyID0gaTkxNV9n Z3R0X29mZnNldCh3LT52bWEpOwotCXRsID0gdy0+cnEtPmNvbnRleHQtPnRpbWVsaW5lOwogCi0J Lyogc29tZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhpbmsgY28tcm91dGluZXMg Ki8KLQlsb2NrZGVwX3VucGluX2xvY2soJnRsLT5tdXRleCwgdy0+cnEtPmNvb2tpZSk7Ci0JbXV0 ZXhfdW5sb2NrKCZ0bC0+bXV0ZXgpOworCXN3aXRjaF90bF9sb2NrKHctPnJxLCBOVUxMKTsKIAog CXJldHVybiAwOwogfQpAQCAtODYzLDE1ICs4NzUsMTMgQEAgc3RhdGljIGludCBjaGVja193YXRj aGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkgYm9vbCAo Km9wKSh1MzIgaHdzcCwgdTMyIHNlcW5vKSkKIHsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9 IGZldGNoX2FuZF96ZXJvKCZ3LT5ycSk7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9IHJx LT5jb250ZXh0LT50aW1lbGluZTsKIAl1MzIgb2Zmc2V0LCBlbmQ7CiAJaW50IGVycjsKIAogCUdF TV9CVUdfT04ody0+YWRkciAtIGk5MTVfZ2d0dF9vZmZzZXQody0+dm1hKSA+IHctPnZtYS0+c2l6 ZSk7CiAKIAlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKLQltdXRleF9sb2NrKCZ0bC0+bXV0ZXgpOwot CXJxLT5jb29raWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZ0bC0+bXV0ZXgpOworCXN3aXRjaF90bF9s b2NrKE5VTEwsIHJxKTsKIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKIAogCWlmIChpOTE1X3JlcXVl c3Rfd2FpdChycSwgMCwgSFopIDwgMCkgewpAQCAtOTAwLDEwICs5MTAsNyBAQCBzdGF0aWMgaW50 IGNoZWNrX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywgY29uc3QgY2hhciAqbmFtZSwK IHN0YXRpYyB2b2lkIGNsZWFudXBfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVyICp3KQogewog CWlmICh3LT5ycSkgewotCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gdy0+cnEtPmNvbnRl eHQtPnRpbWVsaW5lOwotCi0JCW11dGV4X2xvY2soJnRsLT5tdXRleCk7Ci0JCXctPnJxLT5jb29r aWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZ0bC0+bXV0ZXgpOworCQlzd2l0Y2hfdGxfbG9jayhOVUxM LCB3LT5ycSk7CiAKIAkJaTkxNV9yZXF1ZXN0X2FkZCh3LT5ycSk7CiAJfQpAQCAtOTQxLDcgKzk0 OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp3cmFwX3RpbWVsaW5lKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQogCX0KIAogCWk5MTVfcmVxdWVzdF9wdXQocnEpOwotCXJxID0gaW50 ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChjZSk7CisJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRl KGNlKTsKIAlpZiAoSVNfRVJSKHJxKSkKIAkJcmV0dXJuIHJxOwogCkBAIC05NzYsNyArOTgzLDcg QEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCiAJaWYgKElTX0VSUih0bCkp CiAJCXJldHVybiBQVFJfRVJSKHRsKTsKIAotCWlmICghdGwtPmh3c3BfY2FjaGVsaW5lKQorCWlm ICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3YXRjaGVyKTsgaSsrKSB7CkBAIC05OTgsNyArMTAwNSw3 IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQlkbyB7CiAJCQlzdHJ1 Y3QgaTkxNV9zd19mZW5jZSAqc3VibWl0OwogCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0J CQl1MzIgaHdzcDsKKwkJCXUzMiBod3NwLCBkdW1teTsKIAogCQkJc3VibWl0ID0gaGVhcF9mZW5j ZV9jcmVhdGUoR0ZQX0tFUk5FTCk7CiAJCQlpZiAoIXN1Ym1pdCkgewpAQCAtMTAxNiwxNCArMTAy MywyNiBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKIAkJCQlnb3RvIG91 dDsKIAkJCX0KIAotCQkJLyogU2tpcCB0byB0aGUgZW5kLCBzYXZpbmcgMzAgbWludXRlcyBvZiBu b3BzICovCi0JCQl0bC0+c2Vxbm8gPSAtMTB1ICsgMiAqIChjb3VudCAmIDMpOwotCQkJV1JJVEVf T05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCB0bC0+c2Vxbm8pOwogCQkJY2UtPnRpbWVsaW5l ID0gaW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKIAotCQkJcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0 ZV9yZXF1ZXN0KGNlKTsKKwkJCS8qIEVuc3VyZSB0aW1lbGluZSBpcyBtYXBwZWQsIGRvbmUgZHVy aW5nIGZpcnN0IHBpbiAqLworCQkJZXJyID0gaW50ZWxfY29udGV4dF9waW4oY2UpOworCQkJaWYg KGVycikgeworCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0K KworCQkJLyoKKwkJCSAqIFN0YXJ0IGF0IGEgbmV3IHdyYXAsIGFuZCBzZXQgc2Vxbm8gcmlnaHQg YmVmb3JlIGFub3RoZXIgd3JhcCwKKwkJCSAqIHNhdmluZyAzMCBtaW51dGVzIG9mIG5vcHMKKwkJ CSAqLworCQkJdGwtPnNlcW5vID0gLTEydSArIDIgKiAoY291bnQgJiAzKTsKKwkJCV9faW50ZWxf dGltZWxpbmVfZ2V0X3NlcW5vKHRsLCAmZHVtbXkpOworCisJCQlycSA9IGk5MTVfcmVxdWVzdF9j cmVhdGUoY2UpOwogCQkJaWYgKElTX0VSUihycSkpIHsKIAkJCQllcnIgPSBQVFJfRVJSKHJxKTsK KwkJCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7 CiAJCQkJZ290byBvdXQ7CiAJCQl9CkBAIC0xMDMzLDMyICsxMDUyLDM1IEBAIHN0YXRpYyBpbnQg bGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQkJCQkJCSAgICBHRlBfS0VSTkVMKTsKIAkJCWlm IChlcnIgPCAwKSB7CiAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJCQkJaW50ZWxfY29udGV4 dF91bnBpbihjZSk7CiAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCQkJCWdvdG8gb3V0Owog CQkJfQogCi0JCQltdXRleF9sb2NrKCZ3YXRjaGVyWzBdLnJxLT5jb250ZXh0LT50aW1lbGluZS0+ bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2socnEsIHdhdGNoZXJbMF0ucnEpOwogCQkJZXJyID0g aW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHJxLCB3YXRjaGVyWzBdLnJxLCAmaHdzcCk7CiAJCQlp ZiAoZXJyID09IDApCiAJCQkJZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hlclswXS5ycSwgLyog YmVmb3JlICovCiAJCQkJCQkgICAgIHJxLT5mZW5jZS5zZXFubywgaHdzcCwKIAkJCQkJCSAgICAg JndhdGNoZXJbMF0uYWRkcik7Ci0JCQltdXRleF91bmxvY2soJndhdGNoZXJbMF0ucnEtPmNvbnRl eHQtPnRpbWVsaW5lLT5tdXRleCk7CisJCQlzd2l0Y2hfdGxfbG9jayh3YXRjaGVyWzBdLnJxLCBy cSk7CiAJCQlpZiAoZXJyKSB7CiAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJCQkJaW50ZWxf Y29udGV4dF91bnBpbihjZSk7CiAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCQkJCWdvdG8g b3V0OwogCQkJfQogCi0JCQltdXRleF9sb2NrKCZ3YXRjaGVyWzFdLnJxLT5jb250ZXh0LT50aW1l bGluZS0+bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2socnEsIHdhdGNoZXJbMV0ucnEpOwogCQkJ ZXJyID0gaW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHJxLCB3YXRjaGVyWzFdLnJxLCAmaHdzcCk7 CiAJCQlpZiAoZXJyID09IDApCiAJCQkJZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hlclsxXS5y cSwgLyogYWZ0ZXIgKi8KIAkJCQkJCSAgICAgcnEtPmZlbmNlLnNlcW5vLCBod3NwLAogCQkJCQkJ ICAgICAmd2F0Y2hlclsxXS5hZGRyKTsKLQkJCW11dGV4X3VubG9jaygmd2F0Y2hlclsxXS5ycS0+ Y29udGV4dC0+dGltZWxpbmUtPm11dGV4KTsKKwkJCXN3aXRjaF90bF9sb2NrKHdhdGNoZXJbMV0u cnEsIHJxKTsKIAkJCWlmIChlcnIpIHsKIAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCQlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiAJCQkJ Z290byBvdXQ7CiAJCQl9CkBAIC0xMDY3LDYgKzEwODksNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdz cF9yZWFkKHZvaWQgKmFyZykKIAkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCiAJCQlycSA9IHdy YXBfdGltZWxpbmUocnEpOworCQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CiAJCQlpbnRlbF9j b250ZXh0X3B1dChjZSk7CiAJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCWVyciA9IFBUUl9FUlIo cnEpOwpAQCAtMTEwNiw4ICsxMTI5LDggQEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lk ICphcmcpCiAJCQkgICAgMyAqIHdhdGNoZXJbMV0ucnEtPnJpbmctPnNpemUpCiAJCQkJYnJlYWs7 CiAKLQkJfSB3aGlsZSAoIV9faWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpKTsKLQkJV1JJVEVf T05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCAweGRlYWRiZWVmKTsKKwkJfSB3aGlsZSAoIV9f aWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpICYmCisJCQkgY291bnQgPCAoUEFHRV9TSVpFIC8g VElNRUxJTkVfU0VRTk9fQllURVMgLSAxKSAvIDIpOwogCiAJCXByX2luZm8oIiVzOiBzaW11bGF0 ZWQgJWx1IHdyYXBzXG4iLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKIAkJZXJyID0gY2hlY2tfd2F0 Y2hlcigmd2F0Y2hlclsxXSwgImFmdGVyIiwgY21wX2d0ZSk7CkBAIC0xMTUyLDkgKzExNzUsNyBA QCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yb2xsb3Zlcl9rZXJuZWwodm9pZCAqYXJnKQogCQl9CiAK IAkJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9mZW5jZV9pc3NldCgmdGwtPmxhc3RfcmVxdWVzdCkp OwotCQl0bC0+c2Vxbm8gPSAwOwotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7Ci0JCXRpbWVsaW5l X3JvbGxiYWNrKHRsKTsKKwkJdGwtPnNlcW5vID0gLTJ1OwogCQlXUklURV9PTkNFKCoodTMyICop dGwtPmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUocnEpOyBpKyspIHsKQEAgLTEyMzQsMTEgKzEyNTUsMTAgQEAgc3RhdGljIGludCBsaXZlX2h3 c3Bfcm9sbG92ZXJfdXNlcih2b2lkICphcmcpCiAJCQlnb3RvIG91dDsKIAogCQl0bCA9IGNlLT50 aW1lbGluZTsKLQkJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYiB8fCAhdGwtPmh3c3Bf Y2FjaGVsaW5lKQorCQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQogCQkJZ290byBv dXQ7CiAKLQkJdGltZWxpbmVfcm9sbGJhY2sodGwpOwotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7 CisJCXRsLT5zZXFubyA9IC00dTsKIAkJV1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5v LCB0bC0+c2Vxbm8pOwogCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJxKTsgaSsrKSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IGU3YjRjNGJjNDFhNi4uNTlkOTQy OTEwNTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtNzk0LDcgKzc5NCw2 IEBAIF9faTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIGdmcF90 IGdmcCkKIAlycS0+ZmVuY2Uuc2Vxbm8gPSBzZXFubzsKIAogCVJDVV9JTklUX1BPSU5URVIocnEt PnRpbWVsaW5lLCB0bCk7Ci0JUkNVX0lOSVRfUE9JTlRFUihycS0+aHdzcF9jYWNoZWxpbmUsIHRs LT5od3NwX2NhY2hlbGluZSk7CiAJcnEtPmh3c3Bfc2Vxbm8gPSB0bC0+aHdzcF9zZXFubzsKIAlH RU1fQlVHX09OKF9faTkxNV9yZXF1ZXN0X2lzX2NvbXBsZXRlKHJxKSk7CiAKQEAgLTEwMzksOSAr MTAzOCw2IEBAIGVtaXRfc2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCiAJ aWYgKGk5MTVfcmVxdWVzdF9oYXNfaW5pdGlhbF9icmVhZGNydW1iKHRvKSkKIAkJZ290byBhd2Fp dF9mZW5jZTsKIAotCWlmICghcmN1X2FjY2Vzc19wb2ludGVyKGZyb20tPmh3c3BfY2FjaGVsaW5l KSkKLQkJZ290byBhd2FpdF9mZW5jZTsKLQogCS8qCiAJICogSWYgdGhpcyBvciBpdHMgZGVwZW5k ZW50cyBhcmUgd2FpdGluZyBvbiBhbiBleHRlcm5hbCBmZW5jZQogCSAqIHRoYXQgbWF5IGZhaWwg Y2F0YXN0cm9waGljYWxseSwgdGhlbiB3ZSB3YW50IHRvIGF2b2lkIHVzaW5nCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5oCmluZGV4IGRkMTBhNmRiM2QyMS4uMzgwNjI0OTViNjZmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaApAQCAtMjM5LDE2ICsyMzksNiBAQCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0IHsKIAkgKi8KIAljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CiAKLQkvKgotCSAq IElmIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5vIGZvciB0aGlzIHJlcXVl c3QgaW4KLQkgKiBhbm90aGVyIHJlcXVlc3QsIHdlIG5lZWQgdG8ga2VlcCBhIHJlYWQgcmVmZXJl bmNlIHRvIHRoaXMgYXNzb2NpYXRlZAotCSAqIGNhY2hlbGluZSwgc28gdGhhdCB3ZSBkbyBub3Qg ZnJlZSBhbmQgcmVjeWNsZSBpdCBiZWZvcmUgdGhlIGZvcmVpZ24KLQkgKiBvYnNlcnZlcnMgaGF2 ZSBjb21wbGV0ZWQuIEhlbmNlLCB3ZSBrZWVwIGEgcG9pbnRlciB0byB0aGUgY2FjaGVsaW5lCi0J ICogaW5zaWRlIHRoZSB0aW1lbGluZSdzIEhXU1Agdm1hLCBidXQgaXQgaXMgb25seSB2YWxpZCB3 aGlsZSB0aGlzCi0JICogcmVxdWVzdCBoYXMgbm90IGNvbXBsZXRlZCBhbmQgZ3VhcmRlZCBieSB0 aGUgdGltZWxpbmUgbXV0ZXguCi0JICovCi0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGlu ZSBfX3JjdSAqaHdzcF9jYWNoZWxpbmU7Ci0KIAkvKiogUG9zaXRpb24gaW4gdGhlIHJpbmcgb2Yg dGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCiAJdTMyIGhlYWQ7CiAKQEAgLTY1MCw0ICs2NDAs MjUgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF91c2Vfc2VtYXBob3Jlcyhjb25z dCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlyZXR1cm4gaW50ZWxfZW5naW5lX2hhc19zZW1h cGhvcmVzKHJxLT5lbmdpbmUpOwogfQogCitzdGF0aWMgaW5saW5lIHUzMgoraTkxNV9yZXF1ZXN0 X2FjdGl2ZV9zZXFubyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwl1MzIgaHdz cF9waHlzX2Jhc2UgPQorCQlwYWdlX21hc2tfYml0cyhpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVs aW5lKHJxKS0+aHdzcF9vZmZzZXQpOworCXUzMiBod3NwX3JlbGF0aXZlX29mZnNldCA9IG9mZnNl dF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKTsKKworCS8qCisJICogQmVjYXVzZSBvZiB3cmFwYXJv dW5kLCB3ZSBjYW5ub3Qgc2ltcGx5IHRha2UgdGwtPmh3c3Bfb2Zmc2V0LAorCSAqIGJ1dCBpbnN0 ZWFkIHVzZSB0aGUgZmFjdCB0aGF0IHRoZSByZWxhdGl2ZSBmb3IgdmFkZHIgaXMgdGhlCisJICog b2Zmc2V0IGFzIGZvciBod3NwX29mZnNldC4gVGFrZSB0aGUgdG9wIGJpdHMgZnJvbSB0bC0+aHdz cF9vZmZzZXQKKwkgKiBhbmQgY29tYmluZSB0aGVtIHdpdGggdGhlIHJlbGF0aXZlIG9mZnNldCBp biBycS0+aHdzcF9zZXFuby4KKwkgKgorCSAqIEFzIHJ3LT5od3NwX3NlcW5vIGlzIHJld3JpdHRl biB3aGVuIHNpZ25hbGVkLCB0aGlzIG9ubHkgd29ya3MKKwkgKiB3aGVuIHRoZSByZXF1ZXN0IGlz bid0IHNpZ25hbGVkIHlldCwgYnV0IGF0IHRoYXQgcG9pbnQgeW91CisJICogbm8gbG9uZ2VyIG5l ZWQgdGhlIG9mZnNldC4KKwkgKi8KKworCXJldHVybiBod3NwX3BoeXNfYmFzZSArIGh3c3BfcmVs YXRpdmVfb2Zmc2V0OworfQorCiAjZW5kaWYgLyogSTkxNV9SRVFVRVNUX0ggKi8KLS0gCjIuMzEu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRl dmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== 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 5F40DC433C1 for ; Tue, 23 Mar 2021 15:51:15 +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 06EA0619B9 for ; Tue, 23 Mar 2021 15:51:14 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 06EA0619B9 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 015616EA5F; Tue, 23 Mar 2021 15:51:14 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 748C16E950 for ; Tue, 23 Mar 2021 15:51:11 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Tue, 23 Mar 2021 16:49:50 +0100 Message-Id: <20210323155059.628690-2-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.31.0 In-Reply-To: <20210323155059.628690-1-maarten.lankhorst@linux.intel.com> References: <20210323155059.628690-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v9 01/70] drm/i915: Do not share hwsp across contexts any more, v8. 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?= , dri-devel@lists.freedesktop.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" SW5zdGVhZCBvZiBzaGFyaW5nIHBhZ2VzIHdpdGggYnJlYWRjcnVtYnMsIGdpdmUgZWFjaCB0aW1l bGluZSBhCnNpbmdsZSBwYWdlLiBUaGlzIGFsbG93cyB1bnJlbGF0ZWQgdGltZWxpbmVzIG5vdCB0 byBzaGFyZSBsb2NrcwphbnkgbW9yZSBkdXJpbmcgY29tbWFuZCBzdWJtaXNzaW9uLgoKQXMgYW4g YWRkaXRpb25hbCBiZW5lZml0LCBzZXFubyB3cmFwYXJvdW5kIG5vIGxvbmdlciByZXF1aXJlcwpp OTE1X3ZtYV9waW4sIHdoaWNoIG1lYW5zIHdlIG5vIGxvbmdlciBuZWVkIHRvIHdvcnJ5IGFib3V0 IGEKcG90ZW50aWFsIC1FREVBRExLIGF0IGEgcG9pbnQgd2hlcmUgd2UgYXJlIHJlYWR5IHRvIHN1 Ym1pdC4KCkNoYW5nZXMgc2luY2UgdjE6Ci0gRml4IGVycm9uZW91cyBpOTE1X3ZtYV9hY3F1aXJl IHRoYXQgc2hvdWxkIGJlIGEgaTkxNV92bWFfcmVsZWFzZSAoaWNrbGUpLgotIEV4dHJhIGNoZWNr IGZvciBjb21wbGV0aW9uIGluIGludGVsX3JlYWRfaHdzcCgpLgpDaGFuZ2VzIHNpbmNlIHYyOgot IEZpeCBpbmNvbnNpc3RlbnQgaW5kZW50IGluIGh3c3BfYWxsb2MoKSAoa2J1aWxkKQotIG1lbXNl dCBlbnRpcmUgY2FjaGVsaW5lIHRvIDAuCkNoYW5nZXMgc2luY2UgdjM6Ci0gRG8gc2FtZSBpbiBp bnRlbF90aW1lbGluZV9yZXNldF9zZXFubygpLCBhbmQgY2xmbHVzaCBmb3IgZ29vZCBtZWFzdXJl LgpDaGFuZ2VzIHNpbmNlIHY0OgotIFVzZSByZWZjb3VudGluZyBvbiB0aW1lbGluZSwgaW5zdGVh ZCBvZiByZWx5aW5nIG9uIGk5MTVfYWN0aXZlLgotIEZpeCB3YWl0aW5nIG9uIGtlcm5lbCByZXF1 ZXN0cy4KQ2hhbmdlcyBzaW5jZSB2NToKLSBCdW1wIGFtb3VudCBvZiBzbG90cyB0byBtYXhpbXVt ICgyNTYpLCBmb3IgYmVzdCB3cmFwYXJvdW5kcy4KLSBBZGQgaHdzcF9vZmZzZXQgdG8gaTkxNV9y ZXF1ZXN0IHRvIGZpeCBwb3RlbnRpYWwgd3JhcGFyb3VuZCBoYW5nLgotIEVuc3VyZSB0aW1lbGlu ZSB3cmFwIHRlc3Qgd29ya3Mgd2l0aCB0aGUgY2hhbmdlcy4KLSBBc3NpZ24gaHdzcCBpbiBpbnRl bF90aW1lbGluZV9yZWFkX2h3c3AoKSB3aXRoaW4gdGhlIHJjdSBsb2NrIHRvCiAgZml4IGEgaGFu Zy4KQ2hhbmdlcyBzaW5jZSB2NjoKLSBSZW5hbWUgaTkxNV9yZXF1ZXN0X2FjdGl2ZV9vZmZzZXQg dG8gaTkxNV9yZXF1ZXN0X2FjdGl2ZV9zZXFubygpLAogIGFuZCBlbGFib3JhdGUgdGhlIGZ1bmN0 aW9uLiAodHZydGtvKQpDaGFuZ2VzIHNpbmNlIHY3OgotIE1vdmUgaHVuayB0byB3aGVyZSBpdCBi ZWxvbmdzLiAoamVrc3RyYW5kKQotIFJlcGxhY2UgQ0FDSEVMSU5FX0JZVEVTIHdpdGggVElNRUxJ TkVfU0VRTk9fQllURVMuIChqZWtzdHJhbmQpCgpTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmto b3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgpSZXZpZXdlZC1ieTogVGhv bWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPiAjdjEKUmVwb3J0ZWQt Ynk6IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgICAgICB8ICAgMiArLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvZ2VuNl9lbmdpbmVfY3MuYyAgICAgIHwgICA4ICstCiBkcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jICAgICAgfCAgMTMgKy0KIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jICAgICB8ICAgMSArCiBkcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9pbnRlbF9ndF90eXBlcy5oICAgICAgfCAgIDQgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfdGltZWxpbmUuYyAgICAgIHwgNDIyICsrKystLS0tLS0tLS0tLS0tLQogLi4uL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oICAgIHwgIDE3ICstCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYyAgfCAgIDUgKy0KIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMgICB8ICA4OCArKy0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCAgIDQgLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDMxICstCiAxMSBmaWxlcyBj aGFuZ2VkLCAxNzggaW5zZXJ0aW9ucygrKSwgNDE3IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jCmluZGV4IGI0OTFhNjQ5MTljOC4uOTY0NjIwMGQy NzkyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMKQEAgLTE0Myw3 ICsxNDMsNyBAQCBzdGF0aWMgdTMyICpfX2dlbjJfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLCB1MzIgKmNzLAogCQkJCSAgIGludCBmbHVzaCwgaW50IHBvc3QpCiB7CiAJ R0VNX0JVR19PTihpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9nZ3R0ICE9 IHJxLT5lbmdpbmUtPnN0YXR1c19wYWdlLnZtYSk7Ci0JR0VNX0JVR19PTihvZmZzZXRfaW5fcGFn ZShpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQpICE9IEk5MTVf R0VNX0hXU19TRVFOT19BRERSKTsKKwlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKHJxLT5od3Nw X3NlcW5vKSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7CiAKIAkqY3MrKyA9IE1JX0ZMVVNI OwogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2luZV9jcy5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuNl9lbmdpbmVfY3MuYwppbmRleCBjZTM4ZDFi Y2FiYTMuLmIzODhjZWVlYjFjOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv Z2VuNl9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2lu ZV9jcy5jCkBAIC0xNjEsNyArMTYxLDcgQEAgdTMyICpnZW42X2VtaXRfYnJlYWRjcnVtYl9yY3Mo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiAJCSBQSVBFX0NPTlRST0xfRENfRkxV U0hfRU5BQkxFIHwKIAkJIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CiAJCSBQSVBFX0NPTlRST0xf Q1NfU1RBTEwpOwotCSpjcysrID0gaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3 c3Bfb2Zmc2V0IHwKKwkqY3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfc2Vxbm8ocnEpIHwKIAkJ UElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7CiAJKmNzKysgPSBycS0+ZmVuY2Uuc2Vxbm87CiAKQEAg LTM1OSw3ICszNTksNyBAQCB1MzIgKmdlbjdfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgdTMyICpjcykKIAkJIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CiAJCSBQ SVBFX0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAogCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsK LQkqY3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldDsK KwkqY3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfc2Vxbm8ocnEpOwogCSpjcysrID0gcnEtPmZl bmNlLnNlcW5vOwogCiAJKmNzKysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKQEAgLTM3NCw3ICszNzQs NyBAQCB1MzIgKmdlbjdfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpy cSwgdTMyICpjcykKIHUzMiAqZ2VuNl9lbWl0X2JyZWFkY3J1bWJfeGNzKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCB1MzIgKmNzKQogewogCUdFTV9CVUdfT04oaTkxNV9yZXF1ZXN0X2FjdGl2ZV90 aW1lbGluZShycSktPmh3c3BfZ2d0dCAhPSBycS0+ZW5naW5lLT5zdGF0dXNfcGFnZS52bWEpOwot CUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UoaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShy cSktPmh3c3Bfb2Zmc2V0KSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7CisJR0VNX0JVR19P TihvZmZzZXRfaW5fcGFnZShycS0+aHdzcF9zZXFubykgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FE RFIpOwogCiAJKmNzKysgPSBNSV9GTFVTSF9EVyB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcgfCBN SV9GTFVTSF9EV19TVE9SRV9JTkRFWDsKIAkqY3MrKyA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERS IHwgTUlfRkxVU0hfRFdfVVNFX0dUVDsKQEAgLTM5NCw3ICszOTQsNyBAQCB1MzIgKmdlbjdfZW1p dF9icmVhZGNydW1iX3hjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykKIAlpbnQg aTsKIAogCUdFTV9CVUdfT04oaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bf Z2d0dCAhPSBycS0+ZW5naW5lLT5zdGF0dXNfcGFnZS52bWEpOwotCUdFTV9CVUdfT04ob2Zmc2V0 X2luX3BhZ2UoaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0KSAh PSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7CisJR0VNX0JVR19PTihvZmZzZXRfaW5fcGFnZShy cS0+aHdzcF9zZXFubykgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIpOwogCiAJKmNzKysgPSBN SV9GTFVTSF9EVyB8IE1JX0lOVkFMSURBVEVfVExCIHwKIAkJTUlfRkxVU0hfRFdfT1BfU1RPUkVE VyB8IE1JX0ZMVVNIX0RXX1NUT1JFX0lOREVYOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhf ZW5naW5lX2NzLmMKaW5kZXggY2FjODBhZjdhZDFjLi42YjljMzRkM2FjOGQgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYwpAQCAtMzM4LDE1ICszMzgsMTQgQEAgc3Rh dGljIHUzMiBwcmVlbXB0X2FkZHJlc3Moc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQog CiBzdGF0aWMgdTMyIGh3c3Bfb2Zmc2V0KGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQog ewotCWNvbnN0IHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsOworCWNvbnN0IHN0 cnVjdCBpbnRlbF90aW1lbGluZSAqdGw7CiAKLQkvKiBCZWZvcmUgdGhlIHJlcXVlc3QgaXMgZXhl Y3V0ZWQsIHRoZSB0aW1lbGluZS9jYWNobGluZSBpcyBmaXhlZCAqLworCS8qIEJlZm9yZSB0aGUg cmVxdWVzdCBpcyBleGVjdXRlZCwgdGhlIHRpbWVsaW5lIGlzIGZpeGVkICovCisJdGwgPSByY3Vf ZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJxLT50aW1lbGluZSwKKwkJCQkgICAgICAgIWk5MTVfcmVx dWVzdF9zaWduYWxlZChycSkpOwogCi0JY2wgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJx LT5od3NwX2NhY2hlbGluZSwgMSk7Ci0JaWYgKGNsKQotCQlyZXR1cm4gY2wtPmdndHRfb2Zmc2V0 OwotCi0JcmV0dXJuIHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQocnEtPnRpbWVsaW5lLCAxKS0+ aHdzcF9vZmZzZXQ7CisJLyogU2VlIHRoZSBjb21tZW50IGluIGk5MTVfcmVxdWVzdF9hY3RpdmVf c2Vxbm8oKS4gKi8KKwlyZXR1cm4gcGFnZV9tYXNrX2JpdHModGwtPmh3c3Bfb2Zmc2V0KSArIG9m ZnNldF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKTsKIH0KIAogaW50IGdlbjhfZW1pdF9pbml0X2Jy ZWFkY3J1bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2VuZ2luZV9jcy5jCmluZGV4IGI0ZGYyNzVjYmE3OS4uZTZjZWZkMDBiNGExIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtNzUyLDYgKzc1Miw3 IEBAIHN0YXRpYyBpbnQgbWVhc3VyZV9icmVhZGNydW1iX2R3KHN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZSkKIAlmcmFtZS0+cnEuZW5naW5lID0gZW5naW5lOwogCWZyYW1lLT5ycS5jb250ZXh0ID0g Y2U7CiAJcmN1X2Fzc2lnbl9wb2ludGVyKGZyYW1lLT5ycS50aW1lbGluZSwgY2UtPnRpbWVsaW5l KTsKKwlmcmFtZS0+cnEuaHdzcF9zZXFubyA9IGNlLT50aW1lbGluZS0+aHdzcF9zZXFubzsKIAog CWZyYW1lLT5yaW5nLnZhZGRyID0gZnJhbWUtPmNzOwogCWZyYW1lLT5yaW5nLnNpemUgPSBzaXpl b2YoZnJhbWUtPmNzKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X2d0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCmlu ZGV4IDYyNmFmMzdjNzc5MC4uM2Y2ZGI4MzU3MzA5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX2d0X3R5cGVzLmgKQEAgLTQ1LDEwICs0NSw2IEBAIHN0cnVjdCBpbnRlbF9ndCB7CiAJ c3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyB7CiAJCXNwaW5sb2NrX3QgbG9jazsgLyogcHJvdGVj dHMgYWN0aXZlX2xpc3QgKi8KIAkJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlzdDsKLQotCQkv KiBQYWNrIG11bHRpcGxlIHRpbWVsaW5lcycgc2Vxbm9zIGludG8gdGhlIHNhbWUgcGFnZSAqLwot CQlzcGlubG9ja190IGh3c3BfbG9jazsKLQkJc3RydWN0IGxpc3RfaGVhZCBod3NwX2ZyZWVfbGlz dDsKIAl9IHRpbWVsaW5lczsKIAogCXN0cnVjdCBpbnRlbF9ndF9yZXF1ZXN0cyB7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYwppbmRleCA0OTFiOGRmMTc0YzIuLmVmZTIw MzBjZmU1ZSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxp bmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCkBAIC0x MSwyMSArMTEsOSBAQAogI2luY2x1ZGUgImludGVsX3JpbmcuaCIKICNpbmNsdWRlICJpbnRlbF90 aW1lbGluZS5oIgogCi0jZGVmaW5lIHB0cl9zZXRfYml0KHB0ciwgYml0KSAoKHR5cGVvZihwdHIp KSgodW5zaWduZWQgbG9uZykocHRyKSB8IEJJVChiaXQpKSkKLSNkZWZpbmUgcHRyX3Rlc3RfYml0 KHB0ciwgYml0KSAoKHVuc2lnbmVkIGxvbmcpKHB0cikgJiBCSVQoYml0KSkKKyNkZWZpbmUgVElN RUxJTkVfU0VRTk9fQllURVMgOAogCi0jZGVmaW5lIENBQ0hFTElORV9CSVRTIDYKLSNkZWZpbmUg Q0FDSEVMSU5FX0ZSRUUgQ0FDSEVMSU5FX0JJVFMKLQotc3RydWN0IGludGVsX3RpbWVsaW5lX2h3 c3AgewotCXN0cnVjdCBpbnRlbF9ndCAqZ3Q7Ci0Jc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAq Z3RfdGltZWxpbmVzOwotCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saW5rOwotCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwotCXU2NCBmcmVlX2JpdG1hcDsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTkxNV92 bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQorc3RhdGljIHN0cnVjdCBpOTE1 X3ZtYSAqaHdzcF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsKQEAgLTQ0LDIyMCArMzIsNTkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19od3Nw X2FsbG9jKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJcmV0dXJuIHZtYTsKIH0KIAotc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqCi1od3NwX2FsbG9jKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxp bmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5lKQotewotCXN0cnVjdCBpbnRlbF9ndF90aW1lbGlu ZXMgKmd0ID0gJnRpbWVsaW5lLT5ndC0+dGltZWxpbmVzOwotCXN0cnVjdCBpbnRlbF90aW1lbGlu ZV9od3NwICpod3NwOwotCi0JQlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUodTY0KSAqIENBQ0hF TElORV9CWVRFUyA+IFBBR0VfU0laRSk7Ci0KLQlzcGluX2xvY2tfaXJxKCZndC0+aHdzcF9sb2Nr KTsKLQotCS8qIGh3c3BfZnJlZV9saXN0IG9ubHkgY29udGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZh aWxhYmxlIGNhY2hlbGluZXMgKi8KLQlod3NwID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZn dC0+aHdzcF9mcmVlX2xpc3QsCi0JCQkJCXR5cGVvZigqaHdzcCksIGZyZWVfbGluayk7Ci0JaWYg KCFod3NwKSB7Ci0JCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCi0JCXNwaW5fdW5sb2NrX2lycSgm Z3QtPmh3c3BfbG9jayk7Ci0KLQkJaHdzcCA9IGttYWxsb2Moc2l6ZW9mKCpod3NwKSwgR0ZQX0tF Uk5FTCk7Ci0JCWlmICghaHdzcCkKLQkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JCXZt YSA9IF9faHdzcF9hbGxvYyh0aW1lbGluZS0+Z3QpOwotCQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJ CWtmcmVlKGh3c3ApOwotCQkJcmV0dXJuIHZtYTsKLQkJfQotCi0JCUdUX1RSQUNFKHRpbWVsaW5l LT5ndCwgIm5ldyBIV1NQIGFsbG9jYXRlZFxuIik7Ci0KLQkJdm1hLT5wcml2YXRlID0gaHdzcDsK LQkJaHdzcC0+Z3QgPSB0aW1lbGluZS0+Z3Q7Ci0JCWh3c3AtPnZtYSA9IHZtYTsKLQkJaHdzcC0+ ZnJlZV9iaXRtYXAgPSB+MHVsbDsKLQkJaHdzcC0+Z3RfdGltZWxpbmVzID0gZ3Q7Ci0KLQkJc3Bp bl9sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7Ci0JCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xpbmss ICZndC0+aHdzcF9mcmVlX2xpc3QpOwotCX0KLQotCUdFTV9CVUdfT04oIWh3c3AtPmZyZWVfYml0 bWFwKTsKLQkqY2FjaGVsaW5lID0gX19mZnM2NChod3NwLT5mcmVlX2JpdG1hcCk7Ci0JaHdzcC0+ ZnJlZV9iaXRtYXAgJj0gfkJJVF9VTEwoKmNhY2hlbGluZSk7Ci0JaWYgKCFod3NwLT5mcmVlX2Jp dG1hcCkKLQkJbGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7Ci0KLQlzcGluX3VubG9ja19pcnEo Jmd0LT5od3NwX2xvY2spOwotCi0JR0VNX0JVR19PTihod3NwLT52bWEtPnByaXZhdGUgIT0gaHdz cCk7Ci0JcmV0dXJuIGh3c3AtPnZtYTsKLX0KLQotc3RhdGljIHZvaWQgX19pZGxlX2h3c3BfZnJl ZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcCwgaW50IGNhY2hlbGluZSkKLXsKLQlz dHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICpndCA9IGh3c3AtPmd0X3RpbWVsaW5lczsKLQl1bnNp Z25lZCBsb25nIGZsYWdzOwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmd0LT5od3NwX2xvY2ssIGZs YWdzKTsKLQotCS8qIEFzIGEgY2FjaGVsaW5lIGJlY29tZXMgYXZhaWxhYmxlLCBwdWJsaXNoIHRo ZSBIV1NQIG9uIHRoZSBmcmVlbGlzdCAqLwotCWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCi0JCWxp c3RfYWRkX3RhaWwoJmh3c3AtPmZyZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7Ci0KLQlH RU1fQlVHX09OKGNhY2hlbGluZSA+PSBCSVRTX1BFUl9UWVBFKGh3c3AtPmZyZWVfYml0bWFwKSk7 Ci0JaHdzcC0+ZnJlZV9iaXRtYXAgfD0gQklUX1VMTChjYWNoZWxpbmUpOwotCi0JLyogQW5kIGlm IG5vIG9uZSBpcyBsZWZ0IHVzaW5nIGl0LCBnaXZlIHRoZSBwYWdlIGJhY2sgdG8gdGhlIHN5c3Rl bSAqLwotCWlmIChod3NwLT5mcmVlX2JpdG1hcCA9PSB+MHVsbCkgewotCQlpOTE1X3ZtYV9wdXQo aHdzcC0+dm1hKTsKLQkJbGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7Ci0JCWtmcmVlKGh3c3Ap OwotCX0KLQotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsK LX0KLQotc3RhdGljIHZvaWQgX19yY3VfY2FjaGVsaW5lX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpy Y3UpCi17Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wgPQotCQljb250YWlu ZXJfb2YocmN1LCB0eXBlb2YoKmNsKSwgcmN1KTsKLQotCS8qIE11c3Qgd2FpdCB1bnRpbCBhZnRl ciBhbGwgKnJxLT5od3NwIGFyZSBjb21wbGV0ZSBiZWZvcmUgcmVtb3ZpbmcgKi8KLQlpOTE1X2dl bV9vYmplY3RfdW5waW5fbWFwKGNsLT5od3NwLT52bWEtPm9iaik7Ci0JX19pZGxlX2h3c3BfZnJl ZShjbC0+aHdzcCwgcHRyX3VubWFza19iaXRzKGNsLT52YWRkciwgQ0FDSEVMSU5FX0JJVFMpKTsK LQotCWk5MTVfYWN0aXZlX2ZpbmkoJmNsLT5hY3RpdmUpOwotCWtmcmVlKGNsKTsKLX0KLQotc3Rh dGljIHZvaWQgX19pZGxlX2NhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNo ZWxpbmUgKmNsKQotewotCUdFTV9CVUdfT04oIWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3Rp dmUpKTsKLQljYWxsX3JjdSgmY2wtPnJjdSwgX19yY3VfY2FjaGVsaW5lX2ZyZWUpOwotfQotCiBf X2k5MTVfYWN0aXZlX2NhbGwKLXN0YXRpYyB2b2lkIF9fY2FjaGVsaW5lX3JldGlyZShzdHJ1Y3Qg aTkxNV9hY3RpdmUgKmFjdGl2ZSkKK3N0YXRpYyB2b2lkIF9fdGltZWxpbmVfcmV0aXJlKHN0cnVj dCBpOTE1X2FjdGl2ZSAqYWN0aXZlKQogewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxp bmUgKmNsID0KLQkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjbCksIGFjdGl2ZSk7CisJ c3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVv ZigqdGwpLCBhY3RpdmUpOwogCi0JaTkxNV92bWFfdW5waW4oY2wtPmh3c3AtPnZtYSk7Ci0JaWYg KHB0cl90ZXN0X2JpdChjbC0+dmFkZHIsIENBQ0hFTElORV9GUkVFKSkKLQkJX19pZGxlX2NhY2hl bGluZV9mcmVlKGNsKTsKKwlpOTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsKKwlpbnRlbF90 aW1lbGluZV9wdXQodGwpOwogfQogCi1zdGF0aWMgaW50IF9fY2FjaGVsaW5lX2FjdGl2ZShzdHJ1 Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKK3N0YXRpYyBpbnQgX190aW1lbGluZV9hY3RpdmUoc3Ry dWN0IGk5MTVfYWN0aXZlICphY3RpdmUpCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hl bGluZSAqY2wgPQotCQljb250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsK KwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlw ZW9mKCp0bCksIGFjdGl2ZSk7CiAKLQlfX2k5MTVfdm1hX3BpbihjbC0+aHdzcC0+dm1hKTsKKwlf X2k5MTVfdm1hX3Bpbih0bC0+aHdzcF9nZ3R0KTsKKwlpbnRlbF90aW1lbGluZV9nZXQodGwpOwog CXJldHVybiAwOwogfQogCi1zdGF0aWMgc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAq Ci1jYWNoZWxpbmVfYWxsb2Moc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3AgKmh3c3AsIHVuc2ln bmVkIGludCBjYWNoZWxpbmUpCi17Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAq Y2w7Ci0Jdm9pZCAqdmFkZHI7Ci0KLQlHRU1fQlVHX09OKGNhY2hlbGluZSA+PSBCSVQoQ0FDSEVM SU5FX0JJVFMpKTsKLQotCWNsID0ga21hbGxvYyhzaXplb2YoKmNsKSwgR0ZQX0tFUk5FTCk7Ci0J aWYgKCFjbCkKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQl2YWRkciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fbWFwKGh3c3AtPnZtYS0+b2JqLCBJOTE1X01BUF9XQik7Ci0JaWYgKElTX0VS Uih2YWRkcikpIHsKLQkJa2ZyZWUoY2wpOwotCQlyZXR1cm4gRVJSX0NBU1QodmFkZHIpOwotCX0K LQotCWNsLT5od3NwID0gaHdzcDsKLQljbC0+dmFkZHIgPSBwYWdlX3BhY2tfYml0cyh2YWRkciwg Y2FjaGVsaW5lKTsKLQotCWk5MTVfYWN0aXZlX2luaXQoJmNsLT5hY3RpdmUsIF9fY2FjaGVsaW5l X2FjdGl2ZSwgX19jYWNoZWxpbmVfcmV0aXJlKTsKLQotCXJldHVybiBjbDsKLX0KLQotc3RhdGlj IHZvaWQgY2FjaGVsaW5lX2FjcXVpcmUoc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAq Y2wsCi0JCQkgICAgICB1MzIgZ2d0dF9vZmZzZXQpCi17Ci0JaWYgKCFjbCkKLQkJcmV0dXJuOwot Ci0JY2wtPmdndHRfb2Zmc2V0ID0gZ2d0dF9vZmZzZXQ7Ci0JaTkxNV9hY3RpdmVfYWNxdWlyZSgm Y2wtPmFjdGl2ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9yZWxlYXNlKHN0cnVjdCBp bnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewotCWlmIChjbCkKLQkJaTkxNV9hY3RpdmVf cmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9mcmVlKHN0 cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewotCWlmICghaTkxNV9hY3RpdmVf YWNxdWlyZV9pZl9idXN5KCZjbC0+YWN0aXZlKSkgewotCQlfX2lkbGVfY2FjaGVsaW5lX2ZyZWUo Y2wpOwotCQlyZXR1cm47Ci0JfQotCi0JR0VNX0JVR19PTihwdHJfdGVzdF9iaXQoY2wtPnZhZGRy LCBDQUNIRUxJTkVfRlJFRSkpOwotCWNsLT52YWRkciA9IHB0cl9zZXRfYml0KGNsLT52YWRkciwg Q0FDSEVMSU5FX0ZSRUUpOwotCi0JaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19 Ci0KIHN0YXRpYyBpbnQgaW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUg KnRpbWVsaW5lLAogCQkJICAgICAgIHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJCQkgICAgICAgc3Ry dWN0IGk5MTVfdm1hICpod3NwLAogCQkJICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpCiB7CiAJ dm9pZCAqdmFkZHI7CisJdTMyICpzZXFubzsKIAogCWtyZWZfaW5pdCgmdGltZWxpbmUtPmtyZWYp OwogCWF0b21pY19zZXQoJnRpbWVsaW5lLT5waW5fY291bnQsIDApOwogCiAJdGltZWxpbmUtPmd0 ID0gZ3Q7CiAKLQl0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYiA9ICFod3NwOwotCXRp bWVsaW5lLT5od3NwX2NhY2hlbGluZSA9IE5VTEw7Ci0KLQlpZiAoIWh3c3ApIHsKLQkJc3RydWN0 IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7Ci0JCXVuc2lnbmVkIGludCBjYWNoZWxpbmU7 Ci0KLQkJaHdzcCA9IGh3c3BfYWxsb2ModGltZWxpbmUsICZjYWNoZWxpbmUpOworCWlmIChod3Nw KSB7CisJCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IG9mZnNldDsKKwkJdGltZWxpbmUtPmh3c3Bf Z2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKKwl9IGVsc2UgeworCQl0aW1lbGluZS0+aGFzX2lu aXRpYWxfYnJlYWRjcnVtYiA9IHRydWU7CisJCWh3c3AgPSBod3NwX2FsbG9jKGd0KTsKIAkJaWYg KElTX0VSUihod3NwKSkKIAkJCXJldHVybiBQVFJfRVJSKGh3c3ApOwotCi0JCWNsID0gY2FjaGVs aW5lX2FsbG9jKGh3c3AtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JCWlmIChJU19FUlIoY2wpKSB7 Ci0JCQlfX2lkbGVfaHdzcF9mcmVlKGh3c3AtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JCQlyZXR1 cm4gUFRSX0VSUihjbCk7Ci0JCX0KLQotCQl0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUgPSBjbDsK LQkJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0gY2FjaGVsaW5lICogQ0FDSEVMSU5FX0JZVEVTOwot Ci0JCXZhZGRyID0gcGFnZV9tYXNrX2JpdHMoY2wtPnZhZGRyKTsKLQl9IGVsc2UgewotCQl0aW1l bGluZS0+aHdzcF9vZmZzZXQgPSBvZmZzZXQ7Ci0JCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bp bl9tYXAoaHdzcC0+b2JqLCBJOTE1X01BUF9XQik7Ci0JCWlmIChJU19FUlIodmFkZHIpKQotCQkJ cmV0dXJuIFBUUl9FUlIodmFkZHIpOworCQl0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaHdzcDsKIAl9 CiAKLQl0aW1lbGluZS0+aHdzcF9zZXFubyA9Ci0JCW1lbXNldCh2YWRkciArIHRpbWVsaW5lLT5o d3NwX29mZnNldCwgMCwgQ0FDSEVMSU5FX0JZVEVTKTsKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKGh3c3AtPm9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIodmFkZHIpKQor CQlyZXR1cm4gUFRSX0VSUih2YWRkcik7CisKKwl0aW1lbGluZS0+aHdzcF9tYXAgPSB2YWRkcjsK KwlzZXFubyA9IHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0OworCVdSSVRFX09OQ0UoKnNl cW5vLCAwKTsKKwl0aW1lbGluZS0+aHdzcF9zZXFubyA9IHNlcW5vOwogCi0JdGltZWxpbmUtPmh3 c3BfZ2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKIAlHRU1fQlVHX09OKHRpbWVsaW5lLT5od3Nw X29mZnNldCA+PSBod3NwLT5zaXplKTsKIAogCXRpbWVsaW5lLT5mZW5jZV9jb250ZXh0ID0gZG1h X2ZlbmNlX2NvbnRleHRfYWxsb2MoMSk7CkBAIC0yNjgsNiArOTUsNyBAQCBzdGF0aWMgaW50IGlu dGVsX3RpbWVsaW5lX2luaXQoc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSwKIAlJTklU X0xJU1RfSEVBRCgmdGltZWxpbmUtPnJlcXVlc3RzKTsKIAogCWk5MTVfc3luY21hcF9pbml0KCZ0 aW1lbGluZS0+c3luYyk7CisJaTkxNV9hY3RpdmVfaW5pdCgmdGltZWxpbmUtPmFjdGl2ZSwgX190 aW1lbGluZV9hY3RpdmUsIF9fdGltZWxpbmVfcmV0aXJlKTsKIAogCXJldHVybiAwOwogfQpAQCAt Mjc4LDIzICsxMDYsMTggQEAgdm9pZCBpbnRlbF9ndF9pbml0X3RpbWVsaW5lcyhzdHJ1Y3QgaW50 ZWxfZ3QgKmd0KQogCiAJc3Bpbl9sb2NrX2luaXQoJnRpbWVsaW5lcy0+bG9jayk7CiAJSU5JVF9M SVNUX0hFQUQoJnRpbWVsaW5lcy0+YWN0aXZlX2xpc3QpOwotCi0Jc3Bpbl9sb2NrX2luaXQoJnRp bWVsaW5lcy0+aHdzcF9sb2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmdGltZWxpbmVzLT5od3NwX2Zy ZWVfbGlzdCk7CiB9CiAKLXN0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0aW1lbGluZSkKK3N0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmko c3RydWN0IHJjdV9oZWFkICpyY3UpCiB7Ci0JR0VNX0JVR19PTihhdG9taWNfcmVhZCgmdGltZWxp bmUtPnBpbl9jb3VudCkpOwotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1 ZXN0cykpOwotCUdFTV9CVUdfT04odGltZWxpbmUtPnJldGlyZSk7CisJc3RydWN0IGludGVsX3Rp bWVsaW5lICp0aW1lbGluZSA9CisJCWNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBpbnRlbF90aW1l bGluZSwgcmN1KTsKIAotCWlmICh0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUpCi0JCWNhY2hlbGlu ZV9mcmVlKHRpbWVsaW5lLT5od3NwX2NhY2hlbGluZSk7Ci0JZWxzZQotCQlpOTE1X2dlbV9vYmpl Y3RfdW5waW5fbWFwKHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7CisJaTkxNV9nZW1fb2JqZWN0 X3VucGluX21hcCh0aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmopOwogCiAJaTkxNV92bWFfcHV0KHRp bWVsaW5lLT5od3NwX2dndHQpOworCWk5MTVfYWN0aXZlX2ZpbmkoJnRpbWVsaW5lLT5hY3RpdmUp OworCWtmcmVlKHRpbWVsaW5lKTsKIH0KIAogc3RydWN0IGludGVsX3RpbWVsaW5lICoKQEAgLTM2 MCw5ICsxODMsOSBAQCBpbnQgaW50ZWxfdGltZWxpbmVfcGluKHN0cnVjdCBpbnRlbF90aW1lbGlu ZSAqdGwsIHN0cnVjdCBpOTE1X2dlbV93d19jdHggKnd3KQogCUdUX1RSQUNFKHRsLT5ndCwgInRp bWVsaW5lOiVsbHggdXNpbmcgSFdTUCBvZmZzZXQ6JXhcbiIsCiAJCSB0bC0+ZmVuY2VfY29udGV4 dCwgdGwtPmh3c3Bfb2Zmc2V0KTsKIAotCWNhY2hlbGluZV9hY3F1aXJlKHRsLT5od3NwX2NhY2hl bGluZSwgdGwtPmh3c3Bfb2Zmc2V0KTsKKwlpOTE1X2FjdGl2ZV9hY3F1aXJlKCZ0bC0+YWN0aXZl KTsKIAlpZiAoYXRvbWljX2ZldGNoX2luYygmdGwtPnBpbl9jb3VudCkpIHsKLQkJY2FjaGVsaW5l X3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5lKTsKKwkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwt PmFjdGl2ZSk7CiAJCV9faTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7CiAJfQogCkBAIC0z NzEsOSArMTk0LDEzIEBAIGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCwgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCiAKIHZvaWQgaW50ZWxfdGltZWxp bmVfcmVzZXRfc2Vxbm8oY29uc3Qgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIHsKKwl1MzIg Kmh3c3Bfc2Vxbm8gPSAodTMyICopdGwtPmh3c3Bfc2Vxbm87CiAJLyogTXVzdCBiZSBwaW5uZWQg dG8gYmUgd3JpdGFibGUsIGFuZCBubyByZXF1ZXN0cyBpbiBmbGlnaHQuICovCiAJR0VNX0JVR19P TighYXRvbWljX3JlYWQoJnRsLT5waW5fY291bnQpKTsKLQlXUklURV9PTkNFKCoodTMyICopdGwt Pmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CisKKwltZW1zZXQoaHdzcF9zZXFubyArIDEsIDAsIFRJ TUVMSU5FX1NFUU5PX0JZVEVTIC0gc2l6ZW9mKCpod3NwX3NlcW5vKSk7CisJV1JJVEVfT05DRSgq aHdzcF9zZXFubywgdGwtPnNlcW5vKTsKKwljbGZsdXNoKGh3c3Bfc2Vxbm8pOwogfQogCiB2b2lk IGludGVsX3RpbWVsaW5lX2VudGVyKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCkBAIC00NDks MTA2ICsyNzYsMjMgQEAgc3RhdGljIHUzMiB0aW1lbGluZV9hZHZhbmNlKHN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGwpCiAJcmV0dXJuIHRsLT5zZXFubyArPSAxICsgdGwtPmhhc19pbml0aWFsX2Jy ZWFkY3J1bWI7CiB9CiAKLXN0YXRpYyB2b2lkIHRpbWVsaW5lX3JvbGxiYWNrKHN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGwpCi17Ci0JdGwtPnNlcW5vIC09IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJl YWRjcnVtYjsKLX0KLQogc3RhdGljIG5vaW5saW5lIGludAogX19pbnRlbF90aW1lbGluZV9nZXRf c2Vxbm8oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwKLQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLAogCQkJICAgdTMyICpzZXFubykKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2Fj aGVsaW5lICpjbDsKLQl1bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwotCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwotCXZvaWQgKnZhZGRyOwotCWludCBlcnI7Ci0KLQltaWdodF9sb2NrKCZ0bC0+Z3QtPmdn dHQtPnZtLm11dGV4KTsKLQlHVF9UUkFDRSh0bC0+Z3QsICJ0aW1lbGluZTolbGx4IHdyYXBwZWRc biIsIHRsLT5mZW5jZV9jb250ZXh0KTsKLQotCS8qCi0JICogSWYgdGhlcmUgaXMgYW4gb3V0c3Rh bmRpbmcgR1BVIHJlZmVyZW5jZSB0byB0aGlzIGNhY2hlbGluZSwKLQkgKiBzdWNoIGFzIGl0IGJl aW5nIHNhbXBsZWQgYnkgYSBIVyBzZW1hcGhvcmUgb24gYW5vdGhlciB0aW1lbGluZSwKLQkgKiB3 ZSBjYW5ub3Qgd3JhcGFyb3VuZCBvdXIgc2Vxbm8gdmFsdWUgKHRoZSBIVyBzZW1hcGhvcmUgZG9l cwotCSAqIGEgc3RyaWN0IGdyZWF0ZXItdGhhbi1vci1lcXVhbHMgY29tcGFyZSwgbm90IGk5MTVf c2Vxbm9fcGFzc2VkKS4KLQkgKiBTbyBpZiB0aGUgY2FjaGVsaW5lIGlzIHN0aWxsIGJ1c3ksIHdl IG11c3QgZGV0YWNoIG91cnNlbHZlcwotCSAqIGZyb20gaXQgYW5kIGxlYXZlIGl0IGluZmxpZ2h0 IGFsb25nc2lkZSBpdHMgdXNlcnMuCi0JICoKLQkgKiBIb3dldmVyLCBpZiBub2JvZHkgaXMgd2F0 Y2hpbmcgYW5kIHdlIGNhbiBndWFyYW50ZWUgdGhhdCBub2JvZHkKLQkgKiB3aWxsLCB3ZSBjb3Vs ZCBzaW1wbHkgcmV1c2UgdGhlIHNhbWUgY2FjaGVsaW5lLgotCSAqCi0JICogaWYgKGk5MTVfYWN0 aXZlX3JlcXVlc3RfaXNfc2lnbmFsZWQoJnRsLT5sYXN0X3JlcXVlc3QpICYmCi0JICogICAgIGk5 MTVfYWN0aXZlX2lzX3NpZ25hbGVkKCZ0bC0+aHdzcF9jYWNoZWxpbmUtPmFjdGl2ZSkpCi0JICoJ cmV0dXJuIDA7Ci0JICoKLQkgKiBUaGF0IHNlZW1zIHVubGlrZWx5IGZvciBhIGJ1c3kgdGltZWxp bmUgdGhhdCBuZWVkZWQgdG8gd3JhcCBpbgotCSAqIHRoZSBmaXJzdCBwbGFjZSwgc28ganVzdCBy ZXBsYWNlIHRoZSBjYWNoZWxpbmUuCi0JICovCi0KLQl2bWEgPSBod3NwX2FsbG9jKHRsLCAmY2Fj aGVsaW5lKTsKLQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJZXJyID0gUFRSX0VSUih2bWEpOwotCQln b3RvIGVycl9yb2xsYmFjazsKLQl9Ci0KLQllcnIgPSBpOTE1X2dndHRfcGluKHZtYSwgTlVMTCwg MCwgUElOX0hJR0gpOwotCWlmIChlcnIpIHsKLQkJX19pZGxlX2h3c3BfZnJlZSh2bWEtPnByaXZh dGUsIGNhY2hlbGluZSk7Ci0JCWdvdG8gZXJyX3JvbGxiYWNrOwotCX0KKwl1MzIgbmV4dF9vZnMg PSBvZmZzZXRfaW5fcGFnZSh0bC0+aHdzcF9vZmZzZXQgKyBUSU1FTElORV9TRVFOT19CWVRFUyk7 CiAKLQljbCA9IGNhY2hlbGluZV9hbGxvYyh2bWEtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JaWYg KElTX0VSUihjbCkpIHsKLQkJZXJyID0gUFRSX0VSUihjbCk7Ci0JCV9faWRsZV9od3NwX2ZyZWUo dm1hLT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCQlnb3RvIGVycl91bnBpbjsKLQl9Ci0JR0VNX0JV R19PTihjbC0+aHdzcC0+dm1hICE9IHZtYSk7Ci0KLQkvKgotCSAqIEF0dGFjaCB0aGUgb2xkIGNh Y2hlbGluZSB0byB0aGUgY3VycmVudCByZXF1ZXN0LCBzbyB0aGF0IHdlIG9ubHkKLQkgKiBmcmVl IGl0IGFmdGVyIHRoZSBjdXJyZW50IHJlcXVlc3QgaXMgcmV0aXJlZCwgd2hpY2ggZW5zdXJlcyB0 aGF0Ci0JICogYWxsIHdyaXRlcyBpbnRvIHRoZSBjYWNoZWxpbmUgZnJvbSBwcmV2aW91cyByZXF1 ZXN0cyBhcmUgY29tcGxldGUuCi0JICovCi0JZXJyID0gaTkxNV9hY3RpdmVfcmVmKCZ0bC0+aHdz cF9jYWNoZWxpbmUtPmFjdGl2ZSwKLQkJCSAgICAgIHRsLT5mZW5jZV9jb250ZXh0LAotCQkJICAg ICAgJnJxLT5mZW5jZSk7Ci0JaWYgKGVycikKLQkJZ290byBlcnJfY2FjaGVsaW5lOworCS8qIHcv YTogYml0IDUgbmVlZHMgdG8gYmUgemVybyBmb3IgTUlfRkxVU0hfRFcgYWRkcmVzcy4gKi8KKwlp ZiAoVElNRUxJTkVfU0VRTk9fQllURVMgPD0gQklUKDUpICYmIChuZXh0X29mcyAmIEJJVCg1KSkp CisJCW5leHRfb2ZzID0gb2Zmc2V0X2luX3BhZ2UobmV4dF9vZnMgKyBCSVQoNSkpOwogCi0JY2Fj aGVsaW5lX3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5lKTsgLyogb3duZXJzaGlwIG5vdyB4ZmVy ZWQgdG8gcnEgKi8KLQljYWNoZWxpbmVfZnJlZSh0bC0+aHdzcF9jYWNoZWxpbmUpOwotCi0JaTkx NV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7IC8qIGJpbmRpbmcga2VwdCBhbGl2ZSBieSBvbGQg Y2FjaGVsaW5lICovCi0JaTkxNV92bWFfcHV0KHRsLT5od3NwX2dndHQpOwotCi0JdGwtPmh3c3Bf Z2d0dCA9IGk5MTVfdm1hX2dldCh2bWEpOwotCi0JdmFkZHIgPSBwYWdlX21hc2tfYml0cyhjbC0+ dmFkZHIpOwotCXRsLT5od3NwX29mZnNldCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsK LQl0bC0+aHdzcF9zZXFubyA9Ci0JCW1lbXNldCh2YWRkciArIHRsLT5od3NwX29mZnNldCwgMCwg Q0FDSEVMSU5FX0JZVEVTKTsKLQotCXRsLT5od3NwX29mZnNldCArPSBpOTE1X2dndHRfb2Zmc2V0 KHZtYSk7Ci0JR1RfVFJBQ0UodGwtPmd0LCAidGltZWxpbmU6JWxseCB1c2luZyBIV1NQIG9mZnNl dDoleFxuIiwKLQkJIHRsLT5mZW5jZV9jb250ZXh0LCB0bC0+aHdzcF9vZmZzZXQpOwotCi0JY2Fj aGVsaW5lX2FjcXVpcmUoY2wsIHRsLT5od3NwX29mZnNldCk7Ci0JdGwtPmh3c3BfY2FjaGVsaW5l ID0gY2w7CisJdGwtPmh3c3Bfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0 KSArIG5leHRfb2ZzOworCXRsLT5od3NwX3NlcW5vID0gdGwtPmh3c3BfbWFwICsgbmV4dF9vZnM7 CisJaW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8odGwpOwogCiAJKnNlcW5vID0gdGltZWxpbmVf YWR2YW5jZSh0bCk7CiAJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgqdGwtPmh3c3Bfc2Vx bm8sICpzZXFubykpOwogCXJldHVybiAwOwotCi1lcnJfY2FjaGVsaW5lOgotCWNhY2hlbGluZV9m cmVlKGNsKTsKLWVycl91bnBpbjoKLQlpOTE1X3ZtYV91bnBpbih2bWEpOwotZXJyX3JvbGxiYWNr OgotCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKLQlyZXR1cm4gZXJyOwogfQogCiBpbnQgaW50ZWxf dGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCkBAIC01NTgsNTEg KzMwMiw1MiBAQCBpbnQgaW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1l bGluZSAqdGwsCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CiAKIAkvKiBSZXBsYWNl IHRoZSBIV1NQIG9uIHdyYXBhcm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KLQlpZiAodW5saWtl bHkoISpzZXFubyAmJiB0bC0+aHdzcF9jYWNoZWxpbmUpKQotCQlyZXR1cm4gX19pbnRlbF90aW1l bGluZV9nZXRfc2Vxbm8odGwsIHJxLCBzZXFubyk7CisJaWYgKHVubGlrZWx5KCEqc2Vxbm8gJiYg dGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpKQorCQlyZXR1cm4gX19pbnRlbF90aW1lbGluZV9n ZXRfc2Vxbm8odGwsIHNlcW5vKTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNhY2hl bGluZV9yZWYoc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wsCi0JCQkgc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCi17Ci0JcmV0dXJuIGk5MTVfYWN0aXZlX2FkZF9yZXF1ZXN0KCZj bC0+YWN0aXZlLCBycSk7Ci19Ci0KIGludCBpbnRlbF90aW1lbGluZV9yZWFkX2h3c3Aoc3RydWN0 IGk5MTVfcmVxdWVzdCAqZnJvbSwKIAkJCSAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCiAJ CQkgICAgIHUzMiAqaHdzcCkKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpj bDsKKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOwogCWludCBlcnI7CiAKLQlHRU1fQlVHX09O KCFyY3VfYWNjZXNzX3BvaW50ZXIoZnJvbS0+aHdzcF9jYWNoZWxpbmUpKTsKLQogCXJjdV9yZWFk X2xvY2soKTsKLQljbCA9IHJjdV9kZXJlZmVyZW5jZShmcm9tLT5od3NwX2NhY2hlbGluZSk7Ci0J aWYgKGk5MTVfcmVxdWVzdF9zaWduYWxlZChmcm9tKSkgLyogY29uZmlybSBjYWNoZWxpbmUgaXMg dmFsaWQgKi8KLQkJZ290byB1bmxvY2s7Ci0JaWYgKHVubGlrZWx5KCFpOTE1X2FjdGl2ZV9hY3F1 aXJlX2lmX2J1c3koJmNsLT5hY3RpdmUpKSkKLQkJZ290byB1bmxvY2s7IC8qIHNlcW5vIHdyYXBw ZWQgYW5kIGNvbXBsZXRlZCEgKi8KLQlpZiAodW5saWtlbHkoX19pOTE1X3JlcXVlc3RfaXNfY29t cGxldGUoZnJvbSkpKQotCQlnb3RvIHJlbGVhc2U7CisJdGwgPSByY3VfZGVyZWZlcmVuY2UoZnJv bS0+dGltZWxpbmUpOworCWlmIChpOTE1X3JlcXVlc3Rfc2lnbmFsZWQoZnJvbSkgfHwKKwkgICAg IWk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVzeSgmdGwtPmFjdGl2ZSkpCisJCXRsID0gTlVMTDsK KworCWlmICh0bCkgeworCQkvKiBod3NwX29mZnNldCBtYXkgd3JhcGFyb3VuZCwgc28gdXNlIGZy b20tPmh3c3Bfc2Vxbm8gKi8KKwkJKmh3c3AgPSBpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3NwX2dn dHQpICsKKwkJCW9mZnNldF9pbl9wYWdlKGZyb20tPmh3c3Bfc2Vxbm8pOworCX0KKworCS8qIGVu c3VyZSB3ZSB3YWl0IG9uIHRoZSByaWdodCByZXF1ZXN0LCBpZiBub3QsIHdlIGNvbXBsZXRlZCAq LworCWlmICh0bCAmJiBfX2k5MTVfcmVxdWVzdF9pc19jb21wbGV0ZShmcm9tKSkgeworCQlpOTE1 X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0aXZlKTsKKwkJdGwgPSBOVUxMOworCX0KIAlyY3VfcmVh ZF91bmxvY2soKTsKIAotCWVyciA9IGNhY2hlbGluZV9yZWYoY2wsIHRvKTsKLQlpZiAoZXJyKQor CWlmICghdGwpCisJCXJldHVybiAxOworCisJLyogQ2FuJ3QgZG8gc2VtYXBob3JlIHdhaXRzIG9u IGtlcm5lbCBjb250ZXh0ICovCisJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikgewor CQllcnIgPSAtRUlOVkFMOwogCQlnb3RvIG91dDsKKwl9CisKKwllcnIgPSBpOTE1X2FjdGl2ZV9h ZGRfcmVxdWVzdCgmdGwtPmFjdGl2ZSwgdG8pOwogCi0JKmh3c3AgPSBjbC0+Z2d0dF9vZmZzZXQ7 CiBvdXQ6Ci0JaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7CisJaTkxNV9hY3RpdmVf cmVsZWFzZSgmdGwtPmFjdGl2ZSk7CiAJcmV0dXJuIGVycjsKLQotcmVsZWFzZToKLQlpOTE1X2Fj dGl2ZV9yZWxlYXNlKCZjbC0+YWN0aXZlKTsKLXVubG9jazoKLQlyY3VfcmVhZF91bmxvY2soKTsK LQlyZXR1cm4gMTsKIH0KIAogdm9pZCBpbnRlbF90aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsKQpAQCAtNjExLDggKzM1Niw3IEBAIHZvaWQgaW50ZWxfdGltZWxpbmVfdW5w aW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIAlpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3Qo JnRsLT5waW5fY291bnQpKQogCQlyZXR1cm47CiAKLQljYWNoZWxpbmVfcmVsZWFzZSh0bC0+aHdz cF9jYWNoZWxpbmUpOwotCisJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7CiAJX19p OTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsKIH0KIApAQCAtNjIxLDggKzM2NSwxMSBAQCB2 b2lkIF9faW50ZWxfdGltZWxpbmVfZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRpbWVsaW5lID0KIAkJY29udGFpbmVyX29mKGtyZWYsIHR5cGVvZigqdGlt ZWxpbmUpLCBrcmVmKTsKIAotCWludGVsX3RpbWVsaW5lX2ZpbmkodGltZWxpbmUpOwotCWtmcmVl X3JjdSh0aW1lbGluZSwgcmN1KTsKKwlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZ0aW1lbGluZS0+ cGluX2NvdW50KSk7CisJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJlcXVlc3Rz KSk7CisJR0VNX0JVR19PTih0aW1lbGluZS0+cmV0aXJlKTsKKworCWNhbGxfcmN1KCZ0aW1lbGlu ZS0+cmN1LCBpbnRlbF90aW1lbGluZV9maW5pKTsKIH0KIAogdm9pZCBpbnRlbF9ndF9maW5pX3Rp bWVsaW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQpAQCAtNjMwLDcgKzM3Nyw2IEBAIHZvaWQgaW50 ZWxfZ3RfZmluaV90aW1lbGluZXMoc3RydWN0IGludGVsX2d0ICpndCkKIAlzdHJ1Y3QgaW50ZWxf Z3RfdGltZWxpbmVzICp0aW1lbGluZXMgPSAmZ3QtPnRpbWVsaW5lczsKIAogCUdFTV9CVUdfT04o IWxpc3RfZW1wdHkoJnRpbWVsaW5lcy0+YWN0aXZlX2xpc3QpKTsKLQlHRU1fQlVHX09OKCFsaXN0 X2VtcHR5KCZ0aW1lbGluZXMtPmh3c3BfZnJlZV9saXN0KSk7CiB9CiAKIHZvaWQgaW50ZWxfZ3Rf c2hvd190aW1lbGluZXMoc3RydWN0IGludGVsX2d0ICpndCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oCmluZGV4IDlmNjc3YzliN2QwNi4uNzRlNjdk YmY4OWM1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGlu ZV90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5 cGVzLmgKQEAgLTE3LDcgKzE3LDYgQEAKIHN0cnVjdCBpOTE1X3ZtYTsKIHN0cnVjdCBpOTE1X3N5 bmNtYXA7CiBzdHJ1Y3QgaW50ZWxfZ3Q7Ci1zdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcDsKIAog c3RydWN0IGludGVsX3RpbWVsaW5lIHsKIAl1NjQgZmVuY2VfY29udGV4dDsKQEAgLTQ0LDEyICs0 MywxMSBAQCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewogCWF0b21pY190IHBpbl9jb3VudDsKIAlh dG9taWNfdCBhY3RpdmVfY291bnQ7CiAKKwl2b2lkICpod3NwX21hcDsKIAljb25zdCB1MzIgKmh3 c3Bfc2Vxbm87CiAJc3RydWN0IGk5MTVfdm1hICpod3NwX2dndHQ7CiAJdTMyIGh3c3Bfb2Zmc2V0 OwogCi0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqaHdzcF9jYWNoZWxpbmU7Ci0K IAlib29sIGhhc19pbml0aWFsX2JyZWFkY3J1bWI7CiAKIAkvKioKQEAgLTY2LDYgKzY0LDggQEAg c3RydWN0IGludGVsX3RpbWVsaW5lIHsKIAkgKi8KIAlzdHJ1Y3QgaTkxNV9hY3RpdmVfZmVuY2Ug bGFzdF9yZXF1ZXN0OwogCisJc3RydWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKKwogCS8qKiBBIGNo YWluIG9mIGNvbXBsZXRlZCB0aW1lbGluZXMgcmVhZHkgZm9yIGVhcmx5IHJldGlyZW1lbnQuICov CiAJc3RydWN0IGludGVsX3RpbWVsaW5lICpyZXRpcmU7CiAKQEAgLTg5LDE1ICs4OSw0IEBAIHN0 cnVjdCBpbnRlbF90aW1lbGluZSB7CiAJc3RydWN0IHJjdV9oZWFkIHJjdTsKIH07CiAKLXN0cnVj dCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgewotCXN0cnVjdCBpOTE1X2FjdGl2ZSBhY3RpdmU7 Ci0KLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcDsKLQl2b2lkICp2YWRkcjsKLQot CXUzMiBnZ3R0X29mZnNldDsKLQotCXN0cnVjdCByY3VfaGVhZCByY3U7Ci19OwotCiAjZW5kaWYg LyogX19JOTE1X1RJTUVMSU5FX1RZUEVTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF9lbmdpbmVfY3MuYwppbmRleCA4NGQ4ODNkZTMwZWUuLjdlNDY2YWUxMTRmOCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKQEAgLTQx LDYgKzQxLDkgQEAgc3RhdGljIGludCBwZXJmX2VuZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiBz dGF0aWMgaW50IHdyaXRlX3RpbWVzdGFtcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IHNs b3QpCiB7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9CisJCXJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQocnEtPnRpbWVsaW5lLAorCQkJCQkgICFpOTE1X3JlcXVlc3Rfc2lnbmFsZWQocnEp KTsKIAl1MzIgY21kOwogCXUzMiAqY3M7CiAKQEAgLTUzLDcgKzU2LDcgQEAgc3RhdGljIGludCB3 cml0ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQogCQljbWQr KzsKIAkqY3MrKyA9IGNtZDsKIAkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfVElN RVNUQU1QKHJxLT5lbmdpbmUtPm1taW9fYmFzZSkpOwotCSpjcysrID0gaTkxNV9yZXF1ZXN0X3Rp bWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQgKyBzbG90ICogc2l6ZW9mKHUzMik7CisJKmNzKysgPSB0 bC0+aHdzcF9vZmZzZXQgKyBzbG90ICogc2l6ZW9mKHUzMik7CiAJKmNzKysgPSAwOwogCiAJaW50 ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9ndC9zZWxmdGVzdF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRl c3RfdGltZWxpbmUuYwppbmRleCBkMjgzZGNlNWI0YWMuLmJlNDY0NjVhNTdjOSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jCkBAIC0zNCwxMCArMzQsMTEg QEAgc3RhdGljIHVuc2lnbmVkIGxvbmcgaHdzcF9jYWNoZWxpbmUoc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCkKIHsKIAl1bnNpZ25lZCBsb25nIGFkZHJlc3MgPSAodW5zaWduZWQgbG9uZylwYWdl X2FkZHJlc3MoaHdzcF9wYWdlKHRsKSk7CiAKLQlyZXR1cm4gKGFkZHJlc3MgKyB0bC0+aHdzcF9v ZmZzZXQpIC8gQ0FDSEVMSU5FX0JZVEVTOworCXJldHVybiAoYWRkcmVzcyArIG9mZnNldF9pbl9w YWdlKHRsLT5od3NwX29mZnNldCkpIC8gVElNRUxJTkVfU0VRTk9fQllURVM7CiB9CiAKLSNkZWZp bmUgQ0FDSEVMSU5FU19QRVJfUEFHRSAoUEFHRV9TSVpFIC8gQ0FDSEVMSU5FX0JZVEVTKQorLyog T25seSBoYWxmIG9mIHNlcW5vJ3MgYXJlIHVzYWJsZSwgc2VlIF9faW50ZWxfdGltZWxpbmVfZ2V0 X3NlcW5vKCkgKi8KKyNkZWZpbmUgQ0FDSEVMSU5FU19QRVJfUEFHRSAoUEFHRV9TSVpFIC8gVElN RUxJTkVfU0VRTk9fQllURVMgLyAyKQogCiBzdHJ1Y3QgbW9ja19od3NwX2ZyZWVsaXN0IHsKIAlz dHJ1Y3QgaW50ZWxfZ3QgKmd0OwpAQCAtNjY1LDcgKzY2Niw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9o d3NwX3dyYXAodm9pZCAqYXJnKQogCWlmIChJU19FUlIodGwpKQogCQlyZXR1cm4gUFRSX0VSUih0 bCk7CiAKLQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9jYWNo ZWxpbmUpCisJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikKIAkJZ290byBvdXRfZnJl ZTsKIAogCWVyciA9IGludGVsX3RpbWVsaW5lX3Bpbih0bCwgTlVMTCk7CkBAIC04MzIsMTIgKzgz MywyNiBAQCBzdGF0aWMgaW50IHNldHVwX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywg c3RydWN0IGludGVsX2d0ICpndCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQgc3dpdGNo X3RsX2xvY2soc3RydWN0IGk5MTVfcmVxdWVzdCAqZnJvbSwgc3RydWN0IGk5MTVfcmVxdWVzdCAq dG8pCit7CisJLyogc29tZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhpbmsgY28t cm91dGluZXMgKi8KKworCWlmIChmcm9tKSB7CisJCWxvY2tkZXBfdW5waW5fbG9jaygmZnJvbS0+ Y29udGV4dC0+dGltZWxpbmUtPm11dGV4LCBmcm9tLT5jb29raWUpOworCQltdXRleF91bmxvY2so JmZyb20tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJfQorCisJaWYgKHRvKSB7CisJCW11 dGV4X2xvY2soJnRvLT5jb250ZXh0LT50aW1lbGluZS0+bXV0ZXgpOworCQl0by0+Y29va2llID0g bG9ja2RlcF9waW5fbG9jaygmdG8tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJfQorfQor CiBzdGF0aWMgaW50IGNyZWF0ZV93YXRjaGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncsCiAJCQkg IHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgaW50IHJpbmdzeikKIHsKIAlz dHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bDsKIAog CWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKIAlpZiAoSVNfRVJSKGNlKSkKQEAg LTg1MCwxMSArODY1LDggQEAgc3RhdGljIGludCBjcmVhdGVfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93 YXRjaGVyICp3LAogCQlyZXR1cm4gUFRSX0VSUih3LT5ycSk7CiAKIAl3LT5hZGRyID0gaTkxNV9n Z3R0X29mZnNldCh3LT52bWEpOwotCXRsID0gdy0+cnEtPmNvbnRleHQtPnRpbWVsaW5lOwogCi0J Lyogc29tZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhpbmsgY28tcm91dGluZXMg Ki8KLQlsb2NrZGVwX3VucGluX2xvY2soJnRsLT5tdXRleCwgdy0+cnEtPmNvb2tpZSk7Ci0JbXV0 ZXhfdW5sb2NrKCZ0bC0+bXV0ZXgpOworCXN3aXRjaF90bF9sb2NrKHctPnJxLCBOVUxMKTsKIAog CXJldHVybiAwOwogfQpAQCAtODYzLDE1ICs4NzUsMTMgQEAgc3RhdGljIGludCBjaGVja193YXRj aGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkgYm9vbCAo Km9wKSh1MzIgaHdzcCwgdTMyIHNlcW5vKSkKIHsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSA9 IGZldGNoX2FuZF96ZXJvKCZ3LT5ycSk7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9IHJx LT5jb250ZXh0LT50aW1lbGluZTsKIAl1MzIgb2Zmc2V0LCBlbmQ7CiAJaW50IGVycjsKIAogCUdF TV9CVUdfT04ody0+YWRkciAtIGk5MTVfZ2d0dF9vZmZzZXQody0+dm1hKSA+IHctPnZtYS0+c2l6 ZSk7CiAKIAlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKLQltdXRleF9sb2NrKCZ0bC0+bXV0ZXgpOwot CXJxLT5jb29raWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZ0bC0+bXV0ZXgpOworCXN3aXRjaF90bF9s b2NrKE5VTEwsIHJxKTsKIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKIAogCWlmIChpOTE1X3JlcXVl c3Rfd2FpdChycSwgMCwgSFopIDwgMCkgewpAQCAtOTAwLDEwICs5MTAsNyBAQCBzdGF0aWMgaW50 IGNoZWNrX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywgY29uc3QgY2hhciAqbmFtZSwK IHN0YXRpYyB2b2lkIGNsZWFudXBfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVyICp3KQogewog CWlmICh3LT5ycSkgewotCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gdy0+cnEtPmNvbnRl eHQtPnRpbWVsaW5lOwotCi0JCW11dGV4X2xvY2soJnRsLT5tdXRleCk7Ci0JCXctPnJxLT5jb29r aWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZ0bC0+bXV0ZXgpOworCQlzd2l0Y2hfdGxfbG9jayhOVUxM LCB3LT5ycSk7CiAKIAkJaTkxNV9yZXF1ZXN0X2FkZCh3LT5ycSk7CiAJfQpAQCAtOTQxLDcgKzk0 OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp3cmFwX3RpbWVsaW5lKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxKQogCX0KIAogCWk5MTVfcmVxdWVzdF9wdXQocnEpOwotCXJxID0gaW50 ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChjZSk7CisJcnEgPSBpOTE1X3JlcXVlc3RfY3JlYXRl KGNlKTsKIAlpZiAoSVNfRVJSKHJxKSkKIAkJcmV0dXJuIHJxOwogCkBAIC05NzYsNyArOTgzLDcg QEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCiAJaWYgKElTX0VSUih0bCkp CiAJCXJldHVybiBQVFJfRVJSKHRsKTsKIAotCWlmICghdGwtPmh3c3BfY2FjaGVsaW5lKQorCWlm ICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpCiAJCWdvdG8gb3V0X2ZyZWU7CiAKIAlmb3Ig KGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3YXRjaGVyKTsgaSsrKSB7CkBAIC05OTgsNyArMTAwNSw3 IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQlkbyB7CiAJCQlzdHJ1 Y3QgaTkxNV9zd19mZW5jZSAqc3VibWl0OwogCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Ci0J CQl1MzIgaHdzcDsKKwkJCXUzMiBod3NwLCBkdW1teTsKIAogCQkJc3VibWl0ID0gaGVhcF9mZW5j ZV9jcmVhdGUoR0ZQX0tFUk5FTCk7CiAJCQlpZiAoIXN1Ym1pdCkgewpAQCAtMTAxNiwxNCArMTAy MywyNiBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKIAkJCQlnb3RvIG91 dDsKIAkJCX0KIAotCQkJLyogU2tpcCB0byB0aGUgZW5kLCBzYXZpbmcgMzAgbWludXRlcyBvZiBu b3BzICovCi0JCQl0bC0+c2Vxbm8gPSAtMTB1ICsgMiAqIChjb3VudCAmIDMpOwotCQkJV1JJVEVf T05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCB0bC0+c2Vxbm8pOwogCQkJY2UtPnRpbWVsaW5l ID0gaW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKIAotCQkJcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0 ZV9yZXF1ZXN0KGNlKTsKKwkJCS8qIEVuc3VyZSB0aW1lbGluZSBpcyBtYXBwZWQsIGRvbmUgZHVy aW5nIGZpcnN0IHBpbiAqLworCQkJZXJyID0gaW50ZWxfY29udGV4dF9waW4oY2UpOworCQkJaWYg KGVycikgeworCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKwkJCQlnb3RvIG91dDsKKwkJCX0K KworCQkJLyoKKwkJCSAqIFN0YXJ0IGF0IGEgbmV3IHdyYXAsIGFuZCBzZXQgc2Vxbm8gcmlnaHQg YmVmb3JlIGFub3RoZXIgd3JhcCwKKwkJCSAqIHNhdmluZyAzMCBtaW51dGVzIG9mIG5vcHMKKwkJ CSAqLworCQkJdGwtPnNlcW5vID0gLTEydSArIDIgKiAoY291bnQgJiAzKTsKKwkJCV9faW50ZWxf dGltZWxpbmVfZ2V0X3NlcW5vKHRsLCAmZHVtbXkpOworCisJCQlycSA9IGk5MTVfcmVxdWVzdF9j cmVhdGUoY2UpOwogCQkJaWYgKElTX0VSUihycSkpIHsKIAkJCQllcnIgPSBQVFJfRVJSKHJxKTsK KwkJCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7 CiAJCQkJZ290byBvdXQ7CiAJCQl9CkBAIC0xMDMzLDMyICsxMDUyLDM1IEBAIHN0YXRpYyBpbnQg bGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQkJCQkJCSAgICBHRlBfS0VSTkVMKTsKIAkJCWlm IChlcnIgPCAwKSB7CiAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJCQkJaW50ZWxfY29udGV4 dF91bnBpbihjZSk7CiAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCQkJCWdvdG8gb3V0Owog CQkJfQogCi0JCQltdXRleF9sb2NrKCZ3YXRjaGVyWzBdLnJxLT5jb250ZXh0LT50aW1lbGluZS0+ bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2socnEsIHdhdGNoZXJbMF0ucnEpOwogCQkJZXJyID0g aW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHJxLCB3YXRjaGVyWzBdLnJxLCAmaHdzcCk7CiAJCQlp ZiAoZXJyID09IDApCiAJCQkJZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hlclswXS5ycSwgLyog YmVmb3JlICovCiAJCQkJCQkgICAgIHJxLT5mZW5jZS5zZXFubywgaHdzcCwKIAkJCQkJCSAgICAg JndhdGNoZXJbMF0uYWRkcik7Ci0JCQltdXRleF91bmxvY2soJndhdGNoZXJbMF0ucnEtPmNvbnRl eHQtPnRpbWVsaW5lLT5tdXRleCk7CisJCQlzd2l0Y2hfdGxfbG9jayh3YXRjaGVyWzBdLnJxLCBy cSk7CiAJCQlpZiAoZXJyKSB7CiAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJCQkJaW50ZWxf Y29udGV4dF91bnBpbihjZSk7CiAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCQkJCWdvdG8g b3V0OwogCQkJfQogCi0JCQltdXRleF9sb2NrKCZ3YXRjaGVyWzFdLnJxLT5jb250ZXh0LT50aW1l bGluZS0+bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2socnEsIHdhdGNoZXJbMV0ucnEpOwogCQkJ ZXJyID0gaW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHJxLCB3YXRjaGVyWzFdLnJxLCAmaHdzcCk7 CiAJCQlpZiAoZXJyID09IDApCiAJCQkJZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hlclsxXS5y cSwgLyogYWZ0ZXIgKi8KIAkJCQkJCSAgICAgcnEtPmZlbmNlLnNlcW5vLCBod3NwLAogCQkJCQkJ ICAgICAmd2F0Y2hlclsxXS5hZGRyKTsKLQkJCW11dGV4X3VubG9jaygmd2F0Y2hlclsxXS5ycS0+ Y29udGV4dC0+dGltZWxpbmUtPm11dGV4KTsKKwkJCXN3aXRjaF90bF9sb2NrKHdhdGNoZXJbMV0u cnEsIHJxKTsKIAkJCWlmIChlcnIpIHsKIAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCQlp bnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiAJCQkJ Z290byBvdXQ7CiAJCQl9CkBAIC0xMDY3LDYgKzEwODksNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdz cF9yZWFkKHZvaWQgKmFyZykKIAkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCiAJCQlycSA9IHdy YXBfdGltZWxpbmUocnEpOworCQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CiAJCQlpbnRlbF9j b250ZXh0X3B1dChjZSk7CiAJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCWVyciA9IFBUUl9FUlIo cnEpOwpAQCAtMTEwNiw4ICsxMTI5LDggQEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lk ICphcmcpCiAJCQkgICAgMyAqIHdhdGNoZXJbMV0ucnEtPnJpbmctPnNpemUpCiAJCQkJYnJlYWs7 CiAKLQkJfSB3aGlsZSAoIV9faWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpKTsKLQkJV1JJVEVf T05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCAweGRlYWRiZWVmKTsKKwkJfSB3aGlsZSAoIV9f aWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpICYmCisJCQkgY291bnQgPCAoUEFHRV9TSVpFIC8g VElNRUxJTkVfU0VRTk9fQllURVMgLSAxKSAvIDIpOwogCiAJCXByX2luZm8oIiVzOiBzaW11bGF0 ZWQgJWx1IHdyYXBzXG4iLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKIAkJZXJyID0gY2hlY2tfd2F0 Y2hlcigmd2F0Y2hlclsxXSwgImFmdGVyIiwgY21wX2d0ZSk7CkBAIC0xMTUyLDkgKzExNzUsNyBA QCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yb2xsb3Zlcl9rZXJuZWwodm9pZCAqYXJnKQogCQl9CiAK IAkJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9mZW5jZV9pc3NldCgmdGwtPmxhc3RfcmVxdWVzdCkp OwotCQl0bC0+c2Vxbm8gPSAwOwotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7Ci0JCXRpbWVsaW5l X3JvbGxiYWNrKHRsKTsKKwkJdGwtPnNlcW5vID0gLTJ1OwogCQlXUklURV9PTkNFKCoodTMyICop dGwtPmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUocnEpOyBpKyspIHsKQEAgLTEyMzQsMTEgKzEyNTUsMTAgQEAgc3RhdGljIGludCBsaXZlX2h3 c3Bfcm9sbG92ZXJfdXNlcih2b2lkICphcmcpCiAJCQlnb3RvIG91dDsKIAogCQl0bCA9IGNlLT50 aW1lbGluZTsKLQkJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYiB8fCAhdGwtPmh3c3Bf Y2FjaGVsaW5lKQorCQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQogCQkJZ290byBv dXQ7CiAKLQkJdGltZWxpbmVfcm9sbGJhY2sodGwpOwotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7 CisJCXRsLT5zZXFubyA9IC00dTsKIAkJV1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5v LCB0bC0+c2Vxbm8pOwogCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJxKTsgaSsrKSB7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IGU3YjRjNGJjNDFhNi4uNTlkOTQy OTEwNTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtNzk0LDcgKzc5NCw2 IEBAIF9faTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsIGdmcF90 IGdmcCkKIAlycS0+ZmVuY2Uuc2Vxbm8gPSBzZXFubzsKIAogCVJDVV9JTklUX1BPSU5URVIocnEt PnRpbWVsaW5lLCB0bCk7Ci0JUkNVX0lOSVRfUE9JTlRFUihycS0+aHdzcF9jYWNoZWxpbmUsIHRs LT5od3NwX2NhY2hlbGluZSk7CiAJcnEtPmh3c3Bfc2Vxbm8gPSB0bC0+aHdzcF9zZXFubzsKIAlH RU1fQlVHX09OKF9faTkxNV9yZXF1ZXN0X2lzX2NvbXBsZXRlKHJxKSk7CiAKQEAgLTEwMzksOSAr MTAzOCw2IEBAIGVtaXRfc2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCiAJ aWYgKGk5MTVfcmVxdWVzdF9oYXNfaW5pdGlhbF9icmVhZGNydW1iKHRvKSkKIAkJZ290byBhd2Fp dF9mZW5jZTsKIAotCWlmICghcmN1X2FjY2Vzc19wb2ludGVyKGZyb20tPmh3c3BfY2FjaGVsaW5l KSkKLQkJZ290byBhd2FpdF9mZW5jZTsKLQogCS8qCiAJICogSWYgdGhpcyBvciBpdHMgZGVwZW5k ZW50cyBhcmUgd2FpdGluZyBvbiBhbiBleHRlcm5hbCBmZW5jZQogCSAqIHRoYXQgbWF5IGZhaWwg Y2F0YXN0cm9waGljYWxseSwgdGhlbiB3ZSB3YW50IHRvIGF2b2lkIHVzaW5nCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfcmVxdWVzdC5oCmluZGV4IGRkMTBhNmRiM2QyMS4uMzgwNjI0OTViNjZmIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAorKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaApAQCAtMjM5LDE2ICsyMzksNiBAQCBzdHJ1Y3Qg aTkxNV9yZXF1ZXN0IHsKIAkgKi8KIAljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CiAKLQkvKgotCSAq IElmIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5vIGZvciB0aGlzIHJlcXVl c3QgaW4KLQkgKiBhbm90aGVyIHJlcXVlc3QsIHdlIG5lZWQgdG8ga2VlcCBhIHJlYWQgcmVmZXJl bmNlIHRvIHRoaXMgYXNzb2NpYXRlZAotCSAqIGNhY2hlbGluZSwgc28gdGhhdCB3ZSBkbyBub3Qg ZnJlZSBhbmQgcmVjeWNsZSBpdCBiZWZvcmUgdGhlIGZvcmVpZ24KLQkgKiBvYnNlcnZlcnMgaGF2 ZSBjb21wbGV0ZWQuIEhlbmNlLCB3ZSBrZWVwIGEgcG9pbnRlciB0byB0aGUgY2FjaGVsaW5lCi0J ICogaW5zaWRlIHRoZSB0aW1lbGluZSdzIEhXU1Agdm1hLCBidXQgaXQgaXMgb25seSB2YWxpZCB3 aGlsZSB0aGlzCi0JICogcmVxdWVzdCBoYXMgbm90IGNvbXBsZXRlZCBhbmQgZ3VhcmRlZCBieSB0 aGUgdGltZWxpbmUgbXV0ZXguCi0JICovCi0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGlu ZSBfX3JjdSAqaHdzcF9jYWNoZWxpbmU7Ci0KIAkvKiogUG9zaXRpb24gaW4gdGhlIHJpbmcgb2Yg dGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCiAJdTMyIGhlYWQ7CiAKQEAgLTY1MCw0ICs2NDAs MjUgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF91c2Vfc2VtYXBob3Jlcyhjb25z dCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlyZXR1cm4gaW50ZWxfZW5naW5lX2hhc19zZW1h cGhvcmVzKHJxLT5lbmdpbmUpOwogfQogCitzdGF0aWMgaW5saW5lIHUzMgoraTkxNV9yZXF1ZXN0 X2FjdGl2ZV9zZXFubyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwl1MzIgaHdz cF9waHlzX2Jhc2UgPQorCQlwYWdlX21hc2tfYml0cyhpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVs aW5lKHJxKS0+aHdzcF9vZmZzZXQpOworCXUzMiBod3NwX3JlbGF0aXZlX29mZnNldCA9IG9mZnNl dF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKTsKKworCS8qCisJICogQmVjYXVzZSBvZiB3cmFwYXJv dW5kLCB3ZSBjYW5ub3Qgc2ltcGx5IHRha2UgdGwtPmh3c3Bfb2Zmc2V0LAorCSAqIGJ1dCBpbnN0 ZWFkIHVzZSB0aGUgZmFjdCB0aGF0IHRoZSByZWxhdGl2ZSBmb3IgdmFkZHIgaXMgdGhlCisJICog b2Zmc2V0IGFzIGZvciBod3NwX29mZnNldC4gVGFrZSB0aGUgdG9wIGJpdHMgZnJvbSB0bC0+aHdz cF9vZmZzZXQKKwkgKiBhbmQgY29tYmluZSB0aGVtIHdpdGggdGhlIHJlbGF0aXZlIG9mZnNldCBp biBycS0+aHdzcF9zZXFuby4KKwkgKgorCSAqIEFzIHJ3LT5od3NwX3NlcW5vIGlzIHJld3JpdHRl biB3aGVuIHNpZ25hbGVkLCB0aGlzIG9ubHkgd29ya3MKKwkgKiB3aGVuIHRoZSByZXF1ZXN0IGlz bid0IHNpZ25hbGVkIHlldCwgYnV0IGF0IHRoYXQgcG9pbnQgeW91CisJICogbm8gbG9uZ2VyIG5l ZWQgdGhlIG9mZnNldC4KKwkgKi8KKworCXJldHVybiBod3NwX3BoeXNfYmFzZSArIGh3c3BfcmVs YXRpdmVfb2Zmc2V0OworfQorCiAjZW5kaWYgLyogSTkxNV9SRVFVRVNUX0ggKi8KLS0gCjIuMzEu MAoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==