From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 4/6] drm/i915: Record the default hw state after reset upon load Date: Thu, 02 Nov 2017 15:56:50 +0200 Message-ID: <87mv44eqcd.fsf@gaia.fi.intel.com> References: <20171102124226.30086-1-chris@chris-wilson.co.uk> <20171102124226.30086-5-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id C5ACC6E915 for ; Thu, 2 Nov 2017 13:57:15 +0000 (UTC) In-Reply-To: <20171102124226.30086-5-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+IHdyaXRlczoKCj4gVGFrZSBh IGNvcHkgb2YgdGhlIEhXIHN0YXRlIGFmdGVyIGEgcmVzZXQgdXBvbiBtb2R1bGUgbG9hZGluZyBi eQo+IGV4ZWN1dGluZyBhIGNvbnRleHQgc3dpdGNoIGZyb20gYSBibGFuayBjb250ZXh0IHRvIHRo ZSBrZXJuZWwgY29udGV4dCwKPiB0aHVzIHNhdmluZyB0aGUgZGVmYXVsdCBodyBzdGF0ZSBvdmVy IHRoZSBibGFuayBjb250ZXh0IGltYWdlLgo+IFdlIGNhbiB0aGVuIHVzZSB0aGUgZGVmYXVsdCBo dyBzdGF0ZSB0byBpbml0aWFsaXNlIGFueSBmdXR1cmUgY29udGV4dCwKPiBlbnN1cmluZyB0aGF0 IGVhY2ggc3RhcnRzIHdpdGggdGhlIGRlZmF1bHQgdmlldyBvZiBodyBzdGF0ZS4KPgo+IFNpZ25l ZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+IC0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvc2NoZWR1bGVyLmMgICAgfCAgMiAtCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICB8ICAxIC0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyB8IDUw ICsrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9jb250ZXh0LmggfCAgNCArLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVf Y3MuYyAgfCAgMyArKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyAgICAgICAg fCAzNSArKysrKysrKysrLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9yaW5n YnVmZmVyLmMgfCA0NyArKysrKysrKysrKysrKystLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuaCB8ICAxICsKPiAgOSBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5z ZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVk dWxlci5jCj4gaW5kZXggZjZkZWQ0NzViYjJjLi40MmNjNjEyMzBjYTcgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L3NjaGVkdWxlci5jCj4gQEAgLTcyMyw4ICs3MjMsNiBAQCBpbnQgaW50ZWxf dmdwdV9pbml0X2d2dF9jb250ZXh0KHN0cnVjdCBpbnRlbF92Z3B1ICp2Z3B1KQo+ICAJaWYgKElT X0VSUih2Z3B1LT5zaGFkb3dfY3R4KSkKPiAgCQlyZXR1cm4gUFRSX0VSUih2Z3B1LT5zaGFkb3df Y3R4KTsKPiAgCj4gLQl2Z3B1LT5zaGFkb3dfY3R4LT5lbmdpbmVbUkNTXS5pbml0aWFsaXNlZCA9 IHRydWU7Cj4gLQo+ICAJYml0bWFwX3plcm8odmdwdS0+c2hhZG93X2N0eF9kZXNjX3VwZGF0ZWQs IEk5MTVfTlVNX0VOR0lORVMpOwo+ICAKPiAgCXJldHVybiAwOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZGVidWdmcy5jCj4gaW5kZXggMzk4ODNjZDkxNWRiLi5jZmNlZjE4OTlkYTggMTAwNjQ0Cj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IEBAIC0xOTc0LDcgKzE5NzQsNiBAQCBzdGF0 aWMgaW50IGk5MTVfY29udGV4dF9zdGF0dXMoc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVz ZWQpCj4gIAkJCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZjdHgtPmVuZ2luZVtlbmdpbmUt PmlkXTsKPiAgCj4gIAkJCXNlcV9wcmludGYobSwgIiVzOiAiLCBlbmdpbmUtPm5hbWUpOwo+IC0J CQlzZXFfcHV0YyhtLCBjZS0+aW5pdGlhbGlzZWQgPyAnSScgOiAnaScpOwo+ICAJCQlpZiAoY2Ut PnN0YXRlKQo+ICAJCQkJZGVzY3JpYmVfb2JqKG0sIGNlLT5zdGF0ZS0+b2JqKTsKPiAgCQkJaWYg KGNlLT5yaW5nKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IGUzNmEzYTg0MDU1Mi4u ZWQ0YjE3MDhmZWM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTQ5NjcsNiAr NDk2Nyw3MSBAQCBib29sIGludGVsX3Nhbml0aXplX3NlbWFwaG9yZXMoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LCBpbnQgdmFsdWUpCj4gIAlyZXR1cm4gdHJ1ZTsKPiAgfQo+ICAK PiArc3RhdGljIGludCBfX2ludGVsX2VuZ2luZXNfcmVjb3JkX2RlZmF1bHRzKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICppOTE1KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 Owo+ICsJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwo+ICsJZW51bSBpbnRlbF9lbmdp bmVfaWQgaWQ7Cj4gKwlpbnQgZXJyOwo+ICsKPiArCS8qCj4gKwkgKiBBcyB3ZSByZXNldCB0aGUg Z3B1IGR1cmluZyB2ZXJ5IGVhcmx5IHNhbml0aXNhdGlvbiwgdGhlIGN1cnJlbnQKPiArCSAqIHJl Z2lzdGVyIHN0YXRlIG9uIHRoZSBHUFUgc2hvdWxkIHJlZmxlY3QgaXRzIGRlZmF1bHRzIHZhbHVl cy4KPiArCSAqIFdlIGxvYWQgYSBjb250ZXh0IG9udG8gdGhlIGh3ICh3aXRoIHJlc3RvcmUtaW5o aWJpdCksIHRoZW4gc3dpdGNoCj4gKwkgKiBvdmVyIHRvIGEgc2Vjb25kIGNvbnRleHQgdG8gc2F2 ZSB0aGF0IGRlZmF1bHQgcmVnaXN0ZXIgc3RhdGUuIFdlCj4gKwkgKiBjYW4gdGhlbiBwcmltZSBl dmVyeSBuZXcgY29udGV4dCB3aXRoIHRoYXQgc3RhdGUgc28gdGhleSBhbGwgc3RhcnQKPiArCSAq IGZyb20gZGVmYXVsdHMuCj4gKwkgKi8KPiArCj4gKwljdHggPSBpOTE1X2dlbV9jb250ZXh0X2Ny ZWF0ZV9rZXJuZWwoaTkxNSwgMCk7Cj4gKwlpZiAoSVNfRVJSKGN0eCkpCj4gKwkJcmV0dXJuIFBU Ul9FUlIoY3R4KTsKPiArCj4gKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgewo+ ICsJCXN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcnE7Cj4gKwo+ICsJCXJxID0gaTkxNV9n ZW1fcmVxdWVzdF9hbGxvYyhlbmdpbmUsIGN0eCk7Cj4gKwkJaWYgKElTX0VSUihycSkpIHsKPiAr CQkJZXJyID0gUFRSX0VSUihycSk7Cj4gKwkJCWdvdG8gb3V0X2N0eDsKPiArCQl9Cj4gKwo+ICsJ CWVyciA9IGk5MTVfc3dpdGNoX2NvbnRleHQocnEpOwo+ICsJCWlmIChlbmdpbmUtPmluaXRfY29u dGV4dCkKPiArCQkJZXJyID0gZW5naW5lLT5pbml0X2NvbnRleHQocnEpOwo+ICsKPiArCQlfX2k5 MTVfYWRkX3JlcXVlc3QocnEsIHRydWUpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8gb3V0X2N0 eDsKPiArCX0KPiArCj4gKwllcnIgPSBpOTE1X2dlbV9zd2l0Y2hfdG9fa2VybmVsX2NvbnRleHQo aTkxNSk7Cj4gKwlpZiAoZXJyKQo+ICsJCWdvdG8gb3V0X2N0eDsKPiArCj4gKwllcnIgPSBpOTE1 X2dlbV93YWl0X2Zvcl9pZGxlKGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+ICsJaWYgKGVycikK PiArCQlnb3RvIG91dF9jdHg7Cj4gKwo+ICsJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwg aWQpIHsKPiArCQlpZiAoIWN0eC0+ZW5naW5lW2lkXS5zdGF0ZSkKPiArCQkJY29udGludWU7Cj4g Kwo+ICsJCWVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSA9Cj4gKwkJCWk5MTVfZ2VtX29iamVjdF9nZXQo Y3R4LT5lbmdpbmVbaWRdLnN0YXRlLT5vYmopOwo+ICsKPiArCQllcnIgPSBpOTE1X2dlbV9vYmpl Y3Rfc2V0X3RvX2NwdV9kb21haW4oZW5naW5lLT5kZWZhdWx0X3N0YXRlLAo+ICsJCQkJCQkJZmFs c2UpOwo+ICsJCWlmIChlcnIpCj4gKwkJCWdvdG8gb3V0X2N0eDsKPiArCX0KPiArCj4gK291dF9j dHg6Cj4gKwlpOTE1X2dlbV9jb250ZXh0X3NldF9jbG9zZWQoY3R4KTsKPiArCWk5MTVfZ2VtX2Nv bnRleHRfcHV0KGN0eCk7Cj4gKwlyZXR1cm4gZXJyOwo+ICt9Cj4gKwo+ICBpbnQgaTkxNV9nZW1f aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCWludCByZXQ7 Cj4gQEAgLTUwMjIsNiArNTA4NywxMCBAQCBpbnQgaTkxNV9nZW1faW5pdChzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAo+ICAJaW50ZWxfaW5pdF9ndF9wb3dlcnNhdmUoZGV2 X3ByaXYpOwo+ICAKPiArCXJldCA9IF9faW50ZWxfZW5naW5lc19yZWNvcmRfZGVmYXVsdHMoZGV2 X3ByaXYpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIG91dF91bmxvY2s7Cj4gKwo+ICBvdXRfdW5s b2NrOgo+ICAJaWYgKHJldCA9PSAtRUlPKSB7Cj4gIAkJLyogQWxsb3cgZW5naW5lIGluaXRpYWxp c2F0aW9uIHRvIGZhaWwgYnkgbWFya2luZyB0aGUgR1BVIGFzCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDEwYWZmYjM1YWM1Ni4uNDk5Y2MwZjI1NjUzIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0zNDMsNyAr MzQzLDcgQEAgc3RhdGljIHZvaWQgX19kZXN0cm95X2h3X2NvbnRleHQoc3RydWN0IGk5MTVfZ2Vt X2NvbnRleHQgKmN0eCwKPiAgICogY29udGV4dCBzdGF0ZSBvZiB0aGUgR1BVIGZvciBhcHBsaWNh dGlvbnMgdGhhdCBkb24ndCB1dGlsaXplIEhXIGNvbnRleHRzLCBhcwo+ICAgKiB3ZWxsIGFzIGFu IGlkbGUgY2FzZS4KPiAgICovCj4gLXN0YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCj4g K3N0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiAgaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQlzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmaWxlX3ByaXYpCj4gIHsKPiBAQCAtNDE4LDggKzQxOCw4IEBAIGk5MTVfZ2Vt X2NvbnRleHRfY3JlYXRlX2d2dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJcmV0dXJuIGN0 eDsKPiAgfQo+ICAKPiAtc3RhdGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKPiAtY3JlYXRl X2tlcm5lbF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1LCBpbnQgcHJpbykK PiArc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICtpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9r ZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKQo+ICB7Cj4gIAlz dHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owo+ICAKPiBAQCAtNDczLDcgKzQ3Myw3IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0c19pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgCWlkYV9pbml0KCZkZXZfcHJpdi0+Y29udGV4dHMuaHdfaWRhKTsKPiAgCj4gIAkvKiBs b3dlc3QgcHJpb3JpdHk7IGlkbGUgdGFzayAqLwo+IC0JY3R4ID0gY3JlYXRlX2tlcm5lbF9jb250 ZXh0KGRldl9wcml2LCBJOTE1X1BSSU9SSVRZX01JTik7Cj4gKwljdHggPSBpOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV9rZXJuZWwoZGV2X3ByaXYsIEk5MTVfUFJJT1JJVFlfTUlOKTsKPiAgCWlmIChJ U19FUlIoY3R4KSkgewo+ICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkZWZhdWx0IGds b2JhbCBjb250ZXh0XG4iKTsKPiAgCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gQEAgLTQ4Nyw3ICs0 ODcsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dHNfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gIAlkZXZfcHJpdi0+a2VybmVsX2NvbnRleHQgPSBjdHg7Cj4gIAo+ICAJ LyogaGlnaGVzdCBwcmlvcml0eTsgcHJlZW1wdGluZyB0YXNrICovCj4gLQljdHggPSBjcmVhdGVf a2VybmVsX2NvbnRleHQoZGV2X3ByaXYsIElOVF9NQVgpOwo+ICsJY3R4ID0gaTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfa2VybmVsKGRldl9wcml2LCBJTlRfTUFYKTsKPiAgCWlmIChJU19FUlIoY3R4 KSkgewo+ICAJCURSTV9FUlJPUigiRmFpbGVkIHRvIGNyZWF0ZSBkZWZhdWx0IHByZWVtcHQgY29u dGV4dFxuIik7Cj4gIAkJZXJyID0gUFRSX0VSUihjdHgpOwo+IEBAIC01MjIsMjggKzUyMiw2IEBA IHZvaWQgaTkxNV9nZW1fY29udGV4dHNfbG9zdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gIAkJZW5naW5lLT5jb250ZXh0X3VucGluKGVuZ2luZSwgZW5naW5lLT5sYXN0X3Jl dGlyZWRfY29udGV4dCk7Cj4gIAkJZW5naW5lLT5sYXN0X3JldGlyZWRfY29udGV4dCA9IE5VTEw7 Cj4gIAl9Cj4gLQo+IC0JLyogRm9yY2UgdGhlIEdQVSBzdGF0ZSB0byBiZSByZXN0b3JlZCBvbiBl bmFibGluZyAqLwo+IC0JaWYgKCFpOTE1X21vZHBhcmFtcy5lbmFibGVfZXhlY2xpc3RzKSB7Cj4g LQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKPiAtCj4gLQkJbGlzdF9mb3JfZWFjaF9l bnRyeShjdHgsICZkZXZfcHJpdi0+Y29udGV4dHMubGlzdCwgbGluaykgewo+IC0JCQlpZiAoIWk5 MTVfZ2VtX2NvbnRleHRfaXNfZGVmYXVsdChjdHgpKQo+IC0JCQkJY29udGludWU7Cj4gLQo+IC0J CQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdiwgaWQpCj4gLQkJCQljdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXS5pbml0aWFsaXNlZCA9IGZhbHNlOwo+IC0KPiAtCQkJY3R4LT5yZW1hcF9z bGljZSA9IEFMTF9MM19TTElDRVMoZGV2X3ByaXYpOwo+IC0JCX0KPiAtCj4gLQkJZm9yX2VhY2hf ZW5naW5lKGVuZ2luZSwgZGV2X3ByaXYsIGlkKSB7Cj4gLQkJCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICprY2UgPQo+IC0JCQkJJmRldl9wcml2LT5rZXJuZWxfY29udGV4dC0+ZW5naW5lW2VuZ2luZS0+ aWRdOwo+IC0KPiAtCQkJa2NlLT5pbml0aWFsaXNlZCA9IHRydWU7Cj4gLQkJfQo+IC0JfQo+ICB9 Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX2NvbnRleHRzX2Zpbmkoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCj4gQEAgLTcxOCw5ICs2OTYsNiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2tpcF9y Y3Nfc3dpdGNoKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCwKPiAgCWlmICh0by0+cmVtYXBf c2xpY2UpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlmICghdG8tPmVuZ2luZVtSQ1NdLmlu aXRpYWxpc2VkKQo+IC0JCXJldHVybiBmYWxzZTsKPiAtCj4gIAlpZiAocHBndHQgJiYgKGludGVs X2VuZ2luZV9mbGFnKGVuZ2luZSkgJiBwcGd0dC0+cGRfZGlydHlfcmluZ3MpKQo+ICAJCXJldHVy biBmYWxzZTsKPiAgCj4gQEAgLTc5NSwxMSArNzcwLDcgQEAgc3RhdGljIGludCBkb19yY3Nfc3dp dGNoKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+ICAJCQlyZXR1cm4gcmV0Owo+ ICAJfQo+ICAKPiAtCWlmICghdG8tPmVuZ2luZVtSQ1NdLmluaXRpYWxpc2VkIHx8IGk5MTVfZ2Vt X2NvbnRleHRfaXNfZGVmYXVsdCh0bykpCj4gLQkJLyogTkI6IElmIHdlIGluaGliaXQgdGhlIHJl c3RvcmUsIHRoZSBjb250ZXh0IGlzIG5vdCBhbGxvd2VkIHRvCj4gLQkJICogZGllIGJlY2F1c2Ug ZnV0dXJlIHdvcmsgbWF5IGVuZCB1cCBkZXBlbmRpbmcgb24gdmFsaWQgYWRkcmVzcwo+IC0JCSAq IHNwYWNlLiBUaGlzIG1lYW5zIHdlIG11c3QgZW5mb3JjZSB0aGF0IGEgcGFnZSB0YWJsZSBsb2Fk Cj4gLQkJICogb2NjdXIgd2hlbiB0aGlzIG9jY3Vycy4gKi8KPiArCWlmIChpOTE1X2dlbV9jb250 ZXh0X2lzX2tlcm5lbCh0bykpCj4gIAkJaHdfZmxhZ3MgPSBNSV9SRVNUT1JFX0lOSElCSVQ7Cj4g IAllbHNlIGlmIChwcGd0dCAmJiBpbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpICYgcHBndHQtPnBk X2RpcnR5X3JpbmdzKQo+ICAJCWh3X2ZsYWdzID0gTUlfRk9SQ0VfUkVTVE9SRTsKPiBAQCAtODQz LDE1ICs4MTQsNiBAQCBzdGF0aWMgaW50IGRvX3Jjc19zd2l0Y2goc3RydWN0IGRybV9pOTE1X2dl bV9yZXF1ZXN0ICpyZXEpCj4gIAkJdG8tPnJlbWFwX3NsaWNlICY9IH4oMTw8aSk7Cj4gIAl9Cj4g IAo+IC0JaWYgKCF0by0+ZW5naW5lW1JDU10uaW5pdGlhbGlzZWQpIHsKPiAtCQlpZiAoZW5naW5l LT5pbml0X2NvbnRleHQpIHsKPiAtCQkJcmV0ID0gZW5naW5lLT5pbml0X2NvbnRleHQocmVxKTsK PiAtCQkJaWYgKHJldCkKPiAtCQkJCXJldHVybiByZXQ7Cj4gLQkJfQo+IC0JCXRvLT5lbmdpbmVb UkNTXS5pbml0aWFsaXNlZCA9IHRydWU7Cj4gLQl9Cj4gLQo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAo+IGluZGV4IDQ0Njg4ZTIy YTVjMi4uNGJmYjcyZjhlMWNiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuaAo+IEBAIC0xNTcsNyArMTU3LDYgQEAgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgewo+ ICAJCXUzMiAqbHJjX3JlZ19zdGF0ZTsKPiAgCQl1NjQgbHJjX2Rlc2M7Cj4gIAkJaW50IHBpbl9j b3VudDsKPiAtCQlib29sIGluaXRpYWxpc2VkOwo+ICAJfSBlbmdpbmVbSTkxNV9OVU1fRU5HSU5F U107Cj4gIAo+ICAJLyoqIHJpbmdfc2l6ZTogc2l6ZSBmb3IgYWxsb2NhdGluZyB0aGUgcGVyLWVu Z2luZSByaW5nIGJ1ZmZlciAqLwo+IEBAIC0yOTIsNiArMjkxLDkgQEAgaW50IGk5MTVfZ2VtX2Nv bnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwK PiAgaW50IGk5MTVfZ2VtX2NvbnRleHRfcmVzZXRfc3RhdHNfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKPiAgCQkJCSAgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp Owo+ICAKPiArc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICtpOTE1X2dlbV9jb250ZXh0X2Ny ZWF0ZV9rZXJuZWwoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGludCBwcmlvKTsKPiAr Cj4gIHN0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgo+ICBpOTE1X2dlbV9j b250ZXh0X2dldChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4KQo+ICB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZW5naW5lX2NzLmMKPiBpbmRleCBjMTVlMjg4YmVkMDIuLjZiODUxOTQw MWQ0ZCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9lbmdpbmVfY3Mu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2VuZ2luZV9jcy5jCj4gQEAgLTY3 OSw2ICs2NzksOSBAQCB2b2lkIGludGVsX2VuZ2luZV9jbGVhbnVwX2NvbW1vbihzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIAlpbnRlbF9lbmdpbmVfY2xlYW51cF9jbWRfcGFyc2Vy KGVuZ2luZSk7Cj4gIAlpOTE1X2dlbV9iYXRjaF9wb29sX2ZpbmkoJmVuZ2luZS0+YmF0Y2hfcG9v bCk7Cj4gIAo+ICsJaWYgKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkKPiArCQlpOTE1X2dlbV9vYmpl Y3RfcHV0KGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSk7Cj4gKwo+ICAJaWYgKEhBU19MT0dJQ0FMX1JJ TkdfUFJFRU1QVElPTihlbmdpbmUtPmk5MTUpKQo+ICAJCWVuZ2luZS0+Y29udGV4dF91bnBpbihl bmdpbmUsIGVuZ2luZS0+aTkxNS0+cHJlZW1wdF9jb250ZXh0KTsKPiAgCWVuZ2luZS0+Y29udGV4 dF91bnBpbihlbmdpbmUsIGVuZ2luZS0+aTkxNS0+a2VybmVsX2NvbnRleHQpOwo+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gaW5kZXggNjg0MGVjOGRiMDM3Li4yOTdjZTAzMjcyNzMgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IEBAIC0xMTQ3LDcgKzExNDcsNiBAQCBzdGF0aWMg aW50IGV4ZWNsaXN0c19yZXF1ZXN0X2FsbG9jKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAq cmVxdWVzdCkKPiAgCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJlcXVlc3QtPmVu Z2luZTsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9ICZyZXF1ZXN0LT5jdHgtPmVuZ2lu ZVtlbmdpbmUtPmlkXTsKPiAgCXUzMiAqY3M7Cj4gLQlpbnQgcmV0Owo+ICAKPiAgCUdFTV9CVUdf T04oIWNlLT5waW5fY291bnQpOwo+ICAKPiBAQCAtMTE2MSwxNCArMTE2MCw2IEBAIHN0YXRpYyBp bnQgZXhlY2xpc3RzX3JlcXVlc3RfYWxsb2Moc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpy ZXF1ZXN0KQo+ICAJaWYgKElTX0VSUihjcykpCj4gIAkJcmV0dXJuIFBUUl9FUlIoY3MpOwo+ICAK PiAtCWlmICghY2UtPmluaXRpYWxpc2VkKSB7Cj4gLQkJcmV0ID0gZW5naW5lLT5pbml0X2NvbnRl eHQocmVxdWVzdCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCj4gLQkJY2Ut PmluaXRpYWxpc2VkID0gdHJ1ZTsKPiAtCX0KPiAtCj4gIAkvKiBOb3RlIHRoYXQgYWZ0ZXIgdGhp cyBwb2ludCwgd2UgaGF2ZSBjb21taXR0ZWQgdG8gdXNpbmcKPiAgCSAqIHRoaXMgcmVxdWVzdCBh cyBpdCBpcyBiZWluZyB1c2VkIHRvIGJvdGggdHJhY2sgdGhlCj4gIAkgKiBzdGF0ZSBvZiBlbmdp bmUgaW5pdGlhbGlzYXRpb24gYW5kIGxpdmVuZXNzIG9mIHRoZQo+IEBAIC0yMTAwLDcgKzIwOTEs NiBAQCBzdGF0aWMgdm9pZCBleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUodTMyICpyZWdzLAo+ICAK PiAgCUNUWF9SRUcocmVncywgQ1RYX0NPTlRFWFRfQ09OVFJPTCwgUklOR19DT05URVhUX0NPTlRS T0woZW5naW5lKSwKPiAgCQlfTUFTS0VEX0JJVF9FTkFCTEUoQ1RYX0NUUkxfSU5ISUJJVF9TWU5f Q1RYX1NXSVRDSCB8Cj4gLQkJCQkgICBDVFhfQ1RSTF9FTkdJTkVfQ1RYX1JFU1RPUkVfSU5ISUJJ VCB8Cj4gIAkJCQkgICAoSEFTX1JFU09VUkNFX1NUUkVBTUVSKGRldl9wcml2KSA/Cj4gIAkJCQkg ICBDVFhfQ1RSTF9SU19DVFhfRU5BQkxFIDogMCkpKTsKPiAgCUNUWF9SRUcocmVncywgQ1RYX1JJ TkdfSEVBRCwgUklOR19IRUFEKGJhc2UpLCAwKTsKPiBAQCAtMjE3Nyw2ICsyMTY3LDcgQEAgcG9w dWxhdGVfbHJfY29udGV4dChzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAo+ICAJCSAgICBz dHJ1Y3QgaW50ZWxfcmluZyAqcmluZykKPiAgewo+ICAJdm9pZCAqdmFkZHI7Cj4gKwl1MzIgKnJl Z3M7Cj4gIAlpbnQgcmV0Owo+ICAKPiAgCXJldCA9IGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fY3B1 X2RvbWFpbihjdHhfb2JqLCB0cnVlKTsKPiBAQCAtMjE5MywxMSArMjE4NCwyOCBAQCBwb3B1bGF0 ZV9scl9jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCj4gIAl9Cj4gIAljdHhf b2JqLT5tbS5kaXJ0eSA9IHRydWU7Cj4gIAo+ICsJaWYgKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSkg ewo+ICsJCXZvaWQgKmRlZmF1bHRzOwo+ICsKPiArCQlkZWZhdWx0cyA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSwKPiArCQkJCQkJICAgSTkxNV9NQVBfV0Ip Owo+ICsJCWlmIChJU19FUlIoZGVmYXVsdHMpKQo+ICsJCQlyZXR1cm4gUFRSX0VSUihkZWZhdWx0 cyk7Cj4gKwo+ICsJCW1lbWNweSh2YWRkciArIExSQ19IRUFERVJfUEFHRVMgKiBQQUdFX1NJWkUs Cj4gKwkJICAgICAgIGRlZmF1bHRzICsgTFJDX0hFQURFUl9QQUdFUyAqIFBBR0VfU0laRSwKPiAr CQkgICAgICAgZW5naW5lLT5jb250ZXh0X3NpemUpOwo+ICsJCWk5MTVfZ2VtX29iamVjdF91bnBp bl9tYXAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKTsKPiArCX0KPiArCj4gIAkvKiBUaGUgc2Vjb25k IHBhZ2Ugb2YgdGhlIGNvbnRleHQgb2JqZWN0IGNvbnRhaW5zIHNvbWUgZmllbGRzIHdoaWNoIG11 c3QKPiAgCSAqIGJlIHNldCB1cCBwcmlvciB0byB0aGUgZmlyc3QgZXhlY3V0aW9uLiAqLwo+IC0K PiAtCWV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZSh2YWRkciArIExSQ19TVEFURV9QTiAqIFBBR0Vf U0laRSwKPiAtCQkJCSBjdHgsIGVuZ2luZSwgcmluZyk7Cj4gKwlyZWdzID0gdmFkZHIgKyBMUkNf U1RBVEVfUE4gKiBQQUdFX1NJWkU7Cj4gKwlleGVjbGlzdHNfaW5pdF9yZWdfc3RhdGUocmVncywg Y3R4LCBlbmdpbmUsIHJpbmcpOwo+ICsJaWYgKCFlbmdpbmUtPmRlZmF1bHRfc3RhdGUpIHsKPiAr CQlyZWdzW0NUWF9DT05URVhUX0NPTlRST0wrMV0gfD0KPiArCQkJX01BU0tFRF9CSVRfRU5BQkxF KENUWF9DVFJMX0VOR0lORV9DVFhfUkVTVE9SRV9JTkhJQklUKTsKPiArCX0KCldlIHdpbGwgZ2V0 IHRoZSBkZWZhdWx0IHN0YXRlIHdlIGNvcHkgZnJvbSBub3cgd2l0aCByZXN0b3JlIGluaGliaXQg c2V0CmZvciBhbGwgY29waWVkIGNvbnRleHQuIFdoZXJlIGRvIHdlIGNsZWFyIGl0PwotTWlrYQoK Cj4gIAo+ICAJaTkxNV9nZW1fb2JqZWN0X3VucGluX21hcChjdHhfb2JqKTsKPiAgCj4gQEAgLTIy NTAsNyArMjI1OCw2IEBAIHN0YXRpYyBpbnQgZXhlY2xpc3RzX2NvbnRleHRfZGVmZXJyZWRfYWxs b2Moc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKPiAgCj4gIAljZS0+cmluZyA9IHJpbmc7 Cj4gIAljZS0+c3RhdGUgPSB2bWE7Cj4gLQljZS0+aW5pdGlhbGlzZWQgfD0gZW5naW5lLT5pbml0 X2NvbnRleHQgPT0gTlVMTDsKPiAgCj4gIAlyZXR1cm4gMDsKPiAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IGluZGV4IDQ3ZmFkZjhkYTg0ZS4uM2U1YzI5NmNkOGJj IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwo+IEBAIC0xMzY4 LDcgKzEzNjgsNyBAQCBzdGF0aWMgaW50IGNvbnRleHRfcGluKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCj4gIAkgKiBvbiBhbiBhY3RpdmUgY29udGV4dCAod2hpY2ggYnkgbmF0dXJlIGlz IGFscmVhZHkgb24gdGhlIEdQVSkuCj4gIAkgKi8KPiAgCWlmICghKHZtYS0+ZmxhZ3MgJiBJOTE1 X1ZNQV9HTE9CQUxfQklORCkpIHsKPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0X3RvX2d0 dF9kb21haW4odm1hLT5vYmosIGZhbHNlKTsKPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfc2V0 X3RvX2d0dF9kb21haW4odm1hLT5vYmosIHRydWUpOwo+ICAJCWlmIChyZXQpCj4gIAkJCXJldHVy biByZXQ7Cj4gIAl9Cj4gQEAgLTEzODMsMTEgKzEzODMsMzQgQEAgYWxsb2NfY29udGV4dF92bWEo c3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSBlbmdpbmUtPmk5MTU7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwlpbnQgZXJyOwo+ICAKPiAgCW9iaiA9 IGk5MTVfZ2VtX29iamVjdF9jcmVhdGUoaTkxNSwgZW5naW5lLT5jb250ZXh0X3NpemUpOwo+ICAJ aWYgKElTX0VSUihvYmopKQo+ICAJCXJldHVybiBFUlJfQ0FTVChvYmopOwo+ICAKPiArCWlmIChl bmdpbmUtPmRlZmF1bHRfc3RhdGUpIHsKPiArCQl2b2lkICpkZWZhdWx0cywgKnZhZGRyOwo+ICsK PiArCQl2YWRkciA9IGk5MTVfZ2VtX29iamVjdF9waW5fbWFwKG9iaiwgSTkxNV9NQVBfV0IpOwo+ ICsJCWlmIChJU19FUlIodmFkZHIpKSB7Cj4gKwkJCWVyciA9IFBUUl9FUlIodmFkZHIpOwo+ICsJ CQlnb3RvIGVycl9vYmo7Cj4gKwkJfQo+ICsKPiArCQlkZWZhdWx0cyA9IGk5MTVfZ2VtX29iamVj dF9waW5fbWFwKGVuZ2luZS0+ZGVmYXVsdF9zdGF0ZSwKPiArCQkJCQkJICAgSTkxNV9NQVBfV0Ip Owo+ICsJCWlmIChJU19FUlIoZGVmYXVsdHMpKSB7Cj4gKwkJCWVyciA9IFBUUl9FUlIoZGVmYXVs dHMpOwo+ICsJCQlnb3RvIGVycl9tYXA7Cj4gKwkJfQo+ICsKPiArCQltZW1jcHkodmFkZHIsIGRl ZmF1bHRzLCBlbmdpbmUtPmNvbnRleHRfc2l6ZSk7Cj4gKwo+ICsJCWk5MTVfZ2VtX29iamVjdF91 bnBpbl9tYXAoZW5naW5lLT5kZWZhdWx0X3N0YXRlKTsKPiArCQlpOTE1X2dlbV9vYmplY3RfdW5w aW5fbWFwKG9iaik7Cj4gKwl9Cj4gKwo+ICAJLyoKPiAgCSAqIFRyeSB0byBtYWtlIHRoZSBjb250 ZXh0IHV0aWxpemUgTDMgYXMgd2VsbCBhcyBMTEMuCj4gIAkgKgo+IEBAIC0xNDA5LDEwICsxNDMy LDE4IEBAIGFsbG9jX2NvbnRleHRfdm1hKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkK PiAgCX0KPiAgCj4gIAl2bWEgPSBpOTE1X3ZtYV9pbnN0YW5jZShvYmosICZpOTE1LT5nZ3R0LmJh c2UsIE5VTEwpOwo+IC0JaWYgKElTX0VSUih2bWEpKQo+IC0JCWk5MTVfZ2VtX29iamVjdF9wdXQo b2JqKTsKPiArCWlmIChJU19FUlIodm1hKSkgewo+ICsJCWVyciA9IFBUUl9FUlIodm1hKTsKPiAr CQlnb3RvIGVycl9vYmo7Cj4gKwl9Cj4gIAo+ICAJcmV0dXJuIHZtYTsKPiArCj4gK2Vycl9tYXA6 Cj4gKwlpOTE1X2dlbV9vYmplY3RfdW5waW5fbWFwKG9iaik7Cj4gK2Vycl9vYmo6Cj4gKwlpOTE1 X2dlbV9vYmplY3RfcHV0KG9iaik7Cj4gKwlyZXR1cm4gRVJSX1BUUihlcnIpOwo+ICB9Cj4gIAo+ ICBzdGF0aWMgc3RydWN0IGludGVsX3JpbmcgKgo+IEBAIC0xNDQ5LDE2ICsxNDgwLDYgQEAgaW50 ZWxfcmluZ19jb250ZXh0X3BpbihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUsCj4gIAkJ Y2UtPnN0YXRlLT5vYmotPnBpbl9nbG9iYWwrKzsKPiAgCX0KPiAgCj4gLQkvKiBUaGUga2VybmVs IGNvbnRleHQgaXMgb25seSB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgZm9yIGZsdXNoaW5nIHRoZQo+ IC0JICogYWN0aXZlIGNvbnRleHQuIEl0IGlzIG5ldmVyIHVzZWQgZm9yIHN1Ym1pdHRpbmcgdXNl ciByZW5kZXJpbmcgYW5kCj4gLQkgKiBhcyBzdWNoIG5ldmVyIHJlcXVpcmVzIHRoZSBnb2xkZW4g cmVuZGVyIGNvbnRleHQsIGFuZCBzbyB3ZSBjYW4gc2tpcAo+IC0JICogZW1pdHRpbmcgaXQgd2hl biB3ZSBzd2l0Y2ggdG8gdGhlIGtlcm5lbCBjb250ZXh0LiBUaGlzIGlzIHJlcXVpcmVkCj4gLQkg KiBhcyBkdXJpbmcgZXZpY3Rpb24gd2UgY2Fubm90IGFsbG9jYXRlIGFuZCBwaW4gdGhlIHJlbmRl cnN0YXRlIGluCj4gLQkgKiBvcmRlciB0byBpbml0aWFsaXNlIHRoZSBjb250ZXh0Lgo+IC0JICov Cj4gLQlpZiAoaTkxNV9nZW1fY29udGV4dF9pc19rZXJuZWwoY3R4KSkKPiAtCQljZS0+aW5pdGlh bGlzZWQgPSB0cnVlOwo+IC0KPiAgCWk5MTVfZ2VtX2NvbnRleHRfZ2V0KGN0eCk7Cj4gIAo+ICBv dXQ6Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuaAo+IGluZGV4IDY5YWQ4 NzVmZDAxMS4uMWQ3NTJiOWEzMDY1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3JpbmdidWZmZXIuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Jp bmdidWZmZXIuaAo+IEBAIC0zMDMsNiArMzAzLDcgQEAgc3RydWN0IGludGVsX2VuZ2luZV9jcyB7 Cj4gIAlzdHJ1Y3QgaW50ZWxfcmluZyAqYnVmZmVyOwo+ICAJc3RydWN0IGludGVsX3RpbWVsaW5l ICp0aW1lbGluZTsKPiAgCj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqZGVmYXVsdF9z dGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9yZW5kZXJfc3RhdGUgKnJlbmRlcl9zdGF0ZTsKPiAgCj4g IAlhdG9taWNfdCBpcnFfY291bnQ7Cj4gLS0gCj4gMi4xNS4wCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=