From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 16/23] drm/i915: Allocate a status page for each timeline Date: Fri, 18 Jan 2019 11:19:09 +0000 Message-ID: <7f67b53c-3cb8-cc4c-2103-e73ec119882e@linux.intel.com> References: <20190117143519.16086-1-chris@chris-wilson.co.uk> <20190117143519.16086-17-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6AE266F6DC for ; Fri, 18 Jan 2019 11:19:09 +0000 (UTC) In-Reply-To: <20190117143519.16086-17-chris@chris-wilson.co.uk> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE3LzAxLzIwMTkgMTQ6MzQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBBbGxvY2F0ZSBhIHBh Z2UgZm9yIHVzZSBhcyBhIHN0YXR1cyBwYWdlIGJ5IGEgZ3JvdXAgb2YgdGltZWxpbmVzLCBhcyB3 ZQo+IG9ubHkgbmVlZCBhIGR3b3JkIG9mIHN0b3JhZ2UgZm9yIGVhY2ggKHJvdW5kZWQgdXAgdG8g dGhlIGNhY2hlbGluZSBmb3IKPiBzYWZldHkpIHdlIGNhbiBwYWNrIG11bHRpcGxlIHRpbWVsaW5l cyBpbnRvIHRoZSBzYW1lIHBhZ2UuIEVhY2ggdGltZWxpbmUKPiB3aWxsIHRoZW4gYmUgYWJsZSB0 byB0cmFjayBpdHMgb3duIEhXIHNlcW5vLgo+IAo+IHYyOiBSZXVzZSB0aGUgY29tbW9uIHBlci1l bmdpbmUgSFdTUCBmb3IgdGhlIHNvbGl0YXJ5IHJpbmdidWZmZXIKPiB0aW1lbGluZSwgc28gdGhh dCB3ZSBkbyBub3QgaGF2ZSB0byBlbWl0ICh1c2luZyBwZXItZ2VuIHNwZWNpYWxpc2VkCj4gdmZ1 bmNzKSB0aGUgYnJlYWRjcnVtYiBpbnRvIHRoZSBkaXN0aW5jdCB0aW1lbGluZSBIV1NQIGFuZCBp bnN0ZWFkIGNhbgo+IGtlZXAgb24gdXNpbmcgdGhlIGNvbW1vbiBNSV9TVE9SRV9EV09SRF9JTkRF WC4gSG93ZXZlciwgdG8gbWFpbnRhaW4gdGhlCj4gc2xlaWdodC1vZi1oYW5kIGZvciB0aGUgZ2xv YmFsL3Blci1jb250ZXh0IHNlcW5vIHN3aXRjaG92ZXIsIHdlIHdpbGwKPiBzdG9yZSBib3RoIHRl bXBvcmFyaWx5IChhbmQgc28gdXNlIGEgY3VzdG9tIG9mZnNldCBmb3IgdGhlIHNoYXJlZCB0aW1l bGluZQo+IEhXU1AgdW50aWwgdGhlIHN3aXRjaCBvdmVyKS4KPiAKPiB2MzogS2VlcCB0aGluZ3Mg c2ltcGxlIGFuZCBhbGxvY2F0ZSBhIHBhZ2UgZm9yIGVhY2ggdGltZWxpbmUsIHBhZ2UKPiBzaGFy aW5nIGNvbWVzIG5leHQuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Rp bWVsaW5lLmMgICAgICAgICAgfCAxMDYgKysrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdGltZWxpbmUuaCAgICAgICAgICB8ICAyMSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZW5naW5lX2NzLmMgICAgICAgIHwgIDY0ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfbHJjLmMgICAgICAgICAgICAgIHwgIDIyICstCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgICAgICAgfCAgMTAgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCAgICAgICB8ICAgNiArLQo+ICAgLi4uL2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmggIHwgICAxICsKPiAgIC4uLi9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9tb2NrX3NlbGZ0ZXN0cy5oICB8ICAgMiArLQo+ICAgLi4uL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jICAgIHwgMzczICsrKysrKysrKysrKysr KysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMgIHwg IDE3ICstCj4gICAxMCBmaWxlcyBjaGFuZ2VkLCA1NzEgaW5zZXJ0aW9ucygrKSwgNTEgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxp bmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYwo+IGluZGV4IDg0NTUw ZjE3ZDNkZi4uMzgwZjRkMjVmYjg5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxp bmUuYwo+IEBAIC05LDExICs5LDM4IEBACj4gICAjaW5jbHVkZSAiaTkxNV90aW1lbGluZS5oIgo+ ICAgI2luY2x1ZGUgImk5MTVfc3luY21hcC5oIgo+ICAgCj4gLXZvaWQgaTkxNV90aW1lbGluZV9p bml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+IC0JCQlzdHJ1Y3QgaTkxNV90aW1l bGluZSAqdGltZWxpbmUsCj4gLQkJCWNvbnN0IGNoYXIgKm5hbWUpCj4gK3N0YXRpYyBpbnQgaHdz cF9hbGxvYyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmUpCj4gK3sKPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gdGltZWxpbmUtPmk5MTU7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqYm87CgpOb3JtYWxseSB3ZSB1c2Ugb2JqIGluIHRoZSBrZXJuZWwsIGJ1 dCBJIGd1ZXNzIHRoaXMgaXMgYWxzbyB0ZW1wb3JhcnkgY29kZS4KCj4gKwlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKPiArCj4gKwlibyA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfaW50ZXJuYWwoaTkx NSwgUEFHRV9TSVpFKTsKPiArCWlmIChJU19FUlIoYm8pKQo+ICsJCXJldHVybiBQVFJfRVJSKGJv KTsKPiArCj4gKwlpOTE1X2dlbV9vYmplY3Rfc2V0X2NhY2hlX2xldmVsKGJvLCBJOTE1X0NBQ0hF X0xMQyk7Cj4gKwo+ICsJdm1hID0gaTkxNV92bWFfaW5zdGFuY2UoYm8sICZpOTE1LT5nZ3R0LnZt LCBOVUxMKTsKPiArCWlmIChJU19FUlIodm1hKSkgewo+ICsJCWk5MTVfZ2VtX29iamVjdF9wdXQo Ym8pOwo+ICsJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gKwl9Cj4gKwo+ICsJdGltZWxpbmUtPmh3 c3BfZ2d0dCA9IHZtYTsKPiArCXRpbWVsaW5lLT5od3NwX29mZnNldCA9IDA7Cj4gKwo+ICsJcmV0 dXJuIDA7Cj4gK30KPiArCj4gK2ludCBpOTE1X3RpbWVsaW5lX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsCj4gKwkJICAgICAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGlu ZSwKPiArCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKPiArCQkgICAgICAgc3RydWN0IGk5MTVf dm1hICpnbG9iYWxfaHdzcCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0 ID0gJmk5MTUtPmd0LnRpbWVsaW5lczsKPiArCXZvaWQgKnZhZGRyOwo+ICsJaW50IGVycjsKPiAg IAo+ICAgCS8qCj4gICAJICogSWRlYWxseSB3ZSB3YW50IGEgc2V0IG9mIGVuZ2luZXMgb24gYSBz aW5nbGUgbGVhZiBhcyB3ZSBleHBlY3QKPiBAQCAtMjUsMTAgKzUyLDI3IEBAIHZvaWQgaTkxNV90 aW1lbGluZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCj4gICAJdGlt ZWxpbmUtPmk5MTUgPSBpOTE1Owo+ICAgCXRpbWVsaW5lLT5uYW1lID0gbmFtZTsKPiArCXRpbWVs aW5lLT5waW5fY291bnQgPSAwOwo+ICsKPiArCWlmIChnbG9iYWxfaHdzcCkgewo+ICsJCXRpbWVs aW5lLT5od3NwX2dndHQgPSBpOTE1X3ZtYV9nZXQoZ2xvYmFsX2h3c3ApOwo+ICsJCXRpbWVsaW5l LT5od3NwX29mZnNldCA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSOwo+ICsJfSBlbHNlIHsKPiAr CQllcnIgPSBod3NwX2FsbG9jKHRpbWVsaW5lKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlyZXR1cm4g ZXJyOwo+ICsJfQo+ICAgCj4gLQltdXRleF9sb2NrKCZndC0+bXV0ZXgpOwo+IC0JbGlzdF9hZGQo JnRpbWVsaW5lLT5saW5rLCAmZ3QtPmxpc3QpOwo+IC0JbXV0ZXhfdW5sb2NrKCZndC0+bXV0ZXgp Owo+ICsJdmFkZHIgPSBpOTE1X2dlbV9vYmplY3RfcGluX21hcCh0aW1lbGluZS0+aHdzcF9nZ3R0 LT5vYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gKwkJaTkxNV92 bWFfcHV0KHRpbWVsaW5lLT5od3NwX2dndHQpOwo+ICsJCXJldHVybiBQVFJfRVJSKHZhZGRyKTsK PiArCX0KPiArCj4gKwl0aW1lbGluZS0+aHdzcF9zZXFubyA9Cj4gKwkJbWVtc2V0KHZhZGRyICsg dGltZWxpbmUtPmh3c3Bfb2Zmc2V0LAo+ICsJCSAgICAgICAwLAo+ICsJCSAgICAgICBzaXplb2Yo KnRpbWVsaW5lLT5od3NwX3NlcW5vKSk7CgpXb3VsZCBpdCBiZSB3b3J0aCB6ZXJvaW5nIHRoZSBv YmplY3QgYWZ0ZXIgYWxsb2NhdGlvbiBzbyBhKSBoZXJlIHdlIGNhbiAKYXNzZXJ0IG91ciBzbG90 IGlzIHVudXNlZCwgYW5kIGIpIGlmIHdlIGRlY2lkZSB0byBoZXhkdW1wIHRoZSB3aG9sZSBwYWdl IAp3ZSBnZXQgbW9yZSB1c2VmdWwgb3V0cHV0PwoKPiAgIAo+ICAgCS8qIENhbGxlZCBkdXJpbmcg ZWFybHlfaW5pdCBiZWZvcmUgd2Uga25vdyBob3cgbWFueSBlbmdpbmVzIHRoZXJlIGFyZSAqLwo+ ICAgCj4gQEAgLTQwLDYgKzg0LDEyIEBAIHZvaWQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCUlOSVRfTElTVF9IRUFEKCZ0aW1lbGluZS0+cmVx dWVzdHMpOwo+ICAgCj4gICAJaTkxNV9zeW5jbWFwX2luaXQoJnRpbWVsaW5lLT5zeW5jKTsKPiAr Cj4gKwltdXRleF9sb2NrKCZndC0+bXV0ZXgpOwo+ICsJbGlzdF9hZGQoJnRpbWVsaW5lLT5saW5r LCAmZ3QtPmxpc3QpOwo+ICsJbXV0ZXhfdW5sb2NrKCZndC0+bXV0ZXgpOwo+ICsKPiArCXJldHVy biAwOwo+ICAgfQo+ICAgCj4gICB2b2lkIGk5MTVfdGltZWxpbmVzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gQEAgLTg1LDYgKzEzNSw3IEBAIHZvaWQgaTkxNV90aW1lbGlu ZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiAgIHsKPiAgIAlzdHJ1Y3Qg aTkxNV9ndF90aW1lbGluZXMgKmd0ID0gJnRpbWVsaW5lLT5pOTE1LT5ndC50aW1lbGluZXM7Cj4g ICAKPiArCUdFTV9CVUdfT04odGltZWxpbmUtPnBpbl9jb3VudCk7Cj4gICAJR0VNX0JVR19PTigh bGlzdF9lbXB0eSgmdGltZWxpbmUtPnJlcXVlc3RzKSk7Cj4gICAKPiAgIAlpOTE1X3N5bmNtYXBf ZnJlZSgmdGltZWxpbmUtPnN5bmMpOwo+IEBAIC05MiwyMyArMTQzLDYyIEBAIHZvaWQgaTkxNV90 aW1lbGluZV9maW5pKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiAgIAltdXRleF9s b2NrKCZndC0+bXV0ZXgpOwo+ICAgCWxpc3RfZGVsKCZ0aW1lbGluZS0+bGluayk7Cj4gICAJbXV0 ZXhfdW5sb2NrKCZndC0+bXV0ZXgpOwo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9tYXAo dGltZWxpbmUtPmh3c3BfZ2d0dC0+b2JqKTsKPiArCWk5MTVfdm1hX3B1dCh0aW1lbGluZS0+aHdz cF9nZ3R0KTsKPiAgIH0KPiAgIAo+ICAgc3RydWN0IGk5MTVfdGltZWxpbmUgKgo+IC1pOTE1X3Rp bWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgY29uc3QgY2hhciAq bmFtZSkKPiAraTkxNV90aW1lbGluZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCj4gKwkJICAgICBjb25zdCBjaGFyICpuYW1lLAo+ICsJCSAgICAgc3RydWN0IGk5MTVfdm1h ICpnbG9iYWxfaHdzcCkKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGltZWxpbmU7 Cj4gKwlpbnQgZXJyOwo+ICAgCj4gICAJdGltZWxpbmUgPSBremFsbG9jKHNpemVvZigqdGltZWxp bmUpLCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoIXRpbWVsaW5lKQo+ICAgCQlyZXR1cm4gRVJSX1BU UigtRU5PTUVNKTsKPiAgIAo+IC0JaTkxNV90aW1lbGluZV9pbml0KGk5MTUsIHRpbWVsaW5lLCBu YW1lKTsKPiArCWVyciA9IGk5MTVfdGltZWxpbmVfaW5pdChpOTE1LCB0aW1lbGluZSwgbmFtZSwg Z2xvYmFsX2h3c3ApOwo+ICsJaWYgKGVycikgewo+ICsJCWtmcmVlKHRpbWVsaW5lKTsKPiArCQly ZXR1cm4gRVJSX1BUUihlcnIpOwo+ICsJfQo+ICsKPiAgIAlrcmVmX2luaXQoJnRpbWVsaW5lLT5r cmVmKTsKPiAgIAo+ICAgCXJldHVybiB0aW1lbGluZTsKPiAgIH0KPiAgIAo+ICtpbnQgaTkxNV90 aW1lbGluZV9waW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQo+ICt7Cj4gKwlpbnQgZXJyOwo+ ICsKPiArCWlmICh0bC0+cGluX2NvdW50KyspCj4gKwkJcmV0dXJuIDA7Cj4gKwlHRU1fQlVHX09O KCF0bC0+cGluX2NvdW50KTsKPiArCj4gKwllcnIgPSBpOTE1X3ZtYV9waW4odGwtPmh3c3BfZ2d0 dCwgMCwgMCwgUElOX0dMT0JBTCB8IFBJTl9ISUdIKTsKCkJ0dy4uIHdoYXQgYXJlIHRoZSBjb25z aWRlcmF0aW9ucyBmb3IgdGltZWxpbmUgaHdzcCBpbiBnZ3R0IHZzIGluIHBwZ3R0PyAKTGF0dGVy IHdvdWxkIG1lYW4gc2hhcmVkIHBhZ2VzIGJldHdlZW4gYWxsIGNvbnRleHRzIHdpdGggYSBzaGFy ZWQgcHBndHQsIApzbyBtb3JlIG1lbW9yeSB1c2UsIGJ1dCBhbHNvIG1vcmUgaXNvbGF0aW9uLgoK PiArCWlmIChlcnIpCj4gKwkJZ290byB1bnBpbjsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK3Vu cGluOgo+ICsJdGwtPnBpbl9jb3VudCA9IDA7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICt2 b2lkIGk5MTVfdGltZWxpbmVfdW5waW4oc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQo+ICt7Cj4g KwlHRU1fQlVHX09OKCF0bC0+cGluX2NvdW50KTsKPiArCWlmICgtLXRsLT5waW5fY291bnQpCj4g KwkJcmV0dXJuOwo+ICsKPiArCV9faTkxNV92bWFfdW5waW4odGwtPmh3c3BfZ2d0dCk7Cj4gK30K PiArCj4gICB2b2lkIF9faTkxNV90aW1lbGluZV9mcmVlKHN0cnVjdCBrcmVmICprcmVmKQo+ICAg ewo+ICAgCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSA9Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfdGltZWxpbmUuaAo+IGluZGV4IDg3YWQyZGQzMWMyMC4uMGMzNzM5ZDUzZDc5IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaAo+IEBAIC0zMiw2ICszMiw4IEBACj4g ICAjaW5jbHVkZSAiaTkxNV9zeW5jbWFwLmgiCj4gICAjaW5jbHVkZSAiaTkxNV91dGlscy5oIgo+ ICAgCj4gK3N0cnVjdCBpOTE1X3ZtYTsKPiArCj4gICBzdHJ1Y3QgaTkxNV90aW1lbGluZSB7Cj4g ICAJdTY0IGZlbmNlX2NvbnRleHQ7Cj4gICAJdTMyIHNlcW5vOwo+IEBAIC00MCw2ICs0MiwxMSBA QCBzdHJ1Y3QgaTkxNV90aW1lbGluZSB7Cj4gICAjZGVmaW5lIFRJTUVMSU5FX0NMSUVOVCAwIC8q IGRlZmF1bHQgc3ViY2xhc3MgKi8KPiAgICNkZWZpbmUgVElNRUxJTkVfRU5HSU5FIDEKPiAgIAo+ ICsJdW5zaWduZWQgaW50IHBpbl9jb3VudDsKPiArCWNvbnN0IHUzMiAqaHdzcF9zZXFubzsKPiAr CXN0cnVjdCBpOTE1X3ZtYSAqaHdzcF9nZ3R0Owo+ICsJdTMyIGh3c3Bfb2Zmc2V0OwoKT25lIGJp a2VzaGVkIGNvdWxkIGJlIGdyb3VwaW5nIGFib3ZlIHRocmVlIGluIGEgc3RydWN0IGVnLiAKdGlt ZWxpbmUtPmh3c3Aub2Zmc2V0LgoKPiArCj4gICAJLyoqCj4gICAJICogTGlzdCBvZiBicmVhZGNy dW1icyBhc3NvY2lhdGVkIHdpdGggR1BVIHJlcXVlc3RzIGN1cnJlbnRseQo+ICAgCSAqIG91dHN0 YW5kaW5nLgo+IEBAIC03MSw5ICs3OCwxMCBAQCBzdHJ1Y3QgaTkxNV90aW1lbGluZSB7Cj4gICAJ c3RydWN0IGtyZWYga3JlZjsKPiAgIH07Cj4gICAKPiAtdm9pZCBpOTE1X3RpbWVsaW5lX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gLQkJCXN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0bCwKPiAtCQkJY29uc3QgY2hhciAqbmFtZSk7Cj4gK2ludCBpOTE1X3RpbWVsaW5lX2luaXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gKwkJICAgICAgIHN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0bCwKPiArCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKPiArCQkgICAgICAgc3Ry dWN0IGk5MTVfdm1hICpod3NwKTsKPiAgIHZvaWQgaTkxNV90aW1lbGluZV9maW5pKHN0cnVjdCBp OTE1X3RpbWVsaW5lICp0bCk7Cj4gICAKPiAgIHN0YXRpYyBpbmxpbmUgdm9pZAo+IEBAIC05Niw3 ICsxMDQsOSBAQCBpOTE1X3RpbWVsaW5lX3NldF9zdWJjbGFzcyhzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGltZWxpbmUsCj4gICB9Cj4gICAKPiAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lICoKPiAtaTkx NV90aW1lbGluZV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGNvbnN0IGNo YXIgKm5hbWUpOwo+ICtpOTE1X3RpbWVsaW5lX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiArCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsCj4gKwkJICAgICBzdHJ1Y3QgaTkx NV92bWEgKmdsb2JhbF9od3NwKTsKPiAgIAo+ICAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqCj4gICBpOTE1X3RpbWVsaW5lX2dldChzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGlt ZWxpbmUpCj4gQEAgLTEzNSw2ICsxNDUsOSBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV90aW1l bGluZV9zeW5jX2lzX2xhdGVyKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bCwKPiAgIAlyZXR1cm4g X19pOTE1X3RpbWVsaW5lX3N5bmNfaXNfbGF0ZXIodGwsIGZlbmNlLT5jb250ZXh0LCBmZW5jZS0+ c2Vxbm8pOwo+ICAgfQo+ICAgCj4gK2ludCBpOTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90 aW1lbGluZSAqdGwpOwo+ICt2b2lkIGk5MTVfdGltZWxpbmVfdW5waW4oc3RydWN0IGk5MTVfdGlt ZWxpbmUgKnRsKTsKPiArCj4gICB2b2lkIGk5MTVfdGltZWxpbmVzX2luaXQoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgdm9pZCBpOTE1X3RpbWVsaW5lc19wYXJrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1KTsKPiAgIHZvaWQgaTkxNV90aW1lbGluZXNfZmluaShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5n aW5lX2NzLmMKPiBpbmRleCA0YjRiNzM1OGM0ODIuLmM4NTBkMTMxZDhjMyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3MuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTQ4NCwyNiArNDg0LDYgQEAgc3Rh dGljIHZvaWQgaW50ZWxfZW5naW5lX2luaXRfZXhlY2xpc3Qoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCWV4ZWNsaXN0cy0+cXVldWUgPSBSQl9ST09UX0NBQ0hFRDsKPiAgIH0K PiAgIAo+IC0vKioKPiAtICogaW50ZWxfZW5naW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdp bmUgc3RhdGUgbm90IHJlcXVpcmluZyBodyBhY2Nlc3MKPiAtICogQGVuZ2luZTogRW5naW5lIHRv IHNldHVwLgo+IC0gKgo+IC0gKiBJbml0aWFsaXplcyBAZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVy cyBzaGFyZWQgYmV0d2VlbiBsZWdhY3kgYW5kIGV4ZWNsaXN0cwo+IC0gKiBzdWJtaXNzaW9uIG1v ZGVzIHdoaWNoIGRvIG5vdCByZXF1aXJlIGhhcmR3YXJlIGFjY2Vzcy4KPiAtICoKPiAtICogVHlw aWNhbGx5IGRvbmUgZWFybHkgaW4gdGhlIHN1Ym1pc3Npb24gbW9kZSBzcGVjaWZpYyBlbmdpbmUg c2V0dXAgc3RhZ2UuCj4gLSAqLwo+IC12b2lkIGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3Ry dWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IC17Cj4gLQlpOTE1X3RpbWVsaW5lX2luaXQo ZW5naW5lLT5pOTE1LCAmZW5naW5lLT50aW1lbGluZSwgZW5naW5lLT5uYW1lKTsKPiAtCWk5MTVf dGltZWxpbmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPnRpbWVsaW5lLCBUSU1FTElORV9FTkdJTkUp Owo+IC0KPiAtCWludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KGVuZ2luZSk7Cj4gLQlpbnRlbF9l bmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKPiAtCWludGVsX2VuZ2luZV9pbml0X2JhdGNo X3Bvb2woZW5naW5lKTsKPiAtCWludGVsX2VuZ2luZV9pbml0X2NtZF9wYXJzZXIoZW5naW5lKTsK PiAtfQo+IC0KPiAgIHN0YXRpYyB2b2lkIGNsZWFudXBfc3RhdHVzX3BhZ2Uoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IEBA IC02MDEsNiArNTgxLDQ0IEBAIHN0YXRpYyBpbnQgaW5pdF9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ICsvKioK PiArICogaW50ZWxfZW5naW5lc19zZXR1cF9jb21tb24gLSBzZXR1cCBlbmdpbmUgc3RhdGUgbm90 IHJlcXVpcmluZyBodyBhY2Nlc3MKPiArICogQGVuZ2luZTogRW5naW5lIHRvIHNldHVwLgo+ICsg Kgo+ICsgKiBJbml0aWFsaXplcyBAZW5naW5lQCBzdHJ1Y3R1cmUgbWVtYmVycyBzaGFyZWQgYmV0 d2VlbiBsZWdhY3kgYW5kIGV4ZWNsaXN0cwo+ICsgKiBzdWJtaXNzaW9uIG1vZGVzIHdoaWNoIGRv IG5vdCByZXF1aXJlIGhhcmR3YXJlIGFjY2Vzcy4KPiArICoKPiArICogVHlwaWNhbGx5IGRvbmUg ZWFybHkgaW4gdGhlIHN1Ym1pc3Npb24gbW9kZSBzcGVjaWZpYyBlbmdpbmUgc2V0dXAgc3RhZ2Uu Cj4gKyAqLwo+ICtpbnQgaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUpCj4gK3sKPiArCWludCBlcnI7Cj4gKwo+ICsJZXJyID0gaW5pdF9zdGF0 dXNfcGFnZShlbmdpbmUpOwo+ICsJaWYgKGVycikKPiArCQlyZXR1cm4gZXJyOwoKQnVtbWVyLCBj b21tZW50cyByZW1pbmRzIHRoZSBzZXR1cC9pbml0IHNwbGl0IHdhcyBzdXBwb3NlZCB0byBtZWFu IG5vIGh3IAphY2Nlc3MgZnJvbSB0aGUgc2V0dXAgcGhhc2UuIElzIGl0IHRvbyBsYXRlIGZyb20g aW5pdD8KCj4gKwo+ICsJZXJyID0gaTkxNV90aW1lbGluZV9pbml0KGVuZ2luZS0+aTkxNSwKPiAr CQkJCSAmZW5naW5lLT50aW1lbGluZSwKPiArCQkJCSBlbmdpbmUtPm5hbWUsCj4gKwkJCQkgZW5n aW5lLT5zdGF0dXNfcGFnZS52bWEpOwo+ICsJaWYgKGVycikKPiArCQlnb3RvIGVycl9od3NwOwo+ ICsKPiArCWk5MTVfdGltZWxpbmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPnRpbWVsaW5lLCBUSU1F TElORV9FTkdJTkUpOwo+ICsKPiArCWludGVsX2VuZ2luZV9pbml0X2V4ZWNsaXN0KGVuZ2luZSk7 Cj4gKwlpbnRlbF9lbmdpbmVfaW5pdF9oYW5nY2hlY2soZW5naW5lKTsKPiArCWludGVsX2VuZ2lu ZV9pbml0X2JhdGNoX3Bvb2woZW5naW5lKTsKPiArCWludGVsX2VuZ2luZV9pbml0X2NtZF9wYXJz ZXIoZW5naW5lKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9od3NwOgo+ICsJY2xlYW51 cF9zdGF0dXNfcGFnZShlbmdpbmUpOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAgIHN0YXRp YyB2b2lkIF9faW50ZWxfY29udGV4dF91bnBpbihzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 LAo+ICAgCQkJCSAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+IEBAIC02 NTMsMTQgKzY3MSw4IEBAIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgCWlmIChyZXQpCj4gICAJCWdvdG8gZXJyX3VucGluX3By ZWVtcHQ7Cj4gICAKPiAtCXJldCA9IGluaXRfc3RhdHVzX3BhZ2UoZW5naW5lKTsKPiAtCWlmIChy ZXQpCj4gLQkJZ290byBlcnJfYnJlYWRjcnVtYnM7Cj4gLQo+ICAgCXJldHVybiAwOwo+ICAgCj4g LWVycl9icmVhZGNydW1iczoKPiAtCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKGVuZ2lu ZSk7Cj4gICBlcnJfdW5waW5fcHJlZW1wdDoKPiAgIAlpZiAoaTkxNS0+cHJlZW1wdF9jb250ZXh0 KQo+ICAgCQlfX2ludGVsX2NvbnRleHRfdW5waW4oaTkxNS0+cHJlZW1wdF9jb250ZXh0LCBlbmdp bmUpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gaW5kZXggNGU5NDJjNDAzMzMzLi5hNjI0 ZTY0NGZiZDcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0yMTg3LDEwICsy MTg3LDE0IEBAIGxvZ2ljYWxfcmluZ19kZWZhdWx0X2lycXMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCWVuZ2luZS0+aXJxX2tlZXBfbWFzayA9IEdUX0NPTlRFWFRfU1dJVENI X0lOVEVSUlVQVCA8PCBzaGlmdDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9pZAo+ICtzdGF0aWMg aW50Cj4gICBsb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgewo+IC0JaW50ZWxfZW5naW5lX3NldHVwX2NvbW1vbihlbmdpbmUpOwo+ICsJaW50IGVy cjsKPiArCj4gKwllcnIgPSBpbnRlbF9lbmdpbmVfc2V0dXBfY29tbW9uKGVuZ2luZSk7Cj4gKwlp ZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gICAKPiAgIAkvKiBJbnRlbnRpb25hbGx5IGxlZnQg YmxhbmsuICovCj4gICAJZW5naW5lLT5idWZmZXIgPSBOVUxMOwo+IEBAIC0yMjAwLDYgKzIyMDQs OCBAQCBsb2dpY2FsX3Jpbmdfc2V0dXAoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCj4gICAJbG9naWNhbF9yaW5nX2RlZmF1bHRfdmZ1bmNzKGVuZ2luZSk7Cj4gICAJbG9naWNh bF9yaW5nX2RlZmF1bHRfaXJxcyhlbmdpbmUpOwo+ICsKPiArCXJldHVybiAwOwo+ICAgfQo+ICAg Cj4gICBzdGF0aWMgaW50IGxvZ2ljYWxfcmluZ19pbml0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KmVuZ2luZSkKPiBAQCAtMjI0OCw3ICsyMjU0LDkgQEAgaW50IGxvZ2ljYWxfcmVuZGVyX3Jpbmdf aW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICB7Cj4gICAJaW50IHJldDsK PiAgIAo+IC0JbG9naWNhbF9yaW5nX3NldHVwKGVuZ2luZSk7Cj4gKwlyZXQgPSBsb2dpY2FsX3Jp bmdfc2V0dXAoZW5naW5lKTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiAgIAo+ICAg CS8qIE92ZXJyaWRlIHNvbWUgZm9yIHJlbmRlciByaW5nLiAqLwo+ICAgCWVuZ2luZS0+aW5pdF9j b250ZXh0ID0gZ2VuOF9pbml0X3Jjc19jb250ZXh0Owo+IEBAIC0yMjc4LDcgKzIyODYsMTEgQEAg aW50IGxvZ2ljYWxfcmVuZGVyX3JpbmdfaW5pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICAKPiAgIGludCBsb2dpY2FsX3hjc19yaW5nX2luaXQoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lKQo+ICAgewo+IC0JbG9naWNhbF9yaW5nX3NldHVwKGVuZ2luZSk7Cj4gKwlp bnQgZXJyOwo+ICsKPiArCWVyciA9IGxvZ2ljYWxfcmluZ19zZXR1cChlbmdpbmUpOwo+ICsJaWYg KGVycikKPiArCQlyZXR1cm4gZXJyOwo+ICAgCj4gICAJcmV0dXJuIGxvZ2ljYWxfcmluZ19pbml0 KGVuZ2luZSk7Cj4gICB9Cj4gQEAgLTI2MTIsNyArMjYyNCw3IEBAIHN0YXRpYyBpbnQgZXhlY2xp c3RzX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK PiAgIAkJZ290byBlcnJvcl9kZXJlZl9vYmo7Cj4gICAJfQo+ICAgCj4gLQl0aW1lbGluZSA9IGk5 MTVfdGltZWxpbmVfY3JlYXRlKGN0eC0+aTkxNSwgY3R4LT5uYW1lKTsKPiArCXRpbWVsaW5lID0g aTkxNV90aW1lbGluZV9jcmVhdGUoY3R4LT5pOTE1LCBjdHgtPm5hbWUsIE5VTEwpOwo+ICAgCWlm IChJU19FUlIodGltZWxpbmUpKSB7Cj4gICAJCXJldCA9IFBUUl9FUlIodGltZWxpbmUpOwo+ICAg CQlnb3RvIGVycm9yX2RlcmVmX29iajsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCj4gaW5kZXggZDcyMDEyYjQyZjIwLi41ODg3MzA0YmMzYWUgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTE1MzksOSArMTUzOSwxMyBAQCBz dGF0aWMgaW50IGludGVsX2luaXRfcmluZ19idWZmZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKQo+ICAgCXN0cnVjdCBpbnRlbF9yaW5nICpyaW5nOwo+ICAgCWludCBlcnI7Cj4gICAK PiAtCWludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oZW5naW5lKTsKPiArCWVyciA9IGludGVsX2Vu Z2luZV9zZXR1cF9jb21tb24oZW5naW5lKTsKPiArCWlmIChlcnIpCj4gKwkJcmV0dXJuIGVycjsK PiAgIAo+IC0JdGltZWxpbmUgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShlbmdpbmUtPmk5MTUsIGVu Z2luZS0+bmFtZSk7Cj4gKwl0aW1lbGluZSA9IGk5MTVfdGltZWxpbmVfY3JlYXRlKGVuZ2luZS0+ aTkxNSwKPiArCQkJCQllbmdpbmUtPm5hbWUsCj4gKwkJCQkJZW5naW5lLT5zdGF0dXNfcGFnZS52 bWEpOwo+ICAgCWlmIChJU19FUlIodGltZWxpbmUpKSB7Cj4gICAJCWVyciA9IFBUUl9FUlIodGlt ZWxpbmUpOwo+ICAgCQlnb3RvIGVycjsKPiBAQCAtMTU2NSw2ICsxNTY5LDggQEAgc3RhdGljIGlu dCBpbnRlbF9pbml0X3JpbmdfYnVmZmVyKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgIAlpZiAoZXJyKQo+ICAgCQlnb3RvIGVycl91bnBpbjsKPiAgIAo+ICsJR0VNX0JVR19PTihy aW5nLT50aW1lbGluZS0+aHdzcF9nZ3R0ICE9IGVuZ2luZS0+c3RhdHVzX3BhZ2Uudm1hKTsKPiAr Cj4gICAJcmV0dXJuIDA7Cj4gICAKPiAgIGVycl91bnBpbjoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcmluZ2J1ZmZlci5oCj4gaW5kZXggOTk3MmM5MDE2NDQ1Li41YzIwYjQxYjZhOWIgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oCj4gQEAgLTcxNiw3ICs3 MTYsOSBAQCBpbnRlbF93cml0ZV9zdGF0dXNfcGFnZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpl bmdpbmUsIGludCByZWcsIHUzMiB2YWx1ZSkKPiAgICNkZWZpbmUgSTkxNV9HRU1fSFdTX0lOREVY X0FERFIgKEk5MTVfR0VNX0hXU19JTkRFWCA8PCBNSV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCkK PiAgICNkZWZpbmUgSTkxNV9HRU1fSFdTX1BSRUVNUFRfSU5ERVgJMHgzMgo+ICAgI2RlZmluZSBJ OTE1X0dFTV9IV1NfUFJFRU1QVF9BRERSIChJOTE1X0dFTV9IV1NfUFJFRU1QVF9JTkRFWCA8PCBN SV9TVE9SRV9EV09SRF9JTkRFWF9TSElGVCkKPiAtI2RlZmluZSBJOTE1X0dFTV9IV1NfU0NSQVRD SF9JTkRFWAkweDQwCj4gKyNkZWZpbmUgSTkxNV9HRU1fSFdTX1NFUU5PCQkweDQwCj4gKyNkZWZp bmUgSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIgKEk5MTVfR0VNX0hXU19TRVFOTyA8PCBNSV9TVE9S RV9EV09SRF9JTkRFWF9TSElGVCkKPiArI2RlZmluZSBJOTE1X0dFTV9IV1NfU0NSQVRDSF9JTkRF WAkweDgwCj4gICAjZGVmaW5lIEk5MTVfR0VNX0hXU19TQ1JBVENIX0FERFIgKEk5MTVfR0VNX0hX U19TQ1JBVENIX0lOREVYIDw8IE1JX1NUT1JFX0RXT1JEX0lOREVYX1NISUZUKQo+ICAgCj4gICAj ZGVmaW5lIEk5MTVfSFdTX0NTQl9CVUYwX0lOREVYCQkweDEwCj4gQEAgLTgyMiw3ICs4MjQsNyBA QCBpbnRlbF9yaW5nX3NldF90YWlsKHN0cnVjdCBpbnRlbF9yaW5nICpyaW5nLCB1bnNpZ25lZCBp bnQgdGFpbCkKPiAgIAo+ICAgdm9pZCBpbnRlbF9lbmdpbmVfd3JpdGVfZ2xvYmFsX3NlcW5vKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwgdTMyIHNlcW5vKTsKPiAgIAo+IC12b2lkIGlu dGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKTsK PiAraW50IGludGVsX2VuZ2luZV9zZXR1cF9jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAq ZW5naW5lKTsKPiAgIGludCBpbnRlbF9lbmdpbmVfaW5pdF9jb21tb24oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lKTsKPiAgIHZvaWQgaW50ZWxfZW5naW5lX2NsZWFudXBfY29tbW9uKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSk7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2xpdmVfc2VsZnRlc3RzLmgKPiBpbmRleCBhMTU3 MTNjYWUzYjMuLjc2YjRmODdmYzg1MyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfbGl2ZV9zZWxmdGVzdHMuaAo+IEBAIC0xMyw2ICsxMyw3IEBA IHNlbGZ0ZXN0KHNhbml0eWNoZWNrLCBpOTE1X2xpdmVfc2FuaXR5Y2hlY2spIC8qIGtlZXAgZmly c3QgKGlndCBzZWxmY2hlY2spICovCj4gICBzZWxmdGVzdCh1bmNvcmUsIGludGVsX3VuY29yZV9s aXZlX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KHdvcmthcm91bmRzLCBpbnRlbF93b3JrYXJvdW5k c19saXZlX3NlbGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KHJlcXVlc3RzLCBpOTE1X3JlcXVlc3RfbGl2 ZV9zZWxmdGVzdHMpCj4gK3NlbGZ0ZXN0KHRpbWVsaW5lcywgaTkxNV90aW1lbGluZV9saXZlX3Nl bGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KG9iamVjdHMsIGk5MTVfZ2VtX29iamVjdF9saXZlX3NlbGZ0 ZXN0cykKPiAgIHNlbGZ0ZXN0KGRtYWJ1ZiwgaTkxNV9nZW1fZG1hYnVmX2xpdmVfc2VsZnRlc3Rz KQo+ICAgc2VsZnRlc3QoY29oZXJlbmN5LCBpOTE1X2dlbV9jb2hlcmVuY3lfbGl2ZV9zZWxmdGVz dHMpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21v Y2tfc2VsZnRlc3RzLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9tb2Nr X3NlbGZ0ZXN0cy5oCj4gaW5kZXggMWI3MDIwOGVlZWE3Li40YTgzYTFjNmM0MDYgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfbW9ja19zZWxmdGVzdHMu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X21vY2tfc2VsZnRl c3RzLmgKPiBAQCAtMTYsNyArMTYsNyBAQCBzZWxmdGVzdChzeW5jbWFwLCBpOTE1X3N5bmNtYXBf bW9ja19zZWxmdGVzdHMpCj4gICBzZWxmdGVzdCh1bmNvcmUsIGludGVsX3VuY29yZV9tb2NrX3Nl bGZ0ZXN0cykKPiAgIHNlbGZ0ZXN0KGVuZ2luZSwgaW50ZWxfZW5naW5lX2NzX21vY2tfc2VsZnRl c3RzKQo+ICAgc2VsZnRlc3QoYnJlYWRjcnVtYnMsIGludGVsX2JyZWFkY3J1bWJzX21vY2tfc2Vs ZnRlc3RzKQo+IC1zZWxmdGVzdCh0aW1lbGluZXMsIGk5MTVfZ2VtX3RpbWVsaW5lX21vY2tfc2Vs ZnRlc3RzKQo+ICtzZWxmdGVzdCh0aW1lbGluZXMsIGk5MTVfdGltZWxpbmVfbW9ja19zZWxmdGVz dHMpCj4gICBzZWxmdGVzdChyZXF1ZXN0cywgaTkxNV9yZXF1ZXN0X21vY2tfc2VsZnRlc3RzKQo+ ICAgc2VsZnRlc3Qob2JqZWN0cywgaTkxNV9nZW1fb2JqZWN0X21vY2tfc2VsZnRlc3RzKQo+ICAg c2VsZnRlc3QoZG1hYnVmLCBpOTE1X2dlbV9kbWFidWZfbW9ja19zZWxmdGVzdHMpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jCj4gaW5kZXggMTlm MWM2YTVjOGZiLi5kMTM3Nzk4MDgyMDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X3RpbWVsaW5lLmMKPiBAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyBp bnQgYmVuY2hfc3luYyh2b2lkICphcmcpCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAtaW50 IGk5MTVfZ2VtX3RpbWVsaW5lX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gK2ludCBpOTE1X3RpbWVs aW5lX21vY2tfc2VsZnRlc3RzKHZvaWQpCj4gICB7Cj4gICAJc3RhdGljIGNvbnN0IHN0cnVjdCBp OTE1X3N1YnRlc3QgdGVzdHNbXSA9IHsKPiAgIAkJU1VCVEVTVChpZ3Rfc3luYyksCj4gQEAgLTI2 NSwzICsyNjUsMzc0IEBAIGludCBpOTE1X2dlbV90aW1lbGluZV9tb2NrX3NlbGZ0ZXN0cyh2b2lk KQo+ICAgCj4gICAJcmV0dXJuIGk5MTVfc3VidGVzdHModGVzdHMsIE5VTEwpOwo+ICAgfQo+ICsK PiArc3RhdGljIGludCBsaXZlX2h3c3BfZW5naW5lKHZvaWQgKmFyZykKPiArewo+ICsjZGVmaW5l IE5VTV9USU1FTElORVMgNDA5Ngo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBh cmc7Cj4gKwlzdHJ1Y3QgaTkxNV90aW1lbGluZSAqKnRpbWVsaW5lczsKPiArCXN0cnVjdCBpbnRl bF9lbmdpbmVfY3MgKmVuZ2luZTsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwo+ICsJaW50 ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwl1bnNpZ25lZCBsb25nIGNvdW50LCBuOwo+ICsJaW50 IGVyciA9IDA7Cj4gKwo+ICsJLyoKPiArCSAqIENyZWF0ZSBhIGJ1bmNoIG9mIHRpbWVsaW5lcyBh bmQgY2hlY2sgd2UgY2FuIHdyaXRlCj4gKwkgKiBpbmRlcGVuZGVudGx5IHRvIGVhY2ggb2YgdGhl aXIgYnJlYWRjcnVtYiBzbG90cy4KPiArCSAqLwo+ICsKPiArCXRpbWVsaW5lcyA9IGt2bWFsbG9j X2FycmF5KE5VTV9USU1FTElORVMgKiBJOTE1X05VTV9FTkdJTkVTLAo+ICsJCQkJICAgc2l6ZW9m KCp0aW1lbGluZXMpLAo+ICsJCQkJICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXRpbWVsaW5lcykK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKCk5pdHBp Y2sgLSB3ZSBub3JtYWxseSBkbyB0aGlzIGluIHJldmVyc2Ugb3JkZXIuCgo+ICsKPiArCWNvdW50 ID0gMDsKPiArCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJaWYgKCFp bnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVuZ2luZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsK PiArCQlmb3IgKG4gPSAwOyBuIDwgTlVNX1RJTUVMSU5FUzsgbisrKSB7Cj4gKwkJCXN0cnVjdCBp OTE1X3RpbWVsaW5lICp0bDsKPiArCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwkJCXUz MiBhZGRyOwo+ICsJCQl1MzIgKmNzOwo+ICsKPiArCQkJdGwgPSBpOTE1X3RpbWVsaW5lX2NyZWF0 ZShpOTE1LCAibGl2ZSIsIE5VTEwpOwo+ICsJCQlpZiAoSVNfRVJSKHRsKSkgewo+ICsJCQkJZXJy ID0gUFRSX0VSUih0bCk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJaWYgKCp0 bC0+aHdzcF9zZXFubykgewo+ICsJCQkJcHJfZXJyKCJUaW1lbGluZSAlbHUgY3JlYXRlZCB3aXRo IG5vbi16ZXJvIGJyZWFkY3J1bWIsIGZvdW5kICV4XG4iLAo+ICsJCQkJICAgICAgIGNvdW50LCAq dGwtPmh3c3Bfc2Vxbm8pOwo+ICsJCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWk5MTVfdGltZWxp bmVfcHV0KHRsKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQllcnIgPSBpOTE1 X3RpbWVsaW5lX3Bpbih0bCk7Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCWk5MTVfdGltZWxpbmVf cHV0KHRsKTsKCldhbm5hIGFkZCBzb21lIHByX2VycidzIGFyb3VuZCB0aGVzZSBwYXJ0cyBmb3Ig ZWFzaWVyIGRlYnVnPyAKSHlwaG90ZXRpY2FsIEkga25vdy4uCgo+ICsJCQkJZ290byBvdXQ7Cj4g KwkJCX0KPiArCj4gKwkJCXJxID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+a2Vy bmVsX2NvbnRleHQpOwo+ICsJCQlpZiAoSVNfRVJSKHJxKSkgewo+ICsJCQkJaTkxNV90aW1lbGlu ZV91bnBpbih0bCk7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQllcnIgPSBQ VFJfRVJSKHJxKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQljcyA9IGludGVs X3JpbmdfYmVnaW4ocnEsIDQpOwo+ICsJCQlpZiAoSVNfRVJSKGNzKSkgewo+ICsJCQkJaTkxNV9y ZXF1ZXN0X2FkZChycSk7CgpDYW4ndCB3ZSB1c2UgaTkxNV9yZXF1ZXN0X3NraXAgaGVyZT8gV29u J3Qgd2UgZXhlY3V0ZSByYW5kb20gZ2FyYmFnZSBpZiAKcmluZyB3cmFwcGVkPyBBaCBubyBiZWNh dXNlIG5vIGFkdmFuY2UuCgo+ICsJCQkJaTkxNV90aW1lbGluZV91bnBpbih0bCk7Cj4gKwkJCQlp OTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQllcnIgPSBQVFJfRVJSKGNzKTsKPiArCQkJCWdv dG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlhZGRyID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdz cF9nZ3R0KSArIHRsLT5od3NwX29mZnNldDsKPiArCj4gKwkJCWlmIChJTlRFTF9HRU4oaTkxNSkg Pj0gOCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9H R1RUOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysgPSAwOwo+ICsJCQkJKmNzKysg PSBjb3VudDsKPiArCQkJfSBlbHNlIGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkgewo+ICsJCQkJ KmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwo+ICsJCQkJKmNz KysgPSAwOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJ fSBlbHNlIHsKPiArCQkJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgTUlfTUVNX1ZJUlRV QUw7Cj4gKwkJCQkqY3MrKyA9IGFkZHI7Cj4gKwkJCQkqY3MrKyA9IGNvdW50Owo+ICsJCQkJKmNz KysgPSBNSV9OT09QOwo+ICsJCQl9CgpOb3RlIHRvIHNlbGYsIHNlZSBpZiBhdCBzb21lIGxhdGVy IHBvaW50IHdlIGNhbiBjb25zb2xpZGF0ZSBzdG9yZSBkd29yZCAKZW1pc3Npb24uCgo+ICsJCQlp bnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKPiArCj4gKwkJCWk5MTVfcmVxdWVzdF9hZGQocnEp Owo+ICsJCQlpOTE1X3RpbWVsaW5lX3VucGluKHRsKTsKPiArCj4gKwkJCXRpbWVsaW5lc1tjb3Vu dCsrXSA9IHRsOwo+ICsJCX0KPiArCX0KPiArCj4gKwllcnIgPSBpOTE1X2dlbV93YWl0X2Zvcl9p ZGxlKGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKClVzZSBz ZWxmdGVzdHMgdGltZW91dCBoZXJlPyBPciB0b28gc2hvcnQ/IEhtIGl0IHdvdWxkIG1lYW4gY2hh bmdpbmcgdGhlIApsb29wIHNsaWdodGx5IHRvIHRlc3QgdW50aWwgdGltZW91dC4uIGJ1dCB0aGF0 IHdvdWxkIGJlIGluIHRoZSBzcGlyaXQgb2YgCnNlbGZ0ZXN0cyB0aW1lb3V0LCBubz8KCj4gKwo+ ICtvdXQ6Cj4gKwlmb3IgKG4gPSAwOyBuIDwgY291bnQ7IG4rKykgewo+ICsJCXN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0bCA9IHRpbWVsaW5lc1tuXTsKPiArCj4gKwkJaWYgKCFlcnIgJiYgKnRsLT5o d3NwX3NlcW5vICE9IG4pIHsKPiArCQkJcHJfZXJyKCJJbnZhbGlkIHNlcW5vIHN0b3JlZCBpbiB0 aW1lbGluZSAlbHUsIGZvdW5kIDB4JXhcbiIsCgpBdCBsZWFzdCB5b3UgYWRkZWQgMHggcHJlZml4 IHRvIGF2b2lkICJJbnZhbGlkIHNlcW5vIHN0b3JlZCBpbiB0aW1lbGluZSAKNSwgZm91bmQgNVxu IiEgOykgQnV0IHNhbWUgYmFzZSB3b3VsZCBiZSBldmVuIGJldHRlci4gOikKCj4gKwkJCSAgICAg ICBuLCAqdGwtPmh3c3Bfc2Vxbm8pOwo+ICsJCQllcnIgPSAtRUlOVkFMOwo+ICsJCX0KPiArCQlp OTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwl9Cj4gKwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQo aTkxNSwgd2FrZXJlZik7Cj4gKwltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICsKPiArCWt2ZnJlZSh0aW1lbGluZXMpOwo+ICsKPiArCXJldHVybiBlcnI7Cj4gKyN1bmRl ZiBOVU1fVElNRUxJTkVTCj4gK30KPiArCj4gK3N0YXRpYyBpbnQgbGl2ZV9od3NwX2FsdGVybmF0 ZSh2b2lkICphcmcpCj4gK3sKPiArI2RlZmluZSBOVU1fVElNRUxJTkVTIDQwOTYKPiArCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUg Kip0aW1lbGluZXM7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gKwllbnVt IGludGVsX2VuZ2luZV9pZCBpZDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJdW5z aWduZWQgbG9uZyBjb3VudCwgbjsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCS8qCj4gKwkgKiBD cmVhdGUgYSBidW5jaCBvZiB0aW1lbGluZXMgYW5kIGNoZWNrIHdlIGNhbiB3cml0ZQo+ICsJICog aW5kZXBlbmRlbnRseSB0byBlYWNoIG9mIHRoZWlyIGJyZWFkY3J1bWIgc2xvdHMgd2l0aCBhZGph Y2VudAo+ICsJICogZW5naW5lcy4KPiArCSAqLwo+ICsKPiArCXRpbWVsaW5lcyA9IGt2bWFsbG9j X2FycmF5KE5VTV9USU1FTElORVMgKiBJOTE1X05VTV9FTkdJTkVTLAo+ICsJCQkJICAgc2l6ZW9m KCp0aW1lbGluZXMpLAo+ICsJCQkJICAgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXRpbWVsaW5lcykK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiArCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCj4g Kwljb3VudCA9IDA7Cj4gKwlmb3IgKG4gPSAwOyBuIDwgTlVNX1RJTUVMSU5FUzsgbisrKSB7Cj4g KwkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQkJc3RydWN0IGk5MTVf dGltZWxpbmUgKnRsOwo+ICsJCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCQkJdTMyIGFk ZHI7Cj4gKwkJCXUzMiAqY3M7Cj4gKwo+ICsJCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVf ZHdvcmQoZW5naW5lKSkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJdGwgPSBpOTE1X3RpbWVs aW5lX2NyZWF0ZShpOTE1LCAibGl2ZSIsIE5VTEwpOwo+ICsJCQlpZiAoSVNfRVJSKHRsKSkgewo+ ICsJCQkJZXJyID0gUFRSX0VSUih0bCk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiAr CQkJaWYgKCp0bC0+aHdzcF9zZXFubykgewo+ICsJCQkJcHJfZXJyKCJUaW1lbGluZSAlbHUgY3Jl YXRlZCB3aXRoIG5vbi16ZXJvIGJyZWFkY3J1bWIsIGZvdW5kICV4XG4iLAo+ICsJCQkJICAgICAg IGNvdW50LCAqdGwtPmh3c3Bfc2Vxbm8pOwo+ICsJCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWk5 MTVfdGltZWxpbmVfcHV0KHRsKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQll cnIgPSBpOTE1X3RpbWVsaW5lX3Bpbih0bCk7Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCWk5MTVf dGltZWxpbmVfcHV0KHRsKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlycSA9 IGk5MTVfcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiArCQkJ aWYgKElTX0VSUihycSkpIHsKPiArCQkJCWk5MTVfdGltZWxpbmVfdW5waW4odGwpOwo+ICsJCQkJ aTkxNV90aW1lbGluZV9wdXQodGwpOwo+ICsJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gKwkJCQln b3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsK PiArCQkJaWYgKElTX0VSUihjcykpIHsKPiArCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJ CQkJaTkxNV90aW1lbGluZV91bnBpbih0bCk7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7 Cj4gKwkJCQllcnIgPSBQVFJfRVJSKGNzKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ ICsJCQlhZGRyID0gaTkxNV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArIHRsLT5od3NwX29m ZnNldDsKPiArCj4gKwkJCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgewo+ICsJCQkJKmNzKysg PSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwo+ICsJCQkJKmNzKysgPSBh ZGRyOwo+ICsJCQkJKmNzKysgPSAwOwo+ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJfSBlbHNl IGlmIChJTlRFTF9HRU4oaTkxNSkgPj0gNCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09S RF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwo+ICsJCQkJKmNzKysgPSAwOwo+ICsJCQkJKmNzKysg PSBhZGRyOwo+ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJfSBlbHNlIHsKPiArCQkJCSpjcysr ID0gTUlfU1RPUkVfRFdPUkRfSU1NIHwgTUlfTUVNX1ZJUlRVQUw7Cj4gKwkJCQkqY3MrKyA9IGFk ZHI7Cj4gKwkJCQkqY3MrKyA9IGNvdW50Owo+ICsJCQkJKmNzKysgPSBNSV9OT09QOwo+ICsJCQl9 CgpPa2F5LCBJIGFtIHVwZ3JhZGluZyB0aGUgIm5vdGUgdG8gc2VsZiIgZnJvbSBhYm92ZSB0byAi cGxlYXNlIApjb25zb2xpZGF0ZSIgc3RvcmUgZHdvcmQgZW1pc3Npb24gYXQgbGVhc3QgbG9jYWxs eS4KCk1heWJlIGV2ZW4gdGhlIHdob2xlIGxvb3AgYm9keSBjb3VsZCBiZSBjb21tb24/CgoJZXJy ID0gdGxfZW1pdF9ycSgmdGltZWxpbmVzW2NvdW50XSwgZW5naW5lLCBjb3VudCk7CglpZiAoZXJy KQoJCWdvdG8gb3V0OwoJCgljb3VudCsrOwo/Cgo+ICsJCQlpbnRlbF9yaW5nX2FkdmFuY2UocnEs IGNzKTsKPiArCj4gKwkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJCQlpOTE1X3RpbWVsaW5l X3VucGluKHRsKTsKPiArCj4gKwkJCXRpbWVsaW5lc1tjb3VudCsrXSA9IHRsOwo+ICsJCX0KPiAr CX0KPiArCj4gKwllcnIgPSBpOTE1X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsIEk5MTVfV0FJVF9M T0NLRUQsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKPiArCj4gK291dDoKPiArCWZvciAobiA9IDA7 IG4gPCBjb3VudDsgbisrKSB7Cj4gKwkJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsID0gdGltZWxp bmVzW25dOwo+ICsKPiArCQlpZiAoIWVyciAmJiAqdGwtPmh3c3Bfc2Vxbm8gIT0gbikgewo+ICsJ CQlwcl9lcnIoIkludmFsaWQgc2Vxbm8gc3RvcmVkIGluIHRpbWVsaW5lICVsdSwgZm91bmQgMHgl eFxuIiwKPiArCQkJICAgICAgIG4sICp0bC0+aHdzcF9zZXFubyk7Cj4gKwkJCWVyciA9IC1FSU5W QUw7Cj4gKwkJfQo+ICsJCWk5MTVfdGltZWxpbmVfcHV0KHRsKTsKPiArCX0KPiArCj4gKwlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCW11dGV4X3VubG9jaygmaTkxNS0+ ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwo+ICsJa3ZmcmVlKHRpbWVsaW5lcyk7Cj4gKwo+ICsJcmV0 dXJuIGVycjsKPiArI3VuZGVmIE5VTV9USU1FTElORVMKPiArfQo+ICsKPiArc3RhdGljIGludCBs aXZlX2h3c3BfcmVjeWNsZSh2b2lkICphcmcpCj4gK3sKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnOwo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJ ZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAr CXVuc2lnbmVkIGxvbmcgY291bnQ7Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4gKwkvKgo+ICsJICog Q2hlY2sgc2Vxbm8gd3JpdGVzIGludG8gb25lIHRpbWVsaW5lIGF0IGEgdGltZS4gV2UgZXhwZWN0 IHRvCj4gKwkgKiByZWN5Y2xlIHRoZSBicmVhZGNydW1iIHNsb3QgYmV0d2VlbiBpdGVyYXRpb25z IGFuZCBuZWl0aGVyCj4gKwkgKiB3YW50IHRvIGNvbmZ1c2Ugb3Vyc2VsdmVzIG9yIHRoZSBHUFUu Cj4gKwkgKi8KPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAr CXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChpOTE1KTsKPiArCj4gKwljb3VudCA9IDA7 Cj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ICsJCUlHVF9USU1FT1VU KGVuZF90aW1lKTsKPiArCj4gKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3JkKGVu Z2luZSkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlkbyB7Cj4gKwkJCXN0cnVjdCBpOTE1X3Rp bWVsaW5lICp0bDsKPiArCQkJc3RydWN0IGk5MTVfcmVxdWVzdCAqcnE7Cj4gKwkJCXUzMiBhZGRy Owo+ICsJCQl1MzIgKmNzOwo+ICsKPiArCQkJdGwgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShpOTE1 LCAibGl2ZSIsIE5VTEwpOwo+ICsJCQlpZiAoSVNfRVJSKHRsKSkgewo+ICsJCQkJZXJyID0gUFRS X0VSUih0bCk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJfQo+ICsKPiArCQkJaWYgKCp0bC0+aHdz cF9zZXFubykgewo+ICsJCQkJcHJfZXJyKCJUaW1lbGluZSAlbHUgY3JlYXRlZCB3aXRoIG5vbi16 ZXJvIGJyZWFkY3J1bWIsIGZvdW5kICV4XG4iLAo+ICsJCQkJICAgICAgIGNvdW50LCAqdGwtPmh3 c3Bfc2Vxbm8pOwo+ICsJCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0 KHRsKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQllcnIgPSBpOTE1X3RpbWVs aW5lX3Bpbih0bCk7Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCWk5MTVfdGltZWxpbmVfcHV0KHRs KTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlycSA9IGk5MTVfcmVxdWVzdF9h bGxvYyhlbmdpbmUsIGk5MTUtPmtlcm5lbF9jb250ZXh0KTsKPiArCQkJaWYgKElTX0VSUihycSkp IHsKPiArCQkJCWk5MTVfdGltZWxpbmVfdW5waW4odGwpOwo+ICsJCQkJaTkxNV90aW1lbGluZV9w dXQodGwpOwo+ICsJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gKwkJCQlnb3RvIG91dDsKPiArCQkJ fQo+ICsKPiArCQkJY3MgPSBpbnRlbF9yaW5nX2JlZ2luKHJxLCA0KTsKPiArCQkJaWYgKElTX0VS UihjcykpIHsKPiArCQkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ICsJCQkJaTkxNV90aW1lbGlu ZV91bnBpbih0bCk7Cj4gKwkJCQlpOTE1X3RpbWVsaW5lX3B1dCh0bCk7Cj4gKwkJCQllcnIgPSBQ VFJfRVJSKGNzKTsKPiArCQkJCWdvdG8gb3V0Owo+ICsJCQl9Cj4gKwo+ICsJCQlhZGRyID0gaTkx NV9nZ3R0X29mZnNldCh0bC0+aHdzcF9nZ3R0KSArIHRsLT5od3NwX29mZnNldDsKPiArCj4gKwkJ CWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gOCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09S RF9JTU1fR0VONCB8IE1JX1VTRV9HR1RUOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJKmNz KysgPSAwOwo+ICsJCQkJKmNzKysgPSBjb3VudDsKPiArCQkJfSBlbHNlIGlmIChJTlRFTF9HRU4o aTkxNSkgPj0gNCkgewo+ICsJCQkJKmNzKysgPSBNSV9TVE9SRV9EV09SRF9JTU1fR0VONCB8IE1J X1VTRV9HR1RUOwo+ICsJCQkJKmNzKysgPSAwOwo+ICsJCQkJKmNzKysgPSBhZGRyOwo+ICsJCQkJ KmNzKysgPSBjb3VudDsKPiArCQkJfSBlbHNlIHsKPiArCQkJCSpjcysrID0gTUlfU1RPUkVfRFdP UkRfSU1NIHwgTUlfTUVNX1ZJUlRVQUw7Cj4gKwkJCQkqY3MrKyA9IGFkZHI7Cj4gKwkJCQkqY3Mr KyA9IGNvdW50Owo+ICsJCQkJKmNzKysgPSBNSV9OT09QOwo+ICsJCQl9Cj4gKwkJCWludGVsX3Jp bmdfYWR2YW5jZShycSwgY3MpOwo+ICsKPiArCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwkJ CWk5MTVfdGltZWxpbmVfdW5waW4odGwpOwo+ICsKPiArCQkJaTkxNV9yZXF1ZXN0X3dhaXQocnEs IEk5MTVfV0FJVF9MT0NLRUQsIE1BWF9TQ0hFRFVMRV9USU1FT1VUKTsKCnNlbGZ0ZXN0cyB0aW1l b3V0IGhlcmUgYW5kIGNoZWNrIGVycm9yPwoKPiArCQkJaWYgKCp0bC0+aHdzcF9zZXFubyAhPSBj b3VudCkgewo+ICsJCQkJcHJfZXJyKCJJbnZhbGlkIHNlcW5vIHN0b3JlZCBpbiB0aW1lbGluZSAl bHUsIGZvdW5kIDB4JXhcbiIsCj4gKwkJCQkgICAgICAgY291bnQsICp0bC0+aHdzcF9zZXFubyk7 Cj4gKwkJCQllcnIgPSAtRUlOVkFMOwo+ICsJCQl9Cj4gKwo+ICsJCQlpOTE1X3RpbWVsaW5lX3B1 dCh0bCk7Cj4gKwkJCWNvdW50Kys7Cj4gKwo+ICsJCQlpZiAoZXJyKQo+ICsJCQkJZ290byBvdXQ7 Cj4gKwkJfSB3aGlsZSAoIV9faWd0X3RpbWVvdXQoZW5kX3RpbWUsIE5VTEwpKTsKPiArCX0KPiAr Cj4gK291dDoKPiArCWludGVsX3J1bnRpbWVfcG1fcHV0KGk5MTUsIHdha2VyZWYpOwo+ICsJbXV0 ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlyZXR1cm4gZXJyOwo+ ICt9Cj4gKwo+ICtpbnQgaTkxNV90aW1lbGluZV9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSkKPiArewo+ICsJc3RhdGljIGNvbnN0IHN0cnVjdCBpOTE1X3N1YnRl c3QgdGVzdHNbXSA9IHsKPiArCQlTVUJURVNUKGxpdmVfaHdzcF9yZWN5Y2xlKSwKPiArCQlTVUJU RVNUKGxpdmVfaHdzcF9lbmdpbmUpLAo+ICsJCVNVQlRFU1QobGl2ZV9od3NwX2FsdGVybmF0ZSks Cj4gKwl9Owo+ICsKPiArCXJldHVybiBpOTE1X3N1YnRlc3RzKHRlc3RzLCBpOTE1KTsKPiArfQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19lbmdpbmUu YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jCj4gaW5kZXgg OTY4YTdlMTM5YTY3Li5hY2QyN2M3ZTgwN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvbW9ja19lbmdpbmUuYwo+IEBAIC0zNCwxMiArMzQsMjAgQEAgc3RhdGljIHN0 cnVjdCBpbnRlbF9yaW5nICptb2NrX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5l KQo+ICAgewo+ICAgCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3ogPSBQQUdFX1NJWkUgLyAyOwo+ICAg CXN0cnVjdCBtb2NrX3JpbmcgKnJpbmc7Cj4gKwlpbnQgZXJyOwo+ICAgCj4gICAJcmluZyA9IGt6 YWxsb2Moc2l6ZW9mKCpyaW5nKSArIHN6LCBHRlBfS0VSTkVMKTsKPiAgIAlpZiAoIXJpbmcpCj4g ICAJCXJldHVybiBOVUxMOwo+ICAgCj4gLQlpOTE1X3RpbWVsaW5lX2luaXQoZW5naW5lLT5pOTE1 LCAmcmluZy0+dGltZWxpbmUsIGVuZ2luZS0+bmFtZSk7Cj4gKwllcnIgPSBpOTE1X3RpbWVsaW5l X2luaXQoZW5naW5lLT5pOTE1LAo+ICsJCQkJICZyaW5nLT50aW1lbGluZSwKPiArCQkJCSBlbmdp bmUtPm5hbWUsCj4gKwkJCQkgTlVMTCk7Cj4gKwlpZiAoZXJyKSB7Cj4gKwkJa2ZyZWUocmluZyk7 Cj4gKwkJcmV0dXJuIE5VTEw7Cj4gKwl9Cj4gICAKPiAgIAlyaW5nLT5iYXNlLnNpemUgPSBzejsK PiAgIAlyaW5nLT5iYXNlLmVmZmVjdGl2ZV9zaXplID0gc3o7Cj4gQEAgLTIwOSw3ICsyMTcsMTEg QEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyAqbW9ja19lbmdpbmUoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUsCj4gICAJZW5naW5lLT5iYXNlLmVtaXRfYnJlYWRjcnVtYiA9IG1vY2tfZW1p dF9icmVhZGNydW1iOwo+ICAgCWVuZ2luZS0+YmFzZS5zdWJtaXRfcmVxdWVzdCA9IG1vY2tfc3Vi bWl0X3JlcXVlc3Q7Cj4gICAKPiAtCWk5MTVfdGltZWxpbmVfaW5pdChpOTE1LCAmZW5naW5lLT5i YXNlLnRpbWVsaW5lLCBlbmdpbmUtPmJhc2UubmFtZSk7Cj4gKwlpZiAoaTkxNV90aW1lbGluZV9p bml0KGk5MTUsCj4gKwkJCSAgICAgICAmZW5naW5lLT5iYXNlLnRpbWVsaW5lLAo+ICsJCQkgICAg ICAgZW5naW5lLT5iYXNlLm5hbWUsCj4gKwkJCSAgICAgICBOVUxMKSkKPiArCQlnb3RvIGVycl9m cmVlOwo+ICAgCWk5MTVfdGltZWxpbmVfc2V0X3N1YmNsYXNzKCZlbmdpbmUtPmJhc2UudGltZWxp bmUsIFRJTUVMSU5FX0VOR0lORSk7Cj4gICAKPiAgIAlpbnRlbF9lbmdpbmVfaW5pdF9icmVhZGNy dW1icygmZW5naW5lLT5iYXNlKTsKPiBAQCAtMjI3LDYgKzIzOSw3IEBAIHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKm1vY2tfZW5naW5lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAg ZXJyX2JyZWFkY3J1bWJzOgo+ICAgCWludGVsX2VuZ2luZV9maW5pX2JyZWFkY3J1bWJzKCZlbmdp bmUtPmJhc2UpOwo+ICAgCWk5MTVfdGltZWxpbmVfZmluaSgmZW5naW5lLT5iYXNlLnRpbWVsaW5l KTsKPiArZXJyX2ZyZWU6Cj4gICAJa2ZyZWUoZW5naW5lKTsKPiAgIAlyZXR1cm4gTlVMTDsKPiAg IH0KPiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4Cg==