From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rodrigo Vivi Subject: Re: [PATCH 06/14] drm/i915: Reorganize plane register writes to make them more atomic Date: Wed, 7 Nov 2018 13:26:18 -0800 Message-ID: <20181107212618.GI2237@intel.com> References: <20181101150605.18235-1-ville.syrjala@linux.intel.com> <20181101150605.18235-7-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id DD4DD6E4F3 for ; Wed, 7 Nov 2018 21:26:19 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20181101150605.18235-7-ville.syrjala@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: Ville Syrjala Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBOb3YgMDEsIDIwMTggYXQgMDU6MDU6NTdQTSArMDIwMCwgVmlsbGUgU3lyamFsYSB3 cm90ZToKPiBGcm9tOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tPgo+IAo+IFNvbWUgb2JzZXJ2YXRpb25zIGFib3V0IHRoZSBwbGFuZSByZWdpc3RlcnM6Cj4g LSB0aGUgY29udHJvbCByZWdpc3RlciB3aWxsIHNlbGYtYXJtIGlmIHRoZSBwbGFuZSBpcyBub3Qg YWxyZWFkeQo+ICAgZW5hYmxlZCwgdGh1cyB3ZSB3YW50IHRvIHdyaXRlIGl0IGFzIGNsb3NlIHRv IChvciBpZGVhbGx5IGFmdGVyKQo+ICAgdGhlIHN1cmZhY2UgcmVnaXN0ZXIKPiAtIHRpbGVvZmYv bGlub2ZmL29mZnNldC9hdXhfb2Zmc2V0IGFyZSBzZWxmLWFybWluZyBhcyB3ZWxsIHNvIHdlIHdh bnQKPiAgIHRoZW0gY2xvc2UgdG8gdGhlIHN1cmZhY2UgcmVnaXN0ZXIgYXMgd2VsbAo+IC0gY29s b3Iga2V5aW5nIHJlZ2lzdGVycyB3ZSBtYXliZSBzZWxmIGFybWluZyBiZWZvcmUgU0tMLiBOb3Qg MTAwJQo+ICAgc3VyZSBidXQgd2UgY2FuIHRyeSB0byBrZWVwIHRoZW0gbmVhciB0byB0aGUgc3Vy ZmFjZSByZWdpc3Rlcgo+ICAgYXMgd2VsbAo+IC0gY2h2IHBpcGUgYiBjc2MgcmVnaXN0ZXIgYXJl IGRvdWJsZSBidWZmZXJlZCBidXQgc2VsZiBhcm1pbmcgc28KPiAgIG1vdmluZyB0aGVtIGRvd24g YSBiaXQKPiAtIHRoZSByZXN0IHNob3VsZCBiZSBtb3N0bHkgYXJtZWQgYnkgdGhlIHN1cmZhY2Ug cmVnaXN0ZXIgc28gd2UgY2FuCj4gICBzYWZlbHkgd3JpdGUgdGhlbSBmaXJzdCwgYW5kIHRvIGp1 c3QgZm9yIHNvbWUgY29uc2lzdGVuY3kgbGV0J3MgdHJ5Cj4gICB0byBmb2xsb3cga2VlcCB0aGVt IGluIG9yZGVyIGJhc2VkIG9uIHRoZSByZWdpc3RlciBvZmZzZXQKPiAKPiBTaWduZWQtb2ZmLWJ5 OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAgNDAgKysrKystLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYyAgfCAxMTQgKysrKysrKysrKysr KysrLS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKSwgNjgg ZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4 IGM1Y2UzODkyZDU4My4uOTUyMWNmZjVmYjQ0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC0zMzI4LDcgKzMzMjgsNiBAQCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAJZW51bSBpOXh4X3BsYW5lX2lk IGk5eHhfcGxhbmUgPSBwbGFuZS0+aTl4eF9wbGFuZTsKPiAgCXUzMiBsaW5lYXJfb2Zmc2V0Owo+ ICAJdTMyIGRzcGNudHIgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+IC0JaTkxNV9yZWdfdCByZWcgPSBE U1BDTlRSKGk5eHhfcGxhbmUpOwo+ICAJaW50IHggPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVb MF0ueDsKPiAgCWludCB5ID0gcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnk7Cj4gIAl1bnNp Z25lZCBsb25nIGlycWZsYWdzOwo+IEBAIC0zMzQzLDQxICszMzQyLDQ1IEBAIHN0YXRpYyB2b2lk IGk5eHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAo+ICAJc3Bp bl9sb2NrX2lycXNhdmUoJmRldl9wcml2LT51bmNvcmUubG9jaywgaXJxZmxhZ3MpOwo+ICAKPiAr CUk5MTVfV1JJVEVfRlcoRFNQU1RSSURFKGk5eHhfcGxhbmUpLCBwbGFuZV9zdGF0ZS0+Y29sb3Jf cGxhbmVbMF0uc3RyaWRlKTsKPiArCj4gIAlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsK PiAgCQkvKiBwaXBlc3JjIGFuZCBkc3BzaXplIGNvbnRyb2wgdGhlIHNpemUgdGhhdCBpcyBzY2Fs ZWQgZnJvbSwKPiAgCQkgKiB3aGljaCBzaG91bGQgYWx3YXlzIGJlIHRoZSB1c2VyJ3MgcmVxdWVz dGVkIHNpemUuCj4gIAkJICovCj4gKwkJSTkxNV9XUklURV9GVyhEU1BQT1MoaTl4eF9wbGFuZSks IDApOwo+ICAJCUk5MTVfV1JJVEVfRlcoRFNQU0laRShpOXh4X3BsYW5lKSwKPiAgCQkJICAgICAg KChjcnRjX3N0YXRlLT5waXBlX3NyY19oIC0gMSkgPDwgMTYpIHwKPiAgCQkJICAgICAgKGNydGNf c3RhdGUtPnBpcGVfc3JjX3cgLSAxKSk7Cj4gLQkJSTkxNV9XUklURV9GVyhEU1BQT1MoaTl4eF9w bGFuZSksIDApOwo+ICAJfSBlbHNlIGlmIChJU19DSEVSUllWSUVXKGRldl9wcml2KSAmJiBpOXh4 X3BsYW5lID09IFBMQU5FX0IpIHsKPiArCQlJOTE1X1dSSVRFX0ZXKFBSSU1QT1MoaTl4eF9wbGFu ZSksIDApOwo+ICAJCUk5MTVfV1JJVEVfRlcoUFJJTVNJWkUoaTl4eF9wbGFuZSksCj4gIAkJCSAg ICAgICgoY3J0Y19zdGF0ZS0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Cj4gIAkJCSAgICAgIChj cnRjX3N0YXRlLT5waXBlX3NyY193IC0gMSkpOwo+IC0JCUk5MTVfV1JJVEVfRlcoUFJJTVBPUyhp OXh4X3BsYW5lKSwgMCk7Cj4gIAkJSTkxNV9XUklURV9GVyhQUklNQ05TVEFMUEhBKGk5eHhfcGxh bmUpLCAwKTsKPiAgCX0KPiAgCj4gLQlJOTE1X1dSSVRFX0ZXKHJlZywgZHNwY250cik7Cj4gLQo+ IC0JSTkxNV9XUklURV9GVyhEU1BTVFJJREUoaTl4eF9wbGFuZSksIHBsYW5lX3N0YXRlLT5jb2xv cl9wbGFuZVswXS5zdHJpZGUpOwo+ICAJaWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JS T0FEV0VMTChkZXZfcHJpdikpIHsKPiAtCQlJOTE1X1dSSVRFX0ZXKERTUFNVUkYoaTl4eF9wbGFu ZSksCj4gLQkJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCj4g LQkJCSAgICAgIGRzcGFkZHJfb2Zmc2V0KTsKPiAgCQlJOTE1X1dSSVRFX0ZXKERTUE9GRlNFVChp OXh4X3BsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4gIAl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gNCkgewo+ICsJCUk5MTVfV1JJVEVfRlcoRFNQVElMRU9GRihpOXh4X3BsYW5lKSwg KHkgPDwgMTYpIHwgeCk7Cj4gKwkJSTkxNV9XUklURV9GVyhEU1BMSU5PRkYoaTl4eF9wbGFuZSks IGxpbmVhcl9vZmZzZXQpOwo+ICsJfQo+ICsKPiArCS8qCj4gKwkgKiBUaGUgY29udHJvbCByZWdp c3RlciBzZWxmLWFybXMgaWYgdGhlIHBsYW5lIHdhcyBwcmV2aW91c2x5Cj4gKwkgKiBkaXNhYmxl ZC4gVHJ5IHRvIG1ha2UgdGhlIHBsYW5lIGVuYWJsZSBhdG9taWMgYnkgd3JpdGluZwo+ICsJICog dGhlIGNvbnRyb2wgcmVnaXN0ZXIganVzdCBiZWZvcmUgdGhlIHN1cmZhY2UgcmVnaXN0ZXIuCj4g KwkgKi8KPiArCUk5MTVfV1JJVEVfRlcoRFNQQ05UUihpOXh4X3BsYW5lKSwgZHNwY250cik7Cj4g KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQo+ICAJCUk5MTVfV1JJVEVfRlcoRFNQU1VS RihpOXh4X3BsYW5lKSwKPiAgCQkJICAgICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVf c3RhdGUpICsKPiAgCQkJICAgICAgZHNwYWRkcl9vZmZzZXQpOwo+IC0JCUk5MTVfV1JJVEVfRlco RFNQVElMRU9GRihpOXh4X3BsYW5lKSwgKHkgPDwgMTYpIHwgeCk7Cj4gLQkJSTkxNV9XUklURV9G VyhEU1BMSU5PRkYoaTl4eF9wbGFuZSksIGxpbmVhcl9vZmZzZXQpOwo+IC0JfSBlbHNlIHsKPiAr CWVsc2UKPiAgCQlJOTE1X1dSSVRFX0ZXKERTUEFERFIoaTl4eF9wbGFuZSksCj4gIAkJCSAgICAg IGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArCj4gIAkJCSAgICAgIGRzcGFk ZHJfb2Zmc2V0KTsKPiAtCX0KPiAgCj4gIAlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZkZXZfcHJp di0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiAgfQo+IEBAIC0xMDA0NSw4ICsxMDA0OCw4IEBA IHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5l LAo+ICAJICogT24gc29tZSBwbGF0Zm9ybXMgd3JpdGluZyBDVVJDTlRSIGZpcnN0IHdpbGwgYWxz bwo+ICAJICogY2F1c2UgQ1VSUE9TIHRvIGJlIGFybWVkIGJ5IHRoZSBDVVJCQVNFIHdyaXRlLgo+ ICAJICogV2l0aG91dCB0aGUgQ1VSQ05UUiB3cml0ZSB0aGUgQ1VSUE9TIHdyaXRlIHdvdWxkCj4g LQkgKiBhcm0gaXRzZWxmLiBUaHVzIHdlIGFsd2F5cyBzdGFydCB0aGUgZnVsbCB1cGRhdGUKPiAt CSAqIHdpdGggYSBDVVJDTlRSIHdyaXRlLgo+ICsJICogYXJtIGl0c2VsZi4gVGh1cyB3ZSBhbHdh eXMgdXBkYXRlIENVUkNOVFIgYmVmb3JlCj4gKwkgKiBDVVJQT1MuCj4gIAkgKgo+ICAJICogT24g b3RoZXIgcGxhdGZvcm1zIENVUlBPUyBhbHdheXMgcmVxdWlyZXMgdGhlCj4gIAkgKiBDVVJCQVNF IHdyaXRlIHRvIGFybSB0aGUgdXBkYXRlLiBBZGRpdG9uYWxseQo+IEBAIC0xMDA1NiwxNSArMTAw NTksMTYgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfY3Vyc29yKHN0cnVjdCBpbnRlbF9wbGFu ZSAqcGxhbmUsCj4gIAkgKiBjdXJzb3IgdGhhdCBkb2Vzbid0IGFwcGVhciB0byBtb3ZlLCBvciBl dmVuIGNoYW5nZQo+ICAJICogc2hhcGUuIFRodXMgd2UgYWx3YXlzIHdyaXRlIENVUkJBU0UuCj4g IAkgKgo+IC0JICogQ1VSQ05UUiBhbmQgQ1VSX0ZCQ19DVEwgYXJlIGFsd2F5cwo+IC0JICogYXJt ZWQgYnkgdGhlIENVUkJBU0Ugd3JpdGUgb25seS4KPiArCSAqIFRoZSBvdGhlciByZWdpc3RlcnMg YXJlIGFybWVkIGJ5IGJ5IHRoZSBDVVJCQVNFIHdyaXRlCj4gKwkgKiBleGNlcHQgd2hlbiB0aGUg cGxhbmUgaXMgZ2V0dGluZyBlbmFibGVkIGF0IHdoaWNoIHRpbWUKPiArCSAqIHRoZSBDVVJDTlRS IHdyaXRlIGFybXMgdGhlIHVwZGF0ZS4KPiAgCSAqLwo+ICAJaWYgKHBsYW5lLT5jdXJzb3IuYmFz ZSAhPSBiYXNlIHx8Cj4gIAkgICAgcGxhbmUtPmN1cnNvci5zaXplICE9IGZiY19jdGwgfHwKPiAg CSAgICBwbGFuZS0+Y3Vyc29yLmNudGwgIT0gY250bCkgewo+IC0JCUk5MTVfV1JJVEVfRlcoQ1VS Q05UUihwaXBlKSwgY250bCk7Cj4gIAkJaWYgKEhBU19DVVJfRkJDKGRldl9wcml2KSkKPiAgCQkJ STkxNV9XUklURV9GVyhDVVJfRkJDX0NUTChwaXBlKSwgZmJjX2N0bCk7Cj4gKwkJSTkxNV9XUklU RV9GVyhDVVJDTlRSKHBpcGUpLCBjbnRsKTsKPiAgCQlJOTE1X1dSSVRFX0ZXKENVUlBPUyhwaXBl KSwgcG9zKTsKPiAgCQlJOTE1X1dSSVRFX0ZXKENVUkJBU0UocGlwZSksIGJhc2UpOwo+ICAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9zcHJpdGUuYwo+IGluZGV4IDhhNDA4NzlhYmUzMC4uNDU1YjJk MGNiYWE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0ZS5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMKPiBAQCAtNDA0LDI0 ICs0MDQsMTIgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwK PiAgCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVuY29yZS5sb2NrLCBpcnFmbGFn cyk7Cj4gIAo+IC0JaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gMTAgfHwgSVNfR0VNSU5JTEFL RShkZXZfcHJpdikpCj4gLQkJSTkxNV9XUklURV9GVyhQTEFORV9DT0xPUl9DVEwocGlwZSwgcGxh bmVfaWQpLAo+IC0JCQkgICAgICBwbGFuZV9zdGF0ZS0+Y29sb3JfY3RsKTsKPiAtCj4gLQlJOTE1 X1dSSVRFX0ZXKFBMQU5FX0tFWVZBTChwaXBlLCBwbGFuZV9pZCksIGtleS0+bWluX3ZhbHVlKTsK PiAtCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTUFYKHBpcGUsIHBsYW5lX2lkKSwga2V5bWF4KTsK PiAtCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTVNLKHBpcGUsIHBsYW5lX2lkKSwga2V5bXNrKTsK PiAtCj4gLQlJOTE1X1dSSVRFX0ZXKFBMQU5FX09GRlNFVChwaXBlLCBwbGFuZV9pZCksICh5IDw8 IDE2KSB8IHgpOwo+ICAJSTkxNV9XUklURV9GVyhQTEFORV9TVFJJREUocGlwZSwgcGxhbmVfaWQp LCBzdHJpZGUpOwo+ICsJSTkxNV9XUklURV9GVyhQTEFORV9QT1MocGlwZSwgcGxhbmVfaWQpLCAo Y3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX1NJWkUocGlw ZSwgcGxhbmVfaWQpLCAoc3JjX2ggPDwgMTYpIHwgc3JjX3cpOwo+ICAJSTkxNV9XUklURV9GVyhQ TEFORV9BVVhfRElTVChwaXBlLCBwbGFuZV9pZCksCj4gLQkJICAgICAgKHBsYW5lX3N0YXRlLT5j b2xvcl9wbGFuZVsxXS5vZmZzZXQgLSBzdXJmX2FkZHIpIHwgYXV4X3N0cmlkZSk7Cj4gLQo+IC0J aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMSkKPiAtCQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0FV WF9PRkZTRVQocGlwZSwgcGxhbmVfaWQpLAo+IC0JCQkgICAgICAocGxhbmVfc3RhdGUtPmNvbG9y X3BsYW5lWzFdLnkgPDwgMTYpIHwKPiAtCQkJICAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFu ZVsxXS54KTsKPiArCQkgICAgICAocGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzFdLm9mZnNldCAt IHN1cmZfYWRkcikgfAo+ICsJCSAgICAgIGF1eF9zdHJpZGUpOwo+ICAKPiAgCWlmIChpY2xfaXNf aGRyX3BsYW5lKHBsYW5lKSkgewo+ICAJCXUzMiBjdXNfY3RsID0gMDsKPiBAQCAtNDQ0LDE1ICs0 MzIsMzMgQEAgc2tsX3Byb2dyYW1fcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAg CQlJOTE1X1dSSVRFX0ZXKFBMQU5FX0NVU19DVEwocGlwZSwgcGxhbmVfaWQpLCBjdXNfY3RsKTsK PiAgCX0KPiAgCj4gLQlpZiAoIXNsYXZlICYmIHBsYW5lX3N0YXRlLT5zY2FsZXJfaWQgPj0gMCkK PiAtCQlza2xfcHJvZ3JhbV9zY2FsZXIocGxhbmUsIGNydGNfc3RhdGUsIHBsYW5lX3N0YXRlKTsK PiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDEwIHx8IElTX0dFTUlOSUxBS0UoZGV2X3By aXYpKQo+ICsJCUk5MTVfV1JJVEVfRlcoUExBTkVfQ09MT1JfQ1RMKHBpcGUsIHBsYW5lX2lkKSwK PiArCQkJICAgICAgcGxhbmVfc3RhdGUtPmNvbG9yX2N0bCk7Cj4gIAo+IC0JSTkxNV9XUklURV9G VyhQTEFORV9QT1MocGlwZSwgcGxhbmVfaWQpLCAoY3J0Y195IDw8IDE2KSB8IGNydGNfeCk7Cj4g KwlJOTE1X1dSSVRFX0ZXKFBMQU5FX0tFWVZBTChwaXBlLCBwbGFuZV9pZCksIGtleS0+bWluX3Zh bHVlKTsKPiArCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTUFYKHBpcGUsIHBsYW5lX2lkKSwga2V5 bWF4KTsKPiArCUk5MTVfV1JJVEVfRlcoUExBTkVfS0VZTVNLKHBpcGUsIHBsYW5lX2lkKSwga2V5 bXNrKTsKPiArCj4gKwlJOTE1X1dSSVRFX0ZXKFBMQU5FX09GRlNFVChwaXBlLCBwbGFuZV9pZCks ICh5IDw8IDE2KSB8IHgpOwo+ICAKPiArCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgMTEpCj4g KwkJSTkxNV9XUklURV9GVyhQTEFORV9BVVhfT0ZGU0VUKHBpcGUsIHBsYW5lX2lkKSwKPiArCQkJ ICAgICAgKHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS55IDw8IDE2KSB8Cj4gKwkJCSAgICAg IHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsxXS54KTsKPiArCj4gKwkvKgo+ICsJICogVGhlIGNv bnRyb2wgcmVnaXN0ZXIgc2VsZi1hcm1zIGlmIHRoZSBwbGFuZSB3YXMgcHJldmlvdXNseQo+ICsJ ICogZGlzYWJsZWQuIFRyeSB0byBtYWtlIHRoZSBwbGFuZSBlbmFibGUgYXRvbWljIGJ5IHdyaXRp bmcKPiArCSAqIHRoZSBjb250cm9sIHJlZ2lzdGVyIGp1c3QgYmVmb3JlIHRoZSBzdXJmYWNlIHJl Z2lzdGVyLgo+ICsJICovCj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX0NUTChwaXBlLCBwbGFuZV9p ZCksIHBsYW5lX2N0bCk7Cj4gIAlJOTE1X1dSSVRFX0ZXKFBMQU5FX1NVUkYocGlwZSwgcGxhbmVf aWQpLAo+ICAJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBsYW5lX3N0YXRlKSArIHN1 cmZfYWRkcik7Cj4gIAo+ICsJaWYgKCFzbGF2ZSAmJiBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkID49 IDApCj4gKwkJc2tsX3Byb2dyYW1fc2NhbGVyKHBsYW5lLCBjcnRjX3N0YXRlLCBwbGFuZV9zdGF0 ZSk7Cj4gKwo+ICAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmZGV2X3ByaXYtPnVuY29yZS5sb2Nr LCBpcnFmbGFncyk7Cj4gIH0KPiAgCj4gQEAgLTY5MCw3ICs2OTYsNiBAQCB2bHZfdXBkYXRlX3Bs YW5lKHN0cnVjdCBpbnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJIGNvbnN0IHN0cnVjdCBpbnRlbF9w bGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBk cm1fZnJhbWVidWZmZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gIAllbnVtIHBpcGUg cGlwZSA9IHBsYW5lLT5waXBlOwo+ICAJZW51bSBwbGFuZV9pZCBwbGFuZV9pZCA9IHBsYW5lLT5p ZDsKPiAgCXUzMiBzcHJjdGwgPSBwbGFuZV9zdGF0ZS0+Y3RsOwo+IEBAIC03MTUsNiArNzIwLDEy IEBAIHZsdl91cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCj4gIAl2 bHZfdXBkYXRlX2NscmMocGxhbmVfc3RhdGUpOwo+ICAKPiArCUk5MTVfV1JJVEVfRlcoU1BTVFJJ REUocGlwZSwgcGxhbmVfaWQpLAo+ICsJCSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVsw XS5zdHJpZGUpOwo+ICsJSTkxNV9XUklURV9GVyhTUFBPUyhwaXBlLCBwbGFuZV9pZCksIChjcnRj X3kgPDwgMTYpIHwgY3J0Y194KTsKPiArCUk5MTVfV1JJVEVfRlcoU1BTSVpFKHBpcGUsIHBsYW5l X2lkKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwo+ICsJSTkxNV9XUklURV9GVyhTUENPTlNU QUxQSEEocGlwZSwgcGxhbmVfaWQpLCAwKTsKPiArCj4gIAlpZiAoSVNfQ0hFUlJZVklFVyhkZXZf cHJpdikgJiYgcGlwZSA9PSBQSVBFX0IpCj4gIAkJY2h2X3VwZGF0ZV9jc2MocGxhbmVfc3RhdGUp Owo+ICAKPiBAQCAtNzIzLDE4ICs3MzQsMTUgQEAgdmx2X3VwZGF0ZV9wbGFuZShzdHJ1Y3QgaW50 ZWxfcGxhbmUgKnBsYW5lLAo+ICAJCUk5MTVfV1JJVEVfRlcoU1BLRVlNQVhWQUwocGlwZSwgcGxh bmVfaWQpLCBrZXktPm1heF92YWx1ZSk7Cj4gIAkJSTkxNV9XUklURV9GVyhTUEtFWU1TSyhwaXBl LCBwbGFuZV9pZCksIGtleS0+Y2hhbm5lbF9tYXNrKTsKPiAgCX0KPiAtCUk5MTVfV1JJVEVfRlco U1BTVFJJREUocGlwZSwgcGxhbmVfaWQpLAo+IC0JCSAgICAgIHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS5zdHJpZGUpOwo+IC0JSTkxNV9XUklURV9GVyhTUFBPUyhwaXBlLCBwbGFuZV9pZCks IChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiAtCj4gLQlpZiAoZmItPm1vZGlmaWVyID09IEk5 MTVfRk9STUFUX01PRF9YX1RJTEVEKQo+IC0JCUk5MTVfV1JJVEVfRlcoU1BUSUxFT0ZGKHBpcGUs IHBsYW5lX2lkKSwgKHkgPDwgMTYpIHwgeCk7Cj4gLQllbHNlCj4gLQkJSTkxNV9XUklURV9GVyhT UExJTk9GRihwaXBlLCBwbGFuZV9pZCksIGxpbmVhcl9vZmZzZXQpOwo+ICAKPiAtCUk5MTVfV1JJ VEVfRlcoU1BDT05TVEFMUEhBKHBpcGUsIHBsYW5lX2lkKSwgMCk7Cj4gKwlJOTE1X1dSSVRFX0ZX KFNQVElMRU9GRihwaXBlLCBwbGFuZV9pZCksICh5IDw8IDE2KSB8IHgpOwo+ICsJSTkxNV9XUklU RV9GVyhTUExJTk9GRihwaXBlLCBwbGFuZV9pZCksIGxpbmVhcl9vZmZzZXQpOwo+ICAKPiAtCUk5 MTVfV1JJVEVfRlcoU1BTSVpFKHBpcGUsIHBsYW5lX2lkKSwgKGNydGNfaCA8PCAxNikgfCBjcnRj X3cpOwo+ICsJLyoKPiArCSAqIFRoZSBjb250cm9sIHJlZ2lzdGVyIHNlbGYtYXJtcyBpZiB0aGUg cGxhbmUgd2FzIHByZXZpb3VzbHkKPiArCSAqIGRpc2FibGVkLiBUcnkgdG8gbWFrZSB0aGUgcGxh bmUgZW5hYmxlIGF0b21pYyBieSB3cml0aW5nCj4gKwkgKiB0aGUgY29udHJvbCByZWdpc3RlciBq dXN0IGJlZm9yZSB0aGUgc3VyZmFjZSByZWdpc3Rlci4KPiArCSAqLwo+ICAJSTkxNV9XUklURV9G VyhTUENOVFIocGlwZSwgcGxhbmVfaWQpLCBzcHJjdGwpOwo+ICAJSTkxNV9XUklURV9GVyhTUFNV UkYocGlwZSwgcGxhbmVfaWQpLAo+ICAJCSAgICAgIGludGVsX3BsYW5lX2dndHRfb2Zmc2V0KHBs YW5lX3N0YXRlKSArIHNwcnN1cmZfb2Zmc2V0KTsKPiBAQCAtODQ4LDcgKzg1Niw2IEBAIGl2Yl91 cGRhdGVfcGxhbmUoc3RydWN0IGludGVsX3BsYW5lICpwbGFuZSwKPiAgCQkgY29uc3Qgc3RydWN0 IGludGVsX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShwbGFuZS0+YmFzZS5kZXYpOwo+IC0JY29uc3Qg c3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIgPSBwbGFuZV9zdGF0ZS0+YmFzZS5mYjsKPiAgCWVu dW0gcGlwZSBwaXBlID0gcGxhbmUtPnBpcGU7Cj4gIAl1MzIgc3ByY3RsID0gcGxhbmVfc3RhdGUt PmN0bCwgc3Byc2NhbGUgPSAwOwo+ICAJdTMyIHNwcnN1cmZfb2Zmc2V0ID0gcGxhbmVfc3RhdGUt PmNvbG9yX3BsYW5lWzBdLm9mZnNldDsKPiBAQCAtODc3LDI3ICs4ODQsMzIgQEAgaXZiX3VwZGF0 ZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLAo+ICAKPiAgCXNwaW5fbG9ja19pcnFz YXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxvY2ssIGlycWZsYWdzKTsKPiAgCj4gKwlJOTE1X1dSSVRF X0ZXKFNQUlNUUklERShwaXBlKSwgcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBdLnN0cmlkZSk7 Cj4gKwlJOTE1X1dSSVRFX0ZXKFNQUlBPUyhwaXBlKSwgKGNydGNfeSA8PCAxNikgfCBjcnRjX3gp Owo+ICsJSTkxNV9XUklURV9GVyhTUFJTSVpFKHBpcGUpLCAoY3J0Y19oIDw8IDE2KSB8IGNydGNf dyk7Cj4gKwlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiArCQlJOTE1X1dSSVRFX0ZXKFNQ UlNDQUxFKHBpcGUpLCBzcHJzY2FsZSk7Cj4gKwo+ICAJaWYgKGtleS0+ZmxhZ3MpIHsKPiAgCQlJ OTE1X1dSSVRFX0ZXKFNQUktFWVZBTChwaXBlKSwga2V5LT5taW5fdmFsdWUpOwo+ICAJCUk5MTVf V1JJVEVfRlcoU1BSS0VZTUFYKHBpcGUpLCBrZXktPm1heF92YWx1ZSk7Cj4gIAkJSTkxNV9XUklU RV9GVyhTUFJLRVlNU0socGlwZSksIGtleS0+Y2hhbm5lbF9tYXNrKTsKPiAgCX0KPiAgCj4gLQlJ OTE1X1dSSVRFX0ZXKFNQUlNUUklERShwaXBlKSwgcGxhbmVfc3RhdGUtPmNvbG9yX3BsYW5lWzBd LnN0cmlkZSk7Cj4gLQlJOTE1X1dSSVRFX0ZXKFNQUlBPUyhwaXBlKSwgKGNydGNfeSA8PCAxNikg fCBjcnRjX3gpOwo+IC0KPiAgCS8qIEhTVyBjb25zb2xpZGF0ZXMgU1BSVElMRU9GRiBhbmQgU1BS TElOT0ZGIGludG8gYSBzaW5nbGUgU1BST0ZGU0VUCj4gIAkgKiByZWdpc3RlciAqLwo+IC0JaWYg KElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElTX0JST0FEV0VMTChkZXZfcHJpdikpCj4gKwlpZiAo SVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJPQURXRUxMKGRldl9wcml2KSkgewo+ICAJCUk5 MTVfV1JJVEVfRlcoU1BST0ZGU0VUKHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKPiAtCWVsc2UgaWYg KGZiLT5tb2RpZmllciA9PSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRCkKPiArCX0gZWxzZSB7Cj4g IAkJSTkxNV9XUklURV9GVyhTUFJUSUxFT0ZGKHBpcGUpLCAoeSA8PCAxNikgfCB4KTsKPiAtCWVs c2UKPiAgCQlJOTE1X1dSSVRFX0ZXKFNQUkxJTk9GRihwaXBlKSwgbGluZWFyX29mZnNldCk7Cj4g Kwl9Cj4gIAo+IC0JSTkxNV9XUklURV9GVyhTUFJTSVpFKHBpcGUpLCAoY3J0Y19oIDw8IDE2KSB8 IGNydGNfdyk7Cj4gLQlpZiAoSVNfSVZZQlJJREdFKGRldl9wcml2KSkKPiAtCQlJOTE1X1dSSVRF X0ZXKFNQUlNDQUxFKHBpcGUpLCBzcHJzY2FsZSk7Cj4gKwkvKgo+ICsJICogVGhlIGNvbnRyb2wg cmVnaXN0ZXIgc2VsZi1hcm1zIGlmIHRoZSBwbGFuZSB3YXMgcHJldmlvdXNseQo+ICsJICogZGlz YWJsZWQuIFRyeSB0byBtYWtlIHRoZSBwbGFuZSBlbmFibGUgYXRvbWljIGJ5IHdyaXRpbmcKPiAr CSAqIHRoZSBjb250cm9sIHJlZ2lzdGVyIGp1c3QgYmVmb3JlIHRoZSBzdXJmYWNlIHJlZ2lzdGVy Lgo+ICsJICovCj4gIAlJOTE1X1dSSVRFX0ZXKFNQUkNUTChwaXBlKSwgc3ByY3RsKTsKPiAgCUk5 MTVfV1JJVEVfRlcoU1BSU1VSRihwaXBlKSwKPiAgCQkgICAgICBpbnRlbF9wbGFuZV9nZ3R0X29m ZnNldChwbGFuZV9zdGF0ZSkgKyBzcHJzdXJmX29mZnNldCk7Cj4gQEAgLTkxNSw3ICs5MjcsNyBA QCBpdmJfZGlzYWJsZV9wbGFuZShzdHJ1Y3QgaW50ZWxfcGxhbmUgKnBsYW5lLCBzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YykKPiAgCXNwaW5fbG9ja19pcnFzYXZlKCZkZXZfcHJpdi0+dW5jb3JlLmxv Y2ssIGlycWZsYWdzKTsKPiAgCj4gIAlJOTE1X1dSSVRFX0ZXKFNQUkNUTChwaXBlKSwgMCk7Cj4g LQkvKiBDYW4ndCBsZWF2ZSB0aGUgc2NhbGVyIGVuYWJsZWQuLi4gKi8KPiArCS8qIERpc2FibGUg dGhlIHNjYWxlciAqLwo+ICAJaWYgKElTX0lWWUJSSURHRShkZXZfcHJpdikpCj4gIAkJSTkxNV9X UklURV9GVyhTUFJTQ0FMRShwaXBlKSwgMCk7Cj4gIAlJOTE1X1dSSVRFX0ZXKFNQUlNVUkYocGlw ZSksIDApOwo+IEBAIC0xMDE3LDcgKzEwMjksNiBAQCBnNHhfdXBkYXRlX3BsYW5lKHN0cnVjdCBp bnRlbF9wbGFuZSAqcGxhbmUsCj4gIAkJIGNvbnN0IHN0cnVjdCBpbnRlbF9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IHRvX2k5MTUocGxhbmUtPmJhc2UuZGV2KTsKPiAtCWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gcGxhbmVfc3RhdGUtPmJhc2UuZmI7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IHBsYW5l LT5waXBlOwo+ICAJdTMyIGR2c2NudHIgPSBwbGFuZV9zdGF0ZS0+Y3RsLCBkdnNzY2FsZSA9IDA7 Cj4gIAl1MzIgZHZzc3VyZl9vZmZzZXQgPSBwbGFuZV9zdGF0ZS0+Y29sb3JfcGxhbmVbMF0ub2Zm c2V0Owo+IEBAIC0xMDQ2LDIyICsxMDU3LDI1IEBAIGc0eF91cGRhdGVfcGxhbmUoc3RydWN0IGlu dGVsX3BsYW5lICpwbGFuZSwKPiAgCj4gIAlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2X3ByaXYtPnVu Y29yZS5sb2NrLCBpcnFmbGFncyk7Cj4gIAo+ICsJSTkxNV9XUklURV9GVyhEVlNTVFJJREUocGlw ZSksIHBsYW5lX3N0YXRlLT5jb2xvcl9wbGFuZVswXS5zdHJpZGUpOwo+ICsJSTkxNV9XUklURV9G VyhEVlNQT1MocGlwZSksIChjcnRjX3kgPDwgMTYpIHwgY3J0Y194KTsKPiArCUk5MTVfV1JJVEVf RlcoRFZTU0laRShwaXBlKSwgKGNydGNfaCA8PCAxNikgfCBjcnRjX3cpOwo+ICsJSTkxNV9XUklU RV9GVyhEVlNTQ0FMRShwaXBlKSwgZHZzc2NhbGUpOwo+ICsKPiAgCWlmIChrZXktPmZsYWdzKSB7 Cj4gIAkJSTkxNV9XUklURV9GVyhEVlNLRVlWQUwocGlwZSksIGtleS0+bWluX3ZhbHVlKTsKPiAg CQlJOTE1X1dSSVRFX0ZXKERWU0tFWU1BWChwaXBlKSwga2V5LT5tYXhfdmFsdWUpOwo+ICAJCUk5 MTVfV1JJVEVfRlcoRFZTS0VZTVNLKHBpcGUpLCBrZXktPmNoYW5uZWxfbWFzayk7Cj4gIAl9Cj4g IAo+IC0JSTkxNV9XUklURV9GVyhEVlNTVFJJREUocGlwZSksIHBsYW5lX3N0YXRlLT5jb2xvcl9w bGFuZVswXS5zdHJpZGUpOwo+IC0JSTkxNV9XUklURV9GVyhEVlNQT1MocGlwZSksIChjcnRjX3kg PDwgMTYpIHwgY3J0Y194KTsKPiAtCj4gLQlpZiAoZmItPm1vZGlmaWVyID09IEk5MTVfRk9STUFU X01PRF9YX1RJTEVEKQoKSSBiZWxpZXZlIHRoaXMgcmVtb3ZlZCBpZiBkZXNlcnZlcyBhIHNlcGFy YXRlZCBwYXRjaC4uLgoKdGhlIHJlc3Qgd2FzIGhhcmQgdG8gcmV2aWV3LCBidXQgYWZ0ZXIgeW91 IHBvaW50ZWQgb3V0IGhvdyB0byBjaGVjawpvbiBic3BlYyB0aGUgYXJtZWQtYnkgZmllbGQgSSB0 aGluayBpdCBhbGwgbWFrZXMgc2Vuc2UuCgo+IC0JCUk5MTVfV1JJVEVfRlcoRFZTVElMRU9GRihw aXBlKSwgKHkgPDwgMTYpIHwgeCk7Cj4gLQllbHNlCj4gLQkJSTkxNV9XUklURV9GVyhEVlNMSU5P RkYocGlwZSksIGxpbmVhcl9vZmZzZXQpOwo+ICsJSTkxNV9XUklURV9GVyhEVlNUSUxFT0ZGKHBp cGUpLCAoeSA8PCAxNikgfCB4KTsKPiArCUk5MTVfV1JJVEVfRlcoRFZTTElOT0ZGKHBpcGUpLCBs aW5lYXJfb2Zmc2V0KTsKPiAgCj4gLQlJOTE1X1dSSVRFX0ZXKERWU1NJWkUocGlwZSksIChjcnRj X2ggPDwgMTYpIHwgY3J0Y193KTsKPiAtCUk5MTVfV1JJVEVfRlcoRFZTU0NBTEUocGlwZSksIGR2 c3NjYWxlKTsKPiArCS8qCj4gKwkgKiBUaGUgY29udHJvbCByZWdpc3RlciBzZWxmLWFybXMgaWYg dGhlIHBsYW5lIHdhcyBwcmV2aW91c2x5Cj4gKwkgKiBkaXNhYmxlZC4gVHJ5IHRvIG1ha2UgdGhl IHBsYW5lIGVuYWJsZSBhdG9taWMgYnkgd3JpdGluZwo+ICsJICogdGhlIGNvbnRyb2wgcmVnaXN0 ZXIganVzdCBiZWZvcmUgdGhlIHN1cmZhY2UgcmVnaXN0ZXIuCj4gKwkgKi8KPiAgCUk5MTVfV1JJ VEVfRlcoRFZTQ05UUihwaXBlKSwgZHZzY250cik7Cj4gIAlJOTE1X1dSSVRFX0ZXKERWU1NVUkYo cGlwZSksCj4gIAkJICAgICAgaW50ZWxfcGxhbmVfZ2d0dF9vZmZzZXQocGxhbmVfc3RhdGUpICsg ZHZzc3VyZl9vZmZzZXQpOwo+IC0tIAo+IDIuMTguMQo+IAo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IElu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeApfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK