From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 11/25] drm/i915: Spin after waking up for an interrupt Date: Mon, 27 Jun 2016 11:32:10 +0100 Message-ID: <577100AA.1020204@linux.intel.com> References: <1466849588-17558-1-git-send-email-chris@chris-wilson.co.uk> <1466849588-17558-12-git-send-email-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 93A406E261 for ; Mon, 27 Jun 2016 10:32:12 +0000 (UTC) In-Reply-To: <1466849588-17558-12-git-send-email-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 Ck9uIDI1LzA2LzE2IDExOjEyLCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gV2hlbiB3YWl0aW5nIGZv ciBhbiBpbnRlcnJ1cHQgKHdhaXRpbmcgZm9yIHRoZSBHUFUgdG8gY29tcGxldGUgc29tZQo+IHdv cmspLCB3ZSBrbm93IHdlIGFyZSB0aGUgc2luZ2xlIHdhaXRlciBmb3IgdGhlIEdQVS4gV2UgYWxz byBrbm93IHdoZW4KCllvdSBtZWFuIHdlIGtub3cgd2Ugd2VyZSB0aGUgZmlyc3Qgd2FpdGVyLCBp ZiB3ZSBoYXZlIGJlZW4gd29rZW4gdXA/IE9yIApwZXJoYXBzIHRoZSBzaW5nbGUgd2FpdGVyIGZv ciB0aGlzIHJlcXVlc3Q/IChtb3JlIG9yIGxlc3MsIG1heWJlIGNsb3NlIAplbm91Z2gpIE9yIGFs c28gcy8iLCB3ZSBrbm93IHdlIGFyZS8sIGFuZCB3ZSBrbm93IHdlIGFyZSIgPwoKUmVnYXJkcywK ClR2cnRrbwoKPiB0aGUgR1BVIGhhcyBuZWFybHkgY29tcGxldGVkIG91ciByZXF1ZXN0IChvciBh dCBsZWFzdCBzdGFydGVkIHByb2Nlc3NpbmcKPiBpdCksIHNvIGFmdGVyIGJlaW5nIHdva2VuIGFu ZCB3ZSBkZXRlY3QgdGhhdCB0aGUgR1BVIGlzIGFjdGl2ZWx5IHdvcmtpbmcKPiBvbiBvdXIgcmVx dWVzdCwgYWxsb3cgdGhlIGJvdHRvbS1oYWxmICh0aGUgZmlyc3Qgd2FpdGVyIHdobyB3YWtlcyB1 cCB0bwo+IGhhbmRsZSBjaGVja2luZyB0aGUgc2Vxbm8gYWZ0ZXIgdGhlIGludGVycnVwdCkgdG8g c3BpbiBmb3IgYSB2ZXJ5IHNob3J0Cj4gd2hpbGUgdG8gcmVkdWNlIGNsaWVudCBsYXRlbmNpZXMu Cj4KPiBUaGUgaW1wYWN0IGlzIG1pbmltYWwsIHRoZXJlIHdhcyBhbiBpbXByb3ZlbWVudCB0byB0 aGUgcmVhbHRpbWUtdnMtbWFueQo+IGNsaWVudHMgY2FzZSwgYnV0IGV4cG9ydGluZyB0aGUgZnVu Y3Rpb24gcHJvdmVzIHVzZWZ1bCBsYXRlci4KPgo+IFNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNv biA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMgIHwgIDIgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggICAgICB8IDI2ICsrKysrKysrKysrKysrKy0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jICAgICAgfCA0MCArKysrKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICAyICst Cj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAgfCAgNCArKy0tCj4gICA1 IGZpbGVzIGNoYW5nZWQsIDQ1IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBjODFjMjdkY2E3NGQuLmRiYTI5OGM3 YThiOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTY2Myw3ICs2 NjMsNyBAQCBzdGF0aWMgaW50IGk5MTVfZ2VtX3BhZ2VmbGlwX2luZm8oc3RydWN0IHNlcV9maWxl ICptLCB2b2lkICpkYXRhKQo+ICAgCQkJCQkgICBpOTE1X2dlbV9yZXF1ZXN0X2dldF9zZXFubyh3 b3JrLT5mbGlwX3F1ZXVlZF9yZXEpLAo+ICAgCQkJCQkgICBkZXZfcHJpdi0+bmV4dF9zZXFubywK PiAgIAkJCQkJICAgZW5naW5lLT5nZXRfc2Vxbm8oZW5naW5lKSwKPiAtCQkJCQkgICBpOTE1X2dl bV9yZXF1ZXN0X2NvbXBsZXRlZCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEsIHRydWUpKTsKPiArCQkJ CQkgICBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpKTsK PiAgIAkJCX0gZWxzZQo+ICAgCQkJCXNlcV9wcmludGYobSwgIkZsaXAgbm90IGFzc29jaWF0ZWQg d2l0aCBhbnkgcmluZ1xuIik7Cj4gICAJCQlzZXFfcHJpbnRmKG0sICJGbGlwIHF1ZXVlZCBvbiBm cmFtZSAlZCwgKHdhcyByZWFkeSBvbiBmcmFtZSAlZCksIG5vdyAlZFxuIiwKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmgKPiBpbmRleCBlZDkyYzQzNGY0ZTYuLjRjYzM3MmRmMzUzNCAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zMjc3LDI0ICszMjc3LDI3IEBAIGk5MTVfc2Vxbm9f cGFzc2VkKHVpbnQzMl90IHNlcTEsIHVpbnQzMl90IHNlcTIpCj4gICAJcmV0dXJuIChpbnQzMl90 KShzZXExIC0gc2VxMikgPj0gMDsKPiAgIH0KPgo+IC1zdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9n ZW1fcmVxdWVzdF9zdGFydGVkKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+IC0J CQkJCSAgIGJvb2wgbGF6eV9jb2hlcmVuY3kpCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dl bV9yZXF1ZXN0X3N0YXJ0ZWQoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEp Cj4gICB7Cj4gLQlpZiAoIWxhenlfY29oZXJlbmN5ICYmIHJlcS0+ZW5naW5lLT5pcnFfc2Vxbm9f YmFycmllcikKPiAtCQlyZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIocmVxLT5lbmdpbmUp Owo+ICAgCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChyZXEtPmVuZ2luZS0+Z2V0X3NlcW5vKHJl cS0+ZW5naW5lKSwKPiAgIAkJCQkgcmVxLT5wcmV2aW91c19zZXFubyk7Cj4gICB9Cj4KPiAtc3Rh dGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHN0cnVjdCBkcm1faTkx NV9nZW1fcmVxdWVzdCAqcmVxLAo+IC0JCQkJCSAgICAgIGJvb2wgbGF6eV9jb2hlcmVuY3kpCj4g K3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChjb25zdCBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiAtCWlmICghbGF6eV9jb2hlcmVu Y3kgJiYgcmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKQo+IC0JCXJlcS0+ZW5naW5lLT5p cnFfc2Vxbm9fYmFycmllcihyZXEtPmVuZ2luZSk7Cj4gICAJcmV0dXJuIGk5MTVfc2Vxbm9fcGFz c2VkKHJlcS0+ZW5naW5lLT5nZXRfc2Vxbm8ocmVxLT5lbmdpbmUpLAo+ICAgCQkJCSByZXEtPnNl cW5vKTsKPiAgIH0KPgo+ICtib29sIF9faTkxNV9zcGluX3JlcXVlc3QoY29uc3Qgc3RydWN0IGRy bV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICsJCQkgaW50IHN0YXRlLCB1bnNpZ25lZCBs b25nIHRpbWVvdXRfdXMpOwo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9zcGluX3JlcXVlc3Qo Y29uc3Qgc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LAo+ICsJCQkJICAgICBp bnQgc3RhdGUsIHVuc2lnbmVkIGxvbmcgdGltZW91dF91cykKPiArewo+ICsJcmV0dXJuIChpOTE1 X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQocmVxdWVzdCkgJiYKPiArCQlfX2k5MTVfc3Bpbl9yZXF1ZXN0 KHJlcXVlc3QsIHN0YXRlLCB0aW1lb3V0X3VzKSk7Cj4gK30KPiArCj4gICBpbnQgX19tdXN0X2No ZWNrIGk5MTVfZ2VtX2dldF9zZXFubyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiAqc2Vxbm8pOwo+ICAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9zZXRfc2Vxbm8oc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgdTMyIHNlcW5vKTsKPgo+IEBAIC0zOTcyLDYgKzM5NzUsOCBA QCBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV90cmFjZV9pcnFfZ2V0KHN0cnVjdCBpbnRlbF9lbmdp bmVfY3MgKmVuZ2luZSwKPgo+ICAgc3RhdGljIGlubGluZSBib29sIF9faTkxNV9yZXF1ZXN0X2ly cV9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIHsKPiArCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcS0+ZW5naW5lOwo+ICsKPiAgIAkvKiBF bnN1cmUgb3VyIHJlYWQgb2YgdGhlIHNlcW5vIGlzIGNvaGVyZW50IHNvIHRoYXQgd2UKPiAgIAkg KiBkbyBub3QgIm1pc3MgYW4gaW50ZXJydXB0IiAoaS5lLiBpZiB0aGlzIGlzIHRoZSBsYXN0Cj4g ICAJICogcmVxdWVzdCBhbmQgdGhlIHNlcW5vIHdyaXRlIGZyb20gdGhlIEdQVSBpcyBub3Qgdmlz aWJsZQo+IEBAIC0zOTgzLDcgKzM5ODgsMTAgQEAgc3RhdGljIGlubGluZSBib29sIF9faTkxNV9y ZXF1ZXN0X2lycV9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAg IAkgKiBidXQgaXQgaXMgZWFzaWVyIGFuZCBzYWZlciB0byBkbyBpdCBldmVyeSB0aW1lIHRoZSB3 YWl0ZXIKPiAgIAkgKiBpcyB3b2tlbi4KPiAgIAkgKi8KPiAtCWlmIChpOTE1X2dlbV9yZXF1ZXN0 X2NvbXBsZXRlZChyZXEsIGZhbHNlKSkKPiArCWlmIChlbmdpbmUtPmlycV9zZXFub19iYXJyaWVy KQo+ICsJCWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIoZW5naW5lKTsKPiArCj4gKwlpZiAoaTkx NV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJcmV0dXJuIHRydWU7Cj4KPiAgIAkv KiBXZSBuZWVkIHRvIGNoZWNrIHdoZXRoZXIgYW55IGdwdSByZXNldCBoYXBwZW5lZCBpbiBiZXR3 ZWVuCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZmU1YmE0YWEzMzZjLi4zMGJkMGQw ZDkxN2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMTM3NSw5ICsxMzc1LDkg QEAgc3RhdGljIGJvb2wgYnVzeXdhaXRfc3RvcCh1bnNpZ25lZCBsb25nIHRpbWVvdXQsIHVuc2ln bmVkIGNwdSkKPiAgIAlyZXR1cm4gdGhpc19jcHUgIT0gY3B1Owo+ICAgfQo+Cj4gLXN0YXRpYyBi b29sIF9faTkxNV9zcGluX3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEs IGludCBzdGF0ZSkKPiArYm9vbCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxLAo+ICsJCQkgaW50IHN0YXRlLCB1bnNpZ25lZCBsb25nIHRp bWVvdXRfdXMpCj4gICB7Cj4gLQl1bnNpZ25lZCBsb25nIHRpbWVvdXQ7Cj4gICAJdW5zaWduZWQg Y3B1Owo+Cj4gICAJLyogV2hlbiB3YWl0aW5nIGZvciBoaWdoIGZyZXF1ZW5jeSByZXF1ZXN0cywg ZS5nLiBkdXJpbmcgc3luY2hyb25vdXMKPiBAQCAtMTM5MCwxOSArMTM5MCwxNSBAQCBzdGF0aWMg Ym9vbCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LCBpbnQgc3RhdGUpCj4gICAJICogdGFrZXMgdG8gc2xlZXAgb24gYSByZXF1ZXN0LCBvbiB0aGUg b3JkZXIgb2YgYSBtaWNyb3NlY29uZC4KPiAgIAkgKi8KPgo+IC0JLyogT25seSBzcGluIGlmIHdl IGtub3cgdGhlIEdQVSBpcyBwcm9jZXNzaW5nIHRoaXMgcmVxdWVzdCAqLwo+IC0JaWYgKCFpOTE1 X2dlbV9yZXF1ZXN0X3N0YXJ0ZWQocmVxLCB0cnVlKSkKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQo+ IC0JdGltZW91dCA9IGxvY2FsX2Nsb2NrX3VzKCZjcHUpICsgNTsKPiArCXRpbWVvdXRfdXMgKz0g bG9jYWxfY2xvY2tfdXMoJmNwdSk7Cj4gICAJZG8gewo+IC0JCWlmIChpOTE1X2dlbV9yZXF1ZXN0 X2NvbXBsZXRlZChyZXEsIHRydWUpKQo+ICsJCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRl ZChyZXEpKQo+ICAgCQkJcmV0dXJuIHRydWU7Cj4KPiAgIAkJaWYgKHNpZ25hbF9wZW5kaW5nX3N0 YXRlKHN0YXRlLCBjdXJyZW50KSkKPiAgIAkJCWJyZWFrOwo+Cj4gLQkJaWYgKGJ1c3l3YWl0X3N0 b3AodGltZW91dCwgY3B1KSkKPiArCQlpZiAoYnVzeXdhaXRfc3RvcCh0aW1lb3V0X3VzLCBjcHUp KQo+ICAgCQkJYnJlYWs7Cj4KPiAgIAkJY3B1X3JlbGF4X2xvd2xhdGVuY3koKTsKPiBAQCAtMTQ0 NSw3ICsxNDQxLDcgQEAgaW50IF9faTkxNV93YWl0X3JlcXVlc3Qoc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEsCj4gICAJaWYgKGxpc3RfZW1wdHkoJnJlcS0+bGlzdCkpCj4gICAJCXJl dHVybiAwOwo+Cj4gLQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0cnVlKSkK PiArCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEpKQo+ICAgCQlyZXR1cm4gMDsK Pgo+ICAgCXRpbWVvdXRfcmVtYWluID0gTUFYX1NDSEVEVUxFX1RJTUVPVVQ7Cj4gQEAgLTE0NzAs NyArMTQ2Niw3IEBAIGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxLAo+ICAgCQlnZW42X3Jwc19ib29zdChyZXEtPmk5MTUsIHJwcywgcmVxLT5l bWl0dGVkX2ppZmZpZXMpOwo+Cj4gICAJLyogT3B0aW1pc3RpYyBzcGluIGZvciB0aGUgbmV4dCB+ amlmZmllIGJlZm9yZSB0b3VjaGluZyBJUlFzICovCj4gLQlpZiAoX19pOTE1X3NwaW5fcmVxdWVz dChyZXEsIHN0YXRlKSkKPiArCWlmIChpOTE1X3NwaW5fcmVxdWVzdChyZXEsIHN0YXRlLCA1KSkK PiAgIAkJZ290byBjb21wbGV0ZTsKPgo+ICAgCXNldF9jdXJyZW50X3N0YXRlKHN0YXRlKTsKPiBA QCAtMTUxMiw2ICsxNTA4LDEwIEBAIHdha2V1cDoKPiAgIAkJICovCj4gICAJCWlmIChfX2k5MTVf cmVxdWVzdF9pcnFfY29tcGxldGUocmVxKSkKPiAgIAkJCWJyZWFrOwo+ICsKPiArCQkvKiBPbmx5 IHNwaW4gaWYgd2Uga25vdyB0aGUgR1BVIGlzIHByb2Nlc3NpbmcgdGhpcyByZXF1ZXN0ICovCj4g KwkJaWYgKGk5MTVfc3Bpbl9yZXF1ZXN0KHJlcSwgc3RhdGUsIDIpKQo+ICsJCQlicmVhazsKPiAg IAl9Cj4gICAJcmVtb3ZlX3dhaXRfcXVldWUoJnJlcS0+aTkxNS0+Z3B1X2Vycm9yLndhaXRfcXVl dWUsICZyZXNldCk7Cj4KPiBAQCAtMzA1MCw4ICszMDUwLDE2IEBAIGk5MTVfZ2VtX2ZpbmRfYWN0 aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAgCXN0 cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPgo+ICsJLyogV2UgYXJlIGNhbGxl ZCBieSB0aGUgZXJyb3IgY2FwdHVyZSBhbmQgcmVzZXQgYXQgYSByYW5kb20KPiArCSAqIHBvaW50 IGluIHRpbWUuIEluIHBhcnRpY3VsYXIsIG5vdGUgdGhhdCBuZWl0aGVyIGlzIGNydWNpYWxseQo+ ICsJICogb3JkZXJlZCB3aXRoIGFuIGludGVycnVwdC4gQWZ0ZXIgYSBoYW5nLCB0aGUgR1BVIGlz IGRlYWQgYW5kIHdlCj4gKwkgKiBhc3N1bWUgdGhhdCBubyBtb3JlIHdyaXRlcyBjYW4gaGFwcGVu ICh3ZSB3YWl0ZWQgbG9uZyBlbm91Z2ggZm9yCj4gKwkgKiBhbGwgd3JpdGVzIHRoYXQgd2VyZSBp biB0cmFuc2FjdGlvbiB0byBiZSBmbHVzaGVkKSAtIGFkZGluZyBhbgo+ICsJICogZXh0cmEgZGVs YXkgZm9yIGEgcmVjZW50IGludGVycnVwdCBpcyBwb2ludGxlc3MuIEhlbmNlLCB3ZSBkbwo+ICsJ ICogbm90IG5lZWQgYW4gZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcigpIGJlZm9yZSB0aGUgc2Vx bm8gcmVhZHMuCj4gKwkgKi8KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZlbmdp bmUtPnJlcXVlc3RfbGlzdCwgbGlzdCkgewo+IC0JCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChyZXF1ZXN0LCBmYWxzZSkpCj4gKwkJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVk KHJlcXVlc3QpKQo+ICAgCQkJY29udGludWU7Cj4KPiAgIAkJcmV0dXJuIHJlcXVlc3Q7Cj4gQEAg LTMxODMsNyArMzE5MSw3IEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dlbV9y ZXF1ZXN0LAo+ICAgCQkJCQkgICBsaXN0KTsKPgo+IC0JCWlmICghaTkxNV9nZW1fcmVxdWVzdF9j b21wbGV0ZWQocmVxdWVzdCwgdHJ1ZSkpCj4gKwkJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBs ZXRlZChyZXF1ZXN0KSkKPiAgIAkJCWJyZWFrOwo+Cj4gICAJCWk5MTVfZ2VtX3JlcXVlc3RfcmV0 aXJlKHJlcXVlc3QpOwo+IEBAIC0zMjA3LDcgKzMyMTUsNyBAQCBpOTE1X2dlbV9yZXRpcmVfcmVx dWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJfQo+Cj4gICAJ aWYgKHVubGlrZWx5KGVuZ2luZS0+dHJhY2VfaXJxX3JlcSAmJgo+IC0JCSAgICAgaTkxNV9nZW1f cmVxdWVzdF9jb21wbGV0ZWQoZW5naW5lLT50cmFjZV9pcnFfcmVxLCB0cnVlKSkpIHsKPiArCQkg ICAgIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKGVuZ2luZS0+dHJhY2VfaXJxX3JlcSkpKSB7 Cj4gICAJCWVuZ2luZS0+aXJxX3B1dChlbmdpbmUpOwo+ICAgCQlpOTE1X2dlbV9yZXF1ZXN0X2Fz c2lnbigmZW5naW5lLT50cmFjZV9pcnFfcmVxLCBOVUxMKTsKPiAgIAl9Cj4gQEAgLTMzMDUsNyAr MzMxMyw3IEBAIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9hY3RpdmUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPiAgIAkJaWYgKHJlcSA9PSBOVUxMKQo+ICAgCQkJY29udGludWU7Cj4K PiAtCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0cnVlKSkKPiArCQlpZiAo aTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJCWk5MTVfZ2VtX29iamVjdF9y ZXRpcmVfX3JlYWQob2JqLCBpKTsKPiAgIAl9Cj4KPiBAQCAtMzQxMyw3ICszNDIxLDcgQEAgX19p OTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAg CWlmICh0byA9PSBmcm9tKQo+ICAgCQlyZXR1cm4gMDsKPgo+IC0JaWYgKGk5MTVfZ2VtX3JlcXVl c3RfY29tcGxldGVkKGZyb21fcmVxLCB0cnVlKSkKPiArCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChmcm9tX3JlcSkpCj4gICAJCXJldHVybiAwOwo+Cj4gICAJaWYgKCFpOTE1X3NlbWFw aG9yZV9pc19lbmFibGVkKHRvX2k5MTUob2JqLT5iYXNlLmRldikpKSB7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDY5OWRhMDY3YmI4NS4uYWRlYWZiYzk2NzYwIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMTU5NCw3ICsxMTU5 NCw3IEBAIHN0YXRpYyBib29sIF9fcGFnZWZsaXBfc3RhbGxfY2hlY2tfY3Moc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXZibGFuayA9IGludGVsX2NydGNfZ2V0X3ZibGFu a19jb3VudGVyKGludGVsX2NydGMpOwo+ICAgCWlmICh3b3JrLT5mbGlwX3JlYWR5X3ZibGFuayA9 PSAwKSB7Cj4gICAJCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgJiYKPiAtCQkgICAgIWk5MTVf Z2VtX3JlcXVlc3RfY29tcGxldGVkKHdvcmstPmZsaXBfcXVldWVkX3JlcSwgdHJ1ZSkpCj4gKwkJ ICAgICFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEpKQo+ ICAgCQkJcmV0dXJuIGZhbHNlOwo+Cj4gICAJCXdvcmstPmZsaXBfcmVhZHlfdmJsYW5rID0gdmJs YW5rOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDRmNjEyYjk2MjI0ZS4uMmY1NGZj NWQxMTMxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTc3MzksNyArNzczOSw3 IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfcnBzX2Jvb3N0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0 ICp3b3JrKQo+ICAgCXN0cnVjdCByZXF1ZXN0X2Jvb3N0ICpib29zdCA9IGNvbnRhaW5lcl9vZih3 b3JrLCBzdHJ1Y3QgcmVxdWVzdF9ib29zdCwgd29yayk7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEgPSBib29zdC0+cmVxOwo+Cj4gLQlpZiAoIWk5MTVfZ2VtX3JlcXVlc3Rf Y29tcGxldGVkKHJlcSwgdHJ1ZSkpCj4gKwlpZiAoIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVk KHJlcSkpCj4gICAJCWdlbjZfcnBzX2Jvb3N0KHJlcS0+aTkxNSwgTlVMTCwgcmVxLT5lbWl0dGVk X2ppZmZpZXMpOwo+Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+IEBA IC03NzUzLDcgKzc3NTMsNyBAQCB2b2lkIGludGVsX3F1ZXVlX3Jwc19ib29zdF9mb3JfcmVxdWVz dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAlpZiAocmVxID09IE5VTEwg fHwgSU5URUxfR0VOKHJlcS0+aTkxNSkgPCA2KQo+ICAgCQlyZXR1cm47Cj4KPiAtCWlmIChpOTE1 X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHRydWUpKQo+ICsJaWYgKGk5MTVfZ2VtX3JlcXVl c3RfY29tcGxldGVkKHJlcSkpCj4gICAJCXJldHVybjsKPgo+ICAgCWJvb3N0ID0ga21hbGxvYyhz aXplb2YoKmJvb3N0KSwgR0ZQX0FUT01JQyk7Cj4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==