From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 5/6] drm/i915: dynamically allocate forcewake domains Date: Tue, 18 Jun 2019 10:23:13 +0100 Message-ID: <550f7eb9-7021-4dd2-2f8f-90f95bcec715@linux.intel.com> References: <20190617180935.505-1-daniele.ceraolospurio@intel.com> <20190617180935.505-6-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 mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 4B3C06E120 for ; Tue, 18 Jun 2019 09:23:16 +0000 (UTC) In-Reply-To: <20190617180935.505-6-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 Ck9uIDE3LzA2LzIwMTkgMTk6MDksIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4gV2Un ZCBsaWtlIHRvIGludHJvZHVjZSBhIGRpc3BsYXkgdW5jb3JlIHdpdGggbm8gZm9yY2V3YWtlIGRv bWFpbnMsIHNvCj4gbGV0J3MgYXZvaWQgd2FzdGluZyBtZW1vcnkgYW5kIGJlIHJlYWR5IHRvIGFs bG9jYXRlIG9ubHkgd2hhdCB3ZSBuZWVkLgo+IEV2ZW4gd2l0aG91dCBtdWx0aXBsZSB1bmNvcmUs IHdlIHN0aWxsIGRvbid0IG5lZWQgYWxsIHRoZSBkb21haW5zIG9uIGFsbAo+IGdlbnMuCgpMb29r cyBnb29kIGluIHByaW5jaXBsZSwgb25seSBhIGZldyBjb252ZXJzYXRpb24gcG9pbnRzIGJlbG93 LgoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBEYW5pZWxlIENlcmFvbG8gU3B1cmlvIDxkYW5pZWxlLmNl cmFvbG9zcHVyaW9AaW50ZWwuY29tPgo+IC0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmMgfCAxNTUgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQo+ICAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmggfCAgMTMgKy0tCj4gICAyIGZpbGVzIGNoYW5n ZWQsIDEwMiBpbnNlcnRpb25zKCspLCA2NiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF91bmNvcmUuYwo+IGluZGV4IGMwZjU1NjdlZTA5Ni4uN2YzMTE4MjdjM2VmIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMKPiBAQCAtMzQ0LDcgKzM0NCw3IEBAIGlu dGVsX3VuY29yZV9md19yZWxlYXNlX3RpbWVyKHN0cnVjdCBocnRpbWVyICp0aW1lcikKPiAgIHsK PiAgIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmRvbWFpbiA9Cj4gICAJ ICAgICAgIGNvbnRhaW5lcl9vZih0aW1lciwgc3RydWN0IGludGVsX3VuY29yZV9mb3JjZXdha2Vf ZG9tYWluLCB0aW1lcik7Cj4gLQlzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUgPSBmb3JjZXdh a2VfZG9tYWluX3RvX3VuY29yZShkb21haW4pOwo+ICsJc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlID0gZG9tYWluLT51bmNvcmU7Cj4gICAJdW5zaWduZWQgbG9uZyBpcnFmbGFnczsKPiAgIAo+ ICAgCWFzc2VydF9ycG1fZGV2aWNlX25vdF9zdXNwZW5kZWQodW5jb3JlLT5ycG0pOwo+IEBAIC0x MjkxLDIzICsxMjkxLDIzIEBAIGRvIHsgXAo+ICAgCSh1bmNvcmUpLT5mdW5jcy5yZWFkX2Z3X2Rv bWFpbnMgPSB4IyNfcmVnX3JlYWRfZndfZG9tYWluczsgXAo+ICAgfSB3aGlsZSAoMCkKPiAgIAo+ IC1zdGF0aWMgdm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUs Cj4gK3N0YXRpYyBpbnQgZndfZG9tYWluX2luaXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3Jl LAo+ICAgCQkJICAgZW51bSBmb3JjZXdha2VfZG9tYWluX2lkIGRvbWFpbl9pZCwKPiAgIAkJCSAg IGk5MTVfcmVnX3QgcmVnX3NldCwKPiAgIAkJCSAgIGk5MTVfcmVnX3QgcmVnX2FjaykKPiAgIHsK PiAgIAlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQ7Cj4gICAKPiAtCWlm IChXQVJOX09OKGRvbWFpbl9pZCA+PSBGV19ET01BSU5fSURfQ09VTlQpKQo+IC0JCXJldHVybjsK PiAtCj4gLQlkID0gJnVuY29yZS0+ZndfZG9tYWluW2RvbWFpbl9pZF07Cj4gKwlHRU1fQlVHX09O KGRvbWFpbl9pZCA+PSBGV19ET01BSU5fSURfQ09VTlQpOwo+ICAgCj4gLQlXQVJOX09OKGQtPndh a2VfY291bnQpOwoKSSB3b25kZXIgd2hhdCB3YXMgdGhpcyBmb3IuCgpEbyB5b3Ugd2FudCB0byBh ZGQgc29tZSBwcm90ZWN0aW9uIGFnYWluc3QgZG91YmxlIGluaXQgb2YgdGhlIHNhbWUgZG9tYWlu PwoKPiArCWQgPSBremFsbG9jKHNpemVvZigqZCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFkKQo+ ICsJCXJldHVybiAtRU5PTUVNOwo+ICAgCj4gICAJV0FSTl9PTighaTkxNV9tbWlvX3JlZ192YWxp ZChyZWdfc2V0KSk7Cj4gICAJV0FSTl9PTighaTkxNV9tbWlvX3JlZ192YWxpZChyZWdfYWNrKSk7 Cj4gICAKPiArCWQtPnVuY29yZSA9IHVuY29yZTsKPiAgIAlkLT53YWtlX2NvdW50ID0gMDsKPiAg IAlkLT5yZWdfc2V0ID0gdW5jb3JlLT5yZWdzICsgaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnX3Nl dCk7Cj4gICAJZC0+cmVnX2FjayA9IHVuY29yZS0+cmVncyArIGk5MTVfbW1pb19yZWdfb2Zmc2V0 KHJlZ19hY2spOwo+IEBAIC0xMzI0LDcgKzEzMjQsNiBAQCBzdGF0aWMgdm9pZCBmd19kb21haW5f aW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUsCj4gICAJQlVJTERfQlVHX09OKEZPUkNF V0FLRV9NRURJQV9WRUJPWDAgIT0gKDEgPDwgRldfRE9NQUlOX0lEX01FRElBX1ZFQk9YMCkpOwo+ ICAgCUJVSUxEX0JVR19PTihGT1JDRVdBS0VfTUVESUFfVkVCT1gxICE9ICgxIDw8IEZXX0RPTUFJ Tl9JRF9NRURJQV9WRUJPWDEpKTsKPiAgIAo+IC0KPiAgIAlkLT5tYXNrID0gQklUKGRvbWFpbl9p ZCk7Cj4gICAKPiAgIAlocnRpbWVyX2luaXQoJmQtPnRpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhS VElNRVJfTU9ERV9SRUwpOwo+IEBAIC0xMzMzLDYgKzEzMzIsMTAgQEAgc3RhdGljIHZvaWQgZndf ZG9tYWluX2luaXQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlLAo+ICAgCXVuY29yZS0+Zndf ZG9tYWlucyB8PSBCSVQoZG9tYWluX2lkKTsKPiAgIAo+ICAgCWZ3X2RvbWFpbl9yZXNldChkKTsK PiArCj4gKwl1bmNvcmUtPmZ3X2RvbWFpbltkb21haW5faWRdID0gZDsKPiArCj4gKwlyZXR1cm4g MDsKPiAgIH0KPiAgIAo+ICAgc3RhdGljIHZvaWQgZndfZG9tYWluX2Zpbmkoc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlLAo+IEBAIC0xMzQwLDc3ICsxMzQzLDkyIEBAIHN0YXRpYyB2b2lkIGZ3 X2RvbWFpbl9maW5pKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwKPiAgIHsKPiAgIAlzdHJ1 Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQ7Cj4gICAKPiAtCWlmIChXQVJOX09O KGRvbWFpbl9pZCA+PSBGV19ET01BSU5fSURfQ09VTlQpKQo+IC0JCXJldHVybjsKPiArCUdFTV9C VUdfT04oZG9tYWluX2lkID49IEZXX0RPTUFJTl9JRF9DT1VOVCk7Cj4gICAKPiAtCWQgPSAmdW5j b3JlLT5md19kb21haW5bZG9tYWluX2lkXTsKPiArCWQgPSBmZXRjaF9hbmRfemVybygmdW5jb3Jl LT5md19kb21haW5bZG9tYWluX2lkXSk7CgpNYXliZSBlYXJseSBpZiAhZCBoZXJlIGFuZCBmdW5j dGlvbiBmbG93IGp1c3QgY2FycmllcyBvbj8KCj4gKwl1bmNvcmUtPmZ3X2RvbWFpbnMgJj0gfkJJ VChkb21haW5faWQpOwo+ICAgCj4gLQlXQVJOX09OKGQtPndha2VfY291bnQpOwo+IC0JV0FSTl9P TihocnRpbWVyX2NhbmNlbCgmZC0+dGltZXIpKTsKPiAtCW1lbXNldChkLCAwLCBzaXplb2YoKmQp KTsKPiArCWlmIChkKSB7Cj4gKwkJV0FSTl9PTihkLT53YWtlX2NvdW50KTsKPiArCQlXQVJOX09O KGhydGltZXJfY2FuY2VsKCZkLT50aW1lcikpOwo+ICsJCWtmcmVlKGQpOwo+ICsJfQo+ICt9Cj4g ICAKPiAtCXVuY29yZS0+ZndfZG9tYWlucyAmPSB+QklUKGRvbWFpbl9pZCk7Cj4gK3N0YXRpYyB2 b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2Zpbmkoc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlKQo+ICt7Cj4gKwlzdHJ1Y3QgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQ7Cj4g KwlpbnQgdG1wOwo+ICsKPiArCWZvcl9lYWNoX2Z3X2RvbWFpbihkLCB1bmNvcmUsIHRtcCkKPiAr CQlmd19kb21haW5fZmluaSh1bmNvcmUsIGQtPmlkKTsKPiAgIH0KPiAgIAo+IC1zdGF0aWMgdm9p ZCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29y ZSkKPiArc3RhdGljIGludCBpbnRlbF91bmNvcmVfZndfZG9tYWluc19pbml0KHN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSA9IHVuY29yZS0+aTkxNTsKPiArCWludCByZXQ7Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFpbnRl bF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKTsKPiAgIAo+ICsjZGVmaW5lIF9fZndfZG9t YWluX2luaXQoaWRfXywgc2V0X18sIGFja19fKSBcCj4gKwlyZXQgPSBmd19kb21haW5faW5pdCh1 bmNvcmUsIChpZF9fKSwgKHNldF9fKSwgKGFja19fKSk7IFwKPiArCWlmIChyZXQpIFwKPiArCQln b3RvIG91dF9jbGVhbjsKCkhpZGRlbiBjb250cm9sIGZsb3cgaXMgc2xpZ2h0bHkgb2JqZWN0aW9u YWJsZSBidXQgSSBkb24ndCBvZmZlciBhbnkgbmljZSAKYWx0ZXJuYXRpdmVzIHNvIEkgZ3Vlc3Mg d2lsbCBoYXZlIHRvIHBhc3MuIE9yIG1heWJlIGFjY3VtdWxhdGUgdGhlIGVycm9yIAooZXJyIHw9 IGZ3X2RvbWFpbl9pbml0KC4uKSkgYXMgeW91IGdvIGFuZCB0aGVuIGNsZWFudXAgYXQgdGhlIGVu ZCBpZiBhbnkgCmZhaWxlZD8KCk9uIHRoZSBvdGhlciBoYW5kIHRoZSBpZGVhIHNsaWdodGx5IGNv bmZsaWN0cyB3aXRoIG15IG90aGVyIHN1Z2dlc3Rpb24gCnRvIHJlbmFtZSBleGlzdGluZyBmd19k b21haW5faW5pdCB0byBfX2Z3X2RvbWFpbl9pbml0IGFuZCBjYWxsIHRoZSBtYWNybyAKZndfZG9t YWluX2luaXQgYW5kIGF2b2lkIGFsbCB0aGUgY2h1cm4gYmVsb3cuCgo+ICsKPiAgIAlpZiAoSU5U RUxfR0VOKGk5MTUpID49IDExKSB7Cj4gICAJCWludCBpOwo+ICAgCj4gLQkJdW5jb3JlLT5mdW5j cy5mb3JjZV93YWtlX2dldCA9Cj4gLQkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFsbGJhY2s7Cj4g KwkJdW5jb3JlLT5mdW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFs bGJhY2s7Cj4gICAJCXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBmd19kb21haW5zX3B1 dDsKPiAtCQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZXX0RPTUFJTl9JRF9SRU5ERVIsCj4gLQkJ CSAgICAgICBGT1JDRVdBS0VfUkVOREVSX0dFTjksCj4gLQkJCSAgICAgICBGT1JDRVdBS0VfQUNL X1JFTkRFUl9HRU45KTsKPiAtCQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZXX0RPTUFJTl9JRF9C TElUVEVSLAo+IC0JCQkgICAgICAgRk9SQ0VXQUtFX0JMSVRURVJfR0VOOSwKPiAtCQkJICAgICAg IEZPUkNFV0FLRV9BQ0tfQkxJVFRFUl9HRU45KTsKPiArCQlfX2Z3X2RvbWFpbl9pbml0KEZXX0RP TUFJTl9JRF9SRU5ERVIsCj4gKwkJCQkgRk9SQ0VXQUtFX1JFTkRFUl9HRU45LAo+ICsJCQkJIEZP UkNFV0FLRV9BQ0tfUkVOREVSX0dFTjkpOwo+ICsJCV9fZndfZG9tYWluX2luaXQoRldfRE9NQUlO X0lEX0JMSVRURVIsCj4gKwkJCQkgRk9SQ0VXQUtFX0JMSVRURVJfR0VOOSwKPiArCQkJCSBGT1JD RVdBS0VfQUNLX0JMSVRURVJfR0VOOSk7Cj4gKwo+ICAgCQlmb3IgKGkgPSAwOyBpIDwgSTkxNV9N QVhfVkNTOyBpKyspIHsKPiAgIAkJCWlmICghSEFTX0VOR0lORShpOTE1LCBfVkNTKGkpKSkKPiAg IAkJCQljb250aW51ZTsKPiAgIAo+IC0JCQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZXX0RPTUFJ Tl9JRF9NRURJQV9WREJPWDAgKyBpLAo+IC0JCQkJICAgICAgIEZPUkNFV0FLRV9NRURJQV9WREJP WF9HRU4xMShpKSwKPiAtCQkJCSAgICAgICBGT1JDRVdBS0VfQUNLX01FRElBX1ZEQk9YX0dFTjEx KGkpKTsKPiArCQkJX19md19kb21haW5faW5pdChGV19ET01BSU5fSURfTUVESUFfVkRCT1gwICsg aSwKPiArCQkJCQkgRk9SQ0VXQUtFX01FRElBX1ZEQk9YX0dFTjExKGkpLAo+ICsJCQkJCSBGT1JD RVdBS0VfQUNLX01FRElBX1ZEQk9YX0dFTjExKGkpKTsKPiAgIAkJfQo+ICAgCQlmb3IgKGkgPSAw OyBpIDwgSTkxNV9NQVhfVkVDUzsgaSsrKSB7Cj4gICAJCQlpZiAoIUhBU19FTkdJTkUoaTkxNSwg X1ZFQ1MoaSkpKQo+ICAgCQkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWZ3X2RvbWFpbl9pbml0KHVu Y29yZSwgRldfRE9NQUlOX0lEX01FRElBX1ZFQk9YMCArIGksCj4gLQkJCQkgICAgICAgRk9SQ0VX QUtFX01FRElBX1ZFQk9YX0dFTjExKGkpLAo+IC0JCQkJICAgICAgIEZPUkNFV0FLRV9BQ0tfTUVE SUFfVkVCT1hfR0VOMTEoaSkpOwo+ICsJCQlfX2Z3X2RvbWFpbl9pbml0KEZXX0RPTUFJTl9JRF9N RURJQV9WRUJPWDAgKyBpLAo+ICsJCQkJCSBGT1JDRVdBS0VfTUVESUFfVkVCT1hfR0VOMTEoaSks Cj4gKwkJCQkJIEZPUkNFV0FLRV9BQ0tfTUVESUFfVkVCT1hfR0VOMTEoaSkpOwo+ICAgCQl9Cj4g ICAJfSBlbHNlIGlmIChJU19HRU5fUkFOR0UoaTkxNSwgOSwgMTApKSB7Cj4gLQkJdW5jb3JlLT5m dW5jcy5mb3JjZV93YWtlX2dldCA9Cj4gLQkJCWZ3X2RvbWFpbnNfZ2V0X3dpdGhfZmFsbGJhY2s7 Cj4gKwkJdW5jb3JlLT5mdW5jcy5mb3JjZV93YWtlX2dldCA9IGZ3X2RvbWFpbnNfZ2V0X3dpdGhf ZmFsbGJhY2s7Cj4gICAJCXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9wdXQgPSBmd19kb21haW5z X3B1dDsKPiAtCQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZXX0RPTUFJTl9JRF9SRU5ERVIsCj4g LQkJCSAgICAgICBGT1JDRVdBS0VfUkVOREVSX0dFTjksCj4gLQkJCSAgICAgICBGT1JDRVdBS0Vf QUNLX1JFTkRFUl9HRU45KTsKPiAtCQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZXX0RPTUFJTl9J RF9CTElUVEVSLAo+IC0JCQkgICAgICAgRk9SQ0VXQUtFX0JMSVRURVJfR0VOOSwKPiAtCQkJICAg ICAgIEZPUkNFV0FLRV9BQ0tfQkxJVFRFUl9HRU45KTsKPiAtCQlmd19kb21haW5faW5pdCh1bmNv cmUsIEZXX0RPTUFJTl9JRF9NRURJQSwKPiAtCQkJICAgICAgIEZPUkNFV0FLRV9NRURJQV9HRU45 LCBGT1JDRVdBS0VfQUNLX01FRElBX0dFTjkpOwo+ICsJCV9fZndfZG9tYWluX2luaXQoRldfRE9N QUlOX0lEX1JFTkRFUiwKPiArCQkJCSBGT1JDRVdBS0VfUkVOREVSX0dFTjksCj4gKwkJCQkgRk9S Q0VXQUtFX0FDS19SRU5ERVJfR0VOOSk7Cj4gKwkJX19md19kb21haW5faW5pdChGV19ET01BSU5f SURfQkxJVFRFUiwKPiArCQkJCSBGT1JDRVdBS0VfQkxJVFRFUl9HRU45LAo+ICsJCQkJIEZPUkNF V0FLRV9BQ0tfQkxJVFRFUl9HRU45KTsKPiArCQlfX2Z3X2RvbWFpbl9pbml0KEZXX0RPTUFJTl9J RF9NRURJQSwKPiArCQkJCSBGT1JDRVdBS0VfTUVESUFfR0VOOSwKPiArCQkJCSBGT1JDRVdBS0Vf QUNLX01FRElBX0dFTjkpOwo+ICAgCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSB8fCBJ U19DSEVSUllWSUVXKGk5MTUpKSB7Cj4gICAJCXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9nZXQg PSBmd19kb21haW5zX2dldDsKPiAgIAkJdW5jb3JlLT5mdW5jcy5mb3JjZV93YWtlX3B1dCA9IGZ3 X2RvbWFpbnNfcHV0Owo+IC0JCWZ3X2RvbWFpbl9pbml0KHVuY29yZSwgRldfRE9NQUlOX0lEX1JF TkRFUiwKPiAtCQkJICAgICAgIEZPUkNFV0FLRV9WTFYsIEZPUkNFV0FLRV9BQ0tfVkxWKTsKPiAt CQlmd19kb21haW5faW5pdCh1bmNvcmUsIEZXX0RPTUFJTl9JRF9NRURJQSwKPiAtCQkJICAgICAg IEZPUkNFV0FLRV9NRURJQV9WTFYsIEZPUkNFV0FLRV9BQ0tfTUVESUFfVkxWKTsKPiArCQlfX2Z3 X2RvbWFpbl9pbml0KEZXX0RPTUFJTl9JRF9SRU5ERVIsCj4gKwkJCQkgRk9SQ0VXQUtFX1ZMViwg Rk9SQ0VXQUtFX0FDS19WTFYpOwo+ICsJCV9fZndfZG9tYWluX2luaXQoRldfRE9NQUlOX0lEX01F RElBLAo+ICsJCQkJIEZPUkNFV0FLRV9NRURJQV9WTFYsIEZPUkNFV0FLRV9BQ0tfTUVESUFfVkxW KTsKPiAgIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoaTkxNSkgfHwgSVNfQlJPQURXRUxMKGk5MTUp KSB7Cj4gICAJCXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9nZXQgPQo+ICAgCQkJZndfZG9tYWlu c19nZXRfd2l0aF90aHJlYWRfc3RhdHVzOwo+ICAgCQl1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2Vf cHV0ID0gZndfZG9tYWluc19wdXQ7Cj4gLQkJZndfZG9tYWluX2luaXQodW5jb3JlLCBGV19ET01B SU5fSURfUkVOREVSLAo+IC0JCQkgICAgICAgRk9SQ0VXQUtFX01ULCBGT1JDRVdBS0VfQUNLX0hT Vyk7Cj4gKwkJX19md19kb21haW5faW5pdChGV19ET01BSU5fSURfUkVOREVSLAo+ICsJCQkJIEZP UkNFV0FLRV9NVCwgRk9SQ0VXQUtFX0FDS19IU1cpOwo+ICAgCX0gZWxzZSBpZiAoSVNfSVZZQlJJ REdFKGk5MTUpKSB7Cj4gICAJCXUzMiBlY29idXM7Cj4gICAKPiBAQCAtMTQzNyw4ICsxNDU1LDgg QEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdChzdHJ1Y3QgaW50ZWxf dW5jb3JlICp1bmNvcmUpCj4gICAJCV9fcmF3X3VuY29yZV93cml0ZTMyKHVuY29yZSwgRk9SQ0VX QUtFLCAwKTsKPiAgIAkJX19yYXdfcG9zdGluZ19yZWFkKHVuY29yZSwgRUNPQlVTKTsKPiAgIAo+ IC0JCWZ3X2RvbWFpbl9pbml0KHVuY29yZSwgRldfRE9NQUlOX0lEX1JFTkRFUiwKPiAtCQkJICAg ICAgIEZPUkNFV0FLRV9NVCwgRk9SQ0VXQUtFX01UX0FDSyk7Cj4gKwkJX19md19kb21haW5faW5p dChGV19ET01BSU5fSURfUkVOREVSLAo+ICsJCQkJIEZPUkNFV0FLRV9NVCwgRk9SQ0VXQUtFX01U X0FDSyk7Cj4gICAKPiAgIAkJc3Bpbl9sb2NrX2lycSgmdW5jb3JlLT5sb2NrKTsKPiAgIAkJZndf ZG9tYWluc19nZXRfd2l0aF90aHJlYWRfc3RhdHVzKHVuY29yZSwgRk9SQ0VXQUtFX1JFTkRFUik7 Cj4gQEAgLTE0NDksMTkgKzE0NjcsMjcgQEAgc3RhdGljIHZvaWQgaW50ZWxfdW5jb3JlX2Z3X2Rv bWFpbnNfaW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gICAJCWlmICghKGVjb2J1 cyAmIEZPUkNFV0FLRV9NVF9FTkFCTEUpKSB7Cj4gICAJCQlEUk1fSU5GTygiTm8gTVQgZm9yY2V3 YWtlIGF2YWlsYWJsZSBvbiBJdnlicmlkZ2UsIHRoaXMgY2FuIHJlc3VsdCBpbiBpc3N1ZXNcbiIp Owo+ICAgCQkJRFJNX0lORk8oIndoZW4gdXNpbmcgdmJsYW5rLXN5bmNlZCBwYXJ0aWFsIHNjcmVl biB1cGRhdGVzLlxuIik7Cj4gLQkJCWZ3X2RvbWFpbl9pbml0KHVuY29yZSwgRldfRE9NQUlOX0lE X1JFTkRFUiwKPiAtCQkJCSAgICAgICBGT1JDRVdBS0UsIEZPUkNFV0FLRV9BQ0spOwo+ICsJCQlf X2Z3X2RvbWFpbl9pbml0KEZXX0RPTUFJTl9JRF9SRU5ERVIsCj4gKwkJCQkJIEZPUkNFV0FLRSwg Rk9SQ0VXQUtFX0FDSyk7Cj4gICAJCX0KPiAgIAl9IGVsc2UgaWYgKElTX0dFTihpOTE1LCA2KSkg ewo+ICAgCQl1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2VfZ2V0ID0KPiAgIAkJCWZ3X2RvbWFpbnNf Z2V0X3dpdGhfdGhyZWFkX3N0YXR1czsKPiAgIAkJdW5jb3JlLT5mdW5jcy5mb3JjZV93YWtlX3B1 dCA9IGZ3X2RvbWFpbnNfcHV0Owo+IC0JCWZ3X2RvbWFpbl9pbml0KHVuY29yZSwgRldfRE9NQUlO X0lEX1JFTkRFUiwKPiAtCQkJICAgICAgIEZPUkNFV0FLRSwgRk9SQ0VXQUtFX0FDSyk7Cj4gKwkJ X19md19kb21haW5faW5pdChGV19ET01BSU5fSURfUkVOREVSLAo+ICsJCQkJIEZPUkNFV0FLRSwg Rk9SQ0VXQUtFX0FDSyk7Cj4gICAJfQo+ICAgCj4gKyN1bmRlZiBfX2Z3X2RvbWFpbl9pbml0Cj4g Kwo+ICAgCS8qIEFsbCBmdXR1cmUgcGxhdGZvcm1zIGFyZSBleHBlY3RlZCB0byByZXF1aXJlIGNv bXBsZXggcG93ZXIgZ2F0aW5nICovCj4gICAJV0FSTl9PTih1bmNvcmUtPmZ3X2RvbWFpbnMgPT0g MCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gKwo+ICtvdXRfY2xlYW46Cj4gKwlpbnRlbF91bmNvcmVf ZndfZG9tYWluc19maW5pKHVuY29yZSk7Cj4gKwlyZXR1cm4gcmV0Owo+ICAgfQo+ICAgCj4gICAj ZGVmaW5lIEFTU0lHTl9GV19ET01BSU5TX1RBQkxFKHVuY29yZSwgZCkgXAo+IEBAIC0xNTYyLDEz ICsxNTg4LDE3IEBAIHN0YXRpYyB2b2lkIHVuY29yZV9yYXdfaW5pdChzdHJ1Y3QgaW50ZWxfdW5j b3JlICp1bmNvcmUpCj4gICAJfQo+ICAgfQo+ICAgCj4gLXN0YXRpYyB2b2lkIHVuY29yZV9mb3Jj ZXdha2VfaW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gK3N0YXRpYyBpbnQgdW5j b3JlX2ZvcmNld2FrZV9pbml0KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIHsKPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHVuY29yZS0+aTkxNTsKPiArCWludCBy ZXQ7Cj4gICAKPiAgIAlHRU1fQlVHX09OKCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNv cmUpKTsKPiAgIAo+IC0JaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdCh1bmNvcmUpOwo+ICsJ cmV0ID0gaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfaW5pdCh1bmNvcmUpOwo+ICsJaWYgKHJldCkK PiArCQlyZXR1cm4gcmV0Owo+ICsKPiAgIAlmb3JjZXdha2VfZWFybHlfc2FuaXRpemUodW5jb3Jl LCAwKTsKPiAgIAo+ICAgCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpIHsKPiBAQCAtMTYw MSw2ICsxNjMxLDggQEAgc3RhdGljIHZvaWQgdW5jb3JlX2ZvcmNld2FrZV9pbml0KHN0cnVjdCBp bnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIAo+ICAgCXVuY29yZS0+cG1pY19idXNfYWNjZXNzX25i Lm5vdGlmaWVyX2NhbGwgPSBpOTE1X3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcjsKPiAgIAlpb3Nm X21iaV9yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXIoJnVuY29yZS0+cG1pY19idXNf YWNjZXNzX25iKTsKPiArCj4gKwlyZXR1cm4gMDsKPiAgIH0KPiAgIAo+ICAgaW50IGludGVsX3Vu Y29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+IEBAIC0xNjE5LDEw ICsxNjUxLDEzIEBAIGludCBpbnRlbF91bmNvcmVfaW5pdF9tbWlvKHN0cnVjdCBpbnRlbF91bmNv cmUgKnVuY29yZSkKPiAgIAo+ICAgCXVuY29yZS0+dW5jbGFpbWVkX21taW9fY2hlY2sgPSAxOwo+ ICAgCj4gLQlpZiAoIWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4gKwlpZiAo IWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpIHsKPiAgIAkJdW5jb3JlX3Jhd19p bml0KHVuY29yZSk7Cj4gLQllbHNlCj4gLQkJdW5jb3JlX2ZvcmNld2FrZV9pbml0KHVuY29yZSk7 Cj4gKwl9IGVsc2Ugewo+ICsJCXJldCA9IHVuY29yZV9mb3JjZXdha2VfaW5pdCh1bmNvcmUpOwo+ ICsJCWlmIChyZXQpCj4gKwkJCWdvdG8gb3V0X21taW9fY2xlYW51cDsKPiArCX0KPiAgIAo+ICAg CS8qIG1ha2Ugc3VyZSBmdyBmdW5jcyBhcmUgc2V0IGlmIGFuZCBvbmx5IGlmIHdlIGhhdmUgZncq Lwo+ICAgCUdFTV9CVUdfT04oaW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSAhPSAh IXVuY29yZS0+ZnVuY3MuZm9yY2Vfd2FrZV9nZXQpOwo+IEBAIC0xNjQ0LDYgKzE2NzksMTEgQEAg aW50IGludGVsX3VuY29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ ICAgCQlEUk1fREVCVUcoInVuY2xhaW1lZCBtbWlvIGRldGVjdGVkIG9uIHVuY29yZSBpbml0LCBj bGVhcmluZ1xuIik7Cj4gICAKPiAgIAlyZXR1cm4gMDsKPiArCj4gK291dF9tbWlvX2NsZWFudXA6 Cj4gKwl1bmNvcmVfbW1pb19jbGVhbnVwKHVuY29yZSk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAg IH0KPiAgIAo+ICAgLyoKPiBAQCAtMTY4OSw2ICsxNzI5LDcgQEAgdm9pZCBpbnRlbF91bmNvcmVf ZmluaV9tbWlvKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIAkJaW9zZl9tYmlfdW5y ZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXJfdW5sb2NrZWQoCj4gICAJCQkmdW5jb3Jl LT5wbWljX2J1c19hY2Nlc3NfbmIpOwo+ICAgCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Jlc2V0 KHVuY29yZSk7Cj4gKwkJaW50ZWxfdW5jb3JlX2Z3X2RvbWFpbnNfZmluaSh1bmNvcmUpOwo+ICAg CQlpb3NmX21iaV9wdW5pdF9yZWxlYXNlKCk7Cj4gICAJfQo+ICAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfdW5jb3JlLmgKPiBpbmRleCA4NzkyNTI3MzViYmEuLmJiZmYyODFiODgwZCAxMDA2NDQK PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oCj4gQEAgLTEyNiw2ICsxMjYsNyBAQCBzdHJ1 Y3QgaW50ZWxfdW5jb3JlIHsKPiAgIAllbnVtIGZvcmNld2FrZV9kb21haW5zIGZ3X2RvbWFpbnNf c2F2ZWQ7IC8qIHVzZXIgZG9tYWlucyBzYXZlZCBmb3IgUzMgKi8KPiAgIAo+ICAgCXN0cnVjdCBp bnRlbF91bmNvcmVfZm9yY2V3YWtlX2RvbWFpbiB7Cj4gKwkJc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlOwo+ICAgCQllbnVtIGZvcmNld2FrZV9kb21haW5faWQgaWQ7Cj4gICAJCWVudW0gZm9y Y2V3YWtlX2RvbWFpbnMgbWFzazsKPiAgIAkJdW5zaWduZWQgaW50IHdha2VfY291bnQ7Cj4gQEAg LTEzMyw3ICsxMzQsNyBAQCBzdHJ1Y3QgaW50ZWxfdW5jb3JlIHsKPiAgIAkJc3RydWN0IGhydGlt ZXIgdGltZXI7Cj4gICAJCXUzMiBfX2lvbWVtICpyZWdfc2V0Owo+ICAgCQl1MzIgX19pb21lbSAq cmVnX2FjazsKPiAtCX0gZndfZG9tYWluW0ZXX0RPTUFJTl9JRF9DT1VOVF07Cj4gKwl9ICpmd19k b21haW5bRldfRE9NQUlOX0lEX0NPVU5UXTsKClRoZSBhcnJheSBpdHNlbGYgY291bGQgYWxzbyBi ZSBtYWRlIGR5bmFtaWMsIG5vPyBUbyBtdWNoIGhhc3NsZSBmb3IgdmVyeSAKbGl0dGxlIGdhaW4/ Cgo+ICAgCj4gICAJc3RydWN0IHsKPiAgIAkJdW5zaWduZWQgaW50IGNvdW50Owo+IEBAIC0xNDcs MTggKzE0OCwxMiBAQCBzdHJ1Y3QgaW50ZWxfdW5jb3JlIHsKPiAgIAo+ICAgLyogSXRlcmF0ZSBv dmVyIGluaXRpYWxpc2VkIGZ3IGRvbWFpbnMgKi8KPiAgICNkZWZpbmUgZm9yX2VhY2hfZndfZG9t YWluX21hc2tlZChkb21haW5fXywgbWFza19fLCB1bmNvcmVfXywgdG1wX18pIFwKPiAtCWZvciAo dG1wX18gPSAobWFza19fKTsgXAo+IC0JICAgICB0bXBfXyA/IChkb21haW5fXyA9ICYodW5jb3Jl X18pLT5md19kb21haW5bX19tYXNrX25leHRfYml0KHRtcF9fKV0pLCAxIDogMDspCj4gKwlmb3Ig KHRtcF9fID0gKG1hc2tfXyk7IHRtcF9fIDspIFwKPiArCQlmb3JfZWFjaF9pZihkb21haW5fXyA9 ICh1bmNvcmVfXyktPmZ3X2RvbWFpbltfX21hc2tfbmV4dF9iaXQodG1wX18pXSkKPiAgIAo+ICAg I2RlZmluZSBmb3JfZWFjaF9md19kb21haW4oZG9tYWluX18sIHVuY29yZV9fLCB0bXBfXykgXAo+ ICAgCWZvcl9lYWNoX2Z3X2RvbWFpbl9tYXNrZWQoZG9tYWluX18sICh1bmNvcmVfXyktPmZ3X2Rv bWFpbnMsIHVuY29yZV9fLCB0bXBfXykKPiAgIAo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCBpbnRl bF91bmNvcmUgKgo+IC1mb3JjZXdha2VfZG9tYWluX3RvX3VuY29yZShjb25zdCBzdHJ1Y3QgaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9kb21haW4gKmQpCj4gLXsKPiAtCXJldHVybiBjb250YWluZXJf b2YoZCwgc3RydWN0IGludGVsX3VuY29yZSwgZndfZG9tYWluW2QtPmlkXSk7Cj4gLX0KPiAtCj4g ICBzdGF0aWMgaW5saW5lIGJvb2wKPiAgIGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKGNvbnN0 IHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAgIHsKPiAKClJlZ2FyZHMsCgpUdnJ0a28K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4