From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 10/39] drm/i915: Allow contexts to share a single timeline across all engines Date: Thu, 14 Mar 2019 16:09:39 +0000 Message-ID: <7079b1f8-97e3-d328-5627-a7c3ba732ec0@linux.intel.com> References: <20190313144401.17735-1-chris@chris-wilson.co.uk> <20190313144401.17735-10-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id DC8FA6E2EC for ; Thu, 14 Mar 2019 16:09:41 +0000 (UTC) In-Reply-To: <20190313144401.17735-10-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 Ck9uIDEzLzAzLzIwMTkgMTQ6NDMsIENocmlzIFdpbHNvbiB3cm90ZToKPiBQcmV2aW91c2x5LCBv dXIgdmlldyBoYXMgYmVlbiBhbHdheXMgdG8gcnVuIHRoZSBlbmdpbmVzIGluZGVwZW5kZW50bHkK PiB3aXRoaW4gYSBjb250ZXh0LiAoTXVsdGlwbGUgZW5naW5lcyBoYXBwZW5lZCBiZWZvcmUgd2Ug aGFkIGNvbnRleHRzIGFuZAo+IHRpbWVsaW5lcywgc28gdGhleSBhbHdheXMgb3BlcmF0ZWQgaW5k ZXBlbmRlbnRseSBhbmQgdGhhdCBiZWhhdmlvdXIKPiBwZXJzaXN0ZWQgaW50byBjb250ZXh0cy4p IEhvd2V2ZXIsIGF0IHRoZSB1c2VyIGxldmVsIHRoZSBjb250ZXh0IG9mdGVuCj4gcmVwcmVzZW50 cyBhIHNpbmdsZSB0aW1lbGluZSAoZS5nLiBHTCBjb250ZXh0cykgYW5kIHVzZXJzcGFjZSBtdXN0 Cj4gZW5zdXJlIHRoYXQgdGhlIGluZGl2aWR1YWwgZW5naW5lcyBhcmUgc2VyaWFsaXNlZCB0byBw cmVzZW50IHRoYXQKPiBvcmRlcmluZyB0byB0aGUgY2xpZW50IChvciBmb3Jnb3QgYWJvdXQgdGhp cyBkZXRhaWwgZW50aXJlbHkgYW5kIGhvcGUgbm8KPiBvbmUgbm90aWNlcyAtIGEgZmFpciBwbG95 IGlmIHRoZSBjbGllbnQgY2FuIG9ubHkgZGlyZWN0bHkgY29udHJvbCBvbmUKPiBlbmdpbmUgdGhl bXNlbHZlcyA7KQo+IAo+IEluIHRoZSBuZXh0IHBhdGNoLCB3ZSB3aWxsIHdhbnQgdG8gY29uc3Ry dWN0IGEgc2V0IG9mIGVuZ2luZXMgdGhhdAo+IG9wZXJhdGUgYXMgb25lLCB0aGF0IGhhdmUgYSBz aW5nbGUgdGltZWxpbmUgaW50ZXJ3b3ZlbiBiZXR3ZWVuIHRoZW0sIHRvCj4gcHJlc2VudCBhIHNp bmdsZSB2aXJ0dWFsIGVuZ2luZSB0byB0aGUgdXNlci4gKFRoZXkgc3VibWl0IHRvIHRoZSB2aXJ0 dWFsCj4gZW5naW5lLCB0aGVuIHdlIGRlY2lkZSB3aGljaCBlbmdpbmUgdG8gZXhlY3V0ZSBvbiBi YXNlZC4pCj4gCj4gVG8gdGhhdCBlbmQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBjcmVhdGUgY29u dGV4dHMgd2hpY2ggaGF2ZSBhIHNpbmdsZQo+IHRpbWVsaW5lIChmZW5jZSBjb250ZXh0KSBzaGFy ZWQgYmV0d2VlbiBhbGwgZW5naW5lcywgcmF0aGVyIHRoYW4gbXVsdGlwbGUKPiB0aW1lbGluZXMu Cj4gCj4gdjI6IE1vdmUgdGhlIHNwZWNpYWxpc2VkIHRpbWVsaW5lIG9yZGVyaW5nIHRvIGl0cyBv d24gZnVuY3Rpb24uCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJp cy13aWxzb24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgICAgICAgfCAzMiArKysrKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW1fY29udGV4dF90eXBlcy5oIHwgIDIgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgICAgICAgICAgIHwgODAgKysrKysrKysrKysrKy0tLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggICAgICAgICAgIHwgIDUgKy0KPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYyAgICAgICAgICB8IDM5ICsrKysrKystLQo+ ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oICAgICAgICAgIHwgMTMgKyst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAgICAgICAgfCAgNSAr LQo+ICAgLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jIHwgMTgg KysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyB8 ICAyICstCj4gICBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAg fCAgMyArLQo+ICAgMTAgZmlsZXMgY2hhbmdlZCwgMTQ5IGluc2VydGlvbnMoKyksIDUwIGRlbGV0 aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiBpbmRl eCAwN2MwOTdhZDgzZWUuLjRlNGIwYjVjNGJlMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMKPiBAQCAtMjM4LDYgKzIzOCw5IEBAIHN0YXRpYyB2b2lkIGk5MTVf Z2VtX2NvbnRleHRfZnJlZShzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICAgCXJidHJl ZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlfc2FmZShpdCwgbiwgJmN0eC0+aHdfY29udGV4dHMs IG5vZGUpCj4gICAJCWludGVsX2NvbnRleHRfcHV0KGl0KTsKPiAgIAo+ICsJaWYgKGN0eC0+dGlt ZWxpbmUpCj4gKwkJaTkxNV90aW1lbGluZV9wdXQoY3R4LT50aW1lbGluZSk7Cj4gKwo+ICAgCWtm cmVlKGN0eC0+bmFtZSk7Cj4gICAJcHV0X3BpZChjdHgtPnBpZCk7Cj4gICAKPiBAQCAtNDQ5LDEy ICs0NTIsMTcgQEAgc3RhdGljIHZvaWQgX19hc3NpZ25fcHBndHQoc3RydWN0IGk5MTVfZ2VtX2Nv bnRleHQgKmN0eCwKPiAgIAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiAg IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diwKPiAtCQkJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQo+ICsJCQlz dHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYsCj4gKwkJCXVuc2lnbmVkIGlu dCBmbGFncykKPiAgIHsKPiAgIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAgCj4g ICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAg Cj4gKwlpZiAoZmxhZ3MgJiBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElO RSAmJgo+ICsJICAgICFIQVNfRVhFQ0xJU1RTKGRldl9wcml2KSkKPiArCQlyZXR1cm4gRVJSX1BU UigtRUlOVkFMKTsKPiArCj4gICAJLyogUmVhcCB0aGUgbW9zdCBzdGFsZSBjb250ZXh0ICovCj4g ICAJY29udGV4dHNfZnJlZV9maXJzdChkZXZfcHJpdik7Cj4gICAKPiBAQCAtNDc3LDYgKzQ4NSwx OCBAQCBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gICAJCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKPiAgIAl9Cj4gICAKPiArCWlmIChm bGFncyAmIEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FKSB7Cj4gKwkJ c3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwo+ICsKPiArCQl0aW1lbGluZSA9IGk5MTVf dGltZWxpbmVfY3JlYXRlKGRldl9wcml2LCBjdHgtPm5hbWUsIE5VTEwpOwo+ICsJCWlmIChJU19F UlIodGltZWxpbmUpKSB7Cj4gKwkJCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZV9wcml2 KTsKPiArCQkJcmV0dXJuIEVSUl9DQVNUKHRpbWVsaW5lKTsKPiArCQl9Cj4gKwo+ICsJCWN0eC0+ dGltZWxpbmUgPSB0aW1lbGluZTsKPiArCX0KPiArCj4gICAJdHJhY2VfaTkxNV9jb250ZXh0X2Ny ZWF0ZShjdHgpOwo+ICAgCj4gICAJcmV0dXJuIGN0eDsKPiBAQCAtNTA1LDcgKzUyNSw3IEBAIGk5 MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2d2dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCWlm IChyZXQpCj4gICAJCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gICAKPiAtCWN0eCA9IGk5MTVfZ2Vt X2NyZWF0ZV9jb250ZXh0KHRvX2k5MTUoZGV2KSwgTlVMTCk7Cj4gKwljdHggPSBpOTE1X2dlbV9j cmVhdGVfY29udGV4dCh0b19pOTE1KGRldiksIE5VTEwsIDApOwo+ICAgCWlmIChJU19FUlIoY3R4 KSkKPiAgIAkJZ290byBvdXQ7Cj4gICAKPiBAQCAtNTQxLDcgKzU2MSw3IEBAIGk5MTVfZ2VtX2Nv bnRleHRfY3JlYXRlX2tlcm5lbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgaW50IHBy aW8pCj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAlpbnQgZXJyOwo+ICAg Cj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBOVUxMKTsKPiArCWN0eCA9 IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIE5VTEwsIDApOwo+ICAgCWlmIChJU19FUlIo Y3R4KSkKPiAgIAkJcmV0dXJuIGN0eDsKPiAgIAo+IEBAIC02NzMsNyArNjkzLDcgQEAgaW50IGk5 MTVfZ2VtX2NvbnRleHRfb3BlbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAlp ZHJfaW5pdF9iYXNlKCZmaWxlX3ByaXYtPnZtX2lkciwgMSk7Cj4gICAKPiAgIAltdXRleF9sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250 ZXh0KGk5MTUsIGZpbGVfcHJpdik7Cj4gKwljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChp OTE1LCBmaWxlX3ByaXYsIDApOwo+ICAgCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCWlkcl9kZXN0cm95KCZmaWxlX3By aXYtPmNvbnRleHRfaWRyKTsKPiBAQCAtNzg5LDcgKzgwOSw3IEBAIGxhc3RfcmVxdWVzdF9vbl9l bmdpbmUoc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lLAo+ICAgCj4gICAJcnEgPSBpOTE1 X2FjdGl2ZV9yZXF1ZXN0X3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiAgIAkJCQkgICAg ICZlbmdpbmUtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+IC0JaWYgKHJxICYmIHJxLT5lbmdp bmUgPT0gZW5naW5lKSB7Cj4gKwlpZiAocnEgJiYgcnEtPmVuZ2luZS0+bWFzayAmIGVuZ2luZS0+ bWFzaykgewo+ICAgCQlHRU1fVFJBQ0UoImxhc3QgcmVxdWVzdCBmb3IgJXMgb24gZW5naW5lICVz OiAlbGx4OiVsbHVcbiIsCj4gICAJCQkgIHRpbWVsaW5lLT5uYW1lLCBlbmdpbmUtPm5hbWUsCj4g ICAJCQkgIHJxLT5mZW5jZS5jb250ZXh0LCBycS0+ZmVuY2Uuc2Vxbm8pOwo+IEBAIC0xNTA4LDcg KzE1MjgsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9k ZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gcmV0Owo+ ICAgCj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlX3ByaXYpOwo+ ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2LCBhcmdzLT5m bGFncyk7Cj4gICAJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Cj4gICAJaWYgKElT X0VSUihjdHgpKQo+ICAgCQlyZXR1cm4gUFRSX0VSUihjdHgpOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmgKPiBpbmRleCAyYmYxOTczMGVhYTkuLmY4 ZjZlNmM5NjBhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9j b250ZXh0X3R5cGVzLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0X3R5cGVzLmgKPiBAQCAtNDEsNiArNDEsOCBAQCBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCB7 Cj4gICAJLyoqIGZpbGVfcHJpdjogb3duaW5nIGZpbGUgZGVzY3JpcHRvciAqLwo+ICAgCXN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsKPiAgIAo+ICsJc3RydWN0IGk5MTVf dGltZWxpbmUgKnRpbWVsaW5lOwo+ICsKPiAgIAkvKioKPiAgIAkgKiBAcHBndHQ6IHVuaXF1ZSBh ZGRyZXNzIHNwYWNlIChHVFQpCj4gICAJICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3Qu Ywo+IGluZGV4IDBhM2Q5NDUxN2QwYS4uMjM4MjMzOTE3MmI0IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9yZXF1ZXN0LmMKPiBAQCAtOTkzLDYgKzk5Myw2MCBAQCB2b2lkIGk5MTVfcmVxdWVz dF9za2lwKHN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxLCBpbnQgZXJyb3IpCj4gICAJbWVtc2V0KHZh ZGRyICsgaGVhZCwgMCwgcnEtPnBvc3RmaXggLSBoZWFkKTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMg c3RydWN0IGk5MTVfcmVxdWVzdCAqCj4gK19faTkxNV9yZXF1ZXN0X2FkZF90b190aW1lbGluZShz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArewo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRp bWVsaW5lID0gcnEtPnRpbWVsaW5lOwo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsKPiAr Cj4gKwkvKgo+ICsJICogRGVwZW5kZW5jeSB0cmFja2luZyBhbmQgcmVxdWVzdCBvcmRlcmluZyBh bG9uZyB0aGUgdGltZWxpbmUKPiArCSAqIGlzIHNwZWNpYWwgY2FzZWQgc28gdGhhdCB3ZSBjYW4g ZWxpbWluYXRlIHJlZHVuZGFudCBvcmRlcmluZwo+ICsJICogb3BlcmF0aW9ucyB3aGlsZSBidWls ZGluZyB0aGUgcmVxdWVzdCAod2Uga25vdyB0aGF0IHRoZSB0aW1lbGluZQo+ICsJICogaXRzZWxm IGlzIG9yZGVyZWQsIGFuZCBoZXJlIHdlIGd1YXJhbnRlZSBpdCkuCj4gKwkgKgo+ICsJICogQXMg d2Uga25vdyB3ZSB3aWxsIG5lZWQgdG8gZW1pdCB0cmFja2luZyBhbG9uZyB0aGUgdGltZWxpbmUs Cj4gKwkgKiB3ZSBlbWJlZCB0aGUgaG9va3MgaW50byBvdXIgcmVxdWVzdCBzdHJ1Y3QgLS0gYXQg dGhlIGNvc3Qgb2YKPiArCSAqIGhhdmluZyB0byBoYXZlIHNwZWNpYWxpc2VkIG5vLWFsbG9jYXRp b24gaW50ZXJmYWNlcyAod2hpY2ggd2lsbAo+ICsJICogYmUgYmVuZWZpY2lhbCBlbHNld2hlcmUp Lgo+ICsJICoKPiArCSAqIEEgc2Vjb25kIGJlbmVmaXQgdG8gb3Blbi1jb2RpbmcgaTkxNV9yZXF1 ZXN0X2F3YWl0X3JlcXVlc3QgaXMKPiArCSAqIHRoYXQgd2UgY2FuIGFwcGx5IGEgc2xpZ2h0IHZh cmlhbnQgb2YgdGhlIHJ1bGVzIHNwZWNpYWxpc2VkCj4gKwkgKiBmb3IgdGltZWxpbmVzIHRoYXQg anVtcCBiZXR3ZWVuIGVuZ2luZXMgKHN1Y2ggYXMgdmlydHVhbCBlbmdpbmVzKS4KPiArCSAqIElm IHdlIGNvbnNpZGVyIHRoZSBjYXNlIG9mIHZpcnR1YWwgZW5naW5lLCB3ZSBtdXN0IGVtaXQgYSBk bWEtZmVuY2UKPiArCSAqIHRvIHByZXZlbnQgc2NoZWR1bGluZyBvZiB0aGUgc2Vjb25kIHJlcXVl c3QgdW50aWwgdGhlIGZpcnN0IGlzCj4gKwkgKiBjb21wbGV0ZSAodG8gbWF4aW1pc2Ugb3VyIGdy ZWVkeSBsYXRlIGxvYWQgYmFsYW5jaW5nKSBhbmQgdGhpcwo+ICsJICogcHJlY2x1ZGVzIG9wdGlt aXNpbmcgdG8gdXNlIHNlbWFwaG9yZXMgc2VyaWFsaXNhdGlvbiBvZiBhIHNpbmdsZQo+ICsJICog dGltZWxpbmUgYWNyb3NzIGVuZ2luZXMuCj4gKwkgKi8KPiArCXByZXYgPSBpOTE1X2FjdGl2ZV9y ZXF1ZXN0X3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiArCQkJCSAgICAgICAmcnEtPmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJaWYgKHByZXYgJiYgIWk5MTVfcmVxdWVzdF9jb21w bGV0ZWQocHJldikpIHsKPiArCQlpZiAoaXNfcG93ZXJfb2ZfMihwcmV2LT5lbmdpbmUtPm1hc2sg fCBycS0+ZW5naW5lLT5tYXNrKSkKPiArCQkJaTkxNV9zd19mZW5jZV9hd2FpdF9zd19mZW5jZSgm cnEtPnN1Ym1pdCwKPiArCQkJCQkJICAgICAmcHJldi0+c3VibWl0LAo+ICsJCQkJCQkgICAgICZy cS0+c3VibWl0cSk7Cj4gKwkJZWxzZQo+ICsJCQlfX2k5MTVfc3dfZmVuY2VfYXdhaXRfZG1hX2Zl bmNlKCZycS0+c3VibWl0LAo+ICsJCQkJCQkJJnByZXYtPmZlbmNlLAo+ICsJCQkJCQkJJnJxLT5k bWFxKTsKPiArCQlpZiAocnEtPmVuZ2luZS0+c2NoZWR1bGUpCj4gKwkJCV9faTkxNV9zY2hlZF9u b2RlX2FkZF9kZXBlbmRlbmN5KCZycS0+c2NoZWQsCj4gKwkJCQkJCQkgJnByZXYtPnNjaGVkLAo+ ICsJCQkJCQkJICZycS0+ZGVwLAo+ICsJCQkJCQkJIDApOwo+ICsJfQo+ICsKPiArCXNwaW5fbG9j a19pcnEoJnRpbWVsaW5lLT5sb2NrKTsKPiArCWxpc3RfYWRkX3RhaWwoJnJxLT5saW5rLCAmdGlt ZWxpbmUtPnJlcXVlc3RzKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmdGltZWxpbmUtPmxvY2spOwo+ ICsKPiArCUdFTV9CVUdfT04odGltZWxpbmUtPnNlcW5vICE9IHJxLT5mZW5jZS5zZXFubyk7Cj4g KwlfX2k5MTVfYWN0aXZlX3JlcXVlc3Rfc2V0KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LCBycSk7 Cj4gKwo+ICsJcmV0dXJuIHByZXY7Cj4gK30KPiArCj4gICAvKgo+ICAgICogTkI6IFRoaXMgZnVu Y3Rpb24gaXMgbm90IGFsbG93ZWQgdG8gZmFpbC4gRG9pbmcgc28gd291bGQgbWVhbiB0aGUgdGhl Cj4gICAgKiByZXF1ZXN0IGlzIG5vdCBiZWluZyB0cmFja2VkIGZvciBjb21wbGV0aW9uIGJ1dCB0 aGUgd29yayBpdHNlbGYgaXMKPiBAQCAtMTAzNywzMSArMTA5MSw3IEBAIHZvaWQgaTkxNV9yZXF1 ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCUdFTV9CVUdfT04oSVNf RVJSKGNzKSk7Cj4gICAJcmVxdWVzdC0+cG9zdGZpeCA9IGludGVsX3Jpbmdfb2Zmc2V0KHJlcXVl c3QsIGNzKTsKPiAgIAo+IC0JLyoKPiAtCSAqIFNlYWwgdGhlIHJlcXVlc3QgYW5kIG1hcmsgaXQg YXMgcGVuZGluZyBleGVjdXRpb24uIE5vdGUgdGhhdAo+IC0JICogd2UgbWF5IGluc3BlY3QgdGhp cyBzdGF0ZSwgd2l0aG91dCBob2xkaW5nIGFueSBsb2NrcywgZHVyaW5nCj4gLQkgKiBoYW5nY2hl Y2suIEhlbmNlIHdlIGFwcGx5IHRoZSBiYXJyaWVyIHRvIGVuc3VyZSB0aGF0IHdlIGRvIG5vdAo+ IC0JICogc2VlIGEgbW9yZSByZWNlbnQgdmFsdWUgaW4gdGhlIGh3cyB0aGFuIHdlIGFyZSB0cmFj a2luZy4KPiAtCSAqLwo+IC0KPiAtCXByZXYgPSBpOTE1X2FjdGl2ZV9yZXF1ZXN0X3JhdygmdGlt ZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiAtCQkJCSAgICAgICAmcmVxdWVzdC0+aTkxNS0+ZHJtLnN0 cnVjdF9tdXRleCk7Cj4gLQlpZiAocHJldiAmJiAhaTkxNV9yZXF1ZXN0X2NvbXBsZXRlZChwcmV2 KSkgewo+IC0JCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2UoJnJlcXVlc3QtPnN1Ym1pdCwg JnByZXYtPnN1Ym1pdCwKPiAtCQkJCQkgICAgICZyZXF1ZXN0LT5zdWJtaXRxKTsKPiAtCQlpZiAo ZW5naW5lLT5zY2hlZHVsZSkKPiAtCQkJX19pOTE1X3NjaGVkX25vZGVfYWRkX2RlcGVuZGVuY3ko JnJlcXVlc3QtPnNjaGVkLAo+IC0JCQkJCQkJICZwcmV2LT5zY2hlZCwKPiAtCQkJCQkJCSAmcmVx dWVzdC0+ZGVwLAo+IC0JCQkJCQkJIDApOwo+IC0JfQo+IC0KPiAtCXNwaW5fbG9ja19pcnEoJnRp bWVsaW5lLT5sb2NrKTsKPiAtCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3QtPmxpbmssICZ0aW1lbGlu ZS0+cmVxdWVzdHMpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZ0aW1lbGluZS0+bG9jayk7Cj4gLQo+ IC0JR0VNX0JVR19PTih0aW1lbGluZS0+c2Vxbm8gIT0gcmVxdWVzdC0+ZmVuY2Uuc2Vxbm8pOwo+ IC0JX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgcmVx dWVzdCk7Cj4gKwlwcmV2ID0gX19pOTE1X3JlcXVlc3RfYWRkX3RvX3RpbWVsaW5lKHJlcXVlc3Qp Owo+ICAgCj4gICAJbGlzdF9hZGRfdGFpbCgmcmVxdWVzdC0+cmluZ19saW5rLCAmcmluZy0+cmVx dWVzdF9saXN0KTsKPiAgIAlpZiAobGlzdF9pc19maXJzdCgmcmVxdWVzdC0+cmluZ19saW5rLCAm cmluZy0+cmVxdWVzdF9saXN0KSkgewo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4g aW5kZXggOGM4ZmE1MDEwNjQ0Li5jZDZjMTMwOTY0Y2QgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlcXVlc3QuaAo+IEBAIC0xMjgsNyArMTI4LDEwIEBAIHN0cnVjdCBpOTE1X3JlcXVlc3Qg ewo+ICAgCSAqIEl0IGlzIHVzZWQgYnkgdGhlIGRyaXZlciB0byB0aGVuIHF1ZXVlIHRoZSByZXF1 ZXN0IGZvciBleGVjdXRpb24uCj4gICAJICovCj4gICAJc3RydWN0IGk5MTVfc3dfZmVuY2Ugc3Vi bWl0Owo+IC0Jd2FpdF9xdWV1ZV9lbnRyeV90IHN1Ym1pdHE7Cj4gKwl1bmlvbiB7Cj4gKwkJd2Fp dF9xdWV1ZV9lbnRyeV90IHN1Ym1pdHE7Cj4gKwkJc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNlX2Ni IGRtYXE7Cj4gKwl9Owo+ICAgCXN0cnVjdCBsaXN0X2hlYWQgZXhlY3V0ZV9jYjsKPiAgIAo+ICAg CS8qCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYwo+IGluZGV4IDhkMTQwMGQzNzhk Ny4uNTM4N2FhZmQzNDI0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c3dfZmVuY2UuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYwo+ IEBAIC0zNTksMTEgKzM1OSw2IEBAIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dm cChzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCj4gICAJcmV0dXJuIF9faTkxNV9zd19mZW5j ZV9hd2FpdF9zd19mZW5jZShmZW5jZSwgc2lnbmFsZXIsIE5VTEwsIGdmcCk7Cj4gICB9Cj4gICAK PiAtc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNlX2NiIHsKPiAtCXN0cnVjdCBkbWFfZmVuY2VfY2Ig YmFzZTsKPiAtCXN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZTsKPiAtfTsKPiAtCj4gICBzdHJ1 Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2JfdGltZXIgewo+ICAgCXN0cnVjdCBpOTE1X3N3X2RtYV9m ZW5jZV9jYiBiYXNlOwo+ICAgCXN0cnVjdCBkbWFfZmVuY2UgKmRtYTsKPiBAQCAtNDgwLDYgKzQ3 NSw0MCBAQCBpbnQgaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2Uoc3RydWN0IGk5MTVfc3df ZmVuY2UgKmZlbmNlLAo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiArc3RhdGljIHZvaWQg X19kbWFfaTkxNV9zd19mZW5jZV93YWtlKHN0cnVjdCBkbWFfZmVuY2UgKmRtYSwKPiArCQkJCSAg ICAgc3RydWN0IGRtYV9mZW5jZV9jYiAqZGF0YSkKPiArewo+ICsJc3RydWN0IGk5MTVfc3dfZG1h X2ZlbmNlX2NiICpjYiA9IGNvbnRhaW5lcl9vZihkYXRhLCB0eXBlb2YoKmNiKSwgYmFzZSk7Cj4g Kwo+ICsJaTkxNV9zd19mZW5jZV9jb21wbGV0ZShjYi0+ZmVuY2UpOwo+ICt9Cj4gKwo+ICtpbnQg X19pOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVu Y2UsCj4gKwkJCQkgICAgc3RydWN0IGRtYV9mZW5jZSAqZG1hLAo+ICsJCQkJICAgIHN0cnVjdCBp OTE1X3N3X2RtYV9mZW5jZV9jYiAqY2IpCj4gK3sKPiArCWludCByZXQ7Cj4gKwo+ICsJZGVidWdf ZmVuY2VfYXNzZXJ0KGZlbmNlKTsKPiArCj4gKwlpZiAoZG1hX2ZlbmNlX2lzX3NpZ25hbGVkKGRt YSkpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJY2ItPmZlbmNlID0gZmVuY2U7Cj4gKwlpOTE1X3N3 X2ZlbmNlX2F3YWl0KGZlbmNlKTsKPiArCj4gKwlyZXQgPSBkbWFfZmVuY2VfYWRkX2NhbGxiYWNr KGRtYSwgJmNiLT5iYXNlLCBfX2RtYV9pOTE1X3N3X2ZlbmNlX3dha2UpOwo+ICsJaWYgKHJldCA9 PSAwKSB7Cj4gKwkJcmV0ID0gMTsKPiArCX0gZWxzZSB7Cj4gKwkJaTkxNV9zd19mZW5jZV9jb21w bGV0ZShmZW5jZSk7Cj4gKwkJaWYgKHJldCA9PSAtRU5PRU5UKSAvKiBmZW5jZSBhbHJlYWR5IHNp Z25hbGVkICovCj4gKwkJCXJldCA9IDA7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ ICsKPiAgIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBpOTE1X3N3 X2ZlbmNlICpmZW5jZSwKPiAgIAkJCQkgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVz diwKPiAgIAkJCQkgICAgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgKmV4Y2x1ZGUsCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuaAo+IGluZGV4IDZkZWM5ZTFkMTEwMi4uOWNiNWMz YjMwN2E2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2Uu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuaAo+IEBAIC05LDE0 ICs5LDEzIEBACj4gICAjaWZuZGVmIF9JOTE1X1NXX0ZFTkNFX0hfCj4gICAjZGVmaW5lIF9JOTE1 X1NXX0ZFTkNFX0hfCj4gICAKPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1mZW5jZS5oPgo+ICAgI2lu Y2x1ZGUgPGxpbnV4L2dmcC5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L2tyZWYuaD4KPiAgICNpbmNs dWRlIDxsaW51eC9ub3RpZmllci5oPiAvKiBmb3IgTk9USUZZX0RPTkUgKi8KPiAgICNpbmNsdWRl IDxsaW51eC93YWl0Lmg+Cj4gICAKPiAgIHN0cnVjdCBjb21wbGV0aW9uOwo+IC1zdHJ1Y3QgZG1h X2ZlbmNlOwo+IC1zdHJ1Y3QgZG1hX2ZlbmNlX29wczsKPiAgIHN0cnVjdCByZXNlcnZhdGlvbl9v YmplY3Q7Cj4gICAKPiAgIHN0cnVjdCBpOTE1X3N3X2ZlbmNlIHsKPiBAQCAtNjgsMTAgKzY3LDIw IEBAIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKHN0cnVjdCBpOTE1X3N3X2ZlbmNl ICpmZW5jZSwKPiAgIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlX2dmcChzdHJ1Y3Qg aTkxNV9zd19mZW5jZSAqZmVuY2UsCj4gICAJCQkJICAgICBzdHJ1Y3QgaTkxNV9zd19mZW5jZSAq YWZ0ZXIsCj4gICAJCQkJICAgICBnZnBfdCBnZnApOwo+ICsKPiArc3RydWN0IGk5MTVfc3dfZG1h X2ZlbmNlX2NiIHsKPiArCXN0cnVjdCBkbWFfZmVuY2VfY2IgYmFzZTsKPiArCXN0cnVjdCBpOTE1 X3N3X2ZlbmNlICpmZW5jZTsKPiArfTsKPiArCj4gK2ludCBfX2k5MTVfc3dfZmVuY2VfYXdhaXRf ZG1hX2ZlbmNlKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiArCQkJCSAgICBzdHJ1Y3Qg ZG1hX2ZlbmNlICpkbWEsCj4gKwkJCQkgICAgc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNlX2NiICpj Yik7Cj4gICBpbnQgaTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2Uoc3RydWN0IGk5MTVfc3df ZmVuY2UgKmZlbmNlLAo+ICAgCQkJCSAgc3RydWN0IGRtYV9mZW5jZSAqZG1hLAo+ICAgCQkJCSAg dW5zaWduZWQgbG9uZyB0aW1lb3V0LAo+ICAgCQkJCSAgZ2ZwX3QgZ2ZwKTsKPiArCj4gICBpbnQg aTkxNV9zd19mZW5jZV9hd2FpdF9yZXNlcnZhdGlvbihzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVu Y2UsCj4gICAJCQkJICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKnJlc3YsCj4gICAJCQkJ ICAgIGNvbnN0IHN0cnVjdCBkbWFfZmVuY2Vfb3BzICpleGNsdWRlLAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2xyYy5jCj4gaW5kZXggNTY2OTgyM2Y2OTAxLi42ZTliZDcwZjVlOTIgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0yODA0LDcgKzI4MDQsMTAgQEAgcG9wdWxhdGVfbHJf Y29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3Qg aTkxNV90aW1lbGluZSAqZ2V0X3RpbWVsaW5lKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgp Cj4gICB7Cj4gLQlyZXR1cm4gaTkxNV90aW1lbGluZV9jcmVhdGUoY3R4LT5pOTE1LCBjdHgtPm5h bWUsIE5VTEwpOwo+ICsJaWYgKGN0eC0+dGltZWxpbmUpCj4gKwkJcmV0dXJuIGk5MTVfdGltZWxp bmVfZ2V0KGN0eC0+dGltZWxpbmUpOwo+ICsJZWxzZQo+ICsJCXJldHVybiBpOTE1X3RpbWVsaW5l X2NyZWF0ZShjdHgtPmk5MTUsIGN0eC0+bmFtZSwgTlVMTCk7Cj4gICB9Cj4gICAKPiAgIHN0YXRp YyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxsb2Moc3RydWN0IGludGVsX2NvbnRl eHQgKmNlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkx NV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYwo+IGluZGV4IDFiYTM1NGE5MTZjMC4uODZiODY1NjllZTIxIDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4g QEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBsaXZlX25vcF9zd2l0Y2godm9pZCAqYXJnKQo+ ICAgCX0KPiAgIAo+ICAgCWZvciAobiA9IDA7IG4gPCBuY3R4OyBuKyspIHsKPiAtCQljdHhbbl0g PSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwkJ Y3R4W25dID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYs IDApOwo+ICAgCQlpZiAoSVNfRVJSKGN0eFtuXSkpIHsKPiAgIAkJCWVyciA9IFBUUl9FUlIoY3R4 W25dKTsKPiAgIAkJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNTI2LDcgKzUyNiw4IEBAIHN0YXRp YyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKPiAgIAkJCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHg7Cj4gICAJCQlpbnRlbF93YWtlcmVmX3Qgd2FrZXJlZjsKPiAgIAo+IC0JCQljdHgg PSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwkJ CWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsCj4gKwkJCQkJCSAgICAgIGZpbGUt PmRyaXZlcl9wcml2LCAwKTsKPiAgIAkJCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQkJCWVyciA9 IFBUUl9FUlIoY3R4KTsKPiAgIAkJCQlnb3RvIG91dF91bmxvY2s7Cj4gQEAgLTYxMSw3ICs2MTIs NyBAQCBzdGF0aWMgaW50IGlndF9zaGFyZWRfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCj4gICAJ bXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gICAKPiAtCXBhcmVudCA9IGk5 MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCXBhcmVu dCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2LCAwKTsK PiAgIAlpZiAoSVNfRVJSKHBhcmVudCkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihwYXJlbnQpOwo+ ICAgCQlnb3RvIG91dF91bmxvY2s7Cj4gQEAgLTY0NSw3ICs2NDYsOCBAQCBzdGF0aWMgaW50IGln dF9zaGFyZWRfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCQkJaWYgKGN0eCkKPiAgIAkJCQlfX2Rl c3Ryb3lfaHdfY29udGV4dChjdHgsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiAgIAo+IC0JCQljdHgg PSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwkJ CWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsCj4gKwkJCQkJCSAgICAgIGZpbGUt PmRyaXZlcl9wcml2LCAwKTsKPiAgIAkJCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQkJCWVyciA9 IFBUUl9FUlIoY3R4KTsKPiAgIAkJCQlnb3RvIG91dF90ZXN0Owo+IEBAIC0xMDg4LDcgKzEwOTAs NyBAQCBfX2lndF9jdHhfc3NldShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKPiAgIAo+ ICAgCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gLQljdHggPSBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwljdHgg PSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwgMCk7Cj4g ICAJaWYgKElTX0VSUihjdHgpKSB7Cj4gICAJCXJldCA9IFBUUl9FUlIoY3R4KTsKPiAgIAkJZ290 byBvdXRfdW5sb2NrOwo+IEBAIC0xMTk4LDcgKzEyMDAsNyBAQCBzdGF0aWMgaW50IGlndF9jdHhf cmVhZG9ubHkodm9pZCAqYXJnKQo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0X3VubG9jazsK PiAgIAo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVy X3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJp dmVyX3ByaXYsIDApOwo+ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQllcnIgPSBQVFJfRVJS KGN0eCk7Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtMTUyNCwxMyArMTUyNiwxMyBAQCBz dGF0aWMgaW50IGlndF92bV9pc29sYXRpb24odm9pZCAqYXJnKQo+ICAgCWlmIChlcnIpCj4gICAJ CWdvdG8gb3V0X3VubG9jazsKPiAgIAo+IC0JY3R4X2EgPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4 dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdik7Cj4gKwljdHhfYSA9IGk5MTVfZ2VtX2NyZWF0ZV9j b250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2LCAwKTsKPiAgIAlpZiAoSVNfRVJSKGN0eF9h KSkgewo+ICAgCQllcnIgPSBQVFJfRVJSKGN0eF9hKTsKPiAgIAkJZ290byBvdXRfdW5sb2NrOwo+ ICAgCX0KPiAgIAo+IC0JY3R4X2IgPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxl LT5kcml2ZXJfcHJpdik7Cj4gKwljdHhfYiA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUs IGZpbGUtPmRyaXZlcl9wcml2LCAwKTsKPiAgIAlpZiAoSVNfRVJSKGN0eF9iKSkgewo+ICAgCQll cnIgPSBQVFJfRVJSKGN0eF9iKTsKPiAgIAkJZ290byBvdXRfdW5sb2NrOwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja19jb250ZXh0LmMKPiBpbmRleCBmOTAzMjhiMjE3 NjMuLjFkNmRjMmZlMzZhYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvbW9ja19jb250ZXh0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja19jb250ZXh0LmMKPiBAQCAtOTQsNyArOTQsNyBAQCBsaXZlX2NvbnRleHQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiAgIHsKPiAg IAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+IC0J cmV0dXJuIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsK PiArCXJldHVybiBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJp diwgMCk7Cj4gICB9Cj4gICAKPiAgIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiBkaWZmIC0t Z2l0IGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCj4gaW5kZXggNDYxODlhOGVhZWNiLi41MjA2ZDAwMDYwNDMgMTAwNjQ0Cj4gLS0tIGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1 X2RybS5oCj4gQEAgLTE0NTYsOCArMTQ1Niw5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9jcmVhdGVfZXh0IHsKPiAgIAlfX3UzMiBjdHhfaWQ7IC8qIG91dHB1dDogaWQgb2YgbmV3IGNv bnRleHQqLwo+ICAgCV9fdTMyIGZsYWdzOwo+ICAgI2RlZmluZSBJOTE1X0NPTlRFWFRfQ1JFQVRF X0ZMQUdTX1VTRV9FWFRFTlNJT05TCSgxdSA8PCAwKQo+ICsjZGVmaW5lIEk5MTVfQ09OVEVYVF9D UkVBVEVfRkxBR1NfU0lOR0xFX1RJTUVMSU5FCSgxdSA8PCAxKQo+ICAgI2RlZmluZSBJOTE1X0NP TlRFWFRfQ1JFQVRFX0ZMQUdTX1VOS05PV04gXAo+IC0JKC0oSTkxNV9DT05URVhUX0NSRUFURV9G TEFHU19VU0VfRVhURU5TSU9OUyA8PCAxKSkKPiArCSgtKEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxB R1NfU0lOR0xFX1RJTUVMSU5FIDw8IDEpKQo+ICAgCV9fdTY0IGV4dGVuc2lvbnM7Cj4gICB9Owo+ ICAgCj4gCgpSZXZpZXdlZC1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVs LmNvbT4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4