From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 4/5] drm/i915: Introduce a non-blocking power domain for vblank interrupts Date: Wed, 6 Dec 2017 15:54:14 -0800 Message-ID: <20171206235414.b6eqeuuo5pos3fnb@intel.com> References: <20171206224741.8600-1-dhinakaran.pandiyan@intel.com> <20171206224741.8600-4-dhinakaran.pandiyan@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <20171206224741.8600-4-dhinakaran.pandiyan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Dhinakaran Pandiyan Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBEZWMgMDYsIDIwMTcgYXQgMTA6NDc6NDBQTSArMDAwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBXaGVuIERDIHN0YXRlcyBhcmUgZW5hYmxlZCBhbmQgUFNSIGlzIGFjdGl2 ZSwgdGhlIGhhcmR3YXJlIGVudGVycyBEQzUvREM2Cj4gc3RhdGVzIHJlc3VsdGluZyBpbiBmcmFt ZSBjb3VudGVyIHJlc2V0cy4gVGhlIGZyYW1lIGNvdW50ZXIgcmVzZXRzIG1lc3MKPiB1cCB0aGUg dmJsYW5rIGNvdW50aW5nIGxvZ2ljLiBTbyBpbiBvcmRlciB0byBkaXNhYmxlIERDIHN0YXRlcyB3 aGVuCj4gdmJsYW5rIGludGVycnVwdHMgYXJlIHJlcXVpcmVkIGFuZCB0byBkaXNhbGxvdyBEQyBz dGF0ZXMgd2hlbiB2YmxhbmtzCj4gaW50ZXJydXB0cyBhcmUgYWxyZWFkeSBlbmFibGVkLCBpbnRy b2R1Y2UgYSBuZXcgcG93ZXIgZG9tYWluLiBTaW5jZSB0aGlzCj4gcG93ZXIgZG9tYWluIHJlZmVy ZW5jZSBuZWVkcyB0byBiZSBhY3F1aXJlZCBhbmQgcmVsZWFzZWQgaW4gYXRvbWljIGNvbnRleHQs Cj4gdGhlIGNvcnJlc3BvbmRpbmcgX2dldCgpIGFuZCBfcHV0KCkgbWV0aG9kcyBza2lwIHRoZSBw b3dlcl9kb21haW4gbXV0ZXguCgpcby8KCj4gCj4gU2lnbmVkLW9mZi1ieTogRGhpbmFrYXJhbiBQ YW5kaXlhbiA8ZGhpbmFrYXJhbi5wYW5kaXlhbkBpbnRlbC5jb20+Cj4gLS0tCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICAgNSArKwo+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgfCAgIDMgKy0KPiAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr KystCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTI4IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0p Cj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggMThkNDI4ODUyMDViLi5iYTkxMDdl YzFlZDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzk3LDYgKzM5Nyw3IEBA IGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gewo+ICAJUE9XRVJfRE9NQUlOX0FVWF9D LAo+ICAJUE9XRVJfRE9NQUlOX0FVWF9ELAo+ICAJUE9XRVJfRE9NQUlOX0dNQlVTLAo+ICsJUE9X RVJfRE9NQUlOX1ZCTEFOSywKPiAgCVBPV0VSX0RPTUFJTl9NT0RFU0VULAo+ICAJUE9XRVJfRE9N QUlOX0lOSVQsCj4gIAo+IEBAIC0xNDc1LDYgKzE0NzYsMTAgQEAgc3RydWN0IGk5MTVfcG93ZXJf d2VsbCB7Cj4gIAkJCWJvb2wgaGFzX3ZnYToxOwo+ICAJCQlib29sIGhhc19mdXNlczoxOwo+ICAJ CX0gaHN3Owo+ICsJCXN0cnVjdCB7Cj4gKwkJCXNwaW5sb2NrX3QgbG9jazsKPiArCQkJYm9vbCB3 YXNfZGlzYWJsZWQ7Cj4gKwkJfSBkY19vZmY7Cgp3aGF0IGFib3V0IGEgbW9yZSBnZW5lcmljIG5h bWUgaGVyZT8Kc29tZXRoaW5nIGxpa2UKCisJCXN0cnVjdCB7CisJCQlzcGlubG9ja190IGxvY2s7 CisJCQlib29sIHdhc19kaXNhYmxlZDsKKwkJfSBhdG9taWM7CisJCWlzX2F0b21pYzsgLy9vciBu ZWVkc19hdG9taWMKCnNvLi4uCgo+ICAJfTsKPiAgCWNvbnN0IHN0cnVjdCBpOTE1X3Bvd2VyX3dl bGxfb3BzICpvcHM7Cj4gIH07Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCAzMGY3 OTFmODlkNjQuLjkzY2E1MDNmMThiYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g QEAgLTE4NjUsNyArMTg2NSw4IEBAIHZvaWQgY2h2X3BoeV9wb3dlcmdhdGVfbGFuZXMoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAkJCSAgICAgYm9vbCBvdmVycmlkZSwgdW5zaWdu ZWQgaW50IG1hc2spOwo+ICBib29sIGNodl9waHlfcG93ZXJnYXRlX2NoKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBkcGlvX3BoeSBwaHksCj4gIAkJCSAgZW51bSBkcGlv X2NoYW5uZWwgY2gsIGJvb2wgb3ZlcnJpZGUpOwo+IC0KPiArYm9vbCBpbnRlbF9kaXNwbGF5X3Bv d2VyX3ZibGFua19nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9p ZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3ZibGFua19wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KTsKPiAgCj4gIC8qIGludGVsX3BtLmMgKi8KPiAgdm9pZCBpbnRlbF9pbml0X2Ns b2NrX2dhdGluZyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBpbmRleCBmODhmMmMwNzBjNWYuLmYxODA3 YmQ3NDI0MiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1l X3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBA QCAtMTI2LDYgKzEyNiw4IEBAIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3N0cihlbnVtIGlu dGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbikKPiAgCQlyZXR1cm4gIkFVWF9EIjsKPiAg CWNhc2UgUE9XRVJfRE9NQUlOX0dNQlVTOgo+ICAJCXJldHVybiAiR01CVVMiOwo+ICsJY2FzZSBQ T1dFUl9ET01BSU5fVkJMQU5LOgo+ICsJCXJldHVybiAiVkJMQU5LIjsKPiAgCWNhc2UgUE9XRVJf RE9NQUlOX0lOSVQ6Cj4gIAkJcmV0dXJuICJJTklUIjsKPiAgCWNhc2UgUE9XRVJfRE9NQUlOX01P REVTRVQ6Cj4gQEAgLTE5NiwxMCArMTk4LDE3IEBAIGJvb2wgX19pbnRlbF9kaXNwbGF5X3Bvd2Vy X2lzX2VuYWJsZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWlmIChw b3dlcl93ZWxsLT5hbHdheXNfb24pCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiAtCQlpZiAoIXBvd2Vy X3dlbGwtPmh3X2VuYWJsZWQpIHsKPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1Bf UFdfRENfT0ZGKQo+ICsJCQlzcGluX2xvY2soJnBvd2VyX3dlbGwtPmRjX29mZi5sb2NrKTsKCi4u LiBpbnN0ZWFkIG9mIGEgc3BlY2lmIHB3IGNoZWNrIGhlcmUgeW91IHdvdWxkIGhhdmUKCisJaWYg KHBvd2VyX3dlbGwtPmlzX2F0b21pYykKKwkJc3Bpbl9sb2NrKCZwb3dlcl93ZWxsLT5hdG9taWMu bG9jaykKCj4gKwo+ICsJCWlmICghcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCkKPiAgCQkJaXNfZW5h YmxlZCA9IGZhbHNlOwo+ICsKPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1BfUFdf RENfT0ZGKQo+ICsJCQlzcGluX3VubG9jaygmcG93ZXJfd2VsbC0+ZGNfb2ZmLmxvY2spOwo+ICsK PiArCQlpZiAoIWlzX2VuYWJsZWQpCj4gIAkJCWJyZWFrOwo+IC0JCX0KPiAgCX0KPiAgCj4gIAly ZXR1cm4gaXNfZW5hYmxlZDsKPiBAQCAtNzI0LDYgKzczMyw3IEBAIHN0YXRpYyB2b2lkIGdlbjlf ZGNfb2ZmX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJc2tsX2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoZGV2X3ByaXYt PmNzci5hbGxvd2VkX2RjX21hc2sgJiBEQ19TVEFURV9FTl9VUFRPX0RDNSkKPiAgCQlnZW45X2Vu YWJsZV9kYzUoZGV2X3ByaXYpOwo+ICsJcG93ZXJfd2VsbC0+ZGNfb2ZmLndhc19kaXNhYmxlZCA9 IHRydWU7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGk5eHhfcG93ZXJfd2VsbF9zeW5jX2h3X25v b3Aoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC0xNDQxLDYgKzE0NTEs NzcgQEAgc3RhdGljIHZvaWQgY2h2X3BpcGVfcG93ZXJfd2VsbF9kaXNhYmxlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWNodl9zZXRfcGlwZV9wb3dlcl93ZWxsKGRldl9w cml2LCBwb3dlcl93ZWxsLCBmYWxzZSk7Cj4gIH0KPiAgCj4gKy8qKgo+ICsgKiBpbnRlbF9kaXNw bGF5X3Bvd2VyX3ZibGFua19nZXQgLSBhY3F1aXJlIGEgVkJMQU5LIHBvd2VyIGRvbWFpbiByZWZl cmVuY2UgYXRvbWljYWxseQo+ICsgKiBAZGV2X3ByaXY6IGk5MTUgZGV2aWNlIGluc3RhbmNlCj4g KyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBhIFBPV0VSX0RPTUFJTl9WQkxBTksgcmVmZXJl bmNlIHdpdGhvdXQgYmxvY2tpbmcgYW5kCj4gKyAqIHJldHVybnMgdHJ1ZSBpZiB0aGUgRENfT0ZG IHBvd2VyIHdlbGwgd2FzIGRpc2FibGVkIHNpbmNlIHRoaXMgZnVuY3Rpb24gd2FzCj4gKyAqIGNh bGxlZCB0aGUgbGFzdCB0aW1lLgo+ICsgKi8KPiArYm9vbCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3Zi bGFua19nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlzdHJ1 Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9wcml2LT5wb3dlcl9k b21haW5zOwo+ICsJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKPiArCWJvb2wg bmVlZHNfcmVzdG9yZSA9IGZhbHNlOwo+ICsKPiArCWlmICghSEFTX0NTUihkZXZfcHJpdikgfHwg IWRldl9wcml2LT5wc3Iuc291cmNlX29rKQo+ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwkvKiBU aGUgY29ycmVzcG9uZGluZyBDUlRDIHNob3VsZCBiZSBhY3RpdmUgYnkgdGhlIHRpbWUgZHJpdmVy IHR1cm5zIG9uCj4gKwkgKiB2YmxhbmsgaW50ZXJydXB0cywgd2hpY2ggaW4gdHVybiBtZWFucyB0 aGUgZW5hYmxlZCBwaXBlIHBvd2VyIGRvbWFpbgo+ICsJICogd291bGQgaGF2ZSBhY3F1aXJlZCB0 aGUgZGV2aWNlIHJ1bnRpbWUgcG0gcmVmZXJlbmNlLgo+ICsJICovCj4gKwlpbnRlbF9ydW50aW1l X3BtX2dldF9pZl9pbl91c2UoZGV2X3ByaXYpOwo+ICsKPiArCWZvcl9lYWNoX3Bvd2VyX2RvbWFp bl93ZWxsKGRldl9wcml2LCAgcG93ZXJfd2VsbCwgQklUX1VMTChQT1dFUl9ET01BSU5fVkJMQU5L KSkgewo+ICsJCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBTS0xfRElTUF9QV19EQ19PRkYpCj4gKwkJ CXNwaW5fbG9jaygmcG93ZXJfd2VsbC0+ZGNfb2ZmLmxvY2spOwo+ICsKPiArCQlpbnRlbF9wb3dl cl93ZWxsX2dldChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gKwo+ICsJCWlmIChwb3dlcl93ZWxs LT5pZCA9PSBTS0xfRElTUF9QV19EQ19PRkYpIHsKPiArCQkJbmVlZHNfcmVzdG9yZSA9IHBvd2Vy X3dlbGwtPmRjX29mZi53YXNfZGlzYWJsZWQ7Cj4gKwkJCXBvd2VyX3dlbGwtPmRjX29mZi53YXNf ZGlzYWJsZWQgPSBmYWxzZTsKPiArCQkJc3Bpbl91bmxvY2soJnBvd2VyX3dlbGwtPmRjX29mZi5s b2NrKTsKCkkgZG9uJ3QgdW5kZXJzdGFuZCB3aHkgeW91IG5lZWQgdGhlIHdhc19kaXNhYmxlZCBo ZXJlIGFuZCBub3QgdGhlIGNvdW50ZXIgbGlrZQp0aGUgcmVndWxhciBwdz8KCkJ1dCBhbHNvIG92 ZXJhbGwgSSBjYW4ndCBzZWUgaG93IHRoaXMgaXMgYXZvaWRpbmcgdGhlIG11dGV4X2xvY2soJnBv d2VyX2RvbWFpbnMtPmxvY2spOwppbiBnZW5lcmFsLiBJcyB0aGVyZSBhIHdheSB0byBtYWtlIGl0 IG1vcmUgZ2VuZXJpYyBpbiBhIHdheSB0aGF0IHdlIGNvdWxkIGRlZmluZSBhdG9taWMgcHcgYW5k IHJlZ3VsYXIgcHcKYW5kIHdlIGNvdWxkIHNlZSB3aGljaCBvbmUgd291bGQgYmUgdGFraW5nIHRo ZSBhdG9taWMgcGF0aCBlYXNpbHk/CgpUaGFua3MsClJvZHJpZ28uCgo+ICsJCX0KPiArCX0KPiAr CWF0b21pY19pbmMoJnBvd2VyX2RvbWFpbnMtPmRvbWFpbl91c2VfY291bnRbUE9XRVJfRE9NQUlO X1ZCTEFOS10pOwo+ICsKPiArCXJldHVybiBuZWVkc19yZXN0b3JlOwo+ICt9Cj4gKwo+ICsvKioK PiArICogaW50ZWxfZGlzcGxheV9wb3dlcl92YmxhbmtfcHV0IC0gZHJvcCBhIFZCTEFOSyBwb3dl ciBkb21haW4gcmVmZXJlbmNlIGF0b21pY2FsbHkKPiArICoKPiArICogQSBub24tYmxvY2tpbmcg dmVyc2lvbiBpbnRlbF9kaXNwbGF5X3Bvd2VyX3B1dCgpIHNwZWNpZmljYWxseSB0byBjb250cm9s IHRoZQo+ICsgKiBEQ19PRkYgcG93ZXIgd2VsbCBpbiBhdG9taWMgY29udGV4dHMuCj4gKyAqLwo+ ICt2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfdmJsYW5rX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2Vy X2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7Cj4gKwlzdHJ1Y3QgaTkxNV9wb3dl cl93ZWxsICpwb3dlcl93ZWxsOwo+ICsKPiArCWlmICghSEFTX0NTUihkZXZfcHJpdikgfHwgIWRl dl9wcml2LT5wc3Iuc291cmNlX29rKQo+ICsJCXJldHVybjsKPiArCj4gKwlXQVJOKGF0b21pY19k ZWNfcmV0dXJuKCZwb3dlcl9kb21haW5zLT5kb21haW5fdXNlX2NvdW50W1BPV0VSX0RPTUFJTl9W QkxBTktdKSA8IDAsCj4gKwkgICAgICJVc2UgY291bnQgb24gZG9tYWluICVzIHdhcyBhbHJlYWR5 IHplcm9cbiIsCj4gKwkgICAgIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3N0cihQT1dFUl9E T01BSU5fVkJMQU5LKSk7Cj4gKwo+ICsJZm9yX2VhY2hfcG93ZXJfZG9tYWluX3dlbGxfcmV2KGRl dl9wcml2LCAgcG93ZXJfd2VsbCwgQklUX1VMTChQT1dFUl9ET01BSU5fVkJMQU5LKSkgewo+ICsJ CWlmIChwb3dlcl93ZWxsLT5pZCA9PSBTS0xfRElTUF9QV19EQ19PRkYpCj4gKwkJCXNwaW5fbG9j aygmcG93ZXJfd2VsbC0+ZGNfb2ZmLmxvY2spOwo+ICsKPiArCQlpbnRlbF9wb3dlcl93ZWxsX3B1 dChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gKwo+ICsJCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBT S0xfRElTUF9QV19EQ19PRkYpCj4gKwkJCXNwaW5fdW5sb2NrKCZwb3dlcl93ZWxsLT5kY19vZmYu bG9jayk7Cj4gKwl9Cj4gKwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICt9 Cj4gKwo+ICBzdGF0aWMgdm9pZAo+ICBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgZW51bSBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCj4gQEAgLTE0NDgsOSArMTUyOSwxNiBAQCBfX2ludGVs X2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAlzdHJ1Y3QgaTkxNV9wb3dlcl9kb21haW5zICpwb3dlcl9kb21haW5zID0gJmRldl9w cml2LT5wb3dlcl9kb21haW5zOwo+ICAJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2Vs bDsKPiAgCj4gLQlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbChkZXZfcHJpdiwgcG93ZXJfd2Vs bCwgQklUX1VMTChkb21haW4pKQo+ICsJZm9yX2VhY2hfcG93ZXJfZG9tYWluX3dlbGwoZGV2X3By aXYsIHBvd2VyX3dlbGwsIEJJVF9VTEwoZG9tYWluKSkgewo+ICsJCWlmIChwb3dlcl93ZWxsLT5p ZCA9PSBTS0xfRElTUF9QV19EQ19PRkYpCj4gKwkJCXNwaW5fbG9jaygmcG93ZXJfd2VsbC0+ZGNf b2ZmLmxvY2spOwo+ICsKPiAgCQlpbnRlbF9wb3dlcl93ZWxsX2dldChkZXZfcHJpdiwgcG93ZXJf d2VsbCk7Cj4gIAo+ICsJCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBTS0xfRElTUF9QV19EQ19PRkYp Cj4gKwkJCXNwaW5fdW5sb2NrKCZwb3dlcl93ZWxsLT5kY19vZmYubG9jayk7Cj4gKwl9Cj4gKwo+ ICAJYXRvbWljX2luYygmcG93ZXJfZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtkb21haW5dKTsK PiAgfQo+ICAKPiBAQCAtMTU0MSw5ICsxNjI5LDE2IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dl cl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJICAgICAiVXNlIGNv dW50IG9uIGRvbWFpbiAlcyB3YXMgYWxyZWFkeSB6ZXJvXG4iLAo+ICAJICAgICBpbnRlbF9kaXNw bGF5X3Bvd2VyX2RvbWFpbl9zdHIoZG9tYWluKSk7Cj4gIAo+IC0JZm9yX2VhY2hfcG93ZXJfZG9t YWluX3dlbGxfcmV2KGRldl9wcml2LCBwb3dlcl93ZWxsLCBCSVRfVUxMKGRvbWFpbikpCj4gKwlm b3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXYoZGV2X3ByaXYsIHBvd2VyX3dlbGwsIEJJVF9V TEwoZG9tYWluKSkgewo+ICsJCWlmIChwb3dlcl93ZWxsLT5pZCA9PSBTS0xfRElTUF9QV19EQ19P RkYpCj4gKwkJCXNwaW5fbG9jaygmcG93ZXJfd2VsbC0+ZGNfb2ZmLmxvY2spOwo+ICsKPiAgCQlp bnRlbF9wb3dlcl93ZWxsX3B1dChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gIAo+ICsJCWlmIChw b3dlcl93ZWxsLT5pZCA9PSBTS0xfRElTUF9QV19EQ19PRkYpCj4gKwkJCXNwaW5fdW5sb2NrKCZw b3dlcl93ZWxsLT5kY19vZmYubG9jayk7Cj4gKwl9Cj4gKwo+ICAJbXV0ZXhfdW5sb2NrKCZwb3dl cl9kb21haW5zLT5sb2NrKTsKPiAgCj4gIAlpbnRlbF9ydW50aW1lX3BtX3B1dChkZXZfcHJpdik7 Cj4gQEAgLTE3MDYsNiArMTgwMSw3IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJU0tMX0RJU1BMQVlfUE9XRVJXRUxM XzJfUE9XRVJfRE9NQUlOUyB8CQlcCj4gIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9NT0RFU0VUKSB8 CQkJXAo+ICAJQklUX1VMTChQT1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4gKwlCSVRfVUxMKFBP V0VSX0RPTUFJTl9WQkxBTkspIHwJCQlcCj4gIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9JTklUKSkK PiAgCj4gICNkZWZpbmUgQlhUX0RJU1BMQVlfUE9XRVJXRUxMXzJfUE9XRVJfRE9NQUlOUyAoCQlc Cj4gQEAgLTIzNDIsNiArMjQzOCw5IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsIGNu bF9wb3dlcl93ZWxsc1tdID0gewo+ICAJCS5kb21haW5zID0gQ05MX0RJU1BMQVlfRENfT0ZGX1BP V0VSX0RPTUFJTlMsCj4gIAkJLm9wcyA9ICZnZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcywKPiAg CQkuaWQgPSBTS0xfRElTUF9QV19EQ19PRkYsCj4gKwkJewo+ICsJCQkuZGNfb2ZmLndhc19kaXNh YmxlZCA9IGZhbHNlLAo+ICsJCX0sCj4gIAl9LAo+ICAJewo+ICAJCS5uYW1lID0gInBvd2VyIHdl bGwgMiIsCj4gQEAgLTI0NzAsNiArMjU2OSw3IEBAIHN0YXRpYyB2b2lkIGFzc2VydF9wb3dlcl93 ZWxsX2lkc191bmlxdWUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBpbnQg aW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+ICAJc3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZk ZXZfcHJpdi0+cG93ZXJfZG9tYWluczsKPiArCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKmRjX29m Zl9wdzsKPiAgCj4gIAlpOTE1X21vZHBhcmFtcy5kaXNhYmxlX3Bvd2VyX3dlbGwgPQo+ICAJCXNh bml0aXplX2Rpc2FibGVfcG93ZXJfd2VsbF9vcHRpb24oZGV2X3ByaXYsCj4gQEAgLTI1MDcsNiAr MjYwNywxMCBAQCBpbnQgaW50ZWxfcG93ZXJfZG9tYWluc19pbml0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiAgCQlzZXRfcG93ZXJfd2VsbHMocG93ZXJfZG9tYWlucywgaTl4 eF9hbHdheXNfb25fcG93ZXJfd2VsbCk7Cj4gIAl9Cj4gIAo+ICsJZGNfb2ZmX3B3ID0gbG9va3Vw X3Bvd2VyX3dlbGwoZGV2X3ByaXYsIFNLTF9ESVNQX1BXX0RDX09GRik7Cj4gKwlpZiAoZGNfb2Zm X3B3KQo+ICsJCXNwaW5fbG9ja19pbml0KCZkY19vZmZfcHctPmRjX29mZi5sb2NrKTsKPiArCj4g IAlhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4g MDsKPiBAQCAtMjU1NSw4ICsyNjU5LDE0IEBAIHN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX2RvbWFp bnNfc3luY19odyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAltdXRleF9s b2NrKCZwb3dlcl9kb21haW5zLT5sb2NrKTsKPiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGwoZGV2X3By aXYsIHBvd2VyX3dlbGwpIHsKPiAgCQlwb3dlcl93ZWxsLT5vcHMtPnN5bmNfaHcoZGV2X3ByaXYs IHBvd2VyX3dlbGwpOwo+ICsKPiArCQlpZiAocG93ZXJfd2VsbC0+aWQgPT0gU0tMX0RJU1BfUFdf RENfT0ZGKQo+ICsJCQlzcGluX2xvY2soJnBvd2VyX3dlbGwtPmRjX29mZi5sb2NrKTsKPiArCj4g IAkJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9IHBvd2VyX3dlbGwtPm9wcy0+aXNfZW5hYmxlZChk ZXZfcHJpdiwKPiAgCQkJCQkJCQkgICAgIHBvd2VyX3dlbGwpOwo+ICsJCWlmIChwb3dlcl93ZWxs LT5pZCA9PSBTS0xfRElTUF9QV19EQ19PRkYpCj4gKwkJCXNwaW5fdW5sb2NrKCZwb3dlcl93ZWxs LT5kY19vZmYubG9jayk7Cj4gIAl9Cj4gIAltdXRleF91bmxvY2soJnBvd2VyX2RvbWFpbnMtPmxv Y2spOwo+ICB9Cj4gQEAgLTMwNzksNiArMzE4OSwxMyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFp bnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlp ZiAoIXBvd2VyX3dlbGwtPmRvbWFpbnMpCj4gIAkJCWNvbnRpbnVlOwo+ICAKPiArCQkvKgo+ICsJ CSAqIFJlYWRpbmcgU0tMX0RJU1BfUFdfRENfT0ZGIHBvd2VyX3dlbGwtPmNvdW50IHdpdGhvdXQg aXRzCj4gKwkJICogcHJpdmF0ZSBzcGlubG9jayBzaG91bGQgYmUgc2FmZSBoZXJlIGFzIHBvd2Vy X3dlbGwtPmNvdW50Cj4gKwkJICogZ2V0cyBtb2RpZmllZCBvbmx5IGluIHBvd2VyX3dlbGxfZ2V0 KCkgYW5kIHBvd2VyX3dlbGxfcHV0KCkKPiArCQkgKiBhbmQgdGhleSBhcmUgbm90IGNhbGxlZCB1 bnRpbCBkcm1fY3J0Y192Ymxhbmtfb24oKS4KPiArCQkgKi8KPiArCj4gIAkJZW5hYmxlZCA9IHBv d2VyX3dlbGwtPm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gIAkJaWYg KChwb3dlcl93ZWxsLT5jb3VudCB8fCBwb3dlcl93ZWxsLT5hbHdheXNfb24pICE9IGVuYWJsZWQp Cj4gIAkJCURSTV9FUlJPUigicG93ZXIgd2VsbCAlcyBzdGF0ZSBtaXNtYXRjaCAocmVmY291bnQg JWQvZW5hYmxlZCAlZCkiLAo+IC0tIAo+IDIuMTEuMAo+IApfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9kcmktZGV2ZWwK