From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: Re: [CI 4/4] drm/i915: Skip modeset for cdclk changes if possible Date: Tue, 26 Mar 2019 13:49:27 +0200 Message-ID: <20190326114927.GA2306@ideak-desk.fi.intel.com> References: <20190320135439.12201-1-imre.deak@intel.com> <20190320135439.12201-4-imre.deak@intel.com> <5b9e188f-c9e7-9429-7728-69d7b220e1de@intel.com> <20190322202307.GA30220@ideak-desk.fi.intel.com> Reply-To: imre.deak@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id E17996E7F2 for ; Tue, 26 Mar 2019 11:49:42 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190322202307.GA30220@ideak-desk.fi.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Clinton Taylor Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBNYXIgMjIsIDIwMTkgYXQgMTA6MjM6MDdQTSArMDIwMCwgSW1yZSBEZWFrIHdyb3Rl Ogo+IE9uIFRodSwgTWFyIDIxLCAyMDE5IGF0IDAyOjUzOjAwUE0gLTA3MDAsIENsaW50b24gVGF5 bG9yIHdyb3RlOgo+ID4gCj4gPiBPbiAzLzIwLzE5IDY6NTQgQU0sIEltcmUgRGVhayB3cm90ZToK PiA+ID4gRnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNv bT4KPiA+ID4gCj4gPiA+IElmIHdlIGhhdmUgb25seSBhIHNpbmdsZSBhY3RpdmUgcGlwZSBhbmQg dGhlIGNkY2xrIGNoYW5nZSBvbmx5IHJlcXVpcmVzCj4gPiA+IHRoZSBjZDJ4IGRpdmlkZXIgdG8g YmUgdXBkYXRlZCBieHQrIGNhbiBkbyB0aGUgdXBkYXRlIHdpdGggZm9yY2luZyBhIGZ1bGwKPiA+ ID4gbW9kZXNldCBvbiB0aGUgcGlwZS4gVHJ5IHRvIGhvb2sgdGhhdCB1cC4KPiA+ID4gCj4gPiA+ IHYyOgo+ID4gPiAtIFdhaXQgZm9yIHZibGFuayBhZnRlciBhbiBvcHRpbWl6ZWQgQ0RDTEsgY2hh bmdlLgo+ID4gPiAtIEF2b2lkIG9wdGltaXphdGlvbiBpZiB0aGUgcGlwZSBuZWVkcyBhIG1vZGVz ZXQgKG9yIHdhcyBkaXNhYmxlZCkuCj4gPiA+IC0gU3BsaXQgQ0RDTEsgY2hhbmdlIHRvIGEgcHJl L3Bvc3QgcGxhbmUgdXBkYXRlIHN0ZXAuCj4gPiA+IHYzOgo+ID4gPiAtIFVzZSBjb3JyZWN0IHZl cnNpb24gb2YgQ0RDTEsgc3RhdGUgYXMgb2xkIHN0YXRlLiAoVmlsbGUpCj4gPiA+IC0gUmVtb3Zl IHVudXNlZCBpbnRlbF9jZGNsa19jYW5fc2tpcF9tb2Rlc2V0KCkKPiA+ID4gdjQ6Cj4gPiA+IC0g Rm9yIGNvbnNpc3RlbmN5IGNhbGwgaW50ZWxfc2V0X2NkY2xrX3Bvc3RfcGxhbmVfdXBkYXRlKCkg b25seSBkdXJpbmcKPiA+ID4gICAgbW9kZXNldHMgKGFuZCBub3QgZmFzdHNldHMpLgo+ID4gPiAK PiA+ID4gU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4 LmludGVsLmNvbT4KPiA+ID4gU2lnbmVkLW9mZi1ieTogQWJoYXkgS3VtYXIgPGFiaGF5Lmt1bWFy QGludGVsLmNvbT4KPiA+ID4gVGVzdGVkLWJ5OiBBYmhheSBLdW1hciA8YWJoYXkua3VtYXJAaW50 ZWwuY29tPgo+ID4gPiBTaWduZWQtb2ZmLWJ5OiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5j b20+Cj4gPiA+IC0tLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAg ICB8ICAgMyArLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8 ICAgMyArLQo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMgICB8IDE0 MiArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ID4gPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8ICA0MiArKysrKysrKysrLQo+ID4gPiAgIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgICB8ICAxNyArKysrLQo+ID4gPiAgIDUgZmls ZXMgY2hhbmdlZCwgMTcwIGluc2VydGlvbnMoKyksIDM3IGRlbGV0aW9ucygtKQo+ID4gPiAKPiA+ ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gPiA+IGluZGV4IDZiMTBjZWU0ZTc3Zi4uZDhmOTE1 MjVjOTRjIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o Cj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiA+ID4gQEAgLTI3 Nyw3ICsyNzcsOCBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxheV9mdW5jcyB7Cj4gPiA+ICAgCXZv aWQgKCpnZXRfY2RjbGspKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4g ICAJCQkgIHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpOwo+ID4gPiAgIAl2 b2lkICgqc2V0X2NkY2xrKShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ IC0JCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpOwo+ID4g PiArCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlLAo+ID4g PiArCQkJICBlbnVtIHBpcGUgcGlwZSk7Cj4gPiA+ICAgCWludCAoKmdldF9maWZvX3NpemUpKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gICAJCQkgICAgIGVudW0gaTl4 eF9wbGFuZV9pZCBpOXh4X3BsYW5lKTsKPiA+ID4gICAJaW50ICgqY29tcHV0ZV9waXBlX3dtKShz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3N0YXRlKTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oCj4gPiA+IGluZGV4IDliNjljZWMyMWY3Yi4uMTJiODE3MGNlZDk2IDEwMDY0NAo+ID4gPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gPiA+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiA+ID4gQEAgLTk1MjEsNyArOTUyMSw4IEBAIGVudW0g c2tsX3Bvd2VyX2dhdGUgewo+ID4gPiAgICNkZWZpbmUgIEJYVF9DRENMS19DRDJYX1BJUEUocGlw ZSkJKChwaXBlKSA8PCAyMCkKPiA+ID4gICAjZGVmaW5lICBDRENMS19ESVZNVVhfQ0RfT1ZFUlJJ REUJKDEgPDwgMTkpCj4gPiA+ICAgI2RlZmluZSAgQlhUX0NEQ0xLX0NEMlhfUElQRV9OT05FCUJY VF9DRENMS19DRDJYX1BJUEUoMykKPiA+ID4gLSNkZWZpbmUgIElDTF9DRENMS19DRDJYX1BJUEVf Tk9ORQkoNyA8PCAxOSkKPiA+ID4gKyNkZWZpbmUgIElDTF9DRENMS19DRDJYX1BJUEUocGlwZSkJ KChwaXBlKSA8PCAxOSkKPiA+IAo+ID4gVW5mb3J0dW5hdGVseSBiaXRzIDIxOjE5IG9mIENEQ0xL X0NUTCBkb24ndCBtYXRjaCB0aGUgcGlwZSBlbnVtLiBUaGlzIE1BQ1JPCj4gPiB3aWxsIG5vdCB3 b3JrIGV4Y2VwdCBmb3IgUElQRV9BLgo+ID4gCj4gPiBQaXBlX0EgaXMgMHgwMCwgUElQRV9CIGlz IDB4MDIsIFBJUEVfQyBpcyAweDA2Lgo+IAo+IEdvb2QgY2F0Y2guCj4gCj4gVGhlIHBpcGUgQiBh bmQgQyBlbmNvZGluZ3MgY291bGQgYmUgdHlwb2VkIHRob3VnaCBhbmQgSSBjb3VsZG4ndCB0cmln Z2VyCj4gYW55IHByb2JsZW1zIHdpdGggZWl0aGVyIGVuY29kaW5ncyAoaS5lLiB1c2luZyBlaXRo ZXIgMHgxIG9yIDB4MiBmb3IKPiBwaXBlIEIgdXBkYXRlcyB3aGlsZSBwaXBlIEIgd2FzIHRoZSBv bmx5IHBpcGUgZW5hYmxlZCkuIFNvIEkgb3BlbmVkIGEKPiB0aWNrZXQgZm9yIHRoaXMgaW4gQlNw ZWMsIGxldCdzIHdhaXQgZm9yIGEgY2xhcmlmaWNhdGlvbiBvbiB0aGlzLgoKVGhlcmUgaXMgbm8g Y29uY2x1c2lvbiBvbiB0aGlzIGluIEJTcGVjIHlldC4gSG93ZXZlciBpbW8sIHdlIGRvbid0IG5l ZWQKdG8gd2FpdCBmb3IgdGhhdCBzaW5jZSBvbiBJQ0wgdGhlcmUgaXMgYWN0dWFsbHkgbm8gc3Vw cG9ydCBmb3IgYSBDRCBjbG9jawpkaXZpZGVyIG90aGVyIHRoYW4gMSwgc2VlIHRoZSBkZXNjcmlw dGlvbiBmb3IgQ0RDTEtfQ1RMIGluIHRoZSBzcGVjLgoKU28gb24gSUNMIHdlJ2QgbmV2ZXIgY2hh bmdlIHRoZSBDRENMSyByYXRlIHdoaWxlIGl0J3MgYWN0aXZlIGFuZCBzbyB3ZQpkb24ndCBhY3R1 YWxseSBuZWVkIHRvIGV2ZXIgc2V0IHRoZSBwaXBlIHNlbGVjdCBiaXRzIHRvIG90aGVyIHRoYW4g dGhlCmN1cnJlbnQgbm8tcGlwZSBzZXR0aW5nLgoKVmlsbGUgcG9pbnRlZCBvdXQgdGhhdCBpbiB0 aGUgZnV0dXJlIHdlJ2xsIHN0aWxsIGNhbGwgaWNsX3NldF9jZGNsaygpCndoaWxlIHRoZSBDRCBj bG9jayBpcyBhY3RpdmUsIGJ1dCBvbmx5IHRvIGNoYW5nZSB0aGUgdm9sdGFnZSBsZXZlbAooYXMg cmVxdWlyZWQgYnkgcG9ydCBjbG9jayByYXRlcyksIGtlZXBpbmcgdGhlIENEIGNsb2NrIHJhdGUg dGhlIHNhbWUuCkJ1dCB0aGF0IGRvZXNuJ3QgbmVlZCB0aGUgcGlwZSBzZWxlY3QgYml0cyBlaXRo ZXIgbm9yIHRoZSB2Ymxhbmsgd2FpdC4KCkJhc2VkIG9uIHRoZSBhYm92ZSBJJ2xsIHJlbW92ZSB0 aGUgSUNMIHNwZWNpZmMgcGFydHMgZnJvbSB0aGlzIHBhdGNoIHRvCnNldCB0aGUgcGlwZSBzZWxl Y3QgYml0cyBhbmQgd2FpdCBmb3IgdmJsYW5rIGluIGljbF9zZXRfY2RjbGsoKS4KCj4gCj4gPiBJ biBCWFQgb25seSBiaXRzIDIxOjIwIHdlcmUgdXNlZCBmb3IgQ0QyWCBwaXBlIHNlbGVjdCBhbmQg dGhlIHBpcGUgZW51bSBkb2VzCj4gPiB3b3JrLgo+ID4gCj4gPiAKPiA+IC1DbGludAo+ID4gCj4g PiAKPiA+IAo+ID4gPiArI2RlZmluZSAgSUNMX0NEQ0xLX0NEMlhfUElQRV9OT05FCUlDTF9DRENM S19DRDJYX1BJUEUoNykKPiA+ID4gICAjZGVmaW5lICBCWFRfQ0RDTEtfU1NBX1BSRUNIQVJHRV9F TkFCTEUJKDEgPDwgMTYpCj4gPiA+ICAgI2RlZmluZSAgQ0RDTEtfRlJFUV9ERUNJTUFMX01BU0sJ KDB4N2ZmKQo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2Rj bGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xrLmMKPiA+ID4gaW5kZXggNWMy NTYyNmY4Y2YwLi40OGNjNDJhN2VmNGYgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2NkY2xrLmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfY2RjbGsuYwo+ID4gPiBAQCAtNTE2LDcgKzUxNiw4IEBAIHN0YXRpYyB2b2lkIHZsdl9wcm9n cmFtX3BmaV9jcmVkaXRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiA+ID4g ICB9Cj4gPiA+ICAgc3RhdGljIHZvaWQgdmx2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0 ZSAqY2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0 ZSAqY2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVudW0gcGlwZSBwaXBlKQo+ID4gPiAgIHsKPiA+ ID4gICAJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNkY2xrOwo+ID4gPiAgIAl1MzIgdmFsLCBj bWQgPSBjZGNsa19zdGF0ZS0+dm9sdGFnZV9sZXZlbDsKPiA+ID4gQEAgLTU5OCw3ICs1OTksOCBA QCBzdGF0aWMgdm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+ID4gICB9Cj4gPiA+ICAgc3RhdGljIHZvaWQgY2h2X3NldF9jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNvbnN0IHN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRl bF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVudW0gcGlwZSBwaXBlKQo+ ID4gPiAgIHsKPiA+ID4gICAJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNkY2xrOwo+ID4gPiAg IAl1MzIgdmFsLCBjbWQgPSBjZGNsa19zdGF0ZS0+dm9sdGFnZV9sZXZlbDsKPiA+ID4gQEAgLTY5 Nyw3ICs2OTksOCBAQCBzdGF0aWMgdm9pZCBiZHdfZ2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiA+ID4gICB9Cj4gPiA+ICAgc3RhdGljIHZvaWQgYmR3X3NldF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNvbnN0 IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVudW0g cGlwZSBwaXBlKQo+ID4gPiAgIHsKPiA+ID4gICAJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNk Y2xrOwo+ID4gPiAgIAl1MzIgdmFsOwo+ID4gPiBAQCAtOTg3LDcgKzk5MCw4IEBAIHN0YXRpYyB2 b2lkIHNrbF9kcGxsMF9kaXNhYmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+ID4gICB9Cj4gPiA+ICAgc3RhdGljIHZvaWQgc2tsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNs a19zdGF0ZSAqY2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVudW0gcGlwZSBwaXBlKQo+ID4gPiAg IHsKPiA+ID4gICAJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNkY2xrOwo+ID4gPiAgIAlpbnQg dmNvID0gY2RjbGtfc3RhdGUtPnZjbzsKPiA+ID4gQEAgLTExNTgsNyArMTE2Miw3IEBAIHZvaWQg c2tsX2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAg IAljZGNsa19zdGF0ZS5jZGNsayA9IHNrbF9jYWxjX2NkY2xrKDAsIGNkY2xrX3N0YXRlLnZjbyk7 Cj4gPiA+ICAgCWNkY2xrX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPSBza2xfY2FsY192b2x0YWdlX2xl dmVsKGNkY2xrX3N0YXRlLmNkY2xrKTsKPiA+ID4gLQlza2xfc2V0X2NkY2xrKGRldl9wcml2LCAm Y2RjbGtfc3RhdGUpOwo+ID4gPiArCXNrbF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0 ZSwgSU5WQUxJRF9QSVBFKTsKPiA+ID4gICB9Cj4gPiA+ICAgLyoqCj4gPiA+IEBAIC0xMTc2LDcg KzExODAsNyBAQCB2b2lkIHNrbF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2KQo+ID4gPiAgIAljZGNsa19zdGF0ZS52Y28gPSAwOwo+ID4gPiAgIAljZGNsa19z dGF0ZS52b2x0YWdlX2xldmVsID0gc2tsX2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS5j ZGNsayk7Cj4gPiA+IC0Jc2tsX3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ ID4gKwlza2xfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUsIElOVkFMSURfUElQRSk7 Cj4gPiA+ICAgfQo+ID4gPiAgIHN0YXRpYyBpbnQgYnh0X2NhbGNfY2RjbGsoaW50IG1pbl9jZGNs aykKPiA+ID4gQEAgLTEzNTUsNyArMTM1OSw4IEBAIHN0YXRpYyB2b2lkIGJ4dF9kZV9wbGxfZW5h YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykKPiA+ID4gICB9 Cj4gPiA+ICAgc3RhdGljIHZvaWQgYnh0X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAq Y2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAq Y2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVudW0gcGlwZSBwaXBlKQo+ID4gPiAgIHsKPiA+ID4g ICAJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNkY2xrOwo+ID4gPiAgIAlpbnQgdmNvID0gY2Rj bGtfc3RhdGUtPnZjbzsKPiA+ID4gQEAgLTE0MDgsMTEgKzE0MTMsMTAgQEAgc3RhdGljIHZvaWQg Ynh0X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAg CQlieHRfZGVfcGxsX2VuYWJsZShkZXZfcHJpdiwgdmNvKTsKPiA+ID4gICAJdmFsID0gZGl2aWRl ciB8IHNrbF9jZGNsa19kZWNpbWFsKGNkY2xrKTsKPiA+ID4gLQkvKgo+ID4gPiAtCSAqIEZJWE1F IGlmIG9ubHkgdGhlIGNkMnggZGl2aWRlciBuZWVkcyBjaGFuZ2luZywgaXQgY291bGQgYmUgZG9u ZQo+ID4gPiAtCSAqIHdpdGhvdXQgc2h1dHRpbmcgb2ZmIHRoZSBwaXBlIChpZiBvbmx5IG9uZSBw aXBlIGlzIGFjdGl2ZSkuCj4gPiA+IC0JICovCj4gPiA+IC0JdmFsIHw9IEJYVF9DRENMS19DRDJY X1BJUEVfTk9ORTsKPiA+ID4gKwlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpCj4gPiA+ICsJCXZh bCB8PSBCWFRfQ0RDTEtfQ0QyWF9QSVBFX05PTkU7Cj4gPiA+ICsJZWxzZQo+ID4gPiArCQl2YWwg fD0gQlhUX0NEQ0xLX0NEMlhfUElQRShwaXBlKTsKPiA+ID4gICAJLyoKPiA+ID4gICAJICogRGlz YWJsZSBTU0EgUHJlY2hhcmdlIHdoZW4gQ0QgY2xvY2sgZnJlcXVlbmN5IDwgNTAwIE1IeiwKPiA+ ID4gICAJICogZW5hYmxlIG90aGVyd2lzZS4KPiA+ID4gQEAgLTE0MjEsNiArMTQyNSw5IEBAIHN0 YXRpYyB2b2lkIGJ4dF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gPiAgIAkJdmFsIHw9IEJYVF9DRENMS19TU0FfUFJFQ0hBUkdFX0VOQUJMRTsKPiA+ID4g ICAJSTkxNV9XUklURShDRENMS19DVEwsIHZhbCk7Cj4gPiA+ICsJaWYgKHBpcGUgIT0gSU5WQUxJ RF9QSVBFKQo+ID4gPiArCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwo+ ID4gPiArCj4gPiA+ICAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gPiA+ICAg CS8qCj4gPiA+ICAgCSAqIFRoZSB0aW1lb3V0IGlzbid0IHNwZWNpZmllZCwgdGhlIDJtcyB1c2Vk IGhlcmUgaXMgYmFzZWQgb24KPiA+ID4gQEAgLTE1MjUsNyArMTUzMiw3IEBAIHZvaWQgYnh0X2lu aXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgIAl9Cj4g PiA+ICAgCWNkY2xrX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPSBieHRfY2FsY192b2x0YWdlX2xldmVs KGNkY2xrX3N0YXRlLmNkY2xrKTsKPiA+ID4gLQlieHRfc2V0X2NkY2xrKGRldl9wcml2LCAmY2Rj bGtfc3RhdGUpOwo+ID4gPiArCWJ4dF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSwg SU5WQUxJRF9QSVBFKTsKPiA+ID4gICB9Cj4gPiA+ICAgLyoqCj4gPiA+IEBAIC0xNTQzLDcgKzE1 NTAsNyBAQCB2b2lkIGJ4dF91bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KQo+ID4gPiAgIAljZGNsa19zdGF0ZS52Y28gPSAwOwo+ID4gPiAgIAljZGNsa19zdGF0 ZS52b2x0YWdlX2xldmVsID0gYnh0X2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS5jZGNs ayk7Cj4gPiA+IC0JYnh0X3NldF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ID4g KwlieHRfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUsIElOVkFMSURfUElQRSk7Cj4g PiA+ICAgfQo+ID4gPiAgIHN0YXRpYyBpbnQgY25sX2NhbGNfY2RjbGsoaW50IG1pbl9jZGNsaykK PiA+ID4gQEAgLTE2NjMsNyArMTY3MCw4IEBAIHN0YXRpYyB2b2lkIGNubF9jZGNsa19wbGxfZW5h YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZjbykKPiA+ID4gICB9 Cj4gPiA+ICAgc3RhdGljIHZvaWQgY25sX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAq Y2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAq Y2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVudW0gcGlwZSBwaXBlKQo+ID4gPiAgIHsKPiA+ID4g ICAJaW50IGNkY2xrID0gY2RjbGtfc3RhdGUtPmNkY2xrOwo+ID4gPiAgIAlpbnQgdmNvID0gY2Rj bGtfc3RhdGUtPnZjbzsKPiA+ID4gQEAgLTE3MDQsMTMgKzE3MTIsMTUgQEAgc3RhdGljIHZvaWQg Y25sX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAg CQljbmxfY2RjbGtfcGxsX2VuYWJsZShkZXZfcHJpdiwgdmNvKTsKPiA+ID4gICAJdmFsID0gZGl2 aWRlciB8IHNrbF9jZGNsa19kZWNpbWFsKGNkY2xrKTsKPiA+ID4gLQkvKgo+ID4gPiAtCSAqIEZJ WE1FIGlmIG9ubHkgdGhlIGNkMnggZGl2aWRlciBuZWVkcyBjaGFuZ2luZywgaXQgY291bGQgYmUg ZG9uZQo+ID4gPiAtCSAqIHdpdGhvdXQgc2h1dHRpbmcgb2ZmIHRoZSBwaXBlIChpZiBvbmx5IG9u ZSBwaXBlIGlzIGFjdGl2ZSkuCj4gPiA+IC0JICovCj4gPiA+IC0JdmFsIHw9IEJYVF9DRENMS19D RDJYX1BJUEVfTk9ORTsKPiA+ID4gKwlpZiAocGlwZSA9PSBJTlZBTElEX1BJUEUpCj4gPiA+ICsJ CXZhbCB8PSBCWFRfQ0RDTEtfQ0QyWF9QSVBFX05PTkU7Cj4gPiA+ICsJZWxzZQo+ID4gPiArCQl2 YWwgfD0gQlhUX0NEQ0xLX0NEMlhfUElQRShwaXBlKTsKPiA+ID4gICAJSTkxNV9XUklURShDRENM S19DVEwsIHZhbCk7Cj4gPiA+ICsJaWYgKHBpcGUgIT0gSU5WQUxJRF9QSVBFKQo+ID4gPiArCQlp bnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwo+ID4gPiArCj4gPiA+ICAgCS8q IGluZm9ybSBQQ1Ugb2YgdGhlIGNoYW5nZSAqLwo+ID4gPiAgIAltdXRleF9sb2NrKCZkZXZfcHJp di0+cGN1X2xvY2spOwo+ID4gPiAgIAlzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwg U0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsCj4gPiA+IEBAIC0xODQ3LDEwICsxODU3LDEyIEBAIHN0 YXRpYyBpbnQgaWNsX2NhbGNfY2RjbGtfcGxsX3ZjbyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGludCBjZGNsaykKPiA+ID4gICB9Cj4gPiA+ICAgc3RhdGljIHZvaWQgaWNsX3Nl dF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+IC0JCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUpCj4gPiA+ICsJCQkgIGNv bnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqY2RjbGtfc3RhdGUsCj4gPiA+ICsJCQkgIGVu dW0gcGlwZSBwaXBlKQo+ID4gPiAgIHsKPiA+ID4gICAJdW5zaWduZWQgaW50IGNkY2xrID0gY2Rj bGtfc3RhdGUtPmNkY2xrOwo+ID4gPiAgIAl1bnNpZ25lZCBpbnQgdmNvID0gY2RjbGtfc3RhdGUt PnZjbzsKPiA+ID4gKwl1MzIgdmFsOwo+ID4gPiAgIAlpbnQgcmV0Owo+ID4gPiAgIAltdXRleF9s b2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ID4gPiBAQCAtMTg3Miw4ICsxODg0LDE1IEBAIHN0 YXRpYyB2b2lkIGljbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LAo+ID4gPiAgIAlpZiAoZGV2X3ByaXYtPmNkY2xrLmh3LnZjbyAhPSB2Y28pCj4gPiA+ICAgCQlj bmxfY2RjbGtfcGxsX2VuYWJsZShkZXZfcHJpdiwgdmNvKTsKPiA+ID4gLQlJOTE1X1dSSVRFKENE Q0xLX0NUTCwgSUNMX0NEQ0xLX0NEMlhfUElQRV9OT05FIHwKPiA+ID4gLQkJCSAgICAgIHNrbF9j ZGNsa19kZWNpbWFsKGNkY2xrKSk7Cj4gPiA+ICsJdmFsID0gc2tsX2NkY2xrX2RlY2ltYWwoY2Rj bGspOwo+ID4gPiArCWlmIChwaXBlID09IElOVkFMSURfUElQRSkKPiA+ID4gKwkJdmFsIHw9IElD TF9DRENMS19DRDJYX1BJUEVfTk9ORTsKPiA+ID4gKwllbHNlCj4gPiA+ICsJCXZhbCB8PSBJQ0xf Q0RDTEtfQ0QyWF9QSVBFKHBpcGUpOwo+ID4gPiArCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCB2YWwp Owo+ID4gPiArCj4gPiA+ICsJaWYgKHBpcGUgIT0gSU5WQUxJRF9QSVBFKQo+ID4gPiArCQlpbnRl bF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUpOwo+ID4gPiAgIAltdXRleF9sb2NrKCZk ZXZfcHJpdi0+cGN1X2xvY2spOwo+ID4gPiAgIAlzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZf cHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsCj4gPiA+IEBAIC0yMDAyLDcgKzIwMjEsNyBA QCB2b2lkIGljbF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK PiA+ID4gICAJc2FuaXRpemVkX3N0YXRlLnZvbHRhZ2VfbGV2ZWwgPQo+ID4gPiAgIAkJCQlpY2xf Y2FsY192b2x0YWdlX2xldmVsKHNhbml0aXplZF9zdGF0ZS5jZGNsayk7Cj4gPiA+IC0JaWNsX3Nl dF9jZGNsayhkZXZfcHJpdiwgJnNhbml0aXplZF9zdGF0ZSk7Cj4gPiA+ICsJaWNsX3NldF9jZGNs ayhkZXZfcHJpdiwgJnNhbml0aXplZF9zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKPiA+ID4gICB9Cj4g PiA+ICAgLyoqCj4gPiA+IEBAIC0yMDIwLDcgKzIwMzksNyBAQCB2b2lkIGljbF91bmluaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgIAljZGNsa19zdGF0 ZS52Y28gPSAwOwo+ID4gPiAgIAljZGNsa19zdGF0ZS52b2x0YWdlX2xldmVsID0gaWNsX2NhbGNf dm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS5jZGNsayk7Cj4gPiA+IC0JaWNsX3NldF9jZGNsayhk ZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ID4gKwlpY2xfc2V0X2NkY2xrKGRldl9wcml2LCAm Y2RjbGtfc3RhdGUsIElOVkFMSURfUElQRSk7Cj4gPiA+ICAgfQo+ID4gPiAgIC8qKgo+ID4gPiBA QCAtMjA0OCw3ICsyMDY3LDcgQEAgdm9pZCBjbmxfaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpCj4gPiA+ICAgCWNkY2xrX3N0YXRlLnZjbyA9IGNubF9jZGNsa19w bGxfdmNvKGRldl9wcml2LCBjZGNsa19zdGF0ZS5jZGNsayk7Cj4gPiA+ICAgCWNkY2xrX3N0YXRl LnZvbHRhZ2VfbGV2ZWwgPSBjbmxfY2FsY192b2x0YWdlX2xldmVsKGNkY2xrX3N0YXRlLmNkY2xr KTsKPiA+ID4gLQljbmxfc2V0X2NkY2xrKGRldl9wcml2LCAmY2RjbGtfc3RhdGUpOwo+ID4gPiAr CWNubF9zZXRfY2RjbGsoZGV2X3ByaXYsICZjZGNsa19zdGF0ZSwgSU5WQUxJRF9QSVBFKTsKPiA+ ID4gICB9Cj4gPiA+ICAgLyoqCj4gPiA+IEBAIC0yMDY2LDcgKzIwODUsNyBAQCB2b2lkIGNubF91 bmluaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ID4gPiAgIAlj ZGNsa19zdGF0ZS52Y28gPSAwOwo+ID4gPiAgIAljZGNsa19zdGF0ZS52b2x0YWdlX2xldmVsID0g Y25sX2NhbGNfdm9sdGFnZV9sZXZlbChjZGNsa19zdGF0ZS5jZGNsayk7Cj4gPiA+IC0JY25sX3Nl dF9jZGNsayhkZXZfcHJpdiwgJmNkY2xrX3N0YXRlKTsKPiA+ID4gKwljbmxfc2V0X2NkY2xrKGRl dl9wcml2LCAmY2RjbGtfc3RhdGUsIElOVkFMSURfUElQRSk7Cj4gPiA+ICAgfQo+ID4gPiAgIC8q Kgo+ID4gPiBAQCAtMjA4Niw2ICsyMTA1LDI3IEBAIGJvb2wgaW50ZWxfY2RjbGtfbmVlZHNfbW9k ZXNldChjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmEsCj4gPiA+ICAgfQo+ID4gPiAg IC8qKgo+ID4gPiArICogaW50ZWxfY2RjbGtfbmVlZHNfY2QyeF91cGRhdGUgLSBEZXRlcm1pbmUg aWYgdHdvIENEQ0xLIHN0YXRlcyByZXF1aXJlIGEgY2QyeCBkaXZpZGVyIHVwZGF0ZQo+ID4gPiAr ICogQGE6IGZpcnN0IENEQ0xLIHN0YXRlCj4gPiA+ICsgKiBAYjogc2Vjb25kIENEQ0xLIHN0YXRl Cj4gPiA+ICsgKgo+ID4gPiArICogUmV0dXJuczoKPiA+ID4gKyAqIFRydWUgaWYgdGhlIENEQ0xL IHN0YXRlcyByZXF1aXJlIGp1c3QgYSBjZDJ4IGRpdmlkZXIgdXBkYXRlLCBmYWxzZSBpZiBub3Qu Cj4gPiA+ICsgKi8KPiA+ID4gK2Jvb2wgaW50ZWxfY2RjbGtfbmVlZHNfY2QyeF91cGRhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ID4gPiArCQkJCSAgIGNvbnN0IHN0cnVj dCBpbnRlbF9jZGNsa19zdGF0ZSAqYSwKPiA+ID4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxf Y2RjbGtfc3RhdGUgKmIpCj4gPiA+ICt7Cj4gPiA+ICsJLyogT2xkZXIgaHcgZG9lc24ndCBoYXZl IHRoZSBjYXBhYmlsaXR5ICovCj4gPiA+ICsJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCAxMCAm JiAhSVNfR0VOOV9MUChkZXZfcHJpdikpCj4gPiA+ICsJCXJldHVybiBmYWxzZTsKPiA+ID4gKwo+ ID4gPiArCXJldHVybiBhLT5jZGNsayAhPSBiLT5jZGNsayAmJgo+ID4gPiArCQlhLT52Y28gPT0g Yi0+dmNvICYmCj4gPiA+ICsJCWEtPnJlZiA9PSBiLT5yZWY7Cj4gPiA+ICt9Cj4gPiA+ICsKPiA+ ID4gKy8qKgo+ID4gPiAgICAqIGludGVsX2NkY2xrX2NoYW5nZWQgLSBEZXRlcm1pbmUgaWYgdHdv IENEQ0xLIHN0YXRlcyBhcmUgZGlmZmVyZW50Cj4gPiA+ICAgICogQGE6IGZpcnN0IENEQ0xLIHN0 YXRlCj4gPiA+ICAgICogQGI6IHNlY29uZCBDRENMSyBzdGF0ZQo+ID4gPiBAQCAtMjEzMywxMiAr MjE3MywxNCBAQCB2b2lkIGludGVsX2R1bXBfY2RjbGtfc3RhdGUoY29uc3Qgc3RydWN0IGludGVs X2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSwKPiA+ID4gICAgKiBpbnRlbF9zZXRfY2RjbGsgLSBQ dXNoIHRoZSBDRENMSyBzdGF0ZSB0byB0aGUgaGFyZHdhcmUKPiA+ID4gICAgKiBAZGV2X3ByaXY6 IGk5MTUgZGV2aWNlCj4gPiA+ICAgICogQGNkY2xrX3N0YXRlOiBuZXcgQ0RDTEsgc3RhdGUKPiA+ ID4gKyAqIEBwaXBlOiBwaXBlIHdpdGggd2hpY2ggdG8gc3luY2hyb25pemUgdGhlIHVwZGF0ZQo+ ID4gPiAgICAqCj4gPiA+ICAgICogUHJvZ3JhbSB0aGUgaGFyZHdhcmUgYmFzZWQgb24gdGhlIHBh c3NlZCBpbiBDRENMSyBzdGF0ZSwKPiA+ID4gICAgKiBpZiBuZWNlc3NhcnkuCj4gPiA+ICAgICov Cj4gPiA+IC12b2lkIGludGVsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiA+IC0JCSAgICAgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNs a19zdGF0ZSkKPiA+ID4gK3N0YXRpYyB2b2lkIGludGVsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICsJCQkgICAgY29uc3Qgc3RydWN0IGludGVsX2Nk Y2xrX3N0YXRlICpjZGNsa19zdGF0ZSwKPiA+ID4gKwkJCSAgICBlbnVtIHBpcGUgcGlwZSkKPiA+ ID4gICB7Cj4gPiA+ICAgCWlmICghaW50ZWxfY2RjbGtfY2hhbmdlZCgmZGV2X3ByaXYtPmNkY2xr Lmh3LCBjZGNsa19zdGF0ZSkpCj4gPiA+ICAgCQlyZXR1cm47Cj4gPiA+IEBAIC0yMTQ4LDcgKzIx OTAsNyBAQCB2b2lkIGludGVsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsCj4gPiA+ICAgCWludGVsX2R1bXBfY2RjbGtfc3RhdGUoY2RjbGtfc3RhdGUsICJDaGFu Z2luZyBDRENMSyB0byIpOwo+ID4gPiAtCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayhkZXZf cHJpdiwgY2RjbGtfc3RhdGUpOwo+ID4gPiArCWRldl9wcml2LT5kaXNwbGF5LnNldF9jZGNsayhk ZXZfcHJpdiwgY2RjbGtfc3RhdGUsIHBpcGUpOwo+ID4gPiAgIAlpZiAoV0FSTihpbnRlbF9jZGNs a19jaGFuZ2VkKCZkZXZfcHJpdi0+Y2RjbGsuaHcsIGNkY2xrX3N0YXRlKSwKPiA+ID4gICAJCSAi Y2RjbGsgc3RhdGUgZG9lc24ndCBtYXRjaCFcbiIpKSB7Cj4gPiA+IEBAIC0yMTU3LDYgKzIxOTks NDYgQEAgdm9pZCBpbnRlbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gPiAgIAl9Cj4gPiA+ICAgfQo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9zZXRf Y2RjbGtfcHJlX3BsYW5lX3VwZGF0ZSAtIFB1c2ggdGhlIENEQ0xLIHN0YXRlIHRvIHRoZSBoYXJk d2FyZQo+ID4gPiArICogQGRldl9wcml2OiBpOTE1IGRldmljZQo+ID4gPiArICogQG9sZF9zdGF0 ZTogb2xkIENEQ0xLIHN0YXRlCj4gPiA+ICsgKiBAbmV3X3N0YXRlOiBuZXcgQ0RDTEsgc3RhdGUK PiA+ID4gKyAqIEBwaXBlOiBwaXBlIHdpdGggd2hpY2ggdG8gc3luY2hyb25pemUgdGhlIHVwZGF0 ZQo+ID4gPiArICoKPiA+ID4gKyAqIFByb2dyYW0gdGhlIGhhcmR3YXJlIGJlZm9yZSB1cGRhdGlu ZyB0aGUgSFcgcGxhbmUgc3RhdGUgYmFzZWQgb24gdGhlIHBhc3NlZAo+ID4gPiArICogaW4gQ0RD TEsgc3RhdGUsIGlmIG5lY2Vzc2FyeS4KPiA+ID4gKyAqLwo+ID4gPiArdm9pZAo+ID4gPiAraW50 ZWxfc2V0X2NkY2xrX3ByZV9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ID4gPiArCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKm9sZF9z dGF0ZSwKPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpuZXdfc3Rh dGUsCj4gPiA+ICsJCQkJIGVudW0gcGlwZSBwaXBlKQo+ID4gPiArewo+ID4gPiArCWlmIChwaXBl ID09IElOVkFMSURfUElQRSB8fCBvbGRfc3RhdGUtPmNkY2xrIDw9IG5ld19zdGF0ZS0+Y2RjbGsp Cj4gPiA+ICsJCWludGVsX3NldF9jZGNsayhkZXZfcHJpdiwgbmV3X3N0YXRlLCBwaXBlKTsKPiA+ ID4gK30KPiA+ID4gKwo+ID4gPiArLyoqCj4gPiA+ICsgKiBpbnRlbF9zZXRfY2RjbGtfcG9zdF9w bGFuZV91cGRhdGUgLSBQdXNoIHRoZSBDRENMSyBzdGF0ZSB0byB0aGUgaGFyZHdhcmUKPiA+ID4g KyAqIEBkZXZfcHJpdjogaTkxNSBkZXZpY2UKPiA+ID4gKyAqIEBvbGRfc3RhdGU6IG9sZCBDRENM SyBzdGF0ZQo+ID4gPiArICogQG5ld19zdGF0ZTogbmV3IENEQ0xLIHN0YXRlCj4gPiA+ICsgKiBA cGlwZTogcGlwZSB3aXRoIHdoaWNoIHRvIHN5bmNocm9uaXplIHRoZSB1cGRhdGUKPiA+ID4gKyAq Cj4gPiA+ICsgKiBQcm9ncmFtIHRoZSBoYXJkd2FyZSBhZnRlciB1cGRhdGluZyB0aGUgSFcgcGxh bmUgc3RhdGUgYmFzZWQgb24gdGhlIHBhc3NlZAo+ID4gPiArICogaW4gQ0RDTEsgc3RhdGUsIGlm IG5lY2Vzc2FyeS4KPiA+ID4gKyAqLwo+ID4gPiArdm9pZAo+ID4gPiAraW50ZWxfc2V0X2NkY2xr X3Bvc3RfcGxhbmVfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ ID4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqb2xkX3N0YXRlLAo+ID4g PiArCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpuZXdfc3RhdGUsCj4gPiA+ ICsJCQkJICBlbnVtIHBpcGUgcGlwZSkKPiA+ID4gK3sKPiA+ID4gKwlpZiAocGlwZSAhPSBJTlZB TElEX1BJUEUgJiYgb2xkX3N0YXRlLT5jZGNsayA+IG5ld19zdGF0ZS0+Y2RjbGspCj4gPiA+ICsJ CWludGVsX3NldF9jZGNsayhkZXZfcHJpdiwgbmV3X3N0YXRlLCBwaXBlKTsKPiA+ID4gK30KPiA+ ID4gKwo+ID4gPiAgIHN0YXRpYyBpbnQgaW50ZWxfcGl4ZWxfcmF0ZV90b19jZGNsayhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gPiA+ICAgCQkJCSAgICAgaW50IHBpeGVsX3Jh dGUpCj4gPiA+ICAgewo+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+ IGluZGV4IGY3YjQ0NzczZTFlNy4uYmNlYzAzZjQzZDNhIDEwMDY0NAo+ID4gPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiA+ID4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPiA+IEBAIC0xMjk4Miw2ICsxMjk4Miw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfbW9kZXNldF9jaGVja3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQo+ID4gPiAgIAlpbnRlbF9zdGF0ZS0+YWN0aXZlX2NydGNzID0gZGV2X3ByaXYtPmFjdGl2 ZV9jcnRjczsKPiA+ID4gICAJaW50ZWxfc3RhdGUtPmNkY2xrLmxvZ2ljYWwgPSBkZXZfcHJpdi0+ Y2RjbGsubG9naWNhbDsKPiA+ID4gICAJaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCA9IGRldl9w cml2LT5jZGNsay5hY3R1YWw7Cj4gPiA+ICsJaW50ZWxfc3RhdGUtPmNkY2xrLnBpcGUgPSBJTlZB TElEX1BJUEU7Cj4gPiA+ICAgCWZvcl9lYWNoX29sZG5ld19jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBvbGRfY3J0Y19zdGF0ZSwgbmV3X2NydGNfc3RhdGUsIGkpIHsKPiA+ID4gICAJCWlmIChu ZXdfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ID4gPiBAQCAtMTMwMDEsNiArMTMwMDIsOCBAQCBzdGF0 aWMgaW50IGludGVsX21vZGVzZXRfY2hlY2tzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiA+ID4gICAJICogYWRqdXN0ZWRfbW9kZSBiaXRzIGluIHRoZSBjcnRjIGRpcmVjdGx5Lgo+ ID4gPiAgIAkgKi8KPiA+ID4gICAJaWYgKGRldl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfY2FsY19j ZGNsaykgewo+ID4gPiArCQllbnVtIHBpcGUgcGlwZTsKPiA+ID4gKwo+ID4gPiAgIAkJcmV0ID0g ZGV2X3ByaXYtPmRpc3BsYXkubW9kZXNldF9jYWxjX2NkY2xrKHN0YXRlKTsKPiA+ID4gICAJCWlm IChyZXQgPCAwKQo+ID4gPiAgIAkJCXJldHVybiByZXQ7Cj4gPiA+IEBAIC0xMzAxNywxMiArMTMw MjAsMzYgQEAgc3RhdGljIGludCBpbnRlbF9tb2Rlc2V0X2NoZWNrcyhzdHJ1Y3QgZHJtX2F0b21p Y19zdGF0ZSAqc3RhdGUpCj4gPiA+ICAgCQkJCXJldHVybiByZXQ7Cj4gPiA+ICAgCQl9Cj4gPiA+ ICsJCWlmIChpc19wb3dlcl9vZl8yKGludGVsX3N0YXRlLT5hY3RpdmVfY3J0Y3MpKSB7Cj4gPiA+ ICsJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gPiA+ICsJCQlzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGU7Cj4gPiA+ICsKPiA+ID4gKwkJCXBpcGUgPSBpbG9nMihpbnRlbF9zdGF0 ZS0+YWN0aXZlX2NydGNzKTsKPiA+ID4gKwkJCWNydGMgPSAmaW50ZWxfZ2V0X2NydGNfZm9yX3Bp cGUoZGV2X3ByaXYsIHBpcGUpLT5iYXNlOwo+ID4gPiArCQkJY3J0Y19zdGF0ZSA9IGRybV9hdG9t aWNfZ2V0X25ld19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKPiA+ID4gKwkJCWlmIChjcnRjX3N0 YXRlICYmIG5lZWRzX21vZGVzZXQoY3J0Y19zdGF0ZSkpCj4gPiA+ICsJCQkJcGlwZSA9IElOVkFM SURfUElQRTsKPiA+ID4gKwkJfSBlbHNlIHsKPiA+ID4gKwkJCXBpcGUgPSBJTlZBTElEX1BJUEU7 Cj4gPiA+ICsJCX0KPiA+ID4gKwo+ID4gPiAgIAkJLyogQWxsIHBpcGVzIG11c3QgYmUgc3dpdGNo ZWQgb2ZmIHdoaWxlIHdlIGNoYW5nZSB0aGUgY2RjbGsuICovCj4gPiA+IC0JCWlmIChpbnRlbF9j ZGNsa19uZWVkc19tb2Rlc2V0KCZkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLAo+ID4gPiAtCQkJCQkg ICAgICAmaW50ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCkpIHsKPiA+ID4gKwkJaWYgKHBpcGUgIT0g SU5WQUxJRF9QSVBFICYmCj4gPiA+ICsJCSAgICBpbnRlbF9jZGNsa19uZWVkc19jZDJ4X3VwZGF0 ZShkZXZfcHJpdiwKPiA+ID4gKwkJCQkJCSAgJmRldl9wcml2LT5jZGNsay5hY3R1YWwsCj4gPiA+ ICsJCQkJCQkgICZpbnRlbF9zdGF0ZS0+Y2RjbGsuYWN0dWFsKSkgewo+ID4gPiArCQkJcmV0ID0g aW50ZWxfbG9ja19hbGxfcGlwZXMoc3RhdGUpOwo+ID4gPiArCQkJaWYgKHJldCA8IDApCj4gPiA+ ICsJCQkJcmV0dXJuIHJldDsKPiA+ID4gKwo+ID4gPiArCQkJaW50ZWxfc3RhdGUtPmNkY2xrLnBp cGUgPSBwaXBlOwo+ID4gPiArCQl9IGVsc2UgaWYgKGludGVsX2NkY2xrX25lZWRzX21vZGVzZXQo JmRldl9wcml2LT5jZGNsay5hY3R1YWwsCj4gPiA+ICsJCQkJCQkgICAgICZpbnRlbF9zdGF0ZS0+ Y2RjbGsuYWN0dWFsKSkgewo+ID4gPiAgIAkJCXJldCA9IGludGVsX21vZGVzZXRfYWxsX3BpcGVz KHN0YXRlKTsKPiA+ID4gICAJCQlpZiAocmV0IDwgMCkKPiA+ID4gICAJCQkJcmV0dXJuIHJldDsK PiA+ID4gKwo+ID4gPiArCQkJaW50ZWxfc3RhdGUtPmNkY2xrLnBpcGUgPSBJTlZBTElEX1BJUEU7 Cj4gPiA+ICAgCQl9Cj4gPiA+ICAgCQlEUk1fREVCVUdfS01TKCJOZXcgY2RjbGsgY2FsY3VsYXRl ZCB0byBiZSBsb2dpY2FsICV1IGtIeiwgYWN0dWFsICV1IGtIelxuIiwKPiA+ID4gQEAgLTEzNDMx LDcgKzEzNDU4LDEwIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+ICAgCWlmIChpbnRlbF9zdGF0ZS0+bW9k ZXNldCkgewo+ID4gPiAgIAkJZHJtX2F0b21pY19oZWxwZXJfdXBkYXRlX2xlZ2FjeV9tb2Rlc2V0 X3N0YXRlKHN0YXRlLT5kZXYsIHN0YXRlKTsKPiA+ID4gLQkJaW50ZWxfc2V0X2NkY2xrKGRldl9w cml2LCAmZGV2X3ByaXYtPmNkY2xrLmFjdHVhbCk7Cj4gPiA+ICsJCWludGVsX3NldF9jZGNsa19w cmVfcGxhbmVfdXBkYXRlKGRldl9wcml2LAo+ID4gPiArCQkJCQkJICZpbnRlbF9zdGF0ZS0+Y2Rj bGsuYWN0dWFsLAo+ID4gPiArCQkJCQkJICZkZXZfcHJpdi0+Y2RjbGsuYWN0dWFsLAo+ID4gPiAr CQkJCQkJIGludGVsX3N0YXRlLT5jZGNsay5waXBlKTsKPiA+ID4gICAJCS8qCj4gPiA+ICAgCQkg KiBTS0wgd29ya2Fyb3VuZDogYnNwZWMgcmVjb21tZW5kcyB3ZSBkaXNhYmxlIHRoZSBTQUdWIHdo ZW4gd2UKPiA+ID4gQEAgLTEzNDYwLDYgKzEzNDkwLDEyIEBAIHN0YXRpYyB2b2lkIGludGVsX2F0 b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCj4gPiA+ICAg CS8qIE5vdyBlbmFibGUgdGhlIGNsb2NrcywgcGxhbmUsIHBpcGUsIGFuZCBjb25uZWN0b3JzIHRo YXQgd2Ugc2V0IHVwLiAqLwo+ID4gPiAgIAlkZXZfcHJpdi0+ZGlzcGxheS51cGRhdGVfY3J0Y3Mo c3RhdGUpOwo+ID4gPiArCWlmIChpbnRlbF9zdGF0ZS0+bW9kZXNldCkKPiA+ID4gKwkJaW50ZWxf c2V0X2NkY2xrX3Bvc3RfcGxhbmVfdXBkYXRlKGRldl9wcml2LAo+ID4gPiArCQkJCQkJICAmaW50 ZWxfc3RhdGUtPmNkY2xrLmFjdHVhbCwKPiA+ID4gKwkJCQkJCSAgJmRldl9wcml2LT5jZGNsay5h Y3R1YWwsCj4gPiA+ICsJCQkJCQkgIGludGVsX3N0YXRlLT5jZGNsay5waXBlKTsKPiA+ID4gKwo+ ID4gPiAgIAkvKiBGSVhNRTogV2Ugc2hvdWxkIGNhbGwgZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X2h3X2RvbmUoKSBoZXJlCj4gPiA+ICAgCSAqIGFscmVhZHksIGJ1dCBzdGlsbCBuZWVkIHRoZSBz dGF0ZSBmb3IgdGhlIGRlbGF5ZWQgb3B0aW1pemF0aW9uLiBUbwo+ID4gPiAgIAkgKiBmaXggdGhp czoKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+ID4gaW5kZXggODVkZDZhOWQxZTQy Li5kMjJhMGU5MmUwZDQgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g PiA+IEBAIC01NTksNiArNTU5LDggQEAgc3RydWN0IGludGVsX2F0b21pY19zdGF0ZSB7Cj4gPiA+ ICAgCQlpbnQgZm9yY2VfbWluX2NkY2xrOwo+ID4gPiAgIAkJYm9vbCBmb3JjZV9taW5fY2RjbGtf Y2hhbmdlZDsKPiA+ID4gKwkJLyogcGlwZSB0byB3aGljaCBjZDJ4IHVwZGF0ZSBpcyBzeW5jaHJv bml6ZWQgKi8KPiA+ID4gKwkJZW51bSBwaXBlIHBpcGU7Cj4gPiA+ICAgCX0gY2RjbGs7Cj4gPiA+ ICAgCWJvb2wgZHBsbF9zZXQsIG1vZGVzZXQ7Cj4gPiA+IEBAIC0xNjk0LDEzICsxNjk2LDI0IEBA IHZvaWQgaW50ZWxfaW5pdF9jZGNsa19ob29rcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpOwo+ID4gPiAgIHZvaWQgaW50ZWxfdXBkYXRlX21heF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ID4gPiAgIHZvaWQgaW50ZWxfdXBkYXRlX2NkY2xrKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiA+ICAgdm9pZCBpbnRlbF91cGRh dGVfcmF3Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gPiA+ICtib29s IGludGVsX2NkY2xrX25lZWRzX2NkMnhfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwKPiA+ID4gKwkJCQkgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKmEs Cj4gPiA+ICsJCQkJICAgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpiKTsKPiA+ID4g ICBib29sIGludGVsX2NkY2xrX25lZWRzX21vZGVzZXQoY29uc3Qgc3RydWN0IGludGVsX2NkY2xr X3N0YXRlICphLAo+ID4gPiAgIAkJCSAgICAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3Rh dGUgKmIpOwo+ID4gPiAgIGJvb2wgaW50ZWxfY2RjbGtfY2hhbmdlZChjb25zdCBzdHJ1Y3QgaW50 ZWxfY2RjbGtfc3RhdGUgKmEsCj4gPiA+ICAgCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19z dGF0ZSAqYik7Cj4gPiA+ICAgdm9pZCBpbnRlbF9jZGNsa19zd2FwX3N0YXRlKHN0cnVjdCBpbnRl bF9hdG9taWNfc3RhdGUgKnN0YXRlKTsKPiA+ID4gLXZvaWQgaW50ZWxfc2V0X2NkY2xrKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiA+ID4gLQkJICAgICBjb25zdCBzdHJ1Y3Qg aW50ZWxfY2RjbGtfc3RhdGUgKmNkY2xrX3N0YXRlKTsKPiA+ID4gK3ZvaWQKPiA+ID4gK2ludGVs X3NldF9jZGNsa19wcmVfcGxhbmVfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKPiA+ID4gKwkJCQkgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpvbGRfc3Rh dGUsCj4gPiA+ICsJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9jZGNsa19zdGF0ZSAqbmV3X3N0YXRl LAo+ID4gPiArCQkJCSBlbnVtIHBpcGUgcGlwZSk7Cj4gPiA+ICt2b2lkCj4gPiA+ICtpbnRlbF9z ZXRfY2RjbGtfcG9zdF9wbGFuZV91cGRhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ID4gPiArCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpvbGRfc3Rh dGUsCj4gPiA+ICsJCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfY2RjbGtfc3RhdGUgKm5ld19zdGF0 ZSwKPiA+ID4gKwkJCQkgIGVudW0gcGlwZSBwaXBlKTsKPiA+ID4gICB2b2lkIGludGVsX2R1bXBf Y2RjbGtfc3RhdGUoY29uc3Qgc3RydWN0IGludGVsX2NkY2xrX3N0YXRlICpjZGNsa19zdGF0ZSwK PiA+ID4gICAJCQkgICAgY29uc3QgY2hhciAqY29udGV4dCk7Cj4gX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4g SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeA==