From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/2] drm/i915: Unwind incomplete legacy context switches Date: Tue, 21 Nov 2017 18:25:23 +0200 Message-ID: <87tvxn4n0s.fsf@gaia.fi.intel.com> References: <20171121093321.28071-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 240406E48A for ; Tue, 21 Nov 2017 16:25:27 +0000 (UTC) In-Reply-To: <20171121093321.28071-1-chris@chris-wilson.co.uk> 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 Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gVGhlIGxl Z2FjeSBjb250ZXh0IHN3aXRjaCBmb3IgcmluZ2J1ZmZlciBzdWJtaXNzaW9uIGlzIG11bHRpc3Rh Z2VkLAo+IHdoZXJlIGVhY2ggb2YgdGhvc2Ugc3RhZ2VzIG1heSBmYWlsLiBIb3dldmVyLCB3ZSB3 ZXJlIHVwZGF0aW5nIGdsb2JhbAo+IHN0YXRlIGFmdGVyIHNvbWUgc3RhZ2VzLCBhbmQgc28gd2Ug aGFkIHRvIGZvcmNlIHRoZSBpbmNvbXBsZXRlIHJlcXVlc3QKPiB0byBiZSBzdWJtaXR0ZWQgYmVj YXVzZSB3ZSBjb3VsZCBub3QgdW53aW5kLiBTYXZlIHRoZSBnbG9iYWwgc3RhdGUKPiBiZWZvcmUg cGVyZm9ybWluZyB0aGUgc3dpdGNoZXMsIGFuZCBzbyBlbmFibGUgdXMgdG8gdW53aW5kIGJhY2sg dG8gdGhlCj4gcHJldmlvdXMgZ2xvYmFsIHN0YXRlIHNob3VsZCBhbnkgcGhhc2UgZmFpbC4gV2Ug dGhlbiBtdXN0IGNhbmNlbCB0aGUKPiByZXF1ZXN0IGluc3RlYWQgb2Ygc3VibWl0dGluZyBpdCBz aG91bGQgdGhlIGNvbnN0cnVjdGlvbiBmYWlsLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2ls c29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eu a3VvcHBhbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgfCAxNjggKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIHwgIDE4ICsrLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAxICsKPiAgNCBmaWxlcyBjaGFu Z2VkLCA2MiBpbnNlcnRpb25zKCspLCAxMjYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggNmNhNTZlNDgyZDc5Li5mNjNiZWMwOGNj ODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gQEAgLTUw Nyw2ICs1MDcsNyBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2xvc3Qoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGRldl9w cml2LCBpZCkgewo+ICAJCWVuZ2luZS0+bGVnYWN5X2FjdGl2ZV9jb250ZXh0ID0gTlVMTDsKPiAr CQllbmdpbmUtPmxlZ2FjeV9hY3RpdmVfcHBndHQgPSBOVUxMOwo+ICAKPiAgCQlpZiAoIWVuZ2lu ZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQpCj4gIAkJCWNvbnRpbnVlOwo+IEBAIC02ODEsNjggKzY4 Miw0OCBAQCBzdGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxLCBpbnQgc2xpY2UpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGlubGluZSBi b29sIHNraXBfcmNzX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4gLQkJCQkg ICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCQkgICBzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqdG8pCj4gLXsKPiAtCWlmICh0by0+cmVtYXBfc2xpY2UpCj4gLQkJcmV0dXJu IGZhbHNlOwo+IC0KPiAtCWlmIChwcGd0dCAmJiAoaW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKSAm IHBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCXJldHVy biB0byA9PSBlbmdpbmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dDsKPiAtfQo+IC0KPiAtc3RhdGlj IGJvb2wKPiAtbmVlZHNfcGRfbG9hZF9wcmUoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0LCBz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpmcm9tID0gZW5naW5lLT5sZWdhY3lfYWN0aXZlX2NvbnRleHQ7Cj4gLQo+IC0JaWYg KCFwcGd0dCkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+IC0JLyogQWx3YXlzIGxvYWQgdGhlIHBw Z3R0IG9uIGZpcnN0IHVzZSAqLwo+IC0JaWYgKCFmcm9tKQo+IC0JCXJldHVybiB0cnVlOwo+IC0K PiAtCS8qIFNhbWUgY29udGV4dCB3aXRob3V0IG5ldyBlbnRyaWVzLCBza2lwICovCj4gLQlpZiAo KCFmcm9tLT5wcGd0dCB8fCBmcm9tLT5wcGd0dCA9PSBwcGd0dCkgJiYKPiAtCSAgICAhKGludGVs X2VuZ2luZV9mbGFnKGVuZ2luZSkgJiBwcGd0dC0+cGRfZGlydHlfcmluZ3MpKQo+IC0JCXJldHVy biBmYWxzZTsKPiAtCj4gLQlpZiAoZW5naW5lLT5pZCAhPSBSQ1MpCj4gLQkJcmV0dXJuIHRydWU7 Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZG9fcmNzX3N3aXRj aChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiArLyoqCj4gKyAqIGk5MTVfc3dp dGNoX2NvbnRleHQoKSAtIHBlcmZvcm0gYSBHUFUgY29udGV4dCBzd2l0Y2guCj4gKyAqIEBycTog cmVxdWVzdCBmb3Igd2hpY2ggd2UnbGwgZXhlY3V0ZSB0aGUgY29udGV4dCBzd2l0Y2gKPiArICoK PiArICogVGhlIGNvbnRleHQgbGlmZSBjeWNsZSBpcyBzaW1wbGUuIFRoZSBjb250ZXh0IHJlZmNv dW50IGlzIGluY3JlbWVudGVkIGFuZAo+ICsgKiBkZWNyZW1lbnRlZCBieSAxIGFuZCBjcmVhdGUg YW5kIGRlc3Ryb3kuIElmIHRoZSBjb250ZXh0IGlzIGluIHVzZSBieSB0aGUgR1BVLAoKcy9hbmQv b24KCj4gKyAqIGl0IHdpbGwgaGF2ZSBhIHJlZmNvdW50ID4gMS4gVGhpcyBhbGxvd3MgdXMgdG8g ZGVzdHJveSB0aGUgY29udGV4dCBhYnN0cmFjdAo+ICsgKiBvYmplY3Qgd2hpbGUgbGV0dGluZyB0 aGUgbm9ybWFsIG9iamVjdCB0cmFja2luZyBkZXN0cm95IHRoZSBiYWNraW5nIEJPLgo+ICsgKgo+ ICsgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBub3QgYmUgdXNlZCBpbiBleGVjbGlzdHMgbW9kZS4g IEluc3RlYWQgdGhlIGNvbnRleHQgaXMKPiArICogc3dpdGNoZWQgYnkgd3JpdGluZyB0byB0aGUg RUxTUCBhbmQgcmVxdWVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVpcgo+ICsgKiBjb250ZXh0 Lgo+ICsgKi8KPiAraW50IGk5MTVfc3dpdGNoX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0ICpycSkKPiAgewo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnRvID0gcmVxLT5j dHg7Cj4gLQlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiAt CXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IHRvLT5wcGd0dCA/OiByZXEtPmk5MTUtPm1t LmFsaWFzaW5nX3BwZ3R0Owo+IC0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmZyb20gPSBlbmdp bmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dDsKPiAtCXUzMiBod19mbGFnczsKPiArCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqdG8gPSBycS0+Y3R4Owo+ICsJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0ID0g dG8tPnBwZ3R0ID86IHJxLT5pOTE1LT5tbS5hbGlhc2luZ19wcGd0dDsKPiArCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpzYXZlZF9jdHggPSBlbmdpbmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dDsK PiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpzYXZlZF9tbSA9IGVuZ2luZS0+bGVnYWN5X2FjdGl2 ZV9wcGd0dDsKCnNhdmVkIGFzIGluIGNvbnRleHQgb2YgdGhpcyBmdW5jdGlvbiBvciBzYXZlZCBh cyBpbiBzYXZlZCBieSBoYXJkd2FyZT8KSnVzdCB0cnlpbmcgdG8gZ2V0IGJlaGluZCB0aGUgbmFt aW5nIGhlcmUuCgpJIGFtIG5vdCBpbiBib3R0b20gb2YgdGhpcyBwYXRjaCB5ZXQgYnV0IGF0IHRo aXMgcG9pbnQsCgpuZXdfW21tfGN0eF0gYW5kIGN1cnJlbnRbbW18Y3R4XSBmZWVsIG1vcmUgbmF0 dXJhbC4KCj4gKwl1MzIgaHdfZmxhZ3MgPSAwOwo+ICAJaW50IHJldCwgaTsKPiAgCj4gLQlHRU1f QlVHX09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKPiAtCj4gLQlpZiAoc2tpcF9yY3Nfc3dpdGNoKHBw Z3R0LCBlbmdpbmUsIHRvKSkKPiAtCQlyZXR1cm4gMDsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JnJxLT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCUdFTV9CVUdfT04oSEFTX0VYRUNMSVNU UyhycS0+aTkxNSkpOwo+ICAKPiAtCWlmIChuZWVkc19wZF9sb2FkX3ByZShwcGd0dCwgZW5naW5l KSkgewo+IC0JCS8qIE9sZGVyIEdFTnMgYW5kIG5vbiByZW5kZXIgcmluZ3Mgc3RpbGwgd2FudCB0 aGUgbG9hZCBmaXJzdCwKPiAtCQkgKiAiUFBfRENMViBmb2xsb3dlZCBieSBQUF9ESVJfQkFTRSBy ZWdpc3RlciB0aHJvdWdoIExvYWQKPiAtCQkgKiBSZWdpc3RlciBJbW1lZGlhdGUgY29tbWFuZHMg aW4gUmluZyBCdWZmZXIgYmVmb3JlIHN1Ym1pdHRpbmcKPiAtCQkgKiBhIGNvbnRleHQuIiovCj4g KwlpZiAocHBndHQgIT0gc2F2ZWRfbW0gfHwKPiArCSAgICAocHBndHQgJiYgaW50ZWxfZW5naW5l X2ZsYWcoZW5naW5lKSAmIHBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpIHsKPiAgCQl0cmFjZV9zd2l0 Y2hfbW0oZW5naW5lLCB0byk7Cj4gLQkJcmV0ID0gcHBndHQtPnN3aXRjaF9tbShwcGd0dCwgcmVx KTsKPiArCQlyZXQgPSBwcGd0dC0+c3dpdGNoX21tKHBwZ3R0LCBycSk7Cj4gIAkJaWYgKHJldCkK PiAtCQkJcmV0dXJuIHJldDsKPiArCQkJZ290byBlcnI7Cj4gKwo+ICsJCXBwZ3R0LT5wZF9kaXJ0 eV9yaW5ncyAmPSB+aW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiArCQllbmdpbmUtPmxlZ2Fj eV9hY3RpdmVfcHBndHQgPSBwcGd0dDsKPiArCQlod19mbGFncyA9IE1JX0ZPUkNFX1JFU1RPUkU7 Cj4gIAl9Cj4gIAo+IC0JaWYgKGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKHRvKSkKPiArCWlm ICh0by0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlICYmCj4gKwkgICAgKHRvICE9IHNhdmVkX2N0 eCB8fCBod19mbGFncyAmIE1JX0ZPUkNFX1JFU1RPUkUpKSB7Cj4gKwkJR0VNX0JVR19PTihlbmdp bmUtPmlkICE9IFJDUyk7Cj4gKwo+ICAJCS8qCj4gIAkJICogVGhlIGtlcm5lbCBjb250ZXh0KHMp IGlzIHRyZWF0ZWQgYXMgcHVyZSBzY3JhdGNoIGFuZCBpcyBub3QKPiAgCQkgKiBleHBlY3RlZCB0 byByZXRhaW4gYW55IHN0YXRlIChhcyB3ZSBzYWNyaWZpY2UgaXQgZHVyaW5nCj4gQEAgLTc1MCw3 OCArNzMxLDM3IEBAIHN0YXRpYyBpbnQgZG9fcmNzX3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3JlcXVlc3QgKnJlcSkKPiAgCQkgKiBhcyBub3RoaW5nIGFjdHVhbGx5IGV4ZWN1dGVzIHVzaW5n IHRoZSBrZXJuZWwgY29udGV4dDsgaXQKPiAgCQkgKiBpcyBwdXJlbHkgdXNlZCBmb3IgZmx1c2hp bmcgdXNlciBjb250ZXh0cy4KPiAgCQkgKi8KPiAtCQlod19mbGFncyA9IE1JX1JFU1RPUkVfSU5I SUJJVDsKPiAtCWVsc2UgaWYgKHBwZ3R0ICYmIGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSkgJiBw cGd0dC0+cGRfZGlydHlfcmluZ3MpCj4gLQkJaHdfZmxhZ3MgPSBNSV9GT1JDRV9SRVNUT1JFOwo+ IC0JZWxzZQo+IC0JCWh3X2ZsYWdzID0gMDsKPiArCQlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19r ZXJuZWwodG8pKQo+ICsJCQlod19mbGFncyA9IE1JX1JFU1RPUkVfSU5ISUJJVDsKPiAgCj4gLQlp ZiAodG8gIT0gZnJvbSB8fCAoaHdfZmxhZ3MgJiBNSV9GT1JDRV9SRVNUT1JFKSkgewo+IC0JCXJl dCA9IG1pX3NldF9jb250ZXh0KHJlcSwgaHdfZmxhZ3MpOwo+ICsJCXJldCA9IG1pX3NldF9jb250 ZXh0KHJxLCBod19mbGFncyk7Cj4gIAkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiArCQkJ Z290byBlcnJfbW07Cj4gIAo+ICAJCWVuZ2luZS0+bGVnYWN5X2FjdGl2ZV9jb250ZXh0ID0gdG87 Cj4gIAl9Cj4gIAo+IC0JaWYgKHBwZ3R0KQo+IC0JCXBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAmPSB+ aW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0wz X1NMSUNFUzsgaSsrKSB7Cj4gLQkJaWYgKCEodG8tPnJlbWFwX3NsaWNlICYgKDE8PGkpKSkKPiAt CQkJY29udGludWU7Cj4gLQo+IC0JCXJldCA9IHJlbWFwX2wzKHJlcSwgaSk7Cj4gLQkJaWYgKHJl dCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCj4gLQkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8aSk7 Cj4gLQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpOTE1X3N3aXRj aF9jb250ZXh0KCkgLSBwZXJmb3JtIGEgR1BVIGNvbnRleHQgc3dpdGNoLgo+IC0gKiBAcmVxOiBy ZXF1ZXN0IGZvciB3aGljaCB3ZSdsbCBleGVjdXRlIHRoZSBjb250ZXh0IHN3aXRjaAo+IC0gKgo+ IC0gKiBUaGUgY29udGV4dCBsaWZlIGN5Y2xlIGlzIHNpbXBsZS4gVGhlIGNvbnRleHQgcmVmY291 bnQgaXMgaW5jcmVtZW50ZWQgYW5kCj4gLSAqIGRlY3JlbWVudGVkIGJ5IDEgYW5kIGNyZWF0ZSBh bmQgZGVzdHJveS4gSWYgdGhlIGNvbnRleHQgaXMgaW4gdXNlIGJ5IHRoZSBHUFUsCj4gLSAqIGl0 IHdpbGwgaGF2ZSBhIHJlZmNvdW50ID4gMS4gVGhpcyBhbGxvd3MgdXMgdG8gZGVzdHJveSB0aGUg Y29udGV4dCBhYnN0cmFjdAo+IC0gKiBvYmplY3Qgd2hpbGUgbGV0dGluZyB0aGUgbm9ybWFsIG9i amVjdCB0cmFja2luZyBkZXN0cm95IHRoZSBiYWNraW5nIEJPLgo+IC0gKgo+IC0gKiBUaGlzIGZ1 bmN0aW9uIHNob3VsZCBub3QgYmUgdXNlZCBpbiBleGVjbGlzdHMgbW9kZS4gIEluc3RlYWQgdGhl IGNvbnRleHQgaXMKPiAtICogc3dpdGNoZWQgYnkgd3JpdGluZyB0byB0aGUgRUxTUCBhbmQgcmVx dWVzdHMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVpcgo+IC0gKiBjb250ZXh0Lgo+IC0gKi8KPiAt aW50IGk5MTVfc3dpdGNoX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp Cj4gLXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+ IC0KPiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 Cj4gLQlHRU1fQlVHX09OKEhBU19FWEVDTElTVFMocmVxLT5pOTE1KSk7Cj4gKwlpZiAodG8tPnJl bWFwX3NsaWNlKSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IE1BWF9MM19TTElDRVM7IGkrKykgewo+ ICsJCQlpZiAoISh0by0+cmVtYXBfc2xpY2UgJiBCSVQoaSkpKQo+ICsJCQkJY29udGludWU7Cj4g IAo+IC0JaWYgKCFyZXEtPmN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlKSB7Cj4gLQkJc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKnRvID0gcmVxLT5jdHg7Cj4gLQkJc3RydWN0IGk5MTVfaHdf cHBndHQgKnBwZ3R0ID0KPiAtCQkJdG8tPnBwZ3R0ID86IHJlcS0+aTkxNS0+bW0uYWxpYXNpbmdf cHBndHQ7Cj4gLQo+IC0JCWlmIChuZWVkc19wZF9sb2FkX3ByZShwcGd0dCwgZW5naW5lKSkgewo+ IC0JCQlpbnQgcmV0Owo+IC0KPiAtCQkJdHJhY2Vfc3dpdGNoX21tKGVuZ2luZSwgdG8pOwo+IC0J CQlyZXQgPSBwcGd0dC0+c3dpdGNoX21tKHBwZ3R0LCByZXEpOwo+ICsJCQlyZXQgPSByZW1hcF9s MyhycSwgaSk7Cj4gIAkJCWlmIChyZXQpCj4gLQkJCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQkJcHBn dHQtPnBkX2RpcnR5X3JpbmdzICY9IH5pbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOwo+ICsJCQkJ Z290byBlcnJfY3R4Owo+ICAJCX0KPiAgCj4gLQkJZW5naW5lLT5sZWdhY3lfYWN0aXZlX2NvbnRl eHQgPSB0bzsKPiAtCQlyZXR1cm4gMDsKPiArCQl0by0+cmVtYXBfc2xpY2UgPSAwOwoKQmVjYXVz ZSB3ZSBoYXZlIHVud2luZCB3ZSBjYW4ganVzdCByZW1hcCBhZ2FpbiBldmVyeXRoaW5nIGlmIGVy cm9yCmhhcHBlbnM/CgotTWlrYQoKPiAgCX0KPiAgCj4gLQlyZXR1cm4gZG9fcmNzX3N3aXRjaChy ZXEpOwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtlcnJfY3R4Ogo+ICsJZW5naW5lLT5sZWdhY3lfYWN0 aXZlX2NvbnRleHQgPSBzYXZlZF9jdHg7Cj4gK2Vycl9tbToKPiArCWVuZ2luZS0+bGVnYWN5X2Fj dGl2ZV9wcGd0dCA9IHNhdmVkX21tOwo+ICtlcnI6Cj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ ICBzdGF0aWMgYm9vbCBlbmdpbmVfaGFzX2lkbGVfa2VybmVsX2NvbnRleHQoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9yZXF1ZXN0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0 LmMKPiBpbmRleCA4NmUyMzQ2MzU3Y2YuLjI3NDllNDczNTU2MyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9yZXF1ZXN0LmMKPiBAQCAtNzE4LDI1ICs3MTgsMTkgQEAgaTkxNV9n ZW1fcmVxdWVzdF9hbGxvYyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkvKiBV bmNvbmRpdGlvbmFsbHkgaW52YWxpZGF0ZSBHUFUgY2FjaGVzIGFuZCBUTEJzLiAqLwo+ICAJcmV0 ID0gZW5naW5lLT5lbWl0X2ZsdXNoKHJlcSwgRU1JVF9JTlZBTElEQVRFKTsKPiAgCWlmIChyZXQp Cj4gLQkJZ290byBlcnJfY3R4Owo+ICsJCWdvdG8gZXJyX3Vud2luZDsKPiAgCj4gIAlyZXQgPSBl bmdpbmUtPnJlcXVlc3RfYWxsb2MocmVxKTsKPiAtCWlmIChyZXQpIHsKPiAtCQkvKgo+IC0JCSAq IFBhc3QgdGhlIHBvaW50LW9mLW5vLXJldHVybi4gU2luY2Ugd2UgbWF5IGhhdmUgdXBkYXRlZAo+ IC0JCSAqIGdsb2JhbCBzdGF0ZSBhZnRlciBwYXJ0aWFsbHkgY29tcGxldGluZyB0aGUgcmVxdWVz dCBhbGxvYywKPiAtCQkgKiB3ZSBuZWVkIHRvIGNvbW1pdCBhbnkgY29tbWFuZHMgc28gZmFyIGVt aXR0ZWQgaW4gdGhlCj4gLQkJICogcmVxdWVzdCB0byB0aGUgSFcuCj4gLQkJICovCj4gLQkJX19p OTE1X2FkZF9yZXF1ZXN0KHJlcSwgZmFsc2UpOwo+IC0JCXJldHVybiBFUlJfUFRSKHJldCk7Cj4g LQl9Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3Vud2luZDsKPiAgCj4gIAkvKiBDaGVjayB0 aGF0IHdlIGRpZG4ndCBpbnRlcnJ1cHQgb3Vyc2VsdmVzIHdpdGggYSBuZXcgcmVxdWVzdCAqLwo+ ICAJR0VNX0JVR19PTihyZXEtPnRpbWVsaW5lLT5zZXFubyAhPSByZXEtPmZlbmNlLnNlcW5vKTsK PiAgCXJldHVybiByZXE7Cj4gIAo+IC1lcnJfY3R4Ogo+ICtlcnJfdW53aW5kOgo+ICsJcmVxLT5y aW5nLT5lbWl0ID0gcmVxLT5oZWFkOwo+ICsKPiAgCS8qIE1ha2Ugc3VyZSB3ZSBkaWRuJ3QgYWRk IG91cnNlbHZlcyB0byBleHRlcm5hbCBzdGF0ZSBiZWZvcmUgZnJlZWluZyAqLwo+ICAJR0VNX0JV R19PTighbGlzdF9lbXB0eSgmcmVxLT5hY3RpdmVfbGlzdCkpOwo+ICAJR0VNX0JVR19PTighbGlz dF9lbXB0eSgmcmVxLT5wcmlvdHJlZS5zaWduYWxlcnNfbGlzdCkpOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBpbmRleCBiZmExMWE4NGU0NzYuLmE5MDRiMDM1M2Jl YyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmMKPiBAQCAtNTkx LDYgKzU5MSw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0X3JpbmdfY29tbW9uKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKPiAgCQkJcmVxdWVzdC0+cmluZy0+aGVhZCA9IHJlcXVlc3QtPnBv c3RmaXg7Cj4gIAl9IGVsc2Ugewo+ICAJCWVuZ2luZS0+bGVnYWN5X2FjdGl2ZV9jb250ZXh0ID0g TlVMTDsKPiArCQllbmdpbmUtPmxlZ2FjeV9hY3RpdmVfcHBndHQgPSBOVUxMOwo+ICAJfQo+ICB9 Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVyLmgKPiBpbmRleCBkMTZl MzJhZGYxOWEuLmNiYzljMzZmNjc1ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9yaW5nYnVmZmVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmgKPiBAQCAtNDk0LDYgKzQ5NCw3IEBAIHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg ewo+ICAJICogc3RyZWFtIChyaW5nKS4KPiAgCSAqLwo+ICAJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmxlZ2FjeV9hY3RpdmVfY29udGV4dDsKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpsZWdh Y3lfYWN0aXZlX3BwZ3R0Owo+ICAKPiAgCS8qIHN0YXR1c19ub3RpZmllcjogbGlzdCBvZiBjYWxs YmFja3MgZm9yIGNvbnRleHQtc3dpdGNoIGNoYW5nZXMgKi8KPiAgCXN0cnVjdCBhdG9taWNfbm90 aWZpZXJfaGVhZCBjb250ZXh0X3N0YXR1c19ub3RpZmllcjsKPiAtLSAKPiAyLjE1LjAKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxp bmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==