From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 34/40] drm/i915: Allow contexts to share a single timeline across all engines Date: Tue, 25 Sep 2018 09:45:17 +0100 Message-ID: References: <20180919195544.1511-1-chris@chris-wilson.co.uk> <20180919195544.1511-34-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 CB39C6E06F for ; Tue, 25 Sep 2018 08:45:19 +0000 (UTC) In-Reply-To: <20180919195544.1511-34-chris@chris-wilson.co.uk> Content-Language: en-GB 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 Ck9uIDE5LzA5LzIwMTggMjA6NTUsIENocmlzIFdpbHNvbiB3cm90ZToKPiBQcmV2aW91c2x5LCBv dXIgdmlldyBoYXMgYmVlbiBhbHdheXMgdG8gcnVuIHRoZSBlbmdpbmVzIGluZGVwZW5kZW50bHkK PiB3aXRoaW4gYSBjb250ZXh0LiAoTXVsdGlwbGUgZW5naW5lcyBoYXBwZW5lZCBiZWZvcmUgd2Ug aGFkIGNvbnRleHRzIGFuZAo+IHRpbWVsaW5lcywgc28gdGhleSBhbHdheXMgb3BlcmF0ZWQgaW5k ZXBlbmRlbnRseSBhbmQgdGhhdCBiZWhhdmlvdXIKPiBwZXJzaXN0ZWQgaW50byBjb250ZXh0cy4p IEhvd2V2ZXIsIGF0IHRoZSB1c2VyIGxldmVsIHRoZSBjb250ZXh0IG9mdGVuCj4gcmVwcmVzZW50 cyBhIHNpbmdsZSB0aW1lbGluZSAoZS5nLiBHTCBjb250ZXh0cykgYW5kIHVzZXJzcGFjZSBtdXN0 Cj4gZW5zdXJlIHRoYXQgdGhlIGluZGl2aWR1YWwgZW5naW5lcyBhcmUgc2VyaWFsaXNlZCB0byBw cmVzZW50IHRoYXQKPiBvcmRlcmluZyB0byB0aGUgY2xpZW50IChvciBmb3Jnb3QgYWJvdXQgdGhp cyBkZXRhaWwgZW50aXJlbHkgYW5kIGhvcGUgbm8KPiBvbmUgbm90aWNlcyAtIGEgZmFpciBwbG95 IGlmIHRoZSBjbGllbnQgY2FuIG9ubHkgZGlyZWN0bHkgY29udHJvbCBvbmUKPiBlbmdpbmUgdGhl bXNlbHZlcyA7KQo+IAo+IEluIHRoZSBuZXh0IHBhdGNoLCB3ZSB3aWxsIHdhbnQgdG8gY29uc3Ry dWN0IGEgc2V0IG9mIGVuZ2luZXMgdGhhdAo+IG9wZXJhdGUgYXMgb25lLCB0aGF0IGhhdmUgYSBz aW5nbGUgdGltZWxpbmUgaW50ZXJ3b3ZlbiBiZXR3ZWVuIHRoZW0sIHRvCj4gcHJlc2VudCBhIHNp bmdsZSB2aXJ0dWFsIGVuZ2luZSB0byB0aGUgdXNlci4gKFRoZXkgc3VibWl0IHRvIHRoZSB2aXJ0 dWFsCj4gZW5naW5lLCB0aGVuIHdlIGRlY2lkZSB3aGljaCBlbmdpbmUgdG8gZXhlY3V0ZSBvbiBi YXNlZC4pCj4gCj4gVG8gdGhhdCBlbmQsIHdlIHdhbnQgdG8gYmUgYWJsZSB0byBjcmVhdGUgY29u dGV4dHMgd2hpY2ggaGF2ZSBhIHNpbmdsZQo+IHRpbWVsaW5lIChmZW5jZSBjb250ZXh0KSBzaGFy ZWQgYmV0d2VlbiBhbGwgZW5naW5lcywgcmF0aGVyIHRoYW4gbXVsdGlwbGUKPiB0aW1lbGluZXMu Cj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAy NiArKysrKysrKysrKysrKysrLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5oIHwgIDMgKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5jICAg ICB8IDEwICsrKysrLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oICAg ICB8ICA1ICsrKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuYyAgICB8 IDM5ICsrKysrKysrKysrKysrKysrKysrKy0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc3dfZmVuY2UuaCAgICB8IDEzICsrKysrKystLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMgICAgICAgIHwgIDUgKysrLQo+ICAgaW5jbHVkZS91YXBpL2RybS9pOTE1X2Ry bS5oICAgICAgICAgICAgIHwgIDMgKy0KPiAgIDggZmlsZXMgY2hhbmdlZCwgOTEgaW5zZXJ0aW9u cygrKSwgMTMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwo+IGluZGV4IGRhMmFjMTBmOGU4YS4uYTg1NzBhMDdiM2I3IDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0yMjMsNiArMjIzLDkgQEAgc3Rh dGljIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpj dHgpCj4gICAJCQljZS0+b3BzLT5kZXN0cm95KGNlKTsKPiAgIAl9Cj4gICAKPiArCWlmIChjdHgt PnRpbWVsaW5lKQo+ICsJCWk5MTVfdGltZWxpbmVfcHV0KGN0eC0+dGltZWxpbmUpOwo+ICsKPiAg IAlrZnJlZShjdHgtPm5hbWUpOwo+ICAgCXB1dF9waWQoY3R4LT5waWQpOwo+ICAgCj4gQEAgLTQw Miw2ICs0MDUsNyBAQCBzdGF0aWMgdm9pZCBfX2Rlc3Ryb3lfaHdfY29udGV4dChzdHJ1Y3QgaTkx NV9nZW1fY29udGV4dCAqY3R4LAo+ICAgfQo+ICAgCj4gICAjZGVmaW5lIENSRUFURV9WTSBCSVQo MCkKPiArI2RlZmluZSBDUkVBVEVfVElNRUxJTkUgQklUKDEpCj4gICAKPiAgIHN0YXRpYyBzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4gICBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gQEAgLTQxMiw2ICs0MTYsOSBAQCBpOTE1X2dl bV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gICAK PiAgIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g ICAKPiArCWlmIChmbGFncyAmIENSRUFURV9USU1FTElORSAmJiAhSEFTX0VYRUNMSVNUUyhkZXZf cHJpdikpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICAgCS8qIFJlYXAgdGhl IG1vc3Qgc3RhbGUgY29udGV4dCAqLwo+ICAgCWNvbnRleHRzX2ZyZWVfZmlyc3QoZGV2X3ByaXYp Owo+ICAgCj4gQEAgLTQzNCw2ICs0NDEsMTggQEAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCQljdHgtPmRlc2NfdGVtcGxhdGUg PSBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoZGV2X3ByaXYsIHBwZ3R0KTsKPiAgIAl9Cj4gICAKPiAr CWlmIChmbGFncyAmIENSRUFURV9USU1FTElORSkgewo+ICsJCXN0cnVjdCBpOTE1X3RpbWVsaW5l ICp0aW1lbGluZTsKPiArCj4gKwkJdGltZWxpbmUgPSBpOTE1X3RpbWVsaW5lX2NyZWF0ZShkZXZf cHJpdiwgY3R4LT5uYW1lKTsKPiArCQlpZiAoSVNfRVJSKHRpbWVsaW5lKSkgewo+ICsJCQlfX2Rl c3Ryb3lfaHdfY29udGV4dChjdHgsIGZpbGVfcHJpdik7Cj4gKwkJCXJldHVybiBFUlJfQ0FTVCh0 aW1lbGluZSk7Cj4gKwkJfQo+ICsKPiArCQljdHgtPnRpbWVsaW5lID0gdGltZWxpbmU7Cj4gKwl9 Cj4gKwo+ICAgCXRyYWNlX2k5MTVfY29udGV4dF9jcmVhdGUoY3R4KTsKPiAgIAo+ICAgCXJldHVy biBjdHg7Cj4gQEAgLTc5Niw3ICs4MTUsOSBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVf aW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgIAlpZiAoYXJncy0+ cGFkICE9IDApCj4gICAJCXJldHVybiAtRUlOVkFMOwo+ICAgCj4gLQlpZiAoYXJncy0+ZmxhZ3Mg JiB+STkxNV9HRU1fQ09OVEVYVF9TSEFSRV9HVFQpCj4gKwlpZiAoYXJncy0+ZmxhZ3MgJgo+ICsJ ICAgIH4oSTkxNV9HRU1fQ09OVEVYVF9TSEFSRV9HVFQgfAo+ICsJICAgICAgSTkxNV9HRU1fQ09O VEVYVF9TSU5HTEVfVElNRUxJTkUpKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgIAo+ICAgCWlm IChjbGllbnRfaXNfYmFubmVkKGZpbGVfcHJpdikpIHsKPiBAQCAtODIwLDYgKzg0MSw5IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLAo+ICAgCQlmbGFncyAmPSB+Q1JFQVRFX1ZNOwo+ICAgCX0KPiAgIAo+ICsJaWYg KGFyZ3MtPmZsYWdzICYgSTkxNV9HRU1fQ09OVEVYVF9TSU5HTEVfVElNRUxJTkUpCj4gKwkJZmxh Z3MgfD0gQ1JFQVRFX1RJTUVMSU5FOwo+ICsKPiAgIAllcnIgPSBpOTE1X211dGV4X2xvY2tfaW50 ZXJydXB0aWJsZShkZXYpOwo+ICAgCWlmIChlcnIpCj4gICAJCWdvdG8gb3V0Owo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiBpbmRleCAwODE2NWY2YTBhODQuLjc3MDA0 MzQ0OWJhNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250 ZXh0LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKPiBA QCAtNDEsNiArNDEsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZTsKPiAgIHN0cnVjdCBkcm1f aTkxNV9maWxlX3ByaXZhdGU7Cj4gICBzdHJ1Y3QgaTkxNV9od19wcGd0dDsKPiAgIHN0cnVjdCBp OTE1X3JlcXVlc3Q7Cj4gK3N0cnVjdCBpOTE1X3RpbWVsaW5lOwo+ICAgc3RydWN0IGk5MTVfdm1h Owo+ICAgc3RydWN0IGludGVsX3Jpbmc7Cj4gICAKPiBAQCAtNjYsNiArNjcsOCBAQCBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCB7Cj4gICAJLyoqIGZpbGVfcHJpdjogb3duaW5nIGZpbGUgZGVzY3Jp cHRvciAqLwo+ICAgCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdjsKPiAg IAo+ICsJc3RydWN0IGk5MTVfdGltZWxpbmUgKnRpbWVsaW5lOwoKUHV0IGEgc2hvcnQgY29tbWVu dCBwbGVhc2UuCgo+ICsKPiAgIAkvKioKPiAgIAkgKiBAcHBndHQ6IHVuaXF1ZSBhZGRyZXNzIHNw YWNlIChHVFQpCj4gICAJICoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuYwo+IGluZGV4 IGZjN2FkOGRiYzM2ZS4uMzRkNDEwY2ZhNTc3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVxdWVzdC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZXF1ZXN0LmMKPiBAQCAtMTAwNyw4ICsxMDA3LDE0IEBAIHZvaWQgaTkxNV9yZXF1ZXN0X2FkZChz dHJ1Y3QgaTkxNV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICAgCXByZXYgPSBpOTE1X2dlbV9hY3RpdmVf cmF3KCZ0aW1lbGluZS0+bGFzdF9yZXF1ZXN0LAo+ICAgCQkJCSAgICZyZXF1ZXN0LT5pOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiAgIAlpZiAocHJldiAmJiAhaTkxNV9yZXF1ZXN0X2NvbXBsZXRl ZChwcmV2KSkgewo+IC0JCWk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2UoJnJlcXVlc3QtPnN1 Ym1pdCwgJnByZXYtPnN1Ym1pdCwKPiAtCQkJCQkgICAgICZyZXF1ZXN0LT5zdWJtaXRxKTsKPiAr CQlpZiAocHJldi0+ZW5naW5lID09IGVuZ2luZSkKPiArCQkJaTkxNV9zd19mZW5jZV9hd2FpdF9z d19mZW5jZSgmcmVxdWVzdC0+c3VibWl0LAo+ICsJCQkJCQkgICAgICZwcmV2LT5zdWJtaXQsCj4g KwkJCQkJCSAgICAgJnJlcXVlc3QtPnN1Ym1pdHEpOwo+ICsJCWVsc2UKPiArCQkJX19pOTE1X3N3 X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZSgmcmVxdWVzdC0+c3VibWl0LAo+ICsJCQkJCQkJJnByZXYt PmZlbmNlLAo+ICsJCQkJCQkJJnJlcXVlc3QtPmRtYXEpOwoKQ291bGQgYmUgd29ydGggYSBjb21t ZW50IG9uIHRoZSBjb25kaXRpb25hbCBibG9jayB0byBoZWxwIGZ1dHVyZSByZWFkZXJzLgoKPiAg IAkJaWYgKGVuZ2luZS0+c2NoZWR1bGUpCj4gICAJCQlfX2k5MTVfc2NoZWRfbm9kZV9hZGRfZGVw ZW5kZW5jeSgmcmVxdWVzdC0+c2NoZWQsCj4gICAJCQkJCQkJICZwcmV2LT5zY2hlZCwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmggYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlcXVlc3QuaAo+IGluZGV4IDkwZTlkMTcwYTBjZC4uNjhkMzZlZWI1 ZWRiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVxdWVzdC5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZXF1ZXN0LmgKPiBAQCAtMTE2LDcgKzEx NiwxMCBAQCBzdHJ1Y3QgaTkxNV9yZXF1ZXN0IHsKPiAgIAkgKiBJdCBpcyB1c2VkIGJ5IHRoZSBk cml2ZXIgdG8gdGhlbiBxdWV1ZSB0aGUgcmVxdWVzdCBmb3IgZXhlY3V0aW9uLgo+ICAgCSAqLwo+ ICAgCXN0cnVjdCBpOTE1X3N3X2ZlbmNlIHN1Ym1pdDsKPiAtCXdhaXRfcXVldWVfZW50cnlfdCBz dWJtaXRxOwo+ICsJdW5pb24gewo+ICsJCXdhaXRfcXVldWVfZW50cnlfdCBzdWJtaXRxOwo+ICsJ CXN0cnVjdCBpOTE1X3N3X2RtYV9mZW5jZV9jYiBkbWFxOwoKRHJvcCBhIGNvbW1lbnQgaGVyZSBh cyB3ZWxsIGV4cGxhaW5pbmcgdGhlIGR1YWxpdHkuCgo+ICsJfTsKPiAgIAl3YWl0X3F1ZXVlX2hl YWRfdCBleGVjdXRlOwo+ICAgCj4gICAJLyoKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zd19mZW5jZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5j ZS5jCj4gaW5kZXggNmRiZWVkMDc5YWU1Li5iNjg4ODNmZTczYzUgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zd19mZW5jZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9zd19mZW5jZS5jCj4gQEAgLTM2MiwxMSArMzYyLDYgQEAgaW50IGk5MTVfc3df ZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiAg IAlyZXR1cm4gX19pOTE1X3N3X2ZlbmNlX2F3YWl0X3N3X2ZlbmNlKGZlbmNlLCBzaWduYWxlciwg TlVMTCwgZ2ZwKTsKPiAgIH0KPiAgIAo+IC1zdHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2Igewo+ IC0Jc3RydWN0IGRtYV9mZW5jZV9jYiBiYXNlOwo+IC0Jc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZl bmNlOwo+IC19Owo+IC0KPiAgIHN0cnVjdCBpOTE1X3N3X2RtYV9mZW5jZV9jYl90aW1lciB7Cj4g ICAJc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNlX2NiIGJhc2U7Cj4gICAJc3RydWN0IGRtYV9mZW5j ZSAqZG1hOwo+IEBAIC00ODMsNiArNDc4LDQwIEBAIGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2Rt YV9mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAqZmVuY2UsCj4gICAJcmV0dXJuIHJldDsKPiAg IH0KPiAgIAo+ICtzdGF0aWMgdm9pZCBfX2RtYV9pOTE1X3N3X2ZlbmNlX3dha2Uoc3RydWN0IGRt YV9mZW5jZSAqZG1hLAo+ICsJCQkJICAgICBzdHJ1Y3QgZG1hX2ZlbmNlX2NiICpkYXRhKQo+ICt7 Cj4gKwlzdHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2IgKmNiID0gY29udGFpbmVyX29mKGRhdGEs IHR5cGVvZigqY2IpLCBiYXNlKTsKPiArCj4gKwlpOTE1X3N3X2ZlbmNlX2NvbXBsZXRlKGNiLT5m ZW5jZSk7Cj4gK30KPiArCj4gK2ludCBfX2k5MTVfc3dfZmVuY2VfYXdhaXRfZG1hX2ZlbmNlKHN0 cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiArCQkJCSAgICBzdHJ1Y3QgZG1hX2ZlbmNlICpk bWEsCj4gKwkJCQkgICAgc3RydWN0IGk5MTVfc3dfZG1hX2ZlbmNlX2NiICpjYikKPiArewo+ICsJ aW50IHJldDsKPiArCj4gKwlkZWJ1Z19mZW5jZV9hc3NlcnQoZmVuY2UpOwo+ICsKPiArCWlmIChk bWFfZmVuY2VfaXNfc2lnbmFsZWQoZG1hKSkKPiArCQlyZXR1cm4gMDsKPiArCj4gKwljYi0+ZmVu Y2UgPSBmZW5jZTsKPiArCWk5MTVfc3dfZmVuY2VfYXdhaXQoZmVuY2UpOwo+ICsKPiArCXJldCA9 IGRtYV9mZW5jZV9hZGRfY2FsbGJhY2soZG1hLCAmY2ItPmJhc2UsIF9fZG1hX2k5MTVfc3dfZmVu Y2Vfd2FrZSk7Cj4gKwlpZiAocmV0ID09IDApIHsKPiArCQlyZXQgPSAxOwo+ICsJfSBlbHNlIHsK PiArCQlpOTE1X3N3X2ZlbmNlX2NvbXBsZXRlKGZlbmNlKTsKPiArCQlpZiAocmV0ID09IC1FTk9F TlQpIC8qIGZlbmNlIGFscmVhZHkgc2lnbmFsZWQgKi8KPiArCQkJcmV0ID0gMDsKPiArCX0KPiAr Cj4gKwlyZXR1cm4gcmV0Owo+ICt9CgpBQ0FJQ1MgdGhlcmUgaXMgc2NvcGUgdG8gZXh0cmFjdCBj b21tb25hbGl0eSBiZXR3ZWVuIHRoaXMgYW5kIAppOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5j ZSBieSBwZXJoYXBzIGhhdmluZyBhIGNvbW1vbiBzdGF0aWMgZnVuY3Rpb24gCndoaWNoIHRha2Vz IHRoZSBfY2IgYW5kIGZ1bmMgcG9pbnRlcnMuIE9yIHNvbWV0aGluZyBsaWtlOgoKc3RhdGljIF9f aTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoLi4uLCAqY2IsICpmdW5jKQp7CgkuLi4KfQoK aTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoLi4pCnsKCS4uLiBhbGxvYyAuLgoKCV9faTkx NV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoLi4uLCBjYiwgaTkxNV9zd19mZW5jZV9hd2FpdCk7 CgoJLi4uCn0KCmk5MTVfc3dfZmVuY2VfYXdhaXRfZG1hX2ZlbmNlX2J1aWx0aW4oLi4uKQp7Cglf aTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVuY2UoLi4uLCAmZG1hLT5jYiwgX19kbWFfaTkxNV9z d19mZW5jZV93YWtlKTsKfQoKVGhvdWdodHM/CgpSZWdhcmRzLAoKVHZydGtvCgo+ICsKPiAgIGlu dCBpOTE1X3N3X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpm ZW5jZSwKPiAgIAkJCQkgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKPiAgIAkJ CQkgICAgY29uc3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgKmV4Y2x1ZGUsCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuaCBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc3dfZmVuY2UuaAo+IGluZGV4IGZlMmVmNGRhZGZjNi4uOTE0YTczNGQ0OWJjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuaAo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3dfZmVuY2UuaAo+IEBAIC0xMCwxNCArMTAsMTMg QEAKPiAgICNpZm5kZWYgX0k5MTVfU1dfRkVOQ0VfSF8KPiAgICNkZWZpbmUgX0k5MTVfU1dfRkVO Q0VfSF8KPiAgIAo+ICsjaW5jbHVkZSA8bGludXgvZG1hLWZlbmNlLmg+Cj4gICAjaW5jbHVkZSA8 bGludXgvZ2ZwLmg+Cj4gICAjaW5jbHVkZSA8bGludXgva3JlZi5oPgo+ICAgI2luY2x1ZGUgPGxp bnV4L25vdGlmaWVyLmg+IC8qIGZvciBOT1RJRllfRE9ORSAqLwo+ICAgI2luY2x1ZGUgPGxpbnV4 L3dhaXQuaD4KPiAgIAo+ICAgc3RydWN0IGNvbXBsZXRpb247Cj4gLXN0cnVjdCBkbWFfZmVuY2U7 Cj4gLXN0cnVjdCBkbWFfZmVuY2Vfb3BzOwo+ICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdDsK PiAgIAo+ICAgc3RydWN0IGk5MTVfc3dfZmVuY2Ugewo+IEBAIC02OSwxMCArNjgsMjAgQEAgaW50 IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2Uoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNl LAo+ICAgaW50IGk5MTVfc3dfZmVuY2VfYXdhaXRfc3dfZmVuY2VfZ2ZwKHN0cnVjdCBpOTE1X3N3 X2ZlbmNlICpmZW5jZSwKPiAgIAkJCQkgICAgIHN0cnVjdCBpOTE1X3N3X2ZlbmNlICphZnRlciwK PiAgIAkJCQkgICAgIGdmcF90IGdmcCk7Cj4gKwo+ICtzdHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2Vf Y2Igewo+ICsJc3RydWN0IGRtYV9mZW5jZV9jYiBiYXNlOwo+ICsJc3RydWN0IGk5MTVfc3dfZmVu Y2UgKmZlbmNlOwo+ICt9Owo+ICsKPiAraW50IF9faTkxNV9zd19mZW5jZV9hd2FpdF9kbWFfZmVu Y2Uoc3RydWN0IGk5MTVfc3dfZmVuY2UgKmZlbmNlLAo+ICsJCQkJICAgIHN0cnVjdCBkbWFfZmVu Y2UgKmRtYSwKPiArCQkJCSAgICBzdHJ1Y3QgaTkxNV9zd19kbWFfZmVuY2VfY2IgKmNiKTsKPiAg IGludCBpOTE1X3N3X2ZlbmNlX2F3YWl0X2RtYV9mZW5jZShzdHJ1Y3QgaTkxNV9zd19mZW5jZSAq ZmVuY2UsCj4gICAJCQkJICBzdHJ1Y3QgZG1hX2ZlbmNlICpkbWEsCj4gICAJCQkJICB1bnNpZ25l ZCBsb25nIHRpbWVvdXQsCj4gICAJCQkJICBnZnBfdCBnZnApOwo+ICsKPiAgIGludCBpOTE1X3N3 X2ZlbmNlX2F3YWl0X3Jlc2VydmF0aW9uKHN0cnVjdCBpOTE1X3N3X2ZlbmNlICpmZW5jZSwKPiAg IAkJCQkgICAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdCAqcmVzdiwKPiAgIAkJCQkgICAgY29u c3Qgc3RydWN0IGRtYV9mZW5jZV9vcHMgKmV4Y2x1ZGUsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJj LmMKPiBpbmRleCA3NGJlOWE0OWVmOWUuLjQ4YTJiY2E3ZmVjMyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2xyYy5jCj4gQEAgLTI2MjYsNyArMjYyNiwxMCBAQCBzdGF0aWMgaW50IGV4ZWNsaXN0 c19jb250ZXh0X2RlZmVycmVkX2FsbG9jKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4g ICAJCWdvdG8gZXJyb3JfZGVyZWZfb2JqOwo+ICAgCX0KPiAgIAo+IC0JdGltZWxpbmUgPSBpOTE1 X3RpbWVsaW5lX2NyZWF0ZShjdHgtPmk5MTUsIGN0eC0+bmFtZSk7Cj4gKwlpZiAoY3R4LT50aW1l bGluZSkKPiArCQl0aW1lbGluZSA9IGk5MTVfdGltZWxpbmVfZ2V0KGN0eC0+dGltZWxpbmUpOwo+ ICsJZWxzZQo+ICsJCXRpbWVsaW5lID0gaTkxNV90aW1lbGluZV9jcmVhdGUoY3R4LT5pOTE1LCBj dHgtPm5hbWUpOwo+ICAgCWlmIChJU19FUlIodGltZWxpbmUpKSB7Cj4gICAJCXJldCA9IFBUUl9F UlIodGltZWxpbmUpOwo+ICAgCQlnb3RvIGVycm9yX2RlcmVmX29iajsKPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o Cj4gaW5kZXggZGMxYzUyZjk1Y2FiLi5hZGI5ZmVkODZlZjcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCj4gKysrIGIvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5o Cj4gQEAgLTE0MzMsNyArMTQzMyw4IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVh dGVfdjIgewo+ICAgCS8qICBvdXRwdXQ6IGlkIG9mIG5ldyBjb250ZXh0Ki8KPiAgIAlfX3UzMiBj dHhfaWQ7Cj4gICAJX191MzIgZmxhZ3M7Cj4gLSNkZWZpbmUgSTkxNV9HRU1fQ09OVEVYVF9TSEFS RV9HVFQgMHgxCj4gKyNkZWZpbmUgSTkxNV9HRU1fQ09OVEVYVF9TSEFSRV9HVFQJCTB4MQo+ICsj ZGVmaW5lIEk5MTVfR0VNX0NPTlRFWFRfU0lOR0xFX1RJTUVMSU5FCTB4Mgo+ICAgCV9fdTMyIHNo YXJlX2N0eDsKPiAgIAlfX3UzMiBwYWQ7Cj4gICB9Owo+IApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9pbnRlbC1nZngK