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 24A6FC433E0 for ; Tue, 5 Jan 2021 15:45:50 +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 D953F22BF3 for ; Tue, 5 Jan 2021 15:45:49 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D953F22BF3 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 CB63D6E12B; Tue, 5 Jan 2021 15:45:39 +0000 (UTC) X-Greylist: delayed 576 seconds by postgrey-1.36 at gabe; Tue, 05 Jan 2021 15:45:38 UTC Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3200A6E12D for ; Tue, 5 Jan 2021 15:45:38 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Tue, 5 Jan 2021 16:34:55 +0100 Message-Id: <20210105153558.134272-2-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.30.0.rc1 In-Reply-To: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> References: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v6 01/64] drm/i915: Do not share hwsp across contexts any more, v6 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?= 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 Zy4KClNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBs aW51eC5pbnRlbC5jb20+ClJldmlld2VkLWJ5OiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhl bGxzdHJvbUBpbnRlbC5jb20+ICN2MQpSZXBvcnRlZC1ieToga2VybmVsIHRlc3Qgcm9ib3QgPGxr cEBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3Mu YyAgICAgIHwgICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2luZV9jcy5j ICAgICAgfCAgIDggKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMg ICAgICB8ICAxMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMg ICAgIHwgICAxICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmggICAg ICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jICAgICAg fCA0MjIgKysrKy0tLS0tLS0tLS0tLS0tCiAuLi4vZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVs aW5lX3R5cGVzLmggICAgfCAgMTcgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0 X2VuZ2luZV9jcy5jICB8ICAgNSArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf dGltZWxpbmUuYyAgIHwgIDgzICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVz dC5jICAgICAgICAgICB8ICAgNCAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu aCAgICAgICAgICAgfCAgMTcgKy0KIDExIGZpbGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCsp LCA0MTUgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv Z2VuMl9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2Nz LmMKaW5kZXggYjQ5MWE2NDkxOWM4Li45NjQ2MjAwZDI3OTIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYwpAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyB1MzIgKl9f Z2VuMl9lbWl0X2JyZWFkY3J1bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MsCiAJ CQkJICAgaW50IGZsdXNoLCBpbnQgcG9zdCkKIHsKIAlHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9h Y3RpdmVfdGltZWxpbmUocnEpLT5od3NwX2dndHQgIT0gcnEtPmVuZ2luZS0+c3RhdHVzX3BhZ2Uu dm1hKTsKLQlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGlt ZWxpbmUocnEpLT5od3NwX29mZnNldCkgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIpOworCUdF TV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UocnEtPmh3c3Bfc2Vxbm8pICE9IEk5MTVfR0VNX0hXU19T RVFOT19BRERSKTsKIAogCSpjcysrID0gTUlfRkxVU0g7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2dlbjZfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9nZW42X2VuZ2luZV9jcy5jCmluZGV4IGNlMzhkMWJjYWJhMy4uZGQwOTRlMjFiYjUxIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2luZV9jcy5jCisrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjZfZW5naW5lX2NzLmMKQEAgLTE2MSw3ICsxNjEsNyBA QCB1MzIgKmdlbjZfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg dTMyICpjcykKIAkJIFBJUEVfQ09OVFJPTF9EQ19GTFVTSF9FTkFCTEUgfAogCQkgUElQRV9DT05U Uk9MX1FXX1dSSVRFIHwKIAkJIFBJUEVfQ09OVFJPTF9DU19TVEFMTCk7Ci0JKmNzKysgPSBpOTE1 X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQgfAorCSpjcysrID0gaTkx NV9yZXF1ZXN0X2FjdGl2ZV9vZmZzZXQocnEpIHwKIAkJUElQRV9DT05UUk9MX0dMT0JBTF9HVFQ7 CiAJKmNzKysgPSBycS0+ZmVuY2Uuc2Vxbm87CiAKQEAgLTM1OSw3ICszNTksNyBAQCB1MzIgKmdl bjdfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykK IAkJIFBJUEVfQ09OVFJPTF9RV19XUklURSB8CiAJCSBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVF9J VkIgfAogCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKLQkqY3MrKyA9IGk5MTVfcmVxdWVzdF9h Y3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldDsKKwkqY3MrKyA9IGk5MTVfcmVxdWVzdF9h Y3RpdmVfb2Zmc2V0KHJxKTsKIAkqY3MrKyA9IHJxLT5mZW5jZS5zZXFubzsKIAogCSpjcysrID0g TUlfVVNFUl9JTlRFUlJVUFQ7CkBAIC0zNzQsNyArMzc0LDcgQEAgdTMyICpnZW43X2VtaXRfYnJl YWRjcnVtYl9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiB1MzIgKmdlbjZf ZW1pdF9icmVhZGNydW1iX3hjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykKIHsK IAlHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX2dndHQg IT0gcnEtPmVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKLQlHRU1fQlVHX09OKG9mZnNldF9pbl9w YWdlKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldCkgIT0gSTkx NV9HRU1fSFdTX1NFUU5PX0FERFIpOworCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UocnEtPmh3 c3Bfc2Vxbm8pICE9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSKTsKIAogCSpjcysrID0gTUlfRkxV U0hfRFcgfCBNSV9GTFVTSF9EV19PUF9TVE9SRURXIHwgTUlfRkxVU0hfRFdfU1RPUkVfSU5ERVg7 CiAJKmNzKysgPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUiB8IE1JX0ZMVVNIX0RXX1VTRV9HVFQ7 CkBAIC0zOTQsNyArMzk0LDcgQEAgdTMyICpnZW43X2VtaXRfYnJlYWRjcnVtYl94Y3Moc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiAJaW50IGk7CiAKIAlHRU1fQlVHX09OKGk5MTVf cmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX2dndHQgIT0gcnEtPmVuZ2luZS0+c3Rh dHVzX3BhZ2Uudm1hKTsKLQlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKGk5MTVfcmVxdWVzdF9h Y3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldCkgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FE RFIpOworCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UocnEtPmh3c3Bfc2Vxbm8pICE9IEk5MTVf R0VNX0hXU19TRVFOT19BRERSKTsKIAogCSpjcysrID0gTUlfRkxVU0hfRFcgfCBNSV9JTlZBTElE QVRFX1RMQiB8CiAJCU1JX0ZMVVNIX0RXX09QX1NUT1JFRFcgfCBNSV9GTFVTSF9EV19TVE9SRV9J TkRFWDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2Nz LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jCmluZGV4IDE5NzJk ZDVkY2EwMC4uMzNlYWEwMjAzYjFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9nZW44X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5n aW5lX2NzLmMKQEAgLTMzOCwxNSArMzM4LDEzIEBAIHN0YXRpYyBpbmxpbmUgdTMyIHByZWVtcHRf YWRkcmVzcyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCiAKIHN0YXRpYyB1MzIgaHdz cF9vZmZzZXQoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCiB7Ci0JY29uc3Qgc3RydWN0 IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7CisJY29uc3Qgc3RydWN0IGludGVsX3RpbWVs aW5lICp0bDsKIAotCS8qIEJlZm9yZSB0aGUgcmVxdWVzdCBpcyBleGVjdXRlZCwgdGhlIHRpbWVs aW5lL2NhY2hsaW5lIGlzIGZpeGVkICovCisJLyogQmVmb3JlIHRoZSByZXF1ZXN0IGlzIGV4ZWN1 dGVkLCB0aGUgdGltZWxpbmUgaXMgZml4ZWQgKi8KKwl0bCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90 ZWN0ZWQocnEtPnRpbWVsaW5lLAorCQkJCSAgICAgICAhaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJx KSk7CiAKLQljbCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQocnEtPmh3c3BfY2FjaGVsaW5l LCAxKTsKLQlpZiAoY2wpCi0JCXJldHVybiBjbC0+Z2d0dF9vZmZzZXQ7Ci0KLQlyZXR1cm4gcmN1 X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChycS0+dGltZWxpbmUsIDEpLT5od3NwX29mZnNldDsKKwly ZXR1cm4gcGFnZV9tYXNrX2JpdHModGwtPmh3c3Bfb2Zmc2V0KSArIG9mZnNldF9pbl9wYWdlKHJx LT5od3NwX3NlcW5vKTsKIH0KIAogaW50IGdlbjhfZW1pdF9pbml0X2JyZWFkY3J1bWIoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEpCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9p bnRlbF9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9j cy5jCmluZGV4IDE4NDdkM2MyZWE5OS4uMWRiNjA4ZDFmMjZmIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwpAQCAtNzU0LDYgKzc1NCw3IEBAIHN0YXRpYyBpbnQg bWVhc3VyZV9icmVhZGNydW1iX2R3KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKIAlmcmFtZS0+ cnEuZW5naW5lID0gZW5naW5lOwogCWZyYW1lLT5ycS5jb250ZXh0ID0gY2U7CiAJcmN1X2Fzc2ln bl9wb2ludGVyKGZyYW1lLT5ycS50aW1lbGluZSwgY2UtPnRpbWVsaW5lKTsKKwlmcmFtZS0+cnEu aHdzcF9zZXFubyA9IGNlLT50aW1lbGluZS0+aHdzcF9zZXFubzsKIAogCWZyYW1lLT5yaW5nLnZh ZGRyID0gZnJhbWUtPmNzOwogCWZyYW1lLT5yaW5nLnNpemUgPSBzaXplb2YoZnJhbWUtPmNzKTsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oCmluZGV4IGE4M2QzZTE4MjU0 ZC4uZjdkYWI0ZmM5MjZjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRl bF9ndF90eXBlcy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVz LmgKQEAgLTM5LDEwICszOSw2IEBAIHN0cnVjdCBpbnRlbF9ndCB7CiAJc3RydWN0IGludGVsX2d0 X3RpbWVsaW5lcyB7CiAJCXNwaW5sb2NrX3QgbG9jazsgLyogcHJvdGVjdHMgYWN0aXZlX2xpc3Qg Ki8KIAkJc3RydWN0IGxpc3RfaGVhZCBhY3RpdmVfbGlzdDsKLQotCQkvKiBQYWNrIG11bHRpcGxl IHRpbWVsaW5lcycgc2Vxbm9zIGludG8gdGhlIHNhbWUgcGFnZSAqLwotCQlzcGlubG9ja190IGh3 c3BfbG9jazsKLQkJc3RydWN0IGxpc3RfaGVhZCBod3NwX2ZyZWVfbGlzdDsKIAl9IHRpbWVsaW5l czsKIAogCXN0cnVjdCBpbnRlbF9ndF9yZXF1ZXN0cyB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfdGltZWxpbmUuYwppbmRleCA3ZmUwNTkxOGE3NmUuLjNkNDNmMTVmMzRmMyAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCkBAIC0xMiwyMSArMTIsOSBAQAog I2luY2x1ZGUgImludGVsX3JpbmcuaCIKICNpbmNsdWRlICJpbnRlbF90aW1lbGluZS5oIgogCi0j ZGVmaW5lIHB0cl9zZXRfYml0KHB0ciwgYml0KSAoKHR5cGVvZihwdHIpKSgodW5zaWduZWQgbG9u ZykocHRyKSB8IEJJVChiaXQpKSkKLSNkZWZpbmUgcHRyX3Rlc3RfYml0KHB0ciwgYml0KSAoKHVu c2lnbmVkIGxvbmcpKHB0cikgJiBCSVQoYml0KSkKKyNkZWZpbmUgVElNRUxJTkVfU0VRTk9fQllU RVMgOAogCi0jZGVmaW5lIENBQ0hFTElORV9CSVRTIDYKLSNkZWZpbmUgQ0FDSEVMSU5FX0ZSRUUg Q0FDSEVMSU5FX0JJVFMKLQotc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3AgewotCXN0cnVjdCBp bnRlbF9ndCAqZ3Q7Ci0Jc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAqZ3RfdGltZWxpbmVzOwot CXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saW5rOwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXU2 NCBmcmVlX2JpdG1hcDsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faHdzcF9hbGxv YyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQorc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqaHdzcF9hbGxv YyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gZ3QtPmk5MTU7CiAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKQEAgLTQ1LDIy MCArMzMsNTkgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19od3NwX2FsbG9jKHN0cnVjdCBp bnRlbF9ndCAqZ3QpCiAJcmV0dXJuIHZtYTsKIH0KIAotc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAq Ci1od3NwX2FsbG9jKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUsIHVuc2lnbmVkIGlu dCAqY2FjaGVsaW5lKQotewotCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgKmd0ID0gJnRpbWVs aW5lLT5ndC0+dGltZWxpbmVzOwotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwICpod3NwOwot Ci0JQlVJTERfQlVHX09OKEJJVFNfUEVSX1RZUEUodTY0KSAqIENBQ0hFTElORV9CWVRFUyA+IFBB R0VfU0laRSk7Ci0KLQlzcGluX2xvY2tfaXJxKCZndC0+aHdzcF9sb2NrKTsKLQotCS8qIGh3c3Bf ZnJlZV9saXN0IG9ubHkgY29udGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZhaWxhYmxlIGNhY2hlbGlu ZXMgKi8KLQlod3NwID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZndC0+aHdzcF9mcmVlX2xp c3QsCi0JCQkJCXR5cGVvZigqaHdzcCksIGZyZWVfbGluayk7Ci0JaWYgKCFod3NwKSB7Ci0JCXN0 cnVjdCBpOTE1X3ZtYSAqdm1hOwotCi0JCXNwaW5fdW5sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7 Ci0KLQkJaHdzcCA9IGttYWxsb2Moc2l6ZW9mKCpod3NwKSwgR0ZQX0tFUk5FTCk7Ci0JCWlmICgh aHdzcCkKLQkJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JCXZtYSA9IF9faHdzcF9hbGxv Yyh0aW1lbGluZS0+Z3QpOwotCQlpZiAoSVNfRVJSKHZtYSkpIHsKLQkJCWtmcmVlKGh3c3ApOwot CQkJcmV0dXJuIHZtYTsKLQkJfQotCi0JCUdUX1RSQUNFKHRpbWVsaW5lLT5ndCwgIm5ldyBIV1NQ IGFsbG9jYXRlZFxuIik7Ci0KLQkJdm1hLT5wcml2YXRlID0gaHdzcDsKLQkJaHdzcC0+Z3QgPSB0 aW1lbGluZS0+Z3Q7Ci0JCWh3c3AtPnZtYSA9IHZtYTsKLQkJaHdzcC0+ZnJlZV9iaXRtYXAgPSB+ MHVsbDsKLQkJaHdzcC0+Z3RfdGltZWxpbmVzID0gZ3Q7Ci0KLQkJc3Bpbl9sb2NrX2lycSgmZ3Qt Pmh3c3BfbG9jayk7Ci0JCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xpbmssICZndC0+aHdzcF9mcmVl X2xpc3QpOwotCX0KLQotCUdFTV9CVUdfT04oIWh3c3AtPmZyZWVfYml0bWFwKTsKLQkqY2FjaGVs aW5lID0gX19mZnM2NChod3NwLT5mcmVlX2JpdG1hcCk7Ci0JaHdzcC0+ZnJlZV9iaXRtYXAgJj0g fkJJVF9VTEwoKmNhY2hlbGluZSk7Ci0JaWYgKCFod3NwLT5mcmVlX2JpdG1hcCkKLQkJbGlzdF9k ZWwoJmh3c3AtPmZyZWVfbGluayk7Ci0KLQlzcGluX3VubG9ja19pcnEoJmd0LT5od3NwX2xvY2sp OwotCi0JR0VNX0JVR19PTihod3NwLT52bWEtPnByaXZhdGUgIT0gaHdzcCk7Ci0JcmV0dXJuIGh3 c3AtPnZtYTsKLX0KLQotc3RhdGljIHZvaWQgX19pZGxlX2h3c3BfZnJlZShzdHJ1Y3QgaW50ZWxf dGltZWxpbmVfaHdzcCAqaHdzcCwgaW50IGNhY2hlbGluZSkKLXsKLQlzdHJ1Y3QgaW50ZWxfZ3Rf dGltZWxpbmVzICpndCA9IGh3c3AtPmd0X3RpbWVsaW5lczsKLQl1bnNpZ25lZCBsb25nIGZsYWdz OwotCi0Jc3Bpbl9sb2NrX2lycXNhdmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsKLQotCS8qIEFz IGEgY2FjaGVsaW5lIGJlY29tZXMgYXZhaWxhYmxlLCBwdWJsaXNoIHRoZSBIV1NQIG9uIHRoZSBm cmVlbGlzdCAqLwotCWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCi0JCWxpc3RfYWRkX3RhaWwoJmh3 c3AtPmZyZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7Ci0KLQlHRU1fQlVHX09OKGNhY2hl bGluZSA+PSBCSVRTX1BFUl9UWVBFKGh3c3AtPmZyZWVfYml0bWFwKSk7Ci0JaHdzcC0+ZnJlZV9i aXRtYXAgfD0gQklUX1VMTChjYWNoZWxpbmUpOwotCi0JLyogQW5kIGlmIG5vIG9uZSBpcyBsZWZ0 IHVzaW5nIGl0LCBnaXZlIHRoZSBwYWdlIGJhY2sgdG8gdGhlIHN5c3RlbSAqLwotCWlmIChod3Nw LT5mcmVlX2JpdG1hcCA9PSB+MHVsbCkgewotCQlpOTE1X3ZtYV9wdXQoaHdzcC0+dm1hKTsKLQkJ bGlzdF9kZWwoJmh3c3AtPmZyZWVfbGluayk7Ci0JCWtmcmVlKGh3c3ApOwotCX0KLQotCXNwaW5f dW5sb2NrX2lycXJlc3RvcmUoJmd0LT5od3NwX2xvY2ssIGZsYWdzKTsKLX0KLQotc3RhdGljIHZv aWQgX19yY3VfY2FjaGVsaW5lX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpyY3UpCi17Ci0Jc3RydWN0 IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wgPQotCQljb250YWluZXJfb2YocmN1LCB0eXBl b2YoKmNsKSwgcmN1KTsKLQotCS8qIE11c3Qgd2FpdCB1bnRpbCBhZnRlciBhbGwgKnJxLT5od3Nw IGFyZSBjb21wbGV0ZSBiZWZvcmUgcmVtb3ZpbmcgKi8KLQlpOTE1X2dlbV9vYmplY3RfdW5waW5f bWFwKGNsLT5od3NwLT52bWEtPm9iaik7Ci0JX19pZGxlX2h3c3BfZnJlZShjbC0+aHdzcCwgcHRy X3VubWFza19iaXRzKGNsLT52YWRkciwgQ0FDSEVMSU5FX0JJVFMpKTsKLQotCWk5MTVfYWN0aXZl X2ZpbmkoJmNsLT5hY3RpdmUpOwotCWtmcmVlKGNsKTsKLX0KLQotc3RhdGljIHZvaWQgX19pZGxl X2NhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQotewot CUdFTV9CVUdfT04oIWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3RpdmUpKTsKLQljYWxsX3Jj dSgmY2wtPnJjdSwgX19yY3VfY2FjaGVsaW5lX2ZyZWUpOwotfQotCiBfX2k5MTVfYWN0aXZlX2Nh bGwKLXN0YXRpYyB2b2lkIF9fY2FjaGVsaW5lX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFj dGl2ZSkKK3N0YXRpYyB2b2lkIF9fdGltZWxpbmVfcmV0aXJlKHN0cnVjdCBpOTE1X2FjdGl2ZSAq YWN0aXZlKQogewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsID0KLQkJY29u dGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjbCksIGFjdGl2ZSk7CisJc3RydWN0IGludGVsX3Rp bWVsaW5lICp0bCA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqdGwpLCBhY3RpdmUp OwogCi0JaTkxNV92bWFfdW5waW4oY2wtPmh3c3AtPnZtYSk7Ci0JaWYgKHB0cl90ZXN0X2JpdChj bC0+dmFkZHIsIENBQ0hFTElORV9GUkVFKSkKLQkJX19pZGxlX2NhY2hlbGluZV9mcmVlKGNsKTsK KwlpOTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsKKwlpbnRlbF90aW1lbGluZV9wdXQodGwp OwogfQogCi1zdGF0aWMgaW50IF9fY2FjaGVsaW5lX2FjdGl2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUg KmFjdGl2ZSkKK3N0YXRpYyBpbnQgX190aW1lbGluZV9hY3RpdmUoc3RydWN0IGk5MTVfYWN0aXZl ICphY3RpdmUpCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wgPQotCQlj b250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsKKwlzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsID0KKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCp0bCksIGFjdGl2 ZSk7CiAKLQlfX2k5MTVfdm1hX3BpbihjbC0+aHdzcC0+dm1hKTsKKwlfX2k5MTVfdm1hX3Bpbih0 bC0+aHdzcF9nZ3R0KTsKKwlpbnRlbF90aW1lbGluZV9nZXQodGwpOwogCXJldHVybiAwOwogfQog Ci1zdGF0aWMgc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqCi1jYWNoZWxpbmVfYWxs b2Moc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3AgKmh3c3AsIHVuc2lnbmVkIGludCBjYWNoZWxp bmUpCi17Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7Ci0Jdm9pZCAqdmFk ZHI7Ci0KLQlHRU1fQlVHX09OKGNhY2hlbGluZSA+PSBCSVQoQ0FDSEVMSU5FX0JJVFMpKTsKLQot CWNsID0ga21hbGxvYyhzaXplb2YoKmNsKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFjbCkKLQkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Ci0KLQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KGh3c3AtPnZtYS0+b2JqLCBJOTE1X01BUF9XQik7Ci0JaWYgKElTX0VSUih2YWRkcikpIHsKLQkJ a2ZyZWUoY2wpOwotCQlyZXR1cm4gRVJSX0NBU1QodmFkZHIpOwotCX0KLQotCWNsLT5od3NwID0g aHdzcDsKLQljbC0+dmFkZHIgPSBwYWdlX3BhY2tfYml0cyh2YWRkciwgY2FjaGVsaW5lKTsKLQot CWk5MTVfYWN0aXZlX2luaXQoJmNsLT5hY3RpdmUsIF9fY2FjaGVsaW5lX2FjdGl2ZSwgX19jYWNo ZWxpbmVfcmV0aXJlKTsKLQotCXJldHVybiBjbDsKLX0KLQotc3RhdGljIHZvaWQgY2FjaGVsaW5l X2FjcXVpcmUoc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wsCi0JCQkgICAgICB1 MzIgZ2d0dF9vZmZzZXQpCi17Ci0JaWYgKCFjbCkKLQkJcmV0dXJuOwotCi0JY2wtPmdndHRfb2Zm c2V0ID0gZ2d0dF9vZmZzZXQ7Ci0JaTkxNV9hY3RpdmVfYWNxdWlyZSgmY2wtPmFjdGl2ZSk7Ci19 Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9yZWxlYXNlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9j YWNoZWxpbmUgKmNsKQotewotCWlmIChjbCkKLQkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFj dGl2ZSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1l bGluZV9jYWNoZWxpbmUgKmNsKQotewotCWlmICghaTkxNV9hY3RpdmVfYWNxdWlyZV9pZl9idXN5 KCZjbC0+YWN0aXZlKSkgewotCQlfX2lkbGVfY2FjaGVsaW5lX2ZyZWUoY2wpOwotCQlyZXR1cm47 Ci0JfQotCi0JR0VNX0JVR19PTihwdHJfdGVzdF9iaXQoY2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJF RSkpOwotCWNsLT52YWRkciA9IHB0cl9zZXRfYml0KGNsLT52YWRkciwgQ0FDSEVMSU5FX0ZSRUUp OwotCi0JaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7Ci19Ci0KIHN0YXRpYyBpbnQg aW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lLAogCQkJ ICAgICAgIHN0cnVjdCBpbnRlbF9ndCAqZ3QsCiAJCQkgICAgICAgc3RydWN0IGk5MTVfdm1hICpo d3NwLAogCQkJICAgICAgIHVuc2lnbmVkIGludCBvZmZzZXQpCiB7CiAJdm9pZCAqdmFkZHI7CisJ dTMyICpzZXFubzsKIAogCWtyZWZfaW5pdCgmdGltZWxpbmUtPmtyZWYpOwogCWF0b21pY19zZXQo JnRpbWVsaW5lLT5waW5fY291bnQsIDApOwogCiAJdGltZWxpbmUtPmd0ID0gZ3Q7CiAKLQl0aW1l bGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYiA9ICFod3NwOwotCXRpbWVsaW5lLT5od3NwX2Nh Y2hlbGluZSA9IE5VTEw7Ci0KLQlpZiAoIWh3c3ApIHsKLQkJc3RydWN0IGludGVsX3RpbWVsaW5l X2NhY2hlbGluZSAqY2w7Ci0JCXVuc2lnbmVkIGludCBjYWNoZWxpbmU7Ci0KLQkJaHdzcCA9IGh3 c3BfYWxsb2ModGltZWxpbmUsICZjYWNoZWxpbmUpOworCWlmIChod3NwKSB7CisJCXRpbWVsaW5l LT5od3NwX29mZnNldCA9IG9mZnNldDsKKwkJdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVfdm1h X2dldChod3NwKTsKKwl9IGVsc2UgeworCQl0aW1lbGluZS0+aGFzX2luaXRpYWxfYnJlYWRjcnVt YiA9IHRydWU7CisJCWh3c3AgPSBod3NwX2FsbG9jKGd0KTsKIAkJaWYgKElTX0VSUihod3NwKSkK IAkJCXJldHVybiBQVFJfRVJSKGh3c3ApOwotCi0JCWNsID0gY2FjaGVsaW5lX2FsbG9jKGh3c3At PnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JCWlmIChJU19FUlIoY2wpKSB7Ci0JCQlfX2lkbGVfaHdz cF9mcmVlKGh3c3AtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JCQlyZXR1cm4gUFRSX0VSUihjbCk7 Ci0JCX0KLQotCQl0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUgPSBjbDsKLQkJdGltZWxpbmUtPmh3 c3Bfb2Zmc2V0ID0gY2FjaGVsaW5lICogQ0FDSEVMSU5FX0JZVEVTOwotCi0JCXZhZGRyID0gcGFn ZV9tYXNrX2JpdHMoY2wtPnZhZGRyKTsKLQl9IGVsc2UgewotCQl0aW1lbGluZS0+aHdzcF9vZmZz ZXQgPSBvZmZzZXQ7Ci0JCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoaHdzcC0+b2Jq LCBJOTE1X01BUF9XQik7Ci0JCWlmIChJU19FUlIodmFkZHIpKQotCQkJcmV0dXJuIFBUUl9FUlIo dmFkZHIpOworCQl0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaHdzcDsKIAl9CiAKLQl0aW1lbGluZS0+ aHdzcF9zZXFubyA9Ci0JCW1lbXNldCh2YWRkciArIHRpbWVsaW5lLT5od3NwX29mZnNldCwgMCwg Q0FDSEVMSU5FX0JZVEVTKTsKKwl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGh3c3At Pm9iaiwgSTkxNV9NQVBfV0IpOworCWlmIChJU19FUlIodmFkZHIpKQorCQlyZXR1cm4gUFRSX0VS Uih2YWRkcik7CisKKwl0aW1lbGluZS0+aHdzcF9tYXAgPSB2YWRkcjsKKwlzZXFubyA9IHZhZGRy ICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0OworCVdSSVRFX09OQ0UoKnNlcW5vLCAwKTsKKwl0aW1l bGluZS0+aHdzcF9zZXFubyA9IHNlcW5vOwogCi0JdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGk5MTVf dm1hX2dldChod3NwKTsKIAlHRU1fQlVHX09OKHRpbWVsaW5lLT5od3NwX29mZnNldCA+PSBod3Nw LT5zaXplKTsKIAogCXRpbWVsaW5lLT5mZW5jZV9jb250ZXh0ID0gZG1hX2ZlbmNlX2NvbnRleHRf YWxsb2MoMSk7CkBAIC0yNjksNiArOTYsNyBAQCBzdGF0aWMgaW50IGludGVsX3RpbWVsaW5lX2lu aXQoc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSwKIAlJTklUX0xJU1RfSEVBRCgmdGlt ZWxpbmUtPnJlcXVlc3RzKTsKIAogCWk5MTVfc3luY21hcF9pbml0KCZ0aW1lbGluZS0+c3luYyk7 CisJaTkxNV9hY3RpdmVfaW5pdCgmdGltZWxpbmUtPmFjdGl2ZSwgX190aW1lbGluZV9hY3RpdmUs IF9fdGltZWxpbmVfcmV0aXJlKTsKIAogCXJldHVybiAwOwogfQpAQCAtMjc5LDIzICsxMDcsMTgg QEAgdm9pZCBpbnRlbF9ndF9pbml0X3RpbWVsaW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiAJ c3Bpbl9sb2NrX2luaXQoJnRpbWVsaW5lcy0+bG9jayk7CiAJSU5JVF9MSVNUX0hFQUQoJnRpbWVs aW5lcy0+YWN0aXZlX2xpc3QpOwotCi0Jc3Bpbl9sb2NrX2luaXQoJnRpbWVsaW5lcy0+aHdzcF9s b2NrKTsKLQlJTklUX0xJU1RfSEVBRCgmdGltZWxpbmVzLT5od3NwX2ZyZWVfbGlzdCk7CiB9CiAK LXN0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmkoc3RydWN0IGludGVsX3RpbWVsaW5lICp0 aW1lbGluZSkKK3N0YXRpYyB2b2lkIGludGVsX3RpbWVsaW5lX2Zpbmkoc3RydWN0IHJjdV9oZWFk ICpyY3UpCiB7Ci0JR0VNX0JVR19PTihhdG9taWNfcmVhZCgmdGltZWxpbmUtPnBpbl9jb3VudCkp OwotCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1ZXN0cykpOwotCUdFTV9C VUdfT04odGltZWxpbmUtPnJldGlyZSk7CisJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGlu ZSA9CisJCWNvbnRhaW5lcl9vZihyY3UsIHN0cnVjdCBpbnRlbF90aW1lbGluZSwgcmN1KTsKIAot CWlmICh0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUpCi0JCWNhY2hlbGluZV9mcmVlKHRpbWVsaW5l LT5od3NwX2NhY2hlbGluZSk7Ci0JZWxzZQotCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHRp bWVsaW5lLT5od3NwX2dndHQtPm9iaik7CisJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcCh0aW1l bGluZS0+aHdzcF9nZ3R0LT5vYmopOwogCiAJaTkxNV92bWFfcHV0KHRpbWVsaW5lLT5od3NwX2dn dHQpOworCWk5MTVfYWN0aXZlX2ZpbmkoJnRpbWVsaW5lLT5hY3RpdmUpOworCWtmcmVlKHRpbWVs aW5lKTsKIH0KIAogc3RydWN0IGludGVsX3RpbWVsaW5lICoKQEAgLTM2MSw5ICsxODQsOSBAQCBp bnQgaW50ZWxfdGltZWxpbmVfcGluKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsIHN0cnVjdCBp OTE1X2dlbV93d19jdHggKnd3KQogCUdUX1RSQUNFKHRsLT5ndCwgInRpbWVsaW5lOiVsbHggdXNp bmcgSFdTUCBvZmZzZXQ6JXhcbiIsCiAJCSB0bC0+ZmVuY2VfY29udGV4dCwgdGwtPmh3c3Bfb2Zm c2V0KTsKIAotCWNhY2hlbGluZV9hY3F1aXJlKHRsLT5od3NwX2NhY2hlbGluZSwgdGwtPmh3c3Bf b2Zmc2V0KTsKKwlpOTE1X2FjdGl2ZV9hY3F1aXJlKCZ0bC0+YWN0aXZlKTsKIAlpZiAoYXRvbWlj X2ZldGNoX2luYygmdGwtPnBpbl9jb3VudCkpIHsKLQkJY2FjaGVsaW5lX3JlbGVhc2UodGwtPmh3 c3BfY2FjaGVsaW5lKTsKKwkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7CiAJCV9f aTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7CiAJfQogCkBAIC0zNzIsOSArMTk1LDEzIEBA IGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwgc3RydWN0 IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCiAKIHZvaWQgaW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8o Y29uc3Qgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKIHsKKwl1MzIgKmh3c3Bfc2Vxbm8gPSAo dTMyICopdGwtPmh3c3Bfc2Vxbm87CiAJLyogTXVzdCBiZSBwaW5uZWQgdG8gYmUgd3JpdGFibGUs IGFuZCBubyByZXF1ZXN0cyBpbiBmbGlnaHQuICovCiAJR0VNX0JVR19PTighYXRvbWljX3JlYWQo JnRsLT5waW5fY291bnQpKTsKLQlXUklURV9PTkNFKCoodTMyICopdGwtPmh3c3Bfc2Vxbm8sIHRs LT5zZXFubyk7CisKKwltZW1zZXQoaHdzcF9zZXFubyArIDEsIDAsIFRJTUVMSU5FX1NFUU5PX0JZ VEVTIC0gc2l6ZW9mKCpod3NwX3NlcW5vKSk7CisJV1JJVEVfT05DRSgqaHdzcF9zZXFubywgdGwt PnNlcW5vKTsKKwljbGZsdXNoKGh3c3Bfc2Vxbm8pOwogfQogCiB2b2lkIGludGVsX3RpbWVsaW5l X2VudGVyKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCkBAIC00NTAsMTA2ICsyNzcsMjMgQEAg c3RhdGljIHUzMiB0aW1lbGluZV9hZHZhbmNlKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCiAJ cmV0dXJuIHRsLT5zZXFubyArPSAxICsgdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWI7CiB9CiAK LXN0YXRpYyB2b2lkIHRpbWVsaW5lX3JvbGxiYWNrKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwp Ci17Ci0JdGwtPnNlcW5vIC09IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKLX0KLQog c3RhdGljIG5vaW5saW5lIGludAogX19pbnRlbF90aW1lbGluZV9nZXRfc2Vxbm8oc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bCwKLQkJCSAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLAogCQkJICAg dTMyICpzZXFubykKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKLQl1 bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwotCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwotCXZvaWQgKnZh ZGRyOwotCWludCBlcnI7Ci0KLQltaWdodF9sb2NrKCZ0bC0+Z3QtPmdndHQtPnZtLm11dGV4KTsK LQlHVF9UUkFDRSh0bC0+Z3QsICJ0aW1lbGluZTolbGx4IHdyYXBwZWRcbiIsIHRsLT5mZW5jZV9j b250ZXh0KTsKLQotCS8qCi0JICogSWYgdGhlcmUgaXMgYW4gb3V0c3RhbmRpbmcgR1BVIHJlZmVy ZW5jZSB0byB0aGlzIGNhY2hlbGluZSwKLQkgKiBzdWNoIGFzIGl0IGJlaW5nIHNhbXBsZWQgYnkg YSBIVyBzZW1hcGhvcmUgb24gYW5vdGhlciB0aW1lbGluZSwKLQkgKiB3ZSBjYW5ub3Qgd3JhcGFy b3VuZCBvdXIgc2Vxbm8gdmFsdWUgKHRoZSBIVyBzZW1hcGhvcmUgZG9lcwotCSAqIGEgc3RyaWN0 IGdyZWF0ZXItdGhhbi1vci1lcXVhbHMgY29tcGFyZSwgbm90IGk5MTVfc2Vxbm9fcGFzc2VkKS4K LQkgKiBTbyBpZiB0aGUgY2FjaGVsaW5lIGlzIHN0aWxsIGJ1c3ksIHdlIG11c3QgZGV0YWNoIG91 cnNlbHZlcwotCSAqIGZyb20gaXQgYW5kIGxlYXZlIGl0IGluZmxpZ2h0IGFsb25nc2lkZSBpdHMg dXNlcnMuCi0JICoKLQkgKiBIb3dldmVyLCBpZiBub2JvZHkgaXMgd2F0Y2hpbmcgYW5kIHdlIGNh biBndWFyYW50ZWUgdGhhdCBub2JvZHkKLQkgKiB3aWxsLCB3ZSBjb3VsZCBzaW1wbHkgcmV1c2Ug dGhlIHNhbWUgY2FjaGVsaW5lLgotCSAqCi0JICogaWYgKGk5MTVfYWN0aXZlX3JlcXVlc3RfaXNf c2lnbmFsZWQoJnRsLT5sYXN0X3JlcXVlc3QpICYmCi0JICogICAgIGk5MTVfYWN0aXZlX2lzX3Np Z25hbGVkKCZ0bC0+aHdzcF9jYWNoZWxpbmUtPmFjdGl2ZSkpCi0JICoJcmV0dXJuIDA7Ci0JICoK LQkgKiBUaGF0IHNlZW1zIHVubGlrZWx5IGZvciBhIGJ1c3kgdGltZWxpbmUgdGhhdCBuZWVkZWQg dG8gd3JhcCBpbgotCSAqIHRoZSBmaXJzdCBwbGFjZSwgc28ganVzdCByZXBsYWNlIHRoZSBjYWNo ZWxpbmUuCi0JICovCi0KLQl2bWEgPSBod3NwX2FsbG9jKHRsLCAmY2FjaGVsaW5lKTsKLQlpZiAo SVNfRVJSKHZtYSkpIHsKLQkJZXJyID0gUFRSX0VSUih2bWEpOwotCQlnb3RvIGVycl9yb2xsYmFj azsKLQl9Ci0KLQllcnIgPSBpOTE1X2dndHRfcGluKHZtYSwgTlVMTCwgMCwgUElOX0hJR0gpOwot CWlmIChlcnIpIHsKLQkJX19pZGxlX2h3c3BfZnJlZSh2bWEtPnByaXZhdGUsIGNhY2hlbGluZSk7 Ci0JCWdvdG8gZXJyX3JvbGxiYWNrOwotCX0KKwl1MzIgbmV4dF9vZnMgPSBvZmZzZXRfaW5fcGFn ZSh0bC0+aHdzcF9vZmZzZXQgKyBUSU1FTElORV9TRVFOT19CWVRFUyk7CiAKLQljbCA9IGNhY2hl bGluZV9hbGxvYyh2bWEtPnByaXZhdGUsIGNhY2hlbGluZSk7Ci0JaWYgKElTX0VSUihjbCkpIHsK LQkJZXJyID0gUFRSX0VSUihjbCk7Ci0JCV9faWRsZV9od3NwX2ZyZWUodm1hLT5wcml2YXRlLCBj YWNoZWxpbmUpOwotCQlnb3RvIGVycl91bnBpbjsKLQl9Ci0JR0VNX0JVR19PTihjbC0+aHdzcC0+ dm1hICE9IHZtYSk7Ci0KLQkvKgotCSAqIEF0dGFjaCB0aGUgb2xkIGNhY2hlbGluZSB0byB0aGUg Y3VycmVudCByZXF1ZXN0LCBzbyB0aGF0IHdlIG9ubHkKLQkgKiBmcmVlIGl0IGFmdGVyIHRoZSBj dXJyZW50IHJlcXVlc3QgaXMgcmV0aXJlZCwgd2hpY2ggZW5zdXJlcyB0aGF0Ci0JICogYWxsIHdy aXRlcyBpbnRvIHRoZSBjYWNoZWxpbmUgZnJvbSBwcmV2aW91cyByZXF1ZXN0cyBhcmUgY29tcGxl dGUuCi0JICovCi0JZXJyID0gaTkxNV9hY3RpdmVfcmVmKCZ0bC0+aHdzcF9jYWNoZWxpbmUtPmFj dGl2ZSwKLQkJCSAgICAgIHRsLT5mZW5jZV9jb250ZXh0LAotCQkJICAgICAgJnJxLT5mZW5jZSk7 Ci0JaWYgKGVycikKLQkJZ290byBlcnJfY2FjaGVsaW5lOworCS8qIHcvYTogYml0IDUgbmVlZHMg dG8gYmUgemVybyBmb3IgTUlfRkxVU0hfRFcgYWRkcmVzcy4gKi8KKwlpZiAoVElNRUxJTkVfU0VR Tk9fQllURVMgPD0gQklUKDUpICYmIChuZXh0X29mcyAmIEJJVCg1KSkpCisJCW5leHRfb2ZzID0g b2Zmc2V0X2luX3BhZ2UobmV4dF9vZnMgKyBCSVQoNSkpOwogCi0JY2FjaGVsaW5lX3JlbGVhc2Uo dGwtPmh3c3BfY2FjaGVsaW5lKTsgLyogb3duZXJzaGlwIG5vdyB4ZmVyZWQgdG8gcnEgKi8KLQlj YWNoZWxpbmVfZnJlZSh0bC0+aHdzcF9jYWNoZWxpbmUpOwotCi0JaTkxNV92bWFfdW5waW4odGwt Pmh3c3BfZ2d0dCk7IC8qIGJpbmRpbmcga2VwdCBhbGl2ZSBieSBvbGQgY2FjaGVsaW5lICovCi0J aTkxNV92bWFfcHV0KHRsLT5od3NwX2dndHQpOwotCi0JdGwtPmh3c3BfZ2d0dCA9IGk5MTVfdm1h X2dldCh2bWEpOwotCi0JdmFkZHIgPSBwYWdlX21hc2tfYml0cyhjbC0+dmFkZHIpOwotCXRsLT5o d3NwX29mZnNldCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsKLQl0bC0+aHdzcF9zZXFu byA9Ci0JCW1lbXNldCh2YWRkciArIHRsLT5od3NwX29mZnNldCwgMCwgQ0FDSEVMSU5FX0JZVEVT KTsKLQotCXRsLT5od3NwX29mZnNldCArPSBpOTE1X2dndHRfb2Zmc2V0KHZtYSk7Ci0JR1RfVFJB Q0UodGwtPmd0LCAidGltZWxpbmU6JWxseCB1c2luZyBIV1NQIG9mZnNldDoleFxuIiwKLQkJIHRs LT5mZW5jZV9jb250ZXh0LCB0bC0+aHdzcF9vZmZzZXQpOwotCi0JY2FjaGVsaW5lX2FjcXVpcmUo Y2wsIHRsLT5od3NwX29mZnNldCk7Ci0JdGwtPmh3c3BfY2FjaGVsaW5lID0gY2w7CisJdGwtPmh3 c3Bfb2Zmc2V0ID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArIG5leHRfb2ZzOwor CXRsLT5od3NwX3NlcW5vID0gdGwtPmh3c3BfbWFwICsgbmV4dF9vZnM7CisJaW50ZWxfdGltZWxp bmVfcmVzZXRfc2Vxbm8odGwpOwogCiAJKnNlcW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CiAJ R0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgqdGwtPmh3c3Bfc2Vxbm8sICpzZXFubykpOwog CXJldHVybiAwOwotCi1lcnJfY2FjaGVsaW5lOgotCWNhY2hlbGluZV9mcmVlKGNsKTsKLWVycl91 bnBpbjoKLQlpOTE1X3ZtYV91bnBpbih2bWEpOwotZXJyX3JvbGxiYWNrOgotCXRpbWVsaW5lX3Jv bGxiYWNrKHRsKTsKLQlyZXR1cm4gZXJyOwogfQogCiBpbnQgaW50ZWxfdGltZWxpbmVfZ2V0X3Nl cW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCkBAIC01NTksNTEgKzMwMyw1MiBAQCBpbnQg aW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCiAJKnNl cW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7CiAKIAkvKiBSZXBsYWNlIHRoZSBIV1NQIG9uIHdy YXBhcm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KLQlpZiAodW5saWtlbHkoISpzZXFubyAmJiB0 bC0+aHdzcF9jYWNoZWxpbmUpKQotCQlyZXR1cm4gX19pbnRlbF90aW1lbGluZV9nZXRfc2Vxbm8o dGwsIHJxLCBzZXFubyk7CisJaWYgKHVubGlrZWx5KCEqc2Vxbm8gJiYgdGwtPmhhc19pbml0aWFs X2JyZWFkY3J1bWIpKQorCQlyZXR1cm4gX19pbnRlbF90aW1lbGluZV9nZXRfc2Vxbm8odGwsIHNl cW5vKTsKIAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNhY2hlbGluZV9yZWYoc3RydWN0 IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wsCi0JCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCi17Ci0JcmV0dXJuIGk5MTVfYWN0aXZlX2FkZF9yZXF1ZXN0KCZjbC0+YWN0aXZlLCBycSk7 Ci19Ci0KIGludCBpbnRlbF90aW1lbGluZV9yZWFkX2h3c3Aoc3RydWN0IGk5MTVfcmVxdWVzdCAq ZnJvbSwKIAkJCSAgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8sCiAJCQkgICAgIHUzMiAqaHdz cCkKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKKwlzdHJ1Y3QgaW50 ZWxfdGltZWxpbmUgKnRsOwogCWludCBlcnI7CiAKLQlHRU1fQlVHX09OKCFyY3VfYWNjZXNzX3Bv aW50ZXIoZnJvbS0+aHdzcF9jYWNoZWxpbmUpKTsKLQogCXJjdV9yZWFkX2xvY2soKTsKLQljbCA9 IHJjdV9kZXJlZmVyZW5jZShmcm9tLT5od3NwX2NhY2hlbGluZSk7Ci0JaWYgKGk5MTVfcmVxdWVz dF9jb21wbGV0ZWQoZnJvbSkpIC8qIGNvbmZpcm0gY2FjaGVsaW5lIGlzIHZhbGlkICovCi0JCWdv dG8gdW5sb2NrOwotCWlmICh1bmxpa2VseSghaTkxNV9hY3RpdmVfYWNxdWlyZV9pZl9idXN5KCZj bC0+YWN0aXZlKSkpCi0JCWdvdG8gdW5sb2NrOyAvKiBzZXFubyB3cmFwcGVkIGFuZCBjb21wbGV0 ZWQhICovCi0JaWYgKHVubGlrZWx5KGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQoZnJvbSkpKQotCQln b3RvIHJlbGVhc2U7CisJdGwgPSByY3VfZGVyZWZlcmVuY2UoZnJvbS0+dGltZWxpbmUpOworCWlm IChpOTE1X3JlcXVlc3RfY29tcGxldGVkKGZyb20pIHx8CisJICAgICFpOTE1X2FjdGl2ZV9hY3F1 aXJlX2lmX2J1c3koJnRsLT5hY3RpdmUpKQorCQl0bCA9IE5VTEw7CisKKwlpZiAodGwpIHsKKwkJ LyogaHdzcF9vZmZzZXQgbWF5IHdyYXBhcm91bmQsIHNvIHVzZSBmcm9tLT5od3NwX3NlcW5vICov CisJCSpod3NwID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArCisJCQlvZmZzZXRf aW5fcGFnZShmcm9tLT5od3NwX3NlcW5vKTsKKwl9CisKKwkvKiBlbnN1cmUgd2Ugd2FpdCBvbiB0 aGUgcmlnaHQgcmVxdWVzdCwgaWYgbm90LCB3ZSBjb21wbGV0ZWQgKi8KKwlpZiAodGwgJiYgaTkx NV9yZXF1ZXN0X2NvbXBsZXRlZChmcm9tKSkgeworCQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+ YWN0aXZlKTsKKwkJdGwgPSBOVUxMOworCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKIAotCWVyciA9 IGNhY2hlbGluZV9yZWYoY2wsIHRvKTsKLQlpZiAoZXJyKQorCWlmICghdGwpCisJCXJldHVybiAx OworCisJLyogQ2FuJ3QgZG8gc2VtYXBob3JlIHdhaXRzIG9uIGtlcm5lbCBjb250ZXh0ICovCisJ aWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikgeworCQllcnIgPSAtRUlOVkFMOwogCQln b3RvIG91dDsKKwl9CisKKwllcnIgPSBpOTE1X2FjdGl2ZV9hZGRfcmVxdWVzdCgmdGwtPmFjdGl2 ZSwgdG8pOwogCi0JKmh3c3AgPSBjbC0+Z2d0dF9vZmZzZXQ7CiBvdXQ6Ci0JaTkxNV9hY3RpdmVf cmVsZWFzZSgmY2wtPmFjdGl2ZSk7CisJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7 CiAJcmV0dXJuIGVycjsKLQotcmVsZWFzZToKLQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZjbC0+YWN0 aXZlKTsKLXVubG9jazoKLQlyY3VfcmVhZF91bmxvY2soKTsKLQlyZXR1cm4gMTsKIH0KIAogdm9p ZCBpbnRlbF90aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQpAQCAtNjEy LDggKzM1Nyw3IEBAIHZvaWQgaW50ZWxfdGltZWxpbmVfdW5waW4oc3RydWN0IGludGVsX3RpbWVs aW5lICp0bCkKIAlpZiAoIWF0b21pY19kZWNfYW5kX3Rlc3QoJnRsLT5waW5fY291bnQpKQogCQly ZXR1cm47CiAKLQljYWNoZWxpbmVfcmVsZWFzZSh0bC0+aHdzcF9jYWNoZWxpbmUpOwotCisJaTkx NV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7CiAJX19pOTE1X3ZtYV91bnBpbih0bC0+aHdz cF9nZ3R0KTsKIH0KIApAQCAtNjIyLDggKzM2NiwxMSBAQCB2b2lkIF9faW50ZWxfdGltZWxpbmVf ZnJlZShzdHJ1Y3Qga3JlZiAqa3JlZikKIAlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5l ID0KIAkJY29udGFpbmVyX29mKGtyZWYsIHR5cGVvZigqdGltZWxpbmUpLCBrcmVmKTsKIAotCWlu dGVsX3RpbWVsaW5lX2ZpbmkodGltZWxpbmUpOwotCWtmcmVlX3JjdSh0aW1lbGluZSwgcmN1KTsK KwlHRU1fQlVHX09OKGF0b21pY19yZWFkKCZ0aW1lbGluZS0+cGluX2NvdW50KSk7CisJR0VNX0JV R19PTighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJlcXVlc3RzKSk7CisJR0VNX0JVR19PTih0aW1l bGluZS0+cmV0aXJlKTsKKworCWNhbGxfcmN1KCZ0aW1lbGluZS0+cmN1LCBpbnRlbF90aW1lbGlu ZV9maW5pKTsKIH0KIAogdm9pZCBpbnRlbF9ndF9maW5pX3RpbWVsaW5lcyhzdHJ1Y3QgaW50ZWxf Z3QgKmd0KQpAQCAtNjMxLDcgKzM3OCw2IEBAIHZvaWQgaW50ZWxfZ3RfZmluaV90aW1lbGluZXMo c3RydWN0IGludGVsX2d0ICpndCkKIAlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICp0aW1lbGlu ZXMgPSAmZ3QtPnRpbWVsaW5lczsKIAogCUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5l cy0+YWN0aXZlX2xpc3QpKTsKLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0aW1lbGluZXMtPmh3 c3BfZnJlZV9saXN0KSk7CiB9CiAKIHZvaWQgaW50ZWxfZ3Rfc2hvd190aW1lbGluZXMoc3RydWN0 IGludGVsX2d0ICpndCwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3RpbWVsaW5lX3R5cGVzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGlu ZV90eXBlcy5oCmluZGV4IGUzNjBmNTA3MDZiZi4uOWMxZDc2N2E4NjdmIDEwMDY0NAotLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmgKQEAgLTE4LDcgKzE4LDYg QEAKIHN0cnVjdCBpOTE1X3ZtYTsKIHN0cnVjdCBpOTE1X3N5bmNtYXA7CiBzdHJ1Y3QgaW50ZWxf Z3Q7Ci1zdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcDsKIAogc3RydWN0IGludGVsX3RpbWVsaW5l IHsKIAl1NjQgZmVuY2VfY29udGV4dDsKQEAgLTQ1LDEyICs0NCwxMSBAQCBzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgewogCWF0b21pY190IHBpbl9jb3VudDsKIAlhdG9taWNfdCBhY3RpdmVfY291bnQ7 CiAKKwl2b2lkICpod3NwX21hcDsKIAljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CiAJc3RydWN0IGk5 MTVfdm1hICpod3NwX2dndHQ7CiAJdTMyIGh3c3Bfb2Zmc2V0OwogCi0Jc3RydWN0IGludGVsX3Rp bWVsaW5lX2NhY2hlbGluZSAqaHdzcF9jYWNoZWxpbmU7Ci0KIAlib29sIGhhc19pbml0aWFsX2Jy ZWFkY3J1bWI7CiAKIAkvKioKQEAgLTY3LDYgKzY1LDggQEAgc3RydWN0IGludGVsX3RpbWVsaW5l IHsKIAkgKi8KIAlzdHJ1Y3QgaTkxNV9hY3RpdmVfZmVuY2UgbGFzdF9yZXF1ZXN0OwogCisJc3Ry dWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKKwogCS8qKiBBIGNoYWluIG9mIGNvbXBsZXRlZCB0aW1l bGluZXMgcmVhZHkgZm9yIGVhcmx5IHJldGlyZW1lbnQuICovCiAJc3RydWN0IGludGVsX3RpbWVs aW5lICpyZXRpcmU7CiAKQEAgLTkwLDE1ICs5MCw0IEBAIHN0cnVjdCBpbnRlbF90aW1lbGluZSB7 CiAJc3RydWN0IHJjdV9oZWFkIHJjdTsKIH07CiAKLXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNo ZWxpbmUgewotCXN0cnVjdCBpOTE1X2FjdGl2ZSBhY3RpdmU7Ci0KLQlzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmVfaHdzcCAqaHdzcDsKLQl2b2lkICp2YWRkcjsKLQotCXUzMiBnZ3R0X29mZnNldDsKLQot CXN0cnVjdCByY3VfaGVhZCByY3U7Ci19OwotCiAjZW5kaWYgLyogX19JOTE1X1RJTUVMSU5FX1RZ UEVTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf ZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3Mu YwppbmRleCA0MzljODk4NGY1ZmEuLmZkOTQxNGIwZDFiZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKQEAgLTQyLDYgKzQyLDkgQEAgc3RhdGljIGlu dCBwZXJmX2VuZChzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCiBzdGF0aWMgaW50IHdyaXRlX3RpbWVz dGFtcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IHNsb3QpCiB7CisJc3RydWN0IGludGVs X3RpbWVsaW5lICp0bCA9CisJCXJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0ZWQocnEtPnRpbWVsaW5l LAorCQkJCQkgICFpOTE1X3JlcXVlc3Rfc2lnbmFsZWQocnEpKTsKIAl1MzIgY21kOwogCXUzMiAq Y3M7CiAKQEAgLTU0LDcgKzU3LDcgQEAgc3RhdGljIGludCB3cml0ZV90aW1lc3RhbXAoc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQogCQljbWQrKzsKIAkqY3MrKyA9IGNtZDsKIAkq Y3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KFJJTkdfVElNRVNUQU1QKHJxLT5lbmdpbmUtPm1t aW9fYmFzZSkpOwotCSpjcysrID0gaTkxNV9yZXF1ZXN0X3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZz ZXQgKyBzbG90ICogc2l6ZW9mKHUzMik7CisJKmNzKysgPSB0bC0+aHdzcF9vZmZzZXQgKyBzbG90 ICogc2l6ZW9mKHUzMik7CiAJKmNzKysgPSAwOwogCiAJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBj cyk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGlu ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwppbmRleCA2 ZjNhMzY4N2VmMGYuLjZlMzJlOTFjZGFiNCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF90aW1lbGluZS5jCkBAIC02NjYsNyArNjY2LDcgQEAgc3RhdGljIGludCBsaXZlX2h3 c3Bfd3JhcCh2b2lkICphcmcpCiAJaWYgKElTX0VSUih0bCkpCiAJCXJldHVybiBQVFJfRVJSKHRs KTsKIAotCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIgfHwgIXRsLT5od3NwX2NhY2hl bGluZSkKKwlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQogCQlnb3RvIG91dF9mcmVl OwogCiAJZXJyID0gaW50ZWxfdGltZWxpbmVfcGluKHRsLCBOVUxMKTsKQEAgLTgzMywxMiArODMz LDI2IEBAIHN0YXRpYyBpbnQgc2V0dXBfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVyICp3LCBz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQogCXJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCBzd2l0Y2hf dGxfbG9jayhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tLCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0 bykKK3sKKwkvKiBzb21lIGxpZ2h0IG11dGV4IGp1Z2dsaW5nIHJlcXVpcmVkOyB0aGluayBjby1y b3V0aW5lcyAqLworCisJaWYgKGZyb20pIHsKKwkJbG9ja2RlcF91bnBpbl9sb2NrKCZmcm9tLT5j b250ZXh0LT50aW1lbGluZS0+bXV0ZXgsIGZyb20tPmNvb2tpZSk7CisJCW11dGV4X3VubG9jaygm ZnJvbS0+Y29udGV4dC0+dGltZWxpbmUtPm11dGV4KTsKKwl9CisKKwlpZiAodG8pIHsKKwkJbXV0 ZXhfbG9jaygmdG8tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJCXRvLT5jb29raWUgPSBs b2NrZGVwX3Bpbl9sb2NrKCZ0by0+Y29udGV4dC0+dGltZWxpbmUtPm11dGV4KTsKKwl9Cit9CisK IHN0YXRpYyBpbnQgY3JlYXRlX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywKIAkJCSAg c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAogCQkJICBpbnQgcmluZ3N6KQogewogCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsOwogCiAJ Y2UgPSBpbnRlbF9jb250ZXh0X2NyZWF0ZShlbmdpbmUpOwogCWlmIChJU19FUlIoY2UpKQpAQCAt ODUxLDExICs4NjUsOCBAQCBzdGF0aWMgaW50IGNyZWF0ZV93YXRjaGVyKHN0cnVjdCBod3NwX3dh dGNoZXIgKncsCiAJCXJldHVybiBQVFJfRVJSKHctPnJxKTsKIAogCXctPmFkZHIgPSBpOTE1X2dn dHRfb2Zmc2V0KHctPnZtYSk7Ci0JdGwgPSB3LT5ycS0+Y29udGV4dC0+dGltZWxpbmU7CiAKLQkv KiBzb21lIGxpZ2h0IG11dGV4IGp1Z2dsaW5nIHJlcXVpcmVkOyB0aGluayBjby1yb3V0aW5lcyAq LwotCWxvY2tkZXBfdW5waW5fbG9jaygmdGwtPm11dGV4LCB3LT5ycS0+Y29va2llKTsKLQltdXRl eF91bmxvY2soJnRsLT5tdXRleCk7CisJc3dpdGNoX3RsX2xvY2sody0+cnEsIE5VTEwpOwogCiAJ cmV0dXJuIDA7CiB9CkBAIC04NjQsMTUgKzg3NSwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX3dhdGNo ZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywgY29uc3QgY2hhciAqbmFtZSwKIAkJCSBib29sICgq b3ApKHUzMiBod3NwLCB1MzIgc2Vxbm8pKQogewogCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxID0g ZmV0Y2hfYW5kX3plcm8oJnctPnJxKTsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gcnEt PmNvbnRleHQtPnRpbWVsaW5lOwogCXUzMiBvZmZzZXQsIGVuZDsKIAlpbnQgZXJyOwogCiAJR0VN X0JVR19PTih3LT5hZGRyIC0gaTkxNV9nZ3R0X29mZnNldCh3LT52bWEpID4gdy0+dm1hLT5zaXpl KTsKIAogCWk5MTVfcmVxdWVzdF9nZXQocnEpOwotCW11dGV4X2xvY2soJnRsLT5tdXRleCk7Ci0J cnEtPmNvb2tpZSA9IGxvY2tkZXBfcGluX2xvY2soJnRsLT5tdXRleCk7CisJc3dpdGNoX3RsX2xv Y2soTlVMTCwgcnEpOwogCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCiAJaWYgKGk5MTVfcmVxdWVz dF93YWl0KHJxLCAwLCBIWikgPCAwKSB7CkBAIC05MDEsMTAgKzkxMCw3IEBAIHN0YXRpYyBpbnQg Y2hlY2tfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVyICp3LCBjb25zdCBjaGFyICpuYW1lLAog c3RhdGljIHZvaWQgY2xlYW51cF93YXRjaGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncpCiB7CiAJ aWYgKHctPnJxKSB7Ci0JCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSB3LT5ycS0+Y29udGV4 dC0+dGltZWxpbmU7Ci0KLQkJbXV0ZXhfbG9jaygmdGwtPm11dGV4KTsKLQkJdy0+cnEtPmNvb2tp ZSA9IGxvY2tkZXBfcGluX2xvY2soJnRsLT5tdXRleCk7CisJCXN3aXRjaF90bF9sb2NrKE5VTEws IHctPnJxKTsKIAogCQlpOTE1X3JlcXVlc3RfYWRkKHctPnJxKTsKIAl9CkBAIC05NDIsNyArOTQ4 LDcgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKndyYXBfdGltZWxpbmUoc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpCiAJfQogCiAJaTkxNV9yZXF1ZXN0X3B1dChycSk7Ci0JcnEgPSBpbnRl bF9jb250ZXh0X2NyZWF0ZV9yZXF1ZXN0KGNlKTsKKwlycSA9IGk5MTVfcmVxdWVzdF9jcmVhdGUo Y2UpOwogCWlmIChJU19FUlIocnEpKQogCQlyZXR1cm4gcnE7CiAKQEAgLTk3Nyw3ICs5ODMsNyBA QCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKIAlpZiAoSVNfRVJSKHRsKSkK IAkJcmV0dXJuIFBUUl9FUlIodGwpOwogCi0JaWYgKCF0bC0+aHdzcF9jYWNoZWxpbmUpCisJaWYg KCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikKIAkJZ290byBvdXRfZnJlZTsKIAogCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHdhdGNoZXIpOyBpKyspIHsKQEAgLTk5OSw3ICsxMDA1LDcg QEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCiAJCWRvIHsKIAkJCXN0cnVj dCBpOTE1X3N3X2ZlbmNlICpzdWJtaXQ7CiAJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKLQkJ CXUzMiBod3NwOworCQkJdTMyIGh3c3AsIGR1bW15OwogCiAJCQlzdWJtaXQgPSBoZWFwX2ZlbmNl X2NyZWF0ZShHRlBfS0VSTkVMKTsKIAkJCWlmICghc3VibWl0KSB7CkBAIC0xMDE3LDE0ICsxMDIz LDI2IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQkJCWdvdG8gb3V0 OwogCQkJfQogCi0JCQkvKiBTa2lwIHRvIHRoZSBlbmQsIHNhdmluZyAzMCBtaW51dGVzIG9mIG5v cHMgKi8KLQkJCXRsLT5zZXFubyA9IC0xMHUgKyAyICogKGNvdW50ICYgMyk7Ci0JCQlXUklURV9P TkNFKCoodTMyICopdGwtPmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CiAJCQljZS0+dGltZWxpbmUg PSBpbnRlbF90aW1lbGluZV9nZXQodGwpOwogCi0JCQlycSA9IGludGVsX2NvbnRleHRfY3JlYXRl X3JlcXVlc3QoY2UpOworCQkJLyogRW5zdXJlIHRpbWVsaW5lIGlzIG1hcHBlZCwgZG9uZSBkdXJp bmcgZmlyc3QgcGluICovCisJCQllcnIgPSBpbnRlbF9jb250ZXh0X3BpbihjZSk7CisJCQlpZiAo ZXJyKSB7CisJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOworCQkJCWdvdG8gb3V0OworCQkJfQor CisJCQkvKgorCQkJICogU3RhcnQgYXQgYSBuZXcgd3JhcCwgYW5kIHNldCBzZXFubyByaWdodCBi ZWZvcmUgYW5vdGhlciB3cmFwLAorCQkJICogc2F2aW5nIDMwIG1pbnV0ZXMgb2Ygbm9wcworCQkJ ICovCisJCQl0bC0+c2Vxbm8gPSAtMTJ1ICsgMiAqIChjb3VudCAmIDMpOworCQkJX19pbnRlbF90 aW1lbGluZV9nZXRfc2Vxbm8odGwsICZkdW1teSk7CisKKwkJCXJxID0gaTkxNV9yZXF1ZXN0X2Ny ZWF0ZShjZSk7CiAJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCWVyciA9IFBUUl9FUlIocnEpOwor CQkJCWludGVsX2NvbnRleHRfdW5waW4oY2UpOwogCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsK IAkJCQlnb3RvIG91dDsKIAkJCX0KQEAgLTEwMzQsMzIgKzEwNTIsMzUgQEAgc3RhdGljIGludCBs aXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCiAJCQkJCQkJICAgIEdGUF9LRVJORUwpOwogCQkJaWYg KGVyciA8IDApIHsKIAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCQlpbnRlbF9jb250ZXh0 X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiAJCQkJZ290byBvdXQ7CiAJ CQl9CiAKLQkJCW11dGV4X2xvY2soJndhdGNoZXJbMF0ucnEtPmNvbnRleHQtPnRpbWVsaW5lLT5t dXRleCk7CisJCQlzd2l0Y2hfdGxfbG9jayhycSwgd2F0Y2hlclswXS5ycSk7CiAJCQllcnIgPSBp bnRlbF90aW1lbGluZV9yZWFkX2h3c3AocnEsIHdhdGNoZXJbMF0ucnEsICZod3NwKTsKIAkJCWlm IChlcnIgPT0gMCkKIAkJCQllcnIgPSBlbWl0X3JlYWRfaHdzcCh3YXRjaGVyWzBdLnJxLCAvKiBi ZWZvcmUgKi8KIAkJCQkJCSAgICAgcnEtPmZlbmNlLnNlcW5vLCBod3NwLAogCQkJCQkJICAgICAm d2F0Y2hlclswXS5hZGRyKTsKLQkJCW11dGV4X3VubG9jaygmd2F0Y2hlclswXS5ycS0+Y29udGV4 dC0+dGltZWxpbmUtPm11dGV4KTsKKwkJCXN3aXRjaF90bF9sb2NrKHdhdGNoZXJbMF0ucnEsIHJx KTsKIAkJCWlmIChlcnIpIHsKIAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKKwkJCQlpbnRlbF9j b250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7CiAJCQkJZ290byBv dXQ7CiAJCQl9CiAKLQkJCW11dGV4X2xvY2soJndhdGNoZXJbMV0ucnEtPmNvbnRleHQtPnRpbWVs aW5lLT5tdXRleCk7CisJCQlzd2l0Y2hfdGxfbG9jayhycSwgd2F0Y2hlclsxXS5ycSk7CiAJCQll cnIgPSBpbnRlbF90aW1lbGluZV9yZWFkX2h3c3AocnEsIHdhdGNoZXJbMV0ucnEsICZod3NwKTsK IAkJCWlmIChlcnIgPT0gMCkKIAkJCQllcnIgPSBlbWl0X3JlYWRfaHdzcCh3YXRjaGVyWzFdLnJx LCAvKiBhZnRlciAqLwogCQkJCQkJICAgICBycS0+ZmVuY2Uuc2Vxbm8sIGh3c3AsCiAJCQkJCQkg ICAgICZ3YXRjaGVyWzFdLmFkZHIpOwotCQkJbXV0ZXhfdW5sb2NrKCZ3YXRjaGVyWzFdLnJxLT5j b250ZXh0LT50aW1lbGluZS0+bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2sod2F0Y2hlclsxXS5y cSwgcnEpOwogCQkJaWYgKGVycikgewogCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOworCQkJCWlu dGVsX2NvbnRleHRfdW5waW4oY2UpOwogCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKIAkJCQln b3RvIG91dDsKIAkJCX0KQEAgLTEwNjgsNiArMTA4OSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3Nw X3JlYWQodm9pZCAqYXJnKQogCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CiAKIAkJCXJxID0gd3Jh cF90aW1lbGluZShycSk7CisJCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCWludGVsX2Nv bnRleHRfcHV0KGNlKTsKIAkJCWlmIChJU19FUlIocnEpKSB7CiAJCQkJZXJyID0gUFRSX0VSUihy cSk7CkBAIC0xMTA3LDggKzExMjksOCBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWFkKHZvaWQg KmFyZykKIAkJCSAgICAzICogd2F0Y2hlclsxXS5ycS0+cmluZy0+c2l6ZSkKIAkJCQlicmVhazsK IAotCQl9IHdoaWxlICghX19pZ3RfdGltZW91dChlbmRfdGltZSwgTlVMTCkpOwotCQlXUklURV9P TkNFKCoodTMyICopdGwtPmh3c3Bfc2Vxbm8sIDB4ZGVhZGJlZWYpOworCQl9IHdoaWxlICghX19p Z3RfdGltZW91dChlbmRfdGltZSwgTlVMTCkgJiYKKwkJCSBjb3VudCA8IChQQUdFX1NJWkUgLyBU SU1FTElORV9TRVFOT19CWVRFUyAtIDEpIC8gMik7CiAKIAkJcHJfaW5mbygiJXM6IHNpbXVsYXRl ZCAlbHUgd3JhcHNcbiIsIGVuZ2luZS0+bmFtZSwgY291bnQpOwogCQllcnIgPSBjaGVja193YXRj aGVyKCZ3YXRjaGVyWzFdLCAiYWZ0ZXIiLCBjbXBfZ3RlKTsKQEAgLTExNTMsOSArMTE3NSw3IEBA IHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JvbGxvdmVyX2tlcm5lbCh2b2lkICphcmcpCiAJCX0KIAog CQlHRU1fQlVHX09OKGk5MTVfYWN0aXZlX2ZlbmNlX2lzc2V0KCZ0bC0+bGFzdF9yZXF1ZXN0KSk7 Ci0JCXRsLT5zZXFubyA9IDA7Ci0JCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKLQkJdGltZWxpbmVf cm9sbGJhY2sodGwpOworCQl0bC0+c2Vxbm8gPSAtMnU7CiAJCVdSSVRFX09OQ0UoKih1MzIgKil0 bC0+aHdzcF9zZXFubywgdGwtPnNlcW5vKTsKIAogCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0la RShycSk7IGkrKykgewpAQCAtMTIzNSwxMSArMTI1NSwxMCBAQCBzdGF0aWMgaW50IGxpdmVfaHdz cF9yb2xsb3Zlcl91c2VyKHZvaWQgKmFyZykKIAkJCWdvdG8gb3V0OwogCiAJCXRsID0gY2UtPnRp bWVsaW5lOwotCQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9j YWNoZWxpbmUpCisJCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpCiAJCQlnb3RvIG91 dDsKIAotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7Ci0JCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsK KwkJdGwtPnNlcW5vID0gLTR1OwogCQlXUklURV9PTkNFKCoodTMyICopdGwtPmh3c3Bfc2Vxbm8s IHRsLT5zZXFubyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocnEpOyBpKyspIHsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKaW5kZXggYmZkODJkODI1OWY0Li5iNjYxYjNi NTk5MmUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCkBAIC04NTEsNyArODUxLDYg QEAgX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgZ2ZwX3Qg Z2ZwKQogCXJxLT5mZW5jZS5zZXFubyA9IHNlcW5vOwogCiAJUkNVX0lOSVRfUE9JTlRFUihycS0+ dGltZWxpbmUsIHRsKTsKLQlSQ1VfSU5JVF9QT0lOVEVSKHJxLT5od3NwX2NhY2hlbGluZSwgdGwt Pmh3c3BfY2FjaGVsaW5lKTsKIAlycS0+aHdzcF9zZXFubyA9IHRsLT5od3NwX3NlcW5vOwogCUdF TV9CVUdfT04oaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChycSkpOwogCkBAIC0xMDkwLDkgKzEwODks NiBAQCBlbWl0X3NlbWFwaG9yZV93YWl0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnRvLAogCWlmIChp OTE1X3JlcXVlc3RfaGFzX2luaXRpYWxfYnJlYWRjcnVtYih0bykpCiAJCWdvdG8gYXdhaXRfZmVu Y2U7CiAKLQlpZiAoIXJjdV9hY2Nlc3NfcG9pbnRlcihmcm9tLT5od3NwX2NhY2hlbGluZSkpCi0J CWdvdG8gYXdhaXRfZmVuY2U7Ci0KIAkvKgogCSAqIElmIHRoaXMgb3IgaXRzIGRlcGVuZGVudHMg YXJlIHdhaXRpbmcgb24gYW4gZXh0ZXJuYWwgZmVuY2UKIAkgKiB0aGF0IG1heSBmYWlsIGNhdGFz dHJvcGhpY2FsbHksIHRoZW4gd2Ugd2FudCB0byBhdm9pZCB1c2luZwpkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuaAppbmRleCBhOGM0MTMyMDNmNzIuLmMyNWIwYWZjYzIyNSAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKQEAgLTIzNywxNiArMjM3LDYgQEAgc3RydWN0IGk5MTVf cmVxdWVzdCB7CiAJICovCiAJY29uc3QgdTMyICpod3NwX3NlcW5vOwogCi0JLyoKLQkgKiBJZiB3 ZSBuZWVkIHRvIGFjY2VzcyB0aGUgdGltZWxpbmUncyBzZXFubyBmb3IgdGhpcyByZXF1ZXN0IGlu Ci0JICogYW5vdGhlciByZXF1ZXN0LCB3ZSBuZWVkIHRvIGtlZXAgYSByZWFkIHJlZmVyZW5jZSB0 byB0aGlzIGFzc29jaWF0ZWQKLQkgKiBjYWNoZWxpbmUsIHNvIHRoYXQgd2UgZG8gbm90IGZyZWUg YW5kIHJlY3ljbGUgaXQgYmVmb3JlIHRoZSBmb3JlaWduCi0JICogb2JzZXJ2ZXJzIGhhdmUgY29t cGxldGVkLiBIZW5jZSwgd2Uga2VlcCBhIHBvaW50ZXIgdG8gdGhlIGNhY2hlbGluZQotCSAqIGlu c2lkZSB0aGUgdGltZWxpbmUncyBIV1NQIHZtYSwgYnV0IGl0IGlzIG9ubHkgdmFsaWQgd2hpbGUg dGhpcwotCSAqIHJlcXVlc3QgaGFzIG5vdCBjb21wbGV0ZWQgYW5kIGd1YXJkZWQgYnkgdGhlIHRp bWVsaW5lIG11dGV4LgotCSAqLwotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgX19y Y3UgKmh3c3BfY2FjaGVsaW5lOwotCiAJLyoqIFBvc2l0aW9uIGluIHRoZSByaW5nIG9mIHRoZSBz dGFydCBvZiB0aGUgcmVxdWVzdCAqLwogCXUzMiBoZWFkOwogCkBAIC02MTUsNCArNjA1LDExIEBA IGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAq cnEpCiAJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJnJxLT5lbmdpbmUtPmFjdGl2ZS5sb2NrKSk7CiB9 CiAKK3N0YXRpYyBpbmxpbmUgdTMyCitpOTE1X3JlcXVlc3RfYWN0aXZlX29mZnNldChjb25zdCBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwlyZXR1cm4gcGFnZV9tYXNrX2JpdHMoaTkxNV9y ZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0KSArCisJICAgICAgIG9mZnNl dF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKTsKK30KKwogI2VuZGlmIC8qIEk5MTVfUkVRVUVTVF9I ICovCi0tIAoyLjMwLjAucmMxCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK