From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 088/190] drm/i915: Move execlists interrupt based submission to a bottom-half Date: Fri, 19 Feb 2016 12:08:14 +0000 Message-ID: <56C705AE.5080904@linux.intel.com> References: <1452503961-14837-1-git-send-email-chris@chris-wilson.co.uk> <1452509174-16671-1-git-send-email-chris@chris-wilson.co.uk> <1452509174-16671-2-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 030716EEF5 for ; Fri, 19 Feb 2016 12:08:15 +0000 (UTC) In-Reply-To: <1452509174-16671-2-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 CkhpLAoKT24gMTEvMDEvMTYgMTA6NDQsIENocmlzIFdpbHNvbiB3cm90ZToKPiBbICAxOTYuOTg4 MjA0XSBjbG9ja3NvdXJjZTogdGltZWtlZXBpbmcgd2F0Y2hkb2c6IE1hcmtpbmcgY2xvY2tzb3Vy Y2UgJ3RzYycgYXMgdW5zdGFibGUgYmVjYXVzZSB0aGUgc2tldyBpcyB0b28gbGFyZ2U6Cj4gWyAg MTk2Ljk4ODUxMl0gY2xvY2tzb3VyY2U6ICAgICAgICAgICAgICAgICAgICAgICAncmVmaW5lZC1q aWZmaWVzJyB3ZF9ub3c6IGZmZmY5YjQ4IHdkX2xhc3Q6IGZmZmY5YWNiIG1hc2s6IGZmZmZmZmZm Cj4gWyAgMTk2Ljk4ODU1OV0gY2xvY2tzb3VyY2U6ICAgICAgICAgICAgICAgICAgICAgICAndHNj JyBjc19ub3c6IDRmY2ZhODQzNTQgY3NfbGFzdDogNGY5NTQyNWU5OCBtYXNrOiBmZmZmZmZmZmZm ZmZmZmZmCj4gWyAgMTk2Ljk5MjExNV0gY2xvY2tzb3VyY2U6IFN3aXRjaGVkIHRvIGNsb2Nrc291 cmNlIHJlZmluZWQtamlmZmllcwo+Cj4gRm9sbG93ZWQgYnkgYSBoYXJkIGxvY2t1cC4KCldoYXQg ZG9lcyB0aGUgYWJvdmUgbWVhbj8gSXJxIGhhbmRsZXIgdGFraW5nIHRvbyBsb25nIGludGVyZmVy ZXMgd2l0aCAKdGltZSBrZWVwaW5nID8KCkkgbGlrZSBpdCBCVFcuIEp1c3QgdGhlIGNvbW1pdCBt ZXNzYWdlIG5lZWRzIG1vcmUgd29yay4gOikKCkhvdyBpcyBwZXJmb3JtYW5jZSBpbXBhY3Qgd2l0 aCBqdXN0IHRoaXMgcGF0Y2ggaW4gaXNvbGF0aW9uPyBXb3J0aCAKcHJvZ3Jlc3NpbmcgaXQgb24g aXRzIG93bj8KCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgfCAgIDUgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAgICB8 ICAxNSArLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMgICAgICAgICB8ICAg MiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAgICAgIHwgMTY0ICsr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuaCAgICAgICAgfCAgIDMgKy0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X3JpbmdidWZmZXIuaCB8ICAgMSArCj4gICA2IGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMo KyksIDkyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBp bmRleCAzNzhiYzczMjk2YWEuLjE1YTZmZGRmYjc5YiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gQEAgLTIwOTQsNyArMjA5NCw2IEBAIHN0YXRpYyBpbnQgaTkxNV9leGVj bGlzdHMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICpkYXRhKQo+ICAgCWZvcl9lYWNoX3Jpbmco cmluZywgZGV2X3ByaXYsIHJpbmdfaWQpIHsKPiAgIAkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1 ZXN0ICpoZWFkX3JlcSA9IE5VTEw7Cj4gICAJCWludCBjb3VudCA9IDA7Cj4gLQkJdW5zaWduZWQg bG9uZyBmbGFnczsKPgo+ICAgCQlzZXFfcHJpbnRmKG0sICIlc1xuIiwgcmluZy0+bmFtZSk7Cj4K PiBAQCAtMjEyMSwxMiArMjEyMCwxMiBAQCBzdGF0aWMgaW50IGk5MTVfZXhlY2xpc3RzKHN0cnVj dCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgIAkJCQkgICBpLCBzdGF0dXMsIGN0eF9pZCk7 Cj4gICAJCX0KPgo+IC0JCXNwaW5fbG9ja19pcnFzYXZlKCZyaW5nLT5leGVjbGlzdF9sb2NrLCBm bGFncyk7Cj4gKwkJc3Bpbl9sb2NrKCZyaW5nLT5leGVjbGlzdF9sb2NrKTsKPiAgIAkJbGlzdF9m b3JfZWFjaChjdXJzb3IsICZyaW5nLT5leGVjbGlzdF9xdWV1ZSkKPiAgIAkJCWNvdW50Kys7Cj4g ICAJCWhlYWRfcmVxID0gbGlzdF9maXJzdF9lbnRyeV9vcl9udWxsKCZyaW5nLT5leGVjbGlzdF9x dWV1ZSwKPiAgIAkJCQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QsIGV4ZWNsaXN0X2xpbmsp Owo+IC0JCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdz KTsKPiArCQlzcGluX3VubG9jaygmcmluZy0+ZXhlY2xpc3RfbG9jayk7Cj4KPiAgIAkJc2VxX3By aW50ZihtLCAiXHQlZCByZXF1ZXN0cyBpbiBxdWV1ZVxuIiwgY291bnQpOwo+ICAgCQlpZiAoaGVh ZF9yZXEpIHsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBpbmRleCAzOTFmODQwZDI5YjcuLmVi ODc1ZWNkNzkwNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IEBAIC0yMTkyLDEzICsy MTkyLDEzIEBAIHN0YXRpYyB2b2lkIGk5MTVfZ2VtX3Jlc2V0X3JpbmdfY2xlYW51cChzdHJ1Y3Qg aW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gICAJICovCj4KPiAgIAlpZiAoaTkxNS5lbmFibGVf ZXhlY2xpc3RzKSB7Cj4gLQkJc3Bpbl9sb2NrX2lycSgmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsK PiArCQlzcGluX2xvY2soJmVuZ2luZS0+ZXhlY2xpc3RfbG9jayk7Cj4KPiAgIAkJLyogbGlzdF9z cGxpY2VfdGFpbF9pbml0IGNoZWNrcyBmb3IgZW1wdHkgbGlzdHMgKi8KPiAgIAkJbGlzdF9zcGxp Y2VfdGFpbF9pbml0KCZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLAo+ICAgCQkJCSAgICAgICZlbmdp bmUtPmV4ZWNsaXN0X3JldGlyZWRfcmVxX2xpc3QpOwo+Cj4gLQkJc3Bpbl91bmxvY2tfaXJxKCZl bmdpbmUtPmV4ZWNsaXN0X2xvY2spOwo+ICsJCXNwaW5fdW5sb2NrKCZlbmdpbmUtPmV4ZWNsaXN0 X2xvY2spOwo+ICAgCQlpbnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKGVuZ2luZSk7Cj4g ICAJfQo+Cj4gQEAgLTIyOTAsMTUgKzIyOTAsOCBAQCBpOTE1X2dlbV9yZXRpcmVfcmVxdWVzdHMo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2 LCBpKSB7Cj4gICAJCWk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0c19yaW5nKHJpbmcpOwo+ICAgCQlp ZGxlICY9IGxpc3RfZW1wdHkoJnJpbmctPnJlcXVlc3RfbGlzdCk7Cj4gLQkJaWYgKGk5MTUuZW5h YmxlX2V4ZWNsaXN0cykgewo+IC0JCQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0KPiAtCQkJc3Bp bl9sb2NrX2lycXNhdmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKPiAtCQkJaWRsZSAm PSBsaXN0X2VtcHR5KCZyaW5nLT5leGVjbGlzdF9xdWV1ZSk7Cj4gLQkJCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJnJpbmctPmV4ZWNsaXN0X2xvY2ssIGZsYWdzKTsKPiAtCj4gLQkJCWludGVsX2V4 ZWNsaXN0c19yZXRpcmVfcmVxdWVzdHMocmluZyk7Cj4gLQkJfQo+ICsJCWlmIChpOTE1LmVuYWJs ZV9leGVjbGlzdHMpCj4gKwkJCWlkbGUgJj0gaW50ZWxfZXhlY2xpc3RzX3JldGlyZV9yZXF1ZXN0 cyhyaW5nKTsKPiAgIAl9Cj4KPiAgIAlpZiAoaWRsZSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9pcnEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMK PiBpbmRleCBjZTA0N2FjODRmNWYuLmIyZWYyZDBjMjExYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9pcnEuYwo+IEBAIC0xMzE2LDcgKzEzMTYsNyBAQCBnZW44X2NzX2lycV9oYW5kbGVyKHN0cnVj dCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIHUzMiBpaXIsIGludCB0ZXN0X3NoaWZ0KQo+ICAgCWlm IChpaXIgJiAoR1RfUkVOREVSX1VTRVJfSU5URVJSVVBUIDw8IHRlc3Rfc2hpZnQpKQo+ICAgCQlu b3RpZnlfcmluZyhyaW5nKTsKPiAgIAlpZiAoaWlyICYgKEdUX0NPTlRFWFRfU1dJVENIX0lOVEVS UlVQVCA8PCB0ZXN0X3NoaWZ0KSkKPiAtCQlpbnRlbF9scmNfaXJxX2hhbmRsZXIocmluZyk7Cj4g KwkJd2FrZV91cF9wcm9jZXNzKHJpbmctPmV4ZWNsaXN0c19zdWJtaXQpOwo+ICAgfQo+Cj4gICBz dGF0aWMgaXJxcmV0dXJuX3QgZ2VuOF9ndF9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2xyYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCBiNWY2MmI1 ZjQ5MTMuLmRlNTg4OWU5NWQ2ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9scmMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gQEAg LTEzMiw2ICsxMzIsOCBAQAo+ICAgICoKPiAgICAqLwo+Cj4gKyNpbmNsdWRlIDxsaW51eC9rdGhy ZWFkLmg+Cj4gKwo+ICAgI2luY2x1ZGUgPGRybS9kcm1QLmg+Cj4gICAjaW5jbHVkZSA8ZHJtL2k5 MTVfZHJtLmg+Cj4gICAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKPiBAQCAtMzQxLDcgKzM0Myw3IEBA IHN0YXRpYyB2b2lkIGV4ZWNsaXN0c19lbHNwX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcnEwLAo+ICAgCXJxMC0+ZWxzcF9zdWJtaXR0ZWQrKzsKPgo+ICAgCS8qIFlvdSBtdXN0 IGFsd2F5cyB3cml0ZSBib3RoIGRlc2NyaXB0b3JzIGluIHRoZSBvcmRlciBiZWxvdy4gKi8KPiAt CXNwaW5fbG9jaygmZGV2X3ByaXYtPnVuY29yZS5sb2NrKTsKPiArCXNwaW5fbG9ja19pcnEoJmRl dl9wcml2LT51bmNvcmUubG9jayk7Cj4gICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9nZXRfX2xv Y2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gICAJSTkxNV9XUklURV9GVyhSSU5HX0VM U1AoZW5naW5lKSwgdXBwZXJfMzJfYml0cyhkZXNjWzFdKSk7Cj4gICAJSTkxNV9XUklURV9GVyhS SU5HX0VMU1AoZW5naW5lKSwgbG93ZXJfMzJfYml0cyhkZXNjWzFdKSk7Cj4gQEAgLTM1Myw3ICsz NTUsNyBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfZWxzcF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVf Z2VtX3JlcXVlc3QgKnJxMCwKPiAgIAkvKiBFTFNQIGlzIGEgd28gcmVnaXN0ZXIsIHVzZSBhbm90 aGVyIG5lYXJieSByZWcgZm9yIHBvc3RpbmcgKi8KPiAgIAlQT1NUSU5HX1JFQURfRlcoUklOR19F WEVDTElTVF9TVEFUVVNfTE8oZW5naW5lKSk7Cj4gICAJaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9w dXRfX2xvY2tlZChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gLQlzcGluX3VubG9jaygmZGV2 X3ByaXYtPnVuY29yZS5sb2NrKTsKPiArCXNwaW5fdW5sb2NrX2lycSgmZGV2X3ByaXYtPnVuY29y ZS5sb2NrKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBleGVjbGlzdHNfdXBkYXRlX2NvbnRleHQo c3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiBAQCAtNDkyLDg5ICs0OTQsODQgQEAg c3RhdGljIGJvb2wgZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHN0cnVjdCBpbnRlbF9l bmdpbmVfY3MgKnJpbmcsCj4gICAJcmV0dXJuIGZhbHNlOwo+ICAgfQo+Cj4gLXN0YXRpYyB2b2lk IGdldF9jb250ZXh0X3N0YXR1cyhzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+IC0JCQkg ICAgICAgdTggcmVhZF9wb2ludGVyLAo+IC0JCQkgICAgICAgdTMyICpzdGF0dXMsIHUzMiAqY29u dGV4dF9pZCkKPiArc3RhdGljIHZvaWQgc2V0X3J0cHJpb3JpdHkodm9pZCkKPiAgIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7 Cj4gLQo+IC0JaWYgKFdBUk5fT04ocmVhZF9wb2ludGVyID49IEdFTjhfQ1NCX0VOVFJJRVMpKQo+ IC0JCXJldHVybjsKPiAtCj4gLQkqc3RhdHVzID0gSTkxNV9SRUFEKFJJTkdfQ09OVEVYVF9TVEFU VVNfQlVGX0xPKHJpbmcsIHJlYWRfcG9pbnRlcikpOwo+IC0JKmNvbnRleHRfaWQgPSBJOTE1X1JF QUQoUklOR19DT05URVhUX1NUQVRVU19CVUZfSEkocmluZywgcmVhZF9wb2ludGVyKSk7Cj4gKwkg c3RydWN0IHNjaGVkX3BhcmFtIHBhcmFtID0geyAuc2NoZWRfcHJpb3JpdHkgPSBNQVhfVVNFUl9S VF9QUklPLzItMSB9Owo+ICsJIHNjaGVkX3NldHNjaGVkdWxlcl9ub2NoZWNrKGN1cnJlbnQsIFND SEVEX0ZJRk8sICZwYXJhbSk7Cj4gICB9Cj4KPiAtLyoqCj4gLSAqIGludGVsX2xyY19pcnFfaGFu ZGxlcigpIC0gaGFuZGxlIENvbnRleHQgU3dpdGNoIGludGVycnVwdHMKPiAtICogQHJpbmc6IEVu Z2luZSBDb21tYW5kIFN0cmVhbWVyIHRvIGhhbmRsZS4KPiAtICoKPiAtICogQ2hlY2sgdGhlIHVu cmVhZCBDb250ZXh0IFN0YXR1cyBCdWZmZXJzIGFuZCBtYW5hZ2UgdGhlIHN1Ym1pc3Npb24gb2Yg bmV3Cj4gLSAqIGNvbnRleHRzIHRvIHRoZSBFTFNQIGFjY29yZGluZ2x5Lgo+IC0gKi8KPiAtdm9p ZCBpbnRlbF9scmNfaXJxX2hhbmRsZXIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAr c3RhdGljIGludCBpbnRlbF9leGVjbGlzdHNfc3VibWl0KHZvaWQgKmFyZykKPiAgIHsKPiAtCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7 Cj4gLQl1MzIgc3RhdHVzX3BvaW50ZXI7Cj4gLQl1OCByZWFkX3BvaW50ZXI7Cj4gLQl1OCB3cml0 ZV9wb2ludGVyOwo+IC0JdTMyIHN0YXR1cyA9IDA7Cj4gLQl1MzIgc3RhdHVzX2lkOwo+IC0JdTMy IHN1Ym1pdF9jb250ZXh0cyA9IDA7Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nID0g YXJnOwo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gcmluZy0+aTkxNTsK Pgo+IC0Jc3RhdHVzX3BvaW50ZXIgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19QVFIo cmluZykpOwo+ICsJc2V0X3J0cHJpb3JpdHkoKTsKPgo+IC0JcmVhZF9wb2ludGVyID0gcmluZy0+ bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXI7Cj4gLQl3cml0ZV9wb2ludGVyID0gR0VOOF9DU0Jf V1JJVEVfUFRSKHN0YXR1c19wb2ludGVyKTsKPiAtCWlmIChyZWFkX3BvaW50ZXIgPiB3cml0ZV9w b2ludGVyKQo+IC0JCXdyaXRlX3BvaW50ZXIgKz0gR0VOOF9DU0JfRU5UUklFUzsKPiArCWRvIHsK PiArCQl1MzIgc3RhdHVzOwo+ICsJCXUzMiBzdGF0dXNfaWQ7Cj4gKwkJdTMyIHN1Ym1pdF9jb250 ZXh0czsKPiArCQl1OCBoZWFkLCB0YWlsOwo+Cj4gLQlzcGluX2xvY2soJnJpbmctPmV4ZWNsaXN0 X2xvY2spOwo+ICsJCXNldF9jdXJyZW50X3N0YXRlKFRBU0tfSU5URVJSVVBUSUJMRSk7CgpIbSwg d2hhdCBpcyB0aGUgZWZmZWN0IG9mIHNldHRpbmcgVEFTS19JTlRFUlJVUFRJQkxFIGF0IHRoaXMg c3RhZ2UgCnJhdGhlciB0aGFuIGp1c3QgYmVmb3JlIHRoZSBjYWxsIHRvIHNjaGVkdWxlPwoKQW5k IHdoeSBpbnRlcnJ1cHRpYmxlPwoKPiArCQloZWFkID0gcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1 c19idWZmZXI7Cj4gKwkJdGFpbCA9IEk5MTVfUkVBRChSSU5HX0NPTlRFWFRfU1RBVFVTX1BUUihy aW5nKSkgJiBHRU44X0NTQl9QVFJfTUFTSzsKPiArCQlpZiAoaGVhZCA9PSB0YWlsKSB7Cj4gKwkJ CWlmIChrdGhyZWFkX3Nob3VsZF9zdG9wKCkpCj4gKwkJCQlyZXR1cm4gMDsKPgo+IC0Jd2hpbGUg KHJlYWRfcG9pbnRlciA8IHdyaXRlX3BvaW50ZXIpIHsKPiArCQkJc2NoZWR1bGUoKTsKPiArCQkJ Y29udGludWU7Cj4gKwkJfQo+ICsJCV9fc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsK Pgo+IC0JCWdldF9jb250ZXh0X3N0YXR1cyhyaW5nLCArK3JlYWRfcG9pbnRlciAlIEdFTjhfQ1NC X0VOVFJJRVMsCj4gLQkJCQkgICAmc3RhdHVzLCAmc3RhdHVzX2lkKTsKPiArCQlpZiAoaGVhZCA+ IHRhaWwpCj4gKwkJCXRhaWwgKz0gR0VOOF9DU0JfRU5UUklFUzsKPgo+IC0JCWlmIChzdGF0dXMg JiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpCj4gLQkJCWNvbnRpbnVlOwo+ICsJCXN0YXR1 cyA9IDA7Cj4gKwkJc3VibWl0X2NvbnRleHRzID0gMDsKPgo+IC0JCWlmIChzdGF0dXMgJiBHRU44 X0NUWF9TVEFUVVNfUFJFRU1QVEVEKSB7Cj4gLQkJCWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFU VVNfTElURV9SRVNUT1JFKSB7Cj4gLQkJCQlpZiAoZXhlY2xpc3RzX2NoZWNrX3JlbW92ZV9yZXF1 ZXN0KHJpbmcsIHN0YXR1c19pZCkpCj4gLQkJCQkJV0FSTigxLCAiTGl0ZSBSZXN0b3JlZCByZXF1 ZXN0IHJlbW92ZWQgZnJvbSBxdWV1ZVxuIik7Cj4gLQkJCX0gZWxzZQo+IC0JCQkJV0FSTigxLCAi UHJlZW1wdGlvbiB3aXRob3V0IExpdGUgUmVzdG9yZVxuIik7Cj4gLQkJfQo+ICsJCXNwaW5fbG9j aygmcmluZy0+ZXhlY2xpc3RfbG9jayk7Cj4KPiAtCQlpZiAoKHN0YXR1cyAmIEdFTjhfQ1RYX1NU QVRVU19BQ1RJVkVfSURMRSkgfHwKPiAtCQkgICAgKHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19F TEVNRU5UX1NXSVRDSCkpIHsKPiAtCQkJaWYgKGV4ZWNsaXN0c19jaGVja19yZW1vdmVfcmVxdWVz dChyaW5nLCBzdGF0dXNfaWQpKQo+IC0JCQkJc3VibWl0X2NvbnRleHRzKys7Cj4gLQkJfQo+IC0J fQo+ICsJCXdoaWxlIChoZWFkKysgPCB0YWlsKSB7Cj4gKwkJCXN0YXR1cyA9IEk5MTVfUkVBRChS SU5HX0NPTlRFWFRfU1RBVFVTX0JVRl9MTyhyaW5nLCBoZWFkICUgR0VOOF9DU0JfRU5UUklFUykp Owo+ICsJCQlzdGF0dXNfaWQgPSBJOTE1X1JFQUQoUklOR19DT05URVhUX1NUQVRVU19CVUZfSEko cmluZywgaGVhZCAlIEdFTjhfQ1NCX0VOVFJJRVMpKTsKCk9uZSBwb3RlbnRpYWxseSBjaGVhcCBp bXByb3ZlbWVudCBJJ3ZlIGJlZW4gdGhpbmtpbmcgb2YgaXMgdG8gbW92ZSB0aGUgCkNTQiByZWFk aW5nIG91dHNpZGUgdGhlIGV4ZWNsaXN0X2xvY2ssIHRvIGF2b2lkIHNsb3cgTU1JTyBjb250ZW5k aW5nIHRoZSAKbG9jay4KCldlIGNvdWxkIGZldGNoIGFsbCB2YWxpZCBlbnRyaWVzIGludG8gYSB0 ZW1wb3JhcnkgbG9jYWwgYnVmZmVyLCB0aGVuIApncmFiIHRoZSBleGVjbGlzdF9sb2NrIGFuZCBw cm9jZXNzIGNvbXBsZXRpb25zIGFuZCBzdWJtaXNzaW9uIGZyb20gdGhlcmUuCgo+IC0JaWYgKGRp c2FibGVfbGl0ZV9yZXN0b3JlX3dhKHJpbmcpKSB7Cj4gLQkJLyogUHJldmVudCBhIGN0eCB0byBw cmVlbXB0IGl0c2VsZiAqLwo+IC0JCWlmICgoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElW RV9JRExFKSAmJgo+IC0JCSAgICAoc3VibWl0X2NvbnRleHRzICE9IDApKQo+IC0JCQlleGVjbGlz dHNfY29udGV4dF91bnF1ZXVlKHJpbmcpOwo+IC0JfSBlbHNlIGlmIChzdWJtaXRfY29udGV4dHMg IT0gMCkgewo+IC0JCWV4ZWNsaXN0c19jb250ZXh0X3VucXVldWUocmluZyk7Cj4gLQl9Cj4gKwkJ CWlmIChzdGF0dXMgJiBHRU44X0NUWF9TVEFUVVNfSURMRV9BQ1RJVkUpCj4gKwkJCQljb250aW51 ZTsKPgo+IC0Jc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwo+ICsJCQlpZiAoc3Rh dHVzICYgR0VOOF9DVFhfU1RBVFVTX1BSRUVNUFRFRCkgewo+ICsJCQkJaWYgKHN0YXR1cyAmIEdF TjhfQ1RYX1NUQVRVU19MSVRFX1JFU1RPUkUpIHsKPiArCQkJCQlpZiAoZXhlY2xpc3RzX2NoZWNr X3JlbW92ZV9yZXF1ZXN0KHJpbmcsIHN0YXR1c19pZCkpCj4gKwkJCQkJCVdBUk4oMSwgIkxpdGUg UmVzdG9yZWQgcmVxdWVzdCByZW1vdmVkIGZyb20gcXVldWVcbiIpOwo+ICsJCQkJfSBlbHNlCj4g KwkJCQkJV0FSTigxLCAiUHJlZW1wdGlvbiB3aXRob3V0IExpdGUgUmVzdG9yZVxuIik7Cj4gKwkJ CX0KPgo+IC0JaWYgKHVubGlrZWx5KHN1Ym1pdF9jb250ZXh0cyA+IDIpKQo+IC0JCURSTV9FUlJP UigiTW9yZSB0aGFuIHR3byBjb250ZXh0IGNvbXBsZXRlIGV2ZW50cz9cbiIpOwo+ICsJCQlpZiAo KHN0YXR1cyAmIEdFTjhfQ1RYX1NUQVRVU19BQ1RJVkVfSURMRSkgfHwKPiArCQkJICAgIChzdGF0 dXMgJiBHRU44X0NUWF9TVEFUVVNfRUxFTUVOVF9TV0lUQ0gpKSB7Cj4gKwkJCQlpZiAoZXhlY2xp c3RzX2NoZWNrX3JlbW92ZV9yZXF1ZXN0KHJpbmcsIHN0YXR1c19pZCkpCj4gKwkJCQkJc3VibWl0 X2NvbnRleHRzKys7Cj4gKwkJCX0KPiArCQl9Cj4gKwo+ICsJCWlmIChkaXNhYmxlX2xpdGVfcmVz dG9yZV93YShyaW5nKSkgewo+ICsJCQkvKiBQcmV2ZW50IGEgY3R4IHRvIHByZWVtcHQgaXRzZWxm ICovCj4gKwkJCWlmICgoc3RhdHVzICYgR0VOOF9DVFhfU1RBVFVTX0FDVElWRV9JRExFKSAmJgo+ ICsJCQkJCShzdWJtaXRfY29udGV4dHMgIT0gMCkpCj4gKwkJCQlleGVjbGlzdHNfY29udGV4dF91 bnF1ZXVlKHJpbmcpOwo+ICsJCX0gZWxzZSBpZiAoc3VibWl0X2NvbnRleHRzICE9IDApIHsKPiAr CQkJZXhlY2xpc3RzX2NvbnRleHRfdW5xdWV1ZShyaW5nKTsKPiArCQl9Cj4KPiAtCXJpbmctPm5l eHRfY29udGV4dF9zdGF0dXNfYnVmZmVyID0gd3JpdGVfcG9pbnRlciAlIEdFTjhfQ1NCX0VOVFJJ RVM7Cj4gKwkJc3Bpbl91bmxvY2soJnJpbmctPmV4ZWNsaXN0X2xvY2spOwoKV291bGQgaXQgYmUg d29ydGggdHJ5aW5nIHRvIGdyYWIgdGhlIG11dGV4IGFuZCB1bnBpbiB0aGUgTFJDcyBhdCB0aGlz IApwb2ludD8gSXQgd291bGQgc2xvdyBkb3duIHRoZSB0aHJlYWQgYSBiaXQgYnV0IHdvdWxkIGdl dCByaWQgb2YgdGhlIApyZXRpcmVkIHdvcmsgcXVldWUuIFdpdGggdGhlIHZtYS0+aW9tYXAgdGhp bmd5IGNvdWxkIGJlIHF1aXRlIGNoZWFwPwoKPiAtCS8qIFVwZGF0ZSB0aGUgcmVhZCBwb2ludGVy IHRvIHRoZSBvbGQgd3JpdGUgcG9pbnRlci4gTWFudWFsIHJpbmdidWZmZXIKPiAtCSAqIG1hbmFn ZW1lbnQgZnR3IDwvc2FyY2FzbT4gKi8KPiAtCUk5MTVfV1JJVEUoUklOR19DT05URVhUX1NUQVRV U19QVFIocmluZyksCj4gLQkJICAgX01BU0tFRF9GSUVMRChHRU44X0NTQl9SRUFEX1BUUl9NQVNL LAo+IC0JCQkJIHJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyIDw8IDgpKTsKPiArCQlX QVJOKHN1Ym1pdF9jb250ZXh0cyA+IDIsICJNb3JlIHRoYW4gdHdvIGNvbnRleHQgY29tcGxldGUg ZXZlbnRzP1xuIik7Cj4gKwkJcmluZy0+bmV4dF9jb250ZXh0X3N0YXR1c19idWZmZXIgPSB0YWls ICUgR0VOOF9DU0JfRU5UUklFUzsKPiArCQlJOTE1X1dSSVRFKFJJTkdfQ09OVEVYVF9TVEFUVVNf UFRSKHJpbmcpLAo+ICsJCQkgICBfTUFTS0VEX0ZJRUxEKEdFTjhfQ1NCX1BUUl9NQVNLIDw8IDgs Cj4gKwkJCQkJIHJpbmctPm5leHRfY29udGV4dF9zdGF0dXNfYnVmZmVyPDw4KSk7Cj4gKwl9IHdo aWxlICgxKTsKPiAgIH0KPgo+ICAgc3RhdGljIGludCBleGVjbGlzdHNfY29udGV4dF9xdWV1ZShz dHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4gQEAgLTU4NSw3ICs1ODIsNyBA QCBzdGF0aWMgaW50IGV4ZWNsaXN0c19jb250ZXh0X3F1ZXVlKHN0cnVjdCBkcm1faTkxNV9nZW1f cmVxdWVzdCAqcmVxdWVzdCkKPgo+ICAgCWk5MTVfZ2VtX3JlcXVlc3RfZ2V0KHJlcXVlc3QpOwo+ Cj4gLQlzcGluX2xvY2tfaXJxKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwo+ICsJc3Bpbl9sb2Nr KCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwo+Cj4gICAJbGlzdF9mb3JfZWFjaF9lbnRyeShjdXJz b3IsICZlbmdpbmUtPmV4ZWNsaXN0X3F1ZXVlLCBleGVjbGlzdF9saW5rKQo+ICAgCQlpZiAoKytu dW1fZWxlbWVudHMgPiAyKQo+IEBAIC02MTEsNyArNjA4LDcgQEAgc3RhdGljIGludCBleGVjbGlz dHNfY29udGV4dF9xdWV1ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3QpCj4g ICAJaWYgKG51bV9lbGVtZW50cyA9PSAwKQo+ICAgCQlleGVjbGlzdHNfY29udGV4dF91bnF1ZXVl KGVuZ2luZSk7Cj4KPiAtCXNwaW5fdW5sb2NrX2lycSgmZW5naW5lLT5leGVjbGlzdF9sb2NrKTsK PiArCXNwaW5fdW5sb2NrKCZlbmdpbmUtPmV4ZWNsaXN0X2xvY2spOwoKSG0sIGFub3RoZXIgdGhp bmcgd2hpY2ggY291bGQgYmUgcXVpdGUgY29vbCBpcyBpZiBoZXJlIHdlIGNvdWxkIGp1c3QgCndh a2UgdGhlIHRocmVhZCBhbmQgbGV0IGl0IHN1Ym1pdCB0aGUgcmVxdWVzdCBpbnN0ZWFkIG9mIGRv aW5nIGl0IApkaXJlY3RseSBmcm9tIDNyZCBwYXJ0eSBjb250ZXh0LgoKVGhhdCB3b3VsZCBtYWtl IGFsbCBFTFNQIGFjY2Vzc2VzIHNlcmlhbGl6ZWQgZm9yIGZyZWUgc2luY2UgdGhleSB3b3VsZCAK b25seSBiZSBoYXBwZW5pbmcgZnJvbSBhIHNpbmdsZSB0aHJlYWQuIEFuZCBwb3RlbnRpYWxseSBj b3VsZCByZWR1Y2UgdGhlIApzY29wZSBvZiB0aGUgbG9jayBldmVuIG1vcmUuCgpCdXQgaXQgd291 bGQgbWVhbiBleHRyYSBsYXRlbmN5IHdoZW4gdHJhbnNpdGlvbmluZyB0aGUgaWRsZSBlbmdpbmUg dG8gCmJ1c3kuIE1heWJlIGl0IHdvdWxkbid0IG1hdHRlciBmb3Igc3VjaCB3b3JrbG9hZHMuCgpS ZWdhcmRzLAoKVHZydGtvCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=