From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 06/13] drm/i915: Allow contexts to share a single timeline across all engines Date: Fri, 8 Mar 2019 15:56:03 +0000 Message-ID: References: <20190308141244.16837-1-chris@chris-wilson.co.uk> <20190308141244.16837-7-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 08F226E3CE for ; Fri, 8 Mar 2019 15:56:06 +0000 (UTC) In-Reply-To: <20190308141244.16837-7-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 Ck9uIDA4LzAzLzIwMTkgMTQ6MTIsIENocmlzIFdpbHNvbiB3cm90ZToKPiBQcmV2aW91c2x5LCBv dXIgdmlldyBoYXMgYmVlbiBhbHdheXMgdG8gcnVuIHRoZSBlbmdpbmVzIGluZGVwZW5kZW50bHkK PiB3aXRoaW4gYSBjb250ZXh0LiAoTXVsdGlwbGUgZW5naW5lcyBoYXBwZW5lZCBiZWZvcmUgd2Ug aGFkIGNvbnRleHRzIGFuZAo+IHRpbWVsaW5lcywgc28gdGhleSBhbHdheXMgb3BlcmF0ZWQgaW5k ZXBlbmRlbnRseSBhbmQgdGhhdCBiZWhhdmlvdXIKPiBwZXJzaXN0ZWQgaW50byBjb250ZXh0cy4p IEhvd2V2ZXIsIGF0IHRoZSB1c2VyIGxldmVsIHRoZSBjb250ZXh0IG9mdGVuCj4gcmVwcmVzZW50 cyBhIHNpbmdsZSB0aW1lbGluZSAoZS5nLiBHTCBjb250ZXh0cykgYW5kIHVzZXJzcGFjZSBtdXN0 Cj4gZW5zdXJlIHRoYXQgdGhlIGluZGl2aWR1YWwgZW5naW5lcyBhcmUgc2VyaWFsaXNlZCB0byBw cmVzZW50IHRoYXQKPiBvcmRlcmluZyB0byB0aGUgY2xpZW50IChvciBmb3Jnb3QgYWJvdXQgdGhp cyBkZXRhaWwgZW50aXJlbHkgYW5kIGhvcGUgbm8KPiBvbmUgbm90aWNlcyAtIGEgZmFpciBwbG95 IGlmIHRoZSBjbGllbnQgY2FuIG9ubHkgZGlyZWN0bHkgY29udHJvbCBvbmUKPiBlbmdpbmUgdGhl bXNlbHZlcyA7KQo+IAo+IEluIHRoZSBuZXh0IHBhdGNoLCB3ZSB3aWxsIHdhbnQgdG8gY29uc3Ry dWN0IGEgc2V0IG9mIGVuZ2luZXMgdGhhdAo+IG9wZXJhdGUgYXMgb25lLCB0aGF0IGhhdmUgYSBz aW5nbGUgdGltZWxpbmUgaW50ZXJ3b3ZlbiBiZXR3ZWVuIHRoZW0sIHRvCj4gcHJlc2VudCBhIHNp bmdsZSB2aXJ0dWFsIGVuZ2luZSB0byB0aGUgdXNlci4gKFRoZXkgc3VibWl0IHRvIHRoZSB2aXJ0 dWFsCj4gZW5naW5lLCB0aGVuIHdlIGRlY2lkZSB3aGljaCBlbmdpbmUgdG8gZXhlY3V0ZSBvbiBi YXNlZC4pCj4gCj4gVG8gdGhhdCBlbmQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBjcmVhdGUgY29u dGV4dHMgd2hpY2ggaGF2ZSBhIHNpbmdsZQo+IHRpbWVsaW5lIChmZW5jZSBjb250ZXh0KSBzaGFy ZWQgYmV0d2VlbiBhbGwgZW5naW5lcywgcmF0aGVyIHRoYW4gbXVsdGlwbGUKPiB0aW1lbGluZXMu CgpObyBjaGFuZ2UgbG9nLgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyAgICAgICB8IDMyICsrKysrKy0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0X3R5cGVzLmggfCAgMiArCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlcXVlc3QuYyAgICAgICAgICAgfCA4MCArKysrKysrKysrKysrLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaCAgICAgICAgICAgfCAgNSArLQo+ICAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jICAgICAgICAgIHwgMzkgKysrKysr Ky0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N3X2ZlbmNlLmggICAgICAgICAgfCAx MyArKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jICAgICAgICAgICAgICB8 ICA1ICstCj4gICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMg fCAxOCArKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4 dC5jIHwgIDIgKy0KPiAgIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCAgICAgICAgICAgICAg ICAgICB8ICAzICstCj4gICAxMCBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygrKSwgNTAg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ IGluZGV4IGI0MWIwOWY2MGVkZC4uMzEwODkyYjQyYjY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0yMzcsNiArMjM3LDkgQEAgc3RhdGljIHZvaWQg aTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCj4gICAJ cmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRyeV9zYWZlKGl0LCBuLCAmY3R4LT5od19jb250 ZXh0cywgbm9kZSkKPiAgIAkJaXQtPm9wcy0+ZGVzdHJveShpdCk7Cj4gICAKPiArCWlmIChjdHgt PnRpbWVsaW5lKQo+ICsJCWk5MTVfdGltZWxpbmVfcHV0KGN0eC0+dGltZWxpbmUpOwo+ICsKPiAg IAlrZnJlZShjdHgtPm5hbWUpOwo+ICAgCXB1dF9waWQoY3R4LT5waWQpOwo+ICAgCj4gQEAgLTQ0 OCwxMiArNDUxLDE3IEBAIHN0YXRpYyB2b2lkIF9fYXNzaWduX3BwZ3R0KHN0cnVjdCBpOTE1X2dl bV9jb250ZXh0ICpjdHgsCj4gICAKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Cj4gICBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gLQkJCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKPiAr CQkJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2LAo+ICsJCQl1bnNpZ25l ZCBpbnQgZmxhZ3MpCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAg IAo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAo+ICsJaWYgKGZsYWdzICYgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19TSU5HTEVfVElN RUxJTkUgJiYKPiArCSAgICAhSEFTX0VYRUNMSVNUUyhkZXZfcHJpdikpCj4gKwkJcmV0dXJuIEVS Ul9QVFIoLUVJTlZBTCk7Cj4gKwo+ICAgCS8qIFJlYXAgdGhlIG1vc3Qgc3RhbGUgY29udGV4dCAq Lwo+ICAgCWNvbnRleHRzX2ZyZWVfZmlyc3QoZGV2X3ByaXYpOwo+ICAgCj4gQEAgLTQ3Niw2ICs0 ODQsMTggQEAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICAgCQlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7Cj4gICAJfQo+ICAgCj4gKwlp ZiAoZmxhZ3MgJiBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORSkgewo+ ICsJCXN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiArCj4gKwkJdGltZWxpbmUgPSBp OTE1X3RpbWVsaW5lX2NyZWF0ZShkZXZfcHJpdiwgY3R4LT5uYW1lLCBOVUxMKTsKPiArCQlpZiAo SVNfRVJSKHRpbWVsaW5lKSkgewo+ICsJCQlfX2Rlc3Ryb3lfaHdfY29udGV4dChjdHgsIGZpbGVf cHJpdik7Cj4gKwkJCXJldHVybiBFUlJfQ0FTVCh0aW1lbGluZSk7Cj4gKwkJfQo+ICsKPiArCQlj dHgtPnRpbWVsaW5lID0gdGltZWxpbmU7Cj4gKwl9Cj4gKwo+ICAgCXRyYWNlX2k5MTVfY29udGV4 dF9jcmVhdGUoY3R4KTsKPiAgIAo+ICAgCXJldHVybiBjdHg7Cj4gQEAgLTUwNCw3ICs1MjQsNyBA QCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9ndnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAg IAlpZiAocmV0KQo+ICAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOwo+ICAgCj4gLQljdHggPSBpOTE1 X2dlbV9jcmVhdGVfY29udGV4dCh0b19pOTE1KGRldiksIE5VTEwpOwo+ICsJY3R4ID0gaTkxNV9n ZW1fY3JlYXRlX2NvbnRleHQodG9faTkxNShkZXYpLCBOVUxMLCAwKTsKPiAgIAlpZiAoSVNfRVJS KGN0eCkpCj4gICAJCWdvdG8gb3V0Owo+ICAgCj4gQEAgLTU0MCw3ICs1NjAsNyBAQCBpOTE1X2dl bV9jb250ZXh0X2NyZWF0ZV9rZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGlu dCBwcmlvKQo+ICAgCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gICAJaW50IGVycjsK PiAgIAo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgTlVMTCk7Cj4gKwlj dHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBOVUxMLCAwKTsKPiAgIAlpZiAoSVNf RVJSKGN0eCkpCj4gICAJCXJldHVybiBjdHg7Cj4gICAKPiBAQCAtNjcyLDcgKzY5Miw3IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4g ICAJaWRyX2luaXRfYmFzZSgmZmlsZV9wcml2LT52bV9pZHIsIDEpOwo+ICAgCj4gICAJbXV0ZXhf bG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQljdHggPSBpOTE1X2dlbV9jcmVhdGVf Y29udGV4dChpOTE1LCBmaWxlX3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRl eHQoaTkxNSwgZmlsZV9wcml2LCAwKTsKPiAgIAltdXRleF91bmxvY2soJmk5MTUtPmRybS5zdHJ1 Y3RfbXV0ZXgpOwo+ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQlpZHJfZGVzdHJveSgmZmls ZV9wcml2LT5jb250ZXh0X2lkcik7Cj4gQEAgLTc4OCw3ICs4MDgsNyBAQCBsYXN0X3JlcXVlc3Rf b25fZW5naW5lKHN0cnVjdCBpOTE1X3RpbWVsaW5lICp0aW1lbGluZSwKPiAgIAo+ICAgCXJxID0g aTkxNV9hY3RpdmVfcmVxdWVzdF9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gICAJCQkJ ICAgICAmZW5naW5lLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAtCWlmIChycSAmJiBycS0+ ZW5naW5lID09IGVuZ2luZSkgewo+ICsJaWYgKHJxICYmIHJxLT5lbmdpbmUtPm1hc2sgJiBlbmdp bmUtPm1hc2spIHsKPiAgIAkJR0VNX1RSQUNFKCJsYXN0IHJlcXVlc3QgZm9yICVzIG9uIGVuZ2lu ZSAlczogJWxseDolbGx1XG4iLAo+ICAgCQkJICB0aW1lbGluZS0+bmFtZSwgZW5naW5lLT5uYW1l LAo+ICAgCQkJICBycS0+ZmVuY2UuY29udGV4dCwgcnEtPmZlbmNlLnNlcW5vKTsKPiBAQCAtMTQ0 OCw3ICsxNDY4LDcgQEAgaW50IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCj4gICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJl dDsKPiAgIAo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2 KTsKPiArCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGVfcHJpdiwgYXJn cy0+ZmxhZ3MpOwo+ICAgCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCWlm IChJU19FUlIoY3R4KSkKPiAgIAkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dF90eXBlcy5oCj4gaW5kZXggMmJmMTk3MzBlYWE5 Li5mOGY2ZTZjOTYwYTcgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dF90eXBlcy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Y29udGV4dF90eXBlcy5oCj4gQEAgLTQxLDYgKzQxLDggQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgewo+ICAgCS8qKiBmaWxlX3ByaXY6IG93bmluZyBmaWxlIGRlc2NyaXB0b3IgKi8KPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXY7Cj4gICAKPiArCXN0cnVjdCBp OTE1X3RpbWVsaW5lICp0aW1lbGluZTsKPiArCj4gICAJLyoqCj4gICAJICogQHBwZ3R0OiB1bmlx dWUgYWRkcmVzcyBzcGFjZSAoR1RUKQo+ICAgCSAqCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1 ZXN0LmMKPiBpbmRleCA5NTMzYTg1Y2IwYjMuLjA5MDQ2YTE1ZDIxOCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gQEAgLTk5Myw2ICs5OTMsNjAgQEAgdm9pZCBpOTE1X3Jl cXVlc3Rfc2tpcChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgaW50IGVycm9yKQo+ICAgCW1lbXNl dCh2YWRkciArIGhlYWQsIDAsIHJxLT5wb3N0Zml4IC0gaGVhZCk7Cj4gICB9Cj4gICAKPiArc3Rh dGljIHN0cnVjdCBpOTE1X3JlcXVlc3QgKgo+ICtfX2k5MTVfcmVxdWVzdF9hd2FpdF90aW1lbGlu ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSkKPiArewo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUg KnRpbWVsaW5lID0gcnEtPnRpbWVsaW5lOwo+ICsJc3RydWN0IGk5MTVfcmVxdWVzdCAqcHJldjsK PiArCj4gKwkvKgo+ICsJICogRGVwZW5kZW5jeSB0cmFja2luZyBhbmQgcmVxdWVzdCBvcmRlcmlu ZyBhbG9uZyB0aGUgdGltZWxpbmUKPiArCSAqIGlzIHNwZWNpYWwgY2FzZWQgc28gdGhhdCB3ZSBj YW4gZWxpbWluYXRlIHJlZHVuZGFudCBvcmRlcmluZwo+ICsJICogb3BlcmF0aW9ucyB3aGlsZSBi dWlsZGluZyB0aGUgcmVxdWVzdCAod2Uga25vdyB0aGF0IHRoZSB0aW1lbGluZQo+ICsJICogaXRz ZWxmIGlzIG9yZGVyLCBhbmQgaGVyZSB3ZSBndWFyYW50ZWUgaXQpLgo+ICsJICoKPiArCSAqIEFz IHdlIGtub3cgd2Ugd2lsbCBuZWVkIHRvIGVtaXQgdHJhY2tpbmcgYWxvbmcgdGhlIHRpbWVsaW5l LAo+ICsJICogd2UgZW1iZWQgdGhlIGhvb2tzIGludG8gb3VyIHJlcXVlc3Qgc3RydWN0IC0tIGF0 IHRoZSBjb3N0IG9mCj4gKwkgKiBoYXZpbmcgdG8gaGF2ZSBzcGVjaWFsaXNlZCBuby1hbGxvY2F0 aW9uIGludGVyZmFjZXMgKHdoaWNoIHdpbGwKPiArCSAqIGJlIGJlbmVmaWNpYWwgZWxzZXdoZXJl KS4KPiArCSAqCj4gKwkgKiBBIHNlY29uZCBiZW5lZml0IHRvIG9wZW4tY29kaW5nIGk5MTVfcmVx dWVzdF9hd2FpdF9yZXF1ZXN0IGlzCj4gKwkgKiB0aGF0IHdlIGNhbiBhcHBseSBhIHNsaWdodCB2 YXJpYW50IG9mIHRoZSBydWxlcyBzcGVjaWFsaXNlZAo+ICsJICogZm9yIHRpbWVsaW5lcyB0aGF0 IGp1bXAgYmV0d2VlbiBlbmdpbmVzIChzdWNoIGFzIHZpcnR1YWwgZW5naW5lcykuCj4gKwkgKiBJ ZiB3ZSBjb25zaWRlciB0aGUgY2FzZSBvZiB2aXJ0dWFsIGVuZ2luZSwgd2UgbXVzdCBlbWl0IGEg ZG1hLWZlbmNlCj4gKwkgKiB0byBwcmV2ZW50IHNjaGVkdWxpbmcgb2YgdGhlIHNlY29uZCByZXF1 ZXN0IHVudGlsIHRoZSBmaXJzdCBpcwo+ICsJICogY29tcGxldGUgKHRvIG1heGltaXNlIG91ciBn cmVlZHkgbGF0ZSBsb2FkIGJhbGFuY2luZykgYW5kIHRoaXMKPiArCSAqIHByZWNsdWRlcyBvcHRp bWlzaW5nIHRvIHVzZSBzZW1hcGhvcmVzIHNlcmlhbGlzYXRpb24gb2YgYSBzaW5nbGUKPiArCSAq IHRpbWVsaW5lIGFjcm9zcyBlbmdpbmVzLgo+ICsJICovCj4gKwlwcmV2ID0gaTkxNV9hY3RpdmVf cmVxdWVzdF9yYXcoJnRpbWVsaW5lLT5sYXN0X3JlcXVlc3QsCj4gKwkJCQkgICAgICAgJnJxLT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWlmIChwcmV2ICYmICFpOTE1X3JlcXVlc3RfY29t cGxldGVkKHByZXYpKSB7Cj4gKwkJaWYgKGlzX3Bvd2VyX29mXzIocHJldi0+ZW5naW5lLT5tYXNr IHwgcnEtPmVuZ2luZS0+bWFzaykpCj4gKwkJCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2Uo JnJxLT5zdWJtaXQsCj4gKwkJCQkJCSAgICAgJnByZXYtPnN1Ym1pdCwKPiArCQkJCQkJICAgICAm cnEtPnN1Ym1pdHEpOwo+ICsJCWVsc2UKPiArCQkJX19pOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9m ZW5jZSgmcnEtPnN1Ym1pdCwKPiArCQkJCQkJCSZwcmV2LT5mZW5jZSwKPiArCQkJCQkJCSZycS0+ ZG1hcSk7Cj4gKwkJaWYgKHJxLT5lbmdpbmUtPnNjaGVkdWxlKQo+ICsJCQlfX2k5MTVfc2NoZWRf bm9kZV9hZGRfZGVwZW5kZW5jeSgmcnEtPnNjaGVkLAo+ICsJCQkJCQkJICZwcmV2LT5zY2hlZCwK PiArCQkJCQkJCSAmcnEtPmRlcCwKPiArCQkJCQkJCSAwKTsKPiArCX0KPiArCj4gKwlzcGluX2xv Y2tfaXJxKCZ0aW1lbGluZS0+bG9jayk7Cj4gKwlsaXN0X2FkZF90YWlsKCZycS0+bGluaywgJnRp bWVsaW5lLT5yZXF1ZXN0cyk7Cj4gKwlzcGluX3VubG9ja19pcnEoJnRpbWVsaW5lLT5sb2NrKTsK PiArCj4gKwlHRU1fQlVHX09OKHRpbWVsaW5lLT5zZXFubyAhPSBycS0+ZmVuY2Uuc2Vxbm8pOwo+ ICsJX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldCgmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwgcnEp OwoKTWlub3IgYnV0IHdvdWxkIG1heWJlIGNvbnNpZGVyIHJlbmFtaW5nIHRoZSBmdW5jdGlvbiBz aW5jZSBpdCBkb2VzIG1vcmUgCnRoYW4gc2V0cyB1cCBhd2FpdHMuIF9faTkxNV9yZXF1ZXN0X2Fk ZF90b190aW1lbGluZT8KCj4gKwo+ICsJcmV0dXJuIHByZXY7Cj4gK30KPiArCj4gICAvKgo+ICAg ICogTkI6IFRoaXMgZnVuY3Rpb24gaXMgbm90IGFsbG93ZWQgdG8gZmFpbC4gRG9pbmcgc28gd291 bGQgbWVhbiB0aGUgdGhlCj4gICAgKiByZXF1ZXN0IGlzIG5vdCBiZWluZyB0cmFja2VkIGZvciBj b21wbGV0aW9uIGJ1dCB0aGUgd29yayBpdHNlbGYgaXMKPiBAQCAtMTAzNywzMSArMTA5MSw3IEBA IHZvaWQgaTkxNV9yZXF1ZXN0X2FkZChzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAg CUdFTV9CVUdfT04oSVNfRVJSKGNzKSk7Cj4gICAJcmVxdWVzdC0+cG9zdGZpeCA9IGludGVsX3Jp bmdfb2Zmc2V0KHJlcXVlc3QsIGNzKTsKPiAgIAo+IC0JLyoKPiAtCSAqIFNlYWwgdGhlIHJlcXVl c3QgYW5kIG1hcmsgaXQgYXMgcGVuZGluZyBleGVjdXRpb24uIE5vdGUgdGhhdAo+IC0JICogd2Ug bWF5IGluc3BlY3QgdGhpcyBzdGF0ZSwgd2l0aG91dCBob2xkaW5nIGFueSBsb2NrcywgZHVyaW5n Cj4gLQkgKiBoYW5nY2hlY2suIEhlbmNlIHdlIGFwcGx5IHRoZSBiYXJyaWVyIHRvIGVuc3VyZSB0 aGF0IHdlIGRvIG5vdAo+IC0JICogc2VlIGEgbW9yZSByZWNlbnQgdmFsdWUgaW4gdGhlIGh3cyB0 aGFuIHdlIGFyZSB0cmFja2luZy4KPiAtCSAqLwo+IC0KPiAtCXByZXYgPSBpOTE1X2FjdGl2ZV9y ZXF1ZXN0X3JhdygmdGltZWxpbmUtPmxhc3RfcmVxdWVzdCwKPiAtCQkJCSAgICAgICAmcmVxdWVz dC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLQlpZiAocHJldiAmJiAhaTkxNV9yZXF1ZXN0 X2NvbXBsZXRlZChwcmV2KSkgewo+IC0JCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2UoJnJl cXVlc3QtPnN1Ym1pdCwgJnByZXYtPnN1Ym1pdCwKPiAtCQkJCQkgICAgICZyZXF1ZXN0LT5zdWJt aXRxKTsKPiAtCQlpZiAoZW5naW5lLT5zY2hlZHVsZSkKPiAtCQkJX19pOTE1X3NjaGVkX25vZGVf YWRkX2RlcGVuZGVuY3koJnJlcXVlc3QtPnNjaGVkLAo+IC0JCQkJCQkJICZwcmV2LT5zY2hlZCwK PiAtCQkJCQkJCSAmcmVxdWVzdC0+ZGVwLAo+IC0JCQkJCQkJIDApOwo+IC0JfQo+IC0KPiAtCXNw aW5fbG9ja19pcnEoJnRpbWVsaW5lLT5sb2NrKTsKPiAtCWxpc3RfYWRkX3RhaWwoJnJlcXVlc3Qt PmxpbmssICZ0aW1lbGluZS0+cmVxdWVzdHMpOwo+IC0Jc3Bpbl91bmxvY2tfaXJxKCZ0aW1lbGlu ZS0+bG9jayk7Cj4gLQo+IC0JR0VNX0JVR19PTih0aW1lbGluZS0+c2Vxbm8gIT0gcmVxdWVzdC0+ ZmVuY2Uuc2Vxbm8pOwo+IC0JX19pOTE1X2FjdGl2ZV9yZXF1ZXN0X3NldCgmdGltZWxpbmUtPmxh c3RfcmVxdWVzdCwgcmVxdWVzdCk7Cj4gKwlwcmV2ID0gX19pOTE1X3JlcXVlc3RfYXdhaXRfdGlt ZWxpbmUocmVxdWVzdCk7Cj4gICAKPiAgIAlsaXN0X2FkZF90YWlsKCZyZXF1ZXN0LT5yaW5nX2xp bmssICZyaW5nLT5yZXF1ZXN0X2xpc3QpOwo+ICAgCWlmIChsaXN0X2lzX2ZpcnN0KCZyZXF1ZXN0 LT5yaW5nX2xpbmssICZyaW5nLT5yZXF1ZXN0X2xpc3QpKSB7Cj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmgKPiBpbmRleCA4YzhmYTUwMTA2NDQuLmNkNmMxMzA5NjRjZCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4gQEAgLTEyOCw3ICsxMjgsMTAgQEAgc3RydWN0 IGk5MTVfcmVxdWVzdCB7Cj4gICAJICogSXQgaXMgdXNlZCBieSB0aGUgZHJpdmVyIHRvIHRoZW4g cXVldWUgdGhlIHJlcXVlc3QgZm9yIGV4ZWN1dGlvbi4KPiAgIAkgKi8KPiAgIAlzdHJ1Y3QgaTkx NV9zd19mZW5jZSBzdWJtaXQ7Cj4gLQl3YWl0X3F1ZXVlX2VudHJ5X3Qgc3VibWl0cTsKPiArCXVu aW9uIHsKPiArCQl3YWl0X3F1ZXVlX2VudHJ5X3Qgc3VibWl0cTsKPiArCQlzdHJ1Y3QgaTkxNV9z d19kbWFfZmVuY2VfY2IgZG1hcTsKPiArCX07Cj4gICAJc3RydWN0IGxpc3RfaGVhZCBleGVjdXRl X2NiOwo+ICAgCj4gICAJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zd19mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCj4gaW5k ZXggOGQxNDAwZDM3OGQ3Li41Mzg3YWFmZDM0MjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9zd19mZW5jZS5jCj4gQEAgLTM1OSwxMSArMzU5LDYgQEAgaW50IGk5MTVfc3dfZmVuY2VfYXdh aXRfc3dfZmVuY2VfZ2ZwKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiAgIAlyZXR1cm4g X19pOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKGZlbmNlLCBzaWduYWxlciwgTlVMTCwgZ2Zw KTsKPiAgIH0KPiAgIAo+IC1zdHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2Igewo+IC0Jc3RydWN0 IGRtYV9mZW5jZV9jYiBiYXNlOwo+IC0Jc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlOwo+IC19 Owo+IC0KPiAgIHN0cnVjdCBpOTE1X3N3X2RtYV9mZW5jZV9jYl90aW1lciB7Cj4gICAJc3RydWN0 IGk5MTVfc3dfZG1hX2ZlbmNlX2NiIGJhc2U7Cj4gICAJc3RydWN0IGRtYV9mZW5jZSAqZG1hOwo+ IEBAIC00ODAsNiArNDc1LDQwIEBAIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShz dHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCj4gICAJcmV0dXJuIHJldDsKPiAgIH0KPiAgIAo+ ICtzdGF0aWMgdm9pZCBfX2RtYV9pOTE1X3N3X2ZlbmNlX3dha2Uoc3RydWN0IGRtYV9mZW5jZSAq ZG1hLAo+ICsJCQkJICAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpkYXRhKQo+ICt7Cj4gKwlzdHJ1 Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2IgKmNiID0gY29udGFpbmVyX29mKGRhdGEsIHR5cGVvZigq Y2IpLCBiYXNlKTsKPiArCj4gKwlpOTE1X3N3X2ZlbmNlX2NvbXBsZXRlKGNiLT5mZW5jZSk7Cj4g K30KPiArCj4gK2ludCBfX2k5MTVfc3dfZmVuY2VfYXdhaXRfZG1hX2ZlbmNlKHN0cnVjdCBpOTE1 X3N3X2ZlbmNlICpmZW5jZSwKPiArCQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpkbWEsCj4gKwkJ CQkgICAgc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNlX2NiICpjYikKPiArewo+ICsJaW50IHJldDsK PiArCj4gKwlkZWJ1Z19mZW5jZV9hc3NlcnQoZmVuY2UpOwo+ICsKPiArCWlmIChkbWFfZmVuY2Vf aXNfc2lnbmFsZWQoZG1hKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwljYi0+ZmVuY2UgPSBmZW5j ZTsKPiArCWk5MTVfc3dfZmVuY2VfYXdhaXQoZmVuY2UpOwo+ICsKPiArCXJldCA9IGRtYV9mZW5j ZV9hZGRfY2FsbGJhY2soZG1hLCAmY2ItPmJhc2UsIF9fZG1hX2k5MTVfc3dfZmVuY2Vfd2FrZSk7 Cj4gKwlpZiAocmV0ID09IDApIHsKPiArCQlyZXQgPSAxOwo+ICsJfSBlbHNlIHsKPiArCQlpOTE1 X3N3X2ZlbmNlX2NvbXBsZXRlKGZlbmNlKTsKPiArCQlpZiAocmV0ID09IC1FTk9FTlQpIC8qIGZl bmNlIGFscmVhZHkgc2lnbmFsZWQgKi8KPiArCQkJcmV0ID0gMDsKPiArCX0KPiArCj4gKwlyZXR1 cm4gcmV0Owo+ICt9Cj4gKwo+ICAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfcmVzZXJ2YXRpb24o c3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAo+ICAgCQkJCSAgICBzdHJ1Y3QgcmVzZXJ2YXRp b25fb2JqZWN0ICpyZXN2LAo+ICAgCQkJCSAgICBjb25zdCBzdHJ1Y3QgZG1hX2ZlbmNlX29wcyAq ZXhjbHVkZSwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5j ZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5oCj4gaW5kZXggNmRlYzll MWQxMTAyLi45Y2I1YzNiMzA3YTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zd19mZW5jZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5j ZS5oCj4gQEAgLTksMTQgKzksMTMgQEAKPiAgICNpZm5kZWYgX0k5MTVfU1dfRkVOQ0VfSF8KPiAg ICNkZWZpbmUgX0k5MTVfU1dfRkVOQ0VfSF8KPiAgIAo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWZl bmNlLmg+Cj4gICAjaW5jbHVkZSA8bGludXgvZ2ZwLmg+Cj4gICAjaW5jbHVkZSA8bGludXgva3Jl Zi5oPgo+ICAgI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVyLmg+IC8qIGZvciBOT1RJRllfRE9ORSAq Lwo+ICAgI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KPiAgIAo+ICAgc3RydWN0IGNvbXBsZXRpb247 Cj4gLXN0cnVjdCBkbWFfZmVuY2U7Cj4gLXN0cnVjdCBkbWFfZmVuY2Vfb3BzOwo+ICAgc3RydWN0 IHJlc2VydmF0aW9uX29iamVjdDsKPiAgIAo+ICAgc3RydWN0IGk5MTVfc3dfZmVuY2Ugewo+IEBA IC02OCwxMCArNjcsMjAgQEAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2Uoc3RydWN0 IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAo+ICAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVu Y2VfZ2ZwKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiAgIAkJCQkgICAgIHN0cnVjdCBp OTE1X3N3X2ZlbmNlICphZnRlciwKPiAgIAkJCQkgICAgIGdmcF90IGdmcCk7Cj4gKwo+ICtzdHJ1 Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2Igewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jYiBiYXNlOwo+ ICsJc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlOwo+ICt9Owo+ICsKPiAraW50IF9faTkxNV9z d19mZW5jZV9hd2FpdF9kbWFfZmVuY2Uoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAo+ICsJ CQkJICAgIHN0cnVjdCBkbWFfZmVuY2UgKmRtYSwKPiArCQkJCSAgICBzdHJ1Y3QgaTkxNV9zd19k bWFfZmVuY2VfY2IgKmNiKTsKPiAgIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShz dHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCj4gICAJCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICpk bWEsCj4gICAJCQkJICB1bnNpZ25lZCBsb25nIHRpbWVvdXQsCj4gICAJCQkJICBnZnBfdCBnZnAp Owo+ICsKPiAgIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBpOTE1 X3N3X2ZlbmNlICpmZW5jZSwKPiAgIAkJCQkgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAq cmVzdiwKPiAgIAkJCQkgICAgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgKmV4Y2x1ZGUsCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA3NDgzNTJkNTEzZDYuLjdiOTM4ZWFmZjlj NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAgLTI4MDksNyArMjgwOSwxMCBA QCBwb3B1bGF0ZV9scl9jb250ZXh0KHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwKPiAgIAo+ICAg c3RhdGljIHN0cnVjdCBpOTE1X3RpbWVsaW5lICpnZXRfdGltZWxpbmUoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCkKPiAgIHsKPiAtCXJldHVybiBpOTE1X3RpbWVsaW5lX2NyZWF0ZShjdHgt Pmk5MTUsIGN0eC0+bmFtZSwgTlVMTCk7Cj4gKwlpZiAoY3R4LT50aW1lbGluZSkKPiArCQlyZXR1 cm4gaTkxNV90aW1lbGluZV9nZXQoY3R4LT50aW1lbGluZSk7Cj4gKwllbHNlCj4gKwkJcmV0dXJu IGk5MTVfdGltZWxpbmVfY3JlYXRlKGN0eC0+aTkxNSwgY3R4LT5uYW1lLCBOVUxMKTsKPiAgIH0K PiAgIAo+ICAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9kZWZlcnJlZF9hbGxvYyhzdHJ1 Y3QgaW50ZWxfY29udGV4dCAqY2UsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggYzRhNWNmMjY5OTJlLi4zZTVlMzg0ZDAw ZDUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2Vt X2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dl bV9jb250ZXh0LmMKPiBAQCAtNzYsNyArNzYsNyBAQCBzdGF0aWMgaW50IGxpdmVfbm9wX3N3aXRj aCh2b2lkICphcmcpCj4gICAJfQo+ICAgCj4gICAJZm9yIChuID0gMDsgbiA8IG5jdHg7IG4rKykg ewo+IC0JCWN0eFtuXSA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZl cl9wcml2KTsKPiArCQljdHhbbl0gPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxl LT5kcml2ZXJfcHJpdiwgMCk7Cj4gICAJCWlmIChJU19FUlIoY3R4W25dKSkgewo+ICAgCQkJZXJy ID0gUFRSX0VSUihjdHhbbl0pOwo+ICAgCQkJZ290byBvdXRfdW5sb2NrOwo+IEBAIC01MjYsNyAr NTI2LDggQEAgc3RhdGljIGludCBpZ3RfY3R4X2V4ZWModm9pZCAqYXJnKQo+ICAgCQkJc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAgIAkJCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ ICAgCj4gLQkJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZl cl9wcml2KTsKPiArCQkJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwKPiArCQkJ CQkJICAgICAgZmlsZS0+ZHJpdmVyX3ByaXYsIDApOwo+ICAgCQkJaWYgKElTX0VSUihjdHgpKSB7 Cj4gICAJCQkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICAgCQkJCWdvdG8gb3V0X3VubG9jazsKPiBA QCAtNjExLDcgKzYxMiw3IEBAIHN0YXRpYyBpbnQgaWd0X3NoYXJlZF9jdHhfZXhlYyh2b2lkICph cmcpCj4gICAKPiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAgIAo+ IC0JcGFyZW50ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3By aXYpOwo+ICsJcGFyZW50ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJp dmVyX3ByaXYsIDApOwo+ICAgCWlmIChJU19FUlIocGFyZW50KSkgewo+ICAgCQllcnIgPSBQVFJf RVJSKHBhcmVudCk7Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtNjQ1LDcgKzY0Niw4IEBA IHN0YXRpYyBpbnQgaWd0X3NoYXJlZF9jdHhfZXhlYyh2b2lkICphcmcpCj4gICAJCQlpZiAoY3R4 KQo+ICAgCQkJCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ ICAgCj4gLQkJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZl cl9wcml2KTsKPiArCQkJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwKPiArCQkJ CQkJICAgICAgZmlsZS0+ZHJpdmVyX3ByaXYsIDApOwo+ICAgCQkJaWYgKElTX0VSUihjdHgpKSB7 Cj4gICAJCQkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICAgCQkJCWdvdG8gb3V0X3VubG9jazsKPiBA QCAtMTA4Nyw3ICsxMDg5LDcgQEAgX19pZ3RfY3R4X3NzZXUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUsCj4gICAKPiAgIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsK PiAgIAo+IC0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVy X3ByaXYpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJp dmVyX3ByaXYsIDApOwo+ICAgCWlmIChJU19FUlIoY3R4KSkgewo+ICAgCQlyZXQgPSBQVFJfRVJS KGN0eCk7Cj4gICAJCWdvdG8gb3V0X3VubG9jazsKPiBAQCAtMTE5Nyw3ICsxMTk5LDcgQEAgc3Rh dGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykKPiAgIAlpZiAoZXJyKQo+ICAgCQln b3RvIG91dF91bmxvY2s7Cj4gICAKPiAtCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5 MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKPiArCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0 KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2LCAwKTsKPiAgIAlpZiAoSVNfRVJSKGN0eCkpIHsKPiAg IAkJZXJyID0gUFRSX0VSUihjdHgpOwo+ICAgCQlnb3RvIG91dF91bmxvY2s7Cj4gQEAgLTE1MjMs MTMgKzE1MjUsMTMgQEAgc3RhdGljIGludCBpZ3Rfdm1faXNvbGF0aW9uKHZvaWQgKmFyZykKPiAg IAlpZiAoZXJyKQo+ICAgCQlnb3RvIG91dF91bmxvY2s7Cj4gICAKPiAtCWN0eF9hID0gaTkxNV9n ZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4X2EgPSBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwgMCk7Cj4gICAJ aWYgKElTX0VSUihjdHhfYSkpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihjdHhfYSk7Cj4gICAJCWdv dG8gb3V0X3VubG9jazsKPiAgIAl9Cj4gICAKPiAtCWN0eF9iID0gaTkxNV9nZW1fY3JlYXRlX2Nv bnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYpOwo+ICsJY3R4X2IgPSBpOTE1X2dlbV9jcmVh dGVfY29udGV4dChpOTE1LCBmaWxlLT5kcml2ZXJfcHJpdiwgMCk7Cj4gICAJaWYgKElTX0VSUihj dHhfYikpIHsKPiAgIAkJZXJyID0gUFRSX0VSUihjdHhfYik7Cj4gICAJCWdvdG8gb3V0X3VubG9j azsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29u dGV4dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4g aW5kZXggZjkwMzI4YjIxNzYzLi4xZDZkYzJmZTM2YWIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCj4gQEAgLTk0LDcgKzk0LDcgQEAgbGl2 ZV9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBzdHJ1Y3QgZHJtX2ZpbGUg KmZpbGUpCj4gICB7Cj4gICAJbG9ja2RlcF9hc3NlcnRfaGVsZCgmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7Cj4gICAKPiAtCXJldHVybiBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxl LT5kcml2ZXJfcHJpdik7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwg ZmlsZS0+ZHJpdmVyX3ByaXYsIDApOwo+ICAgfQo+ICAgCj4gICBzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IGluZGV4IDBkYjkyYTQxNTNjOC4uMDA3ZDc3ZmY3Mjk1 IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+ICsrKyBiL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAo+IEBAIC0xNDU0LDggKzE0NTQsOSBAQCBzdHJ1Y3QgZHJt X2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCB7Cj4gICAJX191MzIgY3R4X2lkOyAvKiBvdXRw dXQ6IGlkIG9mIG5ldyBjb250ZXh0Ki8KPiAgIAlfX3UzMiBmbGFnczsKPiAgICNkZWZpbmUgSTkx NV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUwkoMXUgPDwgMCkKPiArI2RlZmlu ZSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORQkoMXUgPDwgMSkKPiAg ICNkZWZpbmUgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VTktOT1dOIFwKPiAtCSgtKEk5MTVf Q09OVEVYVF9DUkVBVEVfRkxBR1NfVVNFX0VYVEVOU0lPTlMgPDwgMSkpCj4gKwkoLShJOTE1X0NP TlRFWFRfQ1JFQVRFX0ZMQUdTX1NJTkdMRV9USU1FTElORSA8PCAxKSkKPiAgIAlfX3U2NCBleHRl bnNpb25zOwo+ICAgfTsKPiAgIAo+IAoKTEdUTS4KClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4