From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 24/34] drm/i915: Track the context's seqno in its own timeline HWSP Date: Tue, 22 Jan 2019 12:24:42 +0000 Message-ID: References: <20190121222117.23305-1-chris@chris-wilson.co.uk> <20190121222117.23305-25-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 7F1576ECBE for ; Tue, 22 Jan 2019 12:24:40 +0000 (UTC) In-Reply-To: <20190121222117.23305-25-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 Ck9uIDIxLzAxLzIwMTkgMjI6MjEsIENocmlzIFdpbHNvbiB3cm90ZToKPiBOb3cgdGhhdCB3ZSBo YXZlIGFsbG9jYXRlZCBvdXJzZWx2ZXMgYSBjYWNoZWxpbmUgdG8gc3RvcmUgYSBicmVhZGNydW1i LAo+IHdlIGNhbiBlbWl0IGEgd3JpdGUgZnJvbSB0aGUgR1BVIGludG8gdGhlIHRpbWVsaW5lJ3Mg SFdTUCBvZiB0aGUKPiBwZXItY29udGV4dCBzZXFubyBhcyB3ZSBjb21wbGV0ZSBlYWNoIHJlcXVl c3QuIFRoaXMgZHJvcHMgdGhlIG1pcnJvcmluZwo+IG9mIHRoZSBwZXItZW5naW5lIEhXU1AgYW5k IGFsbG93cyBlYWNoIGNvbnRleHQgdG8gb3BlcmF0ZSBpbmRlcGVuZGVudGx5Lgo+IFdlIGRvIG5v dCBuZWVkIHRvIHVud2luZCB0aGUgcGVyLWNvbnRleHQgdGltZWxpbmUsIGFuZCBzbyByZXF1ZXN0 cyBhcmUKPiBhbHdheXMgY29uc2lzdGVudCB3aXRoIHRoZSB0aW1lbGluZSBicmVhZGNydW1iLCBn cmVhdGx5IHNpbXBsaWZ5aW5nIHRoZQo+IGNvbXBsZXRpb24gY2hlY2tzIGFzIHdlIG5vIGxvbmdl ciBuZWVkIHRvIGJlIGNvbmNlcm5lZCBhYm91dCB0aGUKPiBnbG9iYWxfc2Vxbm8gY2hhbmdpbmcg bWlkIGNoZWNrLgo+IAo+IE9uZSBjb21wbGljYXRpb24gdGhvdWdoIGlzIHRoYXQgd2UgaGF2ZSB0 byBiZSB3YXJ5IHRoYXQgdGhlIHJlcXVlc3QgbWF5Cj4gb3V0bGl2ZSB0aGUgSFdTUCBhbmQgc28g YXZvaWQgdG91Y2hpbmcgdGhlIHBvdGVudGlhbGx5IGRhbmdpbmcgcG9pbnRlcgo+IGFmdGVyIHdl IGhhdmUgcmV0aXJlZCB0aGUgZmVuY2UuIFdlIGFsc28gaGF2ZSB0byBndWFyZCBvdXIgYWNjZXNz IG9mIHRoZQo+IEhXU1Agd2l0aCBSQ1UsIHRoZSByZWxlYXNlIG9mIHRoZSBvYmotPm1tLnBhZ2Vz IHNob3VsZCBhbHJlYWR5IGJlIFJDVS1zYWZlLgo+IAo+IEF0IHRoaXMgcG9pbnQsIHdlIGFyZSBl bWl0dGluZyBib3RoIHBlci1jb250ZXh0IGFuZCBnbG9iYWwgc2Vxbm8gYW5kCj4gc3RpbGwgdXNp bmcgdGhlIHNpbmdsZSBwZXItZW5naW5lIGV4ZWN1dGlvbiB0aW1lbGluZSBmb3IgcmVzb2x2aW5n Cj4gaW50ZXJydXB0cy4KPiAKPiB2Mjogcy9mYWtlX2NvbXBsZXRlL21hcmtfY29tcGxldGUvCj4g Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+ Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgICB8 ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICB8 ICAzICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICB8 IDMwICsrKy0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYyAgICAgICAg ICAgIHwgIDEgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAgICAgICAgICAg ICAgfCAgNiArKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMgICAg ICAgfCAgNyArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgICAg ICAgfCAzNSArKysrKy0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZl ci5jICAgICAgfCA4OCArKysrKysrKysrKysrKystLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMgfCAyMCArKysrLQo+ICAgOSBmaWxlcyBjaGFuZ2Vk LCAxMzIgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbS5jCj4gaW5kZXggNzYxNzE0NDQ4ZmYzLi40ZTBkZTIyZjAxNjYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiBAQCAtMjg5MCw3ICsyODkwLDcgQEAgaTkxNV9nZW1fZmluZF9hY3Rp dmVfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJICovCj4gICAJ c3Bpbl9sb2NrX2lycXNhdmUoJmVuZ2luZS0+dGltZWxpbmUubG9jaywgZmxhZ3MpOwo+ICAgCWxp c3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUucmVxdWVzdHMsIGxp bmspIHsKPiAtCQlpZiAoX19pOTE1X3JlcXVlc3RfY29tcGxldGVkKHJlcXVlc3QsIHJlcXVlc3Qt Pmdsb2JhbF9zZXFubykpCj4gKwkJaWYgKGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocmVxdWVzdCkp Cj4gICAJCQljb250aW51ZTsKPiAgIAo+ICAgCQlhY3RpdmUgPSByZXF1ZXN0Owo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gaW5kZXggZDYxZTg2YzZhMWQxLi5iYjI4ODVmMWRjMWUg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmMKPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IEBAIC0xOTksNiArMTk5LDcg QEAgc3RhdGljIHZvaWQgX19yZXRpcmVfZW5naW5lX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2lu ZV9jcyAqZW5naW5lLAo+ICAgCXNwaW5fdW5sb2NrKCZlbmdpbmUtPnRpbWVsaW5lLmxvY2spOwo+ ICAgCj4gICAJc3Bpbl9sb2NrKCZycS0+bG9jayk7Cj4gKwlpOTE1X3JlcXVlc3RfbWFya19jb21w bGV0ZShycSk7Cj4gICAJaWYgKCFpOTE1X3JlcXVlc3Rfc2lnbmFsZWQocnEpKQo+ICAgCQlkbWFf ZmVuY2Vfc2lnbmFsX2xvY2tlZCgmcnEtPmZlbmNlKTsKPiAgIAlpZiAodGVzdF9iaXQoRE1BX0ZF TkNFX0ZMQUdfRU5BQkxFX1NJR05BTF9CSVQsICZycS0+ZmVuY2UuZmxhZ3MpKQo+IEBAIC02MjEs NyArNjIyLDcgQEAgaTkxNV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSwgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCkKPiAgIAlycS0+cmluZyA9IGNlLT5y aW5nOwo+ICAgCXJxLT50aW1lbGluZSA9IGNlLT5yaW5nLT50aW1lbGluZTsKPiAgIAlHRU1fQlVH X09OKHJxLT50aW1lbGluZSA9PSAmZW5naW5lLT50aW1lbGluZSk7Cj4gLQlycS0+aHdzcF9zZXFu byA9ICZlbmdpbmUtPnN0YXR1c19wYWdlLmFkZHJbSTkxNV9HRU1fSFdTX0lOREVYXTsKPiArCXJx LT5od3NwX3NlcW5vID0gcnEtPnRpbWVsaW5lLT5od3NwX3NlcW5vOwo+ICAgCj4gICAJc3Bpbl9s b2NrX2luaXQoJnJxLT5sb2NrKTsKPiAgIAlkbWFfZmVuY2VfaW5pdCgmcnEtPmZlbmNlLAo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gaW5kZXggYWRlMDEwZmU2ZTI2Li45NmM1ODZk NmZmNGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IEBAIC0yODksNiAr Mjg5LDcgQEAgbG9uZyBpOTE1X3JlcXVlc3Rfd2FpdChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwK PiAgIAo+ICAgc3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF9zaWduYWxlZChjb25zdCBz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiAgIHsKPiArCS8qIFRoZSByZXF1ZXN0IG1heSBsaXZl IGxvbmdlciB0aGFuIGl0cyBIV1NQLCBzbyBjaGVjayBmbGFncyBmaXJzdCEgKi8KPiAgIAlyZXR1 cm4gdGVzdF9iaXQoRE1BX0ZFTkNFX0ZMQUdfU0lHTkFMRURfQklULCAmcnEtPmZlbmNlLmZsYWdz KTsKPiAgIH0KPiAgIAo+IEBAIC0zNDAsMzIgKzM0MSwyMyBAQCBzdGF0aWMgaW5saW5lIHUzMiBo d3NwX3NlcW5vKGNvbnN0IHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICAgICovCj4gICBzdGF0 aWMgaW5saW5lIGJvb2wgaTkxNV9yZXF1ZXN0X3N0YXJ0ZWQoY29uc3Qgc3RydWN0IGk5MTVfcmVx dWVzdCAqcnEpCj4gICB7Cj4gLQl1MzIgc2Vxbm87Cj4gLQo+IC0Jc2Vxbm8gPSBpOTE1X3JlcXVl c3RfZ2xvYmFsX3NlcW5vKHJxKTsKPiAtCWlmICghc2Vxbm8pIC8qIG5vdCB5ZXQgc3VibWl0dGVk IHRvIEhXICovCj4gLQkJcmV0dXJuIGZhbHNlOwo+ICsJaWYgKGk5MTVfcmVxdWVzdF9zaWduYWxl ZChycSkpCj4gKwkJcmV0dXJuIHRydWU7Cj4gICAKPiAtCXJldHVybiBpOTE1X3NlcW5vX3Bhc3Nl ZChod3NwX3NlcW5vKHJxKSwgc2Vxbm8gLSAxKTsKPiAtfQo+IC0KPiAtc3RhdGljIGlubGluZSBi b29sCj4gLV9faTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChjb25zdCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycSwgdTMyIHNlcW5vKQo+IC17Cj4gLQlHRU1fQlVHX09OKCFzZXFubyk7Cj4gLQlyZXR1cm4g aTkxNV9zZXFub19wYXNzZWQoaHdzcF9zZXFubyhycSksIHNlcW5vKSAmJgo+IC0JCXNlcW5vID09 IGk5MTVfcmVxdWVzdF9nbG9iYWxfc2Vxbm8ocnEpOwo+ICsJcmV0dXJuIGk5MTVfc2Vxbm9fcGFz c2VkKGh3c3Bfc2Vxbm8ocnEpLCBycS0+ZmVuY2Uuc2Vxbm8gLSAxKTsKPiAgIH0KPiAgIAo+ICAg c3RhdGljIGlubGluZSBib29sIGk5MTVfcmVxdWVzdF9jb21wbGV0ZWQoY29uc3Qgc3RydWN0IGk5 MTVfcmVxdWVzdCAqcnEpCj4gICB7Cj4gLQl1MzIgc2Vxbm87Cj4gKwlpZiAoaTkxNV9yZXF1ZXN0 X3NpZ25hbGVkKHJxKSkKPiArCQlyZXR1cm4gdHJ1ZTsKPiAgIAo+IC0Jc2Vxbm8gPSBpOTE1X3Jl cXVlc3RfZ2xvYmFsX3NlcW5vKHJxKTsKPiAtCWlmICghc2Vxbm8pCj4gLQkJcmV0dXJuIGZhbHNl Owo+ICsJcmV0dXJuIGk5MTVfc2Vxbm9fcGFzc2VkKGh3c3Bfc2Vxbm8ocnEpLCBycS0+ZmVuY2Uu c2Vxbm8pOwo+ICt9Cj4gICAKPiAtCXJldHVybiBfX2k5MTVfcmVxdWVzdF9jb21wbGV0ZWQocnEs IHNlcW5vKTsKPiArc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRl KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxKQo+ICt7Cj4gKwlycS0+aHdzcF9zZXFubyA9ICh1MzIg KikmcnEtPmZlbmNlLnNlcW5vOyAvKiBkZWNvdXBsZSBmcm9tIEhXU1AgKi8KPiAgIH0KPiAgIAo+ ICAgdm9pZCBpOTE1X3JldGlyZV9yZXF1ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYwo+IGluZGV4IDEyZTVhMmJjODI1Yy4uMDll ZGY0ODhmNzExIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVzZXQuYwo+IEBAIC03NTYsNiAr NzU2LDcgQEAgc3RhdGljIHZvaWQgbm9wX3N1Ym1pdF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJlcXVlc3QpCj4gICAKPiAgIAlzcGluX2xvY2tfaXJxc2F2ZSgmcmVxdWVzdC0+ZW5naW5l LT50aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICAJX19pOTE1X3JlcXVlc3Rfc3VibWl0KHJlcXVl c3QpOwo+ICsJaTkxNV9yZXF1ZXN0X21hcmtfY29tcGxldGUocmVxdWVzdCk7Cj4gICAJaW50ZWxf ZW5naW5lX3dyaXRlX2dsb2JhbF9zZXFubyhyZXF1ZXN0LT5lbmdpbmUsIHJlcXVlc3QtPmdsb2Jh bF9zZXFubyk7Cj4gICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcmVxdWVzdC0+ZW5naW5lLT50 aW1lbGluZS5sb2NrLCBmbGFncyk7Cj4gICB9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdm1hLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCj4gaW5k ZXggNDZlYjgxOGVkMzA5Li5iMGY2YjFkOTA0YTUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92bWEuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1h LmgKPiBAQCAtMjI3LDYgKzIyNywxMiBAQCBzdGF0aWMgaW5saW5lIHUzMiBpOTE1X2dndHRfcGlu X2JpYXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gICB9Cj4gICAKPiAgIC8qIFhYWCBpbmxpbmUg c3BhZ2hldHRpICovCj4gK3N0YXRpYyBpbmxpbmUgdTMyIGk5MTVfdGltZWxpbmVfc2Vxbm9fYWRk cmVzcyhjb25zdCBzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCj4gK3sKPiArCUdFTV9CVUdfT04o IXRsLT5waW5fY291bnQpOwo+ICsJcmV0dXJuIGk5MTVfZ2d0dF9vZmZzZXQodGwtPmh3c3BfZ2d0 dCkgKyB0bC0+aHdzcF9vZmZzZXQ7Cj4gK30KPiArCj4gICBzdGF0aWMgaW5saW5lIHN0cnVjdCBp OTE1X3RpbWVsaW5lX2h3c3AgKgo+ICAgaTkxNV90aW1lbGluZV9od3NwKGNvbnN0IHN0cnVjdCBp OTE1X3RpbWVsaW5lICp0bCkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZW5naW5lX2NzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYwo+IGluZGV4IGM4NTBkMTMxZDhjMy4uZTUzMmI0YjI3MjM5IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBAQCAtMTM3NCw5ICsxMzc0LDEwIEBAIHN0YXRp YyB2b2lkIGludGVsX2VuZ2luZV9wcmludF9yZWdpc3RlcnMoY29uc3Qgc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLAo+ICAgCQkJCWNoYXIgaGRyWzgwXTsKPiAgIAo+ICAgCQkJCXNucHJp bnRmKGhkciwgc2l6ZW9mKGhkciksCj4gLQkJCQkJICJcdFx0RUxTUFslZF0gY291bnQ9JWQsIHJp bmctPnN0YXJ0PSUwOHgsIHJxOiAiLAo+ICsJCQkJCSAiXHRcdEVMU1BbJWRdIGNvdW50PSVkLCBy aW5nOiB7c3RhcnQ6JTA4eCwgaHdzcDolMDh4fSwgcnE6ICIsCj4gICAJCQkJCSBpZHgsIGNvdW50 LAo+IC0JCQkJCSBpOTE1X2dndHRfb2Zmc2V0KHJxLT5yaW5nLT52bWEpKTsKPiArCQkJCQkgaTkx NV9nZ3R0X29mZnNldChycS0+cmluZy0+dm1hKSwKPiArCQkJCQkgaTkxNV90aW1lbGluZV9zZXFu b19hZGRyZXNzKHJxLT50aW1lbGluZSkpOwo+ICAgCQkJCXByaW50X3JlcXVlc3QobSwgcnEsIGhk cik7Cj4gICAJCQl9IGVsc2Ugewo+ICAgCQkJCWRybV9wcmludGYobSwgIlx0XHRFTFNQWyVkXSBp ZGxlXG4iLCBpZHgpOwo+IEBAIC0xNDg2LDYgKzE0ODcsOCBAQCB2b2lkIGludGVsX2VuZ2luZV9k dW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJCSAgIHJxLT5yaW5nLT5l bWl0KTsKPiAgIAkJZHJtX3ByaW50ZihtLCAiXHRcdHJpbmctPnNwYWNlOiAgMHglMDh4XG4iLAo+ ICAgCQkJICAgcnEtPnJpbmctPnNwYWNlKTsKPiArCQlkcm1fcHJpbnRmKG0sICJcdFx0cmluZy0+ aHdzcDogICAweCUwOHhcbiIsCj4gKwkJCSAgIGk5MTVfdGltZWxpbmVfc2Vxbm9fYWRkcmVzcyhy cS0+dGltZWxpbmUpKTsKPiAgIAo+ICAgCQlwcmludF9yZXF1ZXN0X3JpbmcobSwgcnEpOwo+ICAg CX0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IDVjODMwYTFjYTMzMi4uMWJmMTc4 Y2EzZTAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtODU3LDEwICs4NTcs MTAgQEAgc3RhdGljIHZvaWQgZXhlY2xpc3RzX2NhbmNlbF9yZXF1ZXN0cyhzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUpCj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShycSwgJmVuZ2luZS0+ dGltZWxpbmUucmVxdWVzdHMsIGxpbmspIHsKPiAgIAkJR0VNX0JVR19PTighcnEtPmdsb2JhbF9z ZXFubyk7Cj4gICAKPiAtCQlpZiAoaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJxKSkKPiAtCQkJY29u dGludWU7Cj4gKwkJaWYgKCFpOTE1X3JlcXVlc3Rfc2lnbmFsZWQocnEpKQo+ICsJCQlkbWFfZmVu Y2Vfc2V0X2Vycm9yKCZycS0+ZmVuY2UsIC1FSU8pOwo+ICAgCj4gLQkJZG1hX2ZlbmNlX3NldF9l cnJvcigmcnEtPmZlbmNlLCAtRUlPKTsKPiArCQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShy cSk7Cj4gICAJfQo+ICAgCj4gICAJLyogRmx1c2ggdGhlIHF1ZXVlZCByZXF1ZXN0cyB0byB0aGUg dGltZWxpbmUgbGlzdCAoZm9yIHJldGlyaW5nKS4gKi8KPiBAQCAtODcwLDkgKzg3MCw5IEBAIHN0 YXRpYyB2b2lkIGV4ZWNsaXN0c19jYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgCj4gICAJCXByaW9saXN0X2Zvcl9lYWNoX3JlcXVlc3RfY29uc3VtZShy cSwgcm4sIHAsIGkpIHsKPiAgIAkJCWxpc3RfZGVsX2luaXQoJnJxLT5zY2hlZC5saW5rKTsKPiAt Cj4gLQkJCWRtYV9mZW5jZV9zZXRfZXJyb3IoJnJxLT5mZW5jZSwgLUVJTyk7Cj4gICAJCQlfX2k5 MTVfcmVxdWVzdF9zdWJtaXQocnEpOwo+ICsJCQlkbWFfZmVuY2Vfc2V0X2Vycm9yKCZycS0+ZmVu Y2UsIC1FSU8pOwo+ICsJCQlpOTE1X3JlcXVlc3RfbWFya19jb21wbGV0ZShycSk7Cj4gICAJCX0K PiAgIAo+ICAgCQlyYl9lcmFzZV9jYWNoZWQoJnAtPm5vZGUsICZleGVjbGlzdHMtPnF1ZXVlKTsK PiBAQCAtMjA1NCwzMSArMjA1NCw0MCBAQCBzdGF0aWMgdm9pZCBnZW44X2VtaXRfYnJlYWRjcnVt YihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICAgCS8qIHcvYTogYml0 IDUgbmVlZHMgdG8gYmUgemVybyBmb3IgTUlfRkxVU0hfRFcgYWRkcmVzcy4gKi8KPiAgIAlCVUlM RF9CVUdfT04oSTkxNV9HRU1fSFdTX0lOREVYX0FERFIgJiAoMSA8PCA1KSk7Cj4gICAKPiAtCWNz ID0gZ2VuOF9lbWl0X2dndHRfd3JpdGUoY3MsIHJlcXVlc3QtPmdsb2JhbF9zZXFubywKPiArCWNz ID0gZ2VuOF9lbWl0X2dndHRfd3JpdGUoY3MsCj4gKwkJCQkgIHJlcXVlc3QtPmZlbmNlLnNlcW5v LAo+ICsJCQkJICBpOTE1X3RpbWVsaW5lX3NlcW5vX2FkZHJlc3MocmVxdWVzdC0+dGltZWxpbmUp KTsKPiArCj4gKwljcyA9IGdlbjhfZW1pdF9nZ3R0X3dyaXRlKGNzLAo+ICsJCQkJICByZXF1ZXN0 LT5nbG9iYWxfc2Vxbm8sCj4gICAJCQkJICBpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0 LT5lbmdpbmUpKTsKPiArCj4gICAJKmNzKysgPSBNSV9VU0VSX0lOVEVSUlVQVDsKPiAgIAkqY3Mr KyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwo+ICsKPiAgIAlyZXF1ZXN0LT50YWls ID0gaW50ZWxfcmluZ19vZmZzZXQocmVxdWVzdCwgY3MpOwo+ICAgCWFzc2VydF9yaW5nX3RhaWxf dmFsaWQocmVxdWVzdC0+cmluZywgcmVxdWVzdC0+dGFpbCk7Cj4gICAKPiAgIAlnZW44X2VtaXRf d2FfdGFpbChyZXF1ZXN0LCBjcyk7Cj4gICB9Cj4gLXN0YXRpYyBjb25zdCBpbnQgZ2VuOF9lbWl0 X2JyZWFkY3J1bWJfc3ogPSA2ICsgV0FfVEFJTF9EV09SRFM7Cj4gK3N0YXRpYyBjb25zdCBpbnQg Z2VuOF9lbWl0X2JyZWFkY3J1bWJfc3ogPSAxMCArIFdBX1RBSUxfRFdPUkRTOwo+ICAgCj4gICBz dGF0aWMgdm9pZCBnZW44X2VtaXRfYnJlYWRjcnVtYl9yY3Moc3RydWN0IGk5MTVfcmVxdWVzdCAq cmVxdWVzdCwgdTMyICpjcykKPiAgIHsKPiAtCS8qIFdlJ3JlIHVzaW5nIHF3b3JkIHdyaXRlLCBz ZXFubyBzaG91bGQgYmUgYWxpZ25lZCB0byA4IGJ5dGVzLiAqLwo+IC0JQlVJTERfQlVHX09OKEk5 MTVfR0VNX0hXU19JTkRFWCAmIDEpOwo+IC0KPiAgIAljcyA9IGdlbjhfZW1pdF9nZ3R0X3dyaXRl X3JjcyhjcywKPiAtCQkJCSAgICAgIHJlcXVlc3QtPmdsb2JhbF9zZXFubywKPiAtCQkJCSAgICAg IGludGVsX2h3c19zZXFub19hZGRyZXNzKHJlcXVlc3QtPmVuZ2luZSksCj4gKwkJCQkgICAgICBy ZXF1ZXN0LT5mZW5jZS5zZXFubywKPiArCQkJCSAgICAgIGk5MTVfdGltZWxpbmVfc2Vxbm9fYWRk cmVzcyhyZXF1ZXN0LT50aW1lbGluZSksCj4gICAJCQkJICAgICAgUElQRV9DT05UUk9MX1JFTkRF Ul9UQVJHRVRfQ0FDSEVfRkxVU0ggfAo+ICAgCQkJCSAgICAgIFBJUEVfQ09OVFJPTF9ERVBUSF9D QUNIRV9GTFVTSCB8Cj4gICAJCQkJICAgICAgUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJMRSB8 Cj4gICAJCQkJICAgICAgUElQRV9DT05UUk9MX0ZMVVNIX0VOQUJMRSB8Cj4gICAJCQkJICAgICAg UElQRV9DT05UUk9MX0NTX1NUQUxMKTsKPiAgIAo+ICsJY3MgPSBnZW44X2VtaXRfZ2d0dF93cml0 ZV9yY3MoY3MsCj4gKwkJCQkgICAgICByZXF1ZXN0LT5nbG9iYWxfc2Vxbm8sCj4gKwkJCQkgICAg ICBpbnRlbF9od3Nfc2Vxbm9fYWRkcmVzcyhyZXF1ZXN0LT5lbmdpbmUpLAo+ICsJCQkJICAgICAg UElQRV9DT05UUk9MX0NTX1NUQUxMKTsKPiArCj4gICAJKmNzKysgPSBNSV9VU0VSX0lOVEVSUlVQ VDsKPiAgIAkqY3MrKyA9IE1JX0FSQl9PTl9PRkYgfCBNSV9BUkJfRU5BQkxFOwo+ICAgCj4gQEAg LTIwODcsNyArMjA5Niw3IEBAIHN0YXRpYyB2b2lkIGdlbjhfZW1pdF9icmVhZGNydW1iX3Jjcyhz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0LCB1MzIgKmNzKQo+ICAgCj4gICAJZ2VuOF9lbWl0 X3dhX3RhaWwocmVxdWVzdCwgY3MpOwo+ICAgfQo+IC1zdGF0aWMgY29uc3QgaW50IGdlbjhfZW1p dF9icmVhZGNydW1iX3Jjc19zeiA9IDggKyBXQV9UQUlMX0RXT1JEUzsKPiArc3RhdGljIGNvbnN0 IGludCBnZW44X2VtaXRfYnJlYWRjcnVtYl9yY3Nfc3ogPSAxNCArIFdBX1RBSUxfRFdPUkRTOwo+ ICAgCj4gICBzdGF0aWMgaW50IGdlbjhfaW5pdF9yY3NfY29udGV4dChzdHJ1Y3QgaTkxNV9yZXF1 ZXN0ICpycSkKPiAgIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cmluZ2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4g aW5kZXggY2FkMjVmN2I4YzJlLi43NTFiZDRlN2RhNDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gQEAgLTMyNiw2ICszMjYsMTIgQEAgc3RhdGljIHZvaWQg Z2VuNl9yY3NfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNz KQo+ICAgCQkgUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJMRSB8Cj4gICAJCSBQSVBFX0NPTlRS T0xfUVdfV1JJVEUgfAo+ICAgCQkgUElQRV9DT05UUk9MX0NTX1NUQUxMKTsKPiArCSpjcysrID0g aTkxNV90aW1lbGluZV9zZXFub19hZGRyZXNzKHJxLT50aW1lbGluZSkgfAo+ICsJCVBJUEVfQ09O VFJPTF9HTE9CQUxfR1RUOwo+ICsJKmNzKysgPSBycS0+ZmVuY2Uuc2Vxbm87Cj4gKwo+ICsJKmNz KysgPSBHRlhfT1BfUElQRV9DT05UUk9MKDQpOwo+ICsJKmNzKysgPSBQSVBFX0NPTlRST0xfUVdf V1JJVEUgfCBQSVBFX0NPTlRST0xfQ1NfU1RBTEw7Cj4gICAJKmNzKysgPSBpbnRlbF9od3Nfc2Vx bm9fYWRkcmVzcyhycS0+ZW5naW5lKSB8IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUOwo+ICAgCSpj cysrID0gcnEtPmdsb2JhbF9zZXFubzsKPiAgIAo+IEBAIC0zMzUsNyArMzQxLDcgQEAgc3RhdGlj IHZvaWQgZ2VuNl9yY3NfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1 MzIgKmNzKQo+ICAgCXJxLT50YWlsID0gaW50ZWxfcmluZ19vZmZzZXQocnEsIGNzKTsKPiAgIAlh c3NlcnRfcmluZ190YWlsX3ZhbGlkKHJxLT5yaW5nLCBycS0+dGFpbCk7Cj4gICB9Cj4gLXN0YXRp YyBjb25zdCBpbnQgZ2VuNl9yY3NfZW1pdF9icmVhZGNydW1iX3N6ID0gMTQ7Cj4gK3N0YXRpYyBj b25zdCBpbnQgZ2VuNl9yY3NfZW1pdF9icmVhZGNydW1iX3N6ID0gMTg7Cj4gICAKPiAgIHN0YXRp YyBpbnQKPiAgIGdlbjdfcmVuZGVyX3JpbmdfY3Nfc3RhbGxfd2Eoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEpCj4gQEAgLTQyNiw2ICs0MzIsMTMgQEAgc3RhdGljIHZvaWQgZ2VuN19yY3NfZW1pdF9i cmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNzKQo+ICAgCQkgUElQRV9D T05UUk9MX1FXX1dSSVRFIHwKPiAgIAkJIFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Cj4g ICAJCSBQSVBFX0NPTlRST0xfQ1NfU1RBTEwpOwo+ICsJKmNzKysgPSBpOTE1X3RpbWVsaW5lX3Nl cW5vX2FkZHJlc3MocnEtPnRpbWVsaW5lKTsKPiArCSpjcysrID0gcnEtPmZlbmNlLnNlcW5vOwo+ ICsKPiArCSpjcysrID0gR0ZYX09QX1BJUEVfQ09OVFJPTCg0KTsKPiArCSpjcysrID0gKFBJUEVf Q09OVFJPTF9RV19XUklURSB8Cj4gKwkJIFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQiB8Cj4g KwkJIFBJUEVfQ09OVFJPTF9DU19TVEFMTCk7Cj4gICAJKmNzKysgPSBpbnRlbF9od3Nfc2Vxbm9f YWRkcmVzcyhycS0+ZW5naW5lKTsKPiAgIAkqY3MrKyA9IHJxLT5nbG9iYWxfc2Vxbm87Cj4gICAK PiBAQCAtNDM1LDI3ICs0NDgsMzcgQEAgc3RhdGljIHZvaWQgZ2VuN19yY3NfZW1pdF9icmVhZGNy dW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNzKQo+ICAgCXJxLT50YWlsID0gaW50 ZWxfcmluZ19vZmZzZXQocnEsIGNzKTsKPiAgIAlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJxLT5y aW5nLCBycS0+dGFpbCk7Cj4gICB9Cj4gLXN0YXRpYyBjb25zdCBpbnQgZ2VuN19yY3NfZW1pdF9i cmVhZGNydW1iX3N6ID0gNjsKPiArc3RhdGljIGNvbnN0IGludCBnZW43X3Jjc19lbWl0X2JyZWFk Y3J1bWJfc3ogPSAxMDsKPiAgIAo+ICAgc3RhdGljIHZvaWQgZ2VuNl94Y3NfZW1pdF9icmVhZGNy dW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNzKQo+ICAgewo+IC0JKmNzKysgPSBN SV9GTFVTSF9EVyB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFc7Cj4gLQkqY3MrKyA9IGludGVsX2h3 c19zZXFub19hZGRyZXNzKHJxLT5lbmdpbmUpIHwgTUlfRkxVU0hfRFdfVVNFX0dUVDsKPiArCSpj cysrID0gTUlfRkxVU0hfRFcgfCBNSV9GTFVTSF9EV19PUF9TVE9SRURXIHwgTUlfRkxVU0hfRFdf U1RPUkVfSU5ERVg7Cj4gKwkqY3MrKyA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSIHwgTUlfRkxV U0hfRFdfVVNFX0dUVDsKPiArCSpjcysrID0gcnEtPmZlbmNlLnNlcW5vOwo+ICsKPiArCSpjcysr ID0gTUlfRkxVU0hfRFcgfCBNSV9GTFVTSF9EV19PUF9TVE9SRURXIHwgTUlfRkxVU0hfRFdfU1RP UkVfSU5ERVg7Cj4gKwkqY3MrKyA9IEk5MTVfR0VNX0hXU19JTkRFWF9BRERSIHwgTUlfRkxVU0hf RFdfVVNFX0dUVDsKPiAgIAkqY3MrKyA9IHJxLT5nbG9iYWxfc2Vxbm87Cj4gKwo+ICAgCSpjcysr ID0gTUlfVVNFUl9JTlRFUlJVUFQ7Cj4gKwkqY3MrKyA9IE1JX05PT1A7Cj4gICAKPiAgIAlycS0+ dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJxLCBjcyk7Cj4gICAJYXNzZXJ0X3JpbmdfdGFpbF92 YWxpZChycS0+cmluZywgcnEtPnRhaWwpOwo+ICAgfQo+IC1zdGF0aWMgY29uc3QgaW50IGdlbjZf eGNzX2VtaXRfYnJlYWRjcnVtYl9zeiA9IDQ7Cj4gK3N0YXRpYyBjb25zdCBpbnQgZ2VuNl94Y3Nf ZW1pdF9icmVhZGNydW1iX3N6ID0gODsKPiAgIAo+ICAgI2RlZmluZSBHRU43X1hDU19XQSAzMgo+ ICAgc3RhdGljIHZvaWQgZ2VuN194Y3NfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVl c3QgKnJxLCB1MzIgKmNzKQo+ICAgewo+ICAgCWludCBpOwo+ICAgCj4gLQkqY3MrKyA9IE1JX0ZM VVNIX0RXIHwgTUlfRkxVU0hfRFdfT1BfU1RPUkVEVzsKPiAtCSpjcysrID0gaW50ZWxfaHdzX3Nl cW5vX2FkZHJlc3MocnEtPmVuZ2luZSkgfCBNSV9GTFVTSF9EV19VU0VfR1RUOwo+ICsJKmNzKysg PSBNSV9GTFVTSF9EVyB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcgfCBNSV9GTFVTSF9EV19TVE9S RV9JTkRFWDsKPiArCSpjcysrID0gSTkxNV9HRU1fSFdTX1NFUU5PX0FERFIgfCBNSV9GTFVTSF9E V19VU0VfR1RUOwo+ICsJKmNzKysgPSBycS0+ZmVuY2Uuc2Vxbm87Cj4gKwo+ICsJKmNzKysgPSBN SV9GTFVTSF9EVyB8IE1JX0ZMVVNIX0RXX09QX1NUT1JFRFcgfCBNSV9GTFVTSF9EV19TVE9SRV9J TkRFWDsKPiArCSpjcysrID0gSTkxNV9HRU1fSFdTX0lOREVYX0FERFIgfCBNSV9GTFVTSF9EV19V U0VfR1RUOwo+ICAgCSpjcysrID0gcnEtPmdsb2JhbF9zZXFubzsKPiAgIAo+ICAgCWZvciAoaSA9 IDA7IGkgPCBHRU43X1hDU19XQTsgaSsrKSB7Cj4gQEAgLTQ2OSwxMiArNDkyLDExIEBAIHN0YXRp YyB2b2lkIGdlbjdfeGNzX2VtaXRfYnJlYWRjcnVtYihzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwg dTMyICpjcykKPiAgIAkqY3MrKyA9IDA7Cj4gICAKPiAgIAkqY3MrKyA9IE1JX1VTRVJfSU5URVJS VVBUOwo+IC0JKmNzKysgPSBNSV9OT09QOwo+ICAgCj4gICAJcnEtPnRhaWwgPSBpbnRlbF9yaW5n X29mZnNldChycSwgY3MpOwo+ICAgCWFzc2VydF9yaW5nX3RhaWxfdmFsaWQocnEtPnJpbmcsIHJx LT50YWlsKTsKPiAgIH0KPiAtc3RhdGljIGNvbnN0IGludCBnZW43X3hjc19lbWl0X2JyZWFkY3J1 bWJfc3ogPSA4ICsgR0VON19YQ1NfV0EgKiAzOwo+ICtzdGF0aWMgY29uc3QgaW50IGdlbjdfeGNz X2VtaXRfYnJlYWRjcnVtYl9zeiA9IDEwICsgR0VON19YQ1NfV0EgKiAzOwo+ICAgI3VuZGVmIEdF TjdfWENTX1dBCj4gICAKPiAgIHN0YXRpYyB2b2lkIHNldF9od3N0YW0oc3RydWN0IGludGVsX2Vu Z2luZV9jcyAqZW5naW5lLCB1MzIgbWFzaykKPiBAQCAtNzM0LDcgKzc1Niw3IEBAIHN0YXRpYyB2 b2lkIHJlc2V0X3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLCBib29sIHN0YWxs ZWQpCj4gICAJcnEgPSBOVUxMOwo+ICAgCXNwaW5fbG9ja19pcnFzYXZlKCZ0bC0+bG9jaywgZmxh Z3MpOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkocG9zLCAmdGwtPnJlcXVlc3RzLCBsaW5rKSB7 Cj4gLQkJaWYgKCFfX2k5MTVfcmVxdWVzdF9jb21wbGV0ZWQocG9zLCBwb3MtPmdsb2JhbF9zZXFu bykpIHsKPiArCQlpZiAoIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQocG9zKSkgewo+ICAgCQkJcnEg PSBwb3M7Cj4gICAJCQlicmVhazsKPiAgIAkJfQo+IEBAIC04NzYsMTAgKzg5OCwxMCBAQCBzdGF0 aWMgdm9pZCBjYW5jZWxfcmVxdWVzdHMoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmVuZ2luZS0+dGltZWxpbmUucmVxdWVz dHMsIGxpbmspIHsKPiAgIAkJR0VNX0JVR19PTighcmVxdWVzdC0+Z2xvYmFsX3NlcW5vKTsKPiAg IAo+IC0JCWlmIChpOTE1X3JlcXVlc3Rfc2lnbmFsZWQocmVxdWVzdCkpCj4gLQkJCWNvbnRpbnVl Owo+ICsJCWlmICghaTkxNV9yZXF1ZXN0X3NpZ25hbGVkKHJlcXVlc3QpKQo+ICsJCQlkbWFfZmVu Y2Vfc2V0X2Vycm9yKCZyZXF1ZXN0LT5mZW5jZSwgLUVJTyk7Cj4gICAKPiAtCQlkbWFfZmVuY2Vf c2V0X2Vycm9yKCZyZXF1ZXN0LT5mZW5jZSwgLUVJTyk7Cj4gKwkJaTkxNV9yZXF1ZXN0X21hcmtf Y29tcGxldGUocmVxdWVzdCk7Cj4gICAJfQo+ICAgCj4gICAJaW50ZWxfd3JpdGVfc3RhdHVzX3Bh Z2UoZW5naW5lLAo+IEBAIC05MDMsMjcgKzkyNSwzOCBAQCBzdGF0aWMgdm9pZCBpOXh4X3N1Ym1p dF9yZXF1ZXN0KHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJlcXVlc3QpCj4gICAKPiAgIHN0YXRpYyB2 b2lkIGk5eHhfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNz KQo+ICAgewo+ICsJR0VNX0JVR19PTihycS0+dGltZWxpbmUtPmh3c3BfZ2d0dCAhPSBycS0+ZW5n aW5lLT5zdGF0dXNfcGFnZS52bWEpOwo+ICsKPiAgIAkqY3MrKyA9IE1JX0ZMVVNIOwo+ICAgCj4g KwkqY3MrKyA9IE1JX1NUT1JFX0RXT1JEX0lOREVYOwo+ICsJKmNzKysgPSBJOTE1X0dFTV9IV1Nf U0VRTk9fQUREUjsKPiArCSpjcysrID0gcnEtPmZlbmNlLnNlcW5vOwo+ICsKPiAgIAkqY3MrKyA9 IE1JX1NUT1JFX0RXT1JEX0lOREVYOwo+ICAgCSpjcysrID0gSTkxNV9HRU1fSFdTX0lOREVYX0FE RFI7Cj4gICAJKmNzKysgPSBycS0+Z2xvYmFsX3NlcW5vOwo+ICAgCj4gICAJKmNzKysgPSBNSV9V U0VSX0lOVEVSUlVQVDsKPiAtCSpjcysrID0gTUlfTk9PUDsKPiAgIAo+ICAgCXJxLT50YWlsID0g aW50ZWxfcmluZ19vZmZzZXQocnEsIGNzKTsKPiAgIAlhc3NlcnRfcmluZ190YWlsX3ZhbGlkKHJx LT5yaW5nLCBycS0+dGFpbCk7Cj4gICB9Cj4gLXN0YXRpYyBjb25zdCBpbnQgaTl4eF9lbWl0X2Jy ZWFkY3J1bWJfc3ogPSA2Owo+ICtzdGF0aWMgY29uc3QgaW50IGk5eHhfZW1pdF9icmVhZGNydW1i X3N6ID0gODsKPiAgIAo+ICAgI2RlZmluZSBHRU41X1dBX1NUT1JFUyA4IC8qIG11c3QgYmUgYXQg bGVhc3QgMSEgKi8KPiAgIHN0YXRpYyB2b2lkIGdlbjVfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLCB1MzIgKmNzKQo+ICAgewo+ICAgCWludCBpOwo+ICAgCj4gKwlHRU1f QlVHX09OKHJxLT50aW1lbGluZS0+aHdzcF9nZ3R0ICE9IHJxLT5lbmdpbmUtPnN0YXR1c19wYWdl LnZtYSk7Cj4gKwo+ICAgCSpjcysrID0gTUlfRkxVU0g7Cj4gICAKPiArCSpjcysrID0gTUlfU1RP UkVfRFdPUkRfSU5ERVg7Cj4gKwkqY3MrKyA9IEk5MTVfR0VNX0hXU19TRVFOT19BRERSOwo+ICsJ KmNzKysgPSBycS0+ZmVuY2Uuc2Vxbm87Cj4gKwo+ICAgCUJVSUxEX0JVR19PTihHRU41X1dBX1NU T1JFUyA8IDEpOwo+ICAgCWZvciAoaSA9IDA7IGkgPCBHRU41X1dBX1NUT1JFUzsgaSsrKSB7Cj4g ICAJCSpjcysrID0gTUlfU1RPUkVfRFdPUkRfSU5ERVg7Cj4gQEAgLTkzMiwxMSArOTY1LDEyIEBA IHN0YXRpYyB2b2lkIGdlbjVfZW1pdF9icmVhZGNydW1iKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJx LCB1MzIgKmNzKQo+ICAgCX0KPiAgIAo+ICAgCSpjcysrID0gTUlfVVNFUl9JTlRFUlJVUFQ7Cj4g KwkqY3MrKyA9IE1JX05PT1A7Cj4gICAKPiAgIAlycS0+dGFpbCA9IGludGVsX3Jpbmdfb2Zmc2V0 KHJxLCBjcyk7Cj4gICAJYXNzZXJ0X3JpbmdfdGFpbF92YWxpZChycS0+cmluZywgcnEtPnRhaWwp Owo+ICAgfQo+IC1zdGF0aWMgY29uc3QgaW50IGdlbjVfZW1pdF9icmVhZGNydW1iX3N6ID0gR0VO NV9XQV9TVE9SRVMgKiAzICsgMjsKPiArc3RhdGljIGNvbnN0IGludCBnZW41X2VtaXRfYnJlYWRj cnVtYl9zeiA9IEdFTjVfV0FfU1RPUkVTICogMyArIDY7Cj4gICAjdW5kZWYgR0VONV9XQV9TVE9S RVMKPiAgIAo+ICAgc3RhdGljIHZvaWQKPiBAQCAtMTE2Myw2ICsxMTk3LDEwIEBAIGludCBpbnRl bF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAgIAo+ICAgCUdFTV9CVUdfT04o cmluZy0+dmFkZHIpOwo+ICAgCj4gKwlyZXQgPSBpOTE1X3RpbWVsaW5lX3BpbihyaW5nLT50aW1l bGluZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICAgCWZsYWdzID0gUElO X0dMT0JBTDsKPiAgIAo+ICAgCS8qIFJpbmcgd3JhcGFyb3VuZCBhdCBvZmZzZXQgMCBzb21ldGlt ZXMgaGFuZ3MuIE5vIGlkZWEgd2h5LiAqLwo+IEBAIC0xMTc5LDI4ICsxMjE3LDMyIEBAIGludCBp bnRlbF9yaW5nX3BpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAgIAkJZWxzZQo+ICAgCQkJ cmV0ID0gaTkxNV9nZW1fb2JqZWN0X3NldF90b19jcHVfZG9tYWluKHZtYS0+b2JqLCB0cnVlKTsK PiAgIAkJaWYgKHVubGlrZWx5KHJldCkpCj4gLQkJCXJldHVybiByZXQ7Cj4gKwkJCWdvdG8gdW5w aW5fdGltZWxpbmU7Cj4gICAJfQo+ICAgCj4gICAJcmV0ID0gaTkxNV92bWFfcGluKHZtYSwgMCwg MCwgZmxhZ3MpOwo+ICAgCWlmICh1bmxpa2VseShyZXQpKQo+IC0JCXJldHVybiByZXQ7Cj4gKwkJ Z290byB1bnBpbl90aW1lbGluZTsKPiAgIAo+ICAgCWlmIChpOTE1X3ZtYV9pc19tYXBfYW5kX2Zl bmNlYWJsZSh2bWEpKQo+ICAgCQlhZGRyID0gKHZvaWQgX19mb3JjZSAqKWk5MTVfdm1hX3Bpbl9p b21hcCh2bWEpOwo+ICAgCWVsc2UKPiAgIAkJYWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFw KHZtYS0+b2JqLCBtYXApOwo+IC0JaWYgKElTX0VSUihhZGRyKSkKPiAtCQlnb3RvIGVycjsKPiAr CWlmIChJU19FUlIoYWRkcikpIHsKPiArCQlyZXQgPSBQVFJfRVJSKGFkZHIpOwo+ICsJCWdvdG8g dW5waW5fcmluZzsKPiArCX0KPiAgIAo+ICAgCXZtYS0+b2JqLT5waW5fZ2xvYmFsKys7Cj4gICAK PiAgIAlyaW5nLT52YWRkciA9IGFkZHI7Cj4gICAJcmV0dXJuIDA7Cj4gICAKPiAtZXJyOgo+ICt1 bnBpbl9yaW5nOgo+ICAgCWk5MTVfdm1hX3VucGluKHZtYSk7Cj4gLQlyZXR1cm4gUFRSX0VSUihh ZGRyKTsKPiArdW5waW5fdGltZWxpbmU6Cj4gKwlpOTE1X3RpbWVsaW5lX3VucGluKHJpbmctPnRp bWVsaW5lKTsKPiArCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAgIHZvaWQgaW50ZWxfcmluZ19y ZXNldChzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZywgdTMyIHRhaWwpCj4gQEAgLTEyMjksNiArMTI3 MSw4IEBAIHZvaWQgaW50ZWxfcmluZ191bnBpbihzdHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAg IAo+ICAgCXJpbmctPnZtYS0+b2JqLT5waW5fZ2xvYmFsLS07Cj4gICAJaTkxNV92bWFfdW5waW4o cmluZy0+dm1hKTsKPiArCj4gKwlpOTE1X3RpbWVsaW5lX3VucGluKHJpbmctPnRpbWVsaW5lKTsK PiAgIH0KPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2VuZ2luZS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfZW5naW5lLmMKPiBpbmRleCBjYTk1YWIyNzhkYTMuLmMw YTQwODgyODQxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv bW9ja19lbmdpbmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2Nr X2VuZ2luZS5jCj4gQEAgLTMwLDYgKzMwLDE3IEBAIHN0cnVjdCBtb2NrX3Jpbmcgewo+ICAgCXN0 cnVjdCBpOTE1X3RpbWVsaW5lIHRpbWVsaW5lOwo+ICAgfTsKPiAgIAo+ICtzdGF0aWMgdm9pZCBt b2NrX3RpbWVsaW5lX3BpbihzdHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCj4gK3sKPiArCXRsLT5w aW5fY291bnQrKzsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgbW9ja190aW1lbGluZV91bnBpbihz dHJ1Y3QgaTkxNV90aW1lbGluZSAqdGwpCj4gK3sKPiArCUdFTV9CVUdfT04oIXRsLT5waW5fY291 bnQpOwo+ICsJdGwtPnBpbl9jb3VudC0tOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHN0cnVjdCBpbnRl bF9yaW5nICptb2NrX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ ICAgCWNvbnN0IHVuc2lnbmVkIGxvbmcgc3ogPSBQQUdFX1NJWkUgLyAyOwo+IEBAIC03Niw2ICs4 Nyw4IEBAIHN0YXRpYyB2b2lkIGFkdmFuY2Uoc3RydWN0IG1vY2tfcmVxdWVzdCAqcmVxdWVzdCkK PiAgIHsKPiAgIAlsaXN0X2RlbF9pbml0KCZyZXF1ZXN0LT5saW5rKTsKPiAgIAltb2NrX3NlcW5v X2FkdmFuY2UocmVxdWVzdC0+YmFzZS5lbmdpbmUsIHJlcXVlc3QtPmJhc2UuZ2xvYmFsX3NlcW5v KTsKPiArCWk5MTVfcmVxdWVzdF9tYXJrX2NvbXBsZXRlKCZyZXF1ZXN0LT5iYXNlKTsKPiArCUdF TV9CVUdfT04oIWk5MTVfcmVxdWVzdF9jb21wbGV0ZWQoJnJlcXVlc3QtPmJhc2UpKTsKPiAgIH0K PiAgIAo+ICAgc3RhdGljIHZvaWQgaHdfZGVsYXlfY29tcGxldGUoc3RydWN0IHRpbWVyX2xpc3Qg KnQpCj4gQEAgLTEwOCw2ICsxMjEsNyBAQCBzdGF0aWMgdm9pZCBod19kZWxheV9jb21wbGV0ZShz dHJ1Y3QgdGltZXJfbGlzdCAqdCkKPiAgIAo+ICAgc3RhdGljIHZvaWQgbW9ja19jb250ZXh0X3Vu cGluKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSkKPiAgIHsKPiArCW1vY2tfdGltZWxpbmVfdW5w aW4oY2UtPnJpbmctPnRpbWVsaW5lKTsKPiAgIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjZS0+Z2Vt X2NvbnRleHQpOwo+ICAgfQo+ICAgCj4gQEAgLTEyOSw2ICsxNDMsNyBAQCBtb2NrX2NvbnRleHRf cGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgIAkJIHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgpCj4gICB7Cj4gICAJc3RydWN0IGludGVsX2NvbnRleHQgKmNlID0gdG9f aW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7Cj4gKwlpbnQgZXJyID0gLUVOT01FTTsKPiAgIAo+ ICAgCWlmIChjZS0+cGluX2NvdW50KyspCj4gICAJCXJldHVybiBjZTsKPiBAQCAtMTM5LDEzICsx NTQsMTUgQEAgbW9ja19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Cj4gICAJCQlnb3RvIGVycjsKPiAgIAl9Cj4gICAKPiArCW1vY2tfdGltZWxpbmVfcGluKGNlLT5y aW5nLT50aW1lbGluZSk7Cj4gKwo+ICAgCWNlLT5vcHMgPSAmbW9ja19jb250ZXh0X29wczsKPiAg IAlpOTE1X2dlbV9jb250ZXh0X2dldChjdHgpOwo+ICAgCXJldHVybiBjZTsKPiAgIAo+ICAgZXJy Ogo+ICAgCWNlLT5waW5fY291bnQgPSAwOwo+IC0JcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4g KwlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICAgfQo+ICAgCj4gICBzdGF0aWMgaW50IG1vY2tfcmVx dWVzdF9hbGxvYyhzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+IEBAIC0yNTYsNyArMjcz LDYgQEAgdm9pZCBtb2NrX2VuZ2luZV9mbHVzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdp bmUpCj4gICAKPiAgIHZvaWQgbW9ja19lbmdpbmVfcmVzZXQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lKQo+ICAgewo+IC0JaW50ZWxfd3JpdGVfc3RhdHVzX3BhZ2UoZW5naW5lLCBJOTE1 X0dFTV9IV1NfSU5ERVgsIDApOwo+ICAgfQo+ICAgCj4gICB2b2lkIG1vY2tfZW5naW5lX2ZyZWUo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+IAoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBV cnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWls aW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=