From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Harrison Subject: Re: [PATCH v5 19/35] drm/i915: Added scheduler flush calls to ring throttle and idle functions Date: Fri, 11 Mar 2016 16:22:00 +0000 Message-ID: <56E2F0A8.8070303@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> <1457350294.14727.8.camel@linux.intel.com> 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 C896B6EB07 for ; Fri, 11 Mar 2016 16:22:02 +0000 (UTC) In-Reply-To: <1457350294.14727.8.camel@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen , Intel-GFX@Lists.FreeDesktop.Org List-Id: intel-gfx@lists.freedesktop.org T24gMDcvMDMvMjAxNiAxMTozMSwgSm9vbmFzIExhaHRpbmVuIHdyb3RlOgo+IE9uIHRvLCAyMDE2 LTAyLTE4IGF0IDE0OjI3ICswMDAwLCBKb2huLkMuSGFycmlzb25ASW50ZWwuY29tIHdyb3RlOgo+ PiBGcm9tOiBKb2huIEhhcnJpc29uIDxKb2huLkMuSGFycmlzb25ASW50ZWwuY29tPgo+Pgo+PiBX aGVuIHJlcXVlc3RpbmcgdGhhdCBhbGwgR1BVIHdvcmsgaXMgY29tcGxldGVkLCBpdCBpcyBub3cg bmVjZXNzYXJ5IHRvCj4+IGdldCB0aGUgc2NoZWR1bGVyIGludm9sdmVkIGluIG9yZGVyIHRvIGZs dXNoIG91dCB3b3JrIHRoYXQgcXVldWVkIGFuZAo+PiBub3QgeWV0IHN1Ym1pdHRlZC4KPj4KPj4g djI6IFVwZGF0ZWQgdG8gYWRkIHN1cHBvcnQgZm9yIGZsdXNoaW5nIHRoZSBzY2hlZHVsZXIgcXVl dWUgYnkgdGltZQo+PiBzdGFtcCByYXRoZXIgdGhhbiBqdXN0IGRvaW5nIGEgYmxhbmtldCBmbHVz aC4KPj4KPj4gdjM6IE1vdmVkIHN1Ym1pdF9tYXhfcHJpb3JpdHkoKSB0byB0aGlzIHBhdGNoIGZy b20gYW4gZWFybGllciBwYXRjaAo+PiBpcyBpdCBpcyBubyBsb25nZXIgcmVxdWlyZWQgaW4gdGhl IG90aGVyLgo+Pgo+PiB2NDogQ29ycmVjdGVkIHRoZSBmb3JtYXQgb2YgYSBjb21tZW50IHRvIGtl ZXAgdGhlIHN0eWxlIGNoZWNrZXIgaGFwcHkuCj4+IERvd25ncmFkZWQgYSBCVUdfT04gdG8gYSBX QVJOX09OIGFzIHRoZSBsYXR0ZXIgaXMgcHJlZmVycmVkLgo+Pgo+PiB2NTogU2h1ZmZsZWQgZnVu Y3Rpb25zIGFyb3VuZCB0byByZW1vdmUgZm9yd2FyZCBwcm90b3R5cGVzLCByZW1vdmVkCj4+IHNp bWlsYXJseSBvZmZlbnNpdmUgd2hpdGUgc3BhY2UgYW5kIGFkZGVkIGRvY3VtZW50YXRpb24uIFJl LXdvcmtlZCB0aGUKPj4gbXV0ZXggbG9ja2luZyBhcm91bmQgdGhlIHN1Ym1pdCBmdW5jdGlvbi4g W0pvb25hcyBMYWh0aW5lbl0KPj4KPj4gVXNlZCBsaWdodGVyIHdlaWdodCBzcGlubG9ja3MuCj4+ Cj4+IEZvcjogVklaLTE1ODcKPj4gU2lnbmVkLW9mZi1ieTogSm9obiBIYXJyaXNvbiA8Sm9obi5D LkhhcnJpc29uQEludGVsLmNvbT4KPj4gQ2M6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRp bmVuQGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9nZW0uYyAgICAgICB8ICAyNCArKysrLQo+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf c2NoZWR1bGVyLmMgfCAxNzggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+PiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmggfCAgIDMgKwo+PiAgIDMgZmls ZXMgY2hhbmdlZCwgMjA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPj4KPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbS5jCj4+IGluZGV4IGE0N2E0OTUuLmQ5NDZmNTMgMTAwNjQ0Cj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW0uYwo+PiBAQCAtMzc4Niw2ICszNzg2LDEwIEBAIGludCBpOTE1X2dwdV9p ZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4+ICAgCj4+ICAgCS8qIEZsdXNoIGV2ZXJ5dGhp bmcgb250byB0aGUgaW5hY3RpdmUgbGlzdC4gKi8KPj4gICAJZm9yX2VhY2hfcmluZyhyaW5nLCBk ZXZfcHJpdiwgaSkgewo+PiArCQlyZXQgPSBpOTE1X3NjaGVkdWxlcl9mbHVzaChyaW5nLCB0cnVl KTsKPj4gKwkJaWYgKHJldCA8IDApCj4+ICsJCQlyZXR1cm4gcmV0Owo+PiArCj4+ICAgCQlpZiAo IWk5MTUuZW5hYmxlX2V4ZWNsaXN0cykgewo+PiAgIAkJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxOwo+PiAgIAo+PiBAQCAtNDUxOSw3ICs0NTIzLDggQEAgaTkxNV9nZW1fcmluZ190 aHJvdHRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCj4+ ICAgCXVuc2lnbmVkIGxvbmcgcmVjZW50X2Vub3VnaCA9IGppZmZpZXMgLSBEUk1fSTkxNV9USFJP VFRMRV9KSUZGSUVTOwo+PiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3QgKnJlcXVlc3Qs ICp0YXJnZXQgPSBOVUxMOwo+PiAgIAl1bnNpZ25lZCByZXNldF9jb3VudGVyOwo+PiAtCWludCBy ZXQ7Cj4+ICsJaW50IGksIHJldDsKPj4gKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nOwo+ PiAgIAo+PiAgIAlyZXQgPSBpOTE1X2dlbV93YWl0X2Zvcl9lcnJvcigmZGV2X3ByaXYtPmdwdV9l cnJvcik7Cj4+ICAgCWlmIChyZXQpCj4+IEBAIC00NTI5LDYgKzQ1MzQsMjMgQEAgaTkxNV9nZW1f cmluZ190aHJvdHRsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpCj4+ICAgCWlmIChyZXQpCj4+ICAgCQlyZXR1cm4gcmV0Owo+PiAgIAo+PiArCWZvcl9lYWNo X3JpbmcocmluZywgZGV2X3ByaXYsIGkpIHsKPj4gKwkJLyoKPj4gKwkJICogRmx1c2ggb3V0IHNj aGVkdWxlciBlbnRyaWVzIHRoYXQgYXJlIGdldHRpbmcgJ3N0YWxlJy4gTm90ZQo+PiArCQkgKiB0 aGF0IHRoZSBmb2xsb3dpbmcgcmVjZW50X2Vub3VnaCB0ZXN0IHdpbGwgb25seSBjaGVjawo+PiAr CQkgKiBhZ2FpbnN0IHRoZSB0aW1lIGF0IHdoaWNoIHRoZSByZXF1ZXN0IHdhcyBzdWJtaXR0ZWQg dG8gdGhlCj4+ICsJCSAqIGhhcmR3YXJlIChpLmUuIHdoZW4gaXQgbGVmdCB0aGUgc2NoZWR1bGVy KSBub3QgdGhlIHRpbWUgaXQKPj4gKwkJICogd2FzIHN1Ym1pdHRlZCB0byB0aGUgZHJpdmVyLgo+ PiArCQkgKgo+PiArCQkgKiBBbHNvLCB0aGVyZSBpcyBub3QgbXVjaCBwb2ludCB3b3JyaW5nIGFi b3V0IGJ1c3kgcmV0dXJuCj4+ICsJCSAqIGNvZGVzIGZyb20gdGhlIHNjaGVkdWxlciBmbHVzaCBj YWxsLiBFdmVuIGlmIG1vcmUgd29yawo+PiArCQkgKiBjYW5ub3QgYmUgc3VibWl0dGVkIHJpZ2h0 IG5vdyBmb3Igd2hhdGV2ZXIgcmVhc29uLCB3ZQo+PiArCQkgKiBzdGlsbCB3YW50IHRvIHRocm90 dGxlIGFnYWluc3Qgc3RhbGUgd29yayB0aGF0IGhhcyBhbHJlYWR5Cj4+ICsJCSAqIGJlZW4gc3Vi bWl0dGVkLgo+PiArCQkgKi8KPj4gKwkJaTkxNV9zY2hlZHVsZXJfZmx1c2hfc3RhbXAocmluZywg cmVjZW50X2Vub3VnaCwgZmFsc2UpOwo+PiArCX0KPj4gKwo+PiAgIAlzcGluX2xvY2soJmZpbGVf cHJpdi0+bW0ubG9jayk7Cj4+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkocmVxdWVzdCwgJmZpbGVf cHJpdi0+bW0ucmVxdWVzdF9saXN0LCBjbGllbnRfbGlzdCkgewo+PiAgIAkJaWYgKHRpbWVfYWZ0 ZXJfZXEocmVxdWVzdC0+ZW1pdHRlZF9qaWZmaWVzLCByZWNlbnRfZW5vdWdoKSkKPj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5jCj4+IGluZGV4IGVkYWI2M2QuLjgxMzBhOWMgMTAw NjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc2NoZWR1bGVyLmMKPj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zY2hlZHVsZXIuYwo+PiBAQCAtMzA0LDYgKzMw NCwxMCBAQCBzdGF0aWMgaW50IGk5MTVfc2NoZWR1bGVyX3BvcF9mcm9tX3F1ZXVlX2xvY2tlZChz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiAgICAqIGF0dGVtcHRpbmcgdG8gYWNxdWly ZSBhIG11dGV4IHdoaWxlIGhvbGRpbmcgYSBzcGluIGxvY2sgaXMgYSBCYWQgSWRlYS4KPj4gICAg KiBBbmQgcmVsZWFzaW5nIHRoZSBvbmUgYmVmb3JlIGFjcXVpcmluZyB0aGUgb3RoZXIgbGVhZHMg dG8gb3RoZXIgY29kZQo+PiAgICAqIGJlaW5nIHJ1biBhbmQgaW50ZXJmZXJpbmcuCj4+ICsgKgo+ PiArICogSGVuY2UgYW55IGNhbGxlciB0aGF0IGRvZXMgbm90IGFscmVhZHkgaGF2ZSB0aGUgbXV0 ZXggbG9jayBmb3Igb3RoZXIKPj4gKyAqIHJlYXNvbnMgc2hvdWxkIGNhbGwgaTkxNV9zY2hlZHVs ZXJfc3VibWl0X3VubG9ja2VkKCkgaW5zdGVhZCBpbiBvcmRlciB0bwo+PiArICogb2J0YWluIHRo ZSBsb2NrIGZpcnN0Lgo+PiAgICAqLwo+PiAgIHN0YXRpYyBpbnQgaTkxNV9zY2hlZHVsZXJfc3Vi bWl0KHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcpCj4+ICAgewo+PiBAQCAtNDI4LDYgKzQz MiwyMiBAQCBlcnJvcjoKPj4gICAJcmV0dXJuIHJldDsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMg aW50IGk5MTVfc2NoZWR1bGVyX3N1Ym1pdF91bmxvY2tlZChzdHJ1Y3QgaW50ZWxfZW5naW5lX2Nz ICpyaW5nKQo+PiArewo+PiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSByaW5nLT5kZXY7Cj4+ ICsJaW50IHJldDsKPj4gKwo+PiArCXJldCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxl KGRldik7Cj4+ICsJaWYgKHJldCkKPj4gKwkJcmV0dXJuIHJldDsKPj4gKwo+PiArCXJldCA9IGk5 MTVfc2NoZWR1bGVyX3N1Ym1pdChyaW5nKTsKPj4gKwo+PiArCW11dGV4X3VubG9jaygmZGV2LT5z dHJ1Y3RfbXV0ZXgpOwo+PiArCj4+ICsJcmV0dXJuIHJldDsKPj4gK30KPj4gKwo+IFRoaXMga2lu ZCBvZiBjb2RlIHNob3VsZCByZWFsbHkgYmUgZmFjdG9yZWQgdG8gdXBwZXIgbGV2ZWwgZnVuY3Rp b25zLgpTZWUgYmVsb3cuCgo+PiAgIHN0YXRpYyB2b2lkIGk5MTVfZ2VuZXJhdGVfZGVwZW5kZW5j aWVzKHN0cnVjdCBpOTE1X3NjaGVkdWxlciAqc2NoZWR1bGVyLAo+PiAgIAkJCQkgICAgICAgc3Ry dWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpub2RlLAo+PiAgIAkJCQkgICAgICAgdWlu dDMyX3QgcmluZykKPj4gQEAgLTkxNyw2ICs5MzcsMTY0IEBAIHZvaWQgaTkxNV9zY2hlZHVsZXJf d29ya19oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKPj4gICAJCWk5MTVfc2NoZWR1 bGVyX3Byb2Nlc3Nfd29yayhyaW5nKTsKPj4gICB9Cj4+ICAgCj4+ICtzdGF0aWMgaW50IGk5MTVf c2NoZWR1bGVyX3N1Ym1pdF9tYXhfcHJpb3JpdHkoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKPj4gKwkJCQkJICAgICAgYm9vbCBpc19sb2NrZWQpCj4+ICt7Cj4+ICsJc3RydWN0IGk5MTVf c2NoZWR1bGVyX3F1ZXVlX2VudHJ5ICpub2RlOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJc3RydWN0IGk5MTVfc2No ZWR1bGVyICpzY2hlZHVsZXIgPSBkZXZfcHJpdi0+c2NoZWR1bGVyOwo+PiArCWludCByZXQsIGNv dW50ID0gMDsKPj4gKwlib29sIGZvdW5kOwo+PiArCj4+ICsJZG8gewo+PiArCQlmb3VuZCA9IGZh bHNlOwo+PiArCQlzcGluX2xvY2tfaXJxKCZzY2hlZHVsZXItPmxvY2spOwo+PiArCQlsaXN0X2Zv cl9lYWNoX2VudHJ5KG5vZGUsICZzY2hlZHVsZXItPm5vZGVfcXVldWVbcmluZy0+aWRdLCBsaW5r KSB7Cj4+ICsJCQlpZiAoIUk5MTVfU1FTX0lTX1FVRVVFRChub2RlKSkKPj4gKwkJCQljb250aW51 ZTsKPj4gKwo+PiArCQkJaWYgKG5vZGUtPnByaW9yaXR5IDwgc2NoZWR1bGVyLT5wcmlvcml0eV9s ZXZlbF9tYXgpCj4+ICsJCQkJY29udGludWU7Cj4+ICsKPj4gKwkJCWZvdW5kID0gdHJ1ZTsKPj4g KwkJCWJyZWFrOwo+PiArCQl9Cj4+ICsJCXNwaW5fdW5sb2NrX2lycSgmc2NoZWR1bGVyLT5sb2Nr KTsKPj4gKwo+PiArCQlpZiAoIWZvdW5kKQo+PiArCQkJYnJlYWs7Cj4+ICsKPj4gKwkJaWYgKGlz X2xvY2tlZCkKPj4gKwkJCXJldCA9IGk5MTVfc2NoZWR1bGVyX3N1Ym1pdChyaW5nKTsKPj4gKwkJ ZWxzZQo+PiArCQkJcmV0ID0gaTkxNV9zY2hlZHVsZXJfc3VibWl0X3VubG9ja2VkKHJpbmcpOwo+ IFRoZSB3aWRlc3ByZWFkIHVzZSBvZiAnaXNfbG9ja2VkJyBub3RhdGlvbiBpcyByZWFsbHkgYm90 aGVyaW5nIG1lLCBJCj4gdGhpbmsgdGhlIGRpZmZlcmVuY2UgaW4gY29kZSBwYXRoIHNob3VsZCBi ZSBoYW5kbGVkIGluIHRoZSB1cHBlciBsZXZlbCwKPiBpbnN0ZWFkIG9mIGJlaW5nIHBhc3NlZCBk b3duLCBmb3IgZXhhbXBsZSB0aGlzIHdpbGwgY2F1c2UgcmVwZXRpdGl2ZQo+IGxvY2svdW5sb2Nr IGluIGxvb3AuCk15IGFpbSBoYXMgYmVlbiB0byB0cnkgdG8ga2VlcCB0aGUgYW1vdW50IG9mIGNv ZGUgaW5zaWRlIGFueSBnaXZlbiBsb2NrIAp0byB0aGUgYWJzb2x1dGUgbWluaW11bS4gT25lIGNv dWxkIGp1c3QgcHVzaCB0aGUgbXV0ZXggbG9jayBhY3F1aXJlIGFsbCAKdGhlIHdheSB1cCB0byB0 aGUgdG9wIGxldmVsIGJlZm9yZSBhbnkgb2YgdGhlIHNjaGVkdWxlciBjb2RlIGlzIGNhbGxlZC4g ClRvIG1lLCB0aGF0IGp1c3Qgc2VlbXMgYW4gZXhjZXNzaXZlIGFuZCB1bm5lY2Vzc2FyeSBob2cg b2YgdGhlIGdsb2JhbCAKZHJpdmVyIGxvY2suCgoKPgo+PiArCQlpZiAocmV0IDwgMCkKPj4gKwkJ CXJldHVybiByZXQ7Cj4+ICsKPj4gKwkJY291bnQgKz0gcmV0Owo+PiArCX0gd2hpbGUgKGZvdW5k KTsKPj4gKwo+PiArCXJldHVybiBjb3VudDsKPj4gK30KPj4gKwo+PiArLyoqCj4+ICsgKiBpOTE1 X3NjaGVkdWxlcl9mbHVzaF9zdGFtcCAtIGZvcmNlIHJlcXVlc3RzIG9mIGEgZ2l2ZW4gYWdlIHRo cm91Z2ggdGhlCj4+ICsgKiBzY2hlZHVsZXIuCj4+ICsgKiBAcmluZzogUmluZyB0byBiZSBmbHVz aGVkCj4+ICsgKiBAdGFyZ2V0OiBKaWZmeSBiYXNlZCB0aW1lIHN0YW1wIHRvIGZsdXNoIHVwIHRv Cj4+ICsgKiBAaXNfbG9ja2VkOiBJcyB0aGUgZHJpdmVyIG11dGV4IGxvY2sgaGVsZD8KPj4gKyAq IERSTSBoYXMgYSB0aHJvdHRsZSBieSBhZ2Ugb2YgcmVxdWVzdCBmYWNpbGl0eS4gVGhpcyByZXF1 aXJlcyB3YWl0aW5nIGZvcgo+PiArICogb3V0c3RhbmRpbmcgd29yayBvdmVyIGEgZ2l2ZW4gYWdl LiBUaGlzIGZ1bmN0aW9uIGhlbHBzIHRoYXQgYnkgZm9yY2luZwo+PiArICogcXVldWVkIGJhdGNo IGJ1ZmZlcnMgb3ZlciBzYWlkIGFnZSB0aHJvdWdoIHRoZSBzeXN0ZW0uCj4+ICsgKiBSZXR1cm5z IHplcm8gb24gc3VjY2VzcyBvciAtRUFHQUlOIGlmIHRoZSBzY2hlZHVsZXIgaXMgYnVzeSAoZS5n LiB3YWl0aW5nCj4+ICsgKiBmb3IgYSBwcmUtZW1wdGlvbiBldmVudCB0byBjb21wbGV0ZSkgYnV0 IHRoZSBtdXRleCBsb2NrIGlzIGhlbGQgd2hpY2gKPj4gKyAqIHdvdWxkIHByZXZlbnQgdGhlIHNj aGVkdWxlcidzIGFzeW5jaHJvbm91cyBwcm9jZXNzaW5nIGZyb20gY29tcGxldGluZy4KPj4gKyAq Lwo+PiAraW50IGk5MTVfc2NoZWR1bGVyX2ZsdXNoX3N0YW1wKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKnJpbmcsCj4+ICsJCQkgICAgICAgdW5zaWduZWQgbG9uZyB0YXJnZXQsCj4+ICsJCQkgICAg ICAgYm9vbCBpc19sb2NrZWQpCj4+ICt7Cj4+ICsJc3RydWN0IGk5MTVfc2NoZWR1bGVyX3F1ZXVl X2VudHJ5ICpub2RlOwo+PiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdjsKPj4g KwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXIgKnNjaGVkdWxlcjsKPj4gKwlpbnQgZmx1c2hfY291bnQg PSAwOwo+PiArCj4+ICsJaWYgKCFyaW5nKQo+PiArCQlyZXR1cm4gLUVJTlZBTDsKPj4gKwo+PiAr CWRldl9wcml2ICA9IHJpbmctPmRldi0+ZGV2X3ByaXZhdGU7Cj4+ICsJc2NoZWR1bGVyID0gZGV2 X3ByaXYtPnNjaGVkdWxlcjsKPj4gKwo+PiArCWlmICghc2NoZWR1bGVyKQo+PiArCQlyZXR1cm4g MDsKPj4gKwo+PiArCWlmIChpc19sb2NrZWQgJiYgKHNjaGVkdWxlci0+ZmxhZ3NbcmluZy0+aWRd ICYgaTkxNV9zZl9zdWJtaXR0aW5nKSkgewo+PiArCQkvKgo+PiArCQkgKiBTY2hlZHVsZXIgaXMg YnVzeSBhbHJlYWR5IHN1Ym1pdHRpbmcgYW5vdGhlciBiYXRjaCwKPj4gKwkJICogY29tZSBiYWNr IGxhdGVyIHJhdGhlciB0aGFuIGdvaW5nIHJlY3Vyc2l2ZS4uLgo+PiArCQkgKi8KPj4gKwkJcmV0 dXJuIC1FQUdBSU47Cj4+ICsJfQo+PiArCj4gQWdhaW4sIHRoaXMgd291bGQgYmUgaGFuZGxlZCBi ZXR0ZXIgYXQgaGlnaGVyIGxldmVsLgo+Cj4gU28gSSB3b3VsZCBsaWtlIHRvIHNlZSB0aG9zZSAn aXNfbG9ja2VkJyBhbmQgb3RoZXIgc2ltaWxhciBjb25zdHJ1Y3RzCj4gZmFjdG9yZWQgb3V0IGZy b20gdGhlIHNlcmllcy4gSXQgc2hvdWxkIG1ha2UgdGhlIGNvZGUgbXVjaCBtb3JlIHJvYnVzdAo+ IHRvIG1vZGlmeSBhdCBsYXRlciBwb2ludC4KQXMgYWJvdmUuIFRoZXJlIGlzIG5vIG5lZWQgdG8g bG9jayB0aGUgZ2xvYmFsIGRyaXZlciBtdXRleCB3aGlsZSBkb2luZyAKaW50ZXJuYWwgc2NoZWR1 bGVyIHByb2Nlc3NpbmcuIElmIHlvdSB0aGluayB0aGUgdHJhZGUgb2ZmIG9mIHVubmVjZXNzYXJ5 IApsb2NraW5nIGZvciBjb2RlIHNpbXBsaWZpY2F0aW9uIGlzIGJlc3QgYXMganVzdCBsb2NrIGFu ZCBiZSBzaW1wbGUgdGhlbiAKc3VyZSwgYWxsIHRoZSAnaXNfbG9ja2VkJyBzdHVmZiBjYW4gZGlz YXBwZWFyLiBPdGhlcndpc2UsIEkgZG9uJ3Qgc2VlIAphbnkgZWFzeSB3YXkgdG8gZGVsYXkgdGhl IG11dGV4IGxvY2sgdW50aWwgaXQgaXMgYWN0dWFsbHkgcmVxdWlyZWQuCgo+Cj4gUmVnYXJkcywg Sm9vbmFzCj4KPj4gKwlzcGluX2xvY2tfaXJxKCZzY2hlZHVsZXItPmxvY2spOwo+PiArCWk5MTVf c2NoZWR1bGVyX3ByaW9yaXR5X2J1bXBfY2xlYXIoc2NoZWR1bGVyKTsKPj4gKwlsaXN0X2Zvcl9l YWNoX2VudHJ5KG5vZGUsICZzY2hlZHVsZXItPm5vZGVfcXVldWVbcmluZy0+aWRdLCBsaW5rKSB7 Cj4+ICsJCWlmICghSTkxNV9TUVNfSVNfUVVFVUVEKG5vZGUpKQo+PiArCQkJY29udGludWU7Cj4+ ICsKPj4gKwkJaWYgKG5vZGUtPnN0YW1wID4gdGFyZ2V0KQo+PiArCQkJY29udGludWU7Cj4+ICsK Pj4gKwkJZmx1c2hfY291bnQgPSBpOTE1X3NjaGVkdWxlcl9wcmlvcml0eV9idW1wKHNjaGVkdWxl ciwKPj4gKwkJCQkJbm9kZSwgc2NoZWR1bGVyLT5wcmlvcml0eV9sZXZlbF9tYXgpOwo+PiArCX0K Pj4gKwlzcGluX3VubG9ja19pcnEoJnNjaGVkdWxlci0+bG9jayk7Cj4+ICsKPj4gKwlpZiAoZmx1 c2hfY291bnQpIHsKPj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiPCVzPiBCdW1wZWQgJWQgZW50cmll c1xuIiwgcmluZy0+bmFtZSwgZmx1c2hfY291bnQpOwo+PiArCQlmbHVzaF9jb3VudCA9IGk5MTVf c2NoZWR1bGVyX3N1Ym1pdF9tYXhfcHJpb3JpdHkocmluZywgaXNfbG9ja2VkKTsKPj4gKwl9Cj4+ ICsKPj4gKwlyZXR1cm4gZmx1c2hfY291bnQ7Cj4+ICt9Cj4+ICsKPj4gKy8qKgo+PiArICogaTkx NV9zY2hlZHVsZXJfZmx1c2ggLSBmb3JjZSBhbGwgcmVxdWVzdHMgdGhyb3VnaCB0aGUgc2NoZWR1 bGVyLgo+PiArICogQHJpbmc6IFJpbmcgdG8gYmUgZmx1c2hlZAo+PiArICogQGlzX2xvY2tlZDog SXMgdGhlIGRyaXZlciBtdXRleCBsb2NrIGhlbGQ/Cj4+ICsgKiBGb3IgdmFyaW91cyByZWFzb25z IGl0IGlzIHNvbWV0aW1lcyBuZWNlc3NhcnkgdG8gdGhlIHNjaGVkdWxlciBvdXQsIGUuZy4KPj4g KyAqIGR1ZSB0byByaW5nIHJlc2V0Lgo+PiArICogUmV0dXJucyB6ZXJvIG9uIHN1Y2Nlc3Mgb3Ig LUVBR0FJTiBpZiB0aGUgc2NoZWR1bGVyIGlzIGJ1c3kgKGUuZy4gd2FpdGluZwo+PiArICogZm9y IGEgcHJlLWVtcHRpb24gZXZlbnQgdG8gY29tcGxldGUpIGJ1dCB0aGUgbXV0ZXggbG9jayBpcyBo ZWxkIHdoaWNoCj4+ICsgKiB3b3VsZCBwcmV2ZW50IHRoZSBzY2hlZHVsZXIncyBhc3luY2hyb25v dXMgcHJvY2Vzc2luZyBmcm9tIGNvbXBsZXRpbmcuCj4+ICsgKi8KPj4gK2ludCBpOTE1X3NjaGVk dWxlcl9mbHVzaChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLCBib29sIGlzX2xvY2tlZCkK Pj4gK3sKPj4gKwlzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKm5vZGU7Cj4+ICsJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2Owo+PiArCXN0cnVjdCBpOTE1X3NjaGVk dWxlciAqc2NoZWR1bGVyOwo+PiArCWJvb2wgZm91bmQ7Cj4+ICsJaW50IHJldDsKPj4gKwl1aW50 MzJfdCBjb3VudCA9IDA7Cj4+ICsKPj4gKwlpZiAoIXJpbmcpCj4+ICsJCXJldHVybiAtRUlOVkFM Owo+PiArCj4+ICsJZGV2X3ByaXYgID0gcmluZy0+ZGV2LT5kZXZfcHJpdmF0ZTsKPj4gKwlzY2hl ZHVsZXIgPSBkZXZfcHJpdi0+c2NoZWR1bGVyOwo+PiArCj4+ICsJaWYgKCFzY2hlZHVsZXIpCj4+ ICsJCXJldHVybiAwOwo+PiArCj4+ICsJV0FSTl9PTihpc19sb2NrZWQgJiYgKHNjaGVkdWxlci0+ ZmxhZ3NbcmluZy0+aWRdICYgaTkxNV9zZl9zdWJtaXR0aW5nKSk7Cj4+ICsKPj4gKwlkbyB7Cj4+ ICsJCWZvdW5kID0gZmFsc2U7Cj4+ICsJCXNwaW5fbG9ja19pcnEoJnNjaGVkdWxlci0+bG9jayk7 Cj4+ICsJCWxpc3RfZm9yX2VhY2hfZW50cnkobm9kZSwgJnNjaGVkdWxlci0+bm9kZV9xdWV1ZVty aW5nLT5pZF0sIGxpbmspIHsKPj4gKwkJCWlmICghSTkxNV9TUVNfSVNfUVVFVUVEKG5vZGUpKQo+ PiArCQkJCWNvbnRpbnVlOwo+PiArCj4+ICsJCQlmb3VuZCA9IHRydWU7Cj4+ICsJCQlicmVhazsK Pj4gKwkJfQo+PiArCQlzcGluX3VubG9ja19pcnEoJnNjaGVkdWxlci0+bG9jayk7Cj4+ICsKPj4g KwkJaWYgKGZvdW5kKSB7Cj4+ICsJCQlpZiAoaXNfbG9ja2VkKQo+PiArCQkJCXJldCA9IGk5MTVf c2NoZWR1bGVyX3N1Ym1pdChyaW5nKTsKPj4gKwkJCWVsc2UKPj4gKwkJCQlyZXQgPSBpOTE1X3Nj aGVkdWxlcl9zdWJtaXRfdW5sb2NrZWQocmluZyk7Cj4+ICsJCQlpZiAocmV0IDwgMCkKPj4gKwkJ CQlyZXR1cm4gcmV0Owo+PiArCj4+ICsJCQljb3VudCArPSByZXQ7Cj4+ICsJCX0KPj4gKwl9IHdo aWxlIChmb3VuZCk7Cj4+ICsKPj4gKwlyZXR1cm4gY291bnQ7Cj4+ICt9Cj4+ICsKPj4gICAvKioK Pj4gICAgKiBpOTE1X3NjaGVkdWxlcl9pc19yZXF1ZXN0X3RyYWNrZWQgLSByZXR1cm4gaW5mbyB0 byBzYXkgd2hhdCB0aGUgc2NoZWR1bGVyJ3MKPj4gICAgKiBjb25uZWN0aW9uIHRvIHRoaXMgcmVx dWVzdCBpcyAoaWYgYW55KS4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfc2NoZWR1bGVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3NjaGVkdWxlci5oCj4+ IGluZGV4IGE4OGFkY2UuLjgzOWIwNDggMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfc2NoZWR1bGVyLmgKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9z Y2hlZHVsZXIuaAo+PiBAQCAtOTQsNiArOTQsOSBAQCBpbnQgaTkxNV9zY2hlZHVsZXJfcXVldWVf ZXhlY2J1ZmZlcihzdHJ1Y3QgaTkxNV9zY2hlZHVsZXJfcXVldWVfZW50cnkgKnFlKTsKPj4gICBi b29sIGk5MTVfc2NoZWR1bGVyX25vdGlmeV9yZXF1ZXN0KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVx dWVzdCAqcmVxKTsKPj4gICB2b2lkIGk5MTVfc2NoZWR1bGVyX3dha2V1cChzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KTsKPj4gICB2b2lkIGk5MTVfc2NoZWR1bGVyX3dvcmtfaGFuZGxlcihzdHJ1Y3Qg d29ya19zdHJ1Y3QgKndvcmspOwo+PiAraW50IGk5MTVfc2NoZWR1bGVyX2ZsdXNoKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKnJpbmcsIGJvb2wgaXNfbG9ja2VkKTsKPj4gK2ludCBpOTE1X3NjaGVk dWxlcl9mbHVzaF9zdGFtcChzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiArCQkJICAg ICAgIHVuc2lnbmVkIGxvbmcgc3RhbXAsIGJvb2wgaXNfbG9ja2VkKTsKPj4gICBib29sIGk5MTVf c2NoZWR1bGVyX2lzX3JlcXVlc3RfdHJhY2tlZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3Qg KnJlcSwKPj4gICAJCQkJICAgICAgIGJvb2wgKmNvbXBsZXRlZCwgYm9vbCAqYnVzeSk7Cj4+ICAg CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK