From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC 1/8] drm/i915: use vfuncs for reg_read/write_fw_domains Date: Fri, 7 Jun 2019 09:54:07 +0100 Message-ID: <3e7cf3f5-7f0d-5dc4-db39-4133bcbea5ff@linux.intel.com> References: <20190606215218.34486-1-daniele.ceraolospurio@intel.com> <20190606215218.34486-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 mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0188289C37 for ; Fri, 7 Jun 2019 08:54:09 +0000 (UTC) In-Reply-To: <20190606215218.34486-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 Ck9uIDA2LzA2LzIwMTkgMjI6NTIsIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4gSW5z dGVhZCBvZiBnb2luZyB0aHJvdWdoIHRoZSBpZi1lbHNlIGNoYWluIGV2ZXJ5IHRpbWUsIGxldCdz IHNhdmUgdGhlCj4gZnVuY3Rpb24gaW4gdGhlIHVuY29yZSBzdHJ1Y3R1cmUuIE5vdGUgdGhhdCB0 aGUgbmV3IGZ1bmN0aW9ucyBhcmUKPiBwdXJwb3NlbHkgbm90IHVzZWQgZnJvbSB0aGUgcmVnIHJl YWQvd3JpdGUgZnVuY3Rpb25zIHRvIGtlZXAgdGhlCj4gaW5saW5pbmcgdGhlcmUuCj4gCj4gV2hp bGUgYXQgaXQsIHVzZSB0aGUgbmV3IG1hY3JvIHRvIGNhbGwgdGhlIG9sZCBvbmVzIHRvIGNsZWFu IHRoZSBjb2RlIGEKPiBiaXQuCgpWZXJ5IG5lYXQgaWRlYSEKCj4gU2lnbmVkLW9mZi1ieTogRGFu aWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlvQGludGVsLmNvbT4KPiAt LS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jICAgICAgICAgIHwgMTcy ICsrKysrKysrLS0tLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29y ZS5oICAgICAgICAgIHwgICA1ICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9t b2NrX3VuY29yZS5jIHwgICA0ICstCj4gICAzIGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMo KyksIDEwNiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+ IGluZGV4IGY3ODY2ODEyM2YwMi4uYzNiZTc5YzQ5NTdiIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmMKPiBAQCAtOTAxLDYgKzkwMSwxMiBAQCBzdGF0aWMgYm9vbCBpc19nZW4j I3gjI19zaGFkb3dlZCh1MzIgb2Zmc2V0KSBcCj4gICBfX2lzX2dlblhfc2hhZG93ZWQoOCkKPiAg IF9faXNfZ2VuWF9zaGFkb3dlZCgxMSkKPiAgIAo+ICtzdGF0aWMgZW51bSBmb3JjZXdha2VfZG9t YWlucwo+ICtnZW42X3JlZ193cml0ZV9md19kb21haW5zKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSwgaTkxNV9yZWdfdCByZWcpCj4gK3sKPiArCXJldHVybiBGT1JDRVdBS0VfUkVOREVSOwo+ ICt9Cj4gKwo+ICAgI2RlZmluZSBfX2dlbjhfcmVnX3dyaXRlX2Z3X2RvbWFpbnModW5jb3JlLCBv ZmZzZXQpIFwKPiAgICh7IFwKPiAgIAllbnVtIGZvcmNld2FrZV9kb21haW5zIF9fZndkOyBcCj4g QEAgLTExNDUsMjYgKzExNTEsMjMgQEAgZnVuYyMjX3JlYWQjI3goc3RydWN0IGludGVsX3VuY29y ZSAqdW5jb3JlLCBpOTE1X3JlZ190IHJlZywgYm9vbCB0cmFjZSkgeyBcCj4gICAJdmFsID0gX19y YXdfdW5jb3JlX3JlYWQjI3godW5jb3JlLCByZWcpOyBcCj4gICAJR0VONl9SRUFEX0ZPT1RFUjsg XAo+ICAgfQo+IC0jZGVmaW5lIF9fZ2VuNl9yZWFkKHgpIF9fZ2VuX3JlYWQoZ2VuNiwgeCkKPiAt I2RlZmluZSBfX2Z3dGFibGVfcmVhZCh4KSBfX2dlbl9yZWFkKGZ3dGFibGUsIHgpCj4gLSNkZWZp bmUgX19nZW4xMV9md3RhYmxlX3JlYWQoeCkgX19nZW5fcmVhZChnZW4xMV9md3RhYmxlLCB4KQo+ IC0KPiAtX19nZW4xMV9md3RhYmxlX3JlYWQoOCkKPiAtX19nZW4xMV9md3RhYmxlX3JlYWQoMTYp Cj4gLV9fZ2VuMTFfZnd0YWJsZV9yZWFkKDMyKQo+IC1fX2dlbjExX2Z3dGFibGVfcmVhZCg2NCkK PiAtX19md3RhYmxlX3JlYWQoOCkKPiAtX19md3RhYmxlX3JlYWQoMTYpCj4gLV9fZnd0YWJsZV9y ZWFkKDMyKQo+IC1fX2Z3dGFibGVfcmVhZCg2NCkKPiAtX19nZW42X3JlYWQoOCkKPiAtX19nZW42 X3JlYWQoMTYpCj4gLV9fZ2VuNl9yZWFkKDMyKQo+IC1fX2dlbjZfcmVhZCg2NCkKPiAtCj4gLSN1 bmRlZiBfX2dlbjExX2Z3dGFibGVfcmVhZAo+IC0jdW5kZWYgX19md3RhYmxlX3JlYWQKPiAtI3Vu ZGVmIF9fZ2VuNl9yZWFkCj4gKwo+ICsjZGVmaW5lIF9fZ2VuX3JlZ19yZWFkX2Z1bmNzKGZ1bmMp IFwKPiArc3RhdGljIGVudW0gZm9yY2V3YWtlX2RvbWFpbnMgXAo+ICtmdW5jIyNfcmVnX3JlYWRf ZndfZG9tYWlucyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsIGk5MTVfcmVnX3QgcmVnKSB7 IFwKPiArCXJldHVybiBfXyMjZnVuYyMjX3JlZ19yZWFkX2Z3X2RvbWFpbnModW5jb3JlLCBpOTE1 X21taW9fcmVnX29mZnNldChyZWcpKTsgXAo+ICt9IFwKPiArXAo+ICtfX2dlbl9yZWFkKGZ1bmMs IDgpIFwKPiArX19nZW5fcmVhZChmdW5jLCAxNikgXAo+ICtfX2dlbl9yZWFkKGZ1bmMsIDMyKSBc Cj4gK19fZ2VuX3JlYWQoZnVuYywgNjQpCj4gKwo+ICtfX2dlbl9yZWdfcmVhZF9mdW5jcyhnZW4x MV9md3RhYmxlKTsKPiArX19nZW5fcmVnX3JlYWRfZnVuY3MoZnd0YWJsZSk7Cj4gK19fZ2VuX3Jl Z19yZWFkX2Z1bmNzKGdlbjYpOwo+ICsKPiArI3VuZGVmIF9fZ2VuX3JlZ19yZWFkX2Z1bmNzCj4g ICAjdW5kZWYgR0VONl9SRUFEX0ZPT1RFUgo+ICAgI3VuZGVmIEdFTjZfUkVBRF9IRUFERVIKPiAg IAo+IEBAIC0xMjI1LDYgKzEyMjgsOSBAQCBnZW42X3dyaXRlIyN4KHN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSwgaTkxNV9yZWdfdCByZWcsIHUjI3ggdmFsLCBib29sIHRyYWNlKQo+ICAgCV9f cmF3X3VuY29yZV93cml0ZSMjeCh1bmNvcmUsIHJlZywgdmFsKTsgXAo+ICAgCUdFTjZfV1JJVEVf Rk9PVEVSOyBcCj4gICB9Cj4gK19fZ2VuNl93cml0ZSg4KQo+ICtfX2dlbjZfd3JpdGUoMTYpCj4g K19fZ2VuNl93cml0ZSgzMikKPiAgIAo+ICAgI2RlZmluZSBfX2dlbl93cml0ZShmdW5jLCB4KSBc Cj4gICBzdGF0aWMgdm9pZCBcCj4gQEAgLTEyMzcsMzggKzEyNDMsMzMgQEAgZnVuYyMjX3dyaXRl IyN4KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwgaTkxNV9yZWdfdCByZWcsIHUjI3ggdmFs LCBib29sIHRyYWMKPiAgIAlfX3Jhd191bmNvcmVfd3JpdGUjI3godW5jb3JlLCByZWcsIHZhbCk7 IFwKPiAgIAlHRU42X1dSSVRFX0ZPT1RFUjsgXAo+ICAgfQo+IC0jZGVmaW5lIF9fZ2VuOF93cml0 ZSh4KSBfX2dlbl93cml0ZShnZW44LCB4KQo+IC0jZGVmaW5lIF9fZnd0YWJsZV93cml0ZSh4KSBf X2dlbl93cml0ZShmd3RhYmxlLCB4KQo+IC0jZGVmaW5lIF9fZ2VuMTFfZnd0YWJsZV93cml0ZSh4 KSBfX2dlbl93cml0ZShnZW4xMV9md3RhYmxlLCB4KQo+IC0KPiAtX19nZW4xMV9md3RhYmxlX3dy aXRlKDgpCj4gLV9fZ2VuMTFfZnd0YWJsZV93cml0ZSgxNikKPiAtX19nZW4xMV9md3RhYmxlX3dy aXRlKDMyKQo+IC1fX2Z3dGFibGVfd3JpdGUoOCkKPiAtX19md3RhYmxlX3dyaXRlKDE2KQo+IC1f X2Z3dGFibGVfd3JpdGUoMzIpCj4gLV9fZ2VuOF93cml0ZSg4KQo+IC1fX2dlbjhfd3JpdGUoMTYp Cj4gLV9fZ2VuOF93cml0ZSgzMikKPiAtX19nZW42X3dyaXRlKDgpCj4gLV9fZ2VuNl93cml0ZSgx NikKPiAtX19nZW42X3dyaXRlKDMyKQo+ICAgCj4gLSN1bmRlZiBfX2dlbjExX2Z3dGFibGVfd3Jp dGUKPiAtI3VuZGVmIF9fZnd0YWJsZV93cml0ZQo+IC0jdW5kZWYgX19nZW44X3dyaXRlCj4gLSN1 bmRlZiBfX2dlbjZfd3JpdGUKPiArI2RlZmluZSBfX2dlbl9yZWdfd3JpdGVfZnVuY3MoZnVuYykg XAo+ICtzdGF0aWMgZW51bSBmb3JjZXdha2VfZG9tYWlucyBcCj4gK2Z1bmMjI19yZWdfd3JpdGVf ZndfZG9tYWlucyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsIGk5MTVfcmVnX3QgcmVnKSB7 IFwKPiArCXJldHVybiBfXyMjZnVuYyMjX3JlZ193cml0ZV9md19kb21haW5zKHVuY29yZSwgaTkx NV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7IFwKPiArfSBcCj4gK1wKPiArX19nZW5fd3JpdGUoZnVu YywgOCkgXAo+ICtfX2dlbl93cml0ZShmdW5jLCAxNikgXAo+ICtfX2dlbl93cml0ZShmdW5jLCAz MikKPiArCj4gK19fZ2VuX3JlZ193cml0ZV9mdW5jcyhnZW4xMV9md3RhYmxlKTsKPiArX19nZW5f cmVnX3dyaXRlX2Z1bmNzKGZ3dGFibGUpOwo+ICtfX2dlbl9yZWdfd3JpdGVfZnVuY3MoZ2VuOCk7 Cj4gKwo+ICsjdW5kZWYgX19nZW5fcmVnX3dyaXRlX2Z1bmNzCj4gICAjdW5kZWYgR0VONl9XUklU RV9GT09URVIKPiAgICN1bmRlZiBHRU42X1dSSVRFX0hFQURFUgo+ICAgCj4gLSNkZWZpbmUgQVNT SUdOX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgeCkgXAo+ICsjZGVmaW5lIEFTU0lHTl9XUklU RV9NTUlPX1ZGVU5DU19OT19GVyh1bmNvcmUsIHgpIFwKCkkgb25seSBuZWVkZWQgYSBjb3VwbGUg bWludXRlcyB0byBmaWd1cmUgb3V0IHRoZSBOT19GVyBzdWZmaXggbWVhbnMgCnBsYXRmb3JtcyB3 aXRob3V0IHRoaXMgZmVhdHVyZS4gSW5pdGlhbGx5IEkgd2FzIHRoaW5raW5nIGFib3V0IHRoZSAK ZXhpc3RpbmcgX0ZXIHN1ZmZpeC4KCkhvdyBhYm91dCBBU1NJR05fUkFXX1JFQUQvV1JJVEVfTU1J T19WRlVOQ1M/IE5vdCBzdXJlIGVpdGhlciB3YXksIGp1c3QgCnRhbGtpbmcuLgoKSSBkaWRuJ3Qg cmVhZCBpdCBpbiBkZXRhaWwgYnV0IEkgdGhpbmsgdGhlIGlkZWEgaXMgZ3JlYXQgYW5kIHdlIHdh bnQgaXQgCnJlZ2FyZGxlc3Mgb2YgdmVyZGljdCBvbiB0aGUgcmVzdC4gSSBjYW4gZG8gYSBkZXRh aWxlZCByZXZpZXcgYXQgYSBsYXRlciAKcG9pbnQuCgpSZWdhcmRzLAoKVHZydGtvCgoKPiAgIGRv IHsgXAo+ICAgCSh1bmNvcmUpLT5mdW5jcy5tbWlvX3dyaXRlYiA9IHgjI193cml0ZTg7IFwKPiAg IAkodW5jb3JlKS0+ZnVuY3MubW1pb193cml0ZXcgPSB4IyNfd3JpdGUxNjsgXAo+ICAgCSh1bmNv cmUpLT5mdW5jcy5tbWlvX3dyaXRlbCA9IHgjI193cml0ZTMyOyBcCj4gICB9IHdoaWxlICgwKQo+ ICAgCj4gLSNkZWZpbmUgQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCB4KSBcCj4gKyNk ZWZpbmUgQVNTSUdOX1JFQURfTU1JT19WRlVOQ1NfTk9fRlcodW5jb3JlLCB4KSBcCj4gICBkbyB7 IFwKPiAgIAkodW5jb3JlKS0+ZnVuY3MubW1pb19yZWFkYiA9IHgjI19yZWFkODsgXAo+ICAgCSh1 bmNvcmUpLT5mdW5jcy5tbWlvX3JlYWR3ID0geCMjX3JlYWQxNjsgXAo+IEBAIC0xMjc2LDYgKzEy NzcsMTcgQEAgZG8geyBcCj4gICAJKHVuY29yZSktPmZ1bmNzLm1taW9fcmVhZHEgPSB4IyNfcmVh ZDY0OyBcCj4gICB9IHdoaWxlICgwKQo+ICAgCj4gKyNkZWZpbmUgQVNTSUdOX1dSSVRFX01NSU9f VkZVTkNTKHVuY29yZSwgeCkgXAo+ICtkbyB7IFwKPiArCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5D U19OT19GVygodW5jb3JlKSwgeCk7IFwKPiArCSh1bmNvcmUpLT5mdW5jcy53cml0ZV9md19kb21h aW5zID0geCMjX3JlZ193cml0ZV9md19kb21haW5zOyBcCj4gK30gd2hpbGUgKDApCj4gKwo+ICsj ZGVmaW5lIEFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgeCkgXAo+ICtkbyB7IFwKPiAr CUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTX05PX0ZXKHVuY29yZSwgeCk7IFwKPiArCSh1bmNvcmUp LT5mdW5jcy5yZWFkX2Z3X2RvbWFpbnMgPSB4IyNfcmVnX3JlYWRfZndfZG9tYWluczsgXAo+ICt9 IHdoaWxlICgwKQo+ICAgCj4gICBzdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUsCj4gICAJCQkgICBlbnVtIGZvcmNld2FrZV9kb21haW5faWQgZG9t YWluX2lkLAo+IEBAIC0xNTU5LDExICsxNTcxLDExIEBAIGludCBpbnRlbF91bmNvcmVfaW5pdF9t bWlvKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIAo+ICAgCWlmICghaW50ZWxfdW5j b3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSkgewo+ICAgCQlpZiAoSVNfR0VOKGk5MTUsIDUpKSB7 Cj4gLQkJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwo+IC0JCQlBU1NJ R05fUkVBRF9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwo+ICsJCQlBU1NJR05fV1JJVEVfTU1J T19WRlVOQ1NfTk9fRlcodW5jb3JlLCBnZW41KTsKPiArCQkJQVNTSUdOX1JFQURfTU1JT19WRlVO Q1NfTk9fRlcodW5jb3JlLCBnZW41KTsKPiAgIAkJfSBlbHNlIHsKPiAtCQkJQVNTSUdOX1dSSVRF X01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuMik7Cj4gLQkJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNT KHVuY29yZSwgZ2VuMik7Cj4gKwkJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DU19OT19GVyh1bmNv cmUsIGdlbjIpOwo+ICsJCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DU19OT19GVyh1bmNvcmUsIGdl bjIpOwo+ICAgCQl9Cj4gICAJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpIHsK PiAgIAkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuNik7Cj4gQEAgLTE1OTQs NiArMTYwNiwxMiBAQCBpbnQgaW50ZWxfdW5jb3JlX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUpCj4gICAJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuMTFf Znd0YWJsZSk7Cj4gICAJfQo+ICAgCj4gKwkvKiBtYWtlIHN1cmUgZncgZnVuY3MgYXJlIHNldCBp ZiBhbmQgb25seSBpZiB3ZSBoYXZlIGZ3Ki8KPiArCUdFTV9CVUdfT04oaW50ZWxfdW5jb3JlX2hh c19mb3JjZXdha2UodW5jb3JlKSAhPSAhIXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9nZXQpOwo+ ICsJR0VNX0JVR19PTihpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpICE9ICEhdW5j b3JlLT5mdW5jcy5mb3JjZV93YWtlX3B1dCk7Cj4gKwlHRU1fQlVHX09OKGludGVsX3VuY29yZV9o YXNfZm9yY2V3YWtlKHVuY29yZSkgIT0gISF1bmNvcmUtPmZ1bmNzLnJlYWRfZndfZG9tYWlucyk7 Cj4gKwlHRU1fQlVHX09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkgIT0gISF1 bmNvcmUtPmZ1bmNzLndyaXRlX2Z3X2RvbWFpbnMpOwo+ICsKPiAgIAlpZiAoSEFTX0ZQR0FfREJH X1VOQ0xBSU1FRChpOTE1KSkKPiAgIAkJdW5jb3JlLT5mbGFncyB8PSBVTkNPUkVfSEFTX0ZQR0Ff REJHX1VOQ0xBSU1FRDsKPiAgIAo+IEBAIC0xODY2LDYyICsxODg0LDYgQEAgaW50ZWxfdW5jb3Jl X2FybV91bmNsYWltZWRfbW1pb19kZXRlY3Rpb24oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl KQo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtc3RhdGljIGVudW0gZm9yY2V3YWtlX2Rv bWFpbnMKPiAtaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3JfcmVhZChzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUsCj4gLQkJCQlpOTE1X3JlZ190IHJlZykKPiAtewo+IC0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB1bmNvcmVfdG9faTkxNSh1bmNvcmUpOwo+IC0JdTMyIG9mZnNl dCA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KHJlZyk7Cj4gLQllbnVtIGZvcmNld2FrZV9kb21haW5z IGZ3X2RvbWFpbnM7Cj4gLQo+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewo+IC0JCWZ3 X2RvbWFpbnMgPSBfX2dlbjExX2Z3dGFibGVfcmVnX3JlYWRfZndfZG9tYWlucyh1bmNvcmUsIG9m ZnNldCk7Cj4gLQl9IGVsc2UgaWYgKEhBU19GV1RBQkxFKGk5MTUpKSB7Cj4gLQkJZndfZG9tYWlu cyA9IF9fZnd0YWJsZV9yZWdfcmVhZF9md19kb21haW5zKHVuY29yZSwgb2Zmc2V0KTsKPiAtCX0g ZWxzZSBpZiAoSU5URUxfR0VOKGk5MTUpID49IDYpIHsKPiAtCQlmd19kb21haW5zID0gX19nZW42 X3JlZ19yZWFkX2Z3X2RvbWFpbnModW5jb3JlLCBvZmZzZXQpOwo+IC0JfSBlbHNlIHsKPiAtCQkv KiBvbiBkZXZpY2VzIHdpdGggRlcgd2UgZXhwZWN0IHRvIGhpdCBvbmUgb2YgdGhlIGFib3ZlIGNh c2VzICovCj4gLQkJaWYgKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4gLQkJ CU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oaTkxNSkpOwo+IC0KPiAtCQlmd19kb21haW5zID0gMDsK PiAtCX0KPiAtCj4gLQlXQVJOX09OKGZ3X2RvbWFpbnMgJiB+dW5jb3JlLT5md19kb21haW5zKTsK PiAtCj4gLQlyZXR1cm4gZndfZG9tYWluczsKPiAtfQo+IC0KPiAtc3RhdGljIGVudW0gZm9yY2V3 YWtlX2RvbWFpbnMKPiAtaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3Jfd3JpdGUoc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlLAo+IC0JCQkJIGk5MTVfcmVnX3QgcmVnKQo+IC17Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHVuY29yZV90b19pOTE1KHVuY29yZSk7Cj4gLQl1 MzIgb2Zmc2V0ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKTsKPiAtCWVudW0gZm9yY2V3YWtl X2RvbWFpbnMgZndfZG9tYWluczsKPiAtCj4gLQlpZiAoSU5URUxfR0VOKGk5MTUpID49IDExKSB7 Cj4gLQkJZndfZG9tYWlucyA9IF9fZ2VuMTFfZnd0YWJsZV9yZWdfd3JpdGVfZndfZG9tYWlucyh1 bmNvcmUsIG9mZnNldCk7Cj4gLQl9IGVsc2UgaWYgKEhBU19GV1RBQkxFKGk5MTUpICYmICFJU19W QUxMRVlWSUVXKGk5MTUpKSB7Cj4gLQkJZndfZG9tYWlucyA9IF9fZnd0YWJsZV9yZWdfd3JpdGVf ZndfZG9tYWlucyh1bmNvcmUsIG9mZnNldCk7Cj4gLQl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA4 KSkgewo+IC0JCWZ3X2RvbWFpbnMgPSBfX2dlbjhfcmVnX3dyaXRlX2Z3X2RvbWFpbnModW5jb3Jl LCBvZmZzZXQpOwo+IC0JfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpIHsKPiAt CQlmd19kb21haW5zID0gRk9SQ0VXQUtFX1JFTkRFUjsKPiAtCX0gZWxzZSB7Cj4gLQkJLyogb24g ZGV2aWNlcyB3aXRoIEZXIHdlIGV4cGVjdCB0byBoaXQgb25lIG9mIHRoZSBhYm92ZSBjYXNlcyAq Lwo+IC0JCWlmIChpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKQo+IC0JCQlNSVNT SU5HX0NBU0UoSU5URUxfR0VOKGk5MTUpKTsKPiAtCj4gLQkJZndfZG9tYWlucyA9IDA7Cj4gLQl9 Cj4gLQo+IC0JV0FSTl9PTihmd19kb21haW5zICYgfnVuY29yZS0+ZndfZG9tYWlucyk7Cj4gLQo+ IC0JcmV0dXJuIGZ3X2RvbWFpbnM7Cj4gLX0KPiAtCj4gICAvKioKPiAgICAqIGludGVsX3VuY29y ZV9mb3JjZXdha2VfZm9yX3JlZyAtIHdoaWNoIGZvcmNld2FrZSBkb21haW5zIGFyZSBuZWVkZWQg dG8gYWNjZXNzCj4gICAgKiAJCQkJICAgIGEgcmVnaXN0ZXIKPiBAQCAtMTk0OCwxMCArMTkxMCwx MiBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWcoc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlLAo+ICAgCQlyZXR1cm4gMDsKPiAgIAo+ICAgCWlmIChvcCAmIEZXX1JFR19SRUFEKQo+ IC0JCWZ3X2RvbWFpbnMgPSBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl9yZWFkKHVuY29yZSwg cmVnKTsKPiArCQlmd19kb21haW5zID0gdW5jb3JlLT5mdW5jcy5yZWFkX2Z3X2RvbWFpbnModW5j b3JlLCByZWcpOwo+ICAgCj4gICAJaWYgKG9wICYgRldfUkVHX1dSSVRFKQo+IC0JCWZ3X2RvbWFp bnMgfD0gaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3Jfd3JpdGUodW5jb3JlLCByZWcpOwo+ICsJ CWZ3X2RvbWFpbnMgfD0gdW5jb3JlLT5mdW5jcy53cml0ZV9md19kb21haW5zKHVuY29yZSwgcmVn KTsKPiArCj4gKwlXQVJOX09OKGZ3X2RvbWFpbnMgJiB+dW5jb3JlLT5md19kb21haW5zKTsKPiAg IAo+ICAgCXJldHVybiBmd19kb21haW5zOwo+ICAgfQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Vu Y29yZS5oCj4gaW5kZXggZDZhZjNkZTcwMTIxLi43MmVmOGIyNjI5MzAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmgKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF91bmNvcmUuaAo+IEBAIC03MCw2ICs3MCwxMSBAQCBzdHJ1Y3QgaW50ZWxf dW5jb3JlX2Z1bmNzIHsKPiAgIAl2b2lkICgqZm9yY2Vfd2FrZV9wdXQpKHN0cnVjdCBpbnRlbF91 bmNvcmUgKnVuY29yZSwKPiAgIAkJCSAgICAgICBlbnVtIGZvcmNld2FrZV9kb21haW5zIGRvbWFp bnMpOwo+ICAgCj4gKwllbnVtIGZvcmNld2FrZV9kb21haW5zICgqcmVhZF9md19kb21haW5zKShz dHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gKwkJCQkJCSAgaTkxNV9yZWdfdCByKTsKPiAr CWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgKCp3cml0ZV9md19kb21haW5zKShzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUsCj4gKwkJCQkJCSAgIGk5MTVfcmVnX3Qgcik7Cj4gKwo+ICAgCXU4ICgq bW1pb19yZWFkYikoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAgCQkJIGk5MTVfcmVn X3QgciwgYm9vbCB0cmFjZSk7Cj4gICAJdTE2ICgqbW1pb19yZWFkdykoc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVz dHMvbW9ja191bmNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX3Vu Y29yZS5jCj4gaW5kZXggZmY4OTk5YzYzYTEyLi4zNDMwMTcyMTU0NjMgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfdW5jb3JlLmMKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvbW9ja191bmNvcmUuYwo+IEBAIC00MSw2ICs0MSw2 IEBAIF9fbm9wX3JlYWQoNjQpCj4gICAKPiAgIHZvaWQgbW9ja191bmNvcmVfaW5pdChzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gICB7Cj4gLQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1Mo dW5jb3JlLCBub3ApOwo+IC0JQVNTSUdOX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBub3ApOwo+ ICsJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTX05PX0ZXKHVuY29yZSwgbm9wKTsKPiArCUFTU0lH Tl9SRUFEX01NSU9fVkZVTkNTX05PX0ZXKHVuY29yZSwgbm9wKTsKPiAgIH0KPiAKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4