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: Thu, 23 Nov 2017 15:48:34 +0200 Message-ID: <87zi7drtql.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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id C80556E7BB for ; Thu, 23 Nov 2017 13:48:36 +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 a3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKQXBhcnQgZnJvbSB0aGUgbmFtaW5nIGFuZCB0aGUg c2luZ2xlIHR5cG8sIGl0IHNlZW1zCnRvIGRvIHdoYXQgaXQgYWR2ZXJ0aXplcyBhbmQgY2xlYW5z IHVwIHRoZSBsb2dpYwpjb25zaWRlcmFibHkuCgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8 bWlrYS5rdW9wcGFsYUBsaW51eC5pbnRlbC5jb20+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9jb250ZXh0LmMgfCAxNjggKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fcmVxdWVzdC5jIHwgIDE4ICsr LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIHwgICAxICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5oIHwgICAxICsKPiAgNCBmaWxl cyBjaGFuZ2VkLCA2MiBpbnNlcnRpb25zKCspLCAxMjYgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4gaW5kZXggNmNhNTZlNDgyZDc5Li5mNjNi ZWMwOGNjODUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCj4g QEAgLTUwNyw2ICs1MDcsNyBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2xvc3Qoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUs IGRldl9wcml2LCBpZCkgewo+ICAJCWVuZ2luZS0+bGVnYWN5X2FjdGl2ZV9jb250ZXh0ID0gTlVM TDsKPiArCQllbmdpbmUtPmxlZ2FjeV9hY3RpdmVfcHBndHQgPSBOVUxMOwo+ICAKPiAgCQlpZiAo IWVuZ2luZS0+bGFzdF9yZXRpcmVkX2NvbnRleHQpCj4gIAkJCWNvbnRpbnVlOwo+IEBAIC02ODEs NjggKzY4Miw0OCBAQCBzdGF0aWMgaW50IHJlbWFwX2wzKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxLCBpbnQgc2xpY2UpCj4gIAlyZXR1cm4gMDsKPiAgfQo+ICAKPiAtc3RhdGljIGlu bGluZSBib29sIHNraXBfcmNzX3N3aXRjaChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsCj4g LQkJCQkgICBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gLQkJCQkgICBzdHJ1Y3Qg aTkxNV9nZW1fY29udGV4dCAqdG8pCj4gLXsKPiAtCWlmICh0by0+cmVtYXBfc2xpY2UpCj4gLQkJ cmV0dXJuIGZhbHNlOwo+IC0KPiAtCWlmIChwcGd0dCAmJiAoaW50ZWxfZW5naW5lX2ZsYWcoZW5n aW5lKSAmIHBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAt CXJldHVybiB0byA9PSBlbmdpbmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dDsKPiAtfQo+IC0KPiAt c3RhdGljIGJvb2wKPiAtbmVlZHNfcGRfbG9hZF9wcmUoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LCBzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gLXsKPiAtCXN0cnVjdCBpOTE1 X2dlbV9jb250ZXh0ICpmcm9tID0gZW5naW5lLT5sZWdhY3lfYWN0aXZlX2NvbnRleHQ7Cj4gLQo+ IC0JaWYgKCFwcGd0dCkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+IC0JLyogQWx3YXlzIGxvYWQg dGhlIHBwZ3R0IG9uIGZpcnN0IHVzZSAqLwo+IC0JaWYgKCFmcm9tKQo+IC0JCXJldHVybiB0cnVl Owo+IC0KPiAtCS8qIFNhbWUgY29udGV4dCB3aXRob3V0IG5ldyBlbnRyaWVzLCBza2lwICovCj4g LQlpZiAoKCFmcm9tLT5wcGd0dCB8fCBmcm9tLT5wcGd0dCA9PSBwcGd0dCkgJiYKPiAtCSAgICAh KGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSkgJiBwcGd0dC0+cGRfZGlydHlfcmluZ3MpKQo+IC0J CXJldHVybiBmYWxzZTsKPiAtCj4gLQlpZiAoZW5naW5lLT5pZCAhPSBSQ1MpCj4gLQkJcmV0dXJu IHRydWU7Cj4gLQo+IC0JcmV0dXJuIHRydWU7Cj4gLX0KPiAtCj4gLXN0YXRpYyBpbnQgZG9fcmNz X3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiArLyoqCj4gKyAqIGk5 MTVfc3dpdGNoX2NvbnRleHQoKSAtIHBlcmZvcm0gYSBHUFUgY29udGV4dCBzd2l0Y2guCj4gKyAq IEBycTogcmVxdWVzdCBmb3Igd2hpY2ggd2UnbGwgZXhlY3V0ZSB0aGUgY29udGV4dCBzd2l0Y2gK PiArICoKPiArICogVGhlIGNvbnRleHQgbGlmZSBjeWNsZSBpcyBzaW1wbGUuIFRoZSBjb250ZXh0 IHJlZmNvdW50IGlzIGluY3JlbWVudGVkIGFuZAo+ICsgKiBkZWNyZW1lbnRlZCBieSAxIGFuZCBj cmVhdGUgYW5kIGRlc3Ryb3kuIElmIHRoZSBjb250ZXh0IGlzIGluIHVzZSBieSB0aGUgR1BVLAo+ ICsgKiBpdCB3aWxsIGhhdmUgYSByZWZjb3VudCA+IDEuIFRoaXMgYWxsb3dzIHVzIHRvIGRlc3Ry b3kgdGhlIGNvbnRleHQgYWJzdHJhY3QKPiArICogb2JqZWN0IHdoaWxlIGxldHRpbmcgdGhlIG5v cm1hbCBvYmplY3QgdHJhY2tpbmcgZGVzdHJveSB0aGUgYmFja2luZyBCTy4KPiArICoKPiArICog VGhpcyBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHVzZWQgaW4gZXhlY2xpc3RzIG1vZGUuICBJbnN0 ZWFkIHRoZSBjb250ZXh0IGlzCj4gKyAqIHN3aXRjaGVkIGJ5IHdyaXRpbmcgdG8gdGhlIEVMU1Ag YW5kIHJlcXVlc3RzIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlaXIKPiArICogY29udGV4dC4KPiAr ICovCj4gK2ludCBpOTE1X3N3aXRjaF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVz dCAqcnEpCj4gIHsKPiAtCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICp0byA9IHJlcS0+Y3R4Owo+ IC0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lID0gcmVxLT5lbmdpbmU7Cj4gLQlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSB0by0+cHBndHQgPzogcmVxLT5pOTE1LT5tbS5hbGlh c2luZ19wcGd0dDsKPiAtCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpmcm9tID0gZW5naW5lLT5s ZWdhY3lfYWN0aXZlX2NvbnRleHQ7Cj4gLQl1MzIgaHdfZmxhZ3M7Cj4gKwlzdHJ1Y3QgaW50ZWxf ZW5naW5lX2NzICplbmdpbmUgPSBycS0+ZW5naW5lOwo+ICsJc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKnRvID0gcnEtPmN0eDsKPiArCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCA9IHRvLT5w cGd0dCA/OiBycS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqc2F2ZWRfY3R4ID0gZW5naW5lLT5sZWdhY3lfYWN0aXZlX2NvbnRleHQ7Cj4gKwlz dHJ1Y3QgaTkxNV9od19wcGd0dCAqc2F2ZWRfbW0gPSBlbmdpbmUtPmxlZ2FjeV9hY3RpdmVfcHBn dHQ7Cj4gKwl1MzIgaHdfZmxhZ3MgPSAwOwo+ICAJaW50IHJldCwgaTsKPiAgCj4gLQlHRU1fQlVH X09OKGVuZ2luZS0+aWQgIT0gUkNTKTsKPiAtCj4gLQlpZiAoc2tpcF9yY3Nfc3dpdGNoKHBwZ3R0 LCBlbmdpbmUsIHRvKSkKPiAtCQlyZXR1cm4gMDsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJx LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCUdFTV9CVUdfT04oSEFTX0VYRUNMSVNUUyhy cS0+aTkxNSkpOwo+ICAKPiAtCWlmIChuZWVkc19wZF9sb2FkX3ByZShwcGd0dCwgZW5naW5lKSkg ewo+IC0JCS8qIE9sZGVyIEdFTnMgYW5kIG5vbiByZW5kZXIgcmluZ3Mgc3RpbGwgd2FudCB0aGUg bG9hZCBmaXJzdCwKPiAtCQkgKiAiUFBfRENMViBmb2xsb3dlZCBieSBQUF9ESVJfQkFTRSByZWdp c3RlciB0aHJvdWdoIExvYWQKPiAtCQkgKiBSZWdpc3RlciBJbW1lZGlhdGUgY29tbWFuZHMgaW4g UmluZyBCdWZmZXIgYmVmb3JlIHN1Ym1pdHRpbmcKPiAtCQkgKiBhIGNvbnRleHQuIiovCj4gKwlp ZiAocHBndHQgIT0gc2F2ZWRfbW0gfHwKPiArCSAgICAocHBndHQgJiYgaW50ZWxfZW5naW5lX2Zs YWcoZW5naW5lKSAmIHBwZ3R0LT5wZF9kaXJ0eV9yaW5ncykpIHsKPiAgCQl0cmFjZV9zd2l0Y2hf bW0oZW5naW5lLCB0byk7Cj4gLQkJcmV0ID0gcHBndHQtPnN3aXRjaF9tbShwcGd0dCwgcmVxKTsK PiArCQlyZXQgPSBwcGd0dC0+c3dpdGNoX21tKHBwZ3R0LCBycSk7Cj4gIAkJaWYgKHJldCkKPiAt CQkJcmV0dXJuIHJldDsKPiArCQkJZ290byBlcnI7Cj4gKwo+ICsJCXBwZ3R0LT5wZF9kaXJ0eV9y aW5ncyAmPSB+aW50ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiArCQllbmdpbmUtPmxlZ2FjeV9h Y3RpdmVfcHBndHQgPSBwcGd0dDsKPiArCQlod19mbGFncyA9IE1JX0ZPUkNFX1JFU1RPUkU7Cj4g IAl9Cj4gIAo+IC0JaWYgKGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKHRvKSkKPiArCWlmICh0 by0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlICYmCj4gKwkgICAgKHRvICE9IHNhdmVkX2N0eCB8 fCBod19mbGFncyAmIE1JX0ZPUkNFX1JFU1RPUkUpKSB7Cj4gKwkJR0VNX0JVR19PTihlbmdpbmUt PmlkICE9IFJDUyk7Cj4gKwo+ICAJCS8qCj4gIAkJICogVGhlIGtlcm5lbCBjb250ZXh0KHMpIGlz IHRyZWF0ZWQgYXMgcHVyZSBzY3JhdGNoIGFuZCBpcyBub3QKPiAgCQkgKiBleHBlY3RlZCB0byBy ZXRhaW4gYW55IHN0YXRlIChhcyB3ZSBzYWNyaWZpY2UgaXQgZHVyaW5nCj4gQEAgLTc1MCw3OCAr NzMxLDM3IEBAIHN0YXRpYyBpbnQgZG9fcmNzX3N3aXRjaChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Jl cXVlc3QgKnJlcSkKPiAgCQkgKiBhcyBub3RoaW5nIGFjdHVhbGx5IGV4ZWN1dGVzIHVzaW5nIHRo ZSBrZXJuZWwgY29udGV4dDsgaXQKPiAgCQkgKiBpcyBwdXJlbHkgdXNlZCBmb3IgZmx1c2hpbmcg dXNlciBjb250ZXh0cy4KPiAgCQkgKi8KPiAtCQlod19mbGFncyA9IE1JX1JFU1RPUkVfSU5ISUJJ VDsKPiAtCWVsc2UgaWYgKHBwZ3R0ICYmIGludGVsX2VuZ2luZV9mbGFnKGVuZ2luZSkgJiBwcGd0 dC0+cGRfZGlydHlfcmluZ3MpCj4gLQkJaHdfZmxhZ3MgPSBNSV9GT1JDRV9SRVNUT1JFOwo+IC0J ZWxzZQo+IC0JCWh3X2ZsYWdzID0gMDsKPiArCQlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19rZXJu ZWwodG8pKQo+ICsJCQlod19mbGFncyA9IE1JX1JFU1RPUkVfSU5ISUJJVDsKPiAgCj4gLQlpZiAo dG8gIT0gZnJvbSB8fCAoaHdfZmxhZ3MgJiBNSV9GT1JDRV9SRVNUT1JFKSkgewo+IC0JCXJldCA9 IG1pX3NldF9jb250ZXh0KHJlcSwgaHdfZmxhZ3MpOwo+ICsJCXJldCA9IG1pX3NldF9jb250ZXh0 KHJxLCBod19mbGFncyk7Cj4gIAkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiArCQkJZ290 byBlcnJfbW07Cj4gIAo+ICAJCWVuZ2luZS0+bGVnYWN5X2FjdGl2ZV9jb250ZXh0ID0gdG87Cj4g IAl9Cj4gIAo+IC0JaWYgKHBwZ3R0KQo+IC0JCXBwZ3R0LT5wZF9kaXJ0eV9yaW5ncyAmPSB+aW50 ZWxfZW5naW5lX2ZsYWcoZW5naW5lKTsKPiAtCj4gLQlmb3IgKGkgPSAwOyBpIDwgTUFYX0wzX1NM SUNFUzsgaSsrKSB7Cj4gLQkJaWYgKCEodG8tPnJlbWFwX3NsaWNlICYgKDE8PGkpKSkKPiAtCQkJ Y29udGludWU7Cj4gLQo+IC0JCXJldCA9IHJlbWFwX2wzKHJlcSwgaSk7Cj4gLQkJaWYgKHJldCkK PiAtCQkJcmV0dXJuIHJldDsKPiAtCj4gLQkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8aSk7Cj4g LQl9Cj4gLQo+IC0JcmV0dXJuIDA7Cj4gLX0KPiAtCj4gLS8qKgo+IC0gKiBpOTE1X3N3aXRjaF9j b250ZXh0KCkgLSBwZXJmb3JtIGEgR1BVIGNvbnRleHQgc3dpdGNoLgo+IC0gKiBAcmVxOiByZXF1 ZXN0IGZvciB3aGljaCB3ZSdsbCBleGVjdXRlIHRoZSBjb250ZXh0IHN3aXRjaAo+IC0gKgo+IC0g KiBUaGUgY29udGV4dCBsaWZlIGN5Y2xlIGlzIHNpbXBsZS4gVGhlIGNvbnRleHQgcmVmY291bnQg aXMgaW5jcmVtZW50ZWQgYW5kCj4gLSAqIGRlY3JlbWVudGVkIGJ5IDEgYW5kIGNyZWF0ZSBhbmQg ZGVzdHJveS4gSWYgdGhlIGNvbnRleHQgaXMgaW4gdXNlIGJ5IHRoZSBHUFUsCj4gLSAqIGl0IHdp bGwgaGF2ZSBhIHJlZmNvdW50ID4gMS4gVGhpcyBhbGxvd3MgdXMgdG8gZGVzdHJveSB0aGUgY29u dGV4dCBhYnN0cmFjdAo+IC0gKiBvYmplY3Qgd2hpbGUgbGV0dGluZyB0aGUgbm9ybWFsIG9iamVj dCB0cmFja2luZyBkZXN0cm95IHRoZSBiYWNraW5nIEJPLgo+IC0gKgo+IC0gKiBUaGlzIGZ1bmN0 aW9uIHNob3VsZCBub3QgYmUgdXNlZCBpbiBleGVjbGlzdHMgbW9kZS4gIEluc3RlYWQgdGhlIGNv bnRleHQgaXMKPiAtICogc3dpdGNoZWQgYnkgd3JpdGluZyB0byB0aGUgRUxTUCBhbmQgcmVxdWVz dHMga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVpcgo+IC0gKiBjb250ZXh0Lgo+IC0gKi8KPiAtaW50 IGk5MTVfc3dpdGNoX2NvbnRleHQoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4g LXsKPiAtCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+IC0K PiAtCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJnJlcS0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4g LQlHRU1fQlVHX09OKEhBU19FWEVDTElTVFMocmVxLT5pOTE1KSk7Cj4gKwlpZiAodG8tPnJlbWFw X3NsaWNlKSB7Cj4gKwkJZm9yIChpID0gMDsgaSA8IE1BWF9MM19TTElDRVM7IGkrKykgewo+ICsJ CQlpZiAoISh0by0+cmVtYXBfc2xpY2UgJiBCSVQoaSkpKQo+ICsJCQkJY29udGludWU7Cj4gIAo+ IC0JaWYgKCFyZXEtPmN0eC0+ZW5naW5lW2VuZ2luZS0+aWRdLnN0YXRlKSB7Cj4gLQkJc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKnRvID0gcmVxLT5jdHg7Cj4gLQkJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0ID0KPiAtCQkJdG8tPnBwZ3R0ID86IHJlcS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBn dHQ7Cj4gLQo+IC0JCWlmIChuZWVkc19wZF9sb2FkX3ByZShwcGd0dCwgZW5naW5lKSkgewo+IC0J CQlpbnQgcmV0Owo+IC0KPiAtCQkJdHJhY2Vfc3dpdGNoX21tKGVuZ2luZSwgdG8pOwo+IC0JCQly ZXQgPSBwcGd0dC0+c3dpdGNoX21tKHBwZ3R0LCByZXEpOwo+ICsJCQlyZXQgPSByZW1hcF9sMyhy cSwgaSk7Cj4gIAkJCWlmIChyZXQpCj4gLQkJCQlyZXR1cm4gcmV0Owo+IC0KPiAtCQkJcHBndHQt PnBkX2RpcnR5X3JpbmdzICY9IH5pbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOwo+ICsJCQkJZ290 byBlcnJfY3R4Owo+ICAJCX0KPiAgCj4gLQkJZW5naW5lLT5sZWdhY3lfYWN0aXZlX2NvbnRleHQg PSB0bzsKPiAtCQlyZXR1cm4gMDsKPiArCQl0by0+cmVtYXBfc2xpY2UgPSAwOwo+ICAJfQo+ICAK PiAtCXJldHVybiBkb19yY3Nfc3dpdGNoKHJlcSk7Cj4gKwlyZXR1cm4gMDsKPiArCj4gK2Vycl9j dHg6Cj4gKwllbmdpbmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dCA9IHNhdmVkX2N0eDsKPiArZXJy X21tOgo+ICsJZW5naW5lLT5sZWdhY3lfYWN0aXZlX3BwZ3R0ID0gc2F2ZWRfbW07Cj4gK2VycjoK PiArCXJldHVybiByZXQ7Cj4gIH0KPiAgCj4gIHN0YXRpYyBib29sIGVuZ2luZV9oYXNfaWRsZV9r ZXJuZWxfY29udGV4dChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IGluZGV4IDg2ZTIzNDYzNTdjZi4uMjc0OWU0 NzM1NTYzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVl c3QuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX3JlcXVlc3QuYwo+IEBA IC03MTgsMjUgKzcxOCwxOSBAQCBpOTE1X2dlbV9yZXF1ZXN0X2FsbG9jKHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKmVuZ2luZSwKPiAgCS8qIFVuY29uZGl0aW9uYWxseSBpbnZhbGlkYXRlIEdQVSBj YWNoZXMgYW5kIFRMQnMuICovCj4gIAlyZXQgPSBlbmdpbmUtPmVtaXRfZmx1c2gocmVxLCBFTUlU X0lOVkFMSURBVEUpOwo+ICAJaWYgKHJldCkKPiAtCQlnb3RvIGVycl9jdHg7Cj4gKwkJZ290byBl cnJfdW53aW5kOwo+ICAKPiAgCXJldCA9IGVuZ2luZS0+cmVxdWVzdF9hbGxvYyhyZXEpOwo+IC0J aWYgKHJldCkgewo+IC0JCS8qCj4gLQkJICogUGFzdCB0aGUgcG9pbnQtb2Ytbm8tcmV0dXJuLiBT aW5jZSB3ZSBtYXkgaGF2ZSB1cGRhdGVkCj4gLQkJICogZ2xvYmFsIHN0YXRlIGFmdGVyIHBhcnRp YWxseSBjb21wbGV0aW5nIHRoZSByZXF1ZXN0IGFsbG9jLAo+IC0JCSAqIHdlIG5lZWQgdG8gY29t bWl0IGFueSBjb21tYW5kcyBzbyBmYXIgZW1pdHRlZCBpbiB0aGUKPiAtCQkgKiByZXF1ZXN0IHRv IHRoZSBIVy4KPiAtCQkgKi8KPiAtCQlfX2k5MTVfYWRkX3JlcXVlc3QocmVxLCBmYWxzZSk7Cj4g LQkJcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtCX0KPiArCWlmIChyZXQpCj4gKwkJZ290byBlcnJf dW53aW5kOwo+ICAKPiAgCS8qIENoZWNrIHRoYXQgd2UgZGlkbid0IGludGVycnVwdCBvdXJzZWx2 ZXMgd2l0aCBhIG5ldyByZXF1ZXN0ICovCj4gIAlHRU1fQlVHX09OKHJlcS0+dGltZWxpbmUtPnNl cW5vICE9IHJlcS0+ZmVuY2Uuc2Vxbm8pOwo+ICAJcmV0dXJuIHJlcTsKPiAgCj4gLWVycl9jdHg6 Cj4gK2Vycl91bndpbmQ6Cj4gKwlyZXEtPnJpbmctPmVtaXQgPSByZXEtPmhlYWQ7Cj4gKwo+ICAJ LyogTWFrZSBzdXJlIHdlIGRpZG4ndCBhZGQgb3Vyc2VsdmVzIHRvIGV4dGVybmFsIHN0YXRlIGJl Zm9yZSBmcmVlaW5nICovCj4gIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZyZXEtPmFjdGl2ZV9s aXN0KSk7Cj4gIAlHRU1fQlVHX09OKCFsaXN0X2VtcHR5KCZyZXEtPnByaW90cmVlLnNpZ25hbGVy c19saXN0KSk7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jpbmdi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4 IGJmYTExYTg0ZTQ3Ni4uYTkwNGIwMzUzYmVjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuYwo+IEBAIC01OTEsNiArNTkxLDcgQEAgc3RhdGljIHZvaWQgcmVzZXRf cmluZ19jb21tb24oc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lLAo+ICAJCQlyZXF1ZXN0 LT5yaW5nLT5oZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKPiAgCX0gZWxzZSB7Cj4gIAkJZW5naW5l LT5sZWdhY3lfYWN0aXZlX2NvbnRleHQgPSBOVUxMOwo+ICsJCWVuZ2luZS0+bGVnYWN5X2FjdGl2 ZV9wcGd0dCA9IE5VTEw7Cj4gIAl9Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaAo+IGluZGV4IGQxNmUzMmFkZjE5YS4uY2JjOWMzNmY2NzVlIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IEBAIC00OTQsNiArNDk0LDcg QEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7Cj4gIAkgKiBzdHJlYW0gKHJpbmcpLgo+ICAJICov Cj4gIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqbGVnYWN5X2FjdGl2ZV9jb250ZXh0Owo+ICsJ c3RydWN0IGk5MTVfaHdfcHBndHQgKmxlZ2FjeV9hY3RpdmVfcHBndHQ7Cj4gIAo+ICAJLyogc3Rh dHVzX25vdGlmaWVyOiBsaXN0IG9mIGNhbGxiYWNrcyBmb3IgY29udGV4dC1zd2l0Y2ggY2hhbmdl cyAqLwo+ICAJc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNvbnRleHRfc3RhdHVzX25vdGlm aWVyOwo+IC0tIAo+IDIuMTUuMApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9p bnRlbC1nZngK