From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH v2 7/8] drm/i915: Introduce a non-blocking power domain for vblank interrupts Date: Tue, 19 Dec 2017 13:41:22 -0800 Message-ID: <20171219214122.apsk43n3wcrihktw@intel.com> References: <20171219052659.2355-1-dhinakaran.pandiyan@intel.com> <20171219052659.2355-8-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: <20171219052659.2355-8-dhinakaran.pandiyan@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Dhinakaran Pandiyan Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBEZWMgMTksIDIwMTcgYXQgMDU6MjY6NThBTSArMDAwMCwgRGhpbmFrYXJhbiBQYW5k aXlhbiB3cm90ZToKPiBXaGVuIERDIHN0YXRlcyBhcmUgZW5hYmxlZCBhbmQgUFNSIGlzIGFjdGl2 ZSwgdGhlIGhhcmR3YXJlIGVudGVycyBEQzUvREM2Cj4gc3RhdGVzIHJlc3VsdGluZyBpbiBmcmFt ZSBjb3VudGVyIHJlc2V0cy4gVGhlIGZyYW1lIGNvdW50ZXIgcmVzZXRzIG1lc3MKPiB1cCB0aGUg dmJsYW5rIGNvdW50aW5nIGxvZ2ljLiBJbiBvcmRlciB0byBkaXNhYmxlIERDIHN0YXRlcyB3aGVu Cj4gdmJsYW5rIGludGVycnVwdHMgYXJlIHJlcXVpcmVkIGFuZCB0byBkaXNhbGxvdyBEQyBzdGF0 ZXMgd2hlbiB2YmxhbmtzCj4gaW50ZXJydXB0cyBhcmUgYWxyZWFkeSBlbmFibGVkLCBpbnRyb2R1 Y2UgYSBuZXcgVkJMQU5LIHBvd2VyIGRvbWFpbi4KPiBTaW5jZSB0aGlzIHBvd2VyIGRvbWFpbiBy ZWZlcmVuY2UgbmVlZHMgdG8gYmUgYWNxdWlyZWQgYW5kIHJlbGVhc2VkIGluCj4gYXRvbWljIGNv bnRleHQsIF92YmxhbmtfZ2V0KCkgYW5kIF92YmxhbmtfcHV0KCkgbWV0aG9kcyBza2lwIHRoZQo+ IHBvd2VyX2RvbWFpbiBtdXRleC4KPiAKPiB2MjogRml4IGRlYWRsb2NrIGJ5IHN3aXRjaGluZyBp cnFzYXZlIHNwaW5sb2NrLgo+ICAgICBJbXBsZW1lbnQgYXRvbWljIHZlcnNpb24gb2YgZ2V0X2lm X2VuYWJsZWQuCj4gICAgIE1vZGlmeSBwb3dlcl9kb21haW5fdmVyaWZ5X3N0YXRlIHRvIGNoZWNr IHBvd2VyIHdlbGwgdXNlIGNvdW50IGFuZAo+IGVuYWJsZWQgc3RhdHVzIGF0b21pY2FsbHkuCj4g ICAgIFJld3JpdGUgb2YgaW50ZWxfcG93ZXJfd2VsbF97Z2V0LHB1dH0KPiAKPiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsLnZldHRlckBmZndsbC5jaD4KPiBDYzogVmlsbGUgU3lyasOkbMOkIDx2 aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiBDYzogUm9kcmlnbyBWaXZpIDxyb2RyaWdv LnZpdmlAaW50ZWwuY29tPgoKKyBDYzogSW1yZSBEZWFrIDxpbXJlLmRlYWtAaW50ZWwuY29tPgoK PiBTaWduZWQtb2ZmLWJ5OiBEaGluYWthcmFuIFBhbmRpeWFuIDxkaGluYWthcmFuLnBhbmRpeWFu QGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAg ICAgIHwgIDE4ICsrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAg IHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgMTg0 ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gIDMgZmlsZXMgY2hhbmdlZCwgMTky IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu aAo+IGluZGV4IGRkYWRlYjllYWY0OS4uZGI1OTdjNWViYWVkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5oCj4gQEAgLTM5Nyw2ICszOTcsNyBAQCBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJf ZG9tYWluIHsKPiAgCVBPV0VSX0RPTUFJTl9BVVhfQywKPiAgCVBPV0VSX0RPTUFJTl9BVVhfRCwK PiAgCVBPV0VSX0RPTUFJTl9HTUJVUywKPiArCVBPV0VSX0RPTUFJTl9WQkxBTkssCj4gIAlQT1dF Ul9ET01BSU5fTU9ERVNFVCwKPiAgCVBPV0VSX0RPTUFJTl9HVF9JUlEsCj4gIAlQT1dFUl9ET01B SU5fSU5JVCwKPiBAQCAtMTQ3Niw2ICsxNDc3LDIzIEBAIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwg ewo+ICAJCQlib29sIGhhc19mdXNlczoxOwo+ICAJCX0gaHN3Owo+ICAJfTsKPiArCj4gKwkvKiBM b2NrIHRvIHNlcmlhbGl6ZSBhY2Nlc3MgdG8gY291bnQsIGh3X2VuYWJsZWQgYW5kIG9wcywgdXNl ZCBmb3IKPiArCSAqIHBvd2VyIHdlbGxzIHRoYXQgaGF2ZSBzdXBwb3J0c19hdG9taXhfY3R4IHNl dCB0byBUcnVlLgo+ICsJICovCj4gKwlzcGlubG9ja190IGxvY2s7Cj4gKwo+ICsJLyogSW5kaWNh dGVzIHRoYXQgdGhlIGdldC9wdXQgbWV0aG9kcyBmb3IgdGhpcyBwb3dlciB3ZWxsIGNhbiBiZSBj YWxsZWQKPiArCSAqIGluIGF0b21pYyBjb250ZXh0cywgcmVxdWlyZXMgLm9wcyB0byBub3Qgc2xl ZXAuIFRoaXMgaXMgdmFsaWQKPiArCSAqIG9ubHkgZm9yIHRoZSBEQ19PRkYgcG93ZXIgd2VsbCBj dXJyZW50bHkuCj4gKwkgKi8KPiArCWJvb2wgc3VwcG9ydHNfYXRvbWljX2N0eDsKPiArCj4gKwkv KiBEQ19PRkYgcG93ZXIgd2VsbCB3YXMgZGlzYWJsZWQgc2luY2UgdGhlIGxhc3QgdGltZSB2Ymxh bmtzIHdlcmUKPiArCSAqIGRpc2FibGVkLgo+ICsJICovCj4gKwlib29sIGRjX29mZl9kaXNhYmxl ZDsKPiArCj4gIAljb25zdCBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsX29wcyAqb3BzOwo+ICB9Owo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+IGluZGV4IDQ4Njc2ZTk5MzE2ZS4uNjgyMjEx OGYzYzRkIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTc5OCw2ICsxNzk4 LDkgQEAgYm9vbCBpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJCQllbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJf ZG9tYWluIGRvbWFpbik7Cj4gIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgIGVudW0gaW50ZWxfZGlzcGxheV9w b3dlcl9kb21haW4gZG9tYWluKTsKPiArdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3ZibGFua19n ZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgIGJvb2wgKm5l ZWRzX3Jlc3RvcmUpOwo+ICt2b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfdmJsYW5rX3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAgc3RhdGljIGlubGluZSB2b2lk Cj4gIGFzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5kZWQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y dW50aW1lX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiBp bmRleCA5OTJjYWVjMWZiYzQuLmZjNjgxMmVkNjEzNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMKPiBAQCAtNTYsNiArNTYsMTkgQEAgc3RhdGljIHN0cnVjdCBp OTE1X3Bvd2VyX3dlbGwgKgo+ICBsb29rdXBfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJICBlbnVtIGk5MTVfcG93ZXJfd2VsbF9pZCBwb3dlcl93ZWxs X2lkKTsKPiAgCj4gKy8qIE9wdGltaXplIGZvciB0aGUgY2FzZSB3aGVuIHRoaXMgaXMgY2FsbGVk IGZyb20gYXRvbWljIGNvbnRleHRzLAo+ICsgKiBhbHRob3VnaCB0aGUgY2FzZSBpcyB1bmxpa2Vs eS4KPiArICovCj4gKyNkZWZpbmUgcG93ZXJfd2VsbF9sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKSBk byB7CQkJXAo+ICsJaWYgKGxpa2VseShwb3dlcl93ZWxsLT5zdXBwb3J0c19hdG9taWNfY3R4KSkJ CVwKCnlvdSBtZW50aW9uIHVubGlrZWx5IG9uIGNvbW1lbmQgYW5kIGNhbGwgbGlrZWx5IGhlcmUs IHdoeT8KCj4gKwkJc3Bpbl9sb2NrX2lycXNhdmUoJnBvd2VyX3dlbGwtPmxvY2ssIGZsYWdzKTsJ XAo+ICsJfSB3aGlsZSAoMCkKPiArCj4gKyNkZWZpbmUgcG93ZXJfd2VsbF91bmxvY2socG93ZXJf d2VsbCwgZmxhZ3MpIGRvIHsJCQlcCj4gKwlpZiAobGlrZWx5KHBvd2VyX3dlbGwtPnN1cHBvcnRz X2F0b21pY19jdHgpKQkJCVwKPiArCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZwb3dlcl93ZWxs LT5sb2NrLCBmbGFncyk7CVwKPiArCX0gd2hpbGUgKDApCj4gKwo+ICBjb25zdCBjaGFyICoKPiAg aW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9k b21haW4gZG9tYWluKQo+ICB7Cj4gQEAgLTEyNiw2ICsxMzksOCBAQCBpbnRlbF9kaXNwbGF5X3Bv d2VyX2RvbWFpbl9zdHIoZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCj4g IAkJcmV0dXJuICJBVVhfRCI7Cj4gIAljYXNlIFBPV0VSX0RPTUFJTl9HTUJVUzoKPiAgCQlyZXR1 cm4gIkdNQlVTIjsKPiArCWNhc2UgUE9XRVJfRE9NQUlOX1ZCTEFOSzoKPiArCQlyZXR1cm4gIlZC TEFOSyI7Cj4gIAljYXNlIFBPV0VSX0RPTUFJTl9JTklUOgo+ICAJCXJldHVybiAiSU5JVCI7Cj4g IAljYXNlIFBPV0VSX0RPTUFJTl9NT0RFU0VUOgo+IEBAIC0xNDEsNiArMTU2LDkgQEAgaW50ZWxf ZGlzcGxheV9wb3dlcl9kb21haW5fc3RyKGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4g ZG9tYWluKQo+ICBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxsX2VuYWJsZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgICAgc3RydWN0IGk5MTVfcG93ZXJfd2Vs bCAqcG93ZXJfd2VsbCkKPiAgewo+ICsJaWYgKHBvd2VyX3dlbGwtPnN1cHBvcnRzX2F0b21pY19j dHgpCgp3aHkgbm90ICh1bilsaWtlbHkgY2hlY2sgaGVyZSBhcyB3ZWxsPwoKPiArCQlhc3NlcnRf c3Bpbl9sb2NrZWQoJnBvd2VyX3dlbGwtPmxvY2spOwo+ICsKPiAgCURSTV9ERUJVR19LTVMoImVu YWJsaW5nICVzXG4iLCBwb3dlcl93ZWxsLT5uYW1lKTsKPiAgCXBvd2VyX3dlbGwtPm9wcy0+ZW5h YmxlKGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiAgCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQgPSB0 cnVlOwo+IEBAIC0xNDksMjYgKzE2Nyw0MyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl93ZWxs X2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHN0YXRpYyB2b2lk IGludGVsX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsCj4gIAkJCQkgICAgIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gIHsK PiArCWlmIChwb3dlcl93ZWxsLT5zdXBwb3J0c19hdG9taWNfY3R4KQo+ICsJCWFzc2VydF9zcGlu X2xvY2tlZCgmcG93ZXJfd2VsbC0+bG9jayk7Cj4gKwo+ICAJRFJNX0RFQlVHX0tNUygiZGlzYWJs aW5nICVzXG4iLCBwb3dlcl93ZWxsLT5uYW1lKTsKPiAgCXBvd2VyX3dlbGwtPmh3X2VuYWJsZWQg PSBmYWxzZTsKPiAgCXBvd2VyX3dlbGwtPm9wcy0+ZGlzYWJsZShkZXZfcHJpdiwgcG93ZXJfd2Vs bCk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGludGVsX3Bvd2VyX3dlbGxfZ2V0KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiArc3RhdGljIHZvaWQgX19pbnRlbF9wb3dlcl93 ZWxsX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgc3RydWN0 IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbCkKPiAgewo+ICAJaWYgKCFwb3dlcl93ZWxsLT5j b3VudCsrKQo+ICAJCWludGVsX3Bvd2VyX3dlbGxfZW5hYmxlKGRldl9wcml2LCBwb3dlcl93ZWxs KTsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfd2VsbF9nZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJIHN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwg KnBvd2VyX3dlbGwpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwo+ICsKPiArCXBv d2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7Cj4gKwlfX2ludGVsX3Bvd2VyX3dlbGxf Z2V0KGRldl9wcml2LCBwb3dlcl93ZWxsKTsKPiArCXBvd2VyX3dlbGxfdW5sb2NrKHBvd2VyX3dl bGwsIGZsYWdzKTsKPiArfQo+ICsKPiAgc3RhdGljIHZvaWQgaW50ZWxfcG93ZXJfd2VsbF9wdXQo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJIHN0cnVjdCBpOTE1X3Bv d2VyX3dlbGwgKnBvd2VyX3dlbGwpCj4gIHsKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwo+ ICsKPiArCXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7Cj4gIAlXQVJOKCFwb3dl cl93ZWxsLT5jb3VudCwgIlVzZSBjb3VudCBvbiBwb3dlciB3ZWxsICVzIGlzIGFscmVhZHkgemVy byIsCj4gIAkgICAgIHBvd2VyX3dlbGwtPm5hbWUpOwo+ICAKPiAgCWlmICghLS1wb3dlcl93ZWxs LT5jb3VudCkKPiAgCQlpbnRlbF9wb3dlcl93ZWxsX2Rpc2FibGUoZGV2X3ByaXYsIHBvd2VyX3dl bGwpOwo+ICsJcG93ZXJfd2VsbF91bmxvY2socG93ZXJfd2VsbCwgZmxhZ3MpOwo+ICB9Cj4gIAo+ ICAvKioKPiBAQCAtNzI2LDYgKzc2MSw3IEBAIHN0YXRpYyB2b2lkIGdlbjlfZGNfb2ZmX3Bvd2Vy X3dlbGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJc2ts X2VuYWJsZV9kYzYoZGV2X3ByaXYpOwo+ICAJZWxzZSBpZiAoZGV2X3ByaXYtPmNzci5hbGxvd2Vk X2RjX21hc2sgJiBEQ19TVEFURV9FTl9VUFRPX0RDNSkKPiAgCQlnZW45X2VuYWJsZV9kYzUoZGV2 X3ByaXYpOwo+ICsJcG93ZXJfd2VsbC0+ZGNfb2ZmX2Rpc2FibGVkID0gdHJ1ZTsKCndoeSBkbyB3 ZSBuZWVkIHRvIHRyYWNrIHRoaXMgbGlrZSB0aGlzPwoKU2VlbXMgYSBiaWcgZGV2aWF0aW9uIG9m IHRoZSBob2xlIGdlbmVyaWMgcG93ZXIgd2VsbCBzdGF0ZS4uLgoKPiAgfQo+ICAKPiAgc3RhdGlj IHZvaWQgaTl4eF9wb3dlcl93ZWxsX3N5bmNfaHdfbm9vcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gQEAgLTE0NDMsNiArMTQ3OSw1OCBAQCBzdGF0aWMgdm9pZCBjaHZfcGlw ZV9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ ICAJY2h2X3NldF9waXBlX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGwsIGZhbHNlKTsK PiAgfQo+ICAKPiArdm9pZCBpbnRlbF9kaXNwbGF5X3Bvd2VyX3ZibGFua19nZXQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICsJCQkJICAgIGJvb2wgKm5lZWRzX3Jlc3RvcmUp Cj4gK3sKPiArCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgID0gJmRl dl9wcml2LT5wb3dlcl9kb21haW5zOwo+ICsJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJf d2VsbDsKPiArCWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluID0gUE9XRVJf RE9NQUlOX1ZCTEFOSzsKPiArCj4gKwkqbmVlZHNfcmVzdG9yZSA9IGZhbHNlOwo+ICsKPiArCWlm ICghSEFTX0NTUihkZXZfcHJpdikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWlmICghQ0FOX1BTUihk ZXZfcHJpdikpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWludGVsX3J1bnRpbWVfcG1fZ2V0X25vcmVz dW1lKGRldl9wcml2KTsKPiArCj4gKwlmb3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbChkZXZfcHJp diwgcG93ZXJfd2VsbCwgQklUX1VMTChkb21haW4pKSB7Cj4gKwkJdW5zaWduZWQgbG9uZyBmbGFn cyA9IDA7Cj4gKwo+ICsJCXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7Cj4gKwkJ X19pbnRlbF9wb3dlcl93ZWxsX2dldChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gKwkJKm5lZWRz X3Jlc3RvcmUgPSBwb3dlcl93ZWxsLT5kY19vZmZfZGlzYWJsZWQ7Cj4gKwkJcG93ZXJfd2VsbC0+ ZGNfb2ZmX2Rpc2FibGVkID0gZmFsc2U7Cj4gKwkJcG93ZXJfd2VsbF91bmxvY2socG93ZXJfd2Vs bCwgZmxhZ3MpOwo+ICsJfQo+ICsKPiArCWF0b21pY19pbmMoJnBvd2VyX2RvbWFpbnMtPmRvbWFp bl91c2VfY291bnRbZG9tYWluXSk7Cj4gK30KPiArCj4gK3ZvaWQgaW50ZWxfZGlzcGxheV9wb3dl cl92YmxhbmtfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJ c3RydWN0IGk5MTVfcG93ZXJfZG9tYWlucyAqcG93ZXJfZG9tYWlucyA9ICZkZXZfcHJpdi0+cG93 ZXJfZG9tYWluczsKPiArCXN0cnVjdCBpOTE1X3Bvd2VyX3dlbGwgKnBvd2VyX3dlbGw7Cj4gKwll bnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbiA9IFBPV0VSX0RPTUFJTl9WQkxB Tks7Cj4gKwo+ICsJaWYgKCFIQVNfQ1NSKGRldl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJ aWYgKCFDQU5fUFNSKGRldl9wcml2KSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJV0FSTihhdG9taWNf ZGVjX3JldHVybigmcG93ZXJfZG9tYWlucy0+ZG9tYWluX3VzZV9jb3VudFtkb21haW5dKSA8IDAs Cj4gKwkgICAgICJVc2UgY291bnQgb24gZG9tYWluICVzIHdhcyBhbHJlYWR5IHplcm9cbiIsCj4g KwkgICAgIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluX3N0cihkb21haW4pKTsKPiArCj4gKwlm b3JfZWFjaF9wb3dlcl9kb21haW5fd2VsbF9yZXYoZGV2X3ByaXYsIHBvd2VyX3dlbGwsIEJJVF9V TEwoZG9tYWluKSkKPiArCQlpbnRlbF9wb3dlcl93ZWxsX3B1dChkZXZfcHJpdiwgcG93ZXJfd2Vs bCk7Cj4gKwo+ICsJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICt9Cj4gKwo+ICBz dGF0aWMgdm9pZAo+ICBfX2ludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0X2RvbWFpbihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkgZW51bSBpbnRlbF9kaXNwbGF5X3Bvd2Vy X2RvbWFpbiBkb21haW4pCj4gQEAgLTE0ODIsNiArMTU3MCwzOCBAQCB2b2lkIGludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCW11dGV4 X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBib29sIGRj X29mZl9nZXRfaWZfZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g KwkJCQkgIGVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gZG9tYWluKQo+ICt7Cj4gKwlz dHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsOwo+ICsJYm9vbCBpc19lbmFibGVkOwo+ ICsJdW5zaWduZWQgbG9uZyBmbGFncyA9IDA7Cj4gKwo+ICsJcG93ZXJfd2VsbCA9IGxvb2t1cF9w b3dlcl93ZWxsKGRldl9wcml2LCBTS0xfRElTUF9QV19EQ19PRkYpOwo+ICsJaWYgKCFwb3dlcl93 ZWxsIHx8ICEocG93ZXJfd2VsbC0+ZG9tYWlucyAmIGRvbWFpbikpCj4gKwkJcmV0dXJuIHRydWU7 Cj4gKwo+ICsJcG93ZXJfd2VsbF9sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKTsKPiArCWlzX2VuYWJs ZWQgPSBwb3dlcl93ZWxsLT5od19lbmFibGVkOwo+ICsJaWYgKGlzX2VuYWJsZWQpCj4gKwkJX19p bnRlbF9wb3dlcl93ZWxsX2dldChkZXZfcHJpdiwgcG93ZXJfd2VsbCk7Cj4gKwlwb3dlcl93ZWxs X3VubG9jayhwb3dlcl93ZWxsLCBmbGFncyk7Cj4gKwo+ICsJcmV0dXJuIGlzX2VuYWJsZWQ7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIGRjX29mZl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2LAo+ICsJCSAgICAgICBlbnVtIGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRv bWFpbikKPiArewo+ICsJc3RydWN0IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKPiArCj4g Kwlwb3dlcl93ZWxsID0gbG9va3VwX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIFNLTF9ESVNQX1BXX0RD X09GRik7Cj4gKwlpZiAoIXBvd2VyX3dlbGwgfHwgIShwb3dlcl93ZWxsLT5kb21haW5zICYgZG9t YWluKSkKPiArCQlyZXR1cm47Cj4gKwo+ICsJaW50ZWxfcG93ZXJfd2VsbF9wdXQoZGV2X3ByaXYs IHBvd2VyX3dlbGwpOwo+ICt9Cj4gKwo+ICAvKioKPiAgICogaW50ZWxfZGlzcGxheV9wb3dlcl9n ZXRfaWZfZW5hYmxlZCAtIGdyYWIgYSByZWZlcmVuY2UgZm9yIGFuIGVuYWJsZWQgZGlzcGxheSBw b3dlciBkb21haW4KPiAgICogQGRldl9wcml2OiBpOTE1IGRldmljZSBpbnN0YW5jZQo+IEBAIC0x NDk4LDIwICsxNjE4LDI0IEBAIGJvb2wgaW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxl ZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJCQkJZW51bSBpbnRlbF9k aXNwbGF5X3Bvd2VyX2RvbWFpbiBkb21haW4pCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2Rv bWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7Cj4gLQlib29s IGlzX2VuYWJsZWQ7Cj4gKwlib29sIGlzX2VuYWJsZWQgPSBmYWxzZTsKPiAgCj4gIAlpZiAoIWlu dGVsX3J1bnRpbWVfcG1fZ2V0X2lmX2luX3VzZShkZXZfcHJpdikpCj4gIAkJcmV0dXJuIGZhbHNl Owo+ICAKPiAgCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwo+ICAKPiArCWlmICgh ZGNfb2ZmX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBkb21haW4pKQo+ICsJCWdvdG8gb3V0Owo+ ICsKPiAgCWlmIChfX2ludGVsX2Rpc3BsYXlfcG93ZXJfaXNfZW5hYmxlZChkZXZfcHJpdiwgZG9t YWluKSkgewo+ICAJCV9faW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfZG9tYWluKGRldl9wcml2LCBk b21haW4pOwo+ICAJCWlzX2VuYWJsZWQgPSB0cnVlOwo+IC0JfSBlbHNlIHsKPiAtCQlpc19lbmFi bGVkID0gZmFsc2U7Cj4gIAl9Cj4gIAo+ICsJZGNfb2ZmX3B1dChkZXZfcHJpdiwgZG9tYWluKTsK PiArCj4gK291dDoKPiAgCW11dGV4X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gIAo+ ICAJaWYgKCFpc19lbmFibGVkKQo+IEBAIC0xNzA5LDYgKzE4MzMsNyBAQCB2b2lkIGludGVsX2Rp c3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCUJJ VF9VTEwoUE9XRVJfRE9NQUlOX0dUX0lSUSkgfAkJCVwKPiAgCUJJVF9VTEwoUE9XRVJfRE9NQUlO X01PREVTRVQpIHwJCQlcCj4gIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9BVVhfQSkgfAkJCVwKPiAr CUJJVF9VTEwoUE9XRVJfRE9NQUlOX1ZCTEFOSykgfAkJCVwKPiAgCUJJVF9VTEwoUE9XRVJfRE9N QUlOX0lOSVQpKQo+ICAKPiAgI2RlZmluZSBCWFRfRElTUExBWV9QT1dFUldFTExfMl9QT1dFUl9E T01BSU5TICgJCVwKPiBAQCAtMTczMiw2ICsxODU3LDcgQEAgdm9pZCBpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlCSVRfVUxMKFBP V0VSX0RPTUFJTl9HVF9JUlEpIHwJCQlcCj4gIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9NT0RFU0VU KSB8CQkJXAo+ICAJQklUX1VMTChQT1dFUl9ET01BSU5fQVVYX0EpIHwJCQlcCj4gKwlCSVRfVUxM KFBPV0VSX0RPTUFJTl9WQkxBTkspIHwJCQlcCj4gIAlCSVRfVUxMKFBPV0VSX0RPTUFJTl9JTklU KSkKPiAgI2RlZmluZSBCWFRfRFBJT19DTU5fQV9QT1dFUl9ET01BSU5TICgJCQlcCj4gIAlCSVRf VUxMKFBPV0VSX0RPTUFJTl9QT1JUX0RESV9BX0xBTkVTKSB8CQlcCj4gQEAgLTE3OTEsNiArMTkx Nyw3IEBAIHZvaWQgaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LAo+ICAJQklUX1VMTChQT1dFUl9ET01BSU5fR1RfSVJRKSB8CQkJXAo+ICAJ QklUX1VMTChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJCVwKPiAgCUJJVF9VTEwoUE9XRVJfRE9N QUlOX0FVWF9BKSB8CQkJXAo+ICsJQklUX1VMTChQT1dFUl9ET01BSU5fVkJMQU5LKSB8CQkJXAo+ ICAJQklUX1VMTChQT1dFUl9ET01BSU5fSU5JVCkpCj4gIAo+ICAjZGVmaW5lIENOTF9ESVNQTEFZ X1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMgKAkJXAo+IEBAIC0xODM4LDYgKzE5NjUsNyBAQCB2 b2lkIGludGVsX2Rpc3BsYXlfcG93ZXJfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiAgCUNOTF9ESVNQTEFZX1BPV0VSV0VMTF8yX1BPV0VSX0RPTUFJTlMgfAkJXAo+ICAJ QklUX1VMTChQT1dFUl9ET01BSU5fTU9ERVNFVCkgfAkJCVwKPiAgCUJJVF9VTEwoUE9XRVJfRE9N QUlOX0FVWF9BKSB8CQkJXAo+ICsJQklUX1VMTChQT1dFUl9ET01BSU5fVkJMQU5LKSB8CQkJXAo+ ICAJQklUX1VMTChQT1dFUl9ET01BSU5fSU5JVCkpCj4gIAo+ICBzdGF0aWMgY29uc3Qgc3RydWN0 IGk5MTVfcG93ZXJfd2VsbF9vcHMgaTl4eF9hbHdheXNfb25fcG93ZXJfd2VsbF9vcHMgPSB7Cj4g QEAgLTIwNzEsOSArMjE5OSwxMiBAQCBib29sIGludGVsX2Rpc3BsYXlfcG93ZXJfd2VsbF9pc19l bmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgewo+ICAJc3RydWN0 IGk5MTVfcG93ZXJfd2VsbCAqcG93ZXJfd2VsbDsKPiAgCWJvb2wgcmV0Owo+ICsJdW5zaWduZWQg bG9uZyBmbGFncyA9IDA7Cj4gIAo+ICAJcG93ZXJfd2VsbCA9IGxvb2t1cF9wb3dlcl93ZWxsKGRl dl9wcml2LCBwb3dlcl93ZWxsX2lkKTsKPiArCXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBm bGFncyk7Cj4gIAlyZXQgPSBwb3dlcl93ZWxsLT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIHBv d2VyX3dlbGwpOwo+ICsJcG93ZXJfd2VsbF91bmxvY2socG93ZXJfd2VsbCwgZmxhZ3MpOwo+ICAK PiAgCXJldHVybiByZXQ7Cj4gIH0KPiBAQCAtMjEwOCw2ICsyMjM5LDggQEAgc3RhdGljIHN0cnVj dCBpOTE1X3Bvd2VyX3dlbGwgc2tsX3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAkJLmRvbWFpbnMgPSBT S0xfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUywKPiAgCQkub3BzID0gJmdlbjlfZGNfb2Zm X3Bvd2VyX3dlbGxfb3BzLAo+ICAJCS5pZCA9IFNLTF9ESVNQX1BXX0RDX09GRiwKPiArCQkuc3Vw cG9ydHNfYXRvbWljX2N0eCA9IHRydWUsCj4gKwkJLmRjX29mZl9kaXNhYmxlZCA9IGZhbHNlLAo+ ICAJfSwKPiAgCXsKPiAgCQkubmFtZSA9ICJwb3dlciB3ZWxsIDIiLAo+IEBAIC0yMTY4LDYgKzIz MDEsOCBAQCBzdGF0aWMgc3RydWN0IGk5MTVfcG93ZXJfd2VsbCBieHRfcG93ZXJfd2VsbHNbXSA9 IHsKPiAgCQkuZG9tYWlucyA9IEJYVF9ESVNQTEFZX0RDX09GRl9QT1dFUl9ET01BSU5TLAo+ICAJ CS5vcHMgPSAmZ2VuOV9kY19vZmZfcG93ZXJfd2VsbF9vcHMsCj4gIAkJLmlkID0gU0tMX0RJU1Bf UFdfRENfT0ZGLAo+ICsJCS5zdXBwb3J0c19hdG9taWNfY3R4ID0gdHJ1ZSwKPiArCQkuZGNfb2Zm X2Rpc2FibGVkID0gZmFsc2UsCj4gIAl9LAo+ICAJewo+ICAJCS5uYW1lID0gInBvd2VyIHdlbGwg MiIsCj4gQEAgLTIyMjMsNiArMjM1OCw4IEBAIHN0YXRpYyBzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxs IGdsa19wb3dlcl93ZWxsc1tdID0gewo+ICAJCS5kb21haW5zID0gR0xLX0RJU1BMQVlfRENfT0ZG X1BPV0VSX0RPTUFJTlMsCj4gIAkJLm9wcyA9ICZnZW45X2RjX29mZl9wb3dlcl93ZWxsX29wcywK PiAgCQkuaWQgPSBTS0xfRElTUF9QV19EQ19PRkYsCj4gKwkJLnN1cHBvcnRzX2F0b21pY19jdHgg PSB0cnVlLAo+ICsJCS5kY19vZmZfZGlzYWJsZWQgPSBmYWxzZSwKPiAgCX0sCj4gIAl7Cj4gIAkJ Lm5hbWUgPSAicG93ZXIgd2VsbCAyIiwKPiBAQCAtMjM0Nyw2ICsyNDg0LDggQEAgc3RhdGljIHN0 cnVjdCBpOTE1X3Bvd2VyX3dlbGwgY25sX3Bvd2VyX3dlbGxzW10gPSB7Cj4gIAkJLmRvbWFpbnMg PSBDTkxfRElTUExBWV9EQ19PRkZfUE9XRVJfRE9NQUlOUywKPiAgCQkub3BzID0gJmdlbjlfZGNf b2ZmX3Bvd2VyX3dlbGxfb3BzLAo+ICAJCS5pZCA9IFNLTF9ESVNQX1BXX0RDX09GRiwKPiArCQku c3VwcG9ydHNfYXRvbWljX2N0eCA9IHRydWUsCj4gKwkJLmRjX29mZl9kaXNhYmxlZCA9IGZhbHNl LAo+ICAJfSwKPiAgCXsKPiAgCQkubmFtZSA9ICJwb3dlciB3ZWxsIDIiLAo+IEBAIC0yNDc1LDYg KzI2MTQsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcG93ZXJfd2VsbF9pZHNfdW5pcXVlKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0cnVjdCBp OTE1X3Bvd2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFp bnM7Cj4gKwlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsOwo+ICAKPiAgCWk5MTVf bW9kcGFyYW1zLmRpc2FibGVfcG93ZXJfd2VsbCA9Cj4gIAkJc2FuaXRpemVfZGlzYWJsZV9wb3dl cl93ZWxsX29wdGlvbihkZXZfcHJpdiwKPiBAQCAtMjUxMiw2ICsyNjUyLDEwIEBAIGludCBpbnRl bF9wb3dlcl9kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ ICAJCXNldF9wb3dlcl93ZWxscyhwb3dlcl9kb21haW5zLCBpOXh4X2Fsd2F5c19vbl9wb3dlcl93 ZWxsKTsKPiAgCX0KPiAgCj4gKwlmb3JfZWFjaF9wb3dlcl93ZWxsKGRldl9wcml2LCBwb3dlcl93 ZWxsKQo+ICsJCWlmIChwb3dlcl93ZWxsLT5zdXBwb3J0c19hdG9taWNfY3R4KQo+ICsJCQlzcGlu X2xvY2tfaW5pdCgmcG93ZXJfd2VsbC0+bG9jayk7Cj4gKwo+ICAJYXNzZXJ0X3Bvd2VyX3dlbGxf aWRzX3VuaXF1ZShkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIDA7Cj4gQEAgLTI1NTksOSArMjcw MywxMyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX3N5bmNfaHcoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAKPiAgCW11dGV4X2xvY2soJnBvd2VyX2RvbWFp bnMtPmxvY2spOwo+ICAJZm9yX2VhY2hfcG93ZXJfd2VsbChkZXZfcHJpdiwgcG93ZXJfd2VsbCkg ewo+ICsJCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAwOwo+ICsKPiArCQlwb3dlcl93ZWxsX2xvY2so cG93ZXJfd2VsbCwgZmxhZ3MpOwo+ICAJCXBvd2VyX3dlbGwtPm9wcy0+c3luY19odyhkZXZfcHJp diwgcG93ZXJfd2VsbCk7Cj4gIAkJcG93ZXJfd2VsbC0+aHdfZW5hYmxlZCA9IHBvd2VyX3dlbGwt Pm9wcy0+aXNfZW5hYmxlZChkZXZfcHJpdiwKPiAgCQkJCQkJCQkgICAgIHBvd2VyX3dlbGwpOwo+ ICsJCXBvd2VyX3dlbGxfdW5sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKTsKPiAgCX0KPiAgCW11dGV4 X3VubG9jaygmcG93ZXJfZG9tYWlucy0+bG9jayk7Cj4gIH0KPiBAQCAtMzAzNCwxNiArMzE4Miwx OCBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAkJYnh0X2Rpc3BsYXlfY29yZV91bmluaXQoZGV2X3ByaXYpOwo+ ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZCBpbnRlbF9wb3dlcl9kb21haW5zX2R1bXBfaW5mbyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3N0YXRpYyB2b2lkIGludGVsX3Bvd2Vy X2RvbWFpbnNfZHVtcF9pbmZvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAr CQkJCQkgIGNvbnN0IGludCAqcG93ZXJfd2VsbF91c2UpCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3Bv d2VyX2RvbWFpbnMgKnBvd2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7Cj4g IAlzdHJ1Y3QgaTkxNV9wb3dlcl93ZWxsICpwb3dlcl93ZWxsOwo+ICsJaW50IGkgPSAwOwo+ICAK PiAgCWZvcl9lYWNoX3Bvd2VyX3dlbGwoZGV2X3ByaXYsIHBvd2VyX3dlbGwpIHsKPiAgCQllbnVt IGludGVsX2Rpc3BsYXlfcG93ZXJfZG9tYWluIGRvbWFpbjsKPiAgCj4gIAkJRFJNX0RFQlVHX0RS SVZFUigiJS0yNXMgJWRcbiIsCj4gLQkJCQkgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0+ Y291bnQpOwo+ICsJCQkJIHBvd2VyX3dlbGwtPm5hbWUsIHBvd2VyX3dlbGxfdXNlW2krK10pOwo+ ICAKPiAgCQlmb3JfZWFjaF9wb3dlcl9kb21haW4oZG9tYWluLCBwb3dlcl93ZWxsLT5kb21haW5z KQo+ICAJCQlEUk1fREVCVUdfRFJJVkVSKCIgICUtMjNzICVkXG4iLAo+IEBAIC0zMDY3LDYgKzMy MTcsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXN0cnVjdCBpOTE1X3Bvd2VyX2RvbWFpbnMgKnBv d2VyX2RvbWFpbnMgPSAmZGV2X3ByaXYtPnBvd2VyX2RvbWFpbnM7Cj4gIAlzdHJ1Y3QgaTkxNV9w b3dlcl93ZWxsICpwb3dlcl93ZWxsOwo+ICAJYm9vbCBkdW1wX2RvbWFpbl9pbmZvOwo+ICsJaW50 IHBvd2VyX3dlbGxfdXNlW2Rldl9wcml2LT5wb3dlcl9kb21haW5zLnBvd2VyX3dlbGxfY291bnRd Owo+ICAKPiAgCW11dGV4X2xvY2soJnBvd2VyX2RvbWFpbnMtPmxvY2spOwo+ICAKPiBAQCAtMzA3 NSw2ICszMjI2LDE0IEBAIHZvaWQgaW50ZWxfcG93ZXJfZG9tYWluc192ZXJpZnlfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICAJCWVudW0gaW50ZWxfZGlzcGxheV9w b3dlcl9kb21haW4gZG9tYWluOwo+ICAJCWludCBkb21haW5zX2NvdW50Owo+ICAJCWJvb2wgZW5h YmxlZDsKPiArCQlpbnQgd2VsbF9jb3VudCwgaSA9IDA7Cj4gKwkJdW5zaWduZWQgbG9uZyBmbGFn cyA9IDA7Cj4gKwo+ICsJCXBvd2VyX3dlbGxfbG9jayhwb3dlcl93ZWxsLCBmbGFncyk7Cj4gKwkJ d2VsbF9jb3VudCA9IHBvd2VyX3dlbGwtPmNvdW50Owo+ICsJCWVuYWJsZWQgPSBwb3dlcl93ZWxs LT5vcHMtPmlzX2VuYWJsZWQoZGV2X3ByaXYsIHBvd2VyX3dlbGwpOwo+ICsJCXBvd2VyX3dlbGxf dW5sb2NrKHBvd2VyX3dlbGwsIGZsYWdzKTsKPiArCQlwb3dlcl93ZWxsX3VzZVtpKytdID0gd2Vs bF9jb3VudDsKPiAgCj4gIAkJLyoKPiAgCQkgKiBQb3dlciB3ZWxscyBub3QgYmVsb25naW5nIHRv IGFueSBkb21haW4gKGxpa2UgdGhlIE1JU0NfSU8KPiBAQCAtMzA4NCwyMCArMzI0MywxOSBAQCB2 b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNfdmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiAgCQlpZiAoIXBvd2VyX3dlbGwtPmRvbWFpbnMpCj4gIAkJCWNvbnRp bnVlOwo+ICAKPiAtCQllbmFibGVkID0gcG93ZXJfd2VsbC0+b3BzLT5pc19lbmFibGVkKGRldl9w cml2LCBwb3dlcl93ZWxsKTsKPiAtCQlpZiAoKHBvd2VyX3dlbGwtPmNvdW50IHx8IHBvd2VyX3dl bGwtPmFsd2F5c19vbikgIT0gZW5hYmxlZCkKPiArCj4gKwkJaWYgKCh3ZWxsX2NvdW50IHx8IHBv d2VyX3dlbGwtPmFsd2F5c19vbikgIT0gZW5hYmxlZCkKPiAgCQkJRFJNX0VSUk9SKCJwb3dlciB3 ZWxsICVzIHN0YXRlIG1pc21hdGNoIChyZWZjb3VudCAlZC9lbmFibGVkICVkKSIsCj4gLQkJCQkg IHBvd2VyX3dlbGwtPm5hbWUsIHBvd2VyX3dlbGwtPmNvdW50LCBlbmFibGVkKTsKPiArCQkJCSAg cG93ZXJfd2VsbC0+bmFtZSwgd2VsbF9jb3VudCwgZW5hYmxlZCk7Cj4gIAo+ICAJCWRvbWFpbnNf Y291bnQgPSAwOwo+ICAJCWZvcl9lYWNoX3Bvd2VyX2RvbWFpbihkb21haW4sIHBvd2VyX3dlbGwt PmRvbWFpbnMpCj4gIAkJCWRvbWFpbnNfY291bnQgKz0gYXRvbWljX3JlYWQoJnBvd2VyX2RvbWFp bnMtPmRvbWFpbl91c2VfY291bnRbZG9tYWluXSk7Cj4gIAo+IC0JCWlmIChwb3dlcl93ZWxsLT5j b3VudCAhPSBkb21haW5zX2NvdW50KSB7Cj4gKwkJaWYgKHdlbGxfY291bnQgIT0gZG9tYWluc19j b3VudCkgewo+ICAJCQlEUk1fRVJST1IoInBvd2VyIHdlbGwgJXMgcmVmY291bnQvZG9tYWluIHJl ZmNvdW50IG1pc21hdGNoICIKPiAgCQkJCSAgIihyZWZjb3VudCAlZC9kb21haW5zIHJlZmNvdW50 ICVkKVxuIiwKPiAtCQkJCSAgcG93ZXJfd2VsbC0+bmFtZSwgcG93ZXJfd2VsbC0+Y291bnQsCj4g LQkJCQkgIGRvbWFpbnNfY291bnQpOwo+ICsJCQkJICBwb3dlcl93ZWxsLT5uYW1lLCB3ZWxsX2Nv dW50LCBkb21haW5zX2NvdW50KTsKPiAgCQkJZHVtcF9kb21haW5faW5mbyA9IHRydWU7Cj4gIAkJ fQo+ICAJfQo+IEBAIC0zMTA2LDcgKzMyNjQsNyBAQCB2b2lkIGludGVsX3Bvd2VyX2RvbWFpbnNf dmVyaWZ5X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQlzdGF0 aWMgYm9vbCBkdW1wZWQ7Cj4gIAo+ICAJCWlmICghZHVtcGVkKSB7Cj4gLQkJCWludGVsX3Bvd2Vy X2RvbWFpbnNfZHVtcF9pbmZvKGRldl9wcml2KTsKPiArCQkJaW50ZWxfcG93ZXJfZG9tYWluc19k dW1wX2luZm8oZGV2X3ByaXYsIHBvd2VyX3dlbGxfdXNlKTsKPiAgCQkJZHVtcGVkID0gdHJ1ZTsK PiAgCQl9Cj4gIAl9Cj4gLS0gCj4gMi4xMS4wCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=