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=-14.5 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,HK_RANDOM_FROM,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS, URIBL_BLOCKED,USER_AGENT_SANE_1 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 69F3BC433DB for ; Thu, 14 Jan 2021 12:06:17 +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 231C323877 for ; Thu, 14 Jan 2021 12:06:17 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 231C323877 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 A24DA6E270; Thu, 14 Jan 2021 12:06:16 +0000 (UTC) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 14E296E270 for ; Thu, 14 Jan 2021 12:06:15 +0000 (UTC) IronPort-SDR: /8iKT9ya4c8V5fqaAa6yD0eFB0C2NKE/q6Jus6UQFLVjOixlEGbfD0N+eDXdJJ+FVt3EzT3PPO R8vaiAPwc3aQ== X-IronPort-AV: E=McAfee;i="6000,8403,9863"; a="166025969" X-IronPort-AV: E=Sophos;i="5.79,347,1602572400"; d="scan'208";a="166025969" Received: from orsmga008.jf.intel.com ([10.7.209.65]) by orsmga106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jan 2021 04:06:13 -0800 IronPort-SDR: 3qK+O8GzjcRn5us18W3V7upd3hc4HZ/EnRcyBssB7BwZxxE4PDdBYLl4BIQQWPpmwnpQF5xW7g Z3bBcSYQ/IPw== X-IronPort-AV: E=Sophos;i="5.79,347,1602572400"; d="scan'208";a="382246559" Received: from brachaax-mobl1.ger.corp.intel.com (HELO [10.249.39.137]) ([10.249.39.137]) by orsmga008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 14 Jan 2021 04:06:11 -0800 To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org References: <20210105153558.134272-1-maarten.lankhorst@linux.intel.com> <20210105153558.134272-2-maarten.lankhorst@linux.intel.com> From: Tvrtko Ursulin Organization: Intel Corporation UK Plc Message-ID: <4639c3c8-f5a9-def1-7c73-9afade95e7e5@linux.intel.com> Date: Thu, 14 Jan 2021 12:06:09 +0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 MIME-Version: 1.0 In-Reply-To: <20210105153558.134272-2-maarten.lankhorst@linux.intel.com> Content-Language: en-US Subject: Re: [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_Hellstr=c3=b6m?= Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Ck9uIDA1LzAxLzIwMjEgMTU6MzQsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+IEluc3RlYWQg b2Ygc2hhcmluZyBwYWdlcyB3aXRoIGJyZWFkY3J1bWJzLCBnaXZlIGVhY2ggdGltZWxpbmUgYQo+ IHNpbmdsZSBwYWdlLiBUaGlzIGFsbG93cyB1bnJlbGF0ZWQgdGltZWxpbmVzIG5vdCB0byBzaGFy ZSBsb2Nrcwo+IGFueSBtb3JlIGR1cmluZyBjb21tYW5kIHN1Ym1pc3Npb24uCj4gCj4gQXMgYW4g YWRkaXRpb25hbCBiZW5lZml0LCBzZXFubyB3cmFwYXJvdW5kIG5vIGxvbmdlciByZXF1aXJlcwo+ IGk5MTVfdm1hX3Bpbiwgd2hpY2ggbWVhbnMgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gd29ycnkgYWJv dXQgYQo+IHBvdGVudGlhbCAtRURFQURMSyBhdCBhIHBvaW50IHdoZXJlIHdlIGFyZSByZWFkeSB0 byBzdWJtaXQuCj4gCj4gQ2hhbmdlcyBzaW5jZSB2MToKPiAtIEZpeCBlcnJvbmVvdXMgaTkxNV92 bWFfYWNxdWlyZSB0aGF0IHNob3VsZCBiZSBhIGk5MTVfdm1hX3JlbGVhc2UgKGlja2xlKS4KPiAt IEV4dHJhIGNoZWNrIGZvciBjb21wbGV0aW9uIGluIGludGVsX3JlYWRfaHdzcCgpLgo+IENoYW5n ZXMgc2luY2UgdjI6Cj4gLSBGaXggaW5jb25zaXN0ZW50IGluZGVudCBpbiBod3NwX2FsbG9jKCkg KGtidWlsZCkKPiAtIG1lbXNldCBlbnRpcmUgY2FjaGVsaW5lIHRvIDAuCj4gQ2hhbmdlcyBzaW5j ZSB2MzoKPiAtIERvIHNhbWUgaW4gaW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8oKSwgYW5kIGNs Zmx1c2ggZm9yIGdvb2QgbWVhc3VyZS4KPiBDaGFuZ2VzIHNpbmNlIHY0Ogo+IC0gVXNlIHJlZmNv dW50aW5nIG9uIHRpbWVsaW5lLCBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gaTkxNV9hY3RpdmUuCj4g LSBGaXggd2FpdGluZyBvbiBrZXJuZWwgcmVxdWVzdHMuCj4gQ2hhbmdlcyBzaW5jZSB2NToKPiAt IEJ1bXAgYW1vdW50IG9mIHNsb3RzIHRvIG1heGltdW0gKDI1NiksIGZvciBiZXN0IHdyYXBhcm91 bmRzLgo+IC0gQWRkIGh3c3Bfb2Zmc2V0IHRvIGk5MTVfcmVxdWVzdCB0byBmaXggcG90ZW50aWFs IHdyYXBhcm91bmQgaGFuZy4KPiAtIEVuc3VyZSB0aW1lbGluZSB3cmFwIHRlc3Qgd29ya3Mgd2l0 aCB0aGUgY2hhbmdlcy4KPiAtIEFzc2lnbiBod3NwIGluIGludGVsX3RpbWVsaW5lX3JlYWRfaHdz cCgpIHdpdGhpbiB0aGUgcmN1IGxvY2sgdG8KPiAgICBmaXggYSBoYW5nLgo+IAo+IFNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+Cj4gUmV2aWV3ZWQtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGlu dGVsLmNvbT4gI3YxCj4gUmVwb3J0ZWQtYnk6IGtlcm5lbCB0ZXN0IHJvYm90IDxsa3BAaW50ZWwu Y29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuMl9lbmdpbmVfY3MuYyAg ICAgIHwgICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW42X2VuZ2luZV9jcy5j ICAgICAgfCAgIDggKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2Nz LmMgICAgICB8ICAxMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZW5naW5l X2NzLmMgICAgIHwgICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5 cGVzLmggICAgICB8ICAgNCAtCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1l bGluZS5jICAgICAgfCA0MjIgKysrKy0tLS0tLS0tLS0tLS0tCj4gICAuLi4vZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmggICAgfCAgMTcgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jICB8ICAgNSArLQo+ICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYyAgIHwgIDgzICsrLS0KPiAgIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICAgNCAtCj4gICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAgMTcgKy0KPiAgIDExIGZp bGVzIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspLCA0MTUgZGVsZXRpb25zKC0pCj4gCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5lX2NzLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9ndC9nZW4yX2VuZ2luZV9jcy5jCj4gaW5kZXggYjQ5MWE2NDkxOWM4 Li45NjQ2MjAwZDI3OTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2Vu Ml9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjJfZW5naW5l X2NzLmMKPiBAQCAtMTQzLDcgKzE0Myw3IEBAIHN0YXRpYyB1MzIgKl9fZ2VuMl9lbWl0X2JyZWFk Y3J1bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MsCj4gICAJCQkJICAgaW50IGZs dXNoLCBpbnQgcG9zdCkKPiAgIHsKPiAgIAlHRU1fQlVHX09OKGk5MTVfcmVxdWVzdF9hY3RpdmVf dGltZWxpbmUocnEpLT5od3NwX2dndHQgIT0gcnEtPmVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsK PiAtCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UoaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGlu ZShycSktPmh3c3Bfb2Zmc2V0KSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7Cj4gKwlHRU1f QlVHX09OKG9mZnNldF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKSAhPSBJOTE1X0dFTV9IV1NfU0VR Tk9fQUREUik7Cj4gICAKPiAgIAkqY3MrKyA9IE1JX0ZMVVNIOwo+ICAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjZfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9ndC9nZW42X2VuZ2luZV9jcy5jCj4gaW5kZXggY2UzOGQxYmNhYmEzLi5kZDA5NGUy MWJiNTEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuNl9lbmdpbmVf Y3MuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjZfZW5naW5lX2NzLmMKPiBA QCAtMTYxLDcgKzE2MSw3IEBAIHUzMiAqZ2VuNl9lbWl0X2JyZWFkY3J1bWJfcmNzKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNzKQo+ICAgCQkgUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VO QUJMRSB8Cj4gICAJCSBQSVBFX0NPTlRST0xfUVdfV1JJVEUgfAo+ICAgCQkgUElQRV9DT05UUk9M X0NTX1NUQUxMKTsKPiAtCSpjcysrID0gaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSkt Pmh3c3Bfb2Zmc2V0IHwKPiArCSpjcysrID0gaTkxNV9yZXF1ZXN0X2FjdGl2ZV9vZmZzZXQocnEp IHwKCiJBY3RpdmUgb2Zmc2V0IiBpcyBtYXliZSBhIGJpdCBub24tZGVzY3JpcHRpdmUuIEhvdyBh Ym91dCAKaTkxNV9yZXF1ZXN0X2h3c3Bfc2Vxbm8oKT8KCj4gICAJCVBJUEVfQ09OVFJPTF9HTE9C QUxfR1RUOwo+ICAgCSpjcysrID0gcnEtPmZlbmNlLnNlcW5vOwo+ICAgCj4gQEAgLTM1OSw3ICsz NTksNyBAQCB1MzIgKmdlbjdfZW1pdF9icmVhZGNydW1iX3JjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgdTMyICpjcykKPiAgIAkJIFBJUEVfQ09OVFJPTF9RV19XUklURSB8Cj4gICAJCSBQSVBF X0NPTlRST0xfR0xPQkFMX0dUVF9JVkIgfAo+ICAgCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsK PiAtCSpjcysrID0gaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0 Owo+ICsJKmNzKysgPSBpOTE1X3JlcXVlc3RfYWN0aXZlX29mZnNldChycSk7Cj4gICAJKmNzKysg PSBycS0+ZmVuY2Uuc2Vxbm87Cj4gICAKPiAgIAkqY3MrKyA9IE1JX1VTRVJfSU5URVJSVVBUOwo+ IEBAIC0zNzQsNyArMzc0LDcgQEAgdTMyICpnZW43X2VtaXRfYnJlYWRjcnVtYl9yY3Moc3RydWN0 IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCj4gICB1MzIgKmdlbjZfZW1pdF9icmVhZGNydW1i X3hjcyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdTMyICpjcykKPiAgIHsKPiAgIAlHRU1fQlVH X09OKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX2dndHQgIT0gcnEtPmVu Z2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKPiAtCUdFTV9CVUdfT04ob2Zmc2V0X2luX3BhZ2UoaTkx NV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0KSAhPSBJOTE1X0dFTV9I V1NfU0VRTk9fQUREUik7Cj4gKwlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKHJxLT5od3NwX3Nl cW5vKSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7Cj4gICAKPiAgIAkqY3MrKyA9IE1JX0ZM VVNIX0RXIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVyB8IE1JX0ZMVVNIX0RXX1NUT1JFX0lOREVY Owo+ICAgCSpjcysrID0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIgfCBNSV9GTFVTSF9EV19VU0Vf R1RUOwo+IEBAIC0zOTQsNyArMzk0LDcgQEAgdTMyICpnZW43X2VtaXRfYnJlYWRjcnVtYl94Y3Mo c3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIHUzMiAqY3MpCj4gICAJaW50IGk7Cj4gICAKPiAgIAlH RU1fQlVHX09OKGk5MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUocnEpLT5od3NwX2dndHQgIT0g cnEtPmVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKPiAtCUdFTV9CVUdfT04ob2Zmc2V0X2luX3Bh Z2UoaTkxNV9yZXF1ZXN0X2FjdGl2ZV90aW1lbGluZShycSktPmh3c3Bfb2Zmc2V0KSAhPSBJOTE1 X0dFTV9IV1NfU0VRTk9fQUREUik7Cj4gKwlHRU1fQlVHX09OKG9mZnNldF9pbl9wYWdlKHJxLT5o d3NwX3NlcW5vKSAhPSBJOTE1X0dFTV9IV1NfU0VRTk9fQUREUik7Cj4gICAKPiAgIAkqY3MrKyA9 IE1JX0ZMVVNIX0RXIHwgTUlfSU5WQUxJREFURV9UTEIgfAo+ICAgCQlNSV9GTFVTSF9EV19PUF9T VE9SRURXIHwgTUlfRkxVU0hfRFdfU1RPUkVfSU5ERVg7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n dC9nZW44X2VuZ2luZV9jcy5jCj4gaW5kZXggMTk3MmRkNWRjYTAwLi4zM2VhYTAyMDNiMWQgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvZ2VuOF9lbmdpbmVfY3MuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2dlbjhfZW5naW5lX2NzLmMKPiBAQCAtMzM4LDE1 ICszMzgsMTMgQEAgc3RhdGljIGlubGluZSB1MzIgcHJlZW1wdF9hZGRyZXNzKHN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAo+ICAgc3RhdGljIHUzMiBod3NwX29mZnNldChjb25z dCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiAtCWNvbnN0IHN0cnVjdCBpbnRlbF90 aW1lbGluZV9jYWNoZWxpbmUgKmNsOwo+ICsJY29uc3Qgc3RydWN0IGludGVsX3RpbWVsaW5lICp0 bDsKPiAgIAo+IC0JLyogQmVmb3JlIHRoZSByZXF1ZXN0IGlzIGV4ZWN1dGVkLCB0aGUgdGltZWxp bmUvY2FjaGxpbmUgaXMgZml4ZWQgKi8KPiArCS8qIEJlZm9yZSB0aGUgcmVxdWVzdCBpcyBleGVj dXRlZCwgdGhlIHRpbWVsaW5lIGlzIGZpeGVkICovCj4gKwl0bCA9IHJjdV9kZXJlZmVyZW5jZV9w cm90ZWN0ZWQocnEtPnRpbWVsaW5lLAo+ICsJCQkJICAgICAgICFpOTE1X3JlcXVlc3Rfc2lnbmFs ZWQocnEpKTsKPiAgIAo+IC0JY2wgPSByY3VfZGVyZWZlcmVuY2VfcHJvdGVjdGVkKHJxLT5od3Nw X2NhY2hlbGluZSwgMSk7Cj4gLQlpZiAoY2wpCj4gLQkJcmV0dXJuIGNsLT5nZ3R0X29mZnNldDsK PiAtCj4gLQlyZXR1cm4gcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3RlZChycS0+dGltZWxpbmUsIDEp LT5od3NwX29mZnNldDsKPiArCXJldHVybiBwYWdlX21hc2tfYml0cyh0bC0+aHdzcF9vZmZzZXQp ICsgb2Zmc2V0X2luX3BhZ2UocnEtPmh3c3Bfc2Vxbm8pOwoKSSBkb24ndCBnZXQgdGhpcy4KCnRs LT5od3NwX29mZnNldCBpcyBhbiBvZmZzZXQsIG5vdCB2YWRkci4gV2hhdCBkb2VzIHBhZ2VfbWFz a19iaXRzIG9uIGl0IAphY2hpZXZlPwoKVGhlbiBycS0+aHdzcF9zZXFubyBpcyBhIHZhZGRyIGFz c2lnbmVkIGFzOgoKICAgcnEtPmh3c3Bfc2Vxbm8gPSB0bC0+aHdzcF9zZXFubzsKCkFuZCBlbHNl d2hlcmUgaW4gdGhlIHBhdGNoOgoKKwl0aW1lbGluZS0+aHdzcF9tYXAgPSB2YWRkcjsKKwlzZXFu byA9IHZhZGRyICsgdGltZWxpbmUtPmh3c3Bfb2Zmc2V0OworCVdSSVRFX09OQ0UoKnNlcW5vLCAw KTsKKwl0aW1lbGluZS0+aHdzcF9zZXFubyA9IHNlcW5vOwoKU28gcGFnZV9tYXNrX2JpdHModGwt Pmh3c3Bfb2Zmc2V0KSArIG9mZnNldF9pbl9wYWdlKHJxLT5od3NwX3NlcW5vKSAKc2VlbXMgdG8g bWUgdG8gcmVkdWNlIHRvIDAgKyB0bC0+aHdzcF9vZmZzZXQsIG9yIHRsLT5od3NwX29mZnNldC4K Ck1heWJlIEkgYW0gYmxpbmQuLgoKPiAgIH0KPiAgIAo+ICAgaW50IGdlbjhfZW1pdF9pbml0X2Jy ZWFkY3J1bWIoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCAxODQ3ZDNjMmVhOTkuLjFkYjYwOGQxZjI2ZiAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9lbmdpbmVfY3MuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTc1 NCw2ICs3NTQsNyBAQCBzdGF0aWMgaW50IG1lYXN1cmVfYnJlYWRjcnVtYl9kdyhzdHJ1Y3QgaW50 ZWxfY29udGV4dCAqY2UpCj4gICAJZnJhbWUtPnJxLmVuZ2luZSA9IGVuZ2luZTsKPiAgIAlmcmFt ZS0+cnEuY29udGV4dCA9IGNlOwo+ICAgCXJjdV9hc3NpZ25fcG9pbnRlcihmcmFtZS0+cnEudGlt ZWxpbmUsIGNlLT50aW1lbGluZSk7Cj4gKwlmcmFtZS0+cnEuaHdzcF9zZXFubyA9IGNlLT50aW1l bGluZS0+aHdzcF9zZXFubzsKPiAgIAo+ICAgCWZyYW1lLT5yaW5nLnZhZGRyID0gZnJhbWUtPmNz Owo+ICAgCWZyYW1lLT5yaW5nLnNpemUgPSBzaXplb2YoZnJhbWUtPmNzKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2d0L2ludGVsX2d0X3R5cGVzLmgKPiBpbmRleCBhODNkM2UxODI1NGQuLmY3ZGFi NGZjOTI2YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF9ndF90 eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3QvaW50ZWxfZ3RfdHlwZXMuaAo+ IEBAIC0zOSwxMCArMzksNiBAQCBzdHJ1Y3QgaW50ZWxfZ3Qgewo+ICAgCXN0cnVjdCBpbnRlbF9n dF90aW1lbGluZXMgewo+ICAgCQlzcGlubG9ja190IGxvY2s7IC8qIHByb3RlY3RzIGFjdGl2ZV9s aXN0ICovCj4gICAJCXN0cnVjdCBsaXN0X2hlYWQgYWN0aXZlX2xpc3Q7Cj4gLQo+IC0JCS8qIFBh Y2sgbXVsdGlwbGUgdGltZWxpbmVzJyBzZXFub3MgaW50byB0aGUgc2FtZSBwYWdlICovCj4gLQkJ c3BpbmxvY2tfdCBod3NwX2xvY2s7Cj4gLQkJc3RydWN0IGxpc3RfaGVhZCBod3NwX2ZyZWVfbGlz dDsKPiAgIAl9IHRpbWVsaW5lczsKPiAgIAo+ICAgCXN0cnVjdCBpbnRlbF9ndF9yZXF1ZXN0cyB7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZS5jCj4gaW5kZXggN2ZlMDU5 MThhNzZlLi4zZDQzZjE1ZjM0ZjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3QvaW50ZWxfdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVs X3RpbWVsaW5lLmMKPiBAQCAtMTIsMjEgKzEyLDkgQEAKPiAgICNpbmNsdWRlICJpbnRlbF9yaW5n LmgiCj4gICAjaW5jbHVkZSAiaW50ZWxfdGltZWxpbmUuaCIKPiAgIAo+IC0jZGVmaW5lIHB0cl9z ZXRfYml0KHB0ciwgYml0KSAoKHR5cGVvZihwdHIpKSgodW5zaWduZWQgbG9uZykocHRyKSB8IEJJ VChiaXQpKSkKPiAtI2RlZmluZSBwdHJfdGVzdF9iaXQocHRyLCBiaXQpICgodW5zaWduZWQgbG9u ZykocHRyKSAmIEJJVChiaXQpKQo+ICsjZGVmaW5lIFRJTUVMSU5FX1NFUU5PX0JZVEVTIDgKPiAg IAo+IC0jZGVmaW5lIENBQ0hFTElORV9CSVRTIDYKPiAtI2RlZmluZSBDQUNIRUxJTkVfRlJFRSBD QUNIRUxJTkVfQklUUwo+IC0KPiAtc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3Agewo+IC0Jc3Ry dWN0IGludGVsX2d0ICpndDsKPiAtCXN0cnVjdCBpbnRlbF9ndF90aW1lbGluZXMgKmd0X3RpbWVs aW5lczsKPiAtCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saW5rOwo+IC0Jc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gLQl1NjQgZnJlZV9iaXRtYXA7Cj4gLX07Cj4gLQo+IC1zdGF0aWMgc3RydWN0IGk5 MTVfdm1hICpfX2h3c3BfYWxsb2Moc3RydWN0IGludGVsX2d0ICpndCkKPiArc3RhdGljIHN0cnVj dCBpOTE1X3ZtYSAqaHdzcF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gZ3QtPmk5MTU7Cj4gICAJc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iajsKPiBAQCAtNDUsMjIwICszMyw1OSBAQCBzdGF0aWMgc3RydWN0 IGk5MTVfdm1hICpfX2h3c3BfYWxsb2Moc3RydWN0IGludGVsX2d0ICpndCkKPiAgIAlyZXR1cm4g dm1hOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKgo+IC1od3NwX2FsbG9j KHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUsIHVuc2lnbmVkIGludCAqY2FjaGVsaW5l KQo+IC17Cj4gLQlzdHJ1Y3QgaW50ZWxfZ3RfdGltZWxpbmVzICpndCA9ICZ0aW1lbGluZS0+Z3Qt PnRpbWVsaW5lczsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZV9od3NwICpod3NwOwo+IC0KPiAt CUJVSUxEX0JVR19PTihCSVRTX1BFUl9UWVBFKHU2NCkgKiBDQUNIRUxJTkVfQllURVMgPiBQQUdF X1NJWkUpOwo+IC0KPiAtCXNwaW5fbG9ja19pcnEoJmd0LT5od3NwX2xvY2spOwo+IC0KPiAtCS8q IGh3c3BfZnJlZV9saXN0IG9ubHkgY29udGFpbnMgSFdTUCB0aGF0IGhhdmUgYXZhaWxhYmxlIGNh Y2hlbGluZXMgKi8KPiAtCWh3c3AgPSBsaXN0X2ZpcnN0X2VudHJ5X29yX251bGwoJmd0LT5od3Nw X2ZyZWVfbGlzdCwKPiAtCQkJCQl0eXBlb2YoKmh3c3ApLCBmcmVlX2xpbmspOwo+IC0JaWYgKCFo d3NwKSB7Cj4gLQkJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQo+IC0JCXNwaW5fdW5sb2NrX2ly cSgmZ3QtPmh3c3BfbG9jayk7Cj4gLQo+IC0JCWh3c3AgPSBrbWFsbG9jKHNpemVvZigqaHdzcCks IEdGUF9LRVJORUwpOwo+IC0JCWlmICghaHdzcCkKPiAtCQkJcmV0dXJuIEVSUl9QVFIoLUVOT01F TSk7Cj4gLQo+IC0JCXZtYSA9IF9faHdzcF9hbGxvYyh0aW1lbGluZS0+Z3QpOwo+IC0JCWlmIChJ U19FUlIodm1hKSkgewo+IC0JCQlrZnJlZShod3NwKTsKPiAtCQkJcmV0dXJuIHZtYTsKPiAtCQl9 Cj4gLQo+IC0JCUdUX1RSQUNFKHRpbWVsaW5lLT5ndCwgIm5ldyBIV1NQIGFsbG9jYXRlZFxuIik7 Cj4gLQo+IC0JCXZtYS0+cHJpdmF0ZSA9IGh3c3A7Cj4gLQkJaHdzcC0+Z3QgPSB0aW1lbGluZS0+ Z3Q7Cj4gLQkJaHdzcC0+dm1hID0gdm1hOwo+IC0JCWh3c3AtPmZyZWVfYml0bWFwID0gfjB1bGw7 Cj4gLQkJaHdzcC0+Z3RfdGltZWxpbmVzID0gZ3Q7Cj4gLQo+IC0JCXNwaW5fbG9ja19pcnEoJmd0 LT5od3NwX2xvY2spOwo+IC0JCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xpbmssICZndC0+aHdzcF9m cmVlX2xpc3QpOwo+IC0JfQo+IC0KPiAtCUdFTV9CVUdfT04oIWh3c3AtPmZyZWVfYml0bWFwKTsK PiAtCSpjYWNoZWxpbmUgPSBfX2ZmczY0KGh3c3AtPmZyZWVfYml0bWFwKTsKPiAtCWh3c3AtPmZy ZWVfYml0bWFwICY9IH5CSVRfVUxMKCpjYWNoZWxpbmUpOwo+IC0JaWYgKCFod3NwLT5mcmVlX2Jp dG1hcCkKPiAtCQlsaXN0X2RlbCgmaHdzcC0+ZnJlZV9saW5rKTsKPiAtCj4gLQlzcGluX3VubG9j a19pcnEoJmd0LT5od3NwX2xvY2spOwo+IC0KPiAtCUdFTV9CVUdfT04oaHdzcC0+dm1hLT5wcml2 YXRlICE9IGh3c3ApOwo+IC0JcmV0dXJuIGh3c3AtPnZtYTsKPiAtfQo+IC0KPiAtc3RhdGljIHZv aWQgX19pZGxlX2h3c3BfZnJlZShzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcCwgaW50 IGNhY2hlbGluZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX2d0X3RpbWVsaW5lcyAqZ3QgPSBod3Nw LT5ndF90aW1lbGluZXM7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCXNwaW5fbG9j a19pcnFzYXZlKCZndC0+aHdzcF9sb2NrLCBmbGFncyk7Cj4gLQo+IC0JLyogQXMgYSBjYWNoZWxp bmUgYmVjb21lcyBhdmFpbGFibGUsIHB1Ymxpc2ggdGhlIEhXU1Agb24gdGhlIGZyZWVsaXN0ICov Cj4gLQlpZiAoIWh3c3AtPmZyZWVfYml0bWFwKQo+IC0JCWxpc3RfYWRkX3RhaWwoJmh3c3AtPmZy ZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7Cj4gLQo+IC0JR0VNX0JVR19PTihjYWNoZWxp bmUgPj0gQklUU19QRVJfVFlQRShod3NwLT5mcmVlX2JpdG1hcCkpOwo+IC0JaHdzcC0+ZnJlZV9i aXRtYXAgfD0gQklUX1VMTChjYWNoZWxpbmUpOwo+IC0KPiAtCS8qIEFuZCBpZiBubyBvbmUgaXMg bGVmdCB1c2luZyBpdCwgZ2l2ZSB0aGUgcGFnZSBiYWNrIHRvIHRoZSBzeXN0ZW0gKi8KPiAtCWlm IChod3NwLT5mcmVlX2JpdG1hcCA9PSB+MHVsbCkgewo+IC0JCWk5MTVfdm1hX3B1dChod3NwLT52 bWEpOwo+IC0JCWxpc3RfZGVsKCZod3NwLT5mcmVlX2xpbmspOwo+IC0JCWtmcmVlKGh3c3ApOwo+ IC0JfQo+IC0KPiAtCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmd0LT5od3NwX2xvY2ssIGZsYWdz KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgX19yY3VfY2FjaGVsaW5lX2ZyZWUoc3RydWN0IHJj dV9oZWFkICpyY3UpCj4gLXsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNs ID0KPiAtCQljb250YWluZXJfb2YocmN1LCB0eXBlb2YoKmNsKSwgcmN1KTsKPiAtCj4gLQkvKiBN dXN0IHdhaXQgdW50aWwgYWZ0ZXIgYWxsICpycS0+aHdzcCBhcmUgY29tcGxldGUgYmVmb3JlIHJl bW92aW5nICovCj4gLQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKGNsLT5od3NwLT52bWEtPm9i aik7Cj4gLQlfX2lkbGVfaHdzcF9mcmVlKGNsLT5od3NwLCBwdHJfdW5tYXNrX2JpdHMoY2wtPnZh ZGRyLCBDQUNIRUxJTkVfQklUUykpOwo+IC0KPiAtCWk5MTVfYWN0aXZlX2ZpbmkoJmNsLT5hY3Rp dmUpOwo+IC0Ja2ZyZWUoY2wpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBfX2lkbGVfY2FjaGVs aW5lX2ZyZWUoc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2wpCj4gLXsKPiAtCUdF TV9CVUdfT04oIWk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3RpdmUpKTsKPiAtCWNhbGxfcmN1 KCZjbC0+cmN1LCBfX3JjdV9jYWNoZWxpbmVfZnJlZSk7Cj4gLX0KPiAtCj4gICBfX2k5MTVfYWN0 aXZlX2NhbGwKPiAtc3RhdGljIHZvaWQgX19jYWNoZWxpbmVfcmV0aXJlKHN0cnVjdCBpOTE1X2Fj dGl2ZSAqYWN0aXZlKQo+ICtzdGF0aWMgdm9pZCBfX3RpbWVsaW5lX3JldGlyZShzdHJ1Y3QgaTkx NV9hY3RpdmUgKmFjdGl2ZSkKPiAgIHsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxp bmUgKmNsID0KPiAtCQljb250YWluZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsK PiArCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPQo+ICsJCWNvbnRhaW5lcl9vZihhY3RpdmUs IHR5cGVvZigqdGwpLCBhY3RpdmUpOwo+ICAgCj4gLQlpOTE1X3ZtYV91bnBpbihjbC0+aHdzcC0+ dm1hKTsKPiAtCWlmIChwdHJfdGVzdF9iaXQoY2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJFRSkpCj4g LQkJX19pZGxlX2NhY2hlbGluZV9mcmVlKGNsKTsKPiArCWk5MTVfdm1hX3VucGluKHRsLT5od3Nw X2dndHQpOwo+ICsJaW50ZWxfdGltZWxpbmVfcHV0KHRsKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMg aW50IF9fY2FjaGVsaW5lX2FjdGl2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKPiArc3Rh dGljIGludCBfX3RpbWVsaW5lX2FjdGl2ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKPiAg IHsKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsID0KPiAtCQljb250YWlu ZXJfb2YoYWN0aXZlLCB0eXBlb2YoKmNsKSwgYWN0aXZlKTsKPiArCXN0cnVjdCBpbnRlbF90aW1l bGluZSAqdGwgPQo+ICsJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHR5cGVvZigqdGwpLCBhY3RpdmUp Owo+ICAgCj4gLQlfX2k5MTVfdm1hX3BpbihjbC0+aHdzcC0+dm1hKTsKPiArCV9faTkxNV92bWFf cGluKHRsLT5od3NwX2dndHQpOwo+ICsJaW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKPiAgIAlyZXR1 cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGlu ZSAqCj4gLWNhY2hlbGluZV9hbGxvYyhzdHJ1Y3QgaW50ZWxfdGltZWxpbmVfaHdzcCAqaHdzcCwg dW5zaWduZWQgaW50IGNhY2hlbGluZSkKPiAtewo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2Nh Y2hlbGluZSAqY2w7Cj4gLQl2b2lkICp2YWRkcjsKPiAtCj4gLQlHRU1fQlVHX09OKGNhY2hlbGlu ZSA+PSBCSVQoQ0FDSEVMSU5FX0JJVFMpKTsKPiAtCj4gLQljbCA9IGttYWxsb2Moc2l6ZW9mKCpj bCksIEdGUF9LRVJORUwpOwo+IC0JaWYgKCFjbCkKPiAtCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVN KTsKPiAtCj4gLQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGh3c3AtPnZtYS0+b2Jq LCBJOTE1X01BUF9XQik7Cj4gLQlpZiAoSVNfRVJSKHZhZGRyKSkgewo+IC0JCWtmcmVlKGNsKTsK PiAtCQlyZXR1cm4gRVJSX0NBU1QodmFkZHIpOwo+IC0JfQo+IC0KPiAtCWNsLT5od3NwID0gaHdz cDsKPiAtCWNsLT52YWRkciA9IHBhZ2VfcGFja19iaXRzKHZhZGRyLCBjYWNoZWxpbmUpOwo+IC0K PiAtCWk5MTVfYWN0aXZlX2luaXQoJmNsLT5hY3RpdmUsIF9fY2FjaGVsaW5lX2FjdGl2ZSwgX19j YWNoZWxpbmVfcmV0aXJlKTsKPiAtCj4gLQlyZXR1cm4gY2w7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2 b2lkIGNhY2hlbGluZV9hY3F1aXJlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNs LAo+IC0JCQkgICAgICB1MzIgZ2d0dF9vZmZzZXQpCj4gLXsKPiAtCWlmICghY2wpCj4gLQkJcmV0 dXJuOwo+IC0KPiAtCWNsLT5nZ3R0X29mZnNldCA9IGdndHRfb2Zmc2V0Owo+IC0JaTkxNV9hY3Rp dmVfYWNxdWlyZSgmY2wtPmFjdGl2ZSk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGNhY2hlbGlu ZV9yZWxlYXNlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQo+IC17Cj4gLQlp ZiAoY2wpCj4gLQkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmY2wtPmFjdGl2ZSk7Cj4gLX0KPiAtCj4g LXN0YXRpYyB2b2lkIGNhY2hlbGluZV9mcmVlKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxp bmUgKmNsKQo+IC17Cj4gLQlpZiAoIWk5MTVfYWN0aXZlX2FjcXVpcmVfaWZfYnVzeSgmY2wtPmFj dGl2ZSkpIHsKPiAtCQlfX2lkbGVfY2FjaGVsaW5lX2ZyZWUoY2wpOwo+IC0JCXJldHVybjsKPiAt CX0KPiAtCj4gLQlHRU1fQlVHX09OKHB0cl90ZXN0X2JpdChjbC0+dmFkZHIsIENBQ0hFTElORV9G UkVFKSk7Cj4gLQljbC0+dmFkZHIgPSBwdHJfc2V0X2JpdChjbC0+dmFkZHIsIENBQ0hFTElORV9G UkVFKTsKPiAtCj4gLQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZjbC0+YWN0aXZlKTsKPiAtfQo+IC0K PiAgIHN0YXRpYyBpbnQgaW50ZWxfdGltZWxpbmVfaW5pdChzdHJ1Y3QgaW50ZWxfdGltZWxpbmUg KnRpbWVsaW5lLAo+ICAgCQkJICAgICAgIHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4gICAJCQkgICAg ICAgc3RydWN0IGk5MTVfdm1hICpod3NwLAo+ICAgCQkJICAgICAgIHVuc2lnbmVkIGludCBvZmZz ZXQpCj4gICB7Cj4gICAJdm9pZCAqdmFkZHI7Cj4gKwl1MzIgKnNlcW5vOwo+ICAgCj4gICAJa3Jl Zl9pbml0KCZ0aW1lbGluZS0+a3JlZik7Cj4gICAJYXRvbWljX3NldCgmdGltZWxpbmUtPnBpbl9j b3VudCwgMCk7Cj4gICAKPiAgIAl0aW1lbGluZS0+Z3QgPSBndDsKPiAgIAo+IC0JdGltZWxpbmUt Pmhhc19pbml0aWFsX2JyZWFkY3J1bWIgPSAhaHdzcDsKPiAtCXRpbWVsaW5lLT5od3NwX2NhY2hl bGluZSA9IE5VTEw7Cj4gLQo+IC0JaWYgKCFod3NwKSB7Cj4gLQkJc3RydWN0IGludGVsX3RpbWVs aW5lX2NhY2hlbGluZSAqY2w7Cj4gLQkJdW5zaWduZWQgaW50IGNhY2hlbGluZTsKPiAtCj4gLQkJ aHdzcCA9IGh3c3BfYWxsb2ModGltZWxpbmUsICZjYWNoZWxpbmUpOwo+ICsJaWYgKGh3c3ApIHsK PiArCQl0aW1lbGluZS0+aHdzcF9vZmZzZXQgPSBvZmZzZXQ7Cj4gKwkJdGltZWxpbmUtPmh3c3Bf Z2d0dCA9IGk5MTVfdm1hX2dldChod3NwKTsKPiArCX0gZWxzZSB7Cj4gKwkJdGltZWxpbmUtPmhh c19pbml0aWFsX2JyZWFkY3J1bWIgPSB0cnVlOwo+ICsJCWh3c3AgPSBod3NwX2FsbG9jKGd0KTsK PiAgIAkJaWYgKElTX0VSUihod3NwKSkKPiAgIAkJCXJldHVybiBQVFJfRVJSKGh3c3ApOwo+IC0K PiAtCQljbCA9IGNhY2hlbGluZV9hbGxvYyhod3NwLT5wcml2YXRlLCBjYWNoZWxpbmUpOwo+IC0J CWlmIChJU19FUlIoY2wpKSB7Cj4gLQkJCV9faWRsZV9od3NwX2ZyZWUoaHdzcC0+cHJpdmF0ZSwg Y2FjaGVsaW5lKTsKPiAtCQkJcmV0dXJuIFBUUl9FUlIoY2wpOwo+IC0JCX0KPiAtCj4gLQkJdGlt ZWxpbmUtPmh3c3BfY2FjaGVsaW5lID0gY2w7Cj4gLQkJdGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID0g Y2FjaGVsaW5lICogQ0FDSEVMSU5FX0JZVEVTOwo+IC0KPiAtCQl2YWRkciA9IHBhZ2VfbWFza19i aXRzKGNsLT52YWRkcik7Cj4gLQl9IGVsc2Ugewo+IC0JCXRpbWVsaW5lLT5od3NwX29mZnNldCA9 IG9mZnNldDsKPiAtCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKGh3c3AtPm9iaiwg STkxNV9NQVBfV0IpOwo+IC0JCWlmIChJU19FUlIodmFkZHIpKQo+IC0JCQlyZXR1cm4gUFRSX0VS Uih2YWRkcik7Cj4gKwkJdGltZWxpbmUtPmh3c3BfZ2d0dCA9IGh3c3A7Cj4gICAJfQo+ICAgCj4g LQl0aW1lbGluZS0+aHdzcF9zZXFubyA9Cj4gLQkJbWVtc2V0KHZhZGRyICsgdGltZWxpbmUtPmh3 c3Bfb2Zmc2V0LCAwLCBDQUNIRUxJTkVfQllURVMpOwo+ICsJdmFkZHIgPSBpOTE1X2dlbV9vYmpl Y3RfcGluX21hcChod3NwLT5vYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIodmFkZHIp KQo+ICsJCXJldHVybiBQVFJfRVJSKHZhZGRyKTsKPiArCj4gKwl0aW1lbGluZS0+aHdzcF9tYXAg PSB2YWRkcjsKPiArCXNlcW5vID0gdmFkZHIgKyB0aW1lbGluZS0+aHdzcF9vZmZzZXQ7Cj4gKwlX UklURV9PTkNFKCpzZXFubywgMCk7Cj4gKwl0aW1lbGluZS0+aHdzcF9zZXFubyA9IHNlcW5vOwo+ ICAgCj4gLQl0aW1lbGluZS0+aHdzcF9nZ3R0ID0gaTkxNV92bWFfZ2V0KGh3c3ApOwo+ICAgCUdF TV9CVUdfT04odGltZWxpbmUtPmh3c3Bfb2Zmc2V0ID49IGh3c3AtPnNpemUpOwo+ICAgCj4gICAJ dGltZWxpbmUtPmZlbmNlX2NvbnRleHQgPSBkbWFfZmVuY2VfY29udGV4dF9hbGxvYygxKTsKPiBA QCAtMjY5LDYgKzk2LDcgQEAgc3RhdGljIGludCBpbnRlbF90aW1lbGluZV9pbml0KHN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGltZWxpbmUsCj4gICAJSU5JVF9MSVNUX0hFQUQoJnRpbWVsaW5lLT5y ZXF1ZXN0cyk7Cj4gICAKPiAgIAlpOTE1X3N5bmNtYXBfaW5pdCgmdGltZWxpbmUtPnN5bmMpOwo+ ICsJaTkxNV9hY3RpdmVfaW5pdCgmdGltZWxpbmUtPmFjdGl2ZSwgX190aW1lbGluZV9hY3RpdmUs IF9fdGltZWxpbmVfcmV0aXJlKTsKPiAgIAo+ICAgCXJldHVybiAwOwo+ICAgfQo+IEBAIC0yNzks MjMgKzEwNywxOCBAQCB2b2lkIGludGVsX2d0X2luaXRfdGltZWxpbmVzKHN0cnVjdCBpbnRlbF9n dCAqZ3QpCj4gICAKPiAgIAlzcGluX2xvY2tfaW5pdCgmdGltZWxpbmVzLT5sb2NrKTsKPiAgIAlJ TklUX0xJU1RfSEVBRCgmdGltZWxpbmVzLT5hY3RpdmVfbGlzdCk7Cj4gLQo+IC0Jc3Bpbl9sb2Nr X2luaXQoJnRpbWVsaW5lcy0+aHdzcF9sb2NrKTsKPiAtCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGlu ZXMtPmh3c3BfZnJlZV9saXN0KTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF90aW1l bGluZV9maW5pKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGltZWxpbmUpCj4gK3N0YXRpYyB2b2lk IGludGVsX3RpbWVsaW5lX2Zpbmkoc3RydWN0IHJjdV9oZWFkICpyY3UpCj4gICB7Cj4gLQlHRU1f QlVHX09OKGF0b21pY19yZWFkKCZ0aW1lbGluZS0+cGluX2NvdW50KSk7Cj4gLQlHRU1fQlVHX09O KCFsaXN0X2VtcHR5KCZ0aW1lbGluZS0+cmVxdWVzdHMpKTsKPiAtCUdFTV9CVUdfT04odGltZWxp bmUtPnJldGlyZSk7Cj4gKwlzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRpbWVsaW5lID0KPiArCQlj b250YWluZXJfb2YocmN1LCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUsIHJjdSk7Cj4gICAKPiAtCWlm ICh0aW1lbGluZS0+aHdzcF9jYWNoZWxpbmUpCj4gLQkJY2FjaGVsaW5lX2ZyZWUodGltZWxpbmUt Pmh3c3BfY2FjaGVsaW5lKTsKPiAtCWVsc2UKPiAtCQlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFw KHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7Cj4gICAKPiAgIAlpOTE1X3ZtYV9wdXQodGltZWxp bmUtPmh3c3BfZ2d0dCk7Cj4gKwlpOTE1X2FjdGl2ZV9maW5pKCZ0aW1lbGluZS0+YWN0aXZlKTsK PiArCWtmcmVlKHRpbWVsaW5lKTsKPiAgIH0KPiAgIAo+ICAgc3RydWN0IGludGVsX3RpbWVsaW5l ICoKPiBAQCAtMzYxLDkgKzE4NCw5IEBAIGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGlu dGVsX3RpbWVsaW5lICp0bCwgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCj4gICAJR1RfVFJB Q0UodGwtPmd0LCAidGltZWxpbmU6JWxseCB1c2luZyBIV1NQIG9mZnNldDoleFxuIiwKPiAgIAkJ IHRsLT5mZW5jZV9jb250ZXh0LCB0bC0+aHdzcF9vZmZzZXQpOwo+ICAgCj4gLQljYWNoZWxpbmVf YWNxdWlyZSh0bC0+aHdzcF9jYWNoZWxpbmUsIHRsLT5od3NwX29mZnNldCk7Cj4gKwlpOTE1X2Fj dGl2ZV9hY3F1aXJlKCZ0bC0+YWN0aXZlKTsKPiAgIAlpZiAoYXRvbWljX2ZldGNoX2luYygmdGwt PnBpbl9jb3VudCkpIHsKPiAtCQljYWNoZWxpbmVfcmVsZWFzZSh0bC0+aHdzcF9jYWNoZWxpbmUp Owo+ICsJCWk5MTVfYWN0aXZlX3JlbGVhc2UoJnRsLT5hY3RpdmUpOwo+ICAgCQlfX2k5MTVfdm1h X3VucGluKHRsLT5od3NwX2dndHQpOwo+ICAgCX0KPiAgIAo+IEBAIC0zNzIsOSArMTk1LDEzIEBA IGludCBpbnRlbF90aW1lbGluZV9waW4oc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCwgc3RydWN0 IGk5MTVfZ2VtX3d3X2N0eCAqd3cpCj4gICAKPiAgIHZvaWQgaW50ZWxfdGltZWxpbmVfcmVzZXRf c2Vxbm8oY29uc3Qgc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKPiAgIHsKPiArCXUzMiAqaHdz cF9zZXFubyA9ICh1MzIgKil0bC0+aHdzcF9zZXFubzsKPiAgIAkvKiBNdXN0IGJlIHBpbm5lZCB0 byBiZSB3cml0YWJsZSwgYW5kIG5vIHJlcXVlc3RzIGluIGZsaWdodC4gKi8KPiAgIAlHRU1fQlVH X09OKCFhdG9taWNfcmVhZCgmdGwtPnBpbl9jb3VudCkpOwo+IC0JV1JJVEVfT05DRSgqKHUzMiAq KXRsLT5od3NwX3NlcW5vLCB0bC0+c2Vxbm8pOwo+ICsKPiArCW1lbXNldChod3NwX3NlcW5vICsg MSwgMCwgVElNRUxJTkVfU0VRTk9fQllURVMgLSBzaXplb2YoKmh3c3Bfc2Vxbm8pKTsKPiArCVdS SVRFX09OQ0UoKmh3c3Bfc2Vxbm8sIHRsLT5zZXFubyk7Cj4gKwljbGZsdXNoKGh3c3Bfc2Vxbm8p Owo+ICAgfQo+ICAgCj4gICB2b2lkIGludGVsX3RpbWVsaW5lX2VudGVyKHN0cnVjdCBpbnRlbF90 aW1lbGluZSAqdGwpCj4gQEAgLTQ1MCwxMDYgKzI3NywyMyBAQCBzdGF0aWMgdTMyIHRpbWVsaW5l X2FkdmFuY2Uoc3RydWN0IGludGVsX3RpbWVsaW5lICp0bCkKPiAgIAlyZXR1cm4gdGwtPnNlcW5v ICs9IDEgKyB0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYjsKPiAgIH0KPiAgIAo+IC1zdGF0aWMg dm9pZCB0aW1lbGluZV9yb2xsYmFjayhzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsKQo+IC17Cj4g LQl0bC0+c2Vxbm8gLT0gMSArIHRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iOwo+IC19Cj4gLQo+ ICAgc3RhdGljIG5vaW5saW5lIGludAo+ICAgX19pbnRlbF90aW1lbGluZV9nZXRfc2Vxbm8oc3Ry dWN0IGludGVsX3RpbWVsaW5lICp0bCwKPiAtCQkJICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs Cj4gICAJCQkgICB1MzIgKnNlcW5vKQo+ICAgewo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2Nh Y2hlbGluZSAqY2w7Cj4gLQl1bnNpZ25lZCBpbnQgY2FjaGVsaW5lOwo+IC0Jc3RydWN0IGk5MTVf dm1hICp2bWE7Cj4gLQl2b2lkICp2YWRkcjsKPiAtCWludCBlcnI7Cj4gLQo+IC0JbWlnaHRfbG9j aygmdGwtPmd0LT5nZ3R0LT52bS5tdXRleCk7Cj4gLQlHVF9UUkFDRSh0bC0+Z3QsICJ0aW1lbGlu ZTolbGx4IHdyYXBwZWRcbiIsIHRsLT5mZW5jZV9jb250ZXh0KTsKPiAtCj4gLQkvKgo+IC0JICog SWYgdGhlcmUgaXMgYW4gb3V0c3RhbmRpbmcgR1BVIHJlZmVyZW5jZSB0byB0aGlzIGNhY2hlbGlu ZSwKPiAtCSAqIHN1Y2ggYXMgaXQgYmVpbmcgc2FtcGxlZCBieSBhIEhXIHNlbWFwaG9yZSBvbiBh bm90aGVyIHRpbWVsaW5lLAo+IC0JICogd2UgY2Fubm90IHdyYXBhcm91bmQgb3VyIHNlcW5vIHZh bHVlICh0aGUgSFcgc2VtYXBob3JlIGRvZXMKPiAtCSAqIGEgc3RyaWN0IGdyZWF0ZXItdGhhbi1v ci1lcXVhbHMgY29tcGFyZSwgbm90IGk5MTVfc2Vxbm9fcGFzc2VkKS4KPiAtCSAqIFNvIGlmIHRo ZSBjYWNoZWxpbmUgaXMgc3RpbGwgYnVzeSwgd2UgbXVzdCBkZXRhY2ggb3Vyc2VsdmVzCj4gLQkg KiBmcm9tIGl0IGFuZCBsZWF2ZSBpdCBpbmZsaWdodCBhbG9uZ3NpZGUgaXRzIHVzZXJzLgo+IC0J ICoKPiAtCSAqIEhvd2V2ZXIsIGlmIG5vYm9keSBpcyB3YXRjaGluZyBhbmQgd2UgY2FuIGd1YXJh bnRlZSB0aGF0IG5vYm9keQo+IC0JICogd2lsbCwgd2UgY291bGQgc2ltcGx5IHJldXNlIHRoZSBz YW1lIGNhY2hlbGluZS4KPiAtCSAqCj4gLQkgKiBpZiAoaTkxNV9hY3RpdmVfcmVxdWVzdF9pc19z aWduYWxlZCgmdGwtPmxhc3RfcmVxdWVzdCkgJiYKPiAtCSAqICAgICBpOTE1X2FjdGl2ZV9pc19z aWduYWxlZCgmdGwtPmh3c3BfY2FjaGVsaW5lLT5hY3RpdmUpKQo+IC0JICoJcmV0dXJuIDA7Cj4g LQkgKgo+IC0JICogVGhhdCBzZWVtcyB1bmxpa2VseSBmb3IgYSBidXN5IHRpbWVsaW5lIHRoYXQg bmVlZGVkIHRvIHdyYXAgaW4KPiAtCSAqIHRoZSBmaXJzdCBwbGFjZSwgc28ganVzdCByZXBsYWNl IHRoZSBjYWNoZWxpbmUuCj4gLQkgKi8KPiAtCj4gLQl2bWEgPSBod3NwX2FsbG9jKHRsLCAmY2Fj aGVsaW5lKTsKPiAtCWlmIChJU19FUlIodm1hKSkgewo+IC0JCWVyciA9IFBUUl9FUlIodm1hKTsK PiAtCQlnb3RvIGVycl9yb2xsYmFjazsKPiAtCX0KPiAtCj4gLQllcnIgPSBpOTE1X2dndHRfcGlu KHZtYSwgTlVMTCwgMCwgUElOX0hJR0gpOwo+IC0JaWYgKGVycikgewo+IC0JCV9faWRsZV9od3Nw X2ZyZWUodm1hLT5wcml2YXRlLCBjYWNoZWxpbmUpOwo+IC0JCWdvdG8gZXJyX3JvbGxiYWNrOwo+ IC0JfQo+ICsJdTMyIG5leHRfb2ZzID0gb2Zmc2V0X2luX3BhZ2UodGwtPmh3c3Bfb2Zmc2V0ICsg VElNRUxJTkVfU0VRTk9fQllURVMpOwo+ICAgCj4gLQljbCA9IGNhY2hlbGluZV9hbGxvYyh2bWEt PnByaXZhdGUsIGNhY2hlbGluZSk7Cj4gLQlpZiAoSVNfRVJSKGNsKSkgewo+IC0JCWVyciA9IFBU Ul9FUlIoY2wpOwo+IC0JCV9faWRsZV9od3NwX2ZyZWUodm1hLT5wcml2YXRlLCBjYWNoZWxpbmUp Owo+IC0JCWdvdG8gZXJyX3VucGluOwo+IC0JfQo+IC0JR0VNX0JVR19PTihjbC0+aHdzcC0+dm1h ICE9IHZtYSk7Cj4gLQo+IC0JLyoKPiAtCSAqIEF0dGFjaCB0aGUgb2xkIGNhY2hlbGluZSB0byB0 aGUgY3VycmVudCByZXF1ZXN0LCBzbyB0aGF0IHdlIG9ubHkKPiAtCSAqIGZyZWUgaXQgYWZ0ZXIg dGhlIGN1cnJlbnQgcmVxdWVzdCBpcyByZXRpcmVkLCB3aGljaCBlbnN1cmVzIHRoYXQKPiAtCSAq IGFsbCB3cml0ZXMgaW50byB0aGUgY2FjaGVsaW5lIGZyb20gcHJldmlvdXMgcmVxdWVzdHMgYXJl IGNvbXBsZXRlLgo+IC0JICovCj4gLQllcnIgPSBpOTE1X2FjdGl2ZV9yZWYoJnRsLT5od3NwX2Nh Y2hlbGluZS0+YWN0aXZlLAo+IC0JCQkgICAgICB0bC0+ZmVuY2VfY29udGV4dCwKPiAtCQkJICAg ICAgJnJxLT5mZW5jZSk7Cj4gLQlpZiAoZXJyKQo+IC0JCWdvdG8gZXJyX2NhY2hlbGluZTsKPiAr CS8qIHcvYTogYml0IDUgbmVlZHMgdG8gYmUgemVybyBmb3IgTUlfRkxVU0hfRFcgYWRkcmVzcy4g Ki8KPiArCWlmIChUSU1FTElORV9TRVFOT19CWVRFUyA8PSBCSVQoNSkgJiYgKG5leHRfb2ZzICYg QklUKDUpKSkKPiArCQluZXh0X29mcyA9IG9mZnNldF9pbl9wYWdlKG5leHRfb2ZzICsgQklUKDUp KTsKPiAgIAo+IC0JY2FjaGVsaW5lX3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5lKTsgLyogb3du ZXJzaGlwIG5vdyB4ZmVyZWQgdG8gcnEgKi8KPiAtCWNhY2hlbGluZV9mcmVlKHRsLT5od3NwX2Nh Y2hlbGluZSk7Cj4gLQo+IC0JaTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7IC8qIGJpbmRp bmcga2VwdCBhbGl2ZSBieSBvbGQgY2FjaGVsaW5lICovCj4gLQlpOTE1X3ZtYV9wdXQodGwtPmh3 c3BfZ2d0dCk7Cj4gLQo+IC0JdGwtPmh3c3BfZ2d0dCA9IGk5MTVfdm1hX2dldCh2bWEpOwo+IC0K PiAtCXZhZGRyID0gcGFnZV9tYXNrX2JpdHMoY2wtPnZhZGRyKTsKPiAtCXRsLT5od3NwX29mZnNl dCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsKPiAtCXRsLT5od3NwX3NlcW5vID0KPiAt CQltZW1zZXQodmFkZHIgKyB0bC0+aHdzcF9vZmZzZXQsIDAsIENBQ0hFTElORV9CWVRFUyk7Cj4g LQo+IC0JdGwtPmh3c3Bfb2Zmc2V0ICs9IGk5MTVfZ2d0dF9vZmZzZXQodm1hKTsKPiAtCUdUX1RS QUNFKHRsLT5ndCwgInRpbWVsaW5lOiVsbHggdXNpbmcgSFdTUCBvZmZzZXQ6JXhcbiIsCj4gLQkJ IHRsLT5mZW5jZV9jb250ZXh0LCB0bC0+aHdzcF9vZmZzZXQpOwo+IC0KPiAtCWNhY2hlbGluZV9h Y3F1aXJlKGNsLCB0bC0+aHdzcF9vZmZzZXQpOwo+IC0JdGwtPmh3c3BfY2FjaGVsaW5lID0gY2w7 Cj4gKwl0bC0+aHdzcF9vZmZzZXQgPSBpOTE1X2dndHRfb2Zmc2V0KHRsLT5od3NwX2dndHQpICsg bmV4dF9vZnM7Cj4gKwl0bC0+aHdzcF9zZXFubyA9IHRsLT5od3NwX21hcCArIG5leHRfb2ZzOwo+ ICsJaW50ZWxfdGltZWxpbmVfcmVzZXRfc2Vxbm8odGwpOwo+ICAgCj4gICAJKnNlcW5vID0gdGlt ZWxpbmVfYWR2YW5jZSh0bCk7Cj4gICAJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgqdGwt Pmh3c3Bfc2Vxbm8sICpzZXFubykpOwo+ICAgCXJldHVybiAwOwo+IC0KPiAtZXJyX2NhY2hlbGlu ZToKPiAtCWNhY2hlbGluZV9mcmVlKGNsKTsKPiAtZXJyX3VucGluOgo+IC0JaTkxNV92bWFfdW5w aW4odm1hKTsKPiAtZXJyX3JvbGxiYWNrOgo+IC0JdGltZWxpbmVfcm9sbGJhY2sodGwpOwo+IC0J cmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICAgaW50IGludGVsX3RpbWVsaW5lX2dldF9zZXFubyhz dHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRsLAo+IEBAIC01NTksNTEgKzMwMyw1MiBAQCBpbnQgaW50 ZWxfdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwsCj4gICAJKnNl cW5vID0gdGltZWxpbmVfYWR2YW5jZSh0bCk7Cj4gICAKPiAgIAkvKiBSZXBsYWNlIHRoZSBIV1NQ IG9uIHdyYXBhcm91bmQgZm9yIEhXIHNlbWFwaG9yZXMgKi8KPiAtCWlmICh1bmxpa2VseSghKnNl cW5vICYmIHRsLT5od3NwX2NhY2hlbGluZSkpCj4gLQkJcmV0dXJuIF9faW50ZWxfdGltZWxpbmVf Z2V0X3NlcW5vKHRsLCBycSwgc2Vxbm8pOwo+ICsJaWYgKHVubGlrZWx5KCEqc2Vxbm8gJiYgdGwt Pmhhc19pbml0aWFsX2JyZWFkY3J1bWIpKQo+ICsJCXJldHVybiBfX2ludGVsX3RpbWVsaW5lX2dl dF9zZXFubyh0bCwgc2Vxbm8pOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtc3Rh dGljIGludCBjYWNoZWxpbmVfcmVmKHN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmNs LAo+IC0JCQkgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gLXsKPiAtCXJldHVybiBpOTE1X2Fj dGl2ZV9hZGRfcmVxdWVzdCgmY2wtPmFjdGl2ZSwgcnEpOwo+IC19Cj4gLQo+ICAgaW50IGludGVs X3RpbWVsaW5lX3JlYWRfaHdzcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tLAo+ICAgCQkJICAg ICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0bywKPiAgIAkJCSAgICAgdTMyICpod3NwKQo+ICAgewo+ IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7Cj4gKwlzdHJ1Y3QgaW50ZWxf dGltZWxpbmUgKnRsOwo+ICAgCWludCBlcnI7Cj4gICAKPiAtCUdFTV9CVUdfT04oIXJjdV9hY2Nl c3NfcG9pbnRlcihmcm9tLT5od3NwX2NhY2hlbGluZSkpOwo+IC0KPiAgIAlyY3VfcmVhZF9sb2Nr KCk7Cj4gLQljbCA9IHJjdV9kZXJlZmVyZW5jZShmcm9tLT5od3NwX2NhY2hlbGluZSk7Cj4gLQlp ZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChmcm9tKSkgLyogY29uZmlybSBjYWNoZWxpbmUgaXMg dmFsaWQgKi8KPiAtCQlnb3RvIHVubG9jazsKPiAtCWlmICh1bmxpa2VseSghaTkxNV9hY3RpdmVf YWNxdWlyZV9pZl9idXN5KCZjbC0+YWN0aXZlKSkpCj4gLQkJZ290byB1bmxvY2s7IC8qIHNlcW5v IHdyYXBwZWQgYW5kIGNvbXBsZXRlZCEgKi8KPiAtCWlmICh1bmxpa2VseShpOTE1X3JlcXVlc3Rf Y29tcGxldGVkKGZyb20pKSkKPiAtCQlnb3RvIHJlbGVhc2U7Cj4gKwl0bCA9IHJjdV9kZXJlZmVy ZW5jZShmcm9tLT50aW1lbGluZSk7Cj4gKwlpZiAoaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChmcm9t KSB8fAo+ICsJICAgICFpOTE1X2FjdGl2ZV9hY3F1aXJlX2lmX2J1c3koJnRsLT5hY3RpdmUpKQo+ ICsJCXRsID0gTlVMTDsKPiArCj4gKwlpZiAodGwpIHsKPiArCQkvKiBod3NwX29mZnNldCBtYXkg d3JhcGFyb3VuZCwgc28gdXNlIGZyb20tPmh3c3Bfc2Vxbm8gKi8KPiArCQkqaHdzcCA9IGk5MTVf Z2d0dF9vZmZzZXQodGwtPmh3c3BfZ2d0dCkgKwo+ICsJCQlvZmZzZXRfaW5fcGFnZShmcm9tLT5o d3NwX3NlcW5vKTsKPiArCX0KPiArCj4gKwkvKiBlbnN1cmUgd2Ugd2FpdCBvbiB0aGUgcmlnaHQg cmVxdWVzdCwgaWYgbm90LCB3ZSBjb21wbGV0ZWQgKi8KPiArCWlmICh0bCAmJiBpOTE1X3JlcXVl c3RfY29tcGxldGVkKGZyb20pKSB7Cj4gKwkJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2 ZSk7Cj4gKwkJdGwgPSBOVUxMOwo+ICsJfQo+ICAgCXJjdV9yZWFkX3VubG9jaygpOwo+ICAgCj4g LQllcnIgPSBjYWNoZWxpbmVfcmVmKGNsLCB0byk7Cj4gLQlpZiAoZXJyKQo+ICsJaWYgKCF0bCkK PiArCQlyZXR1cm4gMTsKPiArCj4gKwkvKiBDYW4ndCBkbyBzZW1hcGhvcmUgd2FpdHMgb24ga2Vy bmVsIGNvbnRleHQgKi8KPiArCWlmICghdGwtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIpIHsKPiAr CQllcnIgPSAtRUlOVkFMOwo+ICAgCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwllcnIgPSBpOTE1 X2FjdGl2ZV9hZGRfcmVxdWVzdCgmdGwtPmFjdGl2ZSwgdG8pOwo+ICAgCj4gLQkqaHdzcCA9IGNs LT5nZ3R0X29mZnNldDsKPiAgIG91dDoKPiAtCWk5MTVfYWN0aXZlX3JlbGVhc2UoJmNsLT5hY3Rp dmUpOwo+ICsJaTkxNV9hY3RpdmVfcmVsZWFzZSgmdGwtPmFjdGl2ZSk7Cj4gICAJcmV0dXJuIGVy cjsKPiAtCj4gLXJlbGVhc2U6Cj4gLQlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZjbC0+YWN0aXZlKTsK PiAtdW5sb2NrOgo+IC0JcmN1X3JlYWRfdW5sb2NrKCk7Cj4gLQlyZXR1cm4gMTsKPiAgIH0KPiAg IAo+ICAgdm9pZCBpbnRlbF90aW1lbGluZV91bnBpbihzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgKnRs KQo+IEBAIC02MTIsOCArMzU3LDcgQEAgdm9pZCBpbnRlbF90aW1lbGluZV91bnBpbihzdHJ1Y3Qg aW50ZWxfdGltZWxpbmUgKnRsKQo+ICAgCWlmICghYXRvbWljX2RlY19hbmRfdGVzdCgmdGwtPnBp bl9jb3VudCkpCj4gICAJCXJldHVybjsKPiAgIAo+IC0JY2FjaGVsaW5lX3JlbGVhc2UodGwtPmh3 c3BfY2FjaGVsaW5lKTsKPiAtCj4gKwlpOTE1X2FjdGl2ZV9yZWxlYXNlKCZ0bC0+YWN0aXZlKTsK PiAgIAlfX2k5MTVfdm1hX3VucGluKHRsLT5od3NwX2dndHQpOwo+ICAgfQo+ICAgCj4gQEAgLTYy Miw4ICszNjYsMTEgQEAgdm9pZCBfX2ludGVsX3RpbWVsaW5lX2ZyZWUoc3RydWN0IGtyZWYgKmty ZWYpCj4gICAJc3RydWN0IGludGVsX3RpbWVsaW5lICp0aW1lbGluZSA9Cj4gICAJCWNvbnRhaW5l cl9vZihrcmVmLCB0eXBlb2YoKnRpbWVsaW5lKSwga3JlZik7Cj4gICAKPiAtCWludGVsX3RpbWVs aW5lX2ZpbmkodGltZWxpbmUpOwo+IC0Ja2ZyZWVfcmN1KHRpbWVsaW5lLCByY3UpOwo+ICsJR0VN X0JVR19PTihhdG9taWNfcmVhZCgmdGltZWxpbmUtPnBpbl9jb3VudCkpOwo+ICsJR0VNX0JVR19P TighbGlzdF9lbXB0eSgmdGltZWxpbmUtPnJlcXVlc3RzKSk7Cj4gKwlHRU1fQlVHX09OKHRpbWVs aW5lLT5yZXRpcmUpOwo+ICsKPiArCWNhbGxfcmN1KCZ0aW1lbGluZS0+cmN1LCBpbnRlbF90aW1l bGluZV9maW5pKTsKPiAgIH0KPiAgIAo+ICAgdm9pZCBpbnRlbF9ndF9maW5pX3RpbWVsaW5lcyhz dHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+IEBAIC02MzEsNyArMzc4LDYgQEAgdm9pZCBpbnRlbF9ndF9m aW5pX3RpbWVsaW5lcyhzdHJ1Y3QgaW50ZWxfZ3QgKmd0KQo+ICAgCXN0cnVjdCBpbnRlbF9ndF90 aW1lbGluZXMgKnRpbWVsaW5lcyA9ICZndC0+dGltZWxpbmVzOwo+ICAgCj4gICAJR0VNX0JVR19P TighbGlzdF9lbXB0eSgmdGltZWxpbmVzLT5hY3RpdmVfbGlzdCkpOwo+IC0JR0VNX0JVR19PTigh bGlzdF9lbXB0eSgmdGltZWxpbmVzLT5od3NwX2ZyZWVfbGlzdCkpOwo+ICAgfQo+ICAgCj4gICB2 b2lkIGludGVsX2d0X3Nob3dfdGltZWxpbmVzKHN0cnVjdCBpbnRlbF9ndCAqZ3QsCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9pbnRlbF90aW1lbGluZV90eXBlcy5oCj4gaW5kZXggZTM2 MGY1MDcwNmJmLi45YzFkNzY3YTg2N2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvZ3QvaW50ZWxfdGltZWxpbmVfdHlwZXMuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L2ludGVsX3RpbWVsaW5lX3R5cGVzLmgKPiBAQCAtMTgsNyArMTgsNiBAQAo+ICAgc3RydWN0 IGk5MTVfdm1hOwo+ICAgc3RydWN0IGk5MTVfc3luY21hcDsKPiAgIHN0cnVjdCBpbnRlbF9ndDsK PiAtc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3A7Cj4gICAKPiAgIHN0cnVjdCBpbnRlbF90aW1l bGluZSB7Cj4gICAJdTY0IGZlbmNlX2NvbnRleHQ7Cj4gQEAgLTQ1LDEyICs0NCwxMSBAQCBzdHJ1 Y3QgaW50ZWxfdGltZWxpbmUgewo+ICAgCWF0b21pY190IHBpbl9jb3VudDsKPiAgIAlhdG9taWNf dCBhY3RpdmVfY291bnQ7Cj4gICAKPiArCXZvaWQgKmh3c3BfbWFwOwo+ICAgCWNvbnN0IHUzMiAq aHdzcF9zZXFubzsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKmh3c3BfZ2d0dDsKPiAgIAl1MzIgaHdz cF9vZmZzZXQ7Cj4gICAKPiAtCXN0cnVjdCBpbnRlbF90aW1lbGluZV9jYWNoZWxpbmUgKmh3c3Bf Y2FjaGVsaW5lOwo+IC0KPiAgIAlib29sIGhhc19pbml0aWFsX2JyZWFkY3J1bWI7Cj4gICAKPiAg IAkvKioKPiBAQCAtNjcsNiArNjUsOCBAQCBzdHJ1Y3QgaW50ZWxfdGltZWxpbmUgewo+ICAgCSAq Lwo+ICAgCXN0cnVjdCBpOTE1X2FjdGl2ZV9mZW5jZSBsYXN0X3JlcXVlc3Q7Cj4gICAKPiArCXN0 cnVjdCBpOTE1X2FjdGl2ZSBhY3RpdmU7Cj4gKwo+ICAgCS8qKiBBIGNoYWluIG9mIGNvbXBsZXRl ZCB0aW1lbGluZXMgcmVhZHkgZm9yIGVhcmx5IHJldGlyZW1lbnQuICovCj4gICAJc3RydWN0IGlu dGVsX3RpbWVsaW5lICpyZXRpcmU7Cj4gICAKPiBAQCAtOTAsMTUgKzkwLDQgQEAgc3RydWN0IGlu dGVsX3RpbWVsaW5lIHsKPiAgIAlzdHJ1Y3QgcmN1X2hlYWQgcmN1Owo+ICAgfTsKPiAgIAo+IC1z dHJ1Y3QgaW50ZWxfdGltZWxpbmVfY2FjaGVsaW5lIHsKPiAtCXN0cnVjdCBpOTE1X2FjdGl2ZSBh Y3RpdmU7Cj4gLQo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2h3c3AgKmh3c3A7Cj4gLQl2b2lk ICp2YWRkcjsKPiAtCj4gLQl1MzIgZ2d0dF9vZmZzZXQ7Cj4gLQo+IC0Jc3RydWN0IHJjdV9oZWFk IHJjdTsKPiAtfTsKPiAtCj4gICAjZW5kaWYgLyogX19JOTE1X1RJTUVMSU5FX1RZUEVTX0hfXyAq Lwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVf Y3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2d0L3NlbGZ0ZXN0X2VuZ2luZV9jcy5jCj4gaW5k ZXggNDM5Yzg5ODRmNWZhLi5mZDk0MTRiMGQxYmQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfZW5naW5lX2NzLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9ndC9zZWxmdGVzdF9lbmdpbmVfY3MuYwo+IEBAIC00Miw2ICs0Miw5IEBAIHN0YXRpYyBp bnQgcGVyZl9lbmQoc3RydWN0IGludGVsX2d0ICpndCkKPiAgIAo+ICAgc3RhdGljIGludCB3cml0 ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQo+ICAgewo+ICsJ c3RydWN0IGludGVsX3RpbWVsaW5lICp0bCA9Cj4gKwkJcmN1X2RlcmVmZXJlbmNlX3Byb3RlY3Rl ZChycS0+dGltZWxpbmUsCj4gKwkJCQkJICAhaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJxKSk7Cj4g ICAJdTMyIGNtZDsKPiAgIAl1MzIgKmNzOwo+ICAgCj4gQEAgLTU0LDcgKzU3LDcgQEAgc3RhdGlj IGludCB3cml0ZV90aW1lc3RhbXAoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsIGludCBzbG90KQo+ ICAgCQljbWQrKzsKPiAgIAkqY3MrKyA9IGNtZDsKPiAgIAkqY3MrKyA9IGk5MTVfbW1pb19yZWdf b2Zmc2V0KFJJTkdfVElNRVNUQU1QKHJxLT5lbmdpbmUtPm1taW9fYmFzZSkpOwo+IC0JKmNzKysg PSBpOTE1X3JlcXVlc3RfdGltZWxpbmUocnEpLT5od3NwX29mZnNldCArIHNsb3QgKiBzaXplb2Yo dTMyKTsKPiArCSpjcysrID0gdGwtPmh3c3Bfb2Zmc2V0ICsgc2xvdCAqIHNpemVvZih1MzIpOwo+ ICAgCSpjcysrID0gMDsKPiAgIAo+ICAgCWludGVsX3JpbmdfYWR2YW5jZShycSwgY3MpOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9zZWxmdGVzdF90aW1lbGluZS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Qvc2VsZnRlc3RfdGltZWxpbmUuYwo+IGluZGV4IDZmM2Ez Njg3ZWYwZi4uNmUzMmU5MWNkYWI0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2d0L3NlbGZ0ZXN0X3RpbWVsaW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndC9z ZWxmdGVzdF90aW1lbGluZS5jCj4gQEAgLTY2Niw3ICs2NjYsNyBAQCBzdGF0aWMgaW50IGxpdmVf aHdzcF93cmFwKHZvaWQgKmFyZykKPiAgIAlpZiAoSVNfRVJSKHRsKSkKPiAgIAkJcmV0dXJuIFBU Ul9FUlIodGwpOwo+ICAgCj4gLQlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0 bC0+aHdzcF9jYWNoZWxpbmUpCj4gKwlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQo+ ICAgCQlnb3RvIG91dF9mcmVlOwo+ICAgCj4gICAJZXJyID0gaW50ZWxfdGltZWxpbmVfcGluKHRs LCBOVUxMKTsKPiBAQCAtODMzLDEyICs4MzMsMjYgQEAgc3RhdGljIGludCBzZXR1cF93YXRjaGVy KHN0cnVjdCBod3NwX3dhdGNoZXIgKncsIHN0cnVjdCBpbnRlbF9ndCAqZ3QpCj4gICAJcmV0dXJu IDA7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQgc3dpdGNoX3RsX2xvY2soc3RydWN0IGk5MTVf cmVxdWVzdCAqZnJvbSwgc3RydWN0IGk5MTVfcmVxdWVzdCAqdG8pCj4gK3sKPiArCS8qIHNvbWUg bGlnaHQgbXV0ZXgganVnZ2xpbmcgcmVxdWlyZWQ7IHRoaW5rIGNvLXJvdXRpbmVzICovCj4gKwo+ ICsJaWYgKGZyb20pIHsKPiArCQlsb2NrZGVwX3VucGluX2xvY2soJmZyb20tPmNvbnRleHQtPnRp bWVsaW5lLT5tdXRleCwgZnJvbS0+Y29va2llKTsKPiArCQltdXRleF91bmxvY2soJmZyb20tPmNv bnRleHQtPnRpbWVsaW5lLT5tdXRleCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKHRvKSB7Cj4gKwkJbXV0 ZXhfbG9jaygmdG8tPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7Cj4gKwkJdG8tPmNvb2tpZSA9 IGxvY2tkZXBfcGluX2xvY2soJnRvLT5jb250ZXh0LT50aW1lbGluZS0+bXV0ZXgpOwo+ICsJfQo+ ICt9Cj4gKwo+ICAgc3RhdGljIGludCBjcmVhdGVfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVy ICp3LAo+ICAgCQkJICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gICAJCQkgIGlu dCByaW5nc3opCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlOwo+IC0Jc3RydWN0 IGludGVsX3RpbWVsaW5lICp0bDsKPiAgIAo+ICAgCWNlID0gaW50ZWxfY29udGV4dF9jcmVhdGUo ZW5naW5lKTsKPiAgIAlpZiAoSVNfRVJSKGNlKSkKPiBAQCAtODUxLDExICs4NjUsOCBAQCBzdGF0 aWMgaW50IGNyZWF0ZV93YXRjaGVyKHN0cnVjdCBod3NwX3dhdGNoZXIgKncsCj4gICAJCXJldHVy biBQVFJfRVJSKHctPnJxKTsKPiAgIAo+ICAgCXctPmFkZHIgPSBpOTE1X2dndHRfb2Zmc2V0KHct PnZtYSk7Cj4gLQl0bCA9IHctPnJxLT5jb250ZXh0LT50aW1lbGluZTsKPiAgIAo+IC0JLyogc29t ZSBsaWdodCBtdXRleCBqdWdnbGluZyByZXF1aXJlZDsgdGhpbmsgY28tcm91dGluZXMgKi8KPiAt CWxvY2tkZXBfdW5waW5fbG9jaygmdGwtPm11dGV4LCB3LT5ycS0+Y29va2llKTsKPiAtCW11dGV4 X3VubG9jaygmdGwtPm11dGV4KTsKPiArCXN3aXRjaF90bF9sb2NrKHctPnJxLCBOVUxMKTsKPiAg IAo+ICAgCXJldHVybiAwOwo+ICAgfQo+IEBAIC04NjQsMTUgKzg3NSwxMyBAQCBzdGF0aWMgaW50 IGNoZWNrX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywgY29uc3QgY2hhciAqbmFtZSwK PiAgIAkJCSBib29sICgqb3ApKHUzMiBod3NwLCB1MzIgc2Vxbm8pKQo+ICAgewo+ICAgCXN0cnVj dCBpOTE1X3JlcXVlc3QgKnJxID0gZmV0Y2hfYW5kX3plcm8oJnctPnJxKTsKPiAtCXN0cnVjdCBp bnRlbF90aW1lbGluZSAqdGwgPSBycS0+Y29udGV4dC0+dGltZWxpbmU7Cj4gICAJdTMyIG9mZnNl dCwgZW5kOwo+ICAgCWludCBlcnI7Cj4gICAKPiAgIAlHRU1fQlVHX09OKHctPmFkZHIgLSBpOTE1 X2dndHRfb2Zmc2V0KHctPnZtYSkgPiB3LT52bWEtPnNpemUpOwo+ICAgCj4gICAJaTkxNV9yZXF1 ZXN0X2dldChycSk7Cj4gLQltdXRleF9sb2NrKCZ0bC0+bXV0ZXgpOwo+IC0JcnEtPmNvb2tpZSA9 IGxvY2tkZXBfcGluX2xvY2soJnRsLT5tdXRleCk7Cj4gKwlzd2l0Y2hfdGxfbG9jayhOVUxMLCBy cSk7Cj4gICAJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gICAKPiAgIAlpZiAoaTkxNV9yZXF1ZXN0 X3dhaXQocnEsIDAsIEhaKSA8IDApIHsKPiBAQCAtOTAxLDEwICs5MTAsNyBAQCBzdGF0aWMgaW50 IGNoZWNrX3dhdGNoZXIoc3RydWN0IGh3c3Bfd2F0Y2hlciAqdywgY29uc3QgY2hhciAqbmFtZSwK PiAgIHN0YXRpYyB2b2lkIGNsZWFudXBfd2F0Y2hlcihzdHJ1Y3QgaHdzcF93YXRjaGVyICp3KQo+ ICAgewo+ICAgCWlmICh3LT5ycSkgewo+IC0JCXN0cnVjdCBpbnRlbF90aW1lbGluZSAqdGwgPSB3 LT5ycS0+Y29udGV4dC0+dGltZWxpbmU7Cj4gLQo+IC0JCW11dGV4X2xvY2soJnRsLT5tdXRleCk7 Cj4gLQkJdy0+cnEtPmNvb2tpZSA9IGxvY2tkZXBfcGluX2xvY2soJnRsLT5tdXRleCk7Cj4gKwkJ c3dpdGNoX3RsX2xvY2soTlVMTCwgdy0+cnEpOwo+ICAgCj4gICAJCWk5MTVfcmVxdWVzdF9hZGQo dy0+cnEpOwo+ICAgCX0KPiBAQCAtOTQyLDcgKzk0OCw3IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9y ZXF1ZXN0ICp3cmFwX3RpbWVsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgCX0KPiAg IAo+ICAgCWk5MTVfcmVxdWVzdF9wdXQocnEpOwo+IC0JcnEgPSBpbnRlbF9jb250ZXh0X2NyZWF0 ZV9yZXF1ZXN0KGNlKTsKPiArCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShjZSk7Cj4gICAJaWYg KElTX0VSUihycSkpCj4gICAJCXJldHVybiBycTsKPiAgIAo+IEBAIC05NzcsNyArOTgzLDcgQEAg c3RhdGljIGludCBsaXZlX2h3c3BfcmVhZCh2b2lkICphcmcpCj4gICAJaWYgKElTX0VSUih0bCkp Cj4gICAJCXJldHVybiBQVFJfRVJSKHRsKTsKPiAgIAo+IC0JaWYgKCF0bC0+aHdzcF9jYWNoZWxp bmUpCj4gKwlpZiAoIXRsLT5oYXNfaW5pdGlhbF9icmVhZGNydW1iKQo+ICAgCQlnb3RvIG91dF9m cmVlOwo+ICAgCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUod2F0Y2hlcik7IGkrKykg ewo+IEBAIC05OTksNyArMTAwNSw3IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAq YXJnKQo+ICAgCQlkbyB7Cj4gICAJCQlzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqc3VibWl0Owo+ICAg CQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gLQkJCXUzMiBod3NwOwo+ICsJCQl1MzIgaHdz cCwgZHVtbXk7Cj4gICAKPiAgIAkJCXN1Ym1pdCA9IGhlYXBfZmVuY2VfY3JlYXRlKEdGUF9LRVJO RUwpOwo+ICAgCQkJaWYgKCFzdWJtaXQpIHsKPiBAQCAtMTAxNywxNCArMTAyMywyNiBAQCBzdGF0 aWMgaW50IGxpdmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKPiAgIAkJCQlnb3RvIG91dDsKPiAgIAkJ CX0KPiAgIAo+IC0JCQkvKiBTa2lwIHRvIHRoZSBlbmQsIHNhdmluZyAzMCBtaW51dGVzIG9mIG5v cHMgKi8KPiAtCQkJdGwtPnNlcW5vID0gLTEwdSArIDIgKiAoY291bnQgJiAzKTsKPiAtCQkJV1JJ VEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCB0bC0+c2Vxbm8pOwo+ICAgCQkJY2UtPnRp bWVsaW5lID0gaW50ZWxfdGltZWxpbmVfZ2V0KHRsKTsKPiAgIAo+IC0JCQlycSA9IGludGVsX2Nv bnRleHRfY3JlYXRlX3JlcXVlc3QoY2UpOwo+ICsJCQkvKiBFbnN1cmUgdGltZWxpbmUgaXMgbWFw cGVkLCBkb25lIGR1cmluZyBmaXJzdCBwaW4gKi8KPiArCQkJZXJyID0gaW50ZWxfY29udGV4dF9w aW4oY2UpOwo+ICsJCQlpZiAoZXJyKSB7Cj4gKwkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7Cj4g KwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJLyoKPiArCQkJICogU3RhcnQgYXQgYSBu ZXcgd3JhcCwgYW5kIHNldCBzZXFubyByaWdodCBiZWZvcmUgYW5vdGhlciB3cmFwLAo+ICsJCQkg KiBzYXZpbmcgMzAgbWludXRlcyBvZiBub3BzCj4gKwkJCSAqLwo+ICsJCQl0bC0+c2Vxbm8gPSAt MTJ1ICsgMiAqIChjb3VudCAmIDMpOwo+ICsJCQlfX2ludGVsX3RpbWVsaW5lX2dldF9zZXFubyh0 bCwgJmR1bW15KTsKPiArCj4gKwkJCXJxID0gaTkxNV9yZXF1ZXN0X2NyZWF0ZShjZSk7Cj4gICAJ CQlpZiAoSVNfRVJSKHJxKSkgewo+ICAgCQkJCWVyciA9IFBUUl9FUlIocnEpOwo+ICsJCQkJaW50 ZWxfY29udGV4dF91bnBpbihjZSk7Cj4gICAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+ICAg CQkJCWdvdG8gb3V0Owo+ICAgCQkJfQo+IEBAIC0xMDM0LDMyICsxMDUyLDM1IEBAIHN0YXRpYyBp bnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQo+ICAgCQkJCQkJCSAgICBHRlBfS0VSTkVMKTsK PiAgIAkJCWlmIChlcnIgPCAwKSB7Cj4gICAJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwkJ CQlpbnRlbF9jb250ZXh0X3VucGluKGNlKTsKPiAgIAkJCQlpbnRlbF9jb250ZXh0X3B1dChjZSk7 Cj4gICAJCQkJZ290byBvdXQ7Cj4gICAJCQl9Cj4gICAKPiAtCQkJbXV0ZXhfbG9jaygmd2F0Y2hl clswXS5ycS0+Y29udGV4dC0+dGltZWxpbmUtPm11dGV4KTsKPiArCQkJc3dpdGNoX3RsX2xvY2so cnEsIHdhdGNoZXJbMF0ucnEpOwo+ICAgCQkJZXJyID0gaW50ZWxfdGltZWxpbmVfcmVhZF9od3Nw KHJxLCB3YXRjaGVyWzBdLnJxLCAmaHdzcCk7Cj4gICAJCQlpZiAoZXJyID09IDApCj4gICAJCQkJ ZXJyID0gZW1pdF9yZWFkX2h3c3Aod2F0Y2hlclswXS5ycSwgLyogYmVmb3JlICovCj4gICAJCQkJ CQkgICAgIHJxLT5mZW5jZS5zZXFubywgaHdzcCwKPiAgIAkJCQkJCSAgICAgJndhdGNoZXJbMF0u YWRkcik7Cj4gLQkJCW11dGV4X3VubG9jaygmd2F0Y2hlclswXS5ycS0+Y29udGV4dC0+dGltZWxp bmUtPm11dGV4KTsKPiArCQkJc3dpdGNoX3RsX2xvY2sod2F0Y2hlclswXS5ycSwgcnEpOwoKVWdo IHRoaXMgaXMgc29tZSBhZHZhbmNlZCBzdHVmZi4gVHJpY2t5bmVzcyBsZXZlbCBvdXQgb2YgMTA/ CgpDaGFuZ2UgaXMgInRvdWNoaW5nIiB0d28gbXV0ZXhlcyBpbnN0ZWFkIG9mIG9uZS4KCkRvIHlv dSBoYXZlIGEgYnJhbmNoIHNvbWV3aGVyZSBJIGNvdWxkIGNoZWNrIG91dCBhdCB0aGlzIHN0YWdl IGFuZCBsb29rIAphdCB0aGUgY29kZSB0byB0cnkgYW5kIGZpZ3VyZSBpdCBvdXQgbW9yZSBlYXNp bHk/Cgo+ICAgCQkJaWYgKGVycikgewo+ICAgCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJ CQkJaW50ZWxfY29udGV4dF91bnBpbihjZSk7Cj4gICAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2Up Owo+ICAgCQkJCWdvdG8gb3V0Owo+ICAgCQkJfQo+ICAgCj4gLQkJCW11dGV4X2xvY2soJndhdGNo ZXJbMV0ucnEtPmNvbnRleHQtPnRpbWVsaW5lLT5tdXRleCk7Cj4gKwkJCXN3aXRjaF90bF9sb2Nr KHJxLCB3YXRjaGVyWzFdLnJxKTsKPiAgIAkJCWVyciA9IGludGVsX3RpbWVsaW5lX3JlYWRfaHdz cChycSwgd2F0Y2hlclsxXS5ycSwgJmh3c3ApOwo+ICAgCQkJaWYgKGVyciA9PSAwKQo+ICAgCQkJ CWVyciA9IGVtaXRfcmVhZF9od3NwKHdhdGNoZXJbMV0ucnEsIC8qIGFmdGVyICovCj4gICAJCQkJ CQkgICAgIHJxLT5mZW5jZS5zZXFubywgaHdzcCwKPiAgIAkJCQkJCSAgICAgJndhdGNoZXJbMV0u YWRkcik7Cj4gLQkJCW11dGV4X3VubG9jaygmd2F0Y2hlclsxXS5ycS0+Y29udGV4dC0+dGltZWxp bmUtPm11dGV4KTsKPiArCQkJc3dpdGNoX3RsX2xvY2sod2F0Y2hlclsxXS5ycSwgcnEpOwo+ICAg CQkJaWYgKGVycikgewo+ICAgCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJCQkJaW50ZWxf Y29udGV4dF91bnBpbihjZSk7Cj4gICAJCQkJaW50ZWxfY29udGV4dF9wdXQoY2UpOwo+ICAgCQkJ CWdvdG8gb3V0Owo+ICAgCQkJfQo+IEBAIC0xMDY4LDYgKzEwODksNyBAQCBzdGF0aWMgaW50IGxp dmVfaHdzcF9yZWFkKHZvaWQgKmFyZykKPiAgIAkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICAg Cj4gICAJCQlycSA9IHdyYXBfdGltZWxpbmUocnEpOwo+ICsJCQlpbnRlbF9jb250ZXh0X3VucGlu KGNlKTsKPiAgIAkJCWludGVsX2NvbnRleHRfcHV0KGNlKTsKPiAgIAkJCWlmIChJU19FUlIocnEp KSB7Cj4gICAJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gQEAgLTExMDcsOCArMTEyOSw4IEBAIHN0 YXRpYyBpbnQgbGl2ZV9od3NwX3JlYWQodm9pZCAqYXJnKQo+ICAgCQkJICAgIDMgKiB3YXRjaGVy WzFdLnJxLT5yaW5nLT5zaXplKQo+ICAgCQkJCWJyZWFrOwo+ICAgCj4gLQkJfSB3aGlsZSAoIV9f aWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpKTsKPiAtCQlXUklURV9PTkNFKCoodTMyICopdGwt Pmh3c3Bfc2Vxbm8sIDB4ZGVhZGJlZWYpOwo+ICsJCX0gd2hpbGUgKCFfX2lndF90aW1lb3V0KGVu ZF90aW1lLCBOVUxMKSAmJgo+ICsJCQkgY291bnQgPCAoUEFHRV9TSVpFIC8gVElNRUxJTkVfU0VR Tk9fQllURVMgLSAxKSAvIDIpOwo+ICAgCj4gICAJCXByX2luZm8oIiVzOiBzaW11bGF0ZWQgJWx1 IHdyYXBzXG4iLCBlbmdpbmUtPm5hbWUsIGNvdW50KTsKPiAgIAkJZXJyID0gY2hlY2tfd2F0Y2hl cigmd2F0Y2hlclsxXSwgImFmdGVyIiwgY21wX2d0ZSk7Cj4gQEAgLTExNTMsOSArMTE3NSw3IEBA IHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JvbGxvdmVyX2tlcm5lbCh2b2lkICphcmcpCj4gICAJCX0K PiAgIAo+ICAgCQlHRU1fQlVHX09OKGk5MTVfYWN0aXZlX2ZlbmNlX2lzc2V0KCZ0bC0+bGFzdF9y ZXF1ZXN0KSk7Cj4gLQkJdGwtPnNlcW5vID0gMDsKPiAtCQl0aW1lbGluZV9yb2xsYmFjayh0bCk7 Cj4gLQkJdGltZWxpbmVfcm9sbGJhY2sodGwpOwo+ICsJCXRsLT5zZXFubyA9IC0ydTsKPiAgIAkJ V1JJVEVfT05DRSgqKHUzMiAqKXRsLT5od3NwX3NlcW5vLCB0bC0+c2Vxbm8pOwo+ICAgCj4gICAJ CWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHJxKTsgaSsrKSB7Cj4gQEAgLTEyMzUsMTEgKzEy NTUsMTAgQEAgc3RhdGljIGludCBsaXZlX2h3c3Bfcm9sbG92ZXJfdXNlcih2b2lkICphcmcpCj4g ICAJCQlnb3RvIG91dDsKPiAgIAo+ICAgCQl0bCA9IGNlLT50aW1lbGluZTsKPiAtCQlpZiAoIXRs LT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9jYWNoZWxpbmUpCj4gKwkJaWYg KCF0bC0+aGFzX2luaXRpYWxfYnJlYWRjcnVtYikKPiAgIAkJCWdvdG8gb3V0Owo+ICAgCj4gLQkJ dGltZWxpbmVfcm9sbGJhY2sodGwpOwo+IC0JCXRpbWVsaW5lX3JvbGxiYWNrKHRsKTsKPiArCQl0 bC0+c2Vxbm8gPSAtNHU7Cj4gICAJCVdSSVRFX09OQ0UoKih1MzIgKil0bC0+aHdzcF9zZXFubywg dGwtPnNlcW5vKTsKPiAgIAo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShycSk7IGkr Kykgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggYmZkODJkODI1OWY0 Li5iNjYxYjNiNTk5MmUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBA IC04NTEsNyArODUxLDYgQEAgX19pOTE1X3JlcXVlc3RfY3JlYXRlKHN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZSwgZ2ZwX3QgZ2ZwKQo+ICAgCXJxLT5mZW5jZS5zZXFubyA9IHNlcW5vOwo+ICAgCj4g ICAJUkNVX0lOSVRfUE9JTlRFUihycS0+dGltZWxpbmUsIHRsKTsKPiAtCVJDVV9JTklUX1BPSU5U RVIocnEtPmh3c3BfY2FjaGVsaW5lLCB0bC0+aHdzcF9jYWNoZWxpbmUpOwo+ICAgCXJxLT5od3Nw X3NlcW5vID0gdGwtPmh3c3Bfc2Vxbm87Cj4gICAJR0VNX0JVR19PTihpOTE1X3JlcXVlc3RfY29t cGxldGVkKHJxKSk7Cj4gICAKPiBAQCAtMTA5MCw5ICsxMDg5LDYgQEAgZW1pdF9zZW1hcGhvcmVf d2FpdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICp0bywKPiAgIAlpZiAoaTkxNV9yZXF1ZXN0X2hhc19p bml0aWFsX2JyZWFkY3J1bWIodG8pKQo+ICAgCQlnb3RvIGF3YWl0X2ZlbmNlOwo+ICAgCj4gLQlp ZiAoIXJjdV9hY2Nlc3NfcG9pbnRlcihmcm9tLT5od3NwX2NhY2hlbGluZSkpCj4gLQkJZ290byBh d2FpdF9mZW5jZTsKPiAtCj4gICAJLyoKPiAgIAkgKiBJZiB0aGlzIG9yIGl0cyBkZXBlbmRlbnRz IGFyZSB3YWl0aW5nIG9uIGFuIGV4dGVybmFsIGZlbmNlCj4gICAJICogdGhhdCBtYXkgZmFpbCBj YXRhc3Ryb3BoaWNhbGx5LCB0aGVuIHdlIHdhbnQgdG8gYXZvaWQgdXNpbmcKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3JlcXVlc3QuaAo+IGluZGV4IGE4YzQxMzIwM2Y3Mi4uYzI1YjBhZmNjMjI1IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBAQCAtMjM3LDE2ICsyMzcsNiBA QCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsKPiAgIAkgKi8KPiAgIAljb25zdCB1MzIgKmh3c3Bfc2Vx bm87Cj4gICAKPiAtCS8qCj4gLQkgKiBJZiB3ZSBuZWVkIHRvIGFjY2VzcyB0aGUgdGltZWxpbmUn cyBzZXFubyBmb3IgdGhpcyByZXF1ZXN0IGluCj4gLQkgKiBhbm90aGVyIHJlcXVlc3QsIHdlIG5l ZWQgdG8ga2VlcCBhIHJlYWQgcmVmZXJlbmNlIHRvIHRoaXMgYXNzb2NpYXRlZAo+IC0JICogY2Fj aGVsaW5lLCBzbyB0aGF0IHdlIGRvIG5vdCBmcmVlIGFuZCByZWN5Y2xlIGl0IGJlZm9yZSB0aGUg Zm9yZWlnbgo+IC0JICogb2JzZXJ2ZXJzIGhhdmUgY29tcGxldGVkLiBIZW5jZSwgd2Uga2VlcCBh IHBvaW50ZXIgdG8gdGhlIGNhY2hlbGluZQo+IC0JICogaW5zaWRlIHRoZSB0aW1lbGluZSdzIEhX U1Agdm1hLCBidXQgaXQgaXMgb25seSB2YWxpZCB3aGlsZSB0aGlzCj4gLQkgKiByZXF1ZXN0IGhh cyBub3QgY29tcGxldGVkIGFuZCBndWFyZGVkIGJ5IHRoZSB0aW1lbGluZSBtdXRleC4KPiAtCSAq Lwo+IC0Jc3RydWN0IGludGVsX3RpbWVsaW5lX2NhY2hlbGluZSBfX3JjdSAqaHdzcF9jYWNoZWxp bmU7Cj4gLQo+ICAgCS8qKiBQb3NpdGlvbiBpbiB0aGUgcmluZyBvZiB0aGUgc3RhcnQgb2YgdGhl IHJlcXVlc3QgKi8KPiAgIAl1MzIgaGVhZDsKPiAgIAo+IEBAIC02MTUsNCArNjA1LDExIEBAIGk5 MTVfcmVxdWVzdF9hY3RpdmVfdGltZWxpbmUoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEp Cj4gICAJCQkJCSBsb2NrZGVwX2lzX2hlbGQoJnJxLT5lbmdpbmUtPmFjdGl2ZS5sb2NrKSk7Cj4g ICB9Cj4gICAKPiArc3RhdGljIGlubGluZSB1MzIKPiAraTkxNV9yZXF1ZXN0X2FjdGl2ZV9vZmZz ZXQoY29uc3Qgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEpCj4gK3sKPiArCXJldHVybiBwYWdlX21h c2tfYml0cyhpOTE1X3JlcXVlc3RfYWN0aXZlX3RpbWVsaW5lKHJxKS0+aHdzcF9vZmZzZXQpICsK PiArCSAgICAgICBvZmZzZXRfaW5fcGFnZShycS0+aHdzcF9zZXFubyk7CgpTZWVtcyB0aGUgc2Ft ZSBjb251bmRydW0gYXMgSSBoYWQgZWFybGllciBpbiBod3NwX29mZnNldCgpLiBUQkQuCgpSZWdh cmRzLAoKVHZydGtvCgo+ICt9Cj4gKwo+ICAgI2VuZGlmIC8qIEk5MTVfUkVRVUVTVF9IICovCj4g Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdm eCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=