From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 07/21] drm/i915: Spin after waking up for an interrupt Date: Mon, 6 Jun 2016 15:39:15 +0100 Message-ID: <57558B13.9040008@linux.intel.com> References: <1464970133-29859-1-git-send-email-chris@chris-wilson.co.uk> <1464970133-29859-8-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 6498E6E57C for ; Mon, 6 Jun 2016 14:39:17 +0000 (UTC) In-Reply-To: <1464970133-29859-8-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 Ck9uIDAzLzA2LzE2IDE3OjA4LCBDaHJpcyBXaWxzb24gd3JvdGU6Cj4gV2hlbiB3YWl0aW5nIGZv ciBhbiBpbnRlcnJ1cHQgKHdhaXRpbmcgZm9yIHRoZSBHUFUgdG8gY29tcGxldGUgc29tZQo+IHdv cmspLCB3ZSBrbm93IHdlIGFyZSB0aGUgc2luZ2xlIHdhaXRlciBmb3IgdGhlIEdQVS4gV2UgYWxz byBrbm93IHdoZW4KPiB0aGUgR1BVIGhhcyBuZWFybHkgY29tcGxldGVkIG91ciByZXF1ZXN0IChv ciBhdCBsZWFzdCBzdGFydGVkIHByb2Nlc3NpbmcKPiBpdCksIHNvIGFmdGVyIGJlaW5nIHdva2Vu IGFuZCB3ZSBkZXRlY3QgdGhhdCB0aGUgR1BVIGlzIGFsbW9zdCBmaW5pc2hlZCwKCldlIGNhbm5v dCBkZXRlY3QgR1BVIGlzIGFsbW9zdCBmaW5pc2hlZCwganVzdCB0aGF0IGl0IGhhcyBzdGFydGVk IApwcm9jZXNzaW5nIHRoZSB3YWl0ZWQgb24gYmF0Y2guIEkgc3VnZ2VzdCByZXdvcmRpbmcgdGhl IGNvbW1pdCBtc2cgdG8gYmUgCmFjY3VyYXRlLgoKPiBhbGxvdyB0aGUgYm90dG9tLWhhbGYgdG8g c3BpbiBmb3IgYSB2ZXJ5IHNob3J0IHdoaWxlIHRvIHJlZHVjZSBjbGllbnQKPiBsYXRlbmNpZXMu CgpIbSBpbiBmYWN0IEkgdGhpbmsgaXQgc2hvdWxkIGV4cGxhaW4gdGhhdCBpdCBpcyBub3QgYWN0 dWFsbHkgYWRkaW5nIHRoZSAKYnVzeSBzcGluIGZvciB0aGUgYm90dG9tIGhhbGYgYnV0IGV4dGVu ZGluZyBpdCBieSAydXMgZm9yIHRoZSBmaXJzdCAKd2FpdGVyIGNhc2UuCgo+Cj4gVGhlIGltcGFj dCBpcyBtaW5pbWFsLCB0aGVyZSB3YXMgYW4gaW1wcm92ZW1lbnQgdG8gdGhlIHJlYWx0aW1lLXZz LW1hbnkKPiBjbGllbnRzIGNhc2UsIGJ1dCBleHBvcnRpbmcgdGhlIGZ1bmN0aW9uIHByb3ZlcyB1 c2VmdWwgbGF0ZXIuCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdm cy5jICB8ICAyICstCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAy NiArKysrKysrKysrKysrKystLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYyAgICAgIHwgNDAgKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgMiArLQo+ICAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcG0uYyAgICAgIHwgIDQgKystLQo+ICAgNSBmaWxlcyBjaGFuZ2Vk LCA0NSBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKPgo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gaW5kZXggNDg2ODM1MzhiNGUyLi4wYzI4N2JmMGQyMzAgMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC02NjMsNyArNjYzLDcgQEAgc3RhdGlj IGludCBpOTE1X2dlbV9wYWdlZmxpcF9pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0 YSkKPiAgIAkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9nZXRfc2Vxbm8od29yay0+ZmxpcF9xdWV1 ZWRfcmVxKSwKPiAgIAkJCQkJICAgZGV2X3ByaXYtPm5leHRfc2Vxbm8sCj4gICAJCQkJCSAgIGVu Z2luZS0+Z2V0X3NlcW5vKGVuZ2luZSksCj4gLQkJCQkJICAgaTkxNV9nZW1fcmVxdWVzdF9jb21w bGV0ZWQod29yay0+ZmxpcF9xdWV1ZWRfcmVxLCB0cnVlKSk7Cj4gKwkJCQkJICAgaTkxNV9nZW1f cmVxdWVzdF9jb21wbGV0ZWQod29yay0+ZmxpcF9xdWV1ZWRfcmVxKSk7Cj4gICAJCQl9IGVsc2UK PiAgIAkJCQlzZXFfcHJpbnRmKG0sICJGbGlwIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IHJpbmdc biIpOwo+ICAgCQkJc2VxX3ByaW50ZihtLCAiRmxpcCBxdWV1ZWQgb24gZnJhbWUgJWQsICh3YXMg cmVhZHkgb24gZnJhbWUgJWQpLCBub3cgJWRcbiIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g aW5kZXggNjhiMzgzZDk4NDU3Li5iMDQ2MGVkYTIxMTMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmgKPiBAQCAtMzIxOSwyNCArMzIxOSwyNyBAQCBpOTE1X3NlcW5vX3Bhc3NlZCh1aW50MzJf dCBzZXExLCB1aW50MzJfdCBzZXEyKQo+ICAgCXJldHVybiAoaW50MzJfdCkoc2VxMSAtIHNlcTIp ID49IDA7Cj4gICB9Cj4KPiAtc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX3JlcXVlc3Rfc3Rh cnRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwKPiAtCQkJCQkgICBib29sIGxh enlfY29oZXJlbmN5KQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9zdGFy dGVkKGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAgewo+IC0JaWYg KCFsYXp5X2NvaGVyZW5jeSAmJiByZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIpCj4gLQkJ cmVxLT5lbmdpbmUtPmlycV9zZXFub19iYXJyaWVyKHJlcS0+ZW5naW5lKTsKPiAgIAlyZXR1cm4g aTkxNV9zZXFub19wYXNzZWQocmVxLT5lbmdpbmUtPmdldF9zZXFubyhyZXEtPmVuZ2luZSksCj4g ICAJCQkJIHJlcS0+cHJldmlvdXNfc2Vxbm8pOwo+ICAgfQo+Cj4gLXN0YXRpYyBpbmxpbmUgYm9v bCBpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPiAtCQkJCQkgICAgICBib29sIGxhenlfY29oZXJlbmN5KQo+ICtzdGF0aWMgaW5saW5l IGJvb2wgaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQoY29uc3Qgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gLQlpZiAoIWxhenlfY29oZXJlbmN5ICYmIHJlcS0+ZW5n aW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPiAtCQlyZXEtPmVuZ2luZS0+aXJxX3NlcW5vX2JhcnJp ZXIocmVxLT5lbmdpbmUpOwo+ICAgCXJldHVybiBpOTE1X3NlcW5vX3Bhc3NlZChyZXEtPmVuZ2lu ZS0+Z2V0X3NlcW5vKHJlcS0+ZW5naW5lKSwKPiAgIAkJCQkgcmVxLT5zZXFubyk7Cj4gICB9Cj4K PiArYm9vbCBfX2k5MTVfc3Bpbl9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxdWVzdCwKPiArCQkJIGludCBzdGF0ZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0X3Vz KTsKPiArc3RhdGljIGlubGluZSBib29sIGk5MTVfc3Bpbl9yZXF1ZXN0KGNvbnN0IHN0cnVjdCBk cm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdCwKPiArCQkJCSAgICAgaW50IHN0YXRlLCB1bnNp Z25lZCBsb25nIHRpbWVvdXRfdXMpCj4gK3sKPiArCXJldHVybiAoaTkxNV9nZW1fcmVxdWVzdF9z dGFydGVkKHJlcXVlc3QpICYmCj4gKwkJX19pOTE1X3NwaW5fcmVxdWVzdChyZXF1ZXN0LCBzdGF0 ZSwgdGltZW91dF91cykpOwo+ICt9Cj4gKwo+ICAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9n ZXRfc2Vxbm8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgKnNlcW5vKTsK PiAgIGludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fc2V0X3NlcW5vKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHUzMiBzZXFubyk7Cj4KPiBAQCAtMzkxMyw2ICszOTE2LDggQEAgc3RhdGljIGlubGlu ZSB2b2lkIGk5MTVfdHJhY2VfaXJxX2dldChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUs Cj4KPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBfX2k5MTVfcmVxdWVzdF9pcnFfY29tcGxldGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICB7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5n aW5lX2NzICplbmdpbmUgPSByZXEtPmVuZ2luZTsKPiArCj4gICAJLyogRW5zdXJlIG91ciByZWFk IG9mIHRoZSBzZXFubyBpcyBjb2hlcmVudCBzbyB0aGF0IHdlCj4gICAJICogZG8gbm90ICJtaXNz IGFuIGludGVycnVwdCIgKGkuZS4gaWYgdGhpcyBpcyB0aGUgbGFzdAo+ICAgCSAqIHJlcXVlc3Qg YW5kIHRoZSBzZXFubyB3cml0ZSBmcm9tIHRoZSBHUFUgaXMgbm90IHZpc2libGUKPiBAQCAtMzky NCw3ICszOTI5LDEwIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBfX2k5MTVfcmVxdWVzdF9pcnFfY29t cGxldGUoc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXEpCj4gICAJICogYnV0IGl0IGlz IGVhc2llciBhbmQgc2FmZXIgdG8gZG8gaXQgZXZlcnkgdGltZSB0aGUgd2FpdGVyCj4gICAJICog aXMgd29rZW4uCj4gICAJICovCj4gLQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx LCBmYWxzZSkpCj4gKwlpZiAoZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcikKPiArCQllbmdpbmUt PmlycV9zZXFub19iYXJyaWVyKGVuZ2luZSk7Cj4gKwo+ICsJaWYgKGk5MTVfZ2VtX3JlcXVlc3Rf Y29tcGxldGVkKHJlcSkpCj4gICAJCXJldHVybiB0cnVlOwo+Cj4gICAJLyogV2UgbmVlZCB0byBj aGVjayB3aGV0aGVyIGFueSBncHUgcmVzZXQgaGFwcGVuZWQgaW4gYmV0d2Vlbgo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IGluZGV4IGQwOGVkYjNkMTZmMS4uYmY1YzkzZjJiZDgxIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTExNTUsOSArMTE1NSw5IEBAIHN0YXRpYyBib29s IGJ1c3l3YWl0X3N0b3AodW5zaWduZWQgbG9uZyB0aW1lb3V0LCB1bnNpZ25lZCBjcHUpCj4gICAJ cmV0dXJuIHRoaXNfY3B1ICE9IGNwdTsKPiAgIH0KPgo+IC1zdGF0aWMgYm9vbCBfX2k5MTVfc3Bp bl9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxLCBpbnQgc3RhdGUpCj4g K2Jvb2wgX19pOTE1X3NwaW5fcmVxdWVzdChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVl c3QgKnJlcSwKPiArCQkJIGludCBzdGF0ZSwgdW5zaWduZWQgbG9uZyB0aW1lb3V0X3VzKQo+ICAg ewo+IC0JdW5zaWduZWQgbG9uZyB0aW1lb3V0Owo+ICAgCXVuc2lnbmVkIGNwdTsKPgo+ICAgCS8q IFdoZW4gd2FpdGluZyBmb3IgaGlnaCBmcmVxdWVuY3kgcmVxdWVzdHMsIGUuZy4gZHVyaW5nIHN5 bmNocm9ub3VzCj4gQEAgLTExNzAsMTkgKzExNzAsMTUgQEAgc3RhdGljIGJvb2wgX19pOTE1X3Nw aW5fcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwgaW50IHN0YXRlKQo+ ICAgCSAqIHRha2VzIHRvIHNsZWVwIG9uIGEgcmVxdWVzdCwgb24gdGhlIG9yZGVyIG9mIGEgbWlj cm9zZWNvbmQuCj4gICAJICovCj4KPiAtCS8qIE9ubHkgc3BpbiBpZiB3ZSBrbm93IHRoZSBHUFUg aXMgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QgKi8KPiAtCWlmICghaTkxNV9nZW1fcmVxdWVzdF9z dGFydGVkKHJlcSwgdHJ1ZSkpCj4gLQkJcmV0dXJuIGZhbHNlOwo+IC0KPiAtCXRpbWVvdXQgPSBs b2NhbF9jbG9ja191cygmY3B1KSArIDU7Cj4gKwl0aW1lb3V0X3VzICs9IGxvY2FsX2Nsb2NrX3Vz KCZjcHUpOwo+ICAgCWRvIHsKPiAtCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVx LCB0cnVlKSkKPiArCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJ CXJldHVybiB0cnVlOwo+Cj4gICAJCWlmIChzaWduYWxfcGVuZGluZ19zdGF0ZShzdGF0ZSwgY3Vy cmVudCkpCj4gICAJCQlicmVhazsKPgo+IC0JCWlmIChidXN5d2FpdF9zdG9wKHRpbWVvdXQsIGNw dSkpCj4gKwkJaWYgKGJ1c3l3YWl0X3N0b3AodGltZW91dF91cywgY3B1KSkKPiAgIAkJCWJyZWFr Owo+Cj4gICAJCWNwdV9yZWxheF9sb3dsYXRlbmN5KCk7Cj4gQEAgLTEyMjQsNyArMTIyMCw3IEBA IGludCBfX2k5MTVfd2FpdF9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVx LAo+ICAgCWlmIChsaXN0X2VtcHR5KCZyZXEtPmxpc3QpKQo+ICAgCQlyZXR1cm4gMDsKPgo+IC0J aWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkpCj4gKwlpZiAoaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJcmV0dXJuIDA7Cj4KPiAgIAl0aW1lb3V0 X3JlbWFpbiA9IE1BWF9TQ0hFRFVMRV9USU1FT1VUOwo+IEBAIC0xMjQ5LDcgKzEyNDUsNyBAQCBp bnQgX19pOTE1X3dhaXRfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSwK PiAgIAkJZ2VuNl9ycHNfYm9vc3QocmVxLT5pOTE1LCBycHMsIHJlcS0+ZW1pdHRlZF9qaWZmaWVz KTsKPgo+ICAgCS8qIE9wdGltaXN0aWMgc3BpbiBmb3IgdGhlIG5leHQgfmppZmZpZSBiZWZvcmUg dG91Y2hpbmcgSVJRcyAqLwo+IC0JaWYgKF9faTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSkp Cj4gKwlpZiAoaTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSwgNSkpCj4gICAJCWdvdG8gY29t cGxldGU7Cj4KPiAgIAlpbnRlbF93YWl0X2luaXQoJndhaXQsIHJlcS0+c2Vxbm8pOwo+IEBAIC0x MjkwLDYgKzEyODYsMTAgQEAgd2FrZXVwOgo+ICAgCQkgKi8KPiAgIAkJaWYgKF9faTkxNV9yZXF1 ZXN0X2lycV9jb21wbGV0ZShyZXEpKQo+ICAgCQkJYnJlYWs7Cj4gKwo+ICsJCS8qIE9ubHkgc3Bp biBpZiB3ZSBrbm93IHRoZSBHUFUgaXMgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QgKi8KPiArCQlp ZiAoaTkxNV9zcGluX3JlcXVlc3QocmVxLCBzdGF0ZSwgMikpCj4gKwkJCWJyZWFrOwoKVGhlIGJl aGF2aW91ciBkZXNjcmliZWQgaW4gdGhlIGNvbW1lbnQgaXMgZW1iZWRkZWQgaW4gdGhlIGZ1bmN0 aW9uIApjYWxsZWQuIE9yIGNoYW5nZSB0byAiT25seSBzcGluKnMqIGlmIHdlIGtub3cuLiIgPwoK PiAgIAl9Cj4gICAJcmVtb3ZlX3dhaXRfcXVldWUoJnJlcS0+aTkxNS0+Z3B1X2Vycm9yLndhaXRf cXVldWUsICZyZXNldCk7Cj4KPiBAQCAtMjgwNSw4ICsyODA1LDE2IEBAIGk5MTVfZ2VtX2ZpbmRf YWN0aXZlX3JlcXVlc3Qoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAgewo+ICAg CXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxdWVzdDsKPgo+ICsJLyogV2UgYXJlIGNh bGxlZCBieSB0aGUgZXJyb3IgY2FwdHVyZSBhbmQgcmVzZXQgYXQgYSByYW5kb20KPiArCSAqIHBv aW50IGluIHRpbWUuIEluIHBhcnRpY3VsYXIsIG5vdGUgdGhhdCBuZWl0aGVyIGlzIGNydWNpYWxs eQo+ICsJICogb3JkZXJlZCB3aXRoIGFuIGludGVycnVwdC4gQWZ0ZXIgYSBoYW5nLCB0aGUgR1BV IGlzIGRlYWQgYW5kIHdlCj4gKwkgKiBhc3N1bWUgdGhhdCBubyBtb3JlIHdyaXRlcyBjYW4gaGFw cGVuICh3ZSB3YWl0ZWQgbG9uZyBlbm91Z2ggZm9yCj4gKwkgKiBhbGwgd3JpdGVzIHRoYXQgd2Vy ZSBpbiB0cmFuc2FjdGlvbiB0byBiZSBmbHVzaGVkKSAtIGFkZGluZyBhbgo+ICsJICogZXh0cmEg ZGVsYXkgZm9yIGEgcmVjZW50IGludGVycnVwdCBpcyBwb2ludGxlc3MuIEhlbmNlLCB3ZSBkbwo+ ICsJICogbm90IG5lZWQgYW4gZW5naW5lLT5pcnFfc2Vxbm9fYmFycmllcigpIGJlZm9yZSB0aGUg c2Vxbm8gcmVhZHMuCj4gKwkgKi8KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHJlcXVlc3QsICZl bmdpbmUtPnJlcXVlc3RfbGlzdCwgbGlzdCkgewo+IC0JCWlmIChpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChyZXF1ZXN0LCBmYWxzZSkpCj4gKwkJaWYgKGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKHJlcXVlc3QpKQo+ICAgCQkJY29udGludWU7Cj4KPiAgIAkJcmV0dXJuIHJlcXVlc3Q7Cj4g QEAgLTI5MzcsNyArMjk0NSw3IEBAIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgIAkJCQkJICAgc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0LAo+ICAgCQkJCQkgICBsaXN0KTsKPgo+IC0JCWlmICghaTkxNV9nZW1fcmVxdWVz dF9jb21wbGV0ZWQocmVxdWVzdCwgdHJ1ZSkpCj4gKwkJaWYgKCFpOTE1X2dlbV9yZXF1ZXN0X2Nv bXBsZXRlZChyZXF1ZXN0KSkKPiAgIAkJCWJyZWFrOwo+Cj4gICAJCWk5MTVfZ2VtX3JlcXVlc3Rf cmV0aXJlKHJlcXVlc3QpOwo+IEBAIC0yOTYxLDcgKzI5NjksNyBAQCBpOTE1X2dlbV9yZXRpcmVf cmVxdWVzdHNfcmluZyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJfQo+Cj4g ICAJaWYgKHVubGlrZWx5KGVuZ2luZS0+dHJhY2VfaXJxX3JlcSAmJgo+IC0JCSAgICAgaTkxNV9n ZW1fcmVxdWVzdF9jb21wbGV0ZWQoZW5naW5lLT50cmFjZV9pcnFfcmVxLCB0cnVlKSkpIHsKPiAr CQkgICAgIGk5MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKGVuZ2luZS0+dHJhY2VfaXJxX3JlcSkp KSB7Cj4gICAJCWVuZ2luZS0+aXJxX3B1dChlbmdpbmUpOwo+ICAgCQlpOTE1X2dlbV9yZXF1ZXN0 X2Fzc2lnbigmZW5naW5lLT50cmFjZV9pcnFfcmVxLCBOVUxMKTsKPiAgIAl9Cj4gQEAgLTMwNTgs NyArMzA2Niw3IEBAIGk5MTVfZ2VtX29iamVjdF9mbHVzaF9hY3RpdmUoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJaWYgKHJlcSA9PSBOVUxMKQo+ICAgCQkJY29udGludWU7 Cj4KPiAtCQlpZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxLCB0cnVlKSkKPiArCQlp ZiAoaTkxNV9nZW1fcmVxdWVzdF9jb21wbGV0ZWQocmVxKSkKPiAgIAkJCWk5MTVfZ2VtX29iamVj dF9yZXRpcmVfX3JlYWQob2JqLCBpKTsKPiAgIAl9Cj4KPiBAQCAtMzE2NCw3ICszMTcyLDcgQEAg X19pOTE1X2dlbV9vYmplY3Rfc3luYyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ICAgCWlmICh0byA9PSBmcm9tKQo+ICAgCQlyZXR1cm4gMDsKPgo+IC0JaWYgKGk5MTVfZ2VtX3Jl cXVlc3RfY29tcGxldGVkKGZyb21fcmVxLCB0cnVlKSkKPiArCWlmIChpOTE1X2dlbV9yZXF1ZXN0 X2NvbXBsZXRlZChmcm9tX3JlcSkpCj4gICAJCXJldHVybiAwOwo+Cj4gICAJaWYgKCFpOTE1X3Nl bWFwaG9yZV9pc19lbmFibGVkKHRvX2k5MTUob2JqLT5iYXNlLmRldikpKSB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDJiYzI5MWFjNzI0My4uYmIwOWVlNmQxYTNm IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMTU5MCw3ICsx MTU5MCw3IEBAIHN0YXRpYyBib29sIF9fcGFnZWZsaXBfc3RhbGxfY2hlY2tfY3Moc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAgCXZibGFuayA9IGludGVsX2NydGNfZ2V0X3Zi bGFua19jb3VudGVyKGludGVsX2NydGMpOwo+ICAgCWlmICh3b3JrLT5mbGlwX3JlYWR5X3ZibGFu ayA9PSAwKSB7Cj4gICAJCWlmICh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEgJiYKPiAtCQkgICAgIWk5 MTVfZ2VtX3JlcXVlc3RfY29tcGxldGVkKHdvcmstPmZsaXBfcXVldWVkX3JlcSwgdHJ1ZSkpCj4g KwkJICAgICFpOTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZCh3b3JrLT5mbGlwX3F1ZXVlZF9yZXEp KQo+ICAgCQkJcmV0dXJuIGZhbHNlOwo+Cj4gICAJCXdvcmstPmZsaXBfcmVhZHlfdmJsYW5rID0g dmJsYW5rOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwo+IGluZGV4IDY1N2E2NGZjMjc4MC4uNzEy YmQwZGViYjkxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gQEAgLTc2ODcsNyArNzY4 Nyw3IEBAIHN0YXRpYyB2b2lkIF9faW50ZWxfcnBzX2Jvb3N0X3dvcmsoc3RydWN0IHdvcmtfc3Ry dWN0ICp3b3JrKQo+ICAgCXN0cnVjdCByZXF1ZXN0X2Jvb3N0ICpib29zdCA9IGNvbnRhaW5lcl9v Zih3b3JrLCBzdHJ1Y3QgcmVxdWVzdF9ib29zdCwgd29yayk7Cj4gICAJc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEgPSBib29zdC0+cmVxOwo+Cj4gLQlpZiAoIWk5MTVfZ2VtX3JlcXVl c3RfY29tcGxldGVkKHJlcSwgdHJ1ZSkpCj4gKwlpZiAoIWk5MTVfZ2VtX3JlcXVlc3RfY29tcGxl dGVkKHJlcSkpCj4gICAJCWdlbjZfcnBzX2Jvb3N0KHJlcS0+aTkxNSwgTlVMTCwgcmVxLT5lbWl0 dGVkX2ppZmZpZXMpOwo+Cj4gICAJaTkxNV9nZW1fcmVxdWVzdF91bnJlZmVyZW5jZShyZXEpOwo+ IEBAIC03NzAxLDcgKzc3MDEsNyBAQCB2b2lkIGludGVsX3F1ZXVlX3Jwc19ib29zdF9mb3JfcmVx dWVzdChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcSkKPiAgIAlpZiAocmVxID09IE5V TEwgfHwgSU5URUxfR0VOKHJlcS0+aTkxNSkgPCA2KQo+ICAgCQlyZXR1cm47Cj4KPiAtCWlmIChp OTE1X2dlbV9yZXF1ZXN0X2NvbXBsZXRlZChyZXEsIHRydWUpKQo+ICsJaWYgKGk5MTVfZ2VtX3Jl cXVlc3RfY29tcGxldGVkKHJlcSkpCj4gICAJCXJldHVybjsKPgo+ICAgCWJvb3N0ID0ga21hbGxv YyhzaXplb2YoKmJvb3N0KSwgR0ZQX0FUT01JQyk7Cj4KCkkgYW0gbm90IHN1Y2ggYSBiaWcgZmFu IG9mIHNwaW5uaW5nLCBidXQgdGhlIGNvZGUgbG9va3MgY29ycmVjdC4gSnVzdCAKcGxlYXNlIGlt cHJvdmUgdGhlIGNvbW1pdCBtZXNzYWdlIGFuZCB0aGF0IGNvbW1lbnQuCgpSZWdhcmRzLAoKVHZy dGtvCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==