From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 1/6] drm/i915: use vfuncs for reg_read/write_fw_domains Date: Tue, 18 Jun 2019 09:31:11 +0100 Message-ID: References: <20190617180935.505-1-daniele.ceraolospurio@intel.com> <20190617180935.505-2-daniele.ceraolospurio@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4E1D589D84 for ; Tue, 18 Jun 2019 08:31:13 +0000 (UTC) In-Reply-To: <20190617180935.505-2-daniele.ceraolospurio@intel.com> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniele Ceraolo Spurio , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE3LzA2LzIwMTkgMTk6MDksIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4gSW5z dGVhZCBvZiBnb2luZyB0aHJvdWdoIHRoZSBpZi1lbHNlIGNoYWluIGV2ZXJ5IHRpbWUsIGxldCdz IHNhdmUgdGhlCj4gZnVuY3Rpb24gaW4gdGhlIHVuY29yZSBzdHJ1Y3R1cmUuIE5vdGUgdGhhdCB0 aGUgbmV3IGZ1bmN0aW9ucyBhcmUKPiBwdXJwb3NlbHkgbm90IHVzZWQgZnJvbSB0aGUgcmVnIHJl YWQvd3JpdGUgZnVuY3Rpb25zIHRvIGtlZXAgdGhlCj4gaW5saW5pbmcgdGhlcmUuCgpMb29rcyBn b29kIHRvIG1lLgoKUmV2aWV3ZWQtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBp bnRlbC5jb20+CgpPbiB0aGUgcG9pbnQgb2YgaW5saW5pbmcsIGFsdGVybmF0aXZlIHdvdWxkIGJl IHRvIGxldCBjb21waWxlciBkZWNpZGUuIApJdCBkb2Vzbid0IG1hdHRlciBhIGxvdCB0aG91Z2gg YW5kIEkgZG9uJ3QgcmVtZW1iZXIva25vdyBob3cgdGhlIGVuZCBvZiAKdGhlIGd0L2Rpc3BsYXkg c3BsaXQgd2lsbCBsb29rIHRvIHNlZSBpZiB0aGF0IGluZmx1ZW5jZXMgaGVyZSBzb21laG93LgoK UmVnYXJkcywKClR2cnRrbwoKPiBXaGlsZSBhdCBpdCwgdXNlIHRoZSBuZXcgbWFjcm8gdG8gY2Fs bCB0aGUgb2xkIG9uZXMgdG8gY2xlYW4gdGhlIGNvZGUgYQo+IGJpdC4KPiAKPiB2MjogUmVuYW1l IG1hY3JvcyBmb3Igbm8tZm9yY2V3YWtlIGZ1bmN0aW9uIGFzc2lnbm1lbnQgKFR2cnRrbykKPiAK PiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNlcmFvbG9z cHVyaW9AaW50ZWwuY29tPgo+IENjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AbGlu dXguaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMgICAgICAgICAgfCAxNzIgKysrKysrKystLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfdW5jb3JlLmggICAgICAgICAgfCAgIDUgKwo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfdW5jb3JlLmMgfCAgIDQgKy0KPiAgIDMgZmlsZXMgY2hhbmdl ZCwgNzUgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX3VuY29yZS5jCj4gaW5kZXggZGEzM2FhNjcyYzNkLi44ZTU3MTZiYzUzZTIgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBAIC05MDEsNiArOTAxLDEyIEBAIHN0 YXRpYyBib29sIGlzX2dlbiMjeCMjX3NoYWRvd2VkKHUzMiBvZmZzZXQpIFwKPiAgIF9faXNfZ2Vu WF9zaGFkb3dlZCg4KQo+ICAgX19pc19nZW5YX3NoYWRvd2VkKDExKQo+ICAgCj4gK3N0YXRpYyBl bnVtIGZvcmNld2FrZV9kb21haW5zCj4gK2dlbjZfcmVnX3dyaXRlX2Z3X2RvbWFpbnMoc3RydWN0 IGludGVsX3VuY29yZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJlZykKPiArewo+ICsJcmV0dXJuIEZP UkNFV0FLRV9SRU5ERVI7Cj4gK30KPiArCj4gICAjZGVmaW5lIF9fZ2VuOF9yZWdfd3JpdGVfZndf ZG9tYWlucyh1bmNvcmUsIG9mZnNldCkgXAo+ICAgKHsgXAo+ICAgCWVudW0gZm9yY2V3YWtlX2Rv bWFpbnMgX19md2Q7IFwKPiBAQCAtMTE0NSwyNiArMTE1MSwyMyBAQCBmdW5jIyNfcmVhZCMjeChz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsIGk5MTVfcmVnX3QgcmVnLCBib29sIHRyYWNlKSB7 IFwKPiAgIAl2YWwgPSBfX3Jhd191bmNvcmVfcmVhZCMjeCh1bmNvcmUsIHJlZyk7IFwKPiAgIAlH RU42X1JFQURfRk9PVEVSOyBcCj4gICB9Cj4gLSNkZWZpbmUgX19nZW42X3JlYWQoeCkgX19nZW5f cmVhZChnZW42LCB4KQo+IC0jZGVmaW5lIF9fZnd0YWJsZV9yZWFkKHgpIF9fZ2VuX3JlYWQoZnd0 YWJsZSwgeCkKPiAtI2RlZmluZSBfX2dlbjExX2Z3dGFibGVfcmVhZCh4KSBfX2dlbl9yZWFkKGdl bjExX2Z3dGFibGUsIHgpCj4gLQo+IC1fX2dlbjExX2Z3dGFibGVfcmVhZCg4KQo+IC1fX2dlbjEx X2Z3dGFibGVfcmVhZCgxNikKPiAtX19nZW4xMV9md3RhYmxlX3JlYWQoMzIpCj4gLV9fZ2VuMTFf Znd0YWJsZV9yZWFkKDY0KQo+IC1fX2Z3dGFibGVfcmVhZCg4KQo+IC1fX2Z3dGFibGVfcmVhZCgx NikKPiAtX19md3RhYmxlX3JlYWQoMzIpCj4gLV9fZnd0YWJsZV9yZWFkKDY0KQo+IC1fX2dlbjZf cmVhZCg4KQo+IC1fX2dlbjZfcmVhZCgxNikKPiAtX19nZW42X3JlYWQoMzIpCj4gLV9fZ2VuNl9y ZWFkKDY0KQo+IC0KPiAtI3VuZGVmIF9fZ2VuMTFfZnd0YWJsZV9yZWFkCj4gLSN1bmRlZiBfX2Z3 dGFibGVfcmVhZAo+IC0jdW5kZWYgX19nZW42X3JlYWQKPiArCj4gKyNkZWZpbmUgX19nZW5fcmVn X3JlYWRfZnVuY3MoZnVuYykgXAo+ICtzdGF0aWMgZW51bSBmb3JjZXdha2VfZG9tYWlucyBcCj4g K2Z1bmMjI19yZWdfcmVhZF9md19kb21haW5zKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwg aTkxNV9yZWdfdCByZWcpIHsgXAo+ICsJcmV0dXJuIF9fIyNmdW5jIyNfcmVnX3JlYWRfZndfZG9t YWlucyh1bmNvcmUsIGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZykpOyBcCj4gK30gXAo+ICtcCj4g K19fZ2VuX3JlYWQoZnVuYywgOCkgXAo+ICtfX2dlbl9yZWFkKGZ1bmMsIDE2KSBcCj4gK19fZ2Vu X3JlYWQoZnVuYywgMzIpIFwKPiArX19nZW5fcmVhZChmdW5jLCA2NCkKPiArCj4gK19fZ2VuX3Jl Z19yZWFkX2Z1bmNzKGdlbjExX2Z3dGFibGUpOwo+ICtfX2dlbl9yZWdfcmVhZF9mdW5jcyhmd3Rh YmxlKTsKPiArX19nZW5fcmVnX3JlYWRfZnVuY3MoZ2VuNik7Cj4gKwo+ICsjdW5kZWYgX19nZW5f cmVnX3JlYWRfZnVuY3MKPiAgICN1bmRlZiBHRU42X1JFQURfRk9PVEVSCj4gICAjdW5kZWYgR0VO Nl9SRUFEX0hFQURFUgo+ICAgCj4gQEAgLTEyMjUsNiArMTIyOCw5IEBAIGdlbjZfd3JpdGUjI3go c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJlZywgdSMjeCB2YWwsIGJv b2wgdHJhY2UpCj4gICAJX19yYXdfdW5jb3JlX3dyaXRlIyN4KHVuY29yZSwgcmVnLCB2YWwpOyBc Cj4gICAJR0VONl9XUklURV9GT09URVI7IFwKPiAgIH0KPiArX19nZW42X3dyaXRlKDgpCj4gK19f Z2VuNl93cml0ZSgxNikKPiArX19nZW42X3dyaXRlKDMyKQo+ICAgCj4gICAjZGVmaW5lIF9fZ2Vu X3dyaXRlKGZ1bmMsIHgpIFwKPiAgIHN0YXRpYyB2b2lkIFwKPiBAQCAtMTIzNywzOCArMTI0Mywz MyBAQCBmdW5jIyNfd3JpdGUjI3goc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLCBpOTE1X3Jl Z190IHJlZywgdSMjeCB2YWwsIGJvb2wgdHJhYwo+ICAgCV9fcmF3X3VuY29yZV93cml0ZSMjeCh1 bmNvcmUsIHJlZywgdmFsKTsgXAo+ICAgCUdFTjZfV1JJVEVfRk9PVEVSOyBcCj4gICB9Cj4gLSNk ZWZpbmUgX19nZW44X3dyaXRlKHgpIF9fZ2VuX3dyaXRlKGdlbjgsIHgpCj4gLSNkZWZpbmUgX19m d3RhYmxlX3dyaXRlKHgpIF9fZ2VuX3dyaXRlKGZ3dGFibGUsIHgpCj4gLSNkZWZpbmUgX19nZW4x MV9md3RhYmxlX3dyaXRlKHgpIF9fZ2VuX3dyaXRlKGdlbjExX2Z3dGFibGUsIHgpCj4gLQo+IC1f X2dlbjExX2Z3dGFibGVfd3JpdGUoOCkKPiAtX19nZW4xMV9md3RhYmxlX3dyaXRlKDE2KQo+IC1f X2dlbjExX2Z3dGFibGVfd3JpdGUoMzIpCj4gLV9fZnd0YWJsZV93cml0ZSg4KQo+IC1fX2Z3dGFi bGVfd3JpdGUoMTYpCj4gLV9fZnd0YWJsZV93cml0ZSgzMikKPiAtX19nZW44X3dyaXRlKDgpCj4g LV9fZ2VuOF93cml0ZSgxNikKPiAtX19nZW44X3dyaXRlKDMyKQo+IC1fX2dlbjZfd3JpdGUoOCkK PiAtX19nZW42X3dyaXRlKDE2KQo+IC1fX2dlbjZfd3JpdGUoMzIpCj4gICAKPiAtI3VuZGVmIF9f Z2VuMTFfZnd0YWJsZV93cml0ZQo+IC0jdW5kZWYgX19md3RhYmxlX3dyaXRlCj4gLSN1bmRlZiBf X2dlbjhfd3JpdGUKPiAtI3VuZGVmIF9fZ2VuNl93cml0ZQo+ICsjZGVmaW5lIF9fZ2VuX3JlZ193 cml0ZV9mdW5jcyhmdW5jKSBcCj4gK3N0YXRpYyBlbnVtIGZvcmNld2FrZV9kb21haW5zIFwKPiAr ZnVuYyMjX3JlZ193cml0ZV9md19kb21haW5zKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwg aTkxNV9yZWdfdCByZWcpIHsgXAo+ICsJcmV0dXJuIF9fIyNmdW5jIyNfcmVnX3dyaXRlX2Z3X2Rv bWFpbnModW5jb3JlLCBpOTE1X21taW9fcmVnX29mZnNldChyZWcpKTsgXAo+ICt9IFwKPiArXAo+ ICtfX2dlbl93cml0ZShmdW5jLCA4KSBcCj4gK19fZ2VuX3dyaXRlKGZ1bmMsIDE2KSBcCj4gK19f Z2VuX3dyaXRlKGZ1bmMsIDMyKQo+ICsKPiArX19nZW5fcmVnX3dyaXRlX2Z1bmNzKGdlbjExX2Z3 dGFibGUpOwo+ICtfX2dlbl9yZWdfd3JpdGVfZnVuY3MoZnd0YWJsZSk7Cj4gK19fZ2VuX3JlZ193 cml0ZV9mdW5jcyhnZW44KTsKPiArCj4gKyN1bmRlZiBfX2dlbl9yZWdfd3JpdGVfZnVuY3MKPiAg ICN1bmRlZiBHRU42X1dSSVRFX0ZPT1RFUgo+ICAgI3VuZGVmIEdFTjZfV1JJVEVfSEVBREVSCj4g ICAKPiAtI2RlZmluZSBBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCB4KSBcCj4gKyNk ZWZpbmUgQVNTSUdOX1JBV19XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIHgpIFwKPiAgIGRvIHsg XAo+ICAgCSh1bmNvcmUpLT5mdW5jcy5tbWlvX3dyaXRlYiA9IHgjI193cml0ZTg7IFwKPiAgIAko dW5jb3JlKS0+ZnVuY3MubW1pb193cml0ZXcgPSB4IyNfd3JpdGUxNjsgXAo+ICAgCSh1bmNvcmUp LT5mdW5jcy5tbWlvX3dyaXRlbCA9IHgjI193cml0ZTMyOyBcCj4gICB9IHdoaWxlICgwKQo+ICAg Cj4gLSNkZWZpbmUgQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCB4KSBcCj4gKyNkZWZp bmUgQVNTSUdOX1JBV19SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgeCkgXAo+ICAgZG8geyBcCj4g ICAJKHVuY29yZSktPmZ1bmNzLm1taW9fcmVhZGIgPSB4IyNfcmVhZDg7IFwKPiAgIAkodW5jb3Jl KS0+ZnVuY3MubW1pb19yZWFkdyA9IHgjI19yZWFkMTY7IFwKPiBAQCAtMTI3Niw2ICsxMjc3LDE3 IEBAIGRvIHsgXAo+ICAgCSh1bmNvcmUpLT5mdW5jcy5tbWlvX3JlYWRxID0geCMjX3JlYWQ2NDsg XAo+ICAgfSB3aGlsZSAoMCkKPiAgIAo+ICsjZGVmaW5lIEFTU0lHTl9XUklURV9NTUlPX1ZGVU5D Uyh1bmNvcmUsIHgpIFwKPiArZG8geyBcCj4gKwlBU1NJR05fUkFXX1dSSVRFX01NSU9fVkZVTkNT KCh1bmNvcmUpLCB4KTsgXAo+ICsJKHVuY29yZSktPmZ1bmNzLndyaXRlX2Z3X2RvbWFpbnMgPSB4 IyNfcmVnX3dyaXRlX2Z3X2RvbWFpbnM7IFwKPiArfSB3aGlsZSAoMCkKPiArCj4gKyNkZWZpbmUg QVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCB4KSBcCj4gK2RvIHsgXAo+ICsJQVNTSUdO X1JBV19SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgeCk7IFwKPiArCSh1bmNvcmUpLT5mdW5jcy5y ZWFkX2Z3X2RvbWFpbnMgPSB4IyNfcmVnX3JlYWRfZndfZG9tYWluczsgXAo+ICt9IHdoaWxlICgw KQo+ICAgCj4gICBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUsCj4gICAJCQkgICBlbnVtIGZvcmNld2FrZV9kb21haW5faWQgZG9tYWluX2lkLAo+ IEBAIC0xNTU5LDExICsxNTcxLDExIEBAIGludCBpbnRlbF91bmNvcmVfaW5pdF9tbWlvKHN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIAo+ICAgCWlmICghaW50ZWxfdW5jb3JlX2hhc19m b3JjZXdha2UodW5jb3JlKSkgewo+ICAgCQlpZiAoSVNfR0VOKGk5MTUsIDUpKSB7Cj4gLQkJCUFT U0lHTl9XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwo+IC0JCQlBU1NJR05fUkVBRF9N TUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwo+ICsJCQlBU1NJR05fUkFXX1dSSVRFX01NSU9fVkZV TkNTKHVuY29yZSwgZ2VuNSk7Cj4gKwkJCUFTU0lHTl9SQVdfUkVBRF9NTUlPX1ZGVU5DUyh1bmNv cmUsIGdlbjUpOwo+ICAgCQl9IGVsc2Ugewo+IC0JCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1Mo dW5jb3JlLCBnZW4yKTsKPiAtCQkJQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW4y KTsKPiArCQkJQVNTSUdOX1JBV19XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjIpOwo+ICsJ CQlBU1NJR05fUkFXX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPiAgIAkJfQo+ICAg CX0gZWxzZSBpZiAoSVNfR0VOX1JBTkdFKGk5MTUsIDYsIDcpKSB7Cj4gICAJCUFTU0lHTl9XUklU RV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjYpOwo+IEBAIC0xNTk0LDYgKzE2MDYsMTIgQEAgaW50 IGludGVsX3VuY29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICAg CQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjExX2Z3dGFibGUpOwo+ICAgCX0K PiAgIAo+ICsJLyogbWFrZSBzdXJlIGZ3IGZ1bmNzIGFyZSBzZXQgaWYgYW5kIG9ubHkgaWYgd2Ug aGF2ZSBmdyovCj4gKwlHRU1fQlVHX09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29y ZSkgIT0gISF1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2VfZ2V0KTsKPiArCUdFTV9CVUdfT04oaW50 ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSAhPSAhIXVuY29yZS0+ZnVuY3MuZm9yY2Vf d2FrZV9wdXQpOwo+ICsJR0VNX0JVR19PTihpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNv cmUpICE9ICEhdW5jb3JlLT5mdW5jcy5yZWFkX2Z3X2RvbWFpbnMpOwo+ICsJR0VNX0JVR19PTihp bnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpICE9ICEhdW5jb3JlLT5mdW5jcy53cml0 ZV9md19kb21haW5zKTsKPiArCj4gICAJaWYgKEhBU19GUEdBX0RCR19VTkNMQUlNRUQoaTkxNSkp Cj4gICAJCXVuY29yZS0+ZmxhZ3MgfD0gVU5DT1JFX0hBU19GUEdBX0RCR19VTkNMQUlNRUQ7Cj4g ICAKPiBAQCAtMTg3MSw2MiArMTg4OSw2IEBAIGludGVsX3VuY29yZV9hcm1fdW5jbGFpbWVkX21t aW9fZGV0ZWN0aW9uKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIAlyZXR1cm4gcmV0 Owo+ICAgfQo+ICAgCj4gLXN0YXRpYyBlbnVtIGZvcmNld2FrZV9kb21haW5zCj4gLWludGVsX3Vu Y29yZV9mb3JjZXdha2VfZm9yX3JlYWQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+IC0J CQkJaTkxNV9yZWdfdCByZWcpCj4gLXsKPiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1 ID0gdW5jb3JlX3RvX2k5MTUodW5jb3JlKTsKPiAtCXUzMiBvZmZzZXQgPSBpOTE1X21taW9fcmVn X29mZnNldChyZWcpOwo+IC0JZW51bSBmb3JjZXdha2VfZG9tYWlucyBmd19kb21haW5zOwo+IC0K PiAtCWlmIChJTlRFTF9HRU4oaTkxNSkgPj0gMTEpIHsKPiAtCQlmd19kb21haW5zID0gX19nZW4x MV9md3RhYmxlX3JlZ19yZWFkX2Z3X2RvbWFpbnModW5jb3JlLCBvZmZzZXQpOwo+IC0JfSBlbHNl IGlmIChIQVNfRldUQUJMRShpOTE1KSkgewo+IC0JCWZ3X2RvbWFpbnMgPSBfX2Z3dGFibGVfcmVn X3JlYWRfZndfZG9tYWlucyh1bmNvcmUsIG9mZnNldCk7Cj4gLQl9IGVsc2UgaWYgKElOVEVMX0dF TihpOTE1KSA+PSA2KSB7Cj4gLQkJZndfZG9tYWlucyA9IF9fZ2VuNl9yZWdfcmVhZF9md19kb21h aW5zKHVuY29yZSwgb2Zmc2V0KTsKPiAtCX0gZWxzZSB7Cj4gLQkJLyogb24gZGV2aWNlcyB3aXRo IEZXIHdlIGV4cGVjdCB0byBoaXQgb25lIG9mIHRoZSBhYm92ZSBjYXNlcyAqLwo+IC0JCWlmIChp bnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKQo+IC0JCQlNSVNTSU5HX0NBU0UoSU5U RUxfR0VOKGk5MTUpKTsKPiAtCj4gLQkJZndfZG9tYWlucyA9IDA7Cj4gLQl9Cj4gLQo+IC0JV0FS Tl9PTihmd19kb21haW5zICYgfnVuY29yZS0+ZndfZG9tYWlucyk7Cj4gLQo+IC0JcmV0dXJuIGZ3 X2RvbWFpbnM7Cj4gLX0KPiAtCj4gLXN0YXRpYyBlbnVtIGZvcmNld2FrZV9kb21haW5zCj4gLWlu dGVsX3VuY29yZV9mb3JjZXdha2VfZm9yX3dyaXRlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29y ZSwKPiAtCQkJCSBpOTE1X3JlZ190IHJlZykKPiAtewo+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUgPSB1bmNvcmVfdG9faTkxNSh1bmNvcmUpOwo+IC0JdTMyIG9mZnNldCA9IGk5MTVf bW1pb19yZWdfb2Zmc2V0KHJlZyk7Cj4gLQllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFp bnM7Cj4gLQo+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewo+IC0JCWZ3X2RvbWFpbnMg PSBfX2dlbjExX2Z3dGFibGVfcmVnX3dyaXRlX2Z3X2RvbWFpbnModW5jb3JlLCBvZmZzZXQpOwo+ IC0JfSBlbHNlIGlmIChIQVNfRldUQUJMRShpOTE1KSAmJiAhSVNfVkFMTEVZVklFVyhpOTE1KSkg ewo+IC0JCWZ3X2RvbWFpbnMgPSBfX2Z3dGFibGVfcmVnX3dyaXRlX2Z3X2RvbWFpbnModW5jb3Jl LCBvZmZzZXQpOwo+IC0JfSBlbHNlIGlmIChJU19HRU4oaTkxNSwgOCkpIHsKPiAtCQlmd19kb21h aW5zID0gX19nZW44X3JlZ193cml0ZV9md19kb21haW5zKHVuY29yZSwgb2Zmc2V0KTsKPiAtCX0g ZWxzZSBpZiAoSVNfR0VOX1JBTkdFKGk5MTUsIDYsIDcpKSB7Cj4gLQkJZndfZG9tYWlucyA9IEZP UkNFV0FLRV9SRU5ERVI7Cj4gLQl9IGVsc2Ugewo+IC0JCS8qIG9uIGRldmljZXMgd2l0aCBGVyB3 ZSBleHBlY3QgdG8gaGl0IG9uZSBvZiB0aGUgYWJvdmUgY2FzZXMgKi8KPiAtCQlpZiAoaW50ZWxf dW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSkKPiAtCQkJTUlTU0lOR19DQVNFKElOVEVMX0dF TihpOTE1KSk7Cj4gLQo+IC0JCWZ3X2RvbWFpbnMgPSAwOwo+IC0JfQo+IC0KPiAtCVdBUk5fT04o ZndfZG9tYWlucyAmIH51bmNvcmUtPmZ3X2RvbWFpbnMpOwo+IC0KPiAtCXJldHVybiBmd19kb21h aW5zOwo+IC19Cj4gLQo+ICAgLyoqCj4gICAgKiBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9y ZWcgLSB3aGljaCBmb3JjZXdha2UgZG9tYWlucyBhcmUgbmVlZGVkIHRvIGFjY2Vzcwo+ICAgICog CQkJCSAgICBhIHJlZ2lzdGVyCj4gQEAgLTE5NTMsMTAgKzE5MTUsMTIgQEAgaW50ZWxfdW5jb3Jl X2ZvcmNld2FrZV9mb3JfcmVnKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPiAgIAkJcmV0 dXJuIDA7Cj4gICAKPiAgIAlpZiAob3AgJiBGV19SRUdfUkVBRCkKPiAtCQlmd19kb21haW5zID0g aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVhZCh1bmNvcmUsIHJlZyk7Cj4gKwkJZndfZG9t YWlucyA9IHVuY29yZS0+ZnVuY3MucmVhZF9md19kb21haW5zKHVuY29yZSwgcmVnKTsKPiAgIAo+ ICAgCWlmIChvcCAmIEZXX1JFR19XUklURSkKPiAtCQlmd19kb21haW5zIHw9IGludGVsX3VuY29y ZV9mb3JjZXdha2VfZm9yX3dyaXRlKHVuY29yZSwgcmVnKTsKPiArCQlmd19kb21haW5zIHw9IHVu Y29yZS0+ZnVuY3Mud3JpdGVfZndfZG9tYWlucyh1bmNvcmUsIHJlZyk7Cj4gKwo+ICsJV0FSTl9P Tihmd19kb21haW5zICYgfnVuY29yZS0+ZndfZG9tYWlucyk7Cj4gICAKPiAgIAlyZXR1cm4gZndf ZG9tYWluczsKPiAgIH0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuaAo+IGluZGV4IDgw NGEwZmFhY2M5MS4uNGFmZGUwYzQ0ZmZlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX3VuY29yZS5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5j b3JlLmgKPiBAQCAtNzAsNiArNzAsMTEgQEAgc3RydWN0IGludGVsX3VuY29yZV9mdW5jcyB7Cj4g ICAJdm9pZCAoKmZvcmNlX3dha2VfcHV0KShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4g ICAJCQkgICAgICAgZW51bSBmb3JjZXdha2VfZG9tYWlucyBkb21haW5zKTsKPiAgIAo+ICsJZW51 bSBmb3JjZXdha2VfZG9tYWlucyAoKnJlYWRfZndfZG9tYWlucykoc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlLAo+ICsJCQkJCQkgIGk5MTVfcmVnX3Qgcik7Cj4gKwllbnVtIGZvcmNld2FrZV9k b21haW5zICgqd3JpdGVfZndfZG9tYWlucykoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ ICsJCQkJCQkgICBpOTE1X3JlZ190IHIpOwo+ICsKPiAgIAl1OCAoKm1taW9fcmVhZGIpKHN0cnVj dCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPiAgIAkJCSBpOTE1X3JlZ190IHIsIGJvb2wgdHJhY2Up Owo+ICAgCXUxNiAoKm1taW9fcmVhZHcpKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdW5jb3JlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja191bmNvcmUuYwo+IGluZGV4IGZm ODk5OWM2M2ExMi4uNDk1ODVmMTZkNGEyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L3NlbGZ0ZXN0cy9tb2NrX3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL21vY2tfdW5jb3JlLmMKPiBAQCAtNDEsNiArNDEsNiBAQCBfX25vcF9yZWFkKDY0 KQo+ICAgCj4gICB2b2lkIG1vY2tfdW5jb3JlX2luaXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlKQo+ICAgewo+IC0JQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgbm9wKTsKPiAt CUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgbm9wKTsKPiArCUFTU0lHTl9SQVdfV1JJ VEVfTU1JT19WRlVOQ1ModW5jb3JlLCBub3ApOwo+ICsJQVNTSUdOX1JBV19SRUFEX01NSU9fVkZV TkNTKHVuY29yZSwgbm9wKTsKPiAgIH0KPiAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4