From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michel Thierry Subject: Re: [PATCH 2/2] drm/i915/gen8: Apply Per-context workarounds using W/A batch buffers Date: Mon, 02 Mar 2015 10:10:48 +0000 Message-ID: <54F43728.7070105@intel.com> References: <1424886882-8117-1-git-send-email-arun.siluvery@linux.intel.com> <1424886882-8117-3-git-send-email-arun.siluvery@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 4D2E66E428 for ; Mon, 2 Mar 2015 02:10:47 -0800 (PST) In-Reply-To: <1424886882-8117-3-git-send-email-arun.siluvery@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: Arun Siluvery , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CgpPbiAyNS8wMi8xNSAxNzo1NCwgQXJ1biBTaWx1dmVyeSB3cm90ZToKPiBTb21lIG9mIHRoZSB3 b3JrYXJvdW5kcyBhcmUgdG8gYmUgYXBwbGllZCBkdXJpbmcgY29udGV4dCBzYXZlIGJ1dCBiZWZv cmUKPiByZXN0b3JlIGFuZCBzb21lIGF0IHRoZSBlbmQgb2YgY29udGV4dCBzYXZlL3Jlc3RvcmUg YnV0IGJlZm9yZSBleGVjdXRpbmcKPiB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSByaW5nLiBXb3Jr YXJvdW5kIGJhdGNoIGJ1ZmZlcnMgYXJlIGNyZWF0ZWQgZm9yCj4gdGhpcyBwdXJwb3NlIGFzIHRo ZXkgY2Fubm90IGJlIGFwcGxpZWQgdXNpbmcgbm9ybWFsIG1lYW5zLiBIVyBleGVjdXRlcwo+IHRo ZW0gYXQgc3BlY2lmaWMgc3RhZ2VzIGR1cmluZyBjb250ZXh0IHNhdmUvcmVzdG9yZS4KPgo+IElu IHRoaXMgbWV0aG9kIHdlIGluaXRpYWxpemUgYmF0Y2ggYnVmZmVyIHdpdGggdy9hIGNvbW1hbmRz IGFuZCBpdHMgYWRkcmVzcwo+IGlzIHN1cHBsaWVkIHVzaW5nIGNvbnRleHQgb2Zmc2V0IHBvaW50 ZXJzIHdoZW4gYSBjb250ZXh0IGlzIGluaXRpYWxpemVkLgo+Cj4gVGhpcyBwYXRjaCBpbnRyb2R1 Y2VzIGluZGlyZWN0IGFuZCBwZXItY29udGV4dCBiYXRjaCBidWZmZXJzIHVzaW5nIHdoaWNoCj4g Zm9sbG93aW5nIHdvcmthcm91bmRzIGFyZSBhcHBsaWVkLiBUaGVzZSBhcmUgcmVxdWlyZWQgdG8g Zml4IGlzc3Vlcwo+IG9ic2VydmVkIHdpdGggcHJlZW1wdGlvbiByZWxhdGVkIHdvcmtsb2Fkcy4K Pgo+IEluIEluZGlyZWN0IGNvbnRleHQgdy9hIGJhdGNoIGJ1ZmZlciwKPiArV2FEaXNhYmxlQ3R4 UmVzdG9yZUFyYml0cmF0aW9uCj4gK1dhRmx1c2hDb2hlcmVudEwzQ2FjaGVMaW5lc0F0Q29udGV4 dFN3aXRjaAo+ICtXYUNsZWFyU2xtU3BhY2VBdENvbnRleHRTd2l0Y2gKPgo+IEluIFBlciBjb250 ZXh0IHcvYSBiYXRjaCBidWZmZXIsCj4gK1dhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlvbgo+ ICtXYVJzUmVzdG9yZVdpdGhQZXJDdHh0QmIKPgo+IHYyOiBVc2UgR1RUIGFkZHJlc3MgdHlwZSBm b3IgYWxsIHByaXZpbGVnZWQgaW5zdHJ1Y3Rpb25zLCB1cGRhdGUgYXMKPiBwZXIgZHluYW1pYyBw aW5uaW5nIGNoYW5nZXMsIG1pbm9yIHNpbXBsaWZpY2F0aW9ucywgcmVuYW1lIHZhcmlhYmxlcwo+ IGFzIGZvbGxvd3MgdG8ga2VlcCBsaW5lcyB1bmRlciA4MCBjaGFycyBhbmQgcmViYXNlLgo+IHMv aW5kaXJlY3RfY3R4X3dhX3JpbmdidWYvaW5kaXJlY3RfY3R4X3dhX2JiCj4gcy9wZXJfY3R4X3dh X3JpbmdidWYvcGVyX2N0eF93YV9iYgo+Cj4gdjM6IE1vZGlmeSBXQSBCQiBpbml0aWFsaXphdGlv biB0byBHZW4gc3BlY2lmaWMuCj4KPiBDaGFuZ2UtSWQ6IEkwY2VkYjUzNmI3ZjZkOWYxMGJhOWU4 MWJhNjI1ODQ4ZTdiYWI2MDNjCj4gU2lnbmVkLW9mZi1ieTogUmFmYWVsIEJhcmJhbGhvIDxyYWZh ZWwuYmFyYmFsaG9AaW50ZWwuY29tPgo+IFNpZ25lZC1vZmYtYnk6IEFydW4gU2lsdXZlcnkgPGFy dW4uc2lsdXZlcnlAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaCAgICAgICAgIHwgICAzICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfcmVnLmggICAgICAgICB8ICAzMCArKystCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9scmMuYyAgICAgICAgfCAzMDIgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0KPiAg IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAgMyArCj4gICA0IGZp bGVzIGNoYW5nZWQsIDI5NyBpbnNlcnRpb25zKCspLCA0MSBkZWxldGlvbnMoLSkKPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGQ0MjA0MGYuLjg2Y2RiNTIgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiBAQCAtNzc0LDYgKzc3NCw5IEBAIHN0cnVjdCBpbnRlbF9jb250ZXh0 IHsKPiAgIAo+ICAgCS8qIEV4ZWNsaXN0cyAqLwo+ICAgCWJvb2wgcmNzX2luaXRpYWxpemVkOwo+ ICsJc3RydWN0IGludGVsX3JpbmdidWZmZXIgKmluZGlyZWN0X2N0eF93YV9iYjsKPiArCXN0cnVj dCBpbnRlbF9yaW5nYnVmZmVyICpwZXJfY3R4X3dhX2JiOwo+ICsKPiAgIAlzdHJ1Y3Qgewo+ICAg CQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqc3RhdGU7Cj4gICAJCXN0cnVjdCBpbnRlbF9y aW5nYnVmZmVyICpyaW5nYnVmOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDU1MTQz Y2IuLmViNDFkN2YgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtMzQ3LDYgKzM0 NywyNiBAQAo+ICAgI2RlZmluZSAgIE1JX0lOVkFMSURBVEVfQlNECQkoMTw8NykKPiAgICNkZWZp bmUgICBNSV9GTFVTSF9EV19VU0VfR1RUCQkoMTw8MikKPiAgICNkZWZpbmUgICBNSV9GTFVTSF9E V19VU0VfUFBHVFQJCSgwPDwyKQo+ICsjZGVmaW5lIE1JX0FUT01JQyhsZW4pCU1JX0lOU1RSKDB4 MkYsIChsZW4tMikpCj4gKyNkZWZpbmUgICBNSV9BVE9NSUNfTUVNT1JZX1RZUEVfR0dUVAkoMTw8 MjIpCj4gKyNkZWZpbmUgICBNSV9BVE9NSUNfSU5MSU5FX0RBVEEJCSgxPDwxOCkKPiArI2RlZmlu ZSAgIE1JX0FUT01JQ19DU19TVEFMTAkJKDE8PDE3KQo+ICsjZGVmaW5lICAgTUlfQVRPTUlDX1JF VFVSTl9EQVRBX0NUTAkoMTw8MTYpCj4gKyNkZWZpbmUgTUlfQVRPTUlDX09QX01BU0sob3ApICAo KG9wKSA8PCA4KQo+ICsjZGVmaW5lIE1JX0FUT01JQ19BTkQJTUlfQVRPTUlDX09QX01BU0soMHgw MSkKPiArI2RlZmluZSBNSV9BVE9NSUNfT1IJTUlfQVRPTUlDX09QX01BU0soMHgwMikKPiArI2Rl ZmluZSBNSV9BVE9NSUNfWE9SCU1JX0FUT01JQ19PUF9NQVNLKDB4MDMpCj4gKyNkZWZpbmUgTUlf QVRPTUlDX01PVkUJTUlfQVRPTUlDX09QX01BU0soMHgwNCkKPiArI2RlZmluZSBNSV9BVE9NSUNf SU5DCU1JX0FUT01JQ19PUF9NQVNLKDB4MDUpCj4gKyNkZWZpbmUgTUlfQVRPTUlDX0RFQwlNSV9B VE9NSUNfT1BfTUFTSygweDA2KQo+ICsjZGVmaW5lIE1JX0FUT01JQ19BREQJTUlfQVRPTUlDX09Q X01BU0soMHgwNykKPiArI2RlZmluZSBNSV9BVE9NSUNfU1VCCU1JX0FUT01JQ19PUF9NQVNLKDB4 MDgpCj4gKyNkZWZpbmUgTUlfQVRPTUlDX1JTVUIJTUlfQVRPTUlDX09QX01BU0soMHgwOSkKPiAr I2RlZmluZSBNSV9BVE9NSUNfSU1BWAlNSV9BVE9NSUNfT1BfTUFTSygweDBBKQo+ICsjZGVmaW5l IE1JX0FUT01JQ19JTUlOCU1JX0FUT01JQ19PUF9NQVNLKDB4MEIpCj4gKyNkZWZpbmUgTUlfQVRP TUlDX1VNQVgJTUlfQVRPTUlDX09QX01BU0soMHgwQykKPiArI2RlZmluZSBNSV9BVE9NSUNfVU1J TglNSV9BVE9NSUNfT1BfTUFTSygweDBEKQo+ICsKPiAgICNkZWZpbmUgTUlfQkFUQ0hfQlVGRkVS CQlNSV9JTlNUUigweDMwLCAxKQo+ICAgI2RlZmluZSAgIE1JX0JBVENIX05PTl9TRUNVUkUJCSgx KQo+ICAgLyogZm9yIHNuYi9pdmIvdmx2IHRoaXMgYWxzbyBtZWFucyAiYmF0Y2ggaW4gcHBndHQi IHdoZW4gcHBndHQgaXMgZW5hYmxlZC4gKi8KPiBAQCAtNDEwLDYgKzQzMCw3IEBACj4gICAjZGVm aW5lICAgRElTUExBWV9QTEFORV9BICAgICAgICAgICAoMDw8MjApCj4gICAjZGVmaW5lICAgRElT UExBWV9QTEFORV9CICAgICAgICAgICAoMTw8MjApCj4gICAjZGVmaW5lIEdGWF9PUF9QSVBFX0NP TlRST0wobGVuKQkoKDB4Mzw8MjkpfCgweDM8PDI3KXwoMHgyPDwyNCl8KGxlbi0yKSkKPiArI2Rl ZmluZSAgIFBJUEVfQ09OVFJPTF9GTFVTSF9ST19DQUNIRVMJCQkoMTw8MjcpCkkgdGhpbmsgdGhl IGNvbnNlbnN1cyBpcyB0byByZW5hbWUgdGhpcyB0byBQSVBFX0NPTlRST0xfRkxVU0hfTDMsIGlz bid0IGl0Pwo+ICAgI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RUX0lWQgkJCSgxPDwy NCkgLyogZ2VuNysgKi8KPiAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xfTU1JT19XUklURQkJCSgx PDwyMykKPiAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xfU1RPUkVfREFUQV9JTkRFWAkJCSgxPDwy MSkKPiBAQCAtNDI2LDYgKzQ0Nyw3IEBACj4gICAjZGVmaW5lICAgUElQRV9DT05UUk9MX0lORElS RUNUX1NUQVRFX0RJU0FCTEUJCSgxPDw5KQo+ICAgI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9OT1RJ RlkJCQkJKDE8PDgpCj4gICAjZGVmaW5lICAgUElQRV9DT05UUk9MX0ZMVVNIX0VOQUJMRQkJCSgx PDw3KSAvKiBnZW43KyAqLwo+ICsjZGVmaW5lICAgUElQRV9DT05UUk9MX0RDX0ZMVVNIX0VOQUJM RQkJCSgxPDw1KQo+ICAgI2RlZmluZSAgIFBJUEVfQ09OVFJPTF9WRl9DQUNIRV9JTlZBTElEQVRF CQkoMTw8NCkKPiAgICNkZWZpbmUgICBQSVBFX0NPTlRST0xfQ09OU1RfQ0FDSEVfSU5WQUxJREFU RQkJKDE8PDMpCj4gICAjZGVmaW5lICAgUElQRV9DT05UUk9MX1NUQVRFX0NBQ0hFX0lOVkFMSURB VEUJCSgxPDwyKQo+IEBAIC00NDksOCArNDcxLDEwIEBACj4gICAjZGVmaW5lIE1JX0NMRkxVU0gg ICAgICAgICAgICAgIE1JX0lOU1RSKDB4MjcsIDApCj4gICAjZGVmaW5lIE1JX1JFUE9SVF9QRVJG X0NPVU5UICAgIE1JX0lOU1RSKDB4MjgsIDApCj4gICAjZGVmaW5lICAgTUlfUkVQT1JUX1BFUkZf Q09VTlRfR0dUVCAoMTw8MCkKPiAtI2RlZmluZSBNSV9MT0FEX1JFR0lTVEVSX01FTSAgICBNSV9J TlNUUigweDI5LCAwKQo+IC0jZGVmaW5lIE1JX0xPQURfUkVHSVNURVJfUkVHICAgIE1JX0lOU1RS KDB4MkEsIDApCj4gKyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9NRU0gICAgTUlfSU5TVFIoMHgy OSwgMikKU2hvdWxkIHRoaXMgY2hhbmdlIGJlIEdFTjggb25seT8KPiArI2RlZmluZSBNSV9MUk1f VVNFX0dMT0JBTF9HVFQgKDE8PDIyKQo+ICsjZGVmaW5lIE1JX0xSTV9BU1lOQ19NT0RFX0VOQUJM RSAoMTw8MjEpCj4gKyNkZWZpbmUgTUlfTE9BRF9SRUdJU1RFUl9SRUcgICAgTUlfSU5TVFIoMHgy QSwgMSkKPiAgICNkZWZpbmUgTUlfUlNfU1RPUkVfREFUQV9JTU0gICAgTUlfSU5TVFIoMHgyQiwg MCkKPiAgICNkZWZpbmUgTUlfTE9BRF9VUkJfTUVNICAgICAgICAgTUlfSU5TVFIoMHgyQywgMCkK PiAgICNkZWZpbmUgTUlfU1RPUkVfVVJCX01FTSAgICAgICAgTUlfSU5TVFIoMHgyRCwgMCkKPiBA QCAtMTUyMCw2ICsxNTQ0LDggQEAgZW51bSBza2xfZGlzcF9wb3dlcl93ZWxscyB7Cj4gICAjZGVm aW5lICAgR0VOOF9SQ19TRU1BX0lETEVfTVNHX0RJU0FCTEUJKDEgPDwgMTIpCj4gICAjZGVmaW5l ICAgR0VOOF9GRl9ET1BfQ0xPQ0tfR0FURV9ESVNBQkxFCSgxPDwxMCkKPiAgIAo+ICsjZGVmaW5l IEdFTjhfUlNfUFJFRU1QVF9TVEFUVVMJCTB4MjE1Qwo+ICsKPiAgIC8qIEZ1c2UgcmVhZG91dCBy ZWdpc3RlcnMgZm9yIEdUICovCj4gICAjZGVmaW5lIENIVl9GVVNFX0dUCQkJKFZMVl9ESVNQTEFZ X0JBU0UgKyAweDIxNjgpCj4gICAjZGVmaW5lICAgQ0hWX0ZHVF9FVV9ESVNfU1MwX1IwX1NISUZU CTE2Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBpbmRleCA0NzQ3M2U1Li5iMzRlZjQ4IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiBAQCAtMjAyLDYgKzIwMiw3IEBAIGVudW0g ewo+ICAgCUZBVUxUX0FORF9DT05USU5VRSAvKiBVbnN1cHBvcnRlZCAqLwo+ICAgfTsKPiAgICNk ZWZpbmUgR0VOOF9DVFhfSURfU0hJRlQgMzIKPiArI2RlZmluZSBDVFhfUkNTX0lORElSRUNUX0NU WF9PRkZTRVRfREVGQVVMVCAgMHgxNwo+ICAgCj4gICBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRl eHRfcGluKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCXN0cnVjdCBpbnRlbF9j b250ZXh0ICpjdHgpOwo+IEBAIC0xMTA3LDYgKzExMDgsMjA4IEBAIHN0YXRpYyBpbnQgaW50ZWxf bG9naWNhbF9yaW5nX3dvcmthcm91bmRzX2VtaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmlu ZywKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgc3RydWN0IGludGVsX3Jpbmdi dWZmZXIgKgo+ICtjcmVhdGVfd2FfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywgdWlu dDMyX3QgYmJfc2l6ZSkKPiArewo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmctPmRl djsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmOwo+ICsJaW50IHJldDsKPiAr Cj4gKwlyaW5nYnVmID0ga3phbGxvYyhzaXplb2YoKnJpbmdidWYpLCBHRlBfS0VSTkVMKTsKPiAr CWlmICghcmluZ2J1ZikKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyaW5nYnVmLT5yaW5nID0g cmluZzsKPiArCj4gKwlyaW5nYnVmLT5zaXplID0gcm91bmR1cChiYl9zaXplLCBQQUdFX1NJWkUp Owo+ICsJcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUgPSByaW5nYnVmLT5zaXplOwo+ICsJcmluZ2J1 Zi0+aGVhZCA9IDA7Cj4gKwlyaW5nYnVmLT50YWlsID0gMDsKPiArCXJpbmdidWYtPnNwYWNlID0g cmluZ2J1Zi0+c2l6ZTsKPiArCXJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4gKwo+ ICsJcmV0ID0gaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooZGV2LCByaW5nYnVmKTsKPiArCWlm IChyZXQpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gYWxsb2NhdGUgcmluZ2J1 ZmZlciBvYmogJXM6ICVkXG4iLAo+ICsJCQkJcmluZy0+bmFtZSwgcmV0KTsKPiArCQlrZnJlZShy aW5nYnVmKTsKPiArCQlyZXR1cm4gTlVMTDsKPiArCX0KPiArCj4gKwlyZXQgPSBpbnRlbF9waW5f YW5kX21hcF9yaW5nYnVmZmVyX29iaihkZXYsIHJpbmdidWYpOwo+ICsJaWYgKHJldCkgewo+ICsJ CURSTV9FUlJPUigiRmFpbGVkIHRvIHBpbiBhbmQgbWFwICVzIHcvYSBiYXRjaDogJWRcbiIsCj4g KwkJCSAgcmluZy0+bmFtZSwgcmV0KTsKPiArCQlpbnRlbF9kZXN0cm95X3JpbmdidWZmZXJfb2Jq KHJpbmdidWYpOwo+ICsJCWtmcmVlKHJpbmdidWYpOwo+ICsJCXJldHVybiBOVUxMOwo+ICsJfQo+ ICsKPiArCXJldHVybiByaW5nYnVmOwo+ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGdlbjhfaW5pdF9p bmRpcmVjdGN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkJICAgIHN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpCj4gK3sKPiArCXVuc2lnbmVkIGxvbmcgZmxhZ3MgPSAw Owo+ICsJdTMyIHNjcmF0Y2hfYWRkcjsKPiArCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5n YnVmID0gTlVMTDsKPiArCj4gKwlpZiAocmluZy0+c2NyYXRjaC5vYmogPT0gTlVMTCkgewo+ICsJ CURSTV9FUlJPUigic2NyYXRjaCBwYWdlIG5vdCBhbGxvY2F0ZWQgZm9yICVzXG4iLCByaW5nLT5u YW1lKTsKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCX0KPiArCj4gKwlyaW5nYnVmID0gY3JlYXRl X3dhX2JiKHJpbmcsIFBBR0VfU0laRSk7Cj4gKwlpZiAoIXJpbmdidWYpCj4gKwkJcmV0dXJuIC1F Tk9NRU07Cj4gKwo+ICsJY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIgPSByaW5nYnVmOwo+ICsKPiAr CS8qIFdhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlvbjpiZHcsY2h2ICovCj4gKwlpbnRlbF9s b2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJCX0RJU0FCTEUp Owo+ICsKPiArCS8qIFdhRmx1c2hDb2hlcmVudEwzQ2FjaGVMaW5lc0F0Q29udGV4dFN3aXRjaDpi ZHcsY2h2ICovCj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQ RV9DT05UUk9MKDYpKTsKPiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIFBJUEVf Q09OVFJPTF9EQ19GTFVTSF9FTkFCTEUpOwo+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmlu Z2J1ZiwgMCk7Cj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiArCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ICsJaW50ZWxfbG9naWNhbF9yaW5n X2VtaXQocmluZ2J1ZiwgMCk7Cj4gKwo+ICsJLyogV2FDbGVhclNsbVNwYWNlQXRDb250ZXh0U3dp dGNoOmJkdyxjaHYgKi8KPiArCWZsYWdzID0gUElQRV9DT05UUk9MX0ZMVVNIX1JPX0NBQ0hFUyB8 Cj4gKwkJUElQRV9DT05UUk9MX0dMT0JBTF9HVFRfSVZCIHwKPiArCQlQSVBFX0NPTlRST0xfQ1Nf U1RBTEwgfAo+ICsJCVBJUEVfQ09OVFJPTF9RV19XUklURTsKPiArCj4gKwkvKiBBY3R1YWwgc2Ny YXRjaCBsb2NhdGlvbiBpcyBhdCAxMjggYnl0ZXMgb2Zmc2V0ICovCj4gKwlzY3JhdGNoX2FkZHIg PSByaW5nLT5zY3JhdGNoLmd0dF9vZmZzZXQgKyAyKkNBQ0hFTElORV9CWVRFUzsKPiArCXNjcmF0 Y2hfYWRkciB8PSBQSVBFX0NPTlRST0xfR0xPQkFMX0dUVDsKPiArCj4gKwlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLCBHRlhfT1BfUElQRV9DT05UUk9MKDYpKTsKPiArCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIGZsYWdzKTsKPiArCWludGVsX2xvZ2ljYWxfcmluZ19l bWl0KHJpbmdidWYsIHNjcmF0Y2hfYWRkcik7Cj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChy aW5nYnVmLCAwKTsKPiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ICsJ aW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gKwo+ICsJLyogUGFkZGluZyB0 byBhbGlnbiB3aXRoIGNhY2hlIGxpbmUgKi8KPiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIDApOwo+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgMCk7Cj4gKwlp bnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCAwKTsKPiArCj4gKwkvKgo+ICsJICogTm8g TUlfQkFUQ0hfQlVGRkVSX0VORCBpcyByZXF1aXJlZCBpbiBJbmRpcmVjdCBjdHggQkIgYmVjYXVz ZQo+ICsJICogZXhlY3V0aW9uIGRlcGVuZHMgb24gdGhlIHNpemUgZGVmaW5lZCBpbiBDVFhfUkNT X0lORElSRUNUX0NUWAo+ICsJICovCj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRp YyBpbnQgZ2VuOF9pbml0X3BlcmN0eF9iYihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ ICsJCQkgICAgICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiArewo+ICsJdW5zaWduZWQg bG9uZyBmbGFncyA9IDA7Cj4gKwl1MzIgc2NyYXRjaF9hZGRyOwo+ICsJc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKnJpbmdidWYgPSBOVUxMOwo+ICsKPiArCWlmIChyaW5nLT5zY3JhdGNoLm9iaiA9 PSBOVUxMKSB7Cj4gKwkJRFJNX0VSUk9SKCJzY3JhdGNoIHBhZ2Ugbm90IGFsbG9jYXRlZCBmb3Ig JXNcbiIsIHJpbmctPm5hbWUpOwo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsJfQo+ICsKPiArCXJp bmdidWYgPSBjcmVhdGVfd2FfYmIocmluZywgUEFHRV9TSVpFKTsKPiArCWlmICghcmluZ2J1ZikK PiArCQlyZXR1cm4gLUVOT01FTTsKPiArCj4gKwljdHgtPnBlcl9jdHhfd2FfYmIgPSByaW5nYnVm Owo+ICsKPiArCS8qIEFjdHVhbCBzY3JhdGNoIGxvY2F0aW9uIGlzIGF0IDEyOCBieXRlcyBvZmZz ZXQgKi8KPiArCXNjcmF0Y2hfYWRkciA9IHJpbmctPnNjcmF0Y2guZ3R0X29mZnNldCArIDIqQ0FD SEVMSU5FX0JZVEVTOwo+ICsJc2NyYXRjaF9hZGRyIHw9IFBJUEVfQ09OVFJPTF9HTE9CQUxfR1RU Owo+ICsKPiArCS8qIFdhRGlzYWJsZUN0eFJlc3RvcmVBcmJpdHJhdGlvbjpiZHcsY2h2ICovCj4g KwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBNSV9BUkJfT05fT0ZGIHwgTUlfQVJC X0VOQUJMRSk7Cj4gKwo+ICsJLyoKPiArCSAqIEFzIHBlciBCc3BlYywgdG8gd29ya2Fyb3VuZCBh IGtub3duIEhXIGlzc3VlLCBTVyBtdXN0IHBlcmZvcm0gdGhlCj4gKwkgKiBiZWxvdyBwcm9ncmFt bWluZyBzZXF1ZW5jZSBwcmlvciB0byBwcm9ncmFtbWluZyBNSV9CQVRDSF9CVUZGRVJfRU5ELgo+ ICsJICoKPiArCSAqIFRoaXMgaXMgb25seSBhcHBsaWNhYmxlIGZvciBHZW44Lgo+ICsJICovCj4g Kwo+ICsJLyogV2FSc1Jlc3RvcmVXaXRoUGVyQ3R4dEJiOmJkdyxjaHYgKi8KPiArCWludGVsX2xv Z2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIE1JX0xPQURfUkVHSVNURVJfSU1NKDEpKTsKPiArCWlu dGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIElOU1RQTSk7Cj4gKwlpbnRlbF9sb2dpY2Fs X3JpbmdfZW1pdChyaW5nYnVmLAo+ICsJCQkJX01BU0tFRF9CSVRfRElTQUJMRShJTlNUUE1fRk9S Q0VfT1JERVJJTkcpKTsKPiArCj4gKwlmbGFncyA9IE1JX0FUT01JQ19NRU1PUllfVFlQRV9HR1RU IHwKPiArCQlNSV9BVE9NSUNfSU5MSU5FX0RBVEEgfAo+ICsJCU1JX0FUT01JQ19DU19TVEFMTCB8 Cj4gKwkJTUlfQVRPTUlDX1JFVFVSTl9EQVRBX0NUTCB8Cj4gKwkJTUlfQVRPTUlDX01PVkU7Cj4g Kwo+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1ZiwgTUlfQVRPTUlDKDUpIHwgZmxh Z3MpOwo+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2VtaXQocmluZ2J1Ziwgc2NyYXRjaF9hZGRyKTsK PiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsIDApOwo+ICsJaW50ZWxfbG9naWNh bF9yaW5nX2VtaXQocmluZ2J1ZiwKPiArCQkJCV9NQVNLRURfQklUX0VOQUJMRShJTlNUUE1fRk9S Q0VfT1JERVJJTkcpKTsKPiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJpbmdidWYsCj4gKwkJ CQlfTUFTS0VEX0JJVF9FTkFCTEUoSU5TVFBNX0ZPUkNFX09SREVSSU5HKSk7Cj4gKwo+ICsJLyoK PiArCSAqIEJzcGVjIHNheXMgTUlfTE9BRF9SRUdJU1RFUl9NRU0sIE1JX0xPQURfUkVHSVNURVJf UkVHIGFuZAo+ICsJICogTUlfQkFUQ0hfQlVGRkVSX0VORCBuZWVkIHRvIGJlIGluIHRoZSBzYW1l IGNhY2hlbGluZS4KPiArCSAqLwo+ICsJd2hpbGUgKCgodW5zaWduZWQgbG9uZykgcmluZ2J1Zi0+ dGFpbCAlIENBQ0hFTElORV9CWVRFUykgIT0gMCkKPiArCQlpbnRlbF9sb2dpY2FsX3JpbmdfZW1p dChyaW5nYnVmLCBNSV9OT09QKTsKPiArCj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5n YnVmLAo+ICsJCQkJTUlfTE9BRF9SRUdJU1RFUl9NRU0gfAo+ICsJCQkJTUlfTFJNX1VTRV9HTE9C QUxfR1RUIHwKPiArCQkJCU1JX0xSTV9BU1lOQ19NT0RFX0VOQUJMRSk7Cj4gKwlpbnRlbF9sb2dp Y2FsX3JpbmdfZW1pdChyaW5nYnVmLCBJTlNUUE0pOwo+ICsJaW50ZWxfbG9naWNhbF9yaW5nX2Vt aXQocmluZ2J1ZiwgMCk7Cj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBzY3Jh dGNoX2FkZHIpOwo+ICsKPiArCS8qCj4gKwkgKiBCc3BlYyBzYXlzIHRoZXJlIHNob3VsZCBub3Qg YmUgYW55IGNvbW1hbmRzIHByb2dyYW1tZWQKPiArCSAqIGJldHdlZW4gTUlfTE9BRF9SRUdJU1RF Ul9SRUcgYW5kIE1JX0JBVENIX0JVRkZFUl9FTkQgc28KPiArCSAqIGRvIG5vdCBhZGQgYW55IG5l dyBjb21tYW5kcwo+ICsJICovCj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVmLCBN SV9MT0FEX1JFR0lTVEVSX1JFRyk7Cj4gKwlpbnRlbF9sb2dpY2FsX3JpbmdfZW1pdChyaW5nYnVm LCBHRU44X1JTX1BSRUVNUFRfU1RBVFVTKTsKPiArCWludGVsX2xvZ2ljYWxfcmluZ19lbWl0KHJp bmdidWYsIEdFTjhfUlNfUFJFRU1QVF9TVEFUVVMpOwo+ICsKPiArCWludGVsX2xvZ2ljYWxfcmlu Z19lbWl0KHJpbmdidWYsIE1JX0JBVENIX0JVRkZFUl9FTkQpOwo+ICsKPiArCXJldHVybiAwOwo+ ICt9Cj4gKwo+ICtzdGF0aWMgaW50IGludGVsX2luaXRfd29ya2Fyb3VuZF9iYihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkJICAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgp Cj4gK3sKPiArCWludCByZXQ7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2 Owo+ICsKPiArCVdBUk5fT04ocmluZy0+aWQgIT0gUkNTKTsKPiArCj4gKwlpZiAoSVNfR0VOOChk ZXYpKSB7Cj4gKwkJcmV0ID0gZ2VuOF9pbml0X2luZGlyZWN0Y3R4X2JiKHJpbmcsIGN0eCk7Cj4g KwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCj4gKwkJcmV0ID0gZ2VuOF9pbml0X3Bl cmN0eF9iYihyaW5nLCBjdHgpOwo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4gKwl9 Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICt9Cj4gKwo+ICAgc3RhdGljIGludCBnZW44X2luaXRf Y29tbW9uX3Jpbmcoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZykKPiAgIHsKPiAgIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gcmluZy0+ZGV2Owo+IEBAIC0xMzM3LDM4ICsxNTQwLDYgQEAg c3RhdGljIGludCBnZW44X2VtaXRfcmVxdWVzdChzdHJ1Y3QgaW50ZWxfcmluZ2J1ZmZlciAqcmlu Z2J1ZiwKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgc3RydWN0IGludGVsX3Jp bmdidWZmZXIgKgo+IC1jcmVhdGVfd2FfYmIoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywg dWludDMyX3QgYmJfc2l6ZSkKPiAtewo+IC0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IHJpbmct PmRldjsKPiAtCXN0cnVjdCBpbnRlbF9yaW5nYnVmZmVyICpyaW5nYnVmOwo+IC0JaW50IHJldDsK PiAtCj4gLQlyaW5nYnVmID0ga3phbGxvYyhzaXplb2YoKnJpbmdidWYpLCBHRlBfS0VSTkVMKTsK PiAtCWlmICghcmluZ2J1ZikKPiAtCQlyZXR1cm4gTlVMTDsKPiAtCj4gLQlyaW5nYnVmLT5yaW5n ID0gcmluZzsKPiAtCj4gLQlyaW5nYnVmLT5zaXplID0gcm91bmR1cChiYl9zaXplLCBQQUdFX1NJ WkUpOwo+IC0JcmluZ2J1Zi0+ZWZmZWN0aXZlX3NpemUgPSByaW5nYnVmLT5zaXplOwo+IC0Jcmlu Z2J1Zi0+aGVhZCA9IDA7Cj4gLQlyaW5nYnVmLT50YWlsID0gMDsKPiAtCXJpbmdidWYtPnNwYWNl ID0gcmluZ2J1Zi0+c2l6ZTsKPiAtCXJpbmdidWYtPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4g LQo+IC0JcmV0ID0gaW50ZWxfYWxsb2NfcmluZ2J1ZmZlcl9vYmooZGV2LCByaW5nYnVmKTsKPiAt CWlmIChyZXQpIHsKPiAtCQlEUk1fREVCVUdfRFJJVkVSKAo+IC0JCSJGYWlsZWQgdG8gYWxsb2Nh dGUgcmluZ2J1ZiBvYmogZm9yIHdhX2JiJXM6ICVkXG4iLAo+IC0JCXJpbmctPm5hbWUsIHJldCk7 Cj4gLQkJa2ZyZWUocmluZ2J1Zik7Cj4gLQkJcmV0dXJuIE5VTEw7Cj4gLQl9Cj4gLQo+IC0JcmV0 dXJuIHJpbmdidWY7Cj4gLX0KPiAtCj4gICBzdGF0aWMgaW50IGludGVsX2xyX2NvbnRleHRfcmVu ZGVyX3N0YXRlX2luaXQoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqcmluZywKPiAgIAkJCQkJICAg ICAgc3RydWN0IGludGVsX2NvbnRleHQgKmN0eCkKPiAgIHsKPiBAQCAtMTQ5MCw2ICsxNjYxLDcg QEAgc3RhdGljIGludCBsb2dpY2FsX3JlbmRlcl9yaW5nX2luaXQoc3RydWN0IGRybV9kZXZpY2Ug KmRldikKPiAgIAllbHNlCj4gICAJCXJpbmctPmluaXRfaHcgPSBnZW44X2luaXRfcmVuZGVyX3Jp bmc7Cj4gICAJcmluZy0+aW5pdF9jb250ZXh0ID0gZ2VuOF9pbml0X3Jjc19jb250ZXh0Owo+ICsJ cmluZy0+aW5pdF9jb250ZXh0X2JiID0gaW50ZWxfaW5pdF93b3JrYXJvdW5kX2JiOwo+ICAgCXJp bmctPmNsZWFudXAgPSBpbnRlbF9maW5pX3BpcGVfY29udHJvbDsKPiAgIAlyaW5nLT5nZXRfc2Vx bm8gPSBnZW44X2dldF9zZXFubzsKPiAgIAlyaW5nLT5zZXRfc2Vxbm8gPSBnZW44X3NldF9zZXFu bzsKPiBAQCAtMTUwMCwxMSArMTY3MiwxNiBAQCBzdGF0aWMgaW50IGxvZ2ljYWxfcmVuZGVyX3Jp bmdfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAgCXJpbmctPmVtaXRfYmJfc3RhcnQg PSBnZW44X2VtaXRfYmJfc3RhcnQ7Cj4gICAKPiAgIAlyaW5nLT5kZXYgPSBkZXY7Cj4gKwo+ICsJ cmV0ID0gaW50ZWxfaW5pdF9waXBlX2NvbnRyb2wocmluZyk7Cj4gKwlpZiAocmV0KQo+ICsJCXJl dHVybiByZXQ7Cj4gKwo+ICAgCXJldCA9IGxvZ2ljYWxfcmluZ19pbml0KGRldiwgcmluZyk7Cj4g ICAJaWYgKHJldCkKPiAgIAkJcmV0dXJuIHJldDsKPiAgIAo+IC0JcmV0dXJuIGludGVsX2luaXRf cGlwZV9jb250cm9sKHJpbmcpOwo+ICsJcmV0dXJuIDA7Cj4gICB9Cj4gICAKPiAgIHN0YXRpYyBp bnQgbG9naWNhbF9ic2RfcmluZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gQEAgLTE3 ODQsMTUgKzE5NjEsMjkgQEAgcG9wdWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaW50ZWxfY29udGV4 dCAqY3R4LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqY3R4X28KPiAgIAlyZWdfc3RhdGVb Q1RYX1NFQ09ORF9CQl9TVEFURV0gPSByaW5nLT5tbWlvX2Jhc2UgKyAweDExODsKPiAgIAlyZWdf c3RhdGVbQ1RYX1NFQ09ORF9CQl9TVEFURSsxXSA9IDA7Cj4gICAJaWYgKHJpbmctPmlkID09IFJD Uykgewo+IC0JCS8qIFRPRE86IGFjY29yZGluZyB0byBCU3BlYywgdGhlIHJlZ2lzdGVyIHN0YXRl IGNvbnRleHQKPiAtCQkgKiBmb3IgQ0hWIGRvZXMgbm90IGhhdmUgdGhlc2UuIE9UT0gsIHRoZXNl IHJlZ2lzdGVycyBkbwo+IC0JCSAqIGV4aXN0IGluIENIVi4gSSdtIHdhaXRpbmcgZm9yIGEgY2xh cmlmaWNhdGlvbiAqLwo+ICAgCQlyZWdfc3RhdGVbQ1RYX0JCX1BFUl9DVFhfUFRSXSA9IHJpbmct Pm1taW9fYmFzZSArIDB4MWMwOwo+IC0JCXJlZ19zdGF0ZVtDVFhfQkJfUEVSX0NUWF9QVFIrMV0g PSAwOwo+ICsKPiArCQlpZiAoY3R4LT5wZXJfY3R4X3dhX2JiKQo+ICsJCQlyZWdfc3RhdGVbQ1RY X0JCX1BFUl9DVFhfUFRSICsgMV0gPQo+ICsJCQkJaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KAo+ ICsJCQkJCWN0eC0+cGVyX2N0eF93YV9iYi0+b2JqKSB8IDB4MDE7Cj4gKwkJZWxzZQo+ICsJCQly ZWdfc3RhdGVbQ1RYX0JCX1BFUl9DVFhfUFRSKzFdID0gMDsKPiArCj4gICAJCXJlZ19zdGF0ZVtD VFhfUkNTX0lORElSRUNUX0NUWF0gPSByaW5nLT5tbWlvX2Jhc2UgKyAweDFjNDsKPiAtCQlyZWdf c3RhdGVbQ1RYX1JDU19JTkRJUkVDVF9DVFgrMV0gPSAwOwo+ICAgCQlyZWdfc3RhdGVbQ1RYX1JD U19JTkRJUkVDVF9DVFhfT0ZGU0VUXSA9IHJpbmctPm1taW9fYmFzZSArIDB4MWM4Owo+IC0JCXJl Z19zdGF0ZVtDVFhfUkNTX0lORElSRUNUX0NUWF9PRkZTRVQrMV0gPSAwOwo+ICsKPiArCQlpZiAo Y3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIpIHsKPiArCQkJcmVnX3N0YXRlW0NUWF9SQ1NfSU5ESVJF Q1RfQ1RYICsgMV0gPQo+ICsJCQkJaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0KAo+ICsJCQkJY3R4 LT5pbmRpcmVjdF9jdHhfd2FfYmItPm9iaikgfCAweDAxOwo+ICsKPiArCQkJcmVnX3N0YXRlW0NU WF9SQ1NfSU5ESVJFQ1RfQ1RYX09GRlNFVCArIDFdID0KPiArCQkJCUNUWF9SQ1NfSU5ESVJFQ1Rf Q1RYX09GRlNFVF9ERUZBVUxUIDw8IDY7Cj4gKwkJfSBlbHNlIHsKPiArCQkJcmVnX3N0YXRlW0NU WF9SQ1NfSU5ESVJFQ1RfQ1RYKzFdID0gMDsKPiArCQkJcmVnX3N0YXRlW0NUWF9SQ1NfSU5ESVJF Q1RfQ1RYX09GRlNFVCsxXSA9IDA7Cj4gKwkJfQo+ICAgCX0KPiAgIAlyZWdfc3RhdGVbQ1RYX0xS SV9IRUFERVJfMV0gPSBNSV9MT0FEX1JFR0lTVEVSX0lNTSg5KTsKPiAgIAlyZWdfc3RhdGVbQ1RY X0xSSV9IRUFERVJfMV0gfD0gTUlfTFJJX0ZPUkNFX1BPU1RFRDsKPiBAQCAtMTg1OSw2ICsyMDUw LDE4IEBAIHZvaWQgaW50ZWxfbHJfY29udGV4dF9mcmVlKHN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHgpCj4gICAJCQlkcm1fZ2VtX29iamVjdF91bnJlZmVyZW5jZSgmY3R4X29iai0+YmFzZSk7Cj4g ICAJCX0KPiAgIAl9Cj4gKwo+ICsJaWYgKGN0eC0+aW5kaXJlY3RfY3R4X3dhX2JiKSB7Cj4gKwkJ aW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIpOwo+ICsJ CWludGVsX2Rlc3Ryb3lfcmluZ2J1ZmZlcl9vYmooY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIpOwo+ ICsJCWtmcmVlKGN0eC0+aW5kaXJlY3RfY3R4X3dhX2JiKTsKPiArCX0KPiArCj4gKwlpZiAoY3R4 LT5wZXJfY3R4X3dhX2JiKSB7Cj4gKwkJaW50ZWxfdW5waW5fcmluZ2J1ZmZlcl9vYmooY3R4LT5w ZXJfY3R4X3dhX2JiKTsKPiArCQlpbnRlbF9kZXN0cm95X3JpbmdidWZmZXJfb2JqKGN0eC0+cGVy X2N0eF93YV9iYik7Cj4gKwkJa2ZyZWUoY3R4LT5wZXJfY3R4X3dhX2JiKTsKPiArCX0KPiAgIH0K PiAgIAo+ICAgc3RhdGljIHVpbnQzMl90IGdldF9scl9jb250ZXh0X3NpemUoc3RydWN0IGludGVs X2VuZ2luZV9jcyAqcmluZykKPiBAQCAtMTk4NSw2ICsyMTg4LDE2IEBAIGludCBpbnRlbF9scl9j b250ZXh0X2RlZmVycmVkX2NyZWF0ZShzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4LAo+ICAgCj4g ICAJfQo+ICAgCj4gKwlpZiAocmluZy0+aWQgPT0gUkNTICYmICFjdHgtPnJjc19pbml0aWFsaXpl ZCkgewo+ICsJCWlmIChyaW5nLT5pbml0X2NvbnRleHRfYmIpIHsKPiArCQkJcmV0ID0gcmluZy0+ aW5pdF9jb250ZXh0X2JiKHJpbmcsIGN0eCk7Cj4gKwkJCWlmIChyZXQpIHsKPiArCQkJCURSTV9F UlJPUigicmluZyBpbml0IGNvbnRleHQgYmI6ICVkXG4iLCByZXQpOwo+ICsJCQkJZ290byBlcnJv cjsKPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gICAJcmV0ID0gcG9wdWxhdGVfbHJfY29udGV4 dChjdHgsIGN0eF9vYmosIHJpbmcsIHJpbmdidWYpOwo+ICAgCWlmIChyZXQpIHsKPiAgIAkJRFJN X0RFQlVHX0RSSVZFUigiRmFpbGVkIHRvIHBvcHVsYXRlIExSQzogJWRcbiIsIHJldCk7Cj4gQEAg LTIwMTMsNiArMjIyNiwxNyBAQCBpbnQgaW50ZWxfbHJfY29udGV4dF9kZWZlcnJlZF9jcmVhdGUo c3RydWN0IGludGVsX2NvbnRleHQgKmN0eCwKPiAgIAlyZXR1cm4gMDsKPiAgIAo+ICAgZXJyb3I6 Cj4gKwlpZiAoY3R4LT5pbmRpcmVjdF9jdHhfd2FfYmIpIHsKPiArCQlpbnRlbF91bnBpbl9yaW5n YnVmZmVyX29iaihjdHgtPmluZGlyZWN0X2N0eF93YV9iYik7Cj4gKwkJaW50ZWxfZGVzdHJveV9y aW5nYnVmZmVyX29iaihjdHgtPmluZGlyZWN0X2N0eF93YV9iYik7Cj4gKwkJa2ZyZWUoY3R4LT5p bmRpcmVjdF9jdHhfd2FfYmIpOwo+ICsJfQo+ICsJaWYgKGN0eC0+cGVyX2N0eF93YV9iYikgewo+ ICsJCWludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKGN0eC0+cGVyX2N0eF93YV9iYik7Cj4gKwkJ aW50ZWxfZGVzdHJveV9yaW5nYnVmZmVyX29iaihjdHgtPnBlcl9jdHhfd2FfYmIpOwo+ICsJCWtm cmVlKGN0eC0+cGVyX2N0eF93YV9iYik7Cj4gKwl9Cj4gKwo+ICAgCWlmIChpc19nbG9iYWxfZGVm YXVsdF9jdHgpCj4gICAJCWludGVsX3VucGluX3JpbmdidWZmZXJfb2JqKHJpbmdidWYpOwo+ICAg ZXJyb3JfZGVzdHJveV9yYnVmOgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9yaW5nYnVmZmVyLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5nYnVmZmVy LmgKPiBpbmRleCAzOTE4M2ZjLi44MzlkNjk4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3JpbmdidWZmZXIuaAo+IEBAIC0xNDYsNiArMTQ2LDkgQEAgc3RydWN0ICBpbnRlbF9lbmdp bmVfY3Mgewo+ICAgCWludAkJKCppbml0X2NvbnRleHQpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCj4gICAJCQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ICAgCj4gKwlpbnQJ CSgqaW5pdF9jb250ZXh0X2JiKShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+ICsJCQkJ CSAgIHN0cnVjdCBpbnRlbF9jb250ZXh0ICpjdHgpOwo+ICsKPiAgIAl2b2lkCQkoKndyaXRlX3Rh aWwpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCj4gICAJCQkJICAgICAgdTMyIHZhbHVl KTsKPiAgIAlpbnQgX19tdXN0X2NoZWNrICgqZmx1c2gpKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3Mg KnJpbmcsCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=