From mboxrd@z Thu Jan 1 00:00:00 1970 From: Joonas Lahtinen Subject: Re: [PATCH v5 19/35] drm/i915: Added scheduler flush calls to ring throttle and idle functions Date: Mon, 07 Mar 2016 13:31:34 +0200 Message-ID: <1457350294.14727.8.camel@linux.intel.com> References: <1455805644-6450-1-git-send-email-John.C.Harrison@Intel.com> <1455805644-6450-20-git-send-email-John.C.Harrison@Intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id D35656E33C for ; Mon, 7 Mar 2016 11:31:49 +0000 (UTC) In-Reply-To: <1455805644-6450-20-git-send-email-John.C.Harrison@Intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: John.C.Harrison@Intel.com, Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gdG8sIDIwMTYtMDItMTggYXQgMTQ6MjcgKzAwMDAsIEpvaG4uQy5IYXJyaXNvbkBJbnRlbC5j b20gd3JvdGU6Cj4gRnJvbTogSm9obiBIYXJyaXNvbiA8Sm9obi5DLkhhcnJpc29uQEludGVsLmNv bT4KPiAKPiBXaGVuIHJlcXVlc3RpbmcgdGhhdCBhbGwgR1BVIHdvcmsgaXMgY29tcGxldGVkLCBp dCBpcyBub3cgbmVjZXNzYXJ5IHRvCj4gZ2V0IHRoZSBzY2hlZHVsZXIgaW52b2x2ZWQgaW4gb3Jk ZXIgdG8gZmx1c2ggb3V0IHdvcmsgdGhhdCBxdWV1ZWQgYW5kCj4gbm90IHlldCBzdWJtaXR0ZWQu Cj4gCj4gdjI6IFVwZGF0ZWQgdG8gYWRkIHN1cHBvcnQgZm9yIGZsdXNoaW5nIHRoZSBzY2hlZHVs ZXIgcXVldWUgYnkgdGltZQo+IHN0YW1wIHJhdGhlciB0aGFuIGp1c3QgZG9pbmcgYSBibGFua2V0 IGZsdXNoLgo+IAo+IHYzOiBNb3ZlZCBzdWJtaXRfbWF4X3ByaW9yaXR5KCkgdG8gdGhpcyBwYXRj aCBmcm9tIGFuIGVhcmxpZXIgcGF0Y2gKPiBpcyBpdCBpcyBubyBsb25nZXIgcmVxdWlyZWQgaW4g dGhlIG90aGVyLgo+IAo+IHY0OiBDb3JyZWN0ZWQgdGhlIGZvcm1hdCBvZiBhIGNvbW1lbnQgdG8g a2VlcCB0aGUgc3R5bGUgY2hlY2tlciBoYXBweS4KPiBEb3duZ3JhZGVkIGEgQlVHX09OIHRvIGEg V0FSTl9PTiBhcyB0aGUgbGF0dGVyIGlzIHByZWZlcnJlZC4KPiAKPiB2NTogU2h1ZmZsZWQgZnVu Y3Rpb25zIGFyb3VuZCB0byByZW1vdmUgZm9yd2FyZCBwcm90b3R5cGVzLCByZW1vdmVkCj4gc2lt aWxhcmx5IG9mZmVuc2l2ZSB3aGl0ZSBzcGFjZSBhbmQgYWRkZWQgZG9jdW1lbnRhdGlvbi4gUmUt d29ya2VkIHRoZQo+IG11dGV4IGxvY2tpbmcgYXJvdW5kIHRoZSBzdWJtaXQgZnVuY3Rpb24uIFtK b29uYXMgTGFodGluZW5dCj4gCj4gVXNlZCBsaWdodGVyIHdlaWdodCBzcGlubG9ja3MuCj4gCj4g Rm9yOiBWSVotMTU4Nwo+IFNpZ25lZC1vZmYtYnk6IEpvaG4gSGFycmlzb24gPEpvaG4uQy5IYXJy aXNvbkBJbnRlbC5jb20+Cj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxp bnV4LmludGVsLmNvbT4KPiAtLS0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmPC oMKgwqDCoMKgwqDCoHzCoMKgMjQgKysrKy0KPiDCoGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMgfCAxNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+IMKg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaCB8wqDCoMKgMyArCj4gwqAzIGZp bGVzIGNoYW5nZWQsIDIwNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggYTQ3YTQ5NS4uZDk0NmY1MyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IEBAIC0zNzg2LDYgKzM3ODYsMTAgQEAgaW50IGk5MTVfZ3B1X2lkbGUo c3RydWN0IGRybV9kZXZpY2UgKmRldikKPiDCoAo+IMKgCS8qIEZsdXNoIGV2ZXJ5dGhpbmcgb250 byB0aGUgaW5hY3RpdmUgbGlzdC4gKi8KPiDCoAlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2 LCBpKSB7Cj4gKwkJcmV0ID0gaTkxNV9zY2hlZHVsZXJfZmx1c2gocmluZywgdHJ1ZSk7Cj4gKwkJ aWYgKHJldCA8IDApCj4gKwkJCXJldHVybiByZXQ7Cj4gKwo+IMKgCQlpZiAoIWk5MTUuZW5hYmxl X2V4ZWNsaXN0cykgewo+IMKgCQkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXE7Cj4g wqAKPiBAQCAtNDUxOSw3ICs0NTIzLDggQEAgaTkxNV9nZW1fcmluZ190aHJvdHRsZShzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4gwqAJdW5zaWduZWQgbG9u ZyByZWNlbnRfZW5vdWdoID0gamlmZmllcyAtIERSTV9JOTE1X1RIUk9UVExFX0pJRkZJRVM7Cj4g wqAJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0LCAqdGFyZ2V0ID0gTlVMTDsK PiDCoAl1bnNpZ25lZCByZXNldF9jb3VudGVyOwo+IC0JaW50IHJldDsKPiArCWludCBpLCByZXQ7 Cj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOwo+IMKgCj4gwqAJcmV0ID0gaTkxNV9n ZW1fd2FpdF9mb3JfZXJyb3IoJmRldl9wcml2LT5ncHVfZXJyb3IpOwo+IMKgCWlmIChyZXQpCj4g QEAgLTQ1MjksNiArNDUzNCwyMyBAQCBpOTE1X2dlbV9yaW5nX3Rocm90dGxlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKPiDCoAlpZiAocmV0KQo+IMKgCQly ZXR1cm4gcmV0Owo+IMKgCj4gKwlmb3JfZWFjaF9yaW5nKHJpbmcsIGRldl9wcml2LCBpKSB7Cj4g KwkJLyoKPiArCQnCoCogRmx1c2ggb3V0IHNjaGVkdWxlciBlbnRyaWVzIHRoYXQgYXJlIGdldHRp bmcgJ3N0YWxlJy4gTm90ZQo+ICsJCcKgKiB0aGF0IHRoZSBmb2xsb3dpbmcgcmVjZW50X2Vub3Vn aCB0ZXN0IHdpbGwgb25seSBjaGVjawo+ICsJCcKgKiBhZ2FpbnN0IHRoZSB0aW1lIGF0IHdoaWNo IHRoZSByZXF1ZXN0IHdhcyBzdWJtaXR0ZWQgdG8gdGhlCj4gKwkJwqAqIGhhcmR3YXJlIChpLmUu IHdoZW4gaXQgbGVmdCB0aGUgc2NoZWR1bGVyKSBub3QgdGhlIHRpbWUgaXQKPiArCQnCoCogd2Fz IHN1Ym1pdHRlZCB0byB0aGUgZHJpdmVyLgo+ICsJCcKgKgo+ICsJCcKgKiBBbHNvLCB0aGVyZSBp cyBub3QgbXVjaCBwb2ludCB3b3JyaW5nIGFib3V0IGJ1c3kgcmV0dXJuCj4gKwkJwqAqIGNvZGVz IGZyb20gdGhlIHNjaGVkdWxlciBmbHVzaCBjYWxsLiBFdmVuIGlmIG1vcmUgd29yawo+ICsJCcKg KiBjYW5ub3QgYmUgc3VibWl0dGVkIHJpZ2h0IG5vdyBmb3Igd2hhdGV2ZXIgcmVhc29uLCB3ZQo+ ICsJCcKgKiBzdGlsbCB3YW50IHRvIHRocm90dGxlIGFnYWluc3Qgc3RhbGUgd29yayB0aGF0IGhh cyBhbHJlYWR5Cj4gKwkJwqAqIGJlZW4gc3VibWl0dGVkLgo+ICsJCcKgKi8KPiArCQlpOTE1X3Nj aGVkdWxlcl9mbHVzaF9zdGFtcChyaW5nLCByZWNlbnRfZW5vdWdoLCBmYWxzZSk7Cj4gKwl9Cj4g Kwo+IMKgCXNwaW5fbG9jaygmZmlsZV9wcml2LT5tbS5sb2NrKTsKPiDCoAlsaXN0X2Zvcl9lYWNo X2VudHJ5KHJlcXVlc3QsICZmaWxlX3ByaXYtPm1tLnJlcXVlc3RfbGlzdCwgY2xpZW50X2xpc3Qp IHsKPiDCoAkJaWYgKHRpbWVfYWZ0ZXJfZXEocmVxdWVzdC0+ZW1pdHRlZF9qaWZmaWVzLCByZWNl bnRfZW5vdWdoKSkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hl ZHVsZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPiBpbmRleCBl ZGFiNjNkLi44MTMwYTljIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5j Cj4gQEAgLTMwNCw2ICszMDQsMTAgQEAgc3RhdGljIGludCBpOTE1X3NjaGVkdWxlcl9wb3BfZnJv bV9xdWV1ZV9sb2NrZWQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiDCoCAqIGF0dGVt cHRpbmcgdG8gYWNxdWlyZSBhIG11dGV4IHdoaWxlIGhvbGRpbmcgYSBzcGluIGxvY2sgaXMgYSBC YWQgSWRlYS4KPiDCoCAqIEFuZCByZWxlYXNpbmcgdGhlIG9uZSBiZWZvcmUgYWNxdWlyaW5nIHRo ZSBvdGhlciBsZWFkcyB0byBvdGhlciBjb2RlCj4gwqAgKiBiZWluZyBydW4gYW5kIGludGVyZmVy aW5nLgo+ICsgKgo+ICsgKiBIZW5jZSBhbnkgY2FsbGVyIHRoYXQgZG9lcyBub3QgYWxyZWFkeSBo YXZlIHRoZSBtdXRleCBsb2NrIGZvciBvdGhlcgo+ICsgKiByZWFzb25zIHNob3VsZCBjYWxsIGk5 MTVfc2NoZWR1bGVyX3N1Ym1pdF91bmxvY2tlZCgpIGluc3RlYWQgaW4gb3JkZXIgdG8KPiArICog b2J0YWluIHRoZSBsb2NrIGZpcnN0Lgo+IMKgICovCj4gwqBzdGF0aWMgaW50IGk5MTVfc2NoZWR1 bGVyX3N1Ym1pdChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+IMKgewo+IEBAIC00Mjgs NiArNDMyLDIyIEBAIGVycm9yOgo+IMKgCXJldHVybiByZXQ7Cj4gwqB9Cj4gwqAKPiArc3RhdGlj IGludCBpOTE1X3NjaGVkdWxlcl9zdWJtaXRfdW5sb2NrZWQoc3RydWN0IGludGVsX2VuZ2luZV9j cyAqcmluZykKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRldjsKPiAr CWludCByZXQ7Cj4gKwo+ICsJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2 KTsKPiArCWlmIChyZXQpCj4gKwkJcmV0dXJuIHJldDsKPiArCj4gKwlyZXQgPSBpOTE1X3NjaGVk dWxlcl9zdWJtaXQocmluZyk7Cj4gKwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRl eCk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiArfQo+ICsKClRoaXMga2luZCBvZiBjb2RlIHNob3Vs ZCByZWFsbHkgYmUgZmFjdG9yZWQgdG8gdXBwZXIgbGV2ZWwgZnVuY3Rpb25zLgoKPiDCoHN0YXRp YyB2b2lkIGk5MTVfZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKHN0cnVjdCBpOTE1X3NjaGVkdWxlciAq c2NoZWR1bGVyLAo+IMKgCQkJCcKgwqDCoMKgwqDCoMKgc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1 ZXVlX2VudHJ5ICpub2RlLAo+IMKgCQkJCcKgwqDCoMKgwqDCoMKgdWludDMyX3QgcmluZykKPiBA QCAtOTE3LDYgKzkzNywxNjQgQEAgdm9pZCBpOTE1X3NjaGVkdWxlcl93b3JrX2hhbmRsZXIoc3Ry dWN0IHdvcmtfc3RydWN0ICp3b3JrKQo+IMKgCQlpOTE1X3NjaGVkdWxlcl9wcm9jZXNzX3dvcmso cmluZyk7Cj4gwqB9Cj4gwqAKPiArc3RhdGljIGludCBpOTE1X3NjaGVkdWxlcl9zdWJtaXRfbWF4 X3ByaW9yaXR5KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gKwkJCQkJwqDCoMKgwqDC oMKgYm9vbCBpc19sb2NrZWQpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3NjaGVkdWxlcl9xdWV1ZV9l bnRyeSAqbm9kZTsKPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHJpbmct PmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXIgKnNjaGVkdWxlciA9 IGRldl9wcml2LT5zY2hlZHVsZXI7Cj4gKwlpbnQgcmV0LCBjb3VudCA9IDA7Cj4gKwlib29sIGZv dW5kOwo+ICsKPiArCWRvIHsKPiArCQlmb3VuZCA9IGZhbHNlOwo+ICsJCXNwaW5fbG9ja19pcnEo JnNjaGVkdWxlci0+bG9jayk7Cj4gKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShub2RlLCAmc2NoZWR1 bGVyLT5ub2RlX3F1ZXVlW3JpbmctPmlkXSwgbGluaykgewo+ICsJCQlpZiAoIUk5MTVfU1FTX0lT X1FVRVVFRChub2RlKSkKPiArCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJaWYgKG5vZGUtPnByaW9y aXR5IDwgc2NoZWR1bGVyLT5wcmlvcml0eV9sZXZlbF9tYXgpCj4gKwkJCQljb250aW51ZTsKPiAr Cj4gKwkJCWZvdW5kID0gdHJ1ZTsKPiArCQkJYnJlYWs7Cj4gKwkJfQo+ICsJCXNwaW5fdW5sb2Nr X2lycSgmc2NoZWR1bGVyLT5sb2NrKTsKPiArCj4gKwkJaWYgKCFmb3VuZCkKPiArCQkJYnJlYWs7 Cj4gKwo+ICsJCWlmIChpc19sb2NrZWQpCj4gKwkJCXJldCA9IGk5MTVfc2NoZWR1bGVyX3N1Ym1p dChyaW5nKTsKPiArCQllbHNlCj4gKwkJCXJldCA9IGk5MTVfc2NoZWR1bGVyX3N1Ym1pdF91bmxv Y2tlZChyaW5nKTsKClRoZSB3aWRlc3ByZWFkIHVzZSBvZiAnaXNfbG9ja2VkJyBub3RhdGlvbiBp cyByZWFsbHkgYm90aGVyaW5nIG1lLCBJCnRoaW5rIHRoZSBkaWZmZXJlbmNlIGluIGNvZGUgcGF0 aCBzaG91bGQgYmUgaGFuZGxlZCBpbiB0aGUgdXBwZXIgbGV2ZWwsCmluc3RlYWQgb2YgYmVpbmcg cGFzc2VkIGRvd24sIGZvciBleGFtcGxlIHRoaXMgd2lsbCBjYXVzZSByZXBldGl0aXZlCmxvY2sv dW5sb2NrIGluIGxvb3AuCgo+ICsJCWlmIChyZXQgPCAwKQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsK PiArCQljb3VudCArPSByZXQ7Cj4gKwl9IHdoaWxlIChmb3VuZCk7Cj4gKwo+ICsJcmV0dXJuIGNv dW50Owo+ICt9Cj4gKwo+ICsvKioKPiArICogaTkxNV9zY2hlZHVsZXJfZmx1c2hfc3RhbXAgLSBm b3JjZSByZXF1ZXN0cyBvZiBhIGdpdmVuIGFnZSB0aHJvdWdoIHRoZQo+ICsgKiBzY2hlZHVsZXIu Cj4gKyAqIEByaW5nOiBSaW5nIHRvIGJlIGZsdXNoZWQKPiArICogQHRhcmdldDogSmlmZnkgYmFz ZWQgdGltZSBzdGFtcCB0byBmbHVzaCB1cCB0bwo+ICsgKiBAaXNfbG9ja2VkOiBJcyB0aGUgZHJp dmVyIG11dGV4IGxvY2sgaGVsZD8KPiArICogRFJNIGhhcyBhIHRocm90dGxlIGJ5IGFnZSBvZiBy ZXF1ZXN0IGZhY2lsaXR5LiBUaGlzIHJlcXVpcmVzIHdhaXRpbmcgZm9yCj4gKyAqIG91dHN0YW5k aW5nIHdvcmsgb3ZlciBhIGdpdmVuIGFnZS4gVGhpcyBmdW5jdGlvbiBoZWxwcyB0aGF0IGJ5IGZv cmNpbmcKPiArICogcXVldWVkIGJhdGNoIGJ1ZmZlcnMgb3ZlciBzYWlkIGFnZSB0aHJvdWdoIHRo ZSBzeXN0ZW0uCj4gKyAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzIG9yIC1FQUdBSU4gaWYgdGhl IHNjaGVkdWxlciBpcyBidXN5IChlLmcuIHdhaXRpbmcKPiArICogZm9yIGEgcHJlLWVtcHRpb24g ZXZlbnQgdG8gY29tcGxldGUpIGJ1dCB0aGUgbXV0ZXggbG9jayBpcyBoZWxkIHdoaWNoCj4gKyAq IHdvdWxkIHByZXZlbnQgdGhlIHNjaGVkdWxlcidzIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGZy b20gY29tcGxldGluZy4KPiArICovCj4gK2ludCBpOTE1X3NjaGVkdWxlcl9mbHVzaF9zdGFtcChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQnCoMKgwqDCoMKgwqDCoHVuc2lnbmVk IGxvbmcgdGFyZ2V0LAo+ICsJCQnCoMKgwqDCoMKgwqDCoGJvb2wgaXNfbG9ja2VkKQo+ICt7Cj4g KwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKm5vZGU7Cj4gKwlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXY7Cj4gKwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXIgKnNjaGVk dWxlcjsKPiArCWludCBmbHVzaF9jb3VudCA9IDA7Cj4gKwo+ICsJaWYgKCFyaW5nKQo+ICsJCXJl dHVybiAtRUlOVkFMOwo+ICsKPiArCWRldl9wcml2wqDCoD0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0 ZTsKPiArCXNjaGVkdWxlciA9IGRldl9wcml2LT5zY2hlZHVsZXI7Cj4gKwo+ICsJaWYgKCFzY2hl ZHVsZXIpCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJaWYgKGlzX2xvY2tlZCAmJiAoc2NoZWR1bGVy LT5mbGFnc1tyaW5nLT5pZF0gJiBpOTE1X3NmX3N1Ym1pdHRpbmcpKSB7Cj4gKwkJLyoKPiArCQnC oCogU2NoZWR1bGVyIGlzIGJ1c3kgYWxyZWFkeSBzdWJtaXR0aW5nIGFub3RoZXIgYmF0Y2gsCj4g KwkJwqAqIGNvbWUgYmFjayBsYXRlciByYXRoZXIgdGhhbiBnb2luZyByZWN1cnNpdmUuLi4KPiAr CQnCoCovCj4gKwkJcmV0dXJuIC1FQUdBSU47Cj4gKwl9Cj4gKwoKQWdhaW4sIHRoaXMgd291bGQg YmUgaGFuZGxlZCBiZXR0ZXIgYXQgaGlnaGVyIGxldmVsLgoKU28gSSB3b3VsZCBsaWtlIHRvIHNl ZSB0aG9zZSAnaXNfbG9ja2VkJyBhbmQgb3RoZXIgc2ltaWxhciBjb25zdHJ1Y3RzCmZhY3RvcmVk IG91dCBmcm9tIHRoZSBzZXJpZXMuIEl0IHNob3VsZCBtYWtlIHRoZSBjb2RlIG11Y2ggbW9yZSBy b2J1c3QKdG8gbW9kaWZ5IGF0IGxhdGVyIHBvaW50LgoKUmVnYXJkcywgSm9vbmFzCgo+ICsJc3Bp bl9sb2NrX2lycSgmc2NoZWR1bGVyLT5sb2NrKTsKPiArCWk5MTVfc2NoZWR1bGVyX3ByaW9yaXR5 X2J1bXBfY2xlYXIoc2NoZWR1bGVyKTsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJnNj aGVkdWxlci0+bm9kZV9xdWV1ZVtyaW5nLT5pZF0sIGxpbmspIHsKPiArCQlpZiAoIUk5MTVfU1FT X0lTX1FVRVVFRChub2RlKSkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWlmIChub2RlLT5zdGFt cCA+IHRhcmdldCkKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCWZsdXNoX2NvdW50ID0gaTkxNV9z Y2hlZHVsZXJfcHJpb3JpdHlfYnVtcChzY2hlZHVsZXIsCj4gKwkJCQkJbm9kZSwgc2NoZWR1bGVy LT5wcmlvcml0eV9sZXZlbF9tYXgpOwo+ICsJfQo+ICsJc3Bpbl91bmxvY2tfaXJxKCZzY2hlZHVs ZXItPmxvY2spOwo+ICsKPiArCWlmIChmbHVzaF9jb3VudCkgewo+ICsJCURSTV9ERUJVR19EUklW RVIoIjwlcz4gQnVtcGVkICVkIGVudHJpZXNcbiIsIHJpbmctPm5hbWUsIGZsdXNoX2NvdW50KTsK PiArCQlmbHVzaF9jb3VudCA9IGk5MTVfc2NoZWR1bGVyX3N1Ym1pdF9tYXhfcHJpb3JpdHkocmlu ZywgaXNfbG9ja2VkKTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmx1c2hfY291bnQ7Cj4gK30KPiAr Cj4gKy8qKgo+ICsgKiBpOTE1X3NjaGVkdWxlcl9mbHVzaCAtIGZvcmNlIGFsbCByZXF1ZXN0cyB0 aHJvdWdoIHRoZSBzY2hlZHVsZXIuCj4gKyAqIEByaW5nOiBSaW5nIHRvIGJlIGZsdXNoZWQKPiAr ICogQGlzX2xvY2tlZDogSXMgdGhlIGRyaXZlciBtdXRleCBsb2NrIGhlbGQ/Cj4gKyAqIEZvciB2 YXJpb3VzIHJlYXNvbnMgaXQgaXMgc29tZXRpbWVzIG5lY2Vzc2FyeSB0byB0aGUgc2NoZWR1bGVy IG91dCwgZS5nLgo+ICsgKiBkdWUgdG8gcmluZyByZXNldC4KPiArICogUmV0dXJucyB6ZXJvIG9u IHN1Y2Nlc3Mgb3IgLUVBR0FJTiBpZiB0aGUgc2NoZWR1bGVyIGlzIGJ1c3kgKGUuZy4gd2FpdGlu Zwo+ICsgKiBmb3IgYSBwcmUtZW1wdGlvbiBldmVudCB0byBjb21wbGV0ZSkgYnV0IHRoZSBtdXRl eCBsb2NrIGlzIGhlbGQgd2hpY2gKPiArICogd291bGQgcHJldmVudCB0aGUgc2NoZWR1bGVyJ3Mg YXN5bmNocm9ub3VzIHByb2Nlc3NpbmcgZnJvbSBjb21wbGV0aW5nLgo+ICsgKi8KPiAraW50IGk5 MTVfc2NoZWR1bGVyX2ZsdXNoKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGJvb2wgaXNf bG9ja2VkKQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKm5vZGU7 Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXY7Cj4gKwlzdHJ1Y3QgaTkxNV9z Y2hlZHVsZXIgKnNjaGVkdWxlcjsKPiArCWJvb2wgZm91bmQ7Cj4gKwlpbnQgcmV0Owo+ICsJdWlu dDMyX3QgY291bnQgPSAwOwo+ICsKPiArCWlmICghcmluZykKPiArCQlyZXR1cm4gLUVJTlZBTDsK PiArCj4gKwlkZXZfcHJpdsKgwqA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzY2hlZHVs ZXIgPSBkZXZfcHJpdi0+c2NoZWR1bGVyOwo+ICsKPiArCWlmICghc2NoZWR1bGVyKQo+ICsJCXJl dHVybiAwOwo+ICsKPiArCVdBUk5fT04oaXNfbG9ja2VkICYmIChzY2hlZHVsZXItPmZsYWdzW3Jp bmctPmlkXSAmIGk5MTVfc2Zfc3VibWl0dGluZykpOwo+ICsKPiArCWRvIHsKPiArCQlmb3VuZCA9 IGZhbHNlOwo+ICsJCXNwaW5fbG9ja19pcnEoJnNjaGVkdWxlci0+bG9jayk7Cj4gKwkJbGlzdF9m b3JfZWFjaF9lbnRyeShub2RlLCAmc2NoZWR1bGVyLT5ub2RlX3F1ZXVlW3JpbmctPmlkXSwgbGlu aykgewo+ICsJCQlpZiAoIUk5MTVfU1FTX0lTX1FVRVVFRChub2RlKSkKPiArCQkJCWNvbnRpbnVl Owo+ICsKPiArCQkJZm91bmQgPSB0cnVlOwo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwkJc3Bpbl91 bmxvY2tfaXJxKCZzY2hlZHVsZXItPmxvY2spOwo+ICsKPiArCQlpZiAoZm91bmQpIHsKPiArCQkJ aWYgKGlzX2xvY2tlZCkKPiArCQkJCXJldCA9IGk5MTVfc2NoZWR1bGVyX3N1Ym1pdChyaW5nKTsK PiArCQkJZWxzZQo+ICsJCQkJcmV0ID0gaTkxNV9zY2hlZHVsZXJfc3VibWl0X3VubG9ja2VkKHJp bmcpOwo+ICsJCQlpZiAocmV0IDwgMCkKPiArCQkJCXJldHVybiByZXQ7Cj4gKwo+ICsJCQljb3Vu dCArPSByZXQ7Cj4gKwkJfQo+ICsJfSB3aGlsZSAoZm91bmQpOwo+ICsKPiArCXJldHVybiBjb3Vu dDsKPiArfQo+ICsKPiDCoC8qKgo+IMKgICogaTkxNV9zY2hlZHVsZXJfaXNfcmVxdWVzdF90cmFj a2VkIC0gcmV0dXJuIGluZm8gdG8gc2F5IHdoYXQgdGhlIHNjaGVkdWxlcidzCj4gwqAgKiBjb25u ZWN0aW9uIHRvIHRoaXMgcmVxdWVzdCBpcyAoaWYgYW55KS4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc2NoZWR1bGVyLmgKPiBpbmRleCBhODhhZGNlLi44MzliMDQ4IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCj4gQEAgLTk0LDYgKzk0LDkgQEAgaW50IGk5MTVfc2No ZWR1bGVyX3F1ZXVlX2V4ZWNidWZmZXIoc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5 ICpxZSk7Cj4gwqBib29sIGk5MTVfc2NoZWR1bGVyX25vdGlmeV9yZXF1ZXN0KHN0cnVjdCBkcm1f aTkxNV9nZW1fcmVxdWVzdCAqcmVxKTsKPiDCoHZvaWQgaTkxNV9zY2hlZHVsZXJfd2FrZXVwKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+IMKgdm9pZCBpOTE1X3NjaGVkdWxlcl93b3JrX2hhbmRs ZXIoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKTsKPiAraW50IGk5MTVfc2NoZWR1bGVyX2ZsdXNo KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsIGJvb2wgaXNfbG9ja2VkKTsKPiAraW50IGk5 MTVfc2NoZWR1bGVyX2ZsdXNoX3N0YW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4g KwkJCcKgwqDCoMKgwqDCoMKgdW5zaWduZWQgbG9uZyBzdGFtcCwgYm9vbCBpc19sb2NrZWQpOwo+ IMKgYm9vbCBpOTE1X3NjaGVkdWxlcl9pc19yZXF1ZXN0X3RyYWNrZWQoc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXEsCj4gwqAJCQkJwqDCoMKgwqDCoMKgwqBib29sICpjb21wbGV0ZWQs IGJvb2wgKmJ1c3kpOwo+IMKgCi0tIApKb29uYXMgTGFodGluZW4KT3BlbiBTb3VyY2UgVGVjaG5v bG9neSBDZW50ZXIKSW50ZWwgQ29ycG9yYXRpb24KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vaW50ZWwtZ2Z4Cg==