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,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BD0E8C433E6 for ; Thu, 11 Mar 2021 13:49:08 +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 46A5964D5D for ; Thu, 11 Mar 2021 13:49:08 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 46A5964D5D 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 1DF6C6ECB8; Thu, 11 Mar 2021 13:48:56 +0000 (UTC) Received: from mblankhorst.nl (mblankhorst.nl [IPv6:2a02:2308::216:3eff:fe92:dfa3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 365C26EC95 for ; Thu, 11 Mar 2021 13:48:53 +0000 (UTC) From: Maarten Lankhorst To: intel-gfx@lists.freedesktop.org Date: Thu, 11 Mar 2021 14:41:41 +0100 Message-Id: <20210311134249.588632-2-maarten.lankhorst@linux.intel.com> X-Mailer: git-send-email 2.30.1 In-Reply-To: <20210311134249.588632-1-maarten.lankhorst@linux.intel.com> References: <20210311134249.588632-1-maarten.lankhorst@linux.intel.com> MIME-Version: 1.0 Subject: [Intel-gfx] [PATCH v8 01/69] drm/i915: Do not share hwsp across contexts any more, v7. 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 Zy4KQ2hhbmdlcyBzaW5jZSB2NjoKLSBSZW5hbWUgaTkxNV9yZXF1ZXN0X2FjdGl2ZV9vZmZzZXQg dG8gaTkxNV9yZXF1ZXN0X2FjdGl2ZV9zZXFubygpLAogIGFuZCBlbGFib3JhdGUgdGhlIGZ1bmN0 aW9uLiAodHZydGtvKQoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9yc3QgPG1hYXJ0ZW4u bGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IFRob21hcyBIZWxsc3Ryw7Zt IDx0aG9tYXMuaGVsbHN0cm9tQGludGVsLmNvbT4gI3YxClJlcG9ydGVkLWJ5OiBrZXJuZWwgdGVz dCByb2JvdCA8bGtwQGludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4y X2VuZ2luZV9jcy5jICAgICAgfCAgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjZf ZW5naW5lX2NzLmMgICAgICB8ICAgOCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9l bmdpbmVfY3MuYyAgICAgIHwgIDEzICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9l bmdpbmVfY3MuYyAgICAgfCAgIDEgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3Rf dHlwZXMuaCAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVs aW5lLmMgICAgICB8IDQyMiArKysrLS0tLS0tLS0tLS0tLS0KIC4uLi9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfdGltZWxpbmVfdHlwZXMuaCAgICB8ICAxNyArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMgIHwgICA1ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9zZWxmdGVzdF90aW1lbGluZS5jICAgfCAgODMgKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMgICAgICAgICAgIHwgICA0IC0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5oICAgICAgICAgICB8ICAzMSArLQogMTEgZmlsZXMgY2hhbmdlZCwgMTc1IGlu c2VydGlvbnMoKyksIDQxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2Vu Ml9lbmdpbmVfY3MuYwppbmRleCBiNDkxYTY0OTE5YzguLjk2NDYyMDBkMjc5MiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jCkBAIC0xNDMsNyArMTQzLDcgQEAgc3Rh dGljIHUzMiAqX19nZW4yX2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg dTMyICpjcywKIAkJCQkgICBpbnQgZmx1c2gsIGludCBwb3N0KQogewogCUdFTV9CVUdfT04oaTkx NV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3BfZ2d0dCAhPSBycS0+ZW5naW5lLT5z dGF0dXNfcGFnZS52bWEpOwotCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UoaTkxNV9yZXF1ZXN0 X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0KSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9f QUREUik7CisJR0VNX0JVR19PTihvZmZzZXRfaW5fcGFnZShycS0+aHdzcF9zZXFubykgIT0gSTkx NV9HRU1fSFdTX1NFUU5PX0FERFIpOwogCiAJKmNzKysgPSBNSV9GTFVTSDsKIApkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuNl9lbmdpbmVfY3MuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2dlbjZfZW5naW5lX2NzLmMKaW5kZXggY2UzOGQxYmNhYmEzLi5iMzg4Y2Vl ZWIxYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjZfZW5naW5lX2Nz LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuNl9lbmdpbmVfY3MuYwpAQCAtMTYx LDcgKzE2MSw3IEBAIHUzMiAqZ2VuNl9lbWl0X2JyZWFkY3J1bWJfcmNzKHN0cnVjdCBpOTE1X3Jl cXVlc3QgKnJxLCB1MzIgKmNzKQogCQkgUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJMRSB8CiAJ CSBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAogCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKLQkq Y3MrKyA9IGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldCB8CisJ KmNzKysgPSBpOTE1X3JlcXVlc3RfYWN0aXZlX3NlcW5vKHJxKSB8CiAJCVBJUEVfQ09OVFJPTF9H TE9CQUxfR1RUOwogCSpjcysrID0gcnEtPmZlbmNlLnNlcW5vOwogCkBAIC0zNTksNyArMzU5LDcg QEAgdTMyICpnZW43X2VtaXRfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs IHUzMiAqY3MpCiAJCSBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAogCQkgUElQRV9DT05UUk9MX0dM T0JBTF9HVFRfSVZCIHwKIAkJIFBJUEVfQ09OVFJPTF9DU19TVEFMTCk7Ci0JKmNzKysgPSBpOTE1 X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQ7CisJKmNzKysgPSBpOTE1 X3JlcXVlc3RfYWN0aXZlX3NlcW5vKHJxKTsKIAkqY3MrKyA9IHJxLT5mZW5jZS5zZXFubzsKIAog CSpjcysrID0gTUlfVVNFUl9JTlRFUlJVUFQ7CkBAIC0zNzQsNyArMzc0LDcgQEAgdTMyICpnZW43 X2VtaXRfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiB1 MzIgKmdlbjZfZW1pdF9icmVhZGNydW1iX3hjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMy ICpjcykKIHsKIAlHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5o d3NwX2dndHQgIT0gcnEtPmVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKLQlHRU1fQlVHX09OKG9m ZnNldF9pbl9wYWdlKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNl dCkgIT0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIpOworCUdFTV9CVUdfT04ob2Zmc2V0X2luX3Bh Z2UocnEtPmh3c3Bfc2Vxbm8pICE9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSKTsKIAogCSpjcysr ID0gTUlfRkxVU0hfRFcgfCBNSV9GTFVTSF9EV19PUF9TVE9SRURXIHwgTUlfRkxVU0hfRFdfU1RP UkVfSU5ERVg7CiAJKmNzKysgPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUiB8IE1JX0ZMVVNIX0RX X1VTRV9HVFQ7CkBAIC0zOTQsNyArMzk0LDcgQEAgdTMyICpnZW43X2VtaXRfYnJlYWRjcnVtYl94 Y3Moc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCiAJaW50IGk7CiAKIAlHRU1fQlVH X09OKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX2dndHQgIT0gcnEtPmVu Z2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKLQlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKGk5MTVf cmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX29mZnNldCkgIT0gSTkxNV9HRU1fSFdT X1NFUU5PX0FERFIpOworCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UocnEtPmh3c3Bfc2Vxbm8p ICE9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSKTsKIAogCSpjcysrID0gTUlfRkxVU0hfRFcgfCBN SV9JTlZBTElEQVRFX1RMQiB8CiAJCU1JX0ZMVVNIX0RXX09QX1NUT1JFRFcgfCBNSV9GTFVTSF9E V19TVE9SRV9JTkRFWDsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhf ZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jCmlu ZGV4IGNhYzgwYWY3YWQxYy4uNmI5YzM0ZDNhYzhkIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9nZW44X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2dlbjhfZW5naW5lX2NzLmMKQEAgLTMzOCwxNSArMzM4LDE0IEBAIHN0YXRpYyB1MzIgcHJlZW1w dF9hZGRyZXNzKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKIAogc3RhdGljIHUzMiBo d3NwX29mZnNldChjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIHsKLQljb25zdCBzdHJ1 Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmUgKnRsOwogCi0JLyogQmVmb3JlIHRoZSByZXF1ZXN0IGlzIGV4ZWN1dGVkLCB0aGUgdGlt ZWxpbmUvY2FjaGxpbmUgaXMgZml4ZWQgKi8KKwkvKiBCZWZvcmUgdGhlIHJlcXVlc3QgaXMgZXhl Y3V0ZWQsIHRoZSB0aW1lbGluZSBpcyBmaXhlZCAqLworCXRsID0gcmN1X2RlcmVmZXJlbmNlX3By b3RlY3RlZChycS0+dGltZWxpbmUsCisJCQkJICAgICAgICFpOTE1X3JlcXVlc3Rfc2lnbmFsZWQo cnEpKTsKIAotCWNsID0gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChycS0+aHdzcF9jYWNoZWxp bmUsIDEpOwotCWlmIChjbCkKLQkJcmV0dXJuIGNsLT5nZ3R0X29mZnNldDsKLQotCXJldHVybiBy Y3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJxLT50aW1lbGluZSwgMSktPmh3c3Bfb2Zmc2V0Owor CS8qIFNlZSB0aGUgY29tbWVudCBpbiBpOTE1X3JlcXVlc3RfYWN0aXZlX3NlcW5vKCkuICovCisJ cmV0dXJuIHBhZ2VfbWFza19iaXRzKHRsLT5od3NwX29mZnNldCkgKyBvZmZzZXRfaW5fcGFnZShy cS0+aHdzcF9zZXFubyk7CiB9CiAKIGludCBnZW44X2VtaXRfaW5pdF9icmVhZGNydW1iKHN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qv aW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVf Y3MuYwppbmRleCBiNGRmMjc1Y2JhNzkuLmU2Y2VmZDAwYjRhMSAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3QvaW50ZWxfZW5naW5lX2NzLmMKQEAgLTc1Miw2ICs3NTIsNyBAQCBzdGF0aWMgaW50 IG1lYXN1cmVfYnJlYWRjcnVtYl9kdyhzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UpCiAJZnJhbWUt PnJxLmVuZ2luZSA9IGVuZ2luZTsKIAlmcmFtZS0+cnEuY29udGV4dCA9IGNlOwogCXJjdV9hc3Np Z25fcG9pbnRlcihmcmFtZS0+cnEudGltZWxpbmUsIGNlLT50aW1lbGluZSk7CisJZnJhbWUtPnJx Lmh3c3Bfc2Vxbm8gPSBjZS0+dGltZWxpbmUtPmh3c3Bfc2Vxbm87CiAKIAlmcmFtZS0+cmluZy52 YWRkciA9IGZyYW1lLT5jczsKIAlmcmFtZS0+cmluZy5zaXplID0gc2l6ZW9mKGZyYW1lLT5jcyk7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBlcy5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAppbmRleCA2MjZhZjM3Yzc3 OTAuLjNmNmRiODM1NzMwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50 ZWxfZ3RfdHlwZXMuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90eXBl cy5oCkBAIC00NSwxMCArNDUsNiBAQCBzdHJ1Y3QgaW50ZWxfZ3QgewogCXN0cnVjdCBpbnRlbF9n dF90aW1lbGluZXMgewogCQlzcGlubG9ja190IGxvY2s7IC8qIHByb3RlY3RzIGFjdGl2ZV9saXN0 ICovCiAJCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7Ci0KLQkJLyogUGFjayBtdWx0aXBs ZSB0aW1lbGluZXMnIHNlcW5vcyBpbnRvIHRoZSBzYW1lIHBhZ2UgKi8KLQkJc3BpbmxvY2tfdCBo d3NwX2xvY2s7Ci0JCXN0cnVjdCBsaXN0X2hlYWQgaHdzcF9mcmVlX2xpc3Q7CiAJfSB0aW1lbGlu ZXM7CiAKIAlzdHJ1Y3QgaW50ZWxfZ3RfcmVxdWVzdHMgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0 L2ludGVsX3RpbWVsaW5lLmMKaW5kZXggNDkxYjhkZjE3NGMyLi5lZmUyMDMwY2ZlNWUgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmUuYwpAQCAtMTEsMjEgKzExLDkgQEAK ICNpbmNsdWRlICJpbnRlbF9yaW5nLmgiCiAjaW5jbHVkZSAiaW50ZWxfdGltZWxpbmUuaCIKIAot I2RlZmluZSBwdHJfc2V0X2JpdChwdHIsIGJpdCkgKCh0eXBlb2YocHRyKSkoKHVuc2lnbmVkIGxv bmcpKHB0cikgfCBCSVQoYml0KSkpCi0jZGVmaW5lIHB0cl90ZXN0X2JpdChwdHIsIGJpdCkgKCh1 bnNpZ25lZCBsb25nKShwdHIpICYgQklUKGJpdCkpCisjZGVmaW5lIFRJTUVMSU5FX1NFUU5PX0JZ VEVTIDgKIAotI2RlZmluZSBDQUNIRUxJTkVfQklUUyA2Ci0jZGVmaW5lIENBQ0hFTElORV9GUkVF IENBQ0hFTElORV9CSVRTCi0KLXN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwIHsKLQlzdHJ1Y3Qg aW50ZWxfZ3QgKmd0OwotCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgKmd0X3RpbWVsaW5lczsK LQlzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfbGluazsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQl1 NjQgZnJlZV9iaXRtYXA7Ci19OwotCi1zdGF0aWMgc3RydWN0IGk5MTVfdm1hICpfX2h3c3BfYWxs b2Moc3RydWN0IGludGVsX2d0ICpndCkKK3N0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKmh3c3BfYWxs b2Moc3RydWN0IGludGVsX2d0ICpndCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IGd0LT5pOTE1OwogCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7CkBAIC00NCwy MjAgKzMyLDU5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3Qg aW50ZWxfZ3QgKmd0KQogCXJldHVybiB2bWE7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEg KgotaHdzcF9hbGxvYyhzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lLCB1bnNpZ25lZCBp bnQgKmNhY2hlbGluZSkKLXsKLQlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICpndCA9ICZ0aW1l bGluZS0+Z3QtPnRpbWVsaW5lczsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcDsK LQotCUJVSUxEX0JVR19PTihCSVRTX1BFUl9UWVBFKHU2NCkgKiBDQUNIRUxJTkVfQllURVMgPiBQ QUdFX1NJWkUpOwotCi0Jc3Bpbl9sb2NrX2lycSgmZ3QtPmh3c3BfbG9jayk7Ci0KLQkvKiBod3Nw X2ZyZWVfbGlzdCBvbmx5IGNvbnRhaW5zIEhXU1AgdGhhdCBoYXZlIGF2YWlsYWJsZSBjYWNoZWxp bmVzICovCi0JaHdzcCA9IGxpc3RfZmlyc3RfZW50cnlfb3JfbnVsbCgmZ3QtPmh3c3BfZnJlZV9s aXN0LAotCQkJCQl0eXBlb2YoKmh3c3ApLCBmcmVlX2xpbmspOwotCWlmICghaHdzcCkgewotCQlz dHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQotCQlzcGluX3VubG9ja19pcnEoJmd0LT5od3NwX2xvY2sp OwotCi0JCWh3c3AgPSBrbWFsbG9jKHNpemVvZigqaHdzcCksIEdGUF9LRVJORUwpOwotCQlpZiAo IWh3c3ApCi0JCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKLQotCQl2bWEgPSBfX2h3c3BfYWxs b2ModGltZWxpbmUtPmd0KTsKLQkJaWYgKElTX0VSUih2bWEpKSB7Ci0JCQlrZnJlZShod3NwKTsK LQkJCXJldHVybiB2bWE7Ci0JCX0KLQotCQlHVF9UUkFDRSh0aW1lbGluZS0+Z3QsICJuZXcgSFdT UCBhbGxvY2F0ZWRcbiIpOwotCi0JCXZtYS0+cHJpdmF0ZSA9IGh3c3A7Ci0JCWh3c3AtPmd0ID0g dGltZWxpbmUtPmd0OwotCQlod3NwLT52bWEgPSB2bWE7Ci0JCWh3c3AtPmZyZWVfYml0bWFwID0g fjB1bGw7Ci0JCWh3c3AtPmd0X3RpbWVsaW5lcyA9IGd0OwotCi0JCXNwaW5fbG9ja19pcnEoJmd0 LT5od3NwX2xvY2spOwotCQlsaXN0X2FkZCgmaHdzcC0+ZnJlZV9saW5rLCAmZ3QtPmh3c3BfZnJl ZV9saXN0KTsKLQl9Ci0KLQlHRU1fQlVHX09OKCFod3NwLT5mcmVlX2JpdG1hcCk7Ci0JKmNhY2hl bGluZSA9IF9fZmZzNjQoaHdzcC0+ZnJlZV9iaXRtYXApOwotCWh3c3AtPmZyZWVfYml0bWFwICY9 IH5CSVRfVUxMKCpjYWNoZWxpbmUpOwotCWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCi0JCWxpc3Rf ZGVsKCZod3NwLT5mcmVlX2xpbmspOwotCi0Jc3Bpbl91bmxvY2tfaXJxKCZndC0+aHdzcF9sb2Nr KTsKLQotCUdFTV9CVUdfT04oaHdzcC0+dm1hLT5wcml2YXRlICE9IGh3c3ApOwotCXJldHVybiBo d3NwLT52bWE7Ci19Ci0KLXN0YXRpYyB2b2lkIF9faWRsZV9od3NwX2ZyZWUoc3RydWN0IGludGVs X3RpbWVsaW5lX2h3c3AgKmh3c3AsIGludCBjYWNoZWxpbmUpCi17Ci0Jc3RydWN0IGludGVsX2d0 X3RpbWVsaW5lcyAqZ3QgPSBod3NwLT5ndF90aW1lbGluZXM7Ci0JdW5zaWduZWQgbG9uZyBmbGFn czsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZndC0+aHdzcF9sb2NrLCBmbGFncyk7Ci0KLQkvKiBB cyBhIGNhY2hlbGluZSBiZWNvbWVzIGF2YWlsYWJsZSwgcHVibGlzaCB0aGUgSFdTUCBvbiB0aGUg ZnJlZWxpc3QgKi8KLQlpZiAoIWh3c3AtPmZyZWVfYml0bWFwKQotCQlsaXN0X2FkZF90YWlsKCZo d3NwLT5mcmVlX2xpbmssICZndC0+aHdzcF9mcmVlX2xpc3QpOwotCi0JR0VNX0JVR19PTihjYWNo ZWxpbmUgPj0gQklUU19QRVJfVFlQRShod3NwLT5mcmVlX2JpdG1hcCkpOwotCWh3c3AtPmZyZWVf Yml0bWFwIHw9IEJJVF9VTEwoY2FjaGVsaW5lKTsKLQotCS8qIEFuZCBpZiBubyBvbmUgaXMgbGVm dCB1c2luZyBpdCwgZ2l2ZSB0aGUgcGFnZSBiYWNrIHRvIHRoZSBzeXN0ZW0gKi8KLQlpZiAoaHdz cC0+ZnJlZV9iaXRtYXAgPT0gfjB1bGwpIHsKLQkJaTkxNV92bWFfcHV0KGh3c3AtPnZtYSk7Ci0J CWxpc3RfZGVsKCZod3NwLT5mcmVlX2xpbmspOwotCQlrZnJlZShod3NwKTsKLQl9Ci0KLQlzcGlu X3VubG9ja19pcnFyZXN0b3JlKCZndC0+aHdzcF9sb2NrLCBmbGFncyk7Ci19Ci0KLXN0YXRpYyB2 b2lkIF9fcmN1X2NhY2hlbGluZV9mcmVlKHN0cnVjdCByY3VfaGVhZCAqcmN1KQotewotCXN0cnVj dCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsID0KLQkJY29udGFpbmVyX29mKHJjdSwgdHlw ZW9mKCpjbCksIHJjdSk7Ci0KLQkvKiBNdXN0IHdhaXQgdW50aWwgYWZ0ZXIgYWxsICpycS0+aHdz cCBhcmUgY29tcGxldGUgYmVmb3JlIHJlbW92aW5nICovCi0JaTkxNV9nZW1fb2JqZWN0X3VucGlu X21hcChjbC0+aHdzcC0+dm1hLT5vYmopOwotCV9faWRsZV9od3NwX2ZyZWUoY2wtPmh3c3AsIHB0 cl91bm1hc2tfYml0cyhjbC0+dmFkZHIsIENBQ0hFTElORV9CSVRTKSk7Ci0KLQlpOTE1X2FjdGl2 ZV9maW5pKCZjbC0+YWN0aXZlKTsKLQlrZnJlZShjbCk7Ci19Ci0KLXN0YXRpYyB2b2lkIF9faWRs ZV9jYWNoZWxpbmVfZnJlZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKLXsK LQlHRU1fQlVHX09OKCFpOTE1X2FjdGl2ZV9pc19pZGxlKCZjbC0+YWN0aXZlKSk7Ci0JY2FsbF9y Y3UoJmNsLT5yY3UsIF9fcmN1X2NhY2hlbGluZV9mcmVlKTsKLX0KLQogX19pOTE1X2FjdGl2ZV9j YWxsCi1zdGF0aWMgdm9pZCBfX2NhY2hlbGluZV9yZXRpcmUoc3RydWN0IGk5MTVfYWN0aXZlICph Y3RpdmUpCitzdGF0aWMgdm9pZCBfX3RpbWVsaW5lX3JldGlyZShzdHJ1Y3QgaTkxNV9hY3RpdmUg KmFjdGl2ZSkKIHsKLQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lICpjbCA9Ci0JCWNv bnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqY2wpLCBhY3RpdmUpOworCXN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGwgPQorCQljb250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKnRsKSwgYWN0aXZl KTsKIAotCWk5MTVfdm1hX3VucGluKGNsLT5od3NwLT52bWEpOwotCWlmIChwdHJfdGVzdF9iaXQo Y2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJFRSkpCi0JCV9faWRsZV9jYWNoZWxpbmVfZnJlZShjbCk7 CisJaTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7CisJaW50ZWxfdGltZWxpbmVfcHV0KHRs KTsKIH0KIAotc3RhdGljIGludCBfX2NhY2hlbGluZV9hY3RpdmUoc3RydWN0IGk5MTVfYWN0aXZl ICphY3RpdmUpCitzdGF0aWMgaW50IF9fdGltZWxpbmVfYWN0aXZlKHN0cnVjdCBpOTE1X2FjdGl2 ZSAqYWN0aXZlKQogewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsID0KLQkJ Y29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjbCksIGFjdGl2ZSk7CisJc3RydWN0IGludGVs X3RpbWVsaW5lICp0bCA9CisJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqdGwpLCBhY3Rp dmUpOwogCi0JX19pOTE1X3ZtYV9waW4oY2wtPmh3c3AtPnZtYSk7CisJX19pOTE1X3ZtYV9waW4o dGwtPmh3c3BfZ2d0dCk7CisJaW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKIAlyZXR1cm4gMDsKIH0K IAotc3RhdGljIHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKgotY2FjaGVsaW5lX2Fs bG9jKHN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwICpod3NwLCB1bnNpZ25lZCBpbnQgY2FjaGVs aW5lKQotewotCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsOwotCXZvaWQgKnZh ZGRyOwotCi0JR0VNX0JVR19PTihjYWNoZWxpbmUgPj0gQklUKENBQ0hFTElORV9CSVRTKSk7Ci0K LQljbCA9IGttYWxsb2Moc2l6ZW9mKCpjbCksIEdGUF9LRVJORUwpOwotCWlmICghY2wpCi0JCXJl dHVybiBFUlJfUFRSKC1FTk9NRU0pOwotCi0JdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21h cChod3NwLT52bWEtPm9iaiwgSTkxNV9NQVBfV0IpOwotCWlmIChJU19FUlIodmFkZHIpKSB7Ci0J CWtmcmVlKGNsKTsKLQkJcmV0dXJuIEVSUl9DQVNUKHZhZGRyKTsKLQl9Ci0KLQljbC0+aHdzcCA9 IGh3c3A7Ci0JY2wtPnZhZGRyID0gcGFnZV9wYWNrX2JpdHModmFkZHIsIGNhY2hlbGluZSk7Ci0K LQlpOTE1X2FjdGl2ZV9pbml0KCZjbC0+YWN0aXZlLCBfX2NhY2hlbGluZV9hY3RpdmUsIF9fY2Fj aGVsaW5lX3JldGlyZSk7Ci0KLQlyZXR1cm4gY2w7Ci19Ci0KLXN0YXRpYyB2b2lkIGNhY2hlbGlu ZV9hY3F1aXJlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsLAotCQkJICAgICAg dTMyIGdndHRfb2Zmc2V0KQotewotCWlmICghY2wpCi0JCXJldHVybjsKLQotCWNsLT5nZ3R0X29m ZnNldCA9IGdndHRfb2Zmc2V0OwotCWk5MTVfYWN0aXZlX2FjcXVpcmUoJmNsLT5hY3RpdmUpOwot fQotCi1zdGF0aWMgdm9pZCBjYWNoZWxpbmVfcmVsZWFzZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmVf Y2FjaGVsaW5lICpjbCkKLXsKLQlpZiAoY2wpCi0JCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNsLT5h Y3RpdmUpOwotfQotCi1zdGF0aWMgdm9pZCBjYWNoZWxpbmVfZnJlZShzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmVfY2FjaGVsaW5lICpjbCkKLXsKLQlpZiAoIWk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVz eSgmY2wtPmFjdGl2ZSkpIHsKLQkJX19pZGxlX2NhY2hlbGluZV9mcmVlKGNsKTsKLQkJcmV0dXJu OwotCX0KLQotCUdFTV9CVUdfT04ocHRyX3Rlc3RfYml0KGNsLT52YWRkciwgQ0FDSEVMSU5FX0ZS RUUpKTsKLQljbC0+dmFkZHIgPSBwdHJfc2V0X2JpdChjbC0+dmFkZHIsIENBQ0hFTElORV9GUkVF KTsKLQotCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNsLT5hY3RpdmUpOwotfQotCiBzdGF0aWMgaW50 IGludGVsX3RpbWVsaW5lX2luaXQoc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSwKIAkJ CSAgICAgICBzdHJ1Y3QgaW50ZWxfZ3QgKmd0LAogCQkJICAgICAgIHN0cnVjdCBpOTE1X3ZtYSAq aHdzcCwKIAkJCSAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0KQogewogCXZvaWQgKnZhZGRyOwor CXUzMiAqc2Vxbm87CiAKIAlrcmVmX2luaXQoJnRpbWVsaW5lLT5rcmVmKTsKIAlhdG9taWNfc2V0 KCZ0aW1lbGluZS0+cGluX2NvdW50LCAwKTsKIAogCXRpbWVsaW5lLT5ndCA9IGd0OwogCi0JdGlt ZWxpbmUtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIgPSAhaHdzcDsKLQl0aW1lbGluZS0+aHdzcF9j YWNoZWxpbmUgPSBOVUxMOwotCi0JaWYgKCFod3NwKSB7Ci0JCXN0cnVjdCBpbnRlbF90aW1lbGlu ZV9jYWNoZWxpbmUgKmNsOwotCQl1bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwotCi0JCWh3c3AgPSBo d3NwX2FsbG9jKHRpbWVsaW5lLCAmY2FjaGVsaW5lKTsKKwlpZiAoaHdzcCkgeworCQl0aW1lbGlu ZS0+aHdzcF9vZmZzZXQgPSBvZmZzZXQ7CisJCXRpbWVsaW5lLT5od3NwX2dndHQgPSBpOTE1X3Zt YV9nZXQoaHdzcCk7CisJfSBlbHNlIHsKKwkJdGltZWxpbmUtPmhhc19pbml0aWFsX2JyZWFkY3J1 bWIgPSB0cnVlOworCQlod3NwID0gaHdzcF9hbGxvYyhndCk7CiAJCWlmIChJU19FUlIoaHdzcCkp CiAJCQlyZXR1cm4gUFRSX0VSUihod3NwKTsKLQotCQljbCA9IGNhY2hlbGluZV9hbGxvYyhod3Nw LT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCQlpZiAoSVNfRVJSKGNsKSkgewotCQkJX19pZGxlX2h3 c3BfZnJlZShod3NwLT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCQkJcmV0dXJuIFBUUl9FUlIoY2wp OwotCQl9Ci0KLQkJdGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lID0gY2w7Ci0JCXRpbWVsaW5lLT5o d3NwX29mZnNldCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsKLQotCQl2YWRkciA9IHBh Z2VfbWFza19iaXRzKGNsLT52YWRkcik7Ci0JfSBlbHNlIHsKLQkJdGltZWxpbmUtPmh3c3Bfb2Zm c2V0ID0gb2Zmc2V0OwotCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGh3c3AtPm9i aiwgSTkxNV9NQVBfV0IpOwotCQlpZiAoSVNfRVJSKHZhZGRyKSkKLQkJCXJldHVybiBQVFJfRVJS KHZhZGRyKTsKKwkJdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGh3c3A7CiAJfQogCi0JdGltZWxpbmUt Pmh3c3Bfc2Vxbm8gPQotCQltZW1zZXQodmFkZHIgKyB0aW1lbGluZS0+aHdzcF9vZmZzZXQsIDAs IENBQ0hFTElORV9CWVRFUyk7CisJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcChod3Nw LT5vYmosIEk5MTVfTUFQX1dCKTsKKwlpZiAoSVNfRVJSKHZhZGRyKSkKKwkJcmV0dXJuIFBUUl9F UlIodmFkZHIpOworCisJdGltZWxpbmUtPmh3c3BfbWFwID0gdmFkZHI7CisJc2Vxbm8gPSB2YWRk ciArIHRpbWVsaW5lLT5od3NwX29mZnNldDsKKwlXUklURV9PTkNFKCpzZXFubywgMCk7CisJdGlt ZWxpbmUtPmh3c3Bfc2Vxbm8gPSBzZXFubzsKIAotCXRpbWVsaW5lLT5od3NwX2dndHQgPSBpOTE1 X3ZtYV9nZXQoaHdzcCk7CiAJR0VNX0JVR19PTih0aW1lbGluZS0+aHdzcF9vZmZzZXQgPj0gaHdz cC0+c2l6ZSk7CiAKIAl0aW1lbGluZS0+ZmVuY2VfY29udGV4dCA9IGRtYV9mZW5jZV9jb250ZXh0 X2FsbG9jKDEpOwpAQCAtMjY4LDYgKzk1LDcgQEAgc3RhdGljIGludCBpbnRlbF90aW1lbGluZV9p bml0KHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUsCiAJSU5JVF9MSVNUX0hFQUQoJnRp bWVsaW5lLT5yZXF1ZXN0cyk7CiAKIAlpOTE1X3N5bmNtYXBfaW5pdCgmdGltZWxpbmUtPnN5bmMp OworCWk5MTVfYWN0aXZlX2luaXQoJnRpbWVsaW5lLT5hY3RpdmUsIF9fdGltZWxpbmVfYWN0aXZl LCBfX3RpbWVsaW5lX3JldGlyZSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTI3OCwyMyArMTA2LDE4 IEBAIHZvaWQgaW50ZWxfZ3RfaW5pdF90aW1lbGluZXMoc3RydWN0IGludGVsX2d0ICpndCkKIAog CXNwaW5fbG9ja19pbml0KCZ0aW1lbGluZXMtPmxvY2spOwogCUlOSVRfTElTVF9IRUFEKCZ0aW1l bGluZXMtPmFjdGl2ZV9saXN0KTsKLQotCXNwaW5fbG9ja19pbml0KCZ0aW1lbGluZXMtPmh3c3Bf bG9jayk7Ci0JSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lcy0+aHdzcF9mcmVlX2xpc3QpOwogfQog Ci1zdGF0aWMgdm9pZCBpbnRlbF90aW1lbGluZV9maW5pKHN0cnVjdCBpbnRlbF90aW1lbGluZSAq dGltZWxpbmUpCitzdGF0aWMgdm9pZCBpbnRlbF90aW1lbGluZV9maW5pKHN0cnVjdCByY3VfaGVh ZCAqcmN1KQogewotCUdFTV9CVUdfT04oYXRvbWljX3JlYWQoJnRpbWVsaW5lLT5waW5fY291bnQp KTsKLQlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0aW1lbGluZS0+cmVxdWVzdHMpKTsKLQlHRU1f QlVHX09OKHRpbWVsaW5lLT5yZXRpcmUpOworCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxp bmUgPQorCQljb250YWluZXJfb2YocmN1LCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUsIHJjdSk7CiAK LQlpZiAodGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lKQotCQljYWNoZWxpbmVfZnJlZSh0aW1lbGlu ZS0+aHdzcF9jYWNoZWxpbmUpOwotCWVsc2UKLQkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcCh0 aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmopOworCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAodGlt ZWxpbmUtPmh3c3BfZ2d0dC0+b2JqKTsKIAogCWk5MTVfdm1hX3B1dCh0aW1lbGluZS0+aHdzcF9n Z3R0KTsKKwlpOTE1X2FjdGl2ZV9maW5pKCZ0aW1lbGluZS0+YWN0aXZlKTsKKwlrZnJlZSh0aW1l bGluZSk7CiB9CiAKIHN0cnVjdCBpbnRlbF90aW1lbGluZSAqCkBAIC0zNjAsOSArMTgzLDkgQEAg aW50IGludGVsX3RpbWVsaW5lX3BpbihzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLCBzdHJ1Y3Qg aTkxNV9nZW1fd3dfY3R4ICp3dykKIAlHVF9UUkFDRSh0bC0+Z3QsICJ0aW1lbGluZTolbGx4IHVz aW5nIEhXU1Agb2Zmc2V0OiV4XG4iLAogCQkgdGwtPmZlbmNlX2NvbnRleHQsIHRsLT5od3NwX29m ZnNldCk7CiAKLQljYWNoZWxpbmVfYWNxdWlyZSh0bC0+aHdzcF9jYWNoZWxpbmUsIHRsLT5od3Nw X29mZnNldCk7CisJaTkxNV9hY3RpdmVfYWNxdWlyZSgmdGwtPmFjdGl2ZSk7CiAJaWYgKGF0b21p Y19mZXRjaF9pbmMoJnRsLT5waW5fY291bnQpKSB7Ci0JCWNhY2hlbGluZV9yZWxlYXNlKHRsLT5o d3NwX2NhY2hlbGluZSk7CisJCWk5MTVfYWN0aXZlX3JlbGVhc2UoJnRsLT5hY3RpdmUpOwogCQlf X2k5MTVfdm1hX3VucGluKHRsLT5od3NwX2dndHQpOwogCX0KIApAQCAtMzcxLDkgKzE5NCwxMyBA QCBpbnQgaW50ZWxfdGltZWxpbmVfcGluKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsIHN0cnVj dCBpOTE1X2dlbV93d19jdHggKnd3KQogCiB2b2lkIGludGVsX3RpbWVsaW5lX3Jlc2V0X3NlcW5v KGNvbnN0IHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwpCiB7CisJdTMyICpod3NwX3NlcW5vID0g KHUzMiAqKXRsLT5od3NwX3NlcW5vOwogCS8qIE11c3QgYmUgcGlubmVkIHRvIGJlIHdyaXRhYmxl LCBhbmQgbm8gcmVxdWVzdHMgaW4gZmxpZ2h0LiAqLwogCUdFTV9CVUdfT04oIWF0b21pY19yZWFk KCZ0bC0+cGluX2NvdW50KSk7Ci0JV1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCB0 bC0+c2Vxbm8pOworCisJbWVtc2V0KGh3c3Bfc2Vxbm8gKyAxLCAwLCBUSU1FTElORV9TRVFOT19C WVRFUyAtIHNpemVvZigqaHdzcF9zZXFubykpOworCVdSSVRFX09OQ0UoKmh3c3Bfc2Vxbm8sIHRs LT5zZXFubyk7CisJY2xmbHVzaChod3NwX3NlcW5vKTsKIH0KIAogdm9pZCBpbnRlbF90aW1lbGlu ZV9lbnRlcihzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQpAQCAtNDQ5LDEwNiArMjc2LDIzIEBA IHN0YXRpYyB1MzIgdGltZWxpbmVfYWR2YW5jZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQog CXJldHVybiB0bC0+c2Vxbm8gKz0gMSArIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iOwogfQog Ci1zdGF0aWMgdm9pZCB0aW1lbGluZV9yb2xsYmFjayhzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRs KQotewotCXRsLT5zZXFubyAtPSAxICsgdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWI7Ci19Ci0K IHN0YXRpYyBub2lubGluZSBpbnQKIF9faW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGwsCi0JCQkgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwKIAkJCSAg IHUzMiAqc2Vxbm8pCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7Ci0J dW5zaWduZWQgaW50IGNhY2hlbGluZTsKLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKLQl2b2lkICp2 YWRkcjsKLQlpbnQgZXJyOwotCi0JbWlnaHRfbG9jaygmdGwtPmd0LT5nZ3R0LT52bS5tdXRleCk7 Ci0JR1RfVFJBQ0UodGwtPmd0LCAidGltZWxpbmU6JWxseCB3cmFwcGVkXG4iLCB0bC0+ZmVuY2Vf Y29udGV4dCk7Ci0KLQkvKgotCSAqIElmIHRoZXJlIGlzIGFuIG91dHN0YW5kaW5nIEdQVSByZWZl cmVuY2UgdG8gdGhpcyBjYWNoZWxpbmUsCi0JICogc3VjaCBhcyBpdCBiZWluZyBzYW1wbGVkIGJ5 IGEgSFcgc2VtYXBob3JlIG9uIGFub3RoZXIgdGltZWxpbmUsCi0JICogd2UgY2Fubm90IHdyYXBh cm91bmQgb3VyIHNlcW5vIHZhbHVlICh0aGUgSFcgc2VtYXBob3JlIGRvZXMKLQkgKiBhIHN0cmlj dCBncmVhdGVyLXRoYW4tb3ItZXF1YWxzIGNvbXBhcmUsIG5vdCBpOTE1X3NlcW5vX3Bhc3NlZCku Ci0JICogU28gaWYgdGhlIGNhY2hlbGluZSBpcyBzdGlsbCBidXN5LCB3ZSBtdXN0IGRldGFjaCBv dXJzZWx2ZXMKLQkgKiBmcm9tIGl0IGFuZCBsZWF2ZSBpdCBpbmZsaWdodCBhbG9uZ3NpZGUgaXRz IHVzZXJzLgotCSAqCi0JICogSG93ZXZlciwgaWYgbm9ib2R5IGlzIHdhdGNoaW5nIGFuZCB3ZSBj YW4gZ3VhcmFudGVlIHRoYXQgbm9ib2R5Ci0JICogd2lsbCwgd2UgY291bGQgc2ltcGx5IHJldXNl IHRoZSBzYW1lIGNhY2hlbGluZS4KLQkgKgotCSAqIGlmIChpOTE1X2FjdGl2ZV9yZXF1ZXN0X2lz X3NpZ25hbGVkKCZ0bC0+bGFzdF9yZXF1ZXN0KSAmJgotCSAqICAgICBpOTE1X2FjdGl2ZV9pc19z aWduYWxlZCgmdGwtPmh3c3BfY2FjaGVsaW5lLT5hY3RpdmUpKQotCSAqCXJldHVybiAwOwotCSAq Ci0JICogVGhhdCBzZWVtcyB1bmxpa2VseSBmb3IgYSBidXN5IHRpbWVsaW5lIHRoYXQgbmVlZGVk IHRvIHdyYXAgaW4KLQkgKiB0aGUgZmlyc3QgcGxhY2UsIHNvIGp1c3QgcmVwbGFjZSB0aGUgY2Fj aGVsaW5lLgotCSAqLwotCi0Jdm1hID0gaHdzcF9hbGxvYyh0bCwgJmNhY2hlbGluZSk7Ci0JaWYg KElTX0VSUih2bWEpKSB7Ci0JCWVyciA9IFBUUl9FUlIodm1hKTsKLQkJZ290byBlcnJfcm9sbGJh Y2s7Ci0JfQotCi0JZXJyID0gaTkxNV9nZ3R0X3Bpbih2bWEsIE5VTEwsIDAsIFBJTl9ISUdIKTsK LQlpZiAoZXJyKSB7Ci0JCV9faWRsZV9od3NwX2ZyZWUodm1hLT5wcml2YXRlLCBjYWNoZWxpbmUp OwotCQlnb3RvIGVycl9yb2xsYmFjazsKLQl9CisJdTMyIG5leHRfb2ZzID0gb2Zmc2V0X2luX3Bh Z2UodGwtPmh3c3Bfb2Zmc2V0ICsgVElNRUxJTkVfU0VRTk9fQllURVMpOwogCi0JY2wgPSBjYWNo ZWxpbmVfYWxsb2Modm1hLT5wcml2YXRlLCBjYWNoZWxpbmUpOwotCWlmIChJU19FUlIoY2wpKSB7 Ci0JCWVyciA9IFBUUl9FUlIoY2wpOwotCQlfX2lkbGVfaHdzcF9mcmVlKHZtYS0+cHJpdmF0ZSwg Y2FjaGVsaW5lKTsKLQkJZ290byBlcnJfdW5waW47Ci0JfQotCUdFTV9CVUdfT04oY2wtPmh3c3At PnZtYSAhPSB2bWEpOwotCi0JLyoKLQkgKiBBdHRhY2ggdGhlIG9sZCBjYWNoZWxpbmUgdG8gdGhl IGN1cnJlbnQgcmVxdWVzdCwgc28gdGhhdCB3ZSBvbmx5Ci0JICogZnJlZSBpdCBhZnRlciB0aGUg Y3VycmVudCByZXF1ZXN0IGlzIHJldGlyZWQsIHdoaWNoIGVuc3VyZXMgdGhhdAotCSAqIGFsbCB3 cml0ZXMgaW50byB0aGUgY2FjaGVsaW5lIGZyb20gcHJldmlvdXMgcmVxdWVzdHMgYXJlIGNvbXBs ZXRlLgotCSAqLwotCWVyciA9IGk5MTVfYWN0aXZlX3JlZigmdGwtPmh3c3BfY2FjaGVsaW5lLT5h Y3RpdmUsCi0JCQkgICAgICB0bC0+ZmVuY2VfY29udGV4dCwKLQkJCSAgICAgICZycS0+ZmVuY2Up OwotCWlmIChlcnIpCi0JCWdvdG8gZXJyX2NhY2hlbGluZTsKKwkvKiB3L2E6IGJpdCA1IG5lZWRz IHRvIGJlIHplcm8gZm9yIE1JX0ZMVVNIX0RXIGFkZHJlc3MuICovCisJaWYgKFRJTUVMSU5FX1NF UU5PX0JZVEVTIDw9IEJJVCg1KSAmJiAobmV4dF9vZnMgJiBCSVQoNSkpKQorCQluZXh0X29mcyA9 IG9mZnNldF9pbl9wYWdlKG5leHRfb2ZzICsgQklUKDUpKTsKIAotCWNhY2hlbGluZV9yZWxlYXNl KHRsLT5od3NwX2NhY2hlbGluZSk7IC8qIG93bmVyc2hpcCBub3cgeGZlcmVkIHRvIHJxICovCi0J Y2FjaGVsaW5lX2ZyZWUodGwtPmh3c3BfY2FjaGVsaW5lKTsKLQotCWk5MTVfdm1hX3VucGluKHRs LT5od3NwX2dndHQpOyAvKiBiaW5kaW5nIGtlcHQgYWxpdmUgYnkgb2xkIGNhY2hlbGluZSAqLwot CWk5MTVfdm1hX3B1dCh0bC0+aHdzcF9nZ3R0KTsKLQotCXRsLT5od3NwX2dndHQgPSBpOTE1X3Zt YV9nZXQodm1hKTsKLQotCXZhZGRyID0gcGFnZV9tYXNrX2JpdHMoY2wtPnZhZGRyKTsKLQl0bC0+ aHdzcF9vZmZzZXQgPSBjYWNoZWxpbmUgKiBDQUNIRUxJTkVfQllURVM7Ci0JdGwtPmh3c3Bfc2Vx bm8gPQotCQltZW1zZXQodmFkZHIgKyB0bC0+aHdzcF9vZmZzZXQsIDAsIENBQ0hFTElORV9CWVRF Uyk7Ci0KLQl0bC0+aHdzcF9vZmZzZXQgKz0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwotCUdUX1RS QUNFKHRsLT5ndCwgInRpbWVsaW5lOiVsbHggdXNpbmcgSFdTUCBvZmZzZXQ6JXhcbiIsCi0JCSB0 bC0+ZmVuY2VfY29udGV4dCwgdGwtPmh3c3Bfb2Zmc2V0KTsKLQotCWNhY2hlbGluZV9hY3F1aXJl KGNsLCB0bC0+aHdzcF9vZmZzZXQpOwotCXRsLT5od3NwX2NhY2hlbGluZSA9IGNsOworCXRsLT5o d3NwX29mZnNldCA9IGk5MTVfZ2d0dF9vZmZzZXQodGwtPmh3c3BfZ2d0dCkgKyBuZXh0X29mczsK Kwl0bC0+aHdzcF9zZXFubyA9IHRsLT5od3NwX21hcCArIG5leHRfb2ZzOworCWludGVsX3RpbWVs aW5lX3Jlc2V0X3NlcW5vKHRsKTsKIAogCSpzZXFubyA9IHRpbWVsaW5lX2FkdmFuY2UodGwpOwog CUdFTV9CVUdfT04oaTkxNV9zZXFub19wYXNzZWQoKnRsLT5od3NwX3NlcW5vLCAqc2Vxbm8pKTsK IAlyZXR1cm4gMDsKLQotZXJyX2NhY2hlbGluZToKLQljYWNoZWxpbmVfZnJlZShjbCk7Ci1lcnJf dW5waW46Ci0JaTkxNV92bWFfdW5waW4odm1hKTsKLWVycl9yb2xsYmFjazoKLQl0aW1lbGluZV9y b2xsYmFjayh0bCk7Ci0JcmV0dXJuIGVycjsKIH0KIAogaW50IGludGVsX3RpbWVsaW5lX2dldF9z ZXFubyhzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLApAQCAtNTU4LDUxICszMDIsNTIgQEAgaW50 IGludGVsX3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAogCSpz ZXFubyA9IHRpbWVsaW5lX2FkdmFuY2UodGwpOwogCiAJLyogUmVwbGFjZSB0aGUgSFdTUCBvbiB3 cmFwYXJvdW5kIGZvciBIVyBzZW1hcGhvcmVzICovCi0JaWYgKHVubGlrZWx5KCEqc2Vxbm8gJiYg dGwtPmh3c3BfY2FjaGVsaW5lKSkKLQkJcmV0dXJuIF9faW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5v KHRsLCBycSwgc2Vxbm8pOworCWlmICh1bmxpa2VseSghKnNlcW5vICYmIHRsLT5oYXNfaW5pdGlh bF9icmVhZGNydW1iKSkKKwkJcmV0dXJuIF9faW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHRsLCBz ZXFubyk7CiAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjYWNoZWxpbmVfcmVmKHN0cnVj dCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsLAotCQkJIHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxKQotewotCXJldHVybiBpOTE1X2FjdGl2ZV9hZGRfcmVxdWVzdCgmY2wtPmFjdGl2ZSwgcnEp OwotfQotCiBpbnQgaW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KmZyb20sCiAJCQkgICAgIHN0cnVjdCBpOTE1X3JlcXVlc3QgKnRvLAogCQkJICAgICB1MzIgKmh3 c3ApCiB7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7CisJc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bDsKIAlpbnQgZXJyOwogCi0JR0VNX0JVR19PTighcmN1X2FjY2Vzc19w b2ludGVyKGZyb20tPmh3c3BfY2FjaGVsaW5lKSk7Ci0KIAlyY3VfcmVhZF9sb2NrKCk7Ci0JY2wg PSByY3VfZGVyZWZlcmVuY2UoZnJvbS0+aHdzcF9jYWNoZWxpbmUpOwotCWlmIChpOTE1X3JlcXVl c3Rfc2lnbmFsZWQoZnJvbSkpIC8qIGNvbmZpcm0gY2FjaGVsaW5lIGlzIHZhbGlkICovCi0JCWdv dG8gdW5sb2NrOwotCWlmICh1bmxpa2VseSghaTkxNV9hY3RpdmVfYWNxdWlyZV9pZl9idXN5KCZj bC0+YWN0aXZlKSkpCi0JCWdvdG8gdW5sb2NrOyAvKiBzZXFubyB3cmFwcGVkIGFuZCBjb21wbGV0 ZWQhICovCi0JaWYgKHVubGlrZWx5KF9faTkxNV9yZXF1ZXN0X2lzX2NvbXBsZXRlKGZyb20pKSkK LQkJZ290byByZWxlYXNlOworCXRsID0gcmN1X2RlcmVmZXJlbmNlKGZyb20tPnRpbWVsaW5lKTsK KwlpZiAoaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKGZyb20pIHx8CisJICAgICFpOTE1X2FjdGl2ZV9h Y3F1aXJlX2lmX2J1c3koJnRsLT5hY3RpdmUpKQorCQl0bCA9IE5VTEw7CisKKwlpZiAodGwpIHsK KwkJLyogaHdzcF9vZmZzZXQgbWF5IHdyYXBhcm91bmQsIHNvIHVzZSBmcm9tLT5od3NwX3NlcW5v ICovCisJCSpod3NwID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArCisJCQlvZmZz ZXRfaW5fcGFnZShmcm9tLT5od3NwX3NlcW5vKTsKKwl9CisKKwkvKiBlbnN1cmUgd2Ugd2FpdCBv biB0aGUgcmlnaHQgcmVxdWVzdCwgaWYgbm90LCB3ZSBjb21wbGV0ZWQgKi8KKwlpZiAodGwgJiYg X19pOTE1X3JlcXVlc3RfaXNfY29tcGxldGUoZnJvbSkpIHsKKwkJaTkxNV9hY3RpdmVfcmVsZWFz ZSgmdGwtPmFjdGl2ZSk7CisJCXRsID0gTlVMTDsKKwl9CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiAK LQllcnIgPSBjYWNoZWxpbmVfcmVmKGNsLCB0byk7Ci0JaWYgKGVycikKKwlpZiAoIXRsKQorCQly ZXR1cm4gMTsKKworCS8qIENhbid0IGRvIHNlbWFwaG9yZSB3YWl0cyBvbiBrZXJuZWwgY29udGV4 dCAqLworCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpIHsKKwkJZXJyID0gLUVJTlZB TDsKIAkJZ290byBvdXQ7CisJfQorCisJZXJyID0gaTkxNV9hY3RpdmVfYWRkX3JlcXVlc3QoJnRs LT5hY3RpdmUsIHRvKTsKIAotCSpod3NwID0gY2wtPmdndHRfb2Zmc2V0Owogb3V0OgotCWk5MTVf YWN0aXZlX3JlbGVhc2UoJmNsLT5hY3RpdmUpOworCWk5MTVfYWN0aXZlX3JlbGVhc2UoJnRsLT5h Y3RpdmUpOwogCXJldHVybiBlcnI7Ci0KLXJlbGVhc2U6Ci0JaTkxNV9hY3RpdmVfcmVsZWFzZSgm Y2wtPmFjdGl2ZSk7Ci11bmxvY2s6Ci0JcmN1X3JlYWRfdW5sb2NrKCk7Ci0JcmV0dXJuIDE7CiB9 CiAKIHZvaWQgaW50ZWxfdGltZWxpbmVfdW5waW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkK QEAgLTYxMSw4ICszNTYsNyBAQCB2b2lkIGludGVsX3RpbWVsaW5lX3VucGluKHN0cnVjdCBpbnRl bF90aW1lbGluZSAqdGwpCiAJaWYgKCFhdG9taWNfZGVjX2FuZF90ZXN0KCZ0bC0+cGluX2NvdW50 KSkKIAkJcmV0dXJuOwogCi0JY2FjaGVsaW5lX3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5lKTsK LQorCWk5MTVfYWN0aXZlX3JlbGVhc2UoJnRsLT5hY3RpdmUpOwogCV9faTkxNV92bWFfdW5waW4o dGwtPmh3c3BfZ2d0dCk7CiB9CiAKQEAgLTYyMSw4ICszNjUsMTEgQEAgdm9pZCBfX2ludGVsX3Rp bWVsaW5lX2ZyZWUoc3RydWN0IGtyZWYgKmtyZWYpCiAJc3RydWN0IGludGVsX3RpbWVsaW5lICp0 aW1lbGluZSA9CiAJCWNvbnRhaW5lcl9vZihrcmVmLCB0eXBlb2YoKnRpbWVsaW5lKSwga3JlZik7 CiAKLQlpbnRlbF90aW1lbGluZV9maW5pKHRpbWVsaW5lKTsKLQlrZnJlZV9yY3UodGltZWxpbmUs IHJjdSk7CisJR0VNX0JVR19PTihhdG9taWNfcmVhZCgmdGltZWxpbmUtPnBpbl9jb3VudCkpOwor CUdFTV9CVUdfT04oIWxpc3RfZW1wdHkoJnRpbWVsaW5lLT5yZXF1ZXN0cykpOworCUdFTV9CVUdf T04odGltZWxpbmUtPnJldGlyZSk7CisKKwljYWxsX3JjdSgmdGltZWxpbmUtPnJjdSwgaW50ZWxf dGltZWxpbmVfZmluaSk7CiB9CiAKIHZvaWQgaW50ZWxfZ3RfZmluaV90aW1lbGluZXMoc3RydWN0 IGludGVsX2d0ICpndCkKQEAgLTYzMCw3ICszNzcsNiBAQCB2b2lkIGludGVsX2d0X2ZpbmlfdGlt ZWxpbmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QpCiAJc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAq dGltZWxpbmVzID0gJmd0LT50aW1lbGluZXM7CiAKIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZ0 aW1lbGluZXMtPmFjdGl2ZV9saXN0KSk7Ci0JR0VNX0JVR19PTighbGlzdF9lbXB0eSgmdGltZWxp bmVzLT5od3NwX2ZyZWVfbGlzdCkpOwogfQogCiB2b2lkIGludGVsX2d0X3Nob3dfdGltZWxpbmVz KHN0cnVjdCBpbnRlbF9ndCAqZ3QsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9pbnRlbF90aW1lbGluZV90eXBlcy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxf dGltZWxpbmVfdHlwZXMuaAppbmRleCA5ZjY3N2M5YjdkMDYuLjc0ZTY3ZGJmODljNSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfdGltZWxpbmVfdHlwZXMuaAorKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oCkBAIC0xNyw3 ICsxNyw2IEBACiBzdHJ1Y3QgaTkxNV92bWE7CiBzdHJ1Y3QgaTkxNV9zeW5jbWFwOwogc3RydWN0 IGludGVsX2d0Owotc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3A7CiAKIHN0cnVjdCBpbnRlbF90 aW1lbGluZSB7CiAJdTY0IGZlbmNlX2NvbnRleHQ7CkBAIC00NCwxMiArNDMsMTEgQEAgc3RydWN0 IGludGVsX3RpbWVsaW5lIHsKIAlhdG9taWNfdCBwaW5fY291bnQ7CiAJYXRvbWljX3QgYWN0aXZl X2NvdW50OwogCisJdm9pZCAqaHdzcF9tYXA7CiAJY29uc3QgdTMyICpod3NwX3NlcW5vOwogCXN0 cnVjdCBpOTE1X3ZtYSAqaHdzcF9nZ3R0OwogCXUzMiBod3NwX29mZnNldDsKIAotCXN0cnVjdCBp bnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmh3c3BfY2FjaGVsaW5lOwotCiAJYm9vbCBoYXNfaW5p dGlhbF9icmVhZGNydW1iOwogCiAJLyoqCkBAIC02Niw2ICs2NCw4IEBAIHN0cnVjdCBpbnRlbF90 aW1lbGluZSB7CiAJICovCiAJc3RydWN0IGk5MTVfYWN0aXZlX2ZlbmNlIGxhc3RfcmVxdWVzdDsK IAorCXN0cnVjdCBpOTE1X2FjdGl2ZSBhY3RpdmU7CisKIAkvKiogQSBjaGFpbiBvZiBjb21wbGV0 ZWQgdGltZWxpbmVzIHJlYWR5IGZvciBlYXJseSByZXRpcmVtZW50LiAqLwogCXN0cnVjdCBpbnRl bF90aW1lbGluZSAqcmV0aXJlOwogCkBAIC04OSwxNSArODksNCBAQCBzdHJ1Y3QgaW50ZWxfdGlt ZWxpbmUgewogCXN0cnVjdCByY3VfaGVhZCByY3U7CiB9OwogCi1zdHJ1Y3QgaW50ZWxfdGltZWxp bmVfY2FjaGVsaW5lIHsKLQlzdHJ1Y3QgaTkxNV9hY3RpdmUgYWN0aXZlOwotCi0Jc3RydWN0IGlu dGVsX3RpbWVsaW5lX2h3c3AgKmh3c3A7Ci0Jdm9pZCAqdmFkZHI7Ci0KLQl1MzIgZ2d0dF9vZmZz ZXQ7Ci0KLQlzdHJ1Y3QgcmN1X2hlYWQgcmN1OwotfTsKLQogI2VuZGlmIC8qIF9fSTkxNV9USU1F TElORV9UWVBFU19IX18gKi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3Nl bGZ0ZXN0X2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5n aW5lX2NzLmMKaW5kZXggODRkODgzZGUzMGVlLi43ZTQ2NmFlMTE0ZjggMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jCkBAIC00MSw2ICs0MSw5IEBAIHN0 YXRpYyBpbnQgcGVyZl9lbmQoc3RydWN0IGludGVsX2d0ICpndCkKIAogc3RhdGljIGludCB3cml0 ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQogeworCXN0cnVj dCBpbnRlbF90aW1lbGluZSAqdGwgPQorCQlyY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJxLT50 aW1lbGluZSwKKwkJCQkJICAhaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJxKSk7CiAJdTMyIGNtZDsK IAl1MzIgKmNzOwogCkBAIC01Myw3ICs1Niw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfdGltZXN0YW1w KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgc2xvdCkKIAkJY21kKys7CiAJKmNzKysgPSBj bWQ7CiAJKmNzKysgPSBpOTE1X21taW9fcmVnX29mZnNldChSSU5HX1RJTUVTVEFNUChycS0+ZW5n aW5lLT5tbWlvX2Jhc2UpKTsKLQkqY3MrKyA9IGk5MTVfcmVxdWVzdF90aW1lbGluZShycSktPmh3 c3Bfb2Zmc2V0ICsgc2xvdCAqIHNpemVvZih1MzIpOworCSpjcysrID0gdGwtPmh3c3Bfb2Zmc2V0 ICsgc2xvdCAqIHNpemVvZih1MzIpOwogCSpjcysrID0gMDsKIAogCWludGVsX3JpbmdfYWR2YW5j ZShycSwgY3MpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3Rf dGltZWxpbmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMK aW5kZXggZDI4M2RjZTViNGFjLi5hNGM3ODA2MmU5MmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwpAQCAtNjY1LDcgKzY2NSw3IEBAIHN0YXRpYyBpbnQg bGl2ZV9od3NwX3dyYXAodm9pZCAqYXJnKQogCWlmIChJU19FUlIodGwpKQogCQlyZXR1cm4gUFRS X0VSUih0bCk7CiAKLQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdz cF9jYWNoZWxpbmUpCisJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikKIAkJZ290byBv dXRfZnJlZTsKIAogCWVyciA9IGludGVsX3RpbWVsaW5lX3Bpbih0bCwgTlVMTCk7CkBAIC04MzIs MTIgKzgzMiwyNiBAQCBzdGF0aWMgaW50IHNldHVwX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hl ciAqdywgc3RydWN0IGludGVsX2d0ICpndCkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIHZvaWQg c3dpdGNoX3RsX2xvY2soc3RydWN0IGk5MTVfcmVxdWVzdCAqZnJvbSwgc3RydWN0IGk5MTVfcmVx dWVzdCAqdG8pCit7CisJLyogc29tZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhp bmsgY28tcm91dGluZXMgKi8KKworCWlmIChmcm9tKSB7CisJCWxvY2tkZXBfdW5waW5fbG9jaygm ZnJvbS0+Y29udGV4dC0+dGltZWxpbmUtPm11dGV4LCBmcm9tLT5jb29raWUpOworCQltdXRleF91 bmxvY2soJmZyb20tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJfQorCisJaWYgKHRvKSB7 CisJCW11dGV4X2xvY2soJnRvLT5jb250ZXh0LT50aW1lbGluZS0+bXV0ZXgpOworCQl0by0+Y29v a2llID0gbG9ja2RlcF9waW5fbG9jaygmdG8tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJ fQorfQorCiBzdGF0aWMgaW50IGNyZWF0ZV93YXRjaGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncs CiAJCQkgIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKIAkJCSAgaW50IHJpbmdzeikK IHsKIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bDsKIAogCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUoZW5naW5lKTsKIAlpZiAoSVNfRVJSKGNl KSkKQEAgLTg1MCwxMSArODY0LDggQEAgc3RhdGljIGludCBjcmVhdGVfd2F0Y2hlcihzdHJ1Y3Qg aHdzcF93YXRjaGVyICp3LAogCQlyZXR1cm4gUFRSX0VSUih3LT5ycSk7CiAKIAl3LT5hZGRyID0g aTkxNV9nZ3R0X29mZnNldCh3LT52bWEpOwotCXRsID0gdy0+cnEtPmNvbnRleHQtPnRpbWVsaW5l OwogCi0JLyogc29tZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhpbmsgY28tcm91 dGluZXMgKi8KLQlsb2NrZGVwX3VucGluX2xvY2soJnRsLT5tdXRleCwgdy0+cnEtPmNvb2tpZSk7 Ci0JbXV0ZXhfdW5sb2NrKCZ0bC0+bXV0ZXgpOworCXN3aXRjaF90bF9sb2NrKHctPnJxLCBOVUxM KTsKIAogCXJldHVybiAwOwogfQpAQCAtODYzLDE1ICs4NzQsMTMgQEAgc3RhdGljIGludCBjaGVj a193YXRjaGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncsIGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkg Ym9vbCAoKm9wKSh1MzIgaHdzcCwgdTMyIHNlcW5vKSkKIHsKIAlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSA9IGZldGNoX2FuZF96ZXJvKCZ3LT5ycSk7Ci0Jc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bCA9IHJxLT5jb250ZXh0LT50aW1lbGluZTsKIAl1MzIgb2Zmc2V0LCBlbmQ7CiAJaW50IGVycjsK IAogCUdFTV9CVUdfT04ody0+YWRkciAtIGk5MTVfZ2d0dF9vZmZzZXQody0+dm1hKSA+IHctPnZt YS0+c2l6ZSk7CiAKIAlpOTE1X3JlcXVlc3RfZ2V0KHJxKTsKLQltdXRleF9sb2NrKCZ0bC0+bXV0 ZXgpOwotCXJxLT5jb29raWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZ0bC0+bXV0ZXgpOworCXN3aXRj aF90bF9sb2NrKE5VTEwsIHJxKTsKIAlpOTE1X3JlcXVlc3RfYWRkKHJxKTsKIAogCWlmIChpOTE1 X3JlcXVlc3Rfd2FpdChycSwgMCwgSFopIDwgMCkgewpAQCAtOTAwLDEwICs5MDksNyBAQCBzdGF0 aWMgaW50IGNoZWNrX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywgY29uc3QgY2hhciAq bmFtZSwKIHN0YXRpYyB2b2lkIGNsZWFudXBfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVyICp3 KQogewogCWlmICh3LT5ycSkgewotCQlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsID0gdy0+cnEt PmNvbnRleHQtPnRpbWVsaW5lOwotCi0JCW11dGV4X2xvY2soJnRsLT5tdXRleCk7Ci0JCXctPnJx LT5jb29raWUgPSBsb2NrZGVwX3Bpbl9sb2NrKCZ0bC0+bXV0ZXgpOworCQlzd2l0Y2hfdGxfbG9j ayhOVUxMLCB3LT5ycSk7CiAKIAkJaTkxNV9yZXF1ZXN0X2FkZCh3LT5ycSk7CiAJfQpAQCAtOTQx LDcgKzk0Nyw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp3cmFwX3RpbWVsaW5lKHN0 cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQogCX0KIAogCWk5MTVfcmVxdWVzdF9wdXQocnEpOwotCXJx ID0gaW50ZWxfY29udGV4dF9jcmVhdGVfcmVxdWVzdChjZSk7CisJcnEgPSBpOTE1X3JlcXVlc3Rf Y3JlYXRlKGNlKTsKIAlpZiAoSVNfRVJSKHJxKSkKIAkJcmV0dXJuIHJxOwogCkBAIC05NzYsNyAr OTgyLDcgQEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCiAJaWYgKElTX0VS Uih0bCkpCiAJCXJldHVybiBQVFJfRVJSKHRsKTsKIAotCWlmICghdGwtPmh3c3BfY2FjaGVsaW5l KQorCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpCiAJCWdvdG8gb3V0X2ZyZWU7CiAK IAlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRSh3YXRjaGVyKTsgaSsrKSB7CkBAIC05OTgsNyAr MTAwNCw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQlkbyB7CiAJ CQlzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqc3VibWl0OwogCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7Ci0JCQl1MzIgaHdzcDsKKwkJCXUzMiBod3NwLCBkdW1teTsKIAogCQkJc3VibWl0ID0gaGVh cF9mZW5jZV9jcmVhdGUoR0ZQX0tFUk5FTCk7CiAJCQlpZiAoIXN1Ym1pdCkgewpAQCAtMTAxNiwx NCArMTAyMiwyNiBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKIAkJCQln b3RvIG91dDsKIAkJCX0KIAotCQkJLyogU2tpcCB0byB0aGUgZW5kLCBzYXZpbmcgMzAgbWludXRl cyBvZiBub3BzICovCi0JCQl0bC0+c2Vxbm8gPSAtMTB1ICsgMiAqIChjb3VudCAmIDMpOwotCQkJ V1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCB0bC0+c2Vxbm8pOwogCQkJY2UtPnRp bWVsaW5lID0gaW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKIAotCQkJcnEgPSBpbnRlbF9jb250ZXh0 X2NyZWF0ZV9yZXF1ZXN0KGNlKTsKKwkJCS8qIEVuc3VyZSB0aW1lbGluZSBpcyBtYXBwZWQsIGRv bmUgZHVyaW5nIGZpcnN0IHBpbiAqLworCQkJZXJyID0gaW50ZWxfY29udGV4dF9waW4oY2UpOwor CQkJaWYgKGVycikgeworCQkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKKwkJCQlnb3RvIG91dDsK KwkJCX0KKworCQkJLyoKKwkJCSAqIFN0YXJ0IGF0IGEgbmV3IHdyYXAsIGFuZCBzZXQgc2Vxbm8g cmlnaHQgYmVmb3JlIGFub3RoZXIgd3JhcCwKKwkJCSAqIHNhdmluZyAzMCBtaW51dGVzIG9mIG5v cHMKKwkJCSAqLworCQkJdGwtPnNlcW5vID0gLTEydSArIDIgKiAoY291bnQgJiAzKTsKKwkJCV9f aW50ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHRsLCAmZHVtbXkpOworCisJCQlycSA9IGk5MTVfcmVx dWVzdF9jcmVhdGUoY2UpOwogCQkJaWYgKElTX0VSUihycSkpIHsKIAkJCQllcnIgPSBQVFJfRVJS KHJxKTsKKwkJCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1 dChjZSk7CiAJCQkJZ290byBvdXQ7CiAJCQl9CkBAIC0xMDMzLDMyICsxMDUxLDM1IEBAIHN0YXRp YyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQogCQkJCQkJCSAgICBHRlBfS0VSTkVMKTsK IAkJCWlmIChlcnIgPCAwKSB7CiAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJCQkJaW50ZWxf Y29udGV4dF91bnBpbihjZSk7CiAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCQkJCWdvdG8g b3V0OwogCQkJfQogCi0JCQltdXRleF9sb2NrKCZ3YXRjaGVyWzBdLnJxLT5jb250ZXh0LT50aW1l bGluZS0+bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2socnEsIHdhdGNoZXJbMF0ucnEpOwogCQkJ ZXJyID0gaW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHJxLCB3YXRjaGVyWzBdLnJxLCAmaHdzcCk7 CiAJCQlpZiAoZXJyID09IDApCiAJCQkJZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hlclswXS5y cSwgLyogYmVmb3JlICovCiAJCQkJCQkgICAgIHJxLT5mZW5jZS5zZXFubywgaHdzcCwKIAkJCQkJ CSAgICAgJndhdGNoZXJbMF0uYWRkcik7Ci0JCQltdXRleF91bmxvY2soJndhdGNoZXJbMF0ucnEt PmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7CisJCQlzd2l0Y2hfdGxfbG9jayh3YXRjaGVyWzBd LnJxLCBycSk7CiAJCQlpZiAoZXJyKSB7CiAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7CisJCQkJ aW50ZWxfY29udGV4dF91bnBpbihjZSk7CiAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwogCQkJ CWdvdG8gb3V0OwogCQkJfQogCi0JCQltdXRleF9sb2NrKCZ3YXRjaGVyWzFdLnJxLT5jb250ZXh0 LT50aW1lbGluZS0+bXV0ZXgpOworCQkJc3dpdGNoX3RsX2xvY2socnEsIHdhdGNoZXJbMV0ucnEp OwogCQkJZXJyID0gaW50ZWxfdGltZWxpbmVfcmVhZF9od3NwKHJxLCB3YXRjaGVyWzFdLnJxLCAm aHdzcCk7CiAJCQlpZiAoZXJyID09IDApCiAJCQkJZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hl clsxXS5ycSwgLyogYWZ0ZXIgKi8KIAkJCQkJCSAgICAgcnEtPmZlbmNlLnNlcW5vLCBod3NwLAog CQkJCQkJICAgICAmd2F0Y2hlclsxXS5hZGRyKTsKLQkJCW11dGV4X3VubG9jaygmd2F0Y2hlclsx XS5ycS0+Y29udGV4dC0+dGltZWxpbmUtPm11dGV4KTsKKwkJCXN3aXRjaF90bF9sb2NrKHdhdGNo ZXJbMV0ucnEsIHJxKTsKIAkJCWlmIChlcnIpIHsKIAkJCQlpOTE1X3JlcXVlc3RfYWRkKHJxKTsK KwkJCQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7 CiAJCQkJZ290byBvdXQ7CiAJCQl9CkBAIC0xMDY3LDYgKzEwODgsNyBAQCBzdGF0aWMgaW50IGxp dmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKIAkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwogCiAJCQly cSA9IHdyYXBfdGltZWxpbmUocnEpOworCQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7CiAJCQlp bnRlbF9jb250ZXh0X3B1dChjZSk7CiAJCQlpZiAoSVNfRVJSKHJxKSkgewogCQkJCWVyciA9IFBU Ul9FUlIocnEpOwpAQCAtMTEwNiw4ICsxMTI4LDggQEAgc3RhdGljIGludCBsaXZlX2h3c3BfcmVh ZCh2b2lkICphcmcpCiAJCQkgICAgMyAqIHdhdGNoZXJbMV0ucnEtPnJpbmctPnNpemUpCiAJCQkJ YnJlYWs7CiAKLQkJfSB3aGlsZSAoIV9faWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpKTsKLQkJ V1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCAweGRlYWRiZWVmKTsKKwkJfSB3aGls ZSAoIV9faWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpICYmCisJCQkgY291bnQgPCAoUEFHRV9T SVpFIC8gVElNRUxJTkVfU0VRTk9fQllURVMgLSAxKSAvIDIpOwogCiAJCXByX2luZm8oIiVzOiBz aW11bGF0ZWQgJWx1IHdyYXBzXG4iLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKIAkJZXJyID0gY2hl Y2tfd2F0Y2hlcigmd2F0Y2hlclsxXSwgImFmdGVyIiwgY21wX2d0ZSk7CkBAIC0xMTUyLDkgKzEx NzQsNyBAQCBzdGF0aWMgaW50IGxpdmVfaHdzcF9yb2xsb3Zlcl9rZXJuZWwodm9pZCAqYXJnKQog CQl9CiAKIAkJR0VNX0JVR19PTihpOTE1X2FjdGl2ZV9mZW5jZV9pc3NldCgmdGwtPmxhc3RfcmVx dWVzdCkpOwotCQl0bC0+c2Vxbm8gPSAwOwotCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7Ci0JCXRp bWVsaW5lX3JvbGxiYWNrKHRsKTsKKwkJdGwtPnNlcW5vID0gLTJ1OwogCQlXUklURV9PTkNFKCoo dTMyICopdGwtPmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7CiAKIAkJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUocnEpOyBpKyspIHsKQEAgLTEyMzQsMTEgKzEyNTQsMTAgQEAgc3RhdGljIGludCBs aXZlX2h3c3Bfcm9sbG92ZXJfdXNlcih2b2lkICphcmcpCiAJCQlnb3RvIG91dDsKIAogCQl0bCA9 IGNlLT50aW1lbGluZTsKLQkJaWYgKCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYiB8fCAhdGwt Pmh3c3BfY2FjaGVsaW5lKQorCQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQogCQkJ Z290byBvdXQ7CiAKLQkJdGltZWxpbmVfcm9sbGJhY2sodGwpOwotCQl0aW1lbGluZV9yb2xsYmFj ayh0bCk7CisJCXRsLT5zZXFubyA9IC00dTsKIAkJV1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3Nw X3NlcW5vLCB0bC0+c2Vxbm8pOwogCiAJCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJxKTsg aSsrKSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCmluZGV4IGU3YjRjNGJjNDFhNi4u NTlkOTQyOTEwNTU4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVl c3QuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwpAQCAtNzk0LDcg Kzc5NCw2IEBAIF9faTkxNV9yZXF1ZXN0X2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2Us IGdmcF90IGdmcCkKIAlycS0+ZmVuY2Uuc2Vxbm8gPSBzZXFubzsKIAogCVJDVV9JTklUX1BPSU5U RVIocnEtPnRpbWVsaW5lLCB0bCk7Ci0JUkNVX0lOSVRfUE9JTlRFUihycS0+aHdzcF9jYWNoZWxp bmUsIHRsLT5od3NwX2NhY2hlbGluZSk7CiAJcnEtPmh3c3Bfc2Vxbm8gPSB0bC0+aHdzcF9zZXFu bzsKIAlHRU1fQlVHX09OKF9faTkxNV9yZXF1ZXN0X2lzX2NvbXBsZXRlKHJxKSk7CiAKQEAgLTEw MzksOSArMTAzOCw2IEBAIGVtaXRfc2VtYXBob3JlX3dhaXQoc3RydWN0IGk5MTVfcmVxdWVzdCAq dG8sCiAJaWYgKGk5MTVfcmVxdWVzdF9oYXNfaW5pdGlhbF9icmVhZGNydW1iKHRvKSkKIAkJZ290 byBhd2FpdF9mZW5jZTsKIAotCWlmICghcmN1X2FjY2Vzc19wb2ludGVyKGZyb20tPmh3c3BfY2Fj aGVsaW5lKSkKLQkJZ290byBhd2FpdF9mZW5jZTsKLQogCS8qCiAJICogSWYgdGhpcyBvciBpdHMg ZGVwZW5kZW50cyBhcmUgd2FpdGluZyBvbiBhbiBleHRlcm5hbCBmZW5jZQogCSAqIHRoYXQgbWF5 IGZhaWwgY2F0YXN0cm9waGljYWxseSwgdGhlbiB3ZSB3YW50IHRvIGF2b2lkIHVzaW5nCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCmluZGV4IGRkMTBhNmRiM2QyMS4uMzgwNjI0OTViNjZm IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaApAQCAtMjM5LDE2ICsyMzksNiBAQCBz dHJ1Y3QgaTkxNV9yZXF1ZXN0IHsKIAkgKi8KIAljb25zdCB1MzIgKmh3c3Bfc2Vxbm87CiAKLQkv KgotCSAqIElmIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5vIGZvciB0aGlz IHJlcXVlc3QgaW4KLQkgKiBhbm90aGVyIHJlcXVlc3QsIHdlIG5lZWQgdG8ga2VlcCBhIHJlYWQg cmVmZXJlbmNlIHRvIHRoaXMgYXNzb2NpYXRlZAotCSAqIGNhY2hlbGluZSwgc28gdGhhdCB3ZSBk byBub3QgZnJlZSBhbmQgcmVjeWNsZSBpdCBiZWZvcmUgdGhlIGZvcmVpZ24KLQkgKiBvYnNlcnZl cnMgaGF2ZSBjb21wbGV0ZWQuIEhlbmNlLCB3ZSBrZWVwIGEgcG9pbnRlciB0byB0aGUgY2FjaGVs aW5lCi0JICogaW5zaWRlIHRoZSB0aW1lbGluZSdzIEhXU1Agdm1hLCBidXQgaXQgaXMgb25seSB2 YWxpZCB3aGlsZSB0aGlzCi0JICogcmVxdWVzdCBoYXMgbm90IGNvbXBsZXRlZCBhbmQgZ3VhcmRl ZCBieSB0aGUgdGltZWxpbmUgbXV0ZXguCi0JICovCi0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2Nh Y2hlbGluZSBfX3JjdSAqaHdzcF9jYWNoZWxpbmU7Ci0KIAkvKiogUG9zaXRpb24gaW4gdGhlIHJp bmcgb2YgdGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCiAJdTMyIGhlYWQ7CiAKQEAgLTY1MCw0 ICs2NDAsMjUgQEAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF91c2Vfc2VtYXBob3Jl cyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKIAlyZXR1cm4gaW50ZWxfZW5naW5lX2hh c19zZW1hcGhvcmVzKHJxLT5lbmdpbmUpOwogfQogCitzdGF0aWMgaW5saW5lIHUzMgoraTkxNV9y ZXF1ZXN0X2FjdGl2ZV9zZXFubyhjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKK3sKKwl1 MzIgaHdzcF9waHlzX2Jhc2UgPQorCQlwYWdlX21hc2tfYml0cyhpOTE1X3JlcXVlc3RfYWN0aXZl X3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQpOworCXUzMiBod3NwX3JlbGF0aXZlX29mZnNldCA9 IG9mZnNldF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKTsKKworCS8qCisJICogQmVjYXVzZSBvZiB3 cmFwYXJvdW5kLCB3ZSBjYW5ub3Qgc2ltcGx5IHRha2UgdGwtPmh3c3Bfb2Zmc2V0LAorCSAqIGJ1 dCBpbnN0ZWFkIHVzZSB0aGUgZmFjdCB0aGF0IHRoZSByZWxhdGl2ZSBmb3IgdmFkZHIgaXMgdGhl CisJICogb2Zmc2V0IGFzIGZvciBod3NwX29mZnNldC4gVGFrZSB0aGUgdG9wIGJpdHMgZnJvbSB0 bC0+aHdzcF9vZmZzZXQKKwkgKiBhbmQgY29tYmluZSB0aGVtIHdpdGggdGhlIHJlbGF0aXZlIG9m ZnNldCBpbiBycS0+aHdzcF9zZXFuby4KKwkgKgorCSAqIEFzIHJ3LT5od3NwX3NlcW5vIGlzIHJl d3JpdHRlbiB3aGVuIHNpZ25hbGVkLCB0aGlzIG9ubHkgd29ya3MKKwkgKiB3aGVuIHRoZSByZXF1 ZXN0IGlzbid0IHNpZ25hbGVkIHlldCwgYnV0IGF0IHRoYXQgcG9pbnQgeW91CisJICogbm8gbG9u Z2VyIG5lZWQgdGhlIG9mZnNldC4KKwkgKi8KKworCXJldHVybiBod3NwX3BoeXNfYmFzZSArIGh3 c3BfcmVsYXRpdmVfb2Zmc2V0OworfQorCiAjZW5kaWYgLyogSTkxNV9SRVFVRVNUX0ggKi8KLS0g CjIuMzAuMQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K SW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0 dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==