From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v2 02/11] drm/i915: Lift acquiring the vlv punit magic to a common sb-get Date: Mon, 15 Jan 2018 12:36:02 +0200 Message-ID: <873737jtnx.fsf@gaia.fi.intel.com> References: <20180115084723.2221-1-chris@chris-wilson.co.uk> <20180115084723.2221-3-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id 52C426E0A4 for ; Mon, 15 Jan 2018 10:36:11 +0000 (UTC) In-Reply-To: <20180115084723.2221-3-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gQXMgd2Ug bm93IGVtcGxveSBhIHZlcnkgaGVhdnkgcG1fcW9zIGFyb3VuZCB0aGUgcHVuaXQgYWNjZXNzLCB3 ZSB3YW50IHRvCj4gbWluaW1pc2UgdGhlIG51bWJlciBvZiBzeW5jaHJvbm91cyByZXF1ZXN0cyBi eSBwZXJmb3JtaW5nIG9uZSBmb3IgdGhlCj4gd2hvbGUgcHVuaXQgc2VxdWVuY2UgcmF0aGVyIHRo YW4gYXJvdW5kIGluZGl2aWR1YWwgYWNjZXNzZXMuIFRoZQo+IHNpZGViYW5kIGxvY2sgaXMgdXNl ZCBmb3IgdGhpcywgc28gcHVzaCB0aGUgcG1fcW9zIGludG8gdGhlIHNpZGViYW5kCj4gbG9jayBh Y3F1aXNpdGlvbiBhbmQgcmVsZWFzZSwgbW92aW5nIGl0IGZyb20gdGhlIGxvd2xldmVsIHB1bml0 IHJ3Cj4gcm91dGluZSB0byB0aGUgY2FsbGVycy4gSW4gdGhlIGZpcnN0IHN0ZXAsIHdlIG1vdmUg dGhlIHB1bml0IG1hZ2ljIGludG8KPiB0aGUgY29tbW9uIHNpZGViYW5kIGxvY2sgc28gdGhhdCB3 ZSBjYW4gYWNxdWlyZSBhIGJ1bmNoIG9mIHBvcnRzCj4gc2ltdWx0YW5lb3VzbHksIGFuZCBpZiBu ZWVkIGJlIGV4dGVuZCB0aGUgd29ya2Fyb3VuZCBwcm90ZWN0aW9uIGxhdGVyLgo+Cj4gU2lnbmVk LW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+Cj4gLS0tCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICB8ICA0NCArKysrKysrKysr LS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyAgICAgIHwgICA2ICstCj4g IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAgICB8ICAzNyArKysrKy0tLS0t Cj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgICAgICAgICB8ICAgNCArLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcGlvX3BoeS5jICAgfCAgMzcgKysrKystLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyAgICAgICAgfCAgIDggKy0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV9wbGwuYyAgICB8ICAxNCArKy0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV92YnQuYyAgICB8ICAgOCArLS0KPiAgZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAgIHwgICA0ICstCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BtLmMgICAgICAgICB8ICAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9ydW50aW1lX3BtLmMgfCAgIDggKy0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3NpZGViYW5kLmMgICB8IDExNSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLQo+ ICAxMiBmaWxlcyBjaGFuZ2VkLCAyMDcgaW5zZXJ0aW9ucygrKSwgODIgZGVsZXRpb25zKC0pCj4K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBkOTVkOGMzZDA0YWEuLjgwMjgwZjI3NjAx ZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0zNzIzLDI1ICszNzIzLDYxIEBA IGludCBza2xfcGNvZGVfcmVxdWVzdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiBtYm94LCB1MzIgcmVxdWVzdCwKPiAgCQkgICAgICB1MzIgcmVwbHlfbWFzaywgdTMyIHJl cGx5LCBpbnQgdGltZW91dF9iYXNlX21zKTsKPiAgCj4gIC8qIGludGVsX3NpZGViYW5kLmMgKi8K PiArCj4gK2VudW0gewo+ICsJVkxWX0lPU0ZfU0JfQlVOSVQsCj4gKwlWTFZfSU9TRl9TQl9DQ0ss Cj4gKwlWTFZfSU9TRl9TQl9DQ1UsCj4gKwlWTFZfSU9TRl9TQl9EUElPLAo+ICsJVkxWX0lPU0Zf U0JfRkxJU0RTSSwKPiArCVZMVl9JT1NGX1NCX0dQSU8sCj4gKwlWTFZfSU9TRl9TQl9OQywKPiAr CVZMVl9JT1NGX1NCX1BVTklULAo+ICt9Owo+ICsKPiArdm9pZCB2bHZfaW9zZl9zYl9nZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCBsb25nIHBvcnRzKTsKPiAr dTMyIHZsdl9pb3NmX3NiX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 OCBwb3J0LCB1MzIgcmVnKTsKPiArdm9pZCB2bHZfaW9zZl9zYl93cml0ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IHBvcnQsIHUzMiByZWcsIHUzMiB2YWwpOwo+ICt2b2lk IHZsdl9pb3NmX3NiX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2ln bmVkIGxvbmcgcG9ydHMpOwo+ICsKPiArdm9pZCB2bHZfcHVuaXRfZ2V0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHUzMiB2bHZfcHVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyKTsKPiAgaW50IHZsdl9wdW5pdF93cml0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiBhZGRyLCB1MzIgdmFsKTsKPiAr dm9pZCB2bHZfcHVuaXRfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4g Kwo+ICt2b2lkIHZsdl9uY19nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK PiAgdTMyIHZsdl9uY19yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTgg YWRkcik7Cj4gLXUzMiB2bHZfaW9zZl9zYl9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiwgdTggcG9ydCwgdTMyIHJlZyk7Cj4gLXZvaWQgdmx2X2lvc2Zfc2Jfd3JpdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1OCBwb3J0LCB1MzIgcmVnLCB1MzIgdmFs KTsKPiArdm9pZCB2bHZfbmNfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7 Cj4gKwo+ICt2b2lkIHZsdl9jY2tfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7Cj4gIHUzMiB2bHZfY2NrX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LCB1MzIgcmVnKTsKPiAgdm9pZCB2bHZfY2NrX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gK3ZvaWQgdmx2X2Nja19wdXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArCj4gK3ZvaWQgdmx2X2NjdV9nZXQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdTMyIHZsdl9jY3VfcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiByZWcpOwo+ICB2b2lkIHZsdl9jY3Vf d3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFs KTsKPiArdm9pZCB2bHZfY2N1X3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Owo+ICsKPiArdm9pZCB2bHZfYnVuaXRfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7Cj4gIHUzMiB2bHZfYnVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiByZWcpOwo+ICB2b2lkIHZsdl9idW5pdF93cml0ZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHUzMiByZWcsIHUzMiB2YWwpOwo+ICt2b2lkIHZsdl9idW5pdF9w dXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArCj4gK3ZvaWQgdmx2X2Rw aW9fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHUzMiB2bHZfZHBp b19yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUs IGludCByZWcpOwo+ICB2b2lkIHZsdl9kcGlvX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUsIGludCByZWcsIHUzMiB2YWwpOwo+ICt2b2lkIHZs dl9kcGlvX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICsKPiArdm9p ZCB2bHZfZmxpc2RzaV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAr dTMyIHZsdl9mbGlzZHNpX3JlYWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1 MzIgcmVnKTsKPiArdm9pZCB2bHZfZmxpc2RzaV93cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIHUzMiByZWcsIHUzMiB2YWwpOwo+ICt2b2lkIHZsdl9mbGlzZHNpX3B1dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICsKPiAgdTMyIGludGVsX3NiaV9y ZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywKPiAgCQkgICBl bnVtIGludGVsX3NiaV9kZXN0aW5hdGlvbiBkZXN0aW5hdGlvbik7Cj4gIHZvaWQgaW50ZWxfc2Jp X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZh bHVlLAo+ICAJCSAgICAgZW51bSBpbnRlbF9zYmlfZGVzdGluYXRpb24gZGVzdGluYXRpb24pOwo+ IC11MzIgdmx2X2ZsaXNkc2lfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHUzMiByZWcpOwo+IC12b2lkIHZsdl9mbGlzZHNpX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdTMyIHJlZywgdTMyIHZhbCk7Cj4gIAo+ICAvKiBpbnRlbF9kcGlvX3Bo eS5jICovCj4gIHZvaWQgYnh0X3BvcnRfdG9fcGh5X2NoYW5uZWwoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCBlbnVtIHBvcnQgcG9ydCwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfY2RjbGsuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Nk Y2xrLmMKPiBpbmRleCBjYTM2MzIxZWFmYWMuLjE3N2JiNzliZWVlNyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfY2RjbGsuYwo+IEBAIC01NTIsNyArNTUyLDggQEAgc3RhdGljIHZvaWQgdmx2 X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl9Cj4gIAlt dXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2 X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2lvc2Zfc2JfZ2V0KGRldl9wcml2LAo+ICsJCSAgICAg ICAJQklUKFZMVl9JT1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0ZfU0JfQlVOSVQpKTsKPgoKZ2l0 IGFtIGNvbXBsYWluZWQgYWJvdXQgc3BhY2VzIGJlZm9yZSB0YWIgaW4gYWJvdmUuLgoKPiAgCWlm IChjZGNsayA9PSA0MDAwMDApIHsKPiAgCQl1MzIgZGl2aWRlcjsKPiBAQCAtNTg2LDcgKzU4Nyw4 IEBAIHN0YXRpYyB2b2lkIHZsdl9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCXZhbCB8PSAzMDAwIC8gMjUwOyAvKiAzLjAgdXNlYyAqLwo+ICAJdmx2X2J1 bml0X3dyaXRlKGRldl9wcml2LCBCVU5JVF9SRUdfQklTT0MsIHZhbCk7Cj4gIAo+IC0JbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfaW9zZl9zYl9wdXQoZGV2X3ByaXYs Cj4gKwkJICAgICAgIAlCSVQoVkxWX0lPU0ZfU0JfQ0NLKSB8IEJJVChWTFZfSU9TRl9TQl9CVU5J VCkpOwo+CgphbmQgaW4gaGVyZS4KCi1NaWthCgo+ICAJaW50ZWxfdXBkYXRlX2NkY2xrKGRldl9w cml2KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDIyMWUz YTE4M2QzNi4uNWYwYjlmNjZjOGQ4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYwo+IEBAIC0xNjUsMTAgKzE2NSwxMCBAQCBpbnQgdmx2X2dldF9ocGxsX3ZjbyhzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpbnQgaHBsbF9mcmVxLCB2Y29fZnJlcVtd ID0geyA4MDAsIDE2MDAsIDIwMDAsIDI0MDAgfTsKPiAgCj4gIAkvKiBPYnRhaW4gU0tVIGluZm9y bWF0aW9uICovCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2Nr X2dldChkZXZfcHJpdik7Cj4gIAlocGxsX2ZyZXEgPSB2bHZfY2NrX3JlYWQoZGV2X3ByaXYsIEND S19GVVNFX1JFRykgJgo+ICAJCUNDS19GVVNFX0hQTExfRlJFUV9NQVNLOwo+IC0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gIAo+ ICAJcmV0dXJuIHZjb19mcmVxW2hwbGxfZnJlcV0gKiAxMDAwOwo+ICB9Cj4gQEAgLTE3OSw5ICsx NzksOSBAQCBpbnQgdmx2X2dldF9jY2tfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJdTMyIHZhbDsKPiAgCWludCBkaXZpZGVyOwo+ICAKPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfZ2V0KGRldl9wcml2KTsKPiAgCXZhbCA9 IHZsdl9jY2tfcmVhZChkZXZfcHJpdiwgcmVnKTsKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYt PnNiX2xvY2spOwo+ICsJdmx2X2Nja19wdXQoZGV2X3ByaXYpOwo+ICAKPiAgCWRpdmlkZXIgPSB2 YWwgJiBDQ0tfRlJFUVVFTkNZX1ZBTFVFUzsKPiAgCj4gQEAgLTEwNzgsOSArMTA3OCw5IEBAIHZv aWQgYXNzZXJ0X2RzaV9wbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29s IHN0YXRlKQo+ICAJdTMyIHZhbDsKPiAgCWJvb2wgY3VyX3N0YXRlOwo+ICAKPiAtCW11dGV4X2xv Y2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfZ2V0KGRldl9wcml2KTsKPiAgCXZh bCA9IHZsdl9jY2tfcmVhZChkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0NPTlRST0wpOwo+IC0J bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2NrX3B1dChkZXZfcHJp dik7Cj4gIAo+ICAJY3VyX3N0YXRlID0gdmFsICYgRFNJX1BMTF9WQ09fRU47Cj4gIAlJOTE1X1NU QVRFX1dBUk4oY3VyX3N0YXRlICE9IHN0YXRlLAo+IEBAIC0xNDI4LDE0ICsxNDI4LDE0IEBAIHN0 YXRpYyB2b2lkIF9jaHZfZW5hYmxlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWVu dW0gZHBpb19jaGFubmVsIHBvcnQgPSB2bHZfcGlwZV90b19jaGFubmVsKHBpcGUpOwo+ICAJdTMy IHRtcDsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBp b19nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIEVuYWJsZSBiYWNrIHRoZSAxMGJpdCBjbG9jayB0 byBkaXNwbGF5IGNvbnRyb2xsZXIgKi8KPiAgCXRtcCA9IHZsdl9kcGlvX3JlYWQoZGV2X3ByaXYs IHBpcGUsIENIVl9DTU5fRFcxNChwb3J0KSk7Cj4gIAl0bXAgfD0gRFBJT19EQ0xLUF9FTjsKPiAg CXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTQocG9ydCksIHRtcCk7 Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19w dXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qCj4gIAkgKiBOZWVkIHRvIHdhaXQgPiAxMDBucyBiZXR3 ZWVuIGRjbGtwIGNsb2NrIGVuYWJsZSBiaXQgYW5kIFBMTCBlbmFibGUuCj4gQEAgLTE2MjAsMTQg KzE2MjAsMTQgQEAgc3RhdGljIHZvaWQgY2h2X2Rpc2FibGVfcGxsKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgZW51bSBwaXBlIHBpcGUpCj4gIAlJOTE1X1dSSVRFKERQTEwocGlw ZSksIHZhbCk7Cj4gIAlQT1NUSU5HX1JFQUQoRFBMTChwaXBlKSk7Cj4gIAo+IC0JbXV0ZXhfbG9j aygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9wcml2KTsKPiAgCj4g IAkvKiBEaXNhYmxlIDEwYml0IGNsb2NrIHRvIGRpc3BsYXkgY29udHJvbGxlciAqLwo+ICAJdmFs ID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzE0KHBvcnQpKTsKPiAg CXZhbCAmPSB+RFBJT19EQ0xLUF9FTjsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBDSFZfQ01OX0RXMTQocG9ydCksIHZhbCk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICB2b2lk IHZsdl93YWl0X3BvcnRfcmVhZHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ IEBAIC02NjM4LDcgKzY2MzgsNyBAQCBzdGF0aWMgdm9pZCB2bHZfcHJlcGFyZV9wbGwoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCj4gIAlpZiAoKHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRw bGwgJiBEUExMX1ZDT19FTkFCTEUpID09IDApCj4gIAkJcmV0dXJuOwo+ICAKPiAtCW11dGV4X2xv Y2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ ICAJYmVzdG4gPSBwaXBlX2NvbmZpZy0+ZHBsbC5uOwo+ICAJYmVzdG0xID0gcGlwZV9jb25maWct PmRwbGwubTE7Cj4gQEAgLTY3MTUsNyArNjcxNSw4IEBAIHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJl X3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2 LCBwaXBlLCBWTFZfUExMX0RXNyhwaXBlKSwgY29yZWNsayk7Cj4gIAo+ICAJdmx2X2RwaW9fd3Jp dGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QTExfRFcxMShwaXBlKSwgMHg4Nzg3MTAwMCk7Cj4gLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCj4gKwl2bHZfZHBpb19wdXQoZGV2 X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBjaHZfcHJlcGFyZV9wbGwoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gQEAgLTY3NDgsNyArNjc0OSw3IEBAIHN0YXRpYyB2b2lkIGNodl9w cmVwYXJlX3BsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWRwaW9fdmFsID0gMDsKPiAg CWxvb3BmaWx0ZXIgPSAwOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsK PiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJLyogcDEgYW5kIHAyIGRpdmlkZXIg Ki8KPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTMocG9ydCks Cj4gQEAgLTY4MjAsNyArNjgyMSw3IEBAIHN0YXRpYyB2b2lkIGNodl9wcmVwYXJlX3BsbChzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkJdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwg Q0hWX0NNTl9EVzE0KHBvcnQpKSB8Cj4gIAkJCURQSU9fQUZDX1JFQ0FMKTsKPiAgCj4gLQltdXRl eF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7 Cj4gIH0KPiAgCj4gIC8qKgo+IEBAIC03NDIyLDkgKzc0MjMsOSBAQCBzdGF0aWMgdm9pZCB2bHZf Y3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAlpZiAoKHBpcGVfY29u ZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGwgJiBEUExMX1ZDT19FTkFCTEUpID09IDApCj4gIAkJcmV0 dXJuOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlv X2dldChkZXZfcHJpdik7Cj4gIAltZGl2ID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwg VkxWX1BMTF9EVzMocGlwZSkpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICAKPiAgCWNsb2NrLm0xID0gKG1kaXYgPj4g RFBJT19NMURJVl9TSElGVCkgJiA3Owo+ICAJY2xvY2subTIgPSBtZGl2ICYgRFBJT19NMkRJVl9N QVNLOwo+IEBAIC03NTI0LDEzICs3NTI1LDEzIEBAIHN0YXRpYyB2b2lkIGNodl9jcnRjX2Nsb2Nr X2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCWlmICgocGlwZV9jb25maWctPmRwbGxf aHdfc3RhdGUuZHBsbCAmIERQTExfVkNPX0VOQUJMRSkgPT0gMCkKPiAgCQlyZXR1cm47Cj4gIAo+ IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9w cml2KTsKPiAgCWNtbl9kdzEzID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgQ0hWX0NN Tl9EVzEzKHBvcnQpKTsKPiAgCXBsbF9kdzAgPSB2bHZfZHBpb19yZWFkKGRldl9wcml2LCBwaXBl LCBDSFZfUExMX0RXMChwb3J0KSk7Cj4gIAlwbGxfZHcxID0gdmx2X2RwaW9fcmVhZChkZXZfcHJp diwgcGlwZSwgQ0hWX1BMTF9EVzEocG9ydCkpOwo+ICAJcGxsX2R3MiA9IHZsdl9kcGlvX3JlYWQo ZGV2X3ByaXYsIHBpcGUsIENIVl9QTExfRFcyKHBvcnQpKTsKPiAgCXBsbF9kdzMgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCBDSFZfUExMX0RXMyhwb3J0KSk7Cj4gLQltdXRleF91bmxv Y2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIAo+ ICAJY2xvY2subTEgPSAocGxsX2R3MSAmIDB4NykgPT0gRFBJT19DSFZfTTFfRElWX0JZXzIgPyAy IDogMDsKPiAgCWNsb2NrLm0yID0gKHBsbF9kdzAgJiAweGZmKSA8PCAyMjsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RwLmMKPiBpbmRleCA2ODIyOWY1M2Q1YjguLjE2OGYyYzBkZTFiNiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuYwo+IEBAIC0yNzcxLDEyICsyNzcxLDEyIEBAIHN0YXRpYyB2b2lk IGNodl9wb3N0X2Rpc2FibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ ICAJaW50ZWxfZHBfbGlua19kb3duKGVuY29kZXIsIG9sZF9jcnRjX3N0YXRlKTsKPiAgCj4gLQlt dXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYp Owo+ICAKPiAgCS8qIEFzc2VydCBkYXRhIGxhbmUgcmVzZXQgKi8KPiAgCWNodl9kYXRhX2xhbmVf c29mdF9yZXNldChlbmNvZGVyLCBvbGRfY3J0Y19zdGF0ZSwgdHJ1ZSk7Cj4gIAo+IC0JbXV0ZXhf dW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcGlvX3BoeS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHBpb19waHku Ywo+IGluZGV4IDc2NDczZTk4MzZjNi4uNjYyZDcxY2Q1MDFmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwaW9fcGh5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcGlvX3BoeS5jCj4gQEAgLTY0NSw3ICs2NDUsNyBAQCB2b2lkIGNodl9zZXRf cGh5X3NpZ25hbF9sZXZlbChzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCXUzMiB2 YWw7Cj4gIAlpbnQgaTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4g Kwl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIENsZWFyIGNhbGMgaW5pdCAqLwo+ ICAJdmFsID0gdmx2X2RwaW9fcmVhZChkZXZfcHJpdiwgcGlwZSwgVkxWX1BDUzAxX0RXMTAoY2gp KTsKPiBAQCAtNzI2LDggKzcyNiw3IEBAIHZvaWQgY2h2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2 LCBwaXBlLCBWTFZfUENTMjNfRFcxMChjaCksIHZhbCk7Cj4gIAl9Cj4gIAo+IC0JbXV0ZXhfdW5s b2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gLQo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2KTsK PiAgfQo+ICAKPiAgdm9pZCBjaHZfZGF0YV9sYW5lX3NvZnRfcmVzZXQoc3RydWN0IGludGVsX2Vu Y29kZXIgKmVuY29kZXIsCj4gQEAgLTc5Nyw3ICs3OTYsNyBAQCB2b2lkIGNodl9waHlfcHJlX3Bs bF9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJY2h2X3BoeV9w b3dlcmdhdGVfbGFuZXMoZW5jb2RlciwgdHJ1ZSwgbGFuZV9tYXNrKTsKPiAgCj4gLQltdXRleF9s b2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwo+ICAK PiAgCS8qIEFzc2VydCBkYXRhIGxhbmUgcmVzZXQgKi8KPiAgCWNodl9kYXRhX2xhbmVfc29mdF9y ZXNldChlbmNvZGVyLCBjcnRjX3N0YXRlLCB0cnVlKTsKPiBAQCAtODUyLDcgKzg1MSw3IEBAIHZv aWQgY2h2X3BoeV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwK PiAgCQl2YWwgfD0gQ0hWX0NNTl9VU0VEQ0xLQ0hBTk5FTDsKPiAgCXZsdl9kcGlvX3dyaXRlKGRl dl9wcml2LCBwaXBlLCBDSFZfQ01OX0RXMTkoY2gpLCB2YWwpOwo+ICAKPiAtCW11dGV4X3VubG9j aygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2KTsKPiAgfQo+ ICAKPiAgdm9pZCBjaHZfcGh5X3ByZV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlciwKPiBAQCAtODY3LDcgKzg2Niw3IEBAIHZvaWQgY2h2X3BoeV9wcmVfZW5jb2Rl cl9lbmFibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlpbnQgZGF0YSwgaSwg c3RhZ2dlcjsKPiAgCXUzMiB2YWw7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xv Y2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRldl9wcml2KTsKPiAgCj4gIAkvKiBhbGxvdyBoYXJkd2Fy ZSB0byBtYW5hZ2UgVFggRklGTyByZXNldCBzb3VyY2UgKi8KPiAgCXZhbCA9IHZsdl9kcGlvX3Jl YWQoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1MwMV9EVzExKGNoKSk7Cj4gQEAgLTkzMiw3ICs5MzEs NyBAQCB2b2lkIGNodl9waHlfcHJlX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICAJLyogRGVhc3NlcnQgZGF0YSBsYW5lIHJlc2V0ICovCj4gIAljaHZfZGF0 YV9sYW5lX3NvZnRfcmVzZXQoZW5jb2RlciwgY3J0Y19zdGF0ZSwgZmFsc2UpOwo+ICAKPiAtCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2 KTsKPiAgfQo+ICAKPiAgdm9pZCBjaHZfcGh5X3JlbGVhc2VfY2wyX292ZXJyaWRlKHN0cnVjdCBp bnRlbF9lbmNvZGVyICplbmNvZGVyKQo+IEBAIC05NTMsNyArOTUyLDcgQEAgdm9pZCBjaHZfcGh5 X3Bvc3RfcGxsX2Rpc2FibGUoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAllbnVt IHBpcGUgcGlwZSA9IHRvX2ludGVsX2NydGMob2xkX2NydGNfc3RhdGUtPmJhc2UuY3J0YyktPnBp cGU7Cj4gIAl1MzIgdmFsOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsK PiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJLyogZGlzYWJsZSBsZWZ0L3JpZ2h0 IGNsb2NrIGRpc3RyaWJ1dGlvbiAqLwo+ICAJaWYgKHBpcGUgIT0gUElQRV9CKSB7Cj4gQEAgLTk2 Niw3ICs5NjUsNyBAQCB2b2lkIGNodl9waHlfcG9zdF9wbGxfZGlzYWJsZShzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqZW5jb2RlciwKPiAgCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgX0NI Vl9DTU5fRFcxX0NIMSwgdmFsKTsKPiAgCX0KPiAgCj4gLQltdXRleF91bmxvY2soJmRldl9wcml2 LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJLyoKPiAgCSAq IExlYXZlIHRoZSBwb3dlciBkb3duIGJpdCBjbGVhcmVkIGZvciBhdCBsZWFzdCBvbmUKPiBAQCAt OTkwLDcgKzk4OSw4IEBAIHZvaWQgdmx2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLAo+ICAJZW51bSBkcGlvX2NoYW5uZWwgcG9ydCA9IHZsdl9kcG9y dF90b19jaGFubmVsKGRwb3J0KTsKPiAgCWVudW0gcGlwZSBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19n ZXQoZGV2X3ByaXYpOwo+ICsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZf VFhfRFc1KHBvcnQpLCAweDAwMDAwMDAwKTsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBw aXBlLCBWTFZfVFhfRFc0KHBvcnQpLCBkZW1waF9yZWdfdmFsdWUpOwo+ICAJdmx2X2RwaW9fd3Jp dGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9UWF9EVzIocG9ydCksCj4gQEAgLTEwMDMsNyArMTAwMyw4 IEBAIHZvaWQgdmx2X3NldF9waHlfc2lnbmFsX2xldmVsKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9QQ1NfRFcxMShw b3J0KSwgMHgwMDAzMDAwMCk7Cj4gIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BDU19EVzkocG9ydCksIHByZWVtcGhfcmVnX3ZhbHVlKTsKPiAgCXZsdl9kcGlvX3dyaXRlKGRl dl9wcml2LCBwaXBlLCBWTFZfVFhfRFc1KHBvcnQpLCBEUElPX1RYX09DQUxJTklUX0VOKTsKPiAt CW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsKPiArCXZsdl9kcGlvX3B1dChk ZXZfcHJpdik7Cj4gIH0KPiAgCj4gIHZvaWQgdmx2X3BoeV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiBAQCAtMTAxNiw3ICsxMDE3LDggQEAgdm9pZCB2bHZf cGh5X3ByZV9wbGxfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+ICAKPiAgCS8qIFByb2dyYW0gVHggbGFuZSByZXNl dHMgdG8gZGVmYXVsdCAqLwo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJ dmx2X2RwaW9fZ2V0KGRldl9wcml2KTsKPiArCj4gIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwg cGlwZSwgVkxWX1BDU19EVzAocG9ydCksCj4gIAkJCSBEUElPX1BDU19UWF9MQU5FMl9SRVNFVCB8 Cj4gIAkJCSBEUElPX1BDU19UWF9MQU5FMV9SRVNFVCk7Cj4gQEAgLTEwMzAsNyArMTAzMiw4IEBA IHZvaWQgdmx2X3BoeV9wcmVfcGxsX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl ciwKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTX0RXMTIocG9ydCks IDB4MDA3NTBmMDApOwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZMVl9UWF9E VzExKHBvcnQpLCAweDAwMDAxNTAwKTsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBl LCBWTFZfVFhfRFcxNChwb3J0KSwgMHg0MDQwMDAwMCk7Cj4gLQltdXRleF91bmxvY2soJmRldl9w cml2LT5zYl9sb2NrKTsKPiArCj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ ICB2b2lkIHZsdl9waHlfcHJlX2VuY29kZXJfZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICpl bmNvZGVyLAo+IEBAIC0xMDQ0LDcgKzEwNDcsNyBAQCB2b2lkIHZsdl9waHlfcHJlX2VuY29kZXJf ZW5hYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJZW51bSBwaXBlIHBpcGUg PSBjcnRjLT5waXBlOwo+ICAJdTMyIHZhbDsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19nZXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qIEVuYWJsZSBj bG9jayBjaGFubmVscyBmb3IgdGhpcyBwb3J0ICovCj4gIAl2YWwgPSB2bHZfZHBpb19yZWFkKGRl dl9wcml2LCBwaXBlLCBWTFZfUENTMDFfRFc4KHBvcnQpKTsKPiBAQCAtMTA2MCw3ICsxMDYzLDcg QEAgdm9pZCB2bHZfcGh5X3ByZV9lbmNvZGVyX2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAq ZW5jb2RlciwKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTX0RXMTQo cG9ydCksIDB4MDA3NjAwMTgpOwo+ICAJdmx2X2RwaW9fd3JpdGUoZGV2X3ByaXYsIHBpcGUsIFZM Vl9QQ1NfRFcyMyhwb3J0KSwgMHgwMDQwMDg4OCk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICB2 b2lkIHZsdl9waHlfcmVzZXRfbGFuZXMoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4g QEAgLTEwNzIsOCArMTA3NSw4IEBAIHZvaWQgdmx2X3BoeV9yZXNldF9sYW5lcyhzdHJ1Y3QgaW50 ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCWVudW0gZHBpb19jaGFubmVsIHBvcnQgPSB2bHZfZHBv cnRfdG9fY2hhbm5lbChkcG9ydCk7Cj4gIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7Cj4g IAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2RwaW9fZ2V0KGRl dl9wcml2KTsKPiAgCXZsdl9kcGlvX3dyaXRlKGRldl9wcml2LCBwaXBlLCBWTFZfUENTX0RXMChw b3J0KSwgMHgwMDAwMDAwMCk7Cj4gIAl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgVkxW X1BDU19EVzEocG9ydCksIDB4MDBlMDAwNjApOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHNpLmMKPiBpbmRleCBmNjdkMzIxMzc2ZTQuLjBiNTAzYjY5NzFmZiAxMDA2NDQKPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gQEAgLTI3OCw3ICsyNzgsNyBAQCBzdGF0aWMgaW50IGRw aV9zZW5kX2NtZChzdHJ1Y3QgaW50ZWxfZHNpICppbnRlbF9kc2ksIHUzMiBjbWQsIGJvb2wgaHMs Cj4gIAo+ICBzdGF0aWMgdm9pZCBiYW5kX2dhcF9yZXNldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIHsKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiAr CXZsdl9mbGlzZHNpX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJdmx2X2ZsaXNkc2lfd3JpdGUoZGV2 X3ByaXYsIDB4MDgsIDB4MDAwMSk7Cj4gIAl2bHZfZmxpc2RzaV93cml0ZShkZXZfcHJpdiwgMHgw RiwgMHgwMDA1KTsKPiBAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIGJhbmRfZ2FwX3Jl c2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXZsdl9mbGlzZHNpX3dy aXRlKGRldl9wcml2LCAweDBGLCAweDAwMDApOwo+ICAJdmx2X2ZsaXNkc2lfd3JpdGUoZGV2X3By aXYsIDB4MDgsIDB4MDAwMCk7Cj4gIAo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9j ayk7Cj4gKwl2bHZfZmxpc2RzaV9wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaW5s aW5lIGJvb2wgaXNfdmlkX21vZGUoc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpKQo+IEBAIC01 MDksMTEgKzUwOSwxMSBAQCBzdGF0aWMgdm9pZCB2bHZfZHNpX2RldmljZV9yZWFkeShzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+ICAK PiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9mbGlzZHNpX2dldChk ZXZfcHJpdik7Cj4gIAkvKiBwcm9ncmFtIHJjb21wIGZvciBjb21wbGlhbmNlLCByZWR1Y2UgZnJv bSA1MCBvaG1zIHRvIDQ1IG9obXMKPiAgCSAqIG5lZWRlZCBldmVyeXRpbWUgYWZ0ZXIgcG93ZXIg Z2F0ZSAqLwo+ICAJdmx2X2ZsaXNkc2lfd3JpdGUoZGV2X3ByaXYsIDB4MDQsIDB4MDAwNCk7Cj4g LQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9mbGlzZHNpX3B1dChk ZXZfcHJpdik7Cj4gIAo+ICAJLyogYmFuZGdhcCByZXNldCBpcyBuZWVkZWQgYWZ0ZXIgZXZlcnl0 aW1lIHdlIGRvIHBvd2VyIGdhdGUgKi8KPiAgCWJhbmRfZ2FwX3Jlc2V0KGRldl9wcml2KTsKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4gaW5kZXggMmZmMmVlN2YzYjc4Li5iNzMz MzZlN2RjZDIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3Bs bC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHNpX3BsbC5jCj4gQEAgLTE0 OSw3ICsxNDksNyBAQCBzdGF0aWMgdm9pZCB2bHZfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIsCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygiXG4iKTsKPiAgCj4gLQlt dXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2NrX2dldChkZXZfcHJpdik7 Cj4gIAo+ICAJdmx2X2Nja193cml0ZShkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0NPTlRST0ws IDApOwo+ICAJdmx2X2Nja193cml0ZShkZXZfcHJpdiwgQ0NLX1JFR19EU0lfUExMX0RJVklERVIs IGNvbmZpZy0+ZHNpX3BsbC5kaXYpOwo+IEBAIC0xNjYsMTEgKzE2NiwxMSBAQCBzdGF0aWMgdm9p ZCB2bHZfZW5hYmxlX2RzaV9wbGwoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gIAlp ZiAod2FpdF9mb3Iodmx2X2Nja19yZWFkKGRldl9wcml2LCBDQ0tfUkVHX0RTSV9QTExfQ09OVFJP TCkgJgo+ICAJCQkJCQlEU0lfUExMX0xPQ0ssIDIwKSkgewo+ICAKPiAtCQltdXRleF91bmxvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiArCQl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gIAkJRFJN X0VSUk9SKCJEU0kgUExMIGxvY2sgZmFpbGVkXG4iKTsKPiAgCQlyZXR1cm47Cj4gIAl9Cj4gLQlt dXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfcHV0KGRldl9wcml2 KTsKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJEU0kgUExMIGxvY2tlZFxuIik7Cj4gIH0KPiBAQCAt MTgyLDE0ICsxODIsMTQgQEAgc3RhdGljIHZvaWQgdmx2X2Rpc2FibGVfZHNpX3BsbChzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcikKPiAgCj4gIAlEUk1fREVCVUdfS01TKCJcbiIpOwo+ICAK PiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9jY2tfZ2V0KGRldl9w cml2KTsKPiAgCj4gIAl0bXAgPSB2bHZfY2NrX3JlYWQoZGV2X3ByaXYsIENDS19SRUdfRFNJX1BM TF9DT05UUk9MKTsKPiAgCXRtcCAmPSB+RFNJX1BMTF9WQ09fRU47Cj4gIAl0bXAgfD0gRFNJX1BM TF9MRE9fR0FURTsKPiAgCXZsdl9jY2tfd3JpdGUoZGV2X3ByaXYsIENDS19SRUdfRFNJX1BMTF9D T05UUk9MLCB0bXApOwo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ ICsJdmx2X2Nja19wdXQoZGV2X3ByaXYpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgYm9vbCBieHRfZHNp X3BsbF9pc19lbmFibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAt Mjc0LDEwICsyNzQsMTAgQEAgc3RhdGljIHUzMiB2bHZfZHNpX2dldF9wY2xrKHN0cnVjdCBpbnRl bF9lbmNvZGVyICplbmNvZGVyLCBpbnQgcGlwZV9icHAsCj4gIAo+ICAJRFJNX0RFQlVHX0tNUygi XG4iKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfY2Nr X2dldChkZXZfcHJpdik7Cj4gIAlwbGxfY3RsID0gdmx2X2Nja19yZWFkKGRldl9wcml2LCBDQ0tf UkVHX0RTSV9QTExfQ09OVFJPTCk7Cj4gIAlwbGxfZGl2ID0gdmx2X2Nja19yZWFkKGRldl9wcml2 LCBDQ0tfUkVHX0RTSV9QTExfRElWSURFUik7Cj4gLQltdXRleF91bmxvY2soJmRldl9wcml2LT5z Yl9sb2NrKTsKPiArCXZsdl9jY2tfcHV0KGRldl9wcml2KTsKPiAgCj4gIAljb25maWctPmRzaV9w bGwuY3RybCA9IHBsbF9jdGwgJiB+RFNJX1BMTF9MT0NLOwo+ICAJY29uZmlnLT5kc2lfcGxsLmRp diA9IHBsbF9kaXY7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rz aV92YnQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaV92YnQuYwo+IGluZGV4IDkx YzA3YjBjOGRiOS4uZjExNjhiNmU4NTkyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RzaV92YnQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rz aV92YnQuYwo+IEBAIC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHZvaWQgdmx2X2V4ZWNfZ3Bpbyhz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlwY29uZjAgPSBWTFZfR1BJT19Q Q09ORjAobWFwLT5iYXNlX29mZnNldCk7Cj4gIAlwYWR2YWwgPSBWTFZfR1BJT19QQURfVkFMKG1h cC0+YmFzZV9vZmZzZXQpOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsK PiArCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0dQSU8pKTsKPiAg CWlmICghbWFwLT5pbml0KSB7Cj4gIAkJLyogRklYTUU6IHJlbW92ZSBjb25zdGFudCBiZWxvdyAq Lwo+ICAJCXZsdl9pb3NmX3NiX3dyaXRlKGRldl9wcml2LCBwb3J0LCBwY29uZjAsIDB4MjAwMEND MDApOwo+IEBAIC0yNDMsNyArMjQzLDcgQEAgc3RhdGljIHZvaWQgdmx2X2V4ZWNfZ3BpbyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAo+ICAJdG1wID0gMHg0IHwgdmFsdWU7 Cj4gIAl2bHZfaW9zZl9zYl93cml0ZShkZXZfcHJpdiwgcG9ydCwgcGFkdmFsLCB0bXApOwo+IC0J bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfaW9zZl9zYl9wdXQoZGV2 X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9HUElPKSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGNo dl9leGVjX2dwaW8oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+IEBAIC0yODks MTIgKzI4OSwxMiBAQCBzdGF0aWMgdm9pZCBjaHZfZXhlY19ncGlvKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCWNmZzAgPSBDSFZfR1BJT19QQURfQ0ZHMChmYW1pbHlfbnVt LCBncGlvX2luZGV4KTsKPiAgCWNmZzEgPSBDSFZfR1BJT19QQURfQ0ZHMShmYW1pbHlfbnVtLCBn cGlvX2luZGV4KTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2 bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9HUElPKSk7Cj4gIAl2bHZf aW9zZl9zYl93cml0ZShkZXZfcHJpdiwgcG9ydCwgY2ZnMSwgMCk7Cj4gIAl2bHZfaW9zZl9zYl93 cml0ZShkZXZfcHJpdiwgcG9ydCwgY2ZnMCwKPiAgCQkJICBDSFZfR1BJT19HUElPRU4gfCBDSFZf R1BJT19HUElPQ0ZHX0dQTyB8Cj4gIAkJCSAgQ0hWX0dQSU9fR1BJT1RYU1RBVEUodmFsdWUpKTsK PiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJdmx2X2lvc2Zfc2JfcHV0 KGRldl9wcml2LCBCSVQoVkxWX0lPU0ZfU0JfR1BJTykpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9p ZCBieHRfZXhlY19ncGlvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiBkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gaW5kZXggNjkxZjE1YjU5MTI0Li4yYjViN2Q0ZjczZDcg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCj4gQEAgLTE5OTUsMTIgKzE5OTUsMTIg QEAgc3RhdGljIHZvaWQgY2h2X2hkbWlfcG9zdF9kaXNhYmxlKHN0cnVjdCBpbnRlbF9lbmNvZGVy ICplbmNvZGVyLAo+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGVuY29kZXItPmJhc2UuZGV2 Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwo+ ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChk ZXZfcHJpdik7Cj4gIAo+ICAJLyogQXNzZXJ0IGRhdGEgbGFuZSByZXNldCAqLwo+ICAJY2h2X2Rh dGFfbGFuZV9zb2Z0X3Jlc2V0KGVuY29kZXIsIG9sZF9jcnRjX3N0YXRlLCB0cnVlKTsKPiAgCj4g LQltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX3B1dChkZXZf cHJpdik7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGNodl9oZG1pX3ByZV9lbmFibGUoc3RydWN0 IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXgg MWRiNzlhODYwYjk2Li42MGM2NjY0MjRkNjUgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiBAQCAtNzE3Myw5ICs3MTczLDkgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19pbml0X2d0X3Bv d2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJdmx2X2lu aXRfZ3BsbF9yZWZfZnJlcShkZXZfcHJpdik7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnNiX2xvY2spOwo+ICsJdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAJdmFsID0gdmx2X2Nja19y ZWFkKGRldl9wcml2LCBDQ0tfRlVTRV9SRUcpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7Cj4gKwl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJc3dpdGNoICgodmFs ID4+IDIpICYgMHg3KSB7Cj4gIAljYXNlIDM6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1 bnRpbWVfcG0uYwo+IGluZGV4IDQ5OTZjNGVhOGE4MC4uMzRmZmEyZGQzOTk2IDEwMDY0NAo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYwo+IEBAIC0xMTgyLDcgKzExODIsNyBA QCBzdGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkJICAgIDEpKQo+ICAJCURSTV9FUlJPUigiRGlz cGxheSBQSFkgJWQgaXMgbm90IHBvd2VyIHVwXG4iLCBwaHkpOwo+ICAKPiAtCW11dGV4X2xvY2so JmRldl9wcml2LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAo+ICAJ LyogRW5hYmxlIGR5bmFtaWMgcG93ZXIgZG93biAqLwo+ICAJdG1wID0gdmx2X2RwaW9fcmVhZChk ZXZfcHJpdiwgcGlwZSwgQ0hWX0NNTl9EVzI4KTsKPiBAQCAtMTIwNSw3ICsxMjA1LDcgQEAgc3Rh dGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZW5hYmxlKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCQl2bHZfZHBpb193cml0ZShkZXZfcHJpdiwgcGlwZSwgQ0hW X0NNTl9EVzMwLCB0bXApOwo+ICAJfQo+ICAKPiAtCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnNi X2xvY2spOwo+ICsJdmx2X2RwaW9fcHV0KGRldl9wcml2KTsKPiAgCj4gIAlkZXZfcHJpdi0+Y2h2 X3BoeV9jb250cm9sIHw9IFBIWV9DT01fTEFORV9SRVNFVF9ERUFTU0VSVChwaHkpOwo+ICAJSTkx NV9XUklURShESVNQTEFZX1BIWV9DT05UUk9MLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsK PiBAQCAtMTI2OCw5ICsxMjY4LDkgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X2Nodl9waHlfcG93ZXJn YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgZW51bSBkcGkKPiAgCWVsc2UK PiAgCQlyZWcgPSBfQ0hWX0NNTl9EVzZfQ0gxOwo+ICAKPiAtCW11dGV4X2xvY2soJmRldl9wcml2 LT5zYl9sb2NrKTsKPiArCXZsdl9kcGlvX2dldChkZXZfcHJpdik7Cj4gIAl2YWwgPSB2bHZfZHBp b19yZWFkKGRldl9wcml2LCBwaXBlLCByZWcpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ c2JfbG9jayk7Cj4gKwl2bHZfZHBpb19wdXQoZGV2X3ByaXYpOwo+ICAKPiAgCS8qCj4gIAkgKiBU aGlzIGFzc3VtZXMgIW92ZXJyaWRlIGlzIG9ubHkgdXNlZCB3aGVuIHRoZSBwb3J0IGlzIGRpc2Fi bGVkLgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFuZC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+IGluZGV4IGQ1NmVkYTMz NzM0ZS4uM2Q3YzU5MTdiOTdjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3NpZGViYW5kLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9zaWRlYmFu ZC5jCj4gQEAgLTczLDYgKzczLDIyIEBAIHN0YXRpYyB2b2lkIF9fdmx2X3B1bml0X3B1dChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlpb3NmX21iaV9wdW5pdF9yZWxlYXNl KCk7Cj4gIH0KPiAgCj4gK3ZvaWQgdmx2X2lvc2Zfc2JfZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgbG9uZyBwb3J0cykKPiArewo+ICsJaWYgKHBvcnRzICYg QklUKFZMVl9JT1NGX1NCX1BVTklUKSkKPiArCQlfX3Zsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwo+ ICsKPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5zYl9sb2NrKTsKPiArfQo+ICsKPiArdm9pZCB2 bHZfaW9zZl9zYl9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25l ZCBsb25nIHBvcnRzKQo+ICt7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2LT5zYl9sb2NrKTsK PiArCj4gKwlpZiAocG9ydHMgJiBCSVQoVkxWX0lPU0ZfU0JfUFVOSVQpKQo+ICsJCV9fdmx2X3B1 bml0X3B1dChkZXZfcHJpdik7Cj4gK30KPiArCj4gIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCQkJICAgdTMyIGRldmZuLCB1 MzIgcG9ydCwgdTMyIG9wY29kZSwKPiAgCQkJICAgdTMyIGFkZHIsIHUzMiAqdmFsKQo+IEBAIC04 MSw2ICs5Nyw4IEBAIHN0YXRpYyBpbnQgdmx2X3NpZGViYW5kX3J3KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPiAgCWludCBlcnI7Cj4gIAo+ICAJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZGV2X3ByaXYtPnNiX2xvY2spOwo+ICsJaWYgKHBvcnQgPT0gSU9TRl9QT1JUX1BVTklUKQo+ ICsJCWlvc2ZfbWJpX2Fzc2VydF9wdW5pdF9hY3F1aXJlZCgpOwo+ICAKPiAgCS8qIEZsdXNoIHRo ZSBwcmV2aW91cyBjb21tcywganVzdCBpbiBjYXNlIGl0IGZhaWxlZCBsYXN0IHRpbWUuICovCj4g IAlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gQEAgLTEyNCwxNiArMTQy LDE0IEBAIHUzMiB2bHZfcHVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUzMiBhZGRyKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiAgCj4gLQlXQVJOX09OKCFtdXRl eF9pc19sb2NrZWQoJmRldl9wcml2LT5wY3VfbG9jaykpOwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVs ZCgmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2Jf bG9jayk7Cj4gLQlfX3Zsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwo+ICsJdmx2X3B1bml0X2dldChk ZXZfcHJpdik7Cj4gIAo+ICAJdmx2X3NpZGViYW5kX3J3KGRldl9wcml2LCBQQ0lfREVWRk4oMCwg MCksIElPU0ZfUE9SVF9QVU5JVCwKPiAgCQkJU0JfQ1JSRERBX05QLCBhZGRyLCAmdmFsKTsKPiAg Cj4gLQlfX3Zsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+c2JfbG9jayk7Cj4gKwl2bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4g dmFsOwo+ICB9Cj4gQEAgLTE0MiwyMCArMTU4LDI4IEBAIGludCB2bHZfcHVuaXRfd3JpdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgYWRkciwgdTMyIHZhbCkKPiAgewo+ ICAJaW50IGVycjsKPiAgCj4gLQlXQVJOX09OKCFtdXRleF9pc19sb2NrZWQoJmRldl9wcml2LT5w Y3VfbG9jaykpOwo+ICsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmZGV2X3ByaXYtPnBjdV9sb2NrKTsK PiAgCj4gLQltdXRleF9sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gLQlfX3Zsdl9wdW5pdF9n ZXQoZGV2X3ByaXYpOwo+ICsJdmx2X3B1bml0X2dldChkZXZfcHJpdik7Cj4gIAo+ICAJZXJyID0g dmx2X3NpZGViYW5kX3J3KGRldl9wcml2LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9QVU5J VCwKPiAgCQkJICAgICAgU0JfQ1JXUkRBX05QLCBhZGRyLCAmdmFsKTsKPiAgCj4gLQlfX3Zsdl9w dW5pdF9wdXQoZGV2X3ByaXYpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7 Cj4gKwl2bHZfcHVuaXRfcHV0KGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gZXJyOwo+ICB9Cj4g IAo+ICt2b2lkIHZsdl9wdW5pdF9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9QVU5J VCkpOwo+ICt9Cj4gKwo+ICt2b2lkIHZsdl9wdW5pdF9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9wdXQoZGV2X3ByaXYsIEJJVChWTFZf SU9TRl9TQl9QVU5JVCkpOwo+ICt9Cj4gKwo+ICB1MzIgdmx2X2J1bml0X3JlYWQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsK PiBAQCAtMTcyLDIwICsxOTYsMzggQEAgdm9pZCB2bHZfYnVuaXRfd3JpdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKQo+ICAJCQlTQl9DUldSREFf TlAsIHJlZywgJnZhbCk7Cj4gIH0KPiAgCj4gK3ZvaWQgdmx2X2J1bml0X2dldChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXZsdl9pb3NmX3NiX2dldChkZXZfcHJp diwgQklUKFZMVl9JT1NGX1NCX0JVTklUKSk7Cj4gK30KPiArCj4gK3ZvaWQgdmx2X2J1bml0X3B1 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXZsdl9pb3NmX3Ni X3B1dChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0JVTklUKSk7Cj4gK30KPiArCj4gIHUzMiB2 bHZfbmNfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHU4IGFkZHIpCj4g IHsKPiAgCXUzMiB2YWwgPSAwOwo+ICAKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2 X3ByaXYtPnBjdV9sb2NrKSk7Cj4gLQo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnNiX2xvY2sp Owo+ICsJdmx2X25jX2dldChkZXZfcHJpdik7Cj4gIAl2bHZfc2lkZWJhbmRfcncoZGV2X3ByaXYs IFBDSV9ERVZGTigwLCAwKSwgSU9TRl9QT1JUX05DLAo+ICAJCQlTQl9DUlJEREFfTlAsIGFkZHIs ICZ2YWwpOwo+IC0JbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+c2JfbG9jayk7Cj4gKwl2bHZfbmNf cHV0KGRldl9wcml2KTsKPiAgCj4gIAlyZXR1cm4gdmFsOwo+ICB9Cj4gIAo+ICt2b2lkIHZsdl9u Y19nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwl2bHZfaW9z Zl9zYl9nZXQoZGV2X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9OQykpOwo+ICt9Cj4gKwo+ICt2b2lk IHZsdl9uY19wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwl2 bHZfaW9zZl9zYl9wdXQoZGV2X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9OQykpOwo+ICt9Cj4gKwo+ ICB1MzIgdmx2X2lvc2Zfc2JfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IHU4IHBvcnQsIHUzMiByZWcpCj4gIHsKPiAgCXUzMiB2YWwgPSAwOwo+IEBAIC0yMTUsNiArMjU3 LDE2IEBAIHZvaWQgdmx2X2Nja193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUzMiByZWcsIHUzMiB2YWwpCj4gIAkJCVNCX0NSV1JEQV9OUCwgcmVnLCAmdmFsKTsKPiAg fQo+ICAKPiArdm9pZCB2bHZfY2NrX2dldChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gK3sKPiArCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0ND SykpOwo+ICt9Cj4gKwo+ICt2b2lkIHZsdl9jY2tfcHV0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdikKPiArewo+ICsJdmx2X2lvc2Zfc2JfcHV0KGRldl9wcml2LCBCSVQoVkxWX0lP U0ZfU0JfQ0NLKSk7Cj4gK30KPiArCj4gIHUzMiB2bHZfY2N1X3JlYWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCB1MzIgcmVnKQo+ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiBAQCAt MjI5LDYgKzI4MSwxNiBAQCB2b2lkIHZsdl9jY3Vfd3JpdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1MzIgcmVnLCB1MzIgdmFsKQo+ICAJCQlTQl9DUldSREFfTlAsIHJlZywg JnZhbCk7Cj4gIH0KPiAgCj4gK3ZvaWQgdmx2X2NjdV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsIEJJVChWTFZf SU9TRl9TQl9DQ1UpKTsKPiArfQo+ICsKPiArdm9pZCB2bHZfY2N1X3B1dChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXZsdl9pb3NmX3NiX3B1dChkZXZfcHJpdiwg QklUKFZMVl9JT1NGX1NCX0NDVSkpOwo+ICt9Cj4gKwo+ICB1MzIgdmx2X2RwaW9fcmVhZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBlLCBpbnQgcmVnKQo+ ICB7Cj4gIAl1MzIgdmFsID0gMDsKPiBAQCAtMjUyLDEyICszMTQsMjMgQEAgdm9pZCB2bHZfZHBp b193cml0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGVudW0gcGlwZSBwaXBl LCBpbnQgcmVnLAo+ICAJCQlTQl9NV1JfTlAsIHJlZywgJnZhbCk7Cj4gIH0KPiAgCj4gK3ZvaWQg dmx2X2RwaW9fZ2V0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJ dmx2X2lvc2Zfc2JfZ2V0KGRldl9wcml2LCBCSVQoVkxWX0lPU0ZfU0JfRFBJTykpOwo+ICt9Cj4g Kwo+ICt2b2lkIHZsdl9kcGlvX3B1dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gK3sKPiArCXZsdl9pb3NmX3NiX3B1dChkZXZfcHJpdiwgQklUKFZMVl9JT1NGX1NCX0RQSU8p KTsKPiArfQo+ICsKPiAgLyogU0JJIGFjY2VzcyAqLwo+ICB1MzIgaW50ZWxfc2JpX3JlYWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1MTYgcmVnLAo+ICAJCSAgIGVudW0gaW50 ZWxfc2JpX2Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKQo+ICB7Cj4gIAl1MzIgdmFsdWUgPSAwOwo+ IC0JV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXZfcHJpdi0+c2JfbG9jaykpOwo+ICsKPiAr CWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5zYl9sb2NrKTsKPiAgCj4gIAlpZiAoaW50 ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gIAkJCQkgICAgU0JJX0NUTF9TVEFULCBT QklfQlVTWSwgMCwKPiBAQCAtMjk3LDcgKzM3MCw3IEBAIHZvaWQgaW50ZWxfc2JpX3dyaXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTE2IHJlZywgdTMyIHZhbHVlLAo+ICB7 Cj4gIAl1MzIgdG1wOwo+ICAKPiAtCVdBUk5fT04oIW11dGV4X2lzX2xvY2tlZCgmZGV2X3ByaXYt PnNiX2xvY2spKTsKPiArCWxvY2tkZXBfYXNzZXJ0X2hlbGQoJmRldl9wcml2LT5zYl9sb2NrKTsK PiAgCj4gIAlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gIAkJCQkgICAg U0JJX0NUTF9TVEFULCBTQklfQlVTWSwgMCwKPiBAQCAtMzQ0LDMgKzQxNywxMyBAQCB2b2lkIHZs dl9mbGlzZHNpX3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIHJl ZywgdTMyIHZhbCkKPiAgCXZsdl9zaWRlYmFuZF9ydyhkZXZfcHJpdiwgRFBJT19ERVZGTiwgSU9T Rl9QT1JUX0ZMSVNEU0ksIFNCX0NSV1JEQV9OUCwKPiAgCQkJcmVnLCAmdmFsKTsKPiAgfQo+ICsK PiArdm9pZCB2bHZfZmxpc2RzaV9nZXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 KQo+ICt7Cj4gKwl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsIEJJVChWTFZfSU9TRl9TQl9GTElT RFNJKSk7Cj4gK30KPiArCj4gK3ZvaWQgdmx2X2ZsaXNkc2lfcHV0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJdmx2X2lvc2Zfc2JfcHV0KGRldl9wcml2LCBCSVQo VkxWX0lPU0ZfU0JfRkxJU0RTSSkpOwo+ICt9Cj4gLS0gCj4gMi4xNS4xCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=