From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Keep timeline HWSP allocated until idle across the system Date: Wed, 27 Feb 2019 14:20:25 +0000 Message-ID: <92b5886c-248d-8f61-d983-063d25176991@linux.intel.com> References: <20190226102404.29153-6-chris@chris-wilson.co.uk> <20190227111545.17525-1-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 mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6C4386E0D9 for ; Wed, 27 Feb 2019 14:20:27 +0000 (UTC) In-Reply-To: <20190227111545.17525-1-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 Ck9uIDI3LzAyLzIwMTkgMTE6MTUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBJbiBwcmVwYXJhdGlv biBmb3IgZW5hYmxpbmcgSFcgc2VtYXBob3Jlcywgd2UgbmVlZCB0byBrZWVwIGluIGZsaWdodAo+ IHRpbWVsaW5lIEhXU1AgYWxpdmUgdW50aWwgaXRzIHVzZSBhY3Jvc3MgZW50aXJlIHN5c3RlbSBo YXMgY29tcGxldGVkLAo+IGFzIGFueSBvdGhlciB0aW1lbGluZSBhY3RpdmUgb24gdGhlIEdQVSBt YXkgc3RpbGwgcmVmZXIgYmFjayB0byB0aGUKPiBhbHJlYWR5IHJldGlyZWQgdGltZWxpbmUuIFdl IGJvdGggaGF2ZSB0byBkZWxheSByZWN5Y2xpbmcgYXZhaWxhYmxlCj4gY2FjaGVsaW5lcyBhbmQg dW5waW5uaW5nIG9sZCBIV1NQIHVudGlsIHRoZSBuZXh0IGlkbGUgcG9pbnQuCj4gCj4gQW4gZWFz eSBvcHRpb24gd291bGQgYmUgdG8gc2ltcGx5IGtlZXAgYWxsIHVzZWQgSFdTUCB1bnRpbCB0aGUg c3lzdGVtIGFzCj4gYSB3aG9sZSB3YXMgaWRsZSwgaS5lLiB3ZSBjb3VsZCByZWxlYXNlIHRoZW0g YWxsIGF0IG9uY2Ugb24gcGFya2luZy4KPiBIb3dldmVyLCBvbiBhIGJ1c3kgc3lzdGVtLCB3ZSBt YXkgbmV2ZXIgc2VlIGEgZ2xvYmFsIGlkbGUgcG9pbnQsCj4gZXNzZW50aWFsbHkgbWVhbmluZyB0 aGUgcmVzb3VyY2Ugd2lsbCBiZSBsZWFrZWQgdW50aWwgd2UgYXJlIGZvcmNlZCB0bwo+IGRvIGEg R0MgcGFzcy4gV2UgYWxyZWFkeSBlbXBsb3kgYSBmaW5lLWdyYWluZWQgaWRsZSBkZXRlY3Rpb24g bWVjaGFuaXNtCj4gZm9yIHZtYSwgd2hpY2ggd2UgY2FuIHJldXNlIGhlcmUgc28gdGhhdCBlYWNo IGNhY2hlbGluZSBjYW4gYmUgZnJlZWQKPiBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCByZXF1 ZXN0IHVzaW5nIGl0IGlzIHJldGlyZWQuCj4gCj4gdjM6IEtlZXAgdHJhY2sgb2YgdGhlIGFjdGl2 aXR5IG9mIGVhY2ggY2FjaGVsaW5lLgo+IHY0OiBjYWNoZWxpbmVfZnJlZSgpIG9uIGNhbmNlbGlu ZyB0aGUgc2Vxbm8gdHJhY2tpbmcKPiB2NTogRmluYWxseSB3aXRoIGEgdGVzdGNhc2UgdG8gZXhl cmNpc2Ugd3JhcGFyb3VuZAo+IHY2OiBQYWNrIGNhY2hlbGluZSBpbnRvIGVtcHR5IGJpdHMgb2Yg cGFnZS1hbGlnbmVkIHZhZGRyCj4gdjc6IFVzZSBpOTE1X3V0aWxzIHRvIGhpZGUgdGhlIHBvaW50 ZXIgY2FzdGluZyBhcm91bmQgYml0IG1hbmlwdWxhdGlvbgo+IAo+IFNpZ25lZC1vZmYtYnk6IENo cmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IFJldmlld2VkLWJ5OiBUdnJ0 a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPiAjdjUKPiAtLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAgICAgICAgICB8ICAzMSArLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDExICsKPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuYyAgICAgICAgICB8IDI5MCArKysrKysr KysrKysrKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdGltZWxpbmUuaCAgICAg ICAgICB8ICAxMSArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oICAgICAg ICAgICAgIHwgICAzICsKPiAgIC4uLi9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdGltZWxp bmUuYyAgICB8IDExMyArKysrKysrCj4gICA2IGZpbGVzIGNoYW5nZWQsIDQyMCBpbnNlcnRpb25z KCspLCAzOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ IGluZGV4IDcxOWQxYTVhYjA4Mi4uZDM1NDk2N2Q2YWU4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZXF1ZXN0LmMKPiBAQCAtMzI1LDExICszMjUsNiBAQCB2b2lkIGk5MTVfcmVxdWVzdF9y ZXRpcmVfdXB0byhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIAl9IHdoaWxlICh0bXAgIT0g cnEpOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB1MzIgdGltZWxpbmVfZ2V0X3NlcW5vKHN0cnVjdCBp OTE1X3RpbWVsaW5lICp0bCkKPiAtewo+IC0JcmV0dXJuIHRsLT5zZXFubyArPSAxICsgdGwtPmhh c19pbml0aWFsX2JyZWFkY3J1bWI7Cj4gLX0KPiAtCj4gICBzdGF0aWMgdm9pZCBtb3ZlX3RvX3Rp bWVsaW5lKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QsCj4gICAJCQkgICAgIHN0cnVjdCBp OTE1X3RpbWVsaW5lICp0aW1lbGluZSkKPiAgIHsKPiBAQCAtNTMyLDggKzUyNywxMCBAQCBzdHJ1 Y3QgaTkxNV9yZXF1ZXN0ICoKPiAgIGk5MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICB7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gLQlzdHJ1Y3Qg aTkxNV9yZXF1ZXN0ICpycTsKPiAgIAlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Cj4gKwlzdHJ1 Y3QgaTkxNV90aW1lbGluZSAqdGw7Cj4gKwlzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycTsKPiArCXUz MiBzZXFubzsKPiAgIAlpbnQgcmV0Owo+ICAgCj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gQEAgLTYxMCwyNCArNjA3LDI3IEBAIGk5MTVfcmVxdWVz dF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHgpCj4gICAJCX0KPiAgIAl9Cj4gICAKPiAtCXJxLT5yY3VzdGF0ZSA9IGdldF9z dGF0ZV9zeW5jaHJvbml6ZV9yY3UoKTsKPiAtCj4gICAJSU5JVF9MSVNUX0hFQUQoJnJxLT5hY3Rp dmVfbGlzdCk7Cj4gKwo+ICsJdGwgPSBjZS0+cmluZy0+dGltZWxpbmU7Cj4gKwlyZXQgPSBpOTE1 X3RpbWVsaW5lX2dldF9zZXFubyh0bCwgcnEsICZzZXFubyk7Cj4gKwlpZiAocmV0KQo+ICsJCWdv dG8gZXJyX2ZyZWU7Cj4gKwo+ICAgCXJxLT5pOTE1ID0gaTkxNTsKPiAgIAlycS0+ZW5naW5lID0g ZW5naW5lOwo+ICAgCXJxLT5nZW1fY29udGV4dCA9IGN0eDsKPiAgIAlycS0+aHdfY29udGV4dCA9 IGNlOwo+ICAgCXJxLT5yaW5nID0gY2UtPnJpbmc7Cj4gLQlycS0+dGltZWxpbmUgPSBjZS0+cmlu Zy0+dGltZWxpbmU7Cj4gKwlycS0+dGltZWxpbmUgPSB0bDsKPiAgIAlHRU1fQlVHX09OKHJxLT50 aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gLQlycS0+aHdzcF9zZXFubyA9IHJxLT50 aW1lbGluZS0+aHdzcF9zZXFubzsKPiArCXJxLT5od3NwX3NlcW5vID0gdGwtPmh3c3Bfc2Vxbm87 Cj4gKwlycS0+aHdzcF9jYWNoZWxpbmUgPSB0bC0+aHdzcF9jYWNoZWxpbmU7Cj4gKwlycS0+cmN1 c3RhdGUgPSBnZXRfc3RhdGVfc3luY2hyb25pemVfcmN1KCk7IC8qIGFjdHMgYXMgc21wX21iKCkg Ki8KPiAgIAo+ICAgCXNwaW5fbG9ja19pbml0KCZycS0+bG9jayk7Cj4gLQlkbWFfZmVuY2VfaW5p dCgmcnEtPmZlbmNlLAo+IC0JCSAgICAgICAmaTkxNV9mZW5jZV9vcHMsCj4gLQkJICAgICAgICZy cS0+bG9jaywKPiAtCQkgICAgICAgcnEtPnRpbWVsaW5lLT5mZW5jZV9jb250ZXh0LAo+IC0JCSAg ICAgICB0aW1lbGluZV9nZXRfc2Vxbm8ocnEtPnRpbWVsaW5lKSk7Cj4gKwlkbWFfZmVuY2VfaW5p dCgmcnEtPmZlbmNlLCAmaTkxNV9mZW5jZV9vcHMsICZycS0+bG9jaywKPiArCQkgICAgICAgdGwt PmZlbmNlX2NvbnRleHQsIHNlcW5vKTsKPiAgIAo+ICAgCS8qIFdlIGJ1bXAgdGhlIHJlZiBmb3Ig dGhlIGZlbmNlIGNoYWluICovCj4gICAJaTkxNV9zd19mZW5jZV9pbml0KCZpOTE1X3JlcXVlc3Rf Z2V0KHJxKS0+c3VibWl0LCBzdWJtaXRfbm90aWZ5KTsKPiBAQCAtNjg3LDYgKzY4Nyw3IEBAIGk5 MTVfcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsIHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPnNj aGVkLnNpZ25hbGVyc19saXN0KSk7Cj4gICAJR0VNX0JVR19PTighbGlzdF9lbXB0eSgmcnEtPnNj aGVkLndhaXRlcnNfbGlzdCkpOwo+ICAgCj4gK2Vycl9mcmVlOgo+ICAgCWttZW1fY2FjaGVfZnJl ZShnbG9iYWwuc2xhYl9yZXF1ZXN0cywgcnEpOwo+ICAgZXJyX3VucmVzZXJ2ZToKPiAgIAltdXRl eF91bmxvY2soJmNlLT5yaW5nLT50aW1lbGluZS0+bXV0ZXgpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVxdWVzdC5oCj4gaW5kZXggYmUzZGVkNmJjZjU2Li5lYTFlNmYwYWRlNTMgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBk cm1fZmlsZTsKPiAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0Owo+ICAgc3RydWN0IGk5MTVf cmVxdWVzdDsKPiAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lOwo+ICtzdHJ1Y3QgaTkxNV90aW1lbGlu ZV9jYWNoZWxpbmU7Cj4gICAKPiAgIHN0cnVjdCBpOTE1X2NhcHR1cmVfbGlzdCB7Cj4gICAJc3Ry dWN0IGk5MTVfY2FwdHVyZV9saXN0ICpuZXh0Owo+IEBAIC0xNDgsNiArMTQ5LDE2IEBAIHN0cnVj dCBpOTE1X3JlcXVlc3Qgewo+ICAgCSAqLwo+ICAgCWNvbnN0IHUzMiAqaHdzcF9zZXFubzsKPiAg IAo+ICsJLyoKPiArCSAqIElmIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSB0aW1lbGluZSdzIHNlcW5v IGZvciB0aGlzIHJlcXVlc3QgaW4KPiArCSAqIGFub3RoZXIgcmVxdWVzdCwgd2UgbmVlZCB0byBr ZWVwIGEgcmVhZCByZWZlcmVuY2UgdG8gdGhpcyBhc3NvY2lhdGVkCj4gKwkgKiBjYWNoZWxpbmUs IHNvIHRoYXQgd2UgZG8gbm90IGZyZWUgYW5kIHJlY3ljbGUgaXQgYmVmb3JlIHRoZSBmb3JpZWdu Cj4gKwkgKiBvYnNlcnZlcnMgaGF2ZSBjb21wbGV0ZWQuIEhlbmNlLCB3ZSBrZWVwIGEgcG9pbnRl ciB0byB0aGUgY2FjaGVsaW5lCj4gKwkgKiBpbnNpZGUgdGhlIHRpbWVsaW5lJ3MgSFdTUCB2bWEs IGJ1dCBpdCBpcyBvbmx5IHZhbGlkIHdoaWxlIHRoaXMKPiArCSAqIHJlcXVlc3QgaGFzIG5vdCBj b21wbGV0ZWQgYW5kIGd1YXJkZWQgYnkgdGhlIHRpbWVsaW5lIG11dGV4Lgo+ICsJICovCj4gKwlz dHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmh3c3BfY2FjaGVsaW5lOwo+ICsKPiAgIAkv KiogUG9zaXRpb24gaW4gdGhlIHJpbmcgb2YgdGhlIHN0YXJ0IG9mIHRoZSByZXF1ZXN0ICovCj4g ICAJdTMyIGhlYWQ7Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCj4gaW5k ZXggODdhODA1NThkYTI4Li5lNDVlODFiNGNhYjYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV90aW1lbGluZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV90aW1lbGluZS5jCj4gQEAgLTYsMTkgKzYsMjkgQEAKPiAgIAo+ICAgI2luY2x1ZGUgImk5MTVf ZHJ2LmgiCj4gICAKPiAtI2luY2x1ZGUgImk5MTVfdGltZWxpbmUuaCIKPiArI2luY2x1ZGUgImk5 MTVfYWN0aXZlLmgiCj4gICAjaW5jbHVkZSAiaTkxNV9zeW5jbWFwLmgiCj4gKyNpbmNsdWRlICJp OTE1X3RpbWVsaW5lLmgiCj4gICAKPiAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3c3Agewo+IC0J c3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0Owo+ ICAgCXN0cnVjdCBsaXN0X2hlYWQgZnJlZV9saW5rOwo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7 Cj4gICAJdTY0IGZyZWVfYml0bWFwOwo+ICAgfTsKPiAgIAo+IC1zdGF0aWMgaW5saW5lIHN0cnVj dCBpOTE1X3RpbWVsaW5lX2h3c3AgKgo+IC1pOTE1X3RpbWVsaW5lX2h3c3AoY29uc3Qgc3RydWN0 IGk5MTVfdGltZWxpbmUgKnRsKQo+ICtzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgewo+ ICsJc3RydWN0IGk5MTVfYWN0aXZlIGFjdGl2ZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2h3 c3AgKmh3c3A7Cj4gKwl2b2lkICp2YWRkcjsKPiArI2RlZmluZSBDQUNIRUxJTkVfQklUUyA2Cj4g KyNkZWZpbmUgQ0FDSEVMSU5FX0ZSRUUgQ0FDSEVMSU5FX0JJVFMKPiArfTsKPiArCj4gK3N0YXRp YyBpbmxpbmUgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKgo+ICtod3NwX3RvX2k5MTUoc3RydWN0 IGk5MTVfdGltZWxpbmVfaHdzcCAqaHdzcCkKPiAgIHsKPiAtCXJldHVybiB0bC0+aHdzcF9nZ3R0 LT5wcml2YXRlOwo+ICsJcmV0dXJuIGNvbnRhaW5lcl9vZihod3NwLT5ndCwgc3RydWN0IGRybV9p OTE1X3ByaXZhdGUsIGd0LnRpbWVsaW5lcyk7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3Qg aTkxNV92bWEgKl9faHdzcF9hbGxvYyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSkKPiBA QCAtNzEsNiArODEsNyBAQCBod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGlu ZSwgdW5zaWduZWQgaW50ICpjYWNoZWxpbmUpCj4gICAJCXZtYS0+cHJpdmF0ZSA9IGh3c3A7Cj4g ICAJCWh3c3AtPnZtYSA9IHZtYTsKPiAgIAkJaHdzcC0+ZnJlZV9iaXRtYXAgPSB+MHVsbDsKPiAr CQlod3NwLT5ndCA9IGd0Owo+ICAgCj4gICAJCXNwaW5fbG9jaygmZ3QtPmh3c3BfbG9jayk7Cj4g ICAJCWxpc3RfYWRkKCZod3NwLT5mcmVlX2xpbmssICZndC0+aHdzcF9mcmVlX2xpc3QpOwo+IEBA IC04OCwxNCArOTksOSBAQCBod3NwX2FsbG9jKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGlu ZSwgdW5zaWduZWQgaW50ICpjYWNoZWxpbmUpCj4gICAJcmV0dXJuIGh3c3AtPnZtYTsKPiAgIH0K PiAgIAo+IC1zdGF0aWMgdm9pZCBod3NwX2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVs aW5lKQo+ICtzdGF0aWMgdm9pZCBfX2lkbGVfaHdzcF9mcmVlKHN0cnVjdCBpOTE1X3RpbWVsaW5l X2h3c3AgKmh3c3AsIGludCBjYWNoZWxpbmUpCj4gICB7Cj4gLQlzdHJ1Y3QgaTkxNV9ndF90aW1l bGluZXMgKmd0ID0gJnRpbWVsaW5lLT5pOTE1LT5ndC50aW1lbGluZXM7Cj4gLQlzdHJ1Y3QgaTkx NV90aW1lbGluZV9od3NwICpod3NwOwo+IC0KPiAtCWh3c3AgPSBpOTE1X3RpbWVsaW5lX2h3c3Ao dGltZWxpbmUpOwo+IC0JaWYgKCFod3NwKSAvKiBsZWF2ZSBnbG9iYWwgSFdTUCBhbG9uZSEgKi8K PiAtCQlyZXR1cm47Cj4gKwlzdHJ1Y3QgaTkxNV9ndF90aW1lbGluZXMgKmd0ID0gaHdzcC0+Z3Q7 Cj4gICAKPiAgIAlzcGluX2xvY2soJmd0LT5od3NwX2xvY2spOwo+ICAgCj4gQEAgLTEwMyw3ICsx MDksOCBAQCBzdGF0aWMgdm9pZCBod3NwX2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVs aW5lKQo+ICAgCWlmICghaHdzcC0+ZnJlZV9iaXRtYXApCj4gICAJCWxpc3RfYWRkX3RhaWwoJmh3 c3AtPmZyZWVfbGluaywgJmd0LT5od3NwX2ZyZWVfbGlzdCk7Cj4gICAKPiAtCWh3c3AtPmZyZWVf Yml0bWFwIHw9IEJJVF9VTEwodGltZWxpbmUtPmh3c3Bfb2Zmc2V0IC8gQ0FDSEVMSU5FX0JZVEVT KTsKPiArCUdFTV9CVUdfT04oY2FjaGVsaW5lID49IEJJVFNfUEVSX1RZUEUoaHdzcC0+ZnJlZV9i aXRtYXApKTsKPiArCWh3c3AtPmZyZWVfYml0bWFwIHw9IEJJVF9VTEwoY2FjaGVsaW5lKTsKPiAg IAo+ICAgCS8qIEFuZCBpZiBubyBvbmUgaXMgbGVmdCB1c2luZyBpdCwgZ2l2ZSB0aGUgcGFnZSBi YWNrIHRvIHRoZSBzeXN0ZW0gKi8KPiAgIAlpZiAoaHdzcC0+ZnJlZV9iaXRtYXAgPT0gfjB1bGwp IHsKPiBAQCAtMTE1LDYgKzEyMiw3NiBAQCBzdGF0aWMgdm9pZCBod3NwX2ZyZWUoc3RydWN0IGk5 MTVfdGltZWxpbmUgKnRpbWVsaW5lKQo+ICAgCXNwaW5fdW5sb2NrKCZndC0+aHdzcF9sb2NrKTsK PiAgIH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBfX2lkbGVfY2FjaGVsaW5lX2ZyZWUoc3RydWN0IGk5 MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKPiArewo+ICsJR0VNX0JVR19PTighaTkxNV9hY3Rp dmVfaXNfaWRsZSgmY2wtPmFjdGl2ZSkpOwo+ICsKPiArCWk5MTVfZ2VtX29iamVjdF91bnBpbl9t YXAoY2wtPmh3c3AtPnZtYS0+b2JqKTsKPiArCWk5MTVfdm1hX3B1dChjbC0+aHdzcC0+dm1hKTsK PiArCV9faWRsZV9od3NwX2ZyZWUoY2wtPmh3c3AsIHB0cl91bm1hc2tfYml0cyhjbC0+dmFkZHIs IENBQ0hFTElORV9CSVRTKSk7Cj4gKwo+ICsJaTkxNV9hY3RpdmVfZmluaSgmY2wtPmFjdGl2ZSk7 Cj4gKwlrZnJlZShjbCk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIF9fY2FjaGVsaW5lX3JldGly ZShzdHJ1Y3QgaTkxNV9hY3RpdmUgKmFjdGl2ZSkKPiArewo+ICsJc3RydWN0IGk5MTVfdGltZWxp bmVfY2FjaGVsaW5lICpjbCA9Cj4gKwkJY29udGFpbmVyX29mKGFjdGl2ZSwgdHlwZW9mKCpjbCks IGFjdGl2ZSk7Cj4gKwo+ICsJaTkxNV92bWFfdW5waW4oY2wtPmh3c3AtPnZtYSk7Cj4gKwlpZiAo cHRyX3Rlc3RfYml0KGNsLT52YWRkciwgQ0FDSEVMSU5FX0ZSRUUpKQo+ICsJCV9faWRsZV9jYWNo ZWxpbmVfZnJlZShjbCk7Cj4gK30KPiArCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV90aW1lbGluZV9j YWNoZWxpbmUgKgo+ICtjYWNoZWxpbmVfYWxsb2Moc3RydWN0IGk5MTVfdGltZWxpbmVfaHdzcCAq aHdzcCwgdW5zaWduZWQgaW50IGNhY2hlbGluZSkKPiArewo+ICsJc3RydWN0IGk5MTVfdGltZWxp bmVfY2FjaGVsaW5lICpjbDsKPiArCXZvaWQgKnZhZGRyOwo+ICsKPiArCUdFTV9CVUdfT04oY2Fj aGVsaW5lID49IEJJVChDQUNIRUxJTkVfQklUUykpOwo+ICsKPiArCWNsID0ga21hbGxvYyhzaXpl b2YoKmNsKSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIWNsKQo+ICsJCXJldHVybiBFUlJfUFRSKC1F Tk9NRU0pOwo+ICsKPiArCXZhZGRyID0gaTkxNV9nZW1fb2JqZWN0X3Bpbl9tYXAoaHdzcC0+dm1h LT5vYmosIEk5MTVfTUFQX1dCKTsKPiArCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gKwkJa2ZyZWUo Y2wpOwo+ICsJCXJldHVybiBFUlJfQ0FTVCh2YWRkcik7Cj4gKwl9Cj4gKwo+ICsJaTkxNV92bWFf Z2V0KGh3c3AtPnZtYSk7Cj4gKwljbC0+aHdzcCA9IGh3c3A7Cj4gKwljbC0+dmFkZHIgPSBwYWdl X3BhY2tfYml0cyh2YWRkciwgY2FjaGVsaW5lKTsKPiArCj4gKwlpOTE1X2FjdGl2ZV9pbml0KGh3 c3BfdG9faTkxNShod3NwKSwgJmNsLT5hY3RpdmUsIF9fY2FjaGVsaW5lX3JldGlyZSk7Cj4gKwo+ ICsJcmV0dXJuIGNsOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBjYWNoZWxpbmVfYWNxdWlyZShz dHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNsKQo+ICt7Cj4gKwlpZiAoY2wgJiYgaTkx NV9hY3RpdmVfYWNxdWlyZSgmY2wtPmFjdGl2ZSkpCj4gKwkJX19pOTE1X3ZtYV9waW4oY2wtPmh3 c3AtPnZtYSk7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIGNhY2hlbGluZV9yZWxlYXNlKHN0cnVj dCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2wpCj4gK3sKPiArCWlmIChjbCkKPiArCQlpOTE1 X2FjdGl2ZV9yZWxlYXNlKCZjbC0+YWN0aXZlKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgY2Fj aGVsaW5lX2ZyZWUoc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbCkKPiArewo+ICsJ R0VNX0JVR19PTihwdHJfdGVzdF9iaXQoY2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJFRSkpOwo+ICsJ Y2wtPnZhZGRyID0gcHRyX3NldF9iaXQoY2wtPnZhZGRyLCBDQUNIRUxJTkVfRlJFRSk7Cj4gKwo+ ICsJaWYgKGk5MTVfYWN0aXZlX2lzX2lkbGUoJmNsLT5hY3RpdmUpKQo+ICsJCV9faWRsZV9jYWNo ZWxpbmVfZnJlZShjbCk7Cj4gK30KPiArCj4gICBpbnQgaTkxNV90aW1lbGluZV9pbml0KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkgICAgICAgc3RydWN0IGk5MTVfdGltZWxp bmUgKnRpbWVsaW5lLAo+ICAgCQkgICAgICAgY29uc3QgY2hhciAqbmFtZSwKPiBAQCAtMTM2LDI5 ICsyMTMsNDAgQEAgaW50IGk5MTVfdGltZWxpbmVfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSwKPiAgIAl0aW1lbGluZS0+bmFtZSA9IG5hbWU7Cj4gICAJdGltZWxpbmUtPnBpbl9j b3VudCA9IDA7Cj4gICAJdGltZWxpbmUtPmhhc19pbml0aWFsX2JyZWFkY3J1bWIgPSAhaHdzcDsK PiArCXRpbWVsaW5lLT5od3NwX2NhY2hlbGluZSA9IE5VTEw7Cj4gICAKPiAtCXRpbWVsaW5lLT5o d3NwX29mZnNldCA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSOwo+ICAgCWlmICghaHdzcCkgewo+ ICsJCXN0cnVjdCBpOTE1X3RpbWVsaW5lX2NhY2hlbGluZSAqY2w7Cj4gICAJCXVuc2lnbmVkIGlu dCBjYWNoZWxpbmU7Cj4gICAKPiAgIAkJaHdzcCA9IGh3c3BfYWxsb2ModGltZWxpbmUsICZjYWNo ZWxpbmUpOwo+ICAgCQlpZiAoSVNfRVJSKGh3c3ApKQo+ICAgCQkJcmV0dXJuIFBUUl9FUlIoaHdz cCk7Cj4gICAKPiArCQljbCA9IGNhY2hlbGluZV9hbGxvYyhod3NwLT5wcml2YXRlLCBjYWNoZWxp bmUpOwo+ICsJCWlmIChJU19FUlIoY2wpKSB7Cj4gKwkJCV9faWRsZV9od3NwX2ZyZWUoaHdzcC0+ cHJpdmF0ZSwgY2FjaGVsaW5lKTsKPiArCQkJcmV0dXJuIFBUUl9FUlIoY2wpOwo+ICsJCX0KPiAr Cj4gKwkJdGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lID0gY2w7Cj4gICAJCXRpbWVsaW5lLT5od3Nw X29mZnNldCA9IGNhY2hlbGluZSAqIENBQ0hFTElORV9CWVRFUzsKPiAtCX0KPiAtCXRpbWVsaW5l LT5od3NwX2dndHQgPSBpOTE1X3ZtYV9nZXQoaHdzcCk7Cj4gICAKPiAtCXZhZGRyID0gaTkxNV9n ZW1fb2JqZWN0X3Bpbl9tYXAoaHdzcC0+b2JqLCBJOTE1X01BUF9XQik7Cj4gLQlpZiAoSVNfRVJS KHZhZGRyKSkgewo+IC0JCWh3c3BfZnJlZSh0aW1lbGluZSk7Cj4gLQkJaTkxNV92bWFfcHV0KGh3 c3ApOwo+IC0JCXJldHVybiBQVFJfRVJSKHZhZGRyKTsKPiArCQl2YWRkciA9IHBhZ2VfbWFza19i aXRzKGNsLT52YWRkcik7Cj4gKwl9IGVsc2Ugewo+ICsJCXRpbWVsaW5lLT5od3NwX29mZnNldCA9 IEk5MTVfR0VNX0hXU19TRVFOT19BRERSOwo+ICsKPiArCQl2YWRkciA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKGh3c3AtPm9iaiwgSTkxNV9NQVBfV0IpOwo+ICsJCWlmIChJU19FUlIodmFkZHIp KQo+ICsJCQlyZXR1cm4gUFRSX0VSUih2YWRkcik7Cj4gICAJfQo+ICAgCj4gICAJdGltZWxpbmUt Pmh3c3Bfc2Vxbm8gPQo+ICAgCQltZW1zZXQodmFkZHIgKyB0aW1lbGluZS0+aHdzcF9vZmZzZXQs IDAsIENBQ0hFTElORV9CWVRFUyk7Cj4gICAKPiArCXRpbWVsaW5lLT5od3NwX2dndHQgPSBpOTE1 X3ZtYV9nZXQoaHdzcCk7Cj4gKwlHRU1fQlVHX09OKHRpbWVsaW5lLT5od3NwX29mZnNldCA+PSBo d3NwLT5zaXplKTsKPiArCj4gICAJdGltZWxpbmUtPmZlbmNlX2NvbnRleHQgPSBkbWFfZmVuY2Vf Y29udGV4dF9hbGxvYygxKTsKPiAgIAo+ICAgCXNwaW5fbG9ja19pbml0KCZ0aW1lbGluZS0+bG9j ayk7Cj4gQEAgLTI0MCw5ICszMjgsMTIgQEAgdm9pZCBpOTE1X3RpbWVsaW5lX2Zpbmkoc3RydWN0 IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lKQo+ICAgCUdFTV9CVUdfT04oaTkxNV9hY3RpdmVfcmVx dWVzdF9pc3NldCgmdGltZWxpbmUtPmJhcnJpZXIpKTsKPiAgIAo+ICAgCWk5MTVfc3luY21hcF9m cmVlKCZ0aW1lbGluZS0+c3luYyk7Cj4gLQlod3NwX2ZyZWUodGltZWxpbmUpOwo+ICAgCj4gLQlp OTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKHRpbWVsaW5lLT5od3NwX2dndHQtPm9iaik7Cj4gKwlp ZiAodGltZWxpbmUtPmh3c3BfY2FjaGVsaW5lKQo+ICsJCWNhY2hlbGluZV9mcmVlKHRpbWVsaW5l LT5od3NwX2NhY2hlbGluZSk7Cj4gKwllbHNlCj4gKwkJaTkxNV9nZW1fb2JqZWN0X3VucGluX21h cCh0aW1lbGluZS0+aHdzcF9nZ3R0LT5vYmopOwo+ICsKPiAgIAlpOTE1X3ZtYV9wdXQodGltZWxp bmUtPmh3c3BfZ2d0dCk7Cj4gICB9Cj4gICAKPiBAQCAtMjg1LDYgKzM3Niw3IEBAIGludCBpOTE1 X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCj4gICAJCWk5MTVfZ2d0dF9v ZmZzZXQodGwtPmh3c3BfZ2d0dCkgKwo+ICAgCQlvZmZzZXRfaW5fcGFnZSh0bC0+aHdzcF9vZmZz ZXQpOwo+ICAgCj4gKwljYWNoZWxpbmVfYWNxdWlyZSh0bC0+aHdzcF9jYWNoZWxpbmUpOwo+ICAg CXRpbWVsaW5lX2FkZF90b19hY3RpdmUodGwpOwo+ICAgCj4gICAJcmV0dXJuIDA7Cj4gQEAgLTI5 NCw2ICszODYsMTU3IEBAIGludCBpOTE1X3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGlu ZSAqdGwpCj4gICAJcmV0dXJuIGVycjsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgdTMyIHRpbWVsaW5l X2FkdmFuY2Uoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRsKQo+ICt7Cj4gKwlHRU1fQlVHX09OKCF0 bC0+cGluX2NvdW50KTsKPiArCUdFTV9CVUdfT04odGwtPnNlcW5vICYgdGwtPmhhc19pbml0aWFs X2JyZWFkY3J1bWIpOwo+ICsKPiArCXJldHVybiB0bC0+c2Vxbm8gKz0gMSArIHRsLT5oYXNfaW5p dGlhbF9icmVhZGNydW1iOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCB0aW1lbGluZV9yb2xsYmFj ayhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCj4gK3sKPiArCXRsLT5zZXFubyAtPSAxICsgdGwt Pmhhc19pbml0aWFsX2JyZWFkY3J1bWI7Cj4gK30KPiArCj4gK3N0YXRpYyBub2lubGluZSBpbnQK PiArX19pOTE1X3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwsCj4g KwkJCSAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCj4gKwkJCSAgdTMyICpzZXFubykKPiArewo+ ICsJc3RydWN0IGk5MTVfdGltZWxpbmVfY2FjaGVsaW5lICpjbDsKPiArCXVuc2lnbmVkIGludCBj YWNoZWxpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCXZvaWQgKnZhZGRyOwo+ICsJ aW50IGVycjsKPiArCj4gKwkvKgo+ICsJICogSWYgdGhlcmUgaXMgYW4gb3V0c3RhbmRpbmcgR1BV IHJlZmVyZW5jZSB0byB0aGlzIGNhY2hlbGluZSwKPiArCSAqIHN1Y2ggYXMgaXQgYmVpbmcgc2Ft cGxlZCBieSBhIEhXIHNlbWFwaG9yZSBvbiBhbm90aGVyIHRpbWVsaW5lLAo+ICsJICogd2UgY2Fu bm90IHdyYXBhcm91bmQgb3VyIHNlcW5vIHZhbHVlICh0aGUgSFcgc2VtYXBob3JlIGRvZXMKPiAr CSAqIGEgc3RyaWN0IGdyZWF0ZXItdGhhbi1vci1lcXVhbHMgY29tcGFyZSwgbm90IGk5MTVfc2Vx bm9fcGFzc2VkKS4KPiArCSAqIFNvIGlmIHRoZSBjYWNoZWxpbmUgaXMgc3RpbGwgYnVzeSwgd2Ug bXVzdCBkZXRhY2ggb3Vyc2VsdmVzCj4gKwkgKiBmcm9tIGl0IGFuZCBsZWF2ZSBpdCBpbmZsaWdo dCBhbG9uZ3NpZGUgaXRzIHVzZXJzLgo+ICsJICoKPiArCSAqIEhvd2V2ZXIsIGlmIG5vYm9keSBp cyB3YXRjaGluZyBhbmQgd2UgY2FuIGd1YXJhbnRlZSB0aGF0IG5vYm9keQo+ICsJICogd2lsbCwg d2UgY291bGQgc2ltcGx5IHJldXNlIHRoZSBzYW1lIGNhY2hlbGluZS4KPiArCSAqCj4gKwkgKiBp ZiAoaTkxNV9hY3RpdmVfcmVxdWVzdF9pc19zaWduYWxlZCgmdGwtPmxhc3RfcmVxdWVzdCkgJiYK PiArCSAqICAgICBpOTE1X2FjdGl2ZV9pc19zaWduYWxlZCgmdGwtPmh3c3BfY2FjaGVsaW5lLT5h Y3RpdmUpKQo+ICsJICoJcmV0dXJuIDA7Cj4gKwkgKgo+ICsJICogVGhhdCBzZWVtcyB1bmxpa2Vs eSBmb3IgYSBidXN5IHRpbWVsaW5lIHRoYXQgbmVlZGVkIHRvIHdyYXAgaW4KPiArCSAqIHRoZSBm aXJzdCBwbGFjZSwgc28ganVzdCByZXBsYWNlIHRoZSBjYWNoZWxpbmUuCj4gKwkgKi8KPiArCj4g Kwl2bWEgPSBod3NwX2FsbG9jKHRsLCAmY2FjaGVsaW5lKTsKPiArCWlmIChJU19FUlIodm1hKSkg ewo+ICsJCWVyciA9IFBUUl9FUlIodm1hKTsKPiArCQlnb3RvIGVycl9yb2xsYmFjazsKPiArCX0K PiArCj4gKwllcnIgPSBpOTE1X3ZtYV9waW4odm1hLCAwLCAwLCBQSU5fR0xPQkFMIHwgUElOX0hJ R0gpOwo+ICsJaWYgKGVycikgewo+ICsJCV9faWRsZV9od3NwX2ZyZWUodm1hLT5wcml2YXRlLCBj YWNoZWxpbmUpOwo+ICsJCWdvdG8gZXJyX3JvbGxiYWNrOwo+ICsJfQo+ICsKPiArCWNsID0gY2Fj aGVsaW5lX2FsbG9jKHZtYS0+cHJpdmF0ZSwgY2FjaGVsaW5lKTsKPiArCWlmIChJU19FUlIoY2wp KSB7Cj4gKwkJZXJyID0gUFRSX0VSUihjbCk7Cj4gKwkJX19pZGxlX2h3c3BfZnJlZSh2bWEtPnBy aXZhdGUsIGNhY2hlbGluZSk7Cj4gKwkJZ290byBlcnJfdW5waW47Cj4gKwl9Cj4gKwlHRU1fQlVH X09OKGNsLT5od3NwLT52bWEgIT0gdm1hKTsKPiArCj4gKwkvKgo+ICsJICogQXR0YWNoIHRoZSBv bGQgY2FjaGVsaW5lIHRvIHRoZSBjdXJyZW50IHJlcXVlc3QsIHNvIHRoYXQgd2Ugb25seQo+ICsJ ICogZnJlZSBpdCBhZnRlciB0aGUgY3VycmVudCByZXF1ZXN0IGlzIHJldGlyZWQsIHdoaWNoIGVu c3VyZXMgdGhhdAo+ICsJICogYWxsIHdyaXRlcyBpbnRvIHRoZSBjYWNoZWxpbmUgZnJvbSBwcmV2 aW91cyByZXF1ZXN0cyBhcmUgY29tcGxldGUuCj4gKwkgKi8KPiArCWVyciA9IGk5MTVfYWN0aXZl X3JlZigmdGwtPmh3c3BfY2FjaGVsaW5lLT5hY3RpdmUsCj4gKwkJCSAgICAgIHRsLT5mZW5jZV9j b250ZXh0LCBycSk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gZXJyX2NhY2hlbGluZTsKPiArCj4g KwljYWNoZWxpbmVfcmVsZWFzZSh0bC0+aHdzcF9jYWNoZWxpbmUpOyAvKiBvd25lcnNoaXAgbm93 IHhmZXJlZCB0byBycSAqLwo+ICsJY2FjaGVsaW5lX2ZyZWUodGwtPmh3c3BfY2FjaGVsaW5lKTsK PiArCj4gKwlpOTE1X3ZtYV91bnBpbih0bC0+aHdzcF9nZ3R0KTsgLyogYmluZGluZyBrZXB0IGFs aXZlIGJ5IG9sZCBjYWNoZWxpbmUgKi8KPiArCWk5MTVfdm1hX3B1dCh0bC0+aHdzcF9nZ3R0KTsK PiArCj4gKwl0bC0+aHdzcF9nZ3R0ID0gaTkxNV92bWFfZ2V0KHZtYSk7Cj4gKwo+ICsJdmFkZHIg PSBwYWdlX21hc2tfYml0cyhjbC0+dmFkZHIpOwo+ICsJdGwtPmh3c3Bfb2Zmc2V0ID0gY2FjaGVs aW5lICogQ0FDSEVMSU5FX0JZVEVTOwo+ICsJdGwtPmh3c3Bfc2Vxbm8gPQo+ICsJCW1lbXNldCh2 YWRkciArIHRsLT5od3NwX29mZnNldCwgMCwgQ0FDSEVMSU5FX0JZVEVTKTsKPiArCj4gKwl0bC0+ aHdzcF9vZmZzZXQgKz0gaTkxNV9nZ3R0X29mZnNldCh2bWEpOwo+ICsKPiArCWNhY2hlbGluZV9h Y3F1aXJlKGNsKTsKPiArCXRsLT5od3NwX2NhY2hlbGluZSA9IGNsOwo+ICsKPiArCSpzZXFubyA9 IHRpbWVsaW5lX2FkdmFuY2UodGwpOwo+ICsJR0VNX0JVR19PTihpOTE1X3NlcW5vX3Bhc3NlZCgq dGwtPmh3c3Bfc2Vxbm8sICpzZXFubykpOwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfY2FjaGVs aW5lOgo+ICsJY2FjaGVsaW5lX2ZyZWUoY2wpOwo+ICtlcnJfdW5waW46Cj4gKwlpOTE1X3ZtYV91 bnBpbih2bWEpOwo+ICtlcnJfcm9sbGJhY2s6Cj4gKwl0aW1lbGluZV9yb2xsYmFjayh0bCk7Cj4g KwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICtpbnQgaTkxNV90aW1lbGluZV9nZXRfc2Vxbm8oc3Ry dWN0IGk5MTVfdGltZWxpbmUgKnRsLAo+ICsJCQkgICAgc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEs Cj4gKwkJCSAgICB1MzIgKnNlcW5vKQo+ICt7Cj4gKwkqc2Vxbm8gPSB0aW1lbGluZV9hZHZhbmNl KHRsKTsKPiArCj4gKwkvKiBSZXBsYWNlIHRoZSBIV1NQIG9uIHdyYXBhcm91bmQgZm9yIEhXIHNl bWFwaG9yZXMgKi8KPiArCWlmICh1bmxpa2VseSghKnNlcW5vICYmIHRsLT5od3NwX2NhY2hlbGlu ZSkpCj4gKwkJcmV0dXJuIF9faTkxNV90aW1lbGluZV9nZXRfc2Vxbm8odGwsIHJxLCBzZXFubyk7 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgY2FjaGVsaW5lX3JlZihz dHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmUgKmNsLAo+ICsJCQkgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCj4gK3sKPiArCXJldHVybiBpOTE1X2FjdGl2ZV9yZWYoJmNsLT5hY3RpdmUsIHJx LT5mZW5jZS5jb250ZXh0LCBycSk7Cj4gK30KPiArCj4gK2ludCBpOTE1X3RpbWVsaW5lX3JlYWRf aHdzcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpmcm9tLAo+ICsJCQkgICAgc3RydWN0IGk5MTVfcmVx dWVzdCAqdG8sCj4gKwkJCSAgICB1MzIgKmh3c3ApCj4gK3sKPiArCXN0cnVjdCBpOTE1X3RpbWVs aW5lX2NhY2hlbGluZSAqY2wgPSBmcm9tLT5od3NwX2NhY2hlbGluZTsKPiArCXN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0bCA9IGZyb20tPnRpbWVsaW5lOwo+ICsJaW50IGVycjsKPiArCj4gKwlHRU1f QlVHX09OKHRvLT50aW1lbGluZSA9PSB0bCk7Cj4gKwo+ICsJbXV0ZXhfbG9ja19uZXN0ZWQoJnRs LT5tdXRleCwgU0lOR0xFX0RFUFRIX05FU1RJTkcpOwo+ICsJZXJyID0gaTkxNV9yZXF1ZXN0X2Nv bXBsZXRlZChmcm9tKTsKPiArCWlmICghZXJyKQo+ICsJCWVyciA9IGNhY2hlbGluZV9yZWYoY2ws IHRvKTsKPiArCWlmICghZXJyKSB7Cj4gKwkJaWYgKGxpa2VseShjbCA9PSB0bC0+aHdzcF9jYWNo ZWxpbmUpKSB7Cj4gKwkJCSpod3NwID0gdGwtPmh3c3Bfb2Zmc2V0Owo+ICsJCX0gZWxzZSB7IC8q IGFjcm9zcyBhIHNlcW5vIHdyYXAsIHJlY292ZXIgdGhlIG9yaWdpbmFsIG9mZnNldCAqLwo+ICsJ CQkqaHdzcCA9IGk5MTVfZ2d0dF9vZmZzZXQoY2wtPmh3c3AtPnZtYSkgKwo+ICsJCQkJcHRyX3Vu bWFza19iaXRzKGNsLT52YWRkciwgQ0FDSEVMSU5FX0JJVFMpICoKPiArCQkJCUNBQ0hFTElORV9C WVRFUzsKPiArCQl9Cj4gKwl9Cj4gKwltdXRleF91bmxvY2soJnRsLT5tdXRleCk7Cj4gKwo+ICsJ cmV0dXJuIGVycjsKPiArfQo+ICsKPiAgIHZvaWQgaTkxNV90aW1lbGluZV91bnBpbihzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqdGwpCj4gICB7Cj4gICAJR0VNX0JVR19PTighdGwtPnBpbl9jb3VudCk7 Cj4gQEAgLTMwMSw2ICs1NDQsNyBAQCB2b2lkIGk5MTVfdGltZWxpbmVfdW5waW4oc3RydWN0IGk5 MTVfdGltZWxpbmUgKnRsKQo+ICAgCQlyZXR1cm47Cj4gICAKPiAgIAl0aW1lbGluZV9yZW1vdmVf ZnJvbV9hY3RpdmUodGwpOwo+ICsJY2FjaGVsaW5lX3JlbGVhc2UodGwtPmh3c3BfY2FjaGVsaW5l KTsKPiAgIAo+ICAgCS8qCj4gICAJICogU2luY2UgdGhpcyB0aW1lbGluZSBpcyBpZGxlLCBhbGwg YmFyaWVycyB1cG9uIHdoaWNoIHdlIHdlcmUgd2FpdGluZwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3RpbWVsaW5lLmgKPiBpbmRleCAzNmMzODQ5ZjcxMDguLjYwYjFkZmFkOTNlZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3RpbWVsaW5lLmgKPiBAQCAtMzQsNyArMzQsNyBAQAo+ICAgI2lu Y2x1ZGUgImk5MTVfdXRpbHMuaCIKPiAgIAo+ICAgc3RydWN0IGk5MTVfdm1hOwo+IC1zdHJ1Y3Qg aTkxNV90aW1lbGluZV9od3NwOwo+ICtzdHJ1Y3QgaTkxNV90aW1lbGluZV9jYWNoZWxpbmU7Cj4g ICAKPiAgIHN0cnVjdCBpOTE1X3RpbWVsaW5lIHsKPiAgIAl1NjQgZmVuY2VfY29udGV4dDsKPiBA QCAtNTEsNiArNTEsOCBAQCBzdHJ1Y3QgaTkxNV90aW1lbGluZSB7Cj4gICAJc3RydWN0IGk5MTVf dm1hICpod3NwX2dndHQ7Cj4gICAJdTMyIGh3c3Bfb2Zmc2V0Owo+ICAgCj4gKwlzdHJ1Y3QgaTkx NV90aW1lbGluZV9jYWNoZWxpbmUgKmh3c3BfY2FjaGVsaW5lOwo+ICsKPiAgIAlib29sIGhhc19p bml0aWFsX2JyZWFkY3J1bWI7Cj4gICAKPiAgIAkvKioKPiBAQCAtMTYyLDggKzE2NCwxNSBAQCBz dGF0aWMgaW5saW5lIGJvb2wgaTkxNV90aW1lbGluZV9zeW5jX2lzX2xhdGVyKHN0cnVjdCBpOTE1 X3RpbWVsaW5lICp0bCwKPiAgIH0KPiAgIAo+ICAgaW50IGk5MTVfdGltZWxpbmVfcGluKHN0cnVj dCBpOTE1X3RpbWVsaW5lICp0bCk7Cj4gK2ludCBpOTE1X3RpbWVsaW5lX2dldF9zZXFubyhzdHJ1 Y3QgaTkxNV90aW1lbGluZSAqdGwsCj4gKwkJCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwK PiArCQkJICAgIHUzMiAqc2Vxbm8pOwo+ICAgdm9pZCBpOTE1X3RpbWVsaW5lX3VucGluKHN0cnVj dCBpOTE1X3RpbWVsaW5lICp0bCk7Cj4gICAKPiAraW50IGk5MTVfdGltZWxpbmVfcmVhZF9od3Nw KHN0cnVjdCBpOTE1X3JlcXVlc3QgKmZyb20sCj4gKwkJCSAgICBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICp1bnRpbCwKPiArCQkJICAgIHUzMiAqaHdzcF9vZmZzZXQpOwo+ICsKPiAgIHZvaWQgaTkxNV90 aW1lbGluZXNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSk7Cj4gICB2b2lkIGk5 MTVfdGltZWxpbmVzX3Bhcmsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpOwo+ICAgdm9p ZCBpOTE1X3RpbWVsaW5lc19maW5pKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gaW5kZXggOTcyNmRmMzdjNGM0Li4xZmI5YzhiMmY1 YjMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV91dGlscy5oCj4gQEAgLTkyLDYgKzkyLDkgQEAK PiAgIAkoKHR5cGVvZihwdHIpKSgodW5zaWduZWQgbG9uZykocHRyKSB8IF9fYml0cykpOwkJCVwK PiAgIH0pCj4gICAKPiArI2RlZmluZSBwdHJfc2V0X2JpdChwdHIsIGJpdCkgKCh0eXBlb2YocHRy KSkoKHVuc2lnbmVkIGxvbmcpKHB0cikgfCBCSVQoYml0KSkpCj4gKyNkZWZpbmUgcHRyX3Rlc3Rf Yml0KHB0ciwgYml0KSAoKHVuc2lnbmVkIGxvbmcpKHB0cikgJiBCSVQoYml0KSkKPiArCj4gICAj ZGVmaW5lIHBhZ2VfbWFza19iaXRzKHB0cikgcHRyX21hc2tfYml0cyhwdHIsIFBBR0VfU0hJRlQp Cj4gICAjZGVmaW5lIHBhZ2VfdW5tYXNrX2JpdHMocHRyKSBwdHJfdW5tYXNrX2JpdHMocHRyLCBQ QUdFX1NISUZUKQo+ICAgI2RlZmluZSBwYWdlX3BhY2tfYml0cyhwdHIsIGJpdHMpIHB0cl9wYWNr X2JpdHMocHRyLCBiaXRzLCBQQUdFX1NISUZUKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1lbGluZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfdGltZWxpbmUuYwo+IGluZGV4IDEyZWE2OWIxYTFlNS4uODQ0NzAxNzU5 ZmZjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3Rp bWVsaW5lLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV90aW1l bGluZS5jCj4gQEAgLTY0MSw2ICs2NDEsMTE4IEBAIHN0YXRpYyBpbnQgbGl2ZV9od3NwX2FsdGVy bmF0ZSh2b2lkICphcmcpCj4gICAjdW5kZWYgTlVNX1RJTUVMSU5FUwo+ICAgfQo+ICAgCj4gK3N0 YXRpYyBpbnQgbGl2ZV9od3NwX3dyYXAodm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2lu ZTsKPiArCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0bDsKPiArCWVudW0gaW50ZWxfZW5naW5lX2lk IGlkOwo+ICsJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7Cj4gKwlpbnQgZXJyID0gMDsKPiArCj4g KwkvKgo+ICsJICogQWNyb3NzIGEgc2Vxbm8gd3JhcCwgd2UgbmVlZCB0byBrZWVwIHRoZSBvbGQg Y2FjaGVsaW5lIGFsaXZlIGZvcgo+ICsJICogZm9yZWlnbiBHUFUgcmVmZXJlbmNlcy4KPiArCSAq Lwo+ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJd2FrZXJl ZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsKPiArCXRsID0gaTkxNV90aW1lbGlu ZV9jcmVhdGUoaTkxNSwgX19mdW5jX18sIE5VTEwpOwo+ICsJaWYgKElTX0VSUih0bCkpIHsKPiAr CQllcnIgPSBQVFJfRVJSKHRsKTsKPiArCQlnb3RvIG91dF9ycG07Cj4gKwl9Cj4gKwlpZiAoIXRs LT5oYXNfaW5pdGlhbF9icmVhZGNydW1iIHx8ICF0bC0+aHdzcF9jYWNoZWxpbmUpCj4gKwkJZ290 byBvdXRfZnJlZTsKPiArCj4gKwllcnIgPSBpOTE1X3RpbWVsaW5lX3Bpbih0bCk7Cj4gKwlpZiAo ZXJyKQo+ICsJCWdvdG8gb3V0X2ZyZWU7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwg aTkxNSwgaWQpIHsKPiArCQljb25zdCB1MzIgKmh3c3Bfc2Vxbm9bMl07Cj4gKwkJc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnE7Cj4gKwkJdTMyIHNlcW5vWzJdOwo+ICsKPiArCQlpZiAoIWludGVsX2Vu Z2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXJx ID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgaTkxNS0+a2VybmVsX2NvbnRleHQpOwo+ICsJ CWlmIChJU19FUlIocnEpKSB7Cj4gKwkJCWVyciA9IFBUUl9FUlIocnEpOwo+ICsJCQlnb3RvIG91 dDsKPiArCQl9Cj4gKwo+ICsJCXRsLT5zZXFubyA9IC00dTsKPiArCj4gKwkJZXJyID0gaTkxNV90 aW1lbGluZV9nZXRfc2Vxbm8odGwsIHJxLCAmc2Vxbm9bMF0pOwo+ICsJCWlmIChlcnIpIHsKPiAr CQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQlwcl9k ZWJ1Zygic2Vxbm9bMF06JTA4eCwgaHdzcF9vZmZzZXQ6JTA4eFxuIiwKPiArCQkJIHNlcW5vWzBd LCB0bC0+aHdzcF9vZmZzZXQpOwo+ICsKPiArCQllcnIgPSBlbWl0X2dndHRfc3RvcmVfZHcocnEs IHRsLT5od3NwX29mZnNldCwgc2Vxbm9bMF0pOwo+ICsJCWlmIChlcnIpIHsKPiArCQkJaTkxNV9y ZXF1ZXN0X2FkZChycSk7Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCQlod3NwX3NlcW5vWzBd ID0gdGwtPmh3c3Bfc2Vxbm87Cj4gKwo+ICsJCWVyciA9IGk5MTVfdGltZWxpbmVfZ2V0X3NlcW5v KHRsLCBycSwgJnNlcW5vWzFdKTsKPiArCQlpZiAoZXJyKSB7Cj4gKwkJCWk5MTVfcmVxdWVzdF9h ZGQocnEpOwo+ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwkJcHJfZGVidWcoInNlcW5vWzFdOiUw OHgsIGh3c3Bfb2Zmc2V0OiUwOHhcbiIsCj4gKwkJCSBzZXFub1sxXSwgdGwtPmh3c3Bfb2Zmc2V0 KTsKPiArCj4gKwkJZXJyID0gZW1pdF9nZ3R0X3N0b3JlX2R3KHJxLCB0bC0+aHdzcF9vZmZzZXQs IHNlcW5vWzFdKTsKPiArCQlpZiAoZXJyKSB7Cj4gKwkJCWk5MTVfcmVxdWVzdF9hZGQocnEpOwo+ ICsJCQlnb3RvIG91dDsKPiArCQl9Cj4gKwkJaHdzcF9zZXFub1sxXSA9IHRsLT5od3NwX3NlcW5v Owo+ICsKPiArCQkvKiBXaXRoIHdyYXAgc2hvdWxkIGNvbWUgYSBuZXcgaHdzcCAqLwo+ICsJCUdF TV9CVUdfT04oc2Vxbm9bMV0gPj0gc2Vxbm9bMF0pOwo+ICsJCUdFTV9CVUdfT04oaHdzcF9zZXFu b1swXSA9PSBod3NwX3NlcW5vWzFdKTsKPiArCj4gKwkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4g Kwo+ICsJCWlmIChpOTE1X3JlcXVlc3Rfd2FpdChycSwgSTkxNV9XQUlUX0xPQ0tFRCwgSFogLyA1 KSA8IDApIHsKPiArCQkJcHJfZXJyKCJXYWl0IGZvciB0aW1lbGluZSB3cml0ZXMgdGltZWQgb3V0 IVxuIik7Cj4gKwkJCWVyciA9IC1FSU87Cj4gKwkJCWdvdG8gb3V0Owo+ICsJCX0KPiArCj4gKwkJ aWYgKCpod3NwX3NlcW5vWzBdICE9IHNlcW5vWzBdIHx8ICpod3NwX3NlcW5vWzFdICE9IHNlcW5v WzFdKSB7Cj4gKwkJCXByX2VycigiQmFkIHRpbWVsaW5lIHZhbHVlczogZm91bmQgKCV4LCAleCks IGV4cGVjdGVkICgleCwgJXgpXG4iLAo+ICsJCQkgICAgICAgKmh3c3Bfc2Vxbm9bMF0sICpod3Nw X3NlcW5vWzFdLAo+ICsJCQkgICAgICAgc2Vxbm9bMF0sIHNlcW5vWzFdKTsKPiArCQkJZXJyID0g LUVJTlZBTDsKPiArCQkJZ290byBvdXQ7Cj4gKwkJfQo+ICsKPiArCQlpOTE1X3JldGlyZV9yZXF1 ZXN0cyhpOTE1KTsgLyogcmVjeWNsZSBIV1NQICovCj4gKwl9Cj4gKwo+ICtvdXQ6Cj4gKwlpZiAo aWd0X2ZsdXNoX3Rlc3QoaTkxNSwgSTkxNV9XQUlUX0xPQ0tFRCkpCj4gKwkJZXJyID0gLUVJTzsK PiArCj4gKwlpOTE1X3RpbWVsaW5lX3VucGluKHRsKTsKPiArb3V0X2ZyZWU6Cj4gKwlpOTE1X3Rp bWVsaW5lX3B1dCh0bCk7Cj4gK291dF9ycG06Cj4gKwlpbnRlbF9ydW50aW1lX3BtX3B1dChpOTE1 LCB3YWtlcmVmKTsKPiArCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g Kwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAgIHN0YXRpYyBpbnQgbGl2ZV9od3NwX3JlY3lj bGUodm9pZCAqYXJnKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g YXJnOwo+IEBAIC03MjMsNiArODM1LDcgQEAgaW50IGk5MTVfdGltZWxpbmVfbGl2ZV9zZWxmdGVz dHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUpCj4gICAJCVNVQlRFU1QobGl2ZV9od3Nw X3JlY3ljbGUpLAo+ICAgCQlTVUJURVNUKGxpdmVfaHdzcF9lbmdpbmUpLAo+ICAgCQlTVUJURVNU KGxpdmVfaHdzcF9hbHRlcm5hdGUpLAo+ICsJCVNVQlRFU1QobGl2ZV9od3NwX3dyYXApLAo+ICAg CX07Cj4gICAKPiAgIAlyZXR1cm4gaTkxNV9zdWJ0ZXN0cyh0ZXN0cywgaTkxNSk7Cj4gCgpSZXZp ZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KClJlZ2Fy ZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4