From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 03/10] drm/i915: Lift sideband locking for vlv_punit_(read|write) Date: Tue, 23 Apr 2019 20:14:19 +0300 Message-ID: <20190423171419.GA1747@intel.com> References: <20190419171402.30596-1-chris@chris-wilson.co.uk> <20190419171402.30596-4-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1354C894EB for ; Tue, 23 Apr 2019 17:14:23 +0000 (UTC) Content-Disposition: inline In-Reply-To: <20190419171402.30596-4-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBBcHIgMTksIDIwMTkgYXQgMDY6MTM6NTVQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IExpZnQgdGhlIHNpZGViYW5kIGFjcXVpc2l0aW9uIGZvciB2bHZfcHVuaXRfcmVhZCBh bmQgdmx2X3B1bml0X3dyaXRlCj4gaW50byB0aGVpciBjYWxsZXJzLCBzbyB0aGF0IHdlIGNhbiBs b2NrIHRoZSBzaWRlYmFuZCBvbmNlIGZvciBhIHNlcXVlbmNlCj4gb2Ygb3BlcmF0aW9ucywgcmF0 aGVyIHRoYW4gcGVyZm9ybSB0aGUgaGVhdnl3ZWlnaHQgYWNxdWlzaXRpb24gb24gZWFjaAo+IHJl cXVlc3QuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAg ICB8ICA1ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgICAgICAgfCAx NCArKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jICAgICAgfCAy MyArKysrKysrKysrLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyAg ICB8IDE2ICsrKysrLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jICAgICAg ICAgfCA0NiArKysrKysrKysrKysrKysrKysrKy0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3J1bnRpbWVfcG0uYyB8IDEwICsrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9zaWRlYmFuZC5jICAgfCAxOCArKy0tLS0tLS0tCj4gIDcgZmlsZXMgY2hhbmdlZCwgODkg aW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k ZWJ1Z2ZzLmMKPiBpbmRleCA1ODIzZmZiMTc4MjEuLjgzMjUzOTI4ZTY5ZCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTEwNTYsNyArMTA1NiwxMCBAQCBzdGF0aWMg aW50IGk5MTVfZnJlcXVlbmN5X2luZm8oc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQp Cj4gIAkJCSAgIHllc25vKChycG1vZGVjdGwgJiBHRU42X1JQX01FRElBX01PREVfTUFTSykgPT0K PiAgCQkJCSAgR0VONl9SUF9NRURJQV9TV19NT0RFKSk7Cj4gIAo+ICsJCXZsdl9wdW5pdF9nZXQo ZGV2X3ByaXYpOwo+ICAJCWZyZXFfc3RzID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklU X1JFR19HUFVfRlJFUV9TVFMpOwo+ICsJCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ICsKPiAg CQlzZXFfcHJpbnRmKG0sICJQVU5JVF9SRUdfR1BVX0ZSRVFfU1RTOiAweCUwOHhcbiIsIGZyZXFf c3RzKTsKPiAgCQlzZXFfcHJpbnRmKG0sICJERFIgZnJlcTogJWQgTUh6XG4iLCBkZXZfcHJpdi0+ bWVtX2ZyZXEpOwo+ICAKPiBAQCAtMjAyOSw4ICsyMDMyLDEwIEBAIHN0YXRpYyBpbnQgaTkxNV9y cHNfYm9vc3RfaW5mbyhzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmRhdGEpCj4gIAl3aXRoX2lu dGVsX3J1bnRpbWVfcG1faWZfaW5fdXNlKGRldl9wcml2LCB3YWtlcmVmKSB7Cj4gIAkJaWYgKElT X1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpKSB7Cj4gIAkJ CW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gKwkJCXZsdl9wdW5pdF9nZXQoZGV2 X3ByaXYpOwo+ICAJCQlhY3RfZnJlcSA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LAo+ICAJCQkJ CQkgIFBVTklUX1JFR19HUFVfRlJFUV9TVFMpOwo+ICsJCQl2bHZfcHVuaXRfcHV0KGRldl9wcml2 KTsKPiAgCQkJYWN0X2ZyZXEgPSAoYWN0X2ZyZXEgPj4gOCkgJiAweGZmOwo+ICAJCQltdXRleF91 bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAkJfSBlbHNlIHsKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeXNmcy5jCj4gaW5kZXggNDEzMTMwMDVhZjQyLi5iZmFiYjNkZTQ4MDggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9zeXNmcy5jCj4gQEAgLTI1OSwyNSArMjU5LDI1IEBAIHN0YXRpYyBz c2l6ZV90IGd0X2FjdF9mcmVxX21oel9zaG93KHN0cnVjdCBkZXZpY2UgKmtkZXYsCj4gIHsKPiAg CXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGtkZXZfbWlub3JfdG9faTkxNShr ZGV2KTsKPiAgCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+IC0JaW50IHJldDsKPiArCXUzMiBm cmVxOwo+ICAKPiAgCXdha2VyZWYgPSBpbnRlbF9ydW50aW1lX3BtX2dldChkZXZfcHJpdik7Cj4g IAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAgCWlmIChJU19WQUxMRVlW SUVXKGRldl9wcml2KSB8fCBJU19DSEVSUllWSUVXKGRldl9wcml2KSkgewo+IC0JCXUzMiBmcmVx Owo+ICsJCXZsdl9wdW5pdF9nZXQoZGV2X3ByaXYpOwo+ICAJCWZyZXEgPSB2bHZfcHVuaXRfcmVh ZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4gLQkJcmV0ID0gaW50ZWxfZ3B1 X2ZyZXEoZGV2X3ByaXYsIChmcmVxID4+IDgpICYgMHhmZik7Cj4gKwkJdmx2X3B1bml0X3B1dChk ZXZfcHJpdik7Cj4gKwo+ICsJCWZyZXEgPSAoZnJlcSA+PiA4KSAmIDB4ZmY7Cj4gIAl9IGVsc2Ug ewo+IC0JCXJldCA9IGludGVsX2dwdV9mcmVxKGRldl9wcml2LAo+IC0JCQkJICAgICBpbnRlbF9n ZXRfY2FnZihkZXZfcHJpdiwKPiAtCQkJCQkJICAgIEk5MTVfUkVBRChHRU42X1JQU1RBVDEpKSk7 Cj4gKwkJZnJlcSA9IGludGVsX2dldF9jYWdmKGRldl9wcml2LCBJOTE1X1JFQUQoR0VONl9SUFNU QVQxKSk7Cj4gIAl9Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAo+ ICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYsIHdha2VyZWYpOwo+ICAKPiAtCXJldHVy biBzbnByaW50ZihidWYsIFBBR0VfU0laRSwgIiVkXG4iLCByZXQpOwo+ICsJcmV0dXJuIHNucHJp bnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJWRcbiIsIGludGVsX2dwdV9mcmVxKGRldl9wcml2LCBmcmVx KSk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBzc2l6ZV90IGd0X2N1cl9mcmVxX21oel9zaG93KHN0cnVj dCBkZXZpY2UgKmtkZXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2NkY2xrLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jZGNsay5jCj4gaW5kZXggNTg0 NWQwYTM3NTk5Li45ZGQyMjIwM2E3ZTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfY2RjbGsuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NkY2xr LmMKPiBAQCAtNDY0LDEzICs0NjQsMTkgQEAgc3RhdGljIHZvaWQgdmx2X2dldF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIHsKPiAgCXUzMiB2YWw7Cj4gIAo+ICsJ bXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiArCXZsdl9pb3NmX3NiX2dldChkZXZf cHJpdiwKPiArCQkJQklUKFZMVl9JT1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0ZfU0JfUFVOSVQp KTsKPiArCj4gIAljZGNsa19zdGF0ZS0+dmNvID0gdmx2X2dldF9ocGxsX3ZjbyhkZXZfcHJpdik7 Cj4gIAljZGNsa19zdGF0ZS0+Y2RjbGsgPSB2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgImNk Y2xrIiwKPiAgCQkJCQkgICAgICAgQ0NLX0RJU1BMQVlfQ0xPQ0tfQ09OVFJPTCwKPiAgCQkJCQkg ICAgICAgY2RjbGtfc3RhdGUtPnZjbyk7Cj4gIAo+IC0JbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBj dV9sb2NrKTsKPiAgCXZhbCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfRFNQ U1NQTSk7Cj4gKwo+ICsJdmx2X2lvc2Zfc2JfcHV0KGRldl9wcml2LAo+ICsJCQlCSVQoVkxWX0lP U0ZfU0JfQ0NLKSB8IEJJVChWTFZfSU9TRl9TQl9QVU5JVCkpOwo+ICAJbXV0ZXhfdW5sb2NrKCZk ZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAKPiAgCWlmIChJU19WQUxMRVlWSUVXKGRldl9wcml2KSkK PiBAQCAtNTQ1LDYgKzU1MSwxMSBAQCBzdGF0aWMgdm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCSAqLwo+ICAJd2FrZXJlZiA9IGludGVsX2Rp c3BsYXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUElQRV9BKTsKPiAgCj4gKwl2 bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsCj4gKwkJCUJJVChWTFZfSU9TRl9TQl9DQ0spIHwKPiAr CQkJQklUKFZMVl9JT1NGX1NCX0JVTklUKSB8Cj4gKwkJCUJJVChWTFZfSU9TRl9TQl9QVU5JVCkp Owo+ICsKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAl2YWwgPSB2bHZf cHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUFNTUE0pOwo+ICAJdmFsICY9IH5EU1BG UkVRR1VBUl9NQVNLOwo+IEBAIC01NTcsOSArNTY4LDYgQEAgc3RhdGljIHZvaWQgdmx2X3NldF9j ZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl9Cj4gIAltdXRleF91 bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAo+IC0Jdmx2X2lvc2Zfc2JfZ2V0KGRldl9w cml2LAo+IC0JCQlCSVQoVkxWX0lPU0ZfU0JfQ0NLKSB8IEJJVChWTFZfSU9TRl9TQl9CVU5JVCkp Owo+IC0KPiAgCWlmIChjZGNsayA9PSA0MDAwMDApIHsKPiAgCQl1MzIgZGl2aWRlcjsKPiAgCj4g QEAgLTU5Myw3ICs2MDEsOSBAQCBzdGF0aWMgdm9pZCB2bHZfc2V0X2NkY2xrKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXZsdl9idW5pdF93cml0ZShkZXZfcHJpdiwgQlVO SVRfUkVHX0JJU09DLCB2YWwpOwo+ICAKPiAgCXZsdl9pb3NmX3NiX3B1dChkZXZfcHJpdiwKPiAt CQkJQklUKFZMVl9JT1NGX1NCX0NDSykgfCBCSVQoVkxWX0lPU0ZfU0JfQlVOSVQpKTsKPiArCQkJ QklUKFZMVl9JT1NGX1NCX0NDSykgfAo+ICsJCQlCSVQoVkxWX0lPU0ZfU0JfQlVOSVQpIHwKPiAr CQkJQklUKFZMVl9JT1NGX1NCX1BVTklUKSk7Cj4gIAo+ICAJaW50ZWxfdXBkYXRlX2NkY2xrKGRl dl9wcml2KTsKPiAgCj4gQEAgLTYzMCw2ICs2NDAsNyBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X2Nk Y2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXdha2VyZWYgPSBpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BJUEVfQSk7Cj4gIAo+ ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiArCXZsdl9wdW5pdF9nZXQoZGV2 X3ByaXYpOwo+ICAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklUX1JFR19EU1BT U1BNKTsKPiAgCXZhbCAmPSB+RFNQRlJFUUdVQVJfTUFTS19DSFY7Cj4gIAl2YWwgfD0gKGNtZCA8 PCBEU1BGUkVRR1VBUl9TSElGVF9DSFYpOwo+IEBAIC02MzksNiArNjUwLDggQEAgc3RhdGljIHZv aWQgY2h2X3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJ ICAgICA1MCkpIHsKPiAgCQlEUk1fRVJST1IoInRpbWVkIG91dCB3YWl0aW5nIGZvciBDRGNsayBj aGFuZ2VcbiIpOwo+ICAJfQo+ICsKPiArCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ICAJbXV0 ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAKPiAgCWludGVsX3VwZGF0ZV9jZGNs ayhkZXZfcHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDEx YmIwNzY1MGY4Ny4uNjg4MjJmMDJkZmM2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYwo+IEBAIC0xNTMsMTAgKzE1Myw4IEBAIGludCB2bHZfZ2V0X2hwbGxfdmNvKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCWludCBocGxsX2ZyZXEsIHZjb19mcmVx W10gPSB7IDgwMCwgMTYwMCwgMjAwMCwgMjQwMCB9Owo+ICAKPiAgCS8qIE9idGFpbiBTS1UgaW5m b3JtYXRpb24gKi8KPiAtCXZsdl9jY2tfZ2V0KGRldl9wcml2KTsKPiAgCWhwbGxfZnJlcSA9IHZs dl9jY2tfcmVhZChkZXZfcHJpdiwgQ0NLX0ZVU0VfUkVHKSAmCj4gIAkJQ0NLX0ZVU0VfSFBMTF9G UkVRX01BU0s7Cj4gLQl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gIAo+ICAJcmV0dXJuIHZjb19m cmVxW2hwbGxfZnJlcV0gKiAxMDAwOwo+ICB9Cj4gQEAgLTE2NywxMCArMTY1LDcgQEAgaW50IHZs dl9nZXRfY2NrX2Nsb2NrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCXUz MiB2YWw7Cj4gIAlpbnQgZGl2aWRlcjsKPiAgCj4gLQl2bHZfY2NrX2dldChkZXZfcHJpdik7Cj4g IAl2YWwgPSB2bHZfY2NrX3JlYWQoZGV2X3ByaXYsIHJlZyk7Cj4gLQl2bHZfY2NrX3B1dChkZXZf cHJpdik7Cj4gLQo+ICAJZGl2aWRlciA9IHZhbCAmIENDS19GUkVRVUVOQ1lfVkFMVUVTOwo+ICAK PiAgCVdBUk4oKHZhbCAmIENDS19GUkVRVUVOQ1lfU1RBVFVTKSAhPQo+IEBAIC0xODMsMTEgKzE3 OCwxOCBAQCBpbnQgdmx2X2dldF9jY2tfY2xvY2soc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICBpbnQgdmx2X2dldF9jY2tfY2xvY2tfaHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCj4gIAkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIHUzMiByZWcpCj4gIHsK PiArCWludCBocGxsOwo+ICsKPiArCXZsdl9jY2tfZ2V0KGRldl9wcml2KTsKPiArCj4gIAlpZiAo ZGV2X3ByaXYtPmhwbGxfZnJlcSA9PSAwKQo+ICAJCWRldl9wcml2LT5ocGxsX2ZyZXEgPSB2bHZf Z2V0X2hwbGxfdmNvKGRldl9wcml2KTsKPiAgCj4gLQlyZXR1cm4gdmx2X2dldF9jY2tfY2xvY2so ZGV2X3ByaXYsIG5hbWUsIHJlZywKPiAtCQkJCSBkZXZfcHJpdi0+aHBsbF9mcmVxKTsKPiArCWhw bGwgPSB2bHZfZ2V0X2Nja19jbG9jayhkZXZfcHJpdiwgbmFtZSwgcmVnLCBkZXZfcHJpdi0+aHBs bF9mcmVxKTsKPiArCj4gKwl2bHZfY2NrX3B1dChkZXZfcHJpdik7Cj4gKwo+ICsJcmV0dXJuIGhw bGw7Cj4gIH0KPiAgCj4gIHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9jemNsayhzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3BtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wbS5jCj4gaW5kZXgg NmMyZjQxNmI5NWE2Li45ZGIzOWVhOWJkODMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfcG0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMK PiBAQCAtMzE4LDYgKzMxOCw3IEBAIHN0YXRpYyB2b2lkIGNodl9zZXRfbWVtb3J5X2R2ZnMoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCBib29sIGVuYWJsZSkKPiAgCXUzMiB2YWw7 Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiArCXZsdl9wdW5pdF9n ZXQoZGV2X3ByaXYpOwo+ICAKPiAgCXZhbCA9IHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5J VF9SRUdfRERSX1NFVFVQMik7Cj4gIAlpZiAoZW5hYmxlKQo+IEBAIC0zMzIsNiArMzMzLDcgQEAg c3RhdGljIHZvaWQgY2h2X3NldF9tZW1vcnlfZHZmcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYsIGJvb2wgZW5hYmxlKQo+ICAJCSAgICAgIEZPUkNFX0REUl9GUkVRX1JFUV9BQ0sp ID09IDAsIDMpKQo+ICAJCURSTV9FUlJPUigidGltZWQgb3V0IHdhaXRpbmcgZm9yIFB1bml0IERE UiBEVkZTIHJlcXVlc3RcbiIpOwo+ICAKPiArCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ICAJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICB9Cj4gIAo+IEBAIC0zNDAsNiAr MzQyLDcgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9tZW1vcnlfcG01KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwgYm9vbCBlbmFibGUpCj4gIAl1MzIgdmFsOwo+ICAKPiAgCW11dGV4 X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsK PiAgCj4gIAl2YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUFNTUE0p Owo+ICAJaWYgKGVuYWJsZSkKPiBAQCAtMzQ4LDYgKzM1MSw3IEBAIHN0YXRpYyB2b2lkIGNodl9z ZXRfbWVtb3J5X3BtNShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgZW5h YmxlKQo+ICAJCXZhbCAmPSB+RFNQX01BWEZJRk9fUE01X0VOQUJMRTsKPiAgCXZsdl9wdW5pdF93 cml0ZShkZXZfcHJpdiwgUFVOSVRfUkVHX0RTUFNTUE0sIHZhbCk7Cj4gIAo+ICsJdmx2X3B1bml0 X3B1dChkZXZfcHJpdik7Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4g IH0KPiAgCj4gQEAgLTYxNDAsNiArNjE0NCw3IEBAIHZvaWQgdmx2X3dtX2dldF9od19zdGF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJaWYgKElTX0NIRVJSWVZJ RVcoZGV2X3ByaXYpKSB7Cj4gIAkJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAr CQl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKPiAgCj4gIAkJdmFsID0gdmx2X3B1bml0X3JlYWQo ZGV2X3ByaXYsIFBVTklUX1JFR19EU1BTU1BNKTsKPiAgCQlpZiAodmFsICYgRFNQX01BWEZJRk9f UE01X0VOQUJMRSkKPiBAQCAtNjE2OSw2ICs2MTc0LDcgQEAgdm9pZCB2bHZfd21fZ2V0X2h3X3N0 YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkJCXdtLT5sZXZlbCA9 IFZMVl9XTV9MRVZFTF9ERFJfRFZGUzsKPiAgCQl9Cj4gIAo+ICsJCXZsdl9wdW5pdF9wdXQoZGV2 X3ByaXYpOwo+ICAJCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiAgCX0KPiAg Cj4gQEAgLTY3NDMsNyArNjc0OSw5IEBAIHN0YXRpYyBpbnQgdmFsbGV5dmlld19zZXRfcnBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTggdmFsKQo+ICAJSTkxNV9XUklURShH RU42X1BNSU5UUk1TSywgZ2VuNl9ycHNfcG1fbWFzayhkZXZfcHJpdiwgdmFsKSk7Cj4gIAo+ICAJ aWYgKHZhbCAhPSBkZXZfcHJpdi0+Z3RfcG0ucnBzLmN1cl9mcmVxKSB7Cj4gKwkJdmx2X3B1bml0 X2dldChkZXZfcHJpdik7Cj4gIAkJZXJyID0gdmx2X3B1bml0X3dyaXRlKGRldl9wcml2LCBQVU5J VF9SRUdfR1BVX0ZSRVFfUkVRLCB2YWwpOwo+ICsJCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ ICAJCWlmIChlcnIpCj4gIAkJCXJldHVybiBlcnI7Cj4gIAo+IEBAIC03NzU1LDYgKzc3NjMsMTEg QEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJdmFsbGV5dmlld19zZXR1cF9wY3R4KGRldl9w cml2KTsKPiAgCj4gKwl2bHZfaW9zZl9zYl9nZXQoZGV2X3ByaXYsCj4gKwkJCUJJVChWTFZfSU9T Rl9TQl9QVU5JVCkgfAo+ICsJCQlCSVQoVkxWX0lPU0ZfU0JfTkMpIHwKPiArCQkJQklUKFZMVl9J T1NGX1NCX0NDSykpOwoKVGhlc2UgYXJlIG5vdyByYXRoZXIgZmFyIGZyb20gdGhlIGFjdHVhbCBz aWRlYmFuZCBhY2Nlc3Nlcy4gU2hvdWxkIHdlCnN0b3JlIHRoZSBiaXRtYXNrIHNvbWV3aGVyZSBh bmQgc3ByaW5rbGUgaW4gc29tZSBhc3NlcnRzIGludG8gdGhlCnNpZGViYW5kIGFjY2VzcyBmdW5j cyB0byBjcm9zcyBjaGVjayB0aGUgdHdvPyBOb3QgdGhhdCBpdCByZWFsbHkgbWF0dGVycwpzaW5j ZSBvbmx5IHRoZSBwdW5pdCBiaXQgaGFzIGEgc3BlY2lhbCBtZWFuaW5nLCBhdCBsZWFzdCBmb3Ig bm93LgoKPiArCj4gIAl2bHZfaW5pdF9ncGxsX3JlZl9mcmVxKGRldl9wcml2KTsKPiAgCj4gIAl2 YWwgPSB2bHZfcHVuaXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4g QEAgLTc3OTIsNiArNzgwNSwxMSBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2luaXRfZ3RfcG93 ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCURSTV9ERUJVR19E UklWRVIoIm1pbiBHUFUgZnJlcTogJWQgTUh6ICgldSlcbiIsCj4gIAkJCSBpbnRlbF9ncHVfZnJl cShkZXZfcHJpdiwgcnBzLT5taW5fZnJlcSksCj4gIAkJCSBycHMtPm1pbl9mcmVxKTsKPiArCj4g Kwl2bHZfaW9zZl9zYl9wdXQoZGV2X3ByaXYsCj4gKwkJCUJJVChWTFZfSU9TRl9TQl9QVU5JVCkg fAo+ICsJCQlCSVQoVkxWX0lPU0ZfU0JfTkMpIHwKPiArCQkJQklUKFZMVl9JT1NGX1NCX0NDSykp Owo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiBAQCAtNzgwMSwxMSArNzgxOSwxNCBA QCBzdGF0aWMgdm9pZCBjaGVycnl2aWV3X2luaXRfZ3RfcG93ZXJzYXZlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKPiAgCj4gIAljaGVycnl2aWV3X3NldHVwX3BjdHgoZGV2X3By aXYpOwo+ICAKPiArCXZsdl9pb3NmX3NiX2dldChkZXZfcHJpdiwKPiArCQkJQklUKFZMVl9JT1NG X1NCX1BVTklUKSB8Cj4gKwkJCUJJVChWTFZfSU9TRl9TQl9OQykgfAoKSUlSQyBDSFYgZG9lc24n dCBhY2Nlc3MgTkMgaGVyZS4KCldpdGggdGhhdCBzb3J0ZWQKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5 cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cgo+ICsJCQlCSVQoVkxWX0lP U0ZfU0JfQ0NLKSk7Cj4gKwo+ICAJdmx2X2luaXRfZ3BsbF9yZWZfZnJlcShkZXZfcHJpdik7Cj4g IAo+IC0Jdmx2X2Nja19nZXQoZGV2X3ByaXYpOwo+ICAJdmFsID0gdmx2X2Nja19yZWFkKGRldl9w cml2LCBDQ0tfRlVTRV9SRUcpOwo+IC0Jdmx2X2Nja19wdXQoZGV2X3ByaXYpOwo+ICAKPiAgCXN3 aXRjaCAoKHZhbCA+PiAyKSAmIDB4Nykgewo+ICAJY2FzZSAzOgo+IEBAIC03ODM4LDYgKzc4NTks MTEgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmlld19pbml0X2d0X3Bvd2Vyc2F2ZShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAkJCSBpbnRlbF9ncHVfZnJlcShkZXZfcHJpdiwg cnBzLT5taW5fZnJlcSksCj4gIAkJCSBycHMtPm1pbl9mcmVxKTsKPiAgCj4gKwl2bHZfaW9zZl9z Yl9wdXQoZGV2X3ByaXYsCj4gKwkJCUJJVChWTFZfSU9TRl9TQl9QVU5JVCkgfAo+ICsJCQlCSVQo VkxWX0lPU0ZfU0JfTkMpIHwKPiArCQkJQklUKFZMVl9JT1NGX1NCX0NDSykpOwo+ICsKPiAgCVdB Uk5fT05DRSgocnBzLT5tYXhfZnJlcSB8IHJwcy0+ZWZmaWNpZW50X2ZyZXEgfCBycHMtPnJwMV9m cmVxIHwKPiAgCQkgICBycHMtPm1pbl9mcmVxKSAmIDEsCj4gIAkJICAiT2RkIEdQVSBmcmVxIHZh bHVlc1xuIik7Cj4gQEAgLTc5MjUsMTMgKzc5NTEsMTUgQEAgc3RhdGljIHZvaWQgY2hlcnJ5dmll d19lbmFibGVfcnBzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkgICBH RU42X1JQX0RPV05fSURMRV9BVkcpOwo+ICAKPiAgCS8qIFNldHRpbmcgRml4ZWQgQmlhcyAqLwo+ IC0JdmFsID0gVkxWX09WRVJSSURFX0VOIHwKPiAtCQkgIFZMVl9TT0NfVERQX0VOIHwKPiAtCQkg IENIVl9CSUFTX0NQVV81MF9TT0NfNTA7Cj4gKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKPiAr Cj4gKwl2YWwgPSBWTFZfT1ZFUlJJREVfRU4gfCBWTFZfU09DX1REUF9FTiB8IENIVl9CSUFTX0NQ VV81MF9TT0NfNTA7Cj4gIAl2bHZfcHVuaXRfd3JpdGUoZGV2X3ByaXYsIFZMVl9UVVJCT19TT0Nf T1ZFUlJJREUsIHZhbCk7Cj4gIAo+ICAJdmFsID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBV TklUX1JFR19HUFVfRlJFUV9TVFMpOwo+ICAKPiArCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ ICsKPiAgCS8qIFJQUyBjb2RlIGFzc3VtZXMgR1BMTCBpcyB1c2VkICovCj4gIAlXQVJOX09OQ0Uo KHZhbCAmIEdQTExFTkFCTEUpID09IDAsICJHUExMIG5vdCBlbmFibGVkXG4iKTsKPiAgCj4gQEAg LTgwMDgsMTQgKzgwMzYsMTYgQEAgc3RhdGljIHZvaWQgdmFsbGV5dmlld19lbmFibGVfcnBzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCQkgICBHRU42X1JQX1VQX0JVU1lf QVZHIHwKPiAgCQkgICBHRU42X1JQX0RPV05fSURMRV9DT05UKTsKPiAgCj4gKwl2bHZfcHVuaXRf Z2V0KGRldl9wcml2KTsKPiArCj4gIAkvKiBTZXR0aW5nIEZpeGVkIEJpYXMgKi8KPiAtCXZhbCA9 IFZMVl9PVkVSUklERV9FTiB8Cj4gLQkJICBWTFZfU09DX1REUF9FTiB8Cj4gLQkJICBWTFZfQklB U19DUFVfMTI1X1NPQ184NzU7Cj4gKwl2YWwgPSBWTFZfT1ZFUlJJREVfRU4gfCBWTFZfU09DX1RE UF9FTiB8IFZMVl9CSUFTX0NQVV8xMjVfU09DXzg3NTsKPiAgCXZsdl9wdW5pdF93cml0ZShkZXZf cHJpdiwgVkxWX1RVUkJPX1NPQ19PVkVSUklERSwgdmFsKTsKPiAgCj4gIAl2YWwgPSB2bHZfcHVu aXRfcmVhZChkZXZfcHJpdiwgUFVOSVRfUkVHX0dQVV9GUkVRX1NUUyk7Cj4gIAo+ICsJdmx2X3B1 bml0X3B1dChkZXZfcHJpdik7Cj4gKwo+ICAJLyogUlBTIGNvZGUgYXNzdW1lcyBHUExMIGlzIHVz ZWQgKi8KPiAgCVdBUk5fT05DRSgodmFsICYgR1BMTEVOQUJMRSkgPT0gMCwgIkdQTEwgbm90IGVu YWJsZWRcbiIpOwo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4g aW5kZXggOWMxMjk0YzI5NTY2Li5hYzhiYzViYWVmNDAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcnVudGltZV9wbS5jCj4gQEAgLTEyMTIsNiArMTIxMiw3IEBAIHN0YXRpYyB2b2lk IHZsdl9zZXRfcG93ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4g IAkJCSBQVU5JVF9QV1JHVF9QV1JfR0FURShwd19pZHgpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRl dl9wcml2LT5wY3VfbG9jayk7Cj4gKwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKPiAgCj4gICNk ZWZpbmUgQ09ORCBcCj4gIAkoKHZsdl9wdW5pdF9yZWFkKGRldl9wcml2LCBQVU5JVF9SRUdfUFdS R1RfU1RBVFVTKSAmIG1hc2spID09IHN0YXRlKQo+IEBAIC0xMjMyLDYgKzEyMzMsNyBAQCBzdGF0 aWMgdm9pZCB2bHZfc2V0X3Bvd2VyX3dlbGwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2LAo+ICAjdW5kZWYgQ09ORAo+ICAKPiAgb3V0Ogo+ICsJdmx2X3B1bml0X3B1dChkZXZfcHJp dik7Cj4gIAltdXRleF91bmxvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIH0KPiAgCj4gQEAg LTEyNjAsNiArMTI2Miw3IEBAIHN0YXRpYyBib29sIHZsdl9wb3dlcl93ZWxsX2VuYWJsZWQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJY3RybCA9IFBVTklUX1BXUkdUX1BX Ul9PTihwd19pZHgpOwo+ICAKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4g Kwl2bHZfcHVuaXRfZ2V0KGRldl9wcml2KTsKPiAgCj4gIAlzdGF0ZSA9IHZsdl9wdW5pdF9yZWFk KGRldl9wcml2LCBQVU5JVF9SRUdfUFdSR1RfU1RBVFVTKSAmIG1hc2s7Cj4gIAkvKgo+IEBAIC0x Mjc4LDYgKzEyODEsNyBAQCBzdGF0aWMgYm9vbCB2bHZfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWN0cmwgPSB2bHZfcHVuaXRfcmVhZChk ZXZfcHJpdiwgUFVOSVRfUkVHX1BXUkdUX0NUUkwpICYgbWFzazsKPiAgCVdBUk5fT04oY3RybCAh PSBzdGF0ZSk7Cj4gIAo+ICsJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7Cj4gIAltdXRleF91bmxv Y2soJmRldl9wcml2LT5wY3VfbG9jayk7Cj4gIAo+ICAJcmV0dXJuIGVuYWJsZWQ7Cj4gQEAgLTE3 NjUsNiArMTc2OSw3IEBAIHN0YXRpYyBib29sIGNodl9waXBlX3Bvd2VyX3dlbGxfZW5hYmxlZChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAl1MzIgc3RhdGUsIGN0cmw7Cj4g IAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiArCXZsdl9wdW5pdF9nZXQo ZGV2X3ByaXYpOwo+ICAKPiAgCXN0YXRlID0gdmx2X3B1bml0X3JlYWQoZGV2X3ByaXYsIFBVTklU X1JFR19EU1BTU1BNKSAmIERQX1NTU19NQVNLKHBpcGUpOwo+ICAJLyoKPiBAQCAtMTc4MSw2ICsx Nzg2LDcgQEAgc3RhdGljIGJvb2wgY2h2X3BpcGVfcG93ZXJfd2VsbF9lbmFibGVkKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgCWN0cmwgPSB2bHZfcHVuaXRfcmVhZChkZXZf cHJpdiwgUFVOSVRfUkVHX0RTUFNTUE0pICYgRFBfU1NDX01BU0socGlwZSk7Cj4gIAlXQVJOX09O KGN0cmwgPDwgMTYgIT0gc3RhdGUpOwo+ICAKPiArCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ ICAJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAKPiAgCXJldHVybiBlbmFi bGVkOwo+IEBAIC0xNzk3LDYgKzE4MDMsNyBAQCBzdGF0aWMgdm9pZCBjaHZfc2V0X3BpcGVfcG93 ZXJfd2VsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAlzdGF0ZSA9IGVu YWJsZSA/IERQX1NTU19QV1JfT04ocGlwZSkgOiBEUF9TU1NfUFdSX0dBVEUocGlwZSk7Cj4gIAo+ ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBjdV9sb2NrKTsKPiArCXZsdl9wdW5pdF9nZXQoZGV2 X3ByaXYpOwo+ICAKPiAgI2RlZmluZSBDT05EIFwKPiAgCSgodmx2X3B1bml0X3JlYWQoZGV2X3By aXYsIFBVTklUX1JFR19EU1BTU1BNKSAmIERQX1NTU19NQVNLKHBpcGUpKSA9PSBzdGF0ZSkKPiBA QCAtMTgxNyw2ICsxODI0LDcgQEAgc3RhdGljIHZvaWQgY2h2X3NldF9waXBlX3Bvd2VyX3dlbGwo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAjdW5kZWYgQ09ORAo+ICAKPiAg b3V0Ogo+ICsJdmx2X3B1bml0X3B1dChkZXZfcHJpdik7Cj4gIAltdXRleF91bmxvY2soJmRldl9w cml2LT5wY3VfbG9jayk7Cj4gIH0KPiAgCj4gQEAgLTQwMTIsNyArNDAyMCw5IEBAIHN0YXRpYyBi b29sIHZsdl9wdW5pdF9pc19wb3dlcl9nYXRlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYsIHUzMiByZWcwCj4gIAlib29sIHJldDsKPiAgCj4gIAltdXRleF9sb2NrKCZkZXZfcHJp di0+cGN1X2xvY2spOwo+ICsJdmx2X3B1bml0X2dldChkZXZfcHJpdik7Cj4gIAlyZXQgPSAodmx2 X3B1bml0X3JlYWQoZGV2X3ByaXYsIHJlZzApICYgU1NQTTBfU1NDX01BU0spID09IFNTUE0wX1NT Q19QV1JfR0FURTsKPiArCXZsdl9wdW5pdF9wdXQoZGV2X3ByaXYpOwo+ICAJbXV0ZXhfdW5sb2Nr KCZkZXZfcHJpdi0+cGN1X2xvY2spOwo+ICAKPiAgCXJldHVybiByZXQ7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9zaWRlYmFuZC5jCj4gaW5kZXggYjJmYzYwNWUyZTI5Li43YzMzOTI1ZjUyZjkg MTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc2lkZWJhbmQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3NpZGViYW5kLmMKPiBAQCAtMTQ1LDMwICsx NDUsMTggQEAgdTMyIHZsdl9wdW5pdF9yZWFkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 LCB1MzIgYWRkcikKPiAgCj4gIAlsb2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5wY3VfbG9jayk7 Cj4gIAo+IC0Jdmx2X3B1bml0X2dldChpOTE1KTsKPiAtCj4gIAl2bHZfc2lkZWJhbmRfcncoaTkx NSwgUENJX0RFVkZOKDAsIDApLCBJT1NGX1BPUlRfUFVOSVQsCj4gIAkJCVNCX0NSUkREQV9OUCwg YWRkciwgJnZhbCk7Cj4gIAo+IC0Jdmx2X3B1bml0X3B1dChpOTE1KTsKPiAtCj4gIAlyZXR1cm4g dmFsOwo+ICB9Cj4gIAo+ICBpbnQgdmx2X3B1bml0X3dyaXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1LCB1MzIgYWRkciwgdTMyIHZhbCkKPiAgewo+IC0JaW50IGVycjsKPiAtCj4gIAls b2NrZGVwX2Fzc2VydF9oZWxkKCZpOTE1LT5wY3VfbG9jayk7Cj4gIAo+IC0Jdmx2X3B1bml0X2dl dChpOTE1KTsKPiAtCj4gLQllcnIgPSB2bHZfc2lkZWJhbmRfcncoaTkxNSwgUENJX0RFVkZOKDAs IDApLCBJT1NGX1BPUlRfUFVOSVQsCj4gLQkJCSAgICAgIFNCX0NSV1JEQV9OUCwgYWRkciwgJnZh bCk7Cj4gLQo+IC0Jdmx2X3B1bml0X3B1dChpOTE1KTsKPiAtCj4gLQlyZXR1cm4gZXJyOwo+ICsJ cmV0dXJuIHZsdl9zaWRlYmFuZF9ydyhpOTE1LCBQQ0lfREVWRk4oMCwgMCksIElPU0ZfUE9SVF9Q VU5JVCwKPiArCQkJICAgICAgIFNCX0NSV1JEQV9OUCwgYWRkciwgJnZhbCk7Cj4gIH0KPiAgCj4g IHUzMiB2bHZfYnVuaXRfcmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwgdTMyIHJl ZykKPiBAQCAtMTkxLDEwICsxNzksOCBAQCB1MzIgdmx2X25jX3JlYWQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUsIHU4IGFkZHIpCj4gIHsKPiAgCXUzMiB2YWwgPSAwOwo+ICAKPiAtCXZs dl9uY19nZXQoaTkxNSk7Cj4gIAl2bHZfc2lkZWJhbmRfcncoaTkxNSwgUENJX0RFVkZOKDAsIDAp LCBJT1NGX1BPUlRfTkMsCj4gIAkJCVNCX0NSUkREQV9OUCwgYWRkciwgJnZhbCk7Cj4gLQl2bHZf bmNfcHV0KGk5MTUpOwo+ICAKPiAgCXJldHVybiB2YWw7Cj4gIH0KPiAtLSAKPiAyLjIwLjEKPiAK PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVs LWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngKCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4