From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 4/6] drm/i915: skip forcewake actions on forcewake-less uncore Date: Tue, 18 Jun 2019 10:00:40 +0100 Message-ID: <3bf6ae46-ac6d-b5f5-7e2e-888819bdbc6b@linux.intel.com> References: <20190617180935.505-1-daniele.ceraolospurio@intel.com> <20190617180935.505-5-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 mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7002D6E11E for ; Tue, 18 Jun 2019 09:00:42 +0000 (UTC) In-Reply-To: <20190617180935.505-5-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 Ck9uIDE3LzA2LzIwMTkgMTk6MDksIERhbmllbGUgQ2VyYW9sbyBTcHVyaW8gd3JvdGU6Cj4gV2Ug YWx3YXlzIGNhbGwgc29tZSBvZiB0aGUgc2V0dXAvY2xlYW51cCBmdW5jdGlvbnMgZm9yIGZvcmNl d2FrZSwgZXZlbgo+IGlmIHRoZSBmZWF0dXJlIGlzIG5vdCBhY3R1YWxseSBhdmFpbGFibGUuIFNr aXBwaW5nIHRoZXNlIG9wZXJhdGlvbnMgaWYKPiBmb3JjZXdha2UgaXMgbm90IGF2YWlsYWJsZSBz YXZlcyB1cyBzb21lIG9wZXJhdGlvbnMgb24gb2xkZXIgZ2VucyBhbmQKPiBwcmVwYXJlcyB1cyBm b3IgaGF2aW5nIGEgZm9yY2V3YWtlLWxlc3MgZGlzcGxheSB1bmNvcmUuCj4gVGhlIHN1c3BlbmQv cmVzdW1lIGZ1bmN0aW9ucyBoYXZlIGFsc28gYmVlbiByZW5hbWVkIHRvIGNsZWFybHkgaW5kaWNh dGUKPiB0aGF0IHRoZXkgb25seSBvcGVyYXRlIG9uIGZvcmNld2FrZSBzdGF0dXMuCj4gCj4gU2ln bmVkLW9mZi1ieTogRGFuaWVsZSBDZXJhb2xvIFNwdXJpbyA8ZGFuaWVsZS5jZXJhb2xvc3B1cmlv QGludGVsLmNvbT4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAg IHwgIDE1ICstLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmMgfCAxNDcg KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfdW5jb3JlLmggfCAgIDggKy0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTAxIGluc2VydGlvbnMo KyksIDY5IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IGQx MTMyOTZjYmUzNC4uOTViMzZmZTE3Zjk5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4g QEAgLTk5Niw3ICs5OTYsNyBAQCBzdGF0aWMgaW50IGk5MTVfZHJpdmVyX2luaXRfbW1pbyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gICAKPiAgIAlpbnRlbF9kZXZpY2VfaW5m b19pbml0X21taW8oZGV2X3ByaXYpOwo+ICAgCj4gLQlpbnRlbF91bmNvcmVfcHJ1bmVfbW1pb19k b21haW5zKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiArCWludGVsX3VuY29yZV9wcnVuZV9mb3JjZXdh a2VfZG9tYWlucygmZGV2X3ByaXYtPnVuY29yZSk7Cj4gICAKPiAgIAlpbnRlbF91Y19pbml0X21t aW8oZGV2X3ByaXYpOwo+ICAgCj4gQEAgLTIxNTIsNyArMjE1Miw3IEBAIHN0YXRpYyBpbnQgaTkx NV9kcm1fc3VzcGVuZF9sYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgaGliZXJuYXRp b24pCj4gICAKPiAgIAlpOTE1X2dlbV9zdXNwZW5kX2xhdGUoZGV2X3ByaXYpOwo+ICAgCj4gLQlp bnRlbF91bmNvcmVfc3VzcGVuZCgmZGV2X3ByaXYtPnVuY29yZSk7Cj4gKwlpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3N1c3BlbmQoJmRldl9wcml2LT51bmNvcmUpOwo+ICAgCj4gICAJaW50ZWxfcG93 ZXJfZG9tYWluc19zdXNwZW5kKGRldl9wcml2LAo+ICAgCQkJCSAgICBnZXRfc3VzcGVuZF9tb2Rl KGRldl9wcml2LCBoaWJlcm5hdGlvbikpOwo+IEBAIC0yMzQ4LDcgKzIzNDgsMTAgQEAgc3RhdGlj IGludCBpOTE1X2RybV9yZXN1bWVfZWFybHkoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAkJ RFJNX0VSUk9SKCJSZXN1bWUgcHJlcGFyZSBmYWlsZWQ6ICVkLCBjb250aW51aW5nIGFueXdheVxu IiwKPiAgIAkJCSAgcmV0KTsKPiAgIAo+IC0JaW50ZWxfdW5jb3JlX3Jlc3VtZV9lYXJseSgmZGV2 X3ByaXYtPnVuY29yZSk7Cj4gKwlpZiAoaW50ZWxfdW5jb3JlX3VuY2xhaW1lZF9tbWlvKCZkZXZf cHJpdi0+dW5jb3JlKSkKPiArCQlEUk1fREVCVUcoInVuY2xhaW1lZCBtbWlvIGRldGVjdGVkIG9u IHJlc3VtZSwgY2xlYXJpbmdcbiIpOwo+ICsKCldoeSBkb2VzIHRoaXMgYml0IG5lZWRzIHRvIGJl IHB1bGxlZCB1cCB0byB0aGlzIGxldmVsPyBNeSBmaXJzdCBsaW5lIG9mIAp0aGlua2luZyBpcyB0 aGF0IHdlIHNob3VsZCBhaW0gdG8ga2VlcCB0aGUgY29tcG9uZW50IHNwZWNpZmljIHN0ZXBzIApk b3duLCBpZiBwb3NzaWJsZS4KCj4gKwlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3Jlc3VtZV9lYXJs eSgmZGV2X3ByaXYtPnVuY29yZSk7Cj4gICAKPiAgIAlpOTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVs dHMoZGV2X3ByaXYpOwo+ICAgCj4gQEAgLTI5MjMsNyArMjkyNiw3IEBAIHN0YXRpYyBpbnQgaW50 ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gICAKPiAgIAlpbnRlbF9y dW50aW1lX3BtX2Rpc2FibGVfaW50ZXJydXB0cyhkZXZfcHJpdik7Cj4gICAKPiAtCWludGVsX3Vu Y29yZV9zdXNwZW5kKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiArCWludGVsX3VuY29yZV9mb3JjZXdh a2Vfc3VzcGVuZCgmZGV2X3ByaXYtPnVuY29yZSk7Cj4gICAKPiAgIAlyZXQgPSAwOwo+ICAgCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDExKSB7Cj4gQEAgLTI5NDAsNyArMjk0Myw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4gICAK PiAgIAlpZiAocmV0KSB7Cj4gICAJCURSTV9FUlJPUigiUnVudGltZSBzdXNwZW5kIGZhaWxlZCwg ZGlzYWJsaW5nIGl0ICglZClcbiIsIHJldCk7Cj4gLQkJaW50ZWxfdW5jb3JlX3J1bnRpbWVfcmVz dW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiArCQlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3J1bnRp bWVfcmVzdW1lKCZkZXZfcHJpdi0+dW5jb3JlKTsKPiAgIAo+ICAgCQlpbnRlbF9ydW50aW1lX3Bt X2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsKPiAgIAo+IEBAIC0zMDM4LDcgKzMwNDEsNyBA QCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmtkZXYpCj4g ICAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdiwgdHJ1ZSk7Cj4gICAJfQo+ICAg Cj4gLQlpbnRlbF91bmNvcmVfcnVudGltZV9yZXN1bWUoJmRldl9wcml2LT51bmNvcmUpOwo+ICsJ aW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9ydW50aW1lX3Jlc3VtZSgmZGV2X3ByaXYtPnVuY29yZSk7 Cj4gICAKPiAgIAlpbnRlbF9ydW50aW1lX3BtX2VuYWJsZV9pbnRlcnJ1cHRzKGRldl9wcml2KTsK PiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCj4gaW5kZXggODhhNjliZjcxM2M5 Li5jMGY1NTY3ZWUwOTYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf dW5jb3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91bmNvcmUuYwo+IEBA IC00ODUsMTIgKzQ4NSwxMSBAQCBjaGVja19mb3JfdW5jbGFpbWVkX21taW8oc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlKQo+ICAgCXJldHVybiByZXQ7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHZv aWQgX19pbnRlbF91bmNvcmVfZWFybHlfc2FuaXRpemUoc3RydWN0IGludGVsX3VuY29yZSAqdW5j b3JlLAo+ICtzdGF0aWMgdm9pZCBmb3JjZXdha2VfZWFybHlfc2FuaXRpemUoc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlLAo+ICAgCQkJCQkgIHVuc2lnbmVkIGludCByZXN0b3JlX2ZvcmNld2Fr ZSkKPiAgIHsKPiAtCS8qIGNsZWFyIG91dCB1bmNsYWltZWQgcmVnIGRldGVjdGlvbiBiaXQgKi8K PiAtCWlmIChjaGVja19mb3JfdW5jbGFpbWVkX21taW8odW5jb3JlKSkKPiAtCQlEUk1fREVCVUco InVuY2xhaW1lZCBtbWlvIGRldGVjdGVkIG9uIHVuY29yZSBpbml0LCBjbGVhcmluZ1xuIik7Cj4g KwlpZiAoIWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4gKwkJcmV0dXJuOwo+ ICAgCj4gICAJLyogV2FEaXNhYmxlU2hhZG93UmVnRm9yQ3BkOmNodiAqLwo+ICAgCWlmIChJU19D SEVSUllWSUVXKHVuY29yZS0+aTkxNSkpIHsKPiBAQCAtNTEzLDggKzUxMiwxMSBAQCBzdGF0aWMg dm9pZCBfX2ludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6ZShzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUsCj4gICAJaW9zZl9tYmlfcHVuaXRfcmVsZWFzZSgpOwo+ICAgfQo+ICAgCj4gLXZvaWQg aW50ZWxfdW5jb3JlX3N1c3BlbmQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICt2b2lk IGludGVsX3VuY29yZV9mb3JjZXdha2Vfc3VzcGVuZChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNv cmUpCj4gICB7Cj4gKwlpZiAoIWludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpCj4g KwkJcmV0dXJuOwo+ICsKPiAgIAlpb3NmX21iaV9wdW5pdF9hY3F1aXJlKCk7Cj4gICAJaW9zZl9t YmlfdW5yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXJfdW5sb2NrZWQoCj4gICAJCSZ1 bmNvcmUtPnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4gQEAgLTUyMiwxOCArNTI0LDI0IEBAIHZvaWQg aW50ZWxfdW5jb3JlX3N1c3BlbmQoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICAgCWlv c2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPiAgIH0KPiAgIAo+IC12b2lkIGludGVsX3VuY29yZV9y ZXN1bWVfZWFybHkoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKQo+ICt2b2lkIGludGVsX3Vu Y29yZV9mb3JjZXdha2VfcmVzdW1lX2Vhcmx5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkK PiAgIHsKPiAgIAl1bnNpZ25lZCBpbnQgcmVzdG9yZV9mb3JjZXdha2U7Cj4gICAKPiArCWlmICgh aW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSkKPiArCQlyZXR1cm47Cj4gKwo+ICAg CXJlc3RvcmVfZm9yY2V3YWtlID0gZmV0Y2hfYW5kX3plcm8oJnVuY29yZS0+ZndfZG9tYWluc19z YXZlZCk7Cj4gLQlfX2ludGVsX3VuY29yZV9lYXJseV9zYW5pdGl6ZSh1bmNvcmUsIHJlc3RvcmVf Zm9yY2V3YWtlKTsKPiArCWZvcmNld2FrZV9lYXJseV9zYW5pdGl6ZSh1bmNvcmUsIHJlc3RvcmVf Zm9yY2V3YWtlKTsKClRoaXMgY2FsbCBhbHJlYWR5IGhhbmRsZXMgIWhhc19mb3JjZXdha2UsIHNv IGZ1bmN0aW9uIGhhbmRsZXMgaXQgdHdpY2UgCmluIHNvdXJjZS4gSXMgdGhpcyB3aGF0IHlvdSBp bnRlbmRlZD8gTWF5YmUganVzdCBhZGQgZG91YmxlLXVuZGVyc2NvcmUgCnZlcnNpb24gZm9yIGVh cmx5IHNhbml0aXplIHdpdGhvdXQgdGhlIGNoZWNrIGJ1dCBHRU1fQlVHX09OPwoKPiAgIAo+ICAg CWlvc2ZfbWJpX3JlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcigmdW5jb3JlLT5wbWlj X2J1c19hY2Nlc3NfbmIpOwo+ICAgfQo+ICAgCj4gLXZvaWQgaW50ZWxfdW5jb3JlX3J1bnRpbWVf cmVzdW1lKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiArdm9pZCBpbnRlbF91bmNvcmVf Zm9yY2V3YWtlX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSkKPiAg IHsKPiArCWlmICghaW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSkKPiArCQlyZXR1 cm47Cj4gKwo+ICAgCWlvc2ZfbWJpX3JlZ2lzdGVyX3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcigm dW5jb3JlLT5wbWljX2J1c19hY2Nlc3NfbmIpOwo+ICAgfQo+ICAgCj4gQEAgLTEzNDgsOCArMTM1 Niw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGlu dGVsX3VuY29yZSAqdW5jb3JlKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdW5jb3JlLT5pOTE1Owo+ICAgCj4gLQlpZiAoIWludGVsX3VuY29yZV9oYXNfZm9yY2V3 YWtlKHVuY29yZSkpCj4gLQkJcmV0dXJuOwo+ICsJR0VNX0JVR19PTighaW50ZWxfdW5jb3JlX2hh c19mb3JjZXdha2UodW5jb3JlKSk7Cj4gICAKPiAgIAlpZiAoSU5URUxfR0VOKGk5MTUpID49IDEx KSB7Cj4gICAJCWludCBpOwo+IEBAIC0xNTQyLDM2ICsxNTQ5LDI5IEBAIHZvaWQgaW50ZWxfdW5j b3JlX2luaXRfZWFybHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCj4gICAJdW5jb3Jl LT5ycG0gPSAmaTkxNS0+cnVudGltZV9wbTsKPiAgIH0KPiAgIAo+IC1pbnQgaW50ZWxfdW5jb3Jl X2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gK3N0YXRpYyB2b2lkIHVu Y29yZV9yYXdfaW5pdChzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gICB7Cj4gLQlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHVuY29yZS0+aTkxNTsKPiAtCWludCByZXQ7Cj4g KwlHRU1fQlVHX09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpOwo+ICAgCj4g LQlyZXQgPSB1bmNvcmVfbW1pb19zZXR1cCh1bmNvcmUpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1 cm4gcmV0Owo+ICsJaWYgKElTX0dFTih1bmNvcmUtPmk5MTUsIDUpKSB7Cj4gKwkJQVNTSUdOX1JB V19XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwo+ICsJCUFTU0lHTl9SQVdfUkVBRF9N TUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjUpOwo+ICsJfSBlbHNlIHsKPiArCQlBU1NJR05fUkFXX1dS SVRFX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuMik7Cj4gKwkJQVNTSUdOX1JBV19SRUFEX01NSU9f VkZVTkNTKHVuY29yZSwgZ2VuMik7Cj4gKwl9Cj4gK30KPiAgIAo+IC0JaTkxNV9jaGVja192Z3B1 KGk5MTUpOwo+ICtzdGF0aWMgdm9pZCB1bmNvcmVfZm9yY2V3YWtlX2luaXQoc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9 IHVuY29yZS0+aTkxNTsKPiAgIAo+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+IDUgJiYgIWludGVs X3ZncHVfYWN0aXZlKGk5MTUpKQo+IC0JCXVuY29yZS0+ZmxhZ3MgfD0gVU5DT1JFX0hBU19GT1JD RVdBS0U7Cj4gKwlHRU1fQlVHX09OKCFpbnRlbF91bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUp KTsKPiAgIAo+ICAgCWludGVsX3VuY29yZV9md19kb21haW5zX2luaXQodW5jb3JlKTsKPiAtCV9f aW50ZWxfdW5jb3JlX2Vhcmx5X3Nhbml0aXplKHVuY29yZSwgMCk7Cj4gKwlmb3JjZXdha2VfZWFy bHlfc2FuaXRpemUodW5jb3JlLCAwKTsKPiAgIAo+IC0JdW5jb3JlLT51bmNsYWltZWRfbW1pb19j aGVjayA9IDE7Cj4gLQl1bmNvcmUtPnBtaWNfYnVzX2FjY2Vzc19uYi5ub3RpZmllcl9jYWxsID0K PiAtCQlpOTE1X3BtaWNfYnVzX2FjY2Vzc19ub3RpZmllcjsKPiAtCj4gLQlpZiAoIWludGVsX3Vu Y29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkpIHsKPiAtCQlpZiAoSVNfR0VOKGk5MTUsIDUpKSB7 Cj4gLQkJCUFTU0lHTl9SQVdfV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW41KTsKPiAtCQkJ QVNTSUdOX1JBV19SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuNSk7Cj4gLQkJfSBlbHNlIHsK PiAtCQkJQVNTSUdOX1JBV19XUklURV9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjIpOwo+IC0JCQlB U1NJR05fUkFXX1JFQURfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW4yKTsKPiAtCQl9Cj4gLQl9IGVs c2UgaWYgKElTX0dFTl9SQU5HRShpOTE1LCA2LCA3KSkgewo+ICsJaWYgKElTX0dFTl9SQU5HRShp OTE1LCA2LCA3KSkgewo+ICAgCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBnZW42 KTsKPiAgIAo+ICAgCQlpZiAoSVNfVkFMTEVZVklFVyhpOTE1KSkgewo+IEBAIC0xNTg1LDcgKzE1 ODUsNiBAQCBpbnQgaW50ZWxfdW5jb3JlX2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1 bmNvcmUpCj4gICAJCQlBU1NJR05fRldfRE9NQUlOU19UQUJMRSh1bmNvcmUsIF9fY2h2X2Z3X3Jh bmdlcyk7Cj4gICAJCQlBU1NJR05fV1JJVEVfTU1JT19WRlVOQ1ModW5jb3JlLCBmd3RhYmxlKTsK PiAgIAkJCUFTU0lHTl9SRUFEX01NSU9fVkZVTkNTKHVuY29yZSwgZnd0YWJsZSk7Cj4gLQo+ICAg CQl9IGVsc2Ugewo+ICAgCQkJQVNTSUdOX1dSSVRFX01NSU9fVkZVTkNTKHVuY29yZSwgZ2VuOCk7 Cj4gICAJCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjYpOwo+IEBAIC0xNjAw LDYgKzE1OTksMzEgQEAgaW50IGludGVsX3VuY29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlKQo+ICAgCQlBU1NJR05fUkVBRF9NTUlPX1ZGVU5DUyh1bmNvcmUsIGdlbjEx X2Z3dGFibGUpOwo+ICAgCX0KPiAgIAo+ICsJdW5jb3JlLT5wbWljX2J1c19hY2Nlc3NfbmIubm90 aWZpZXJfY2FsbCA9IGk5MTVfcG1pY19idXNfYWNjZXNzX25vdGlmaWVyOwo+ICsJaW9zZl9tYmlf cmVnaXN0ZXJfcG1pY19idXNfYWNjZXNzX25vdGlmaWVyKCZ1bmNvcmUtPnBtaWNfYnVzX2FjY2Vz c19uYik7Cj4gK30KPiArCj4gK2ludCBpbnRlbF91bmNvcmVfaW5pdF9tbWlvKHN0cnVjdCBpbnRl bF91bmNvcmUgKnVuY29yZSkKPiArewo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUg PSB1bmNvcmUtPmk5MTU7Cj4gKwlpbnQgcmV0Owo+ICsKPiArCXJldCA9IHVuY29yZV9tbWlvX3Nl dHVwKHVuY29yZSk7Cj4gKwlpZiAocmV0KQo+ICsJCXJldHVybiByZXQ7Cj4gKwo+ICsJaTkxNV9j aGVja192Z3B1KGk5MTUpOwo+ICsKPiArCWlmIChJTlRFTF9HRU4oaTkxNSkgPiA1ICYmICFpbnRl bF92Z3B1X2FjdGl2ZShpOTE1KSkKPiArCQl1bmNvcmUtPmZsYWdzIHw9IFVOQ09SRV9IQVNfRk9S Q0VXQUtFOwo+ICsKPiArCXVuY29yZS0+dW5jbGFpbWVkX21taW9fY2hlY2sgPSAxOwo+ICsKPiAr CWlmICghaW50ZWxfdW5jb3JlX2hhc19mb3JjZXdha2UodW5jb3JlKSkKPiArCQl1bmNvcmVfcmF3 X2luaXQodW5jb3JlKTsKCklzIGFueSBvZiB0aGUgcmVtYWluaW5nIGNvZGUgaW4gdGhpcyBmdW5j dGlvbiByZWxldmFudCBhZnRlciB0aGlzIGJyYW5jaCAKaGFzIGJlZW4gdGFrZW4/IElmIG5vdCB0 aGlzIGNvdWxkIGJlIGNoYW5nZWQgdG86CgogICBpZiAoIWludGVsX3VuY29yZV9oYXNfZm9yY2V3 YWtlKHVuY29yZSkpIHsKCXVuY29yZV9yYXdfaW5pdCh1bmNvcmUpOwoJcmV0dXJuOwogICB9Cgog ICB1bmNvcmVfZm9yY2V3YWtlX2luaXQodW5jb3JlKTsKICAgLi4uCgpIbSwgYWxzbyBpcyAidW5j bGFpbWVkX21taW9fY2hlY2sgPSAxOyIgYWJvdmUgcG9zc2libGUvcmVsZXZhbnQgd2hlcmUgbm8g CmZvcmN3YWtlPyBEb2Vzbid0IGxvb2sgbGlrZSBpdC4gVW5sZXNzIHZncHU/Cgo+ICsJZWxzZQo+ ICsJCXVuY29yZV9mb3JjZXdha2VfaW5pdCh1bmNvcmUpOwo+ICsKPiAgIAkvKiBtYWtlIHN1cmUg ZncgZnVuY3MgYXJlIHNldCBpZiBhbmQgb25seSBpZiB3ZSBoYXZlIGZ3Ki8KPiAgIAlHRU1fQlVH X09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3YWtlKHVuY29yZSkgIT0gISF1bmNvcmUtPmZ1bmNz LmZvcmNlX3dha2VfZ2V0KTsKPiAgIAlHRU1fQlVHX09OKGludGVsX3VuY29yZV9oYXNfZm9yY2V3 YWtlKHVuY29yZSkgIT0gISF1bmNvcmUtPmZ1bmNzLmZvcmNlX3dha2VfcHV0KTsKPiBAQCAtMTYx NSw3ICsxNjM5LDkgQEAgaW50IGludGVsX3VuY29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlKQo+ICAgCWlmIChJU19HRU5fUkFOR0UoaTkxNSwgNiwgNykpCj4gICAJCXVu Y29yZS0+ZmxhZ3MgfD0gVU5DT1JFX0hBU19GSUZPOwo+ICAgCj4gLQlpb3NmX21iaV9yZWdpc3Rl cl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXIoJnVuY29yZS0+cG1pY19idXNfYWNjZXNzX25iKTsK PiArCS8qIGNsZWFyIG91dCB1bmNsYWltZWQgcmVnIGRldGVjdGlvbiBiaXQgKi8KPiArCWlmIChj aGVja19mb3JfdW5jbGFpbWVkX21taW8odW5jb3JlKSkKPiArCQlEUk1fREVCVUcoInVuY2xhaW1l ZCBtbWlvIGRldGVjdGVkIG9uIHVuY29yZSBpbml0LCBjbGVhcmluZ1xuIik7Cj4gICAKPiAgIAly ZXR1cm4gMDsKPiAgIH0KPiBAQCAtMTYyNSw0NCArMTY1MSw0NyBAQCBpbnQgaW50ZWxfdW5jb3Jl X2luaXRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gICAgKiB0aGUgZm9yY2V3 YWtlIGRvbWFpbnMuIFBydW5lIHRoZW0sIHRvIG1ha2Ugc3VyZSB0aGV5IG9ubHkgcmVmZXJlbmNl IGV4aXN0aW5nCj4gICAgKiBlbmdpbmVzLgo+ICAgICovCj4gLXZvaWQgaW50ZWxfdW5jb3JlX3By dW5lX21taW9fZG9tYWlucyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpCj4gK3ZvaWQgaW50 ZWxfdW5jb3JlX3BydW5lX2ZvcmNld2FrZV9kb21haW5zKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVu Y29yZSkKPiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHVuY29yZS0+ aTkxNTsKPiArCWVudW0gZm9yY2V3YWtlX2RvbWFpbnMgZndfZG9tYWlucyA9IHVuY29yZS0+Zndf ZG9tYWluczsKPiArCWVudW0gZm9yY2V3YWtlX2RvbWFpbl9pZCBkb21haW5faWQ7Cj4gKwlpbnQg aTsKPiAgIAo+IC0JaWYgKElOVEVMX0dFTihpOTE1KSA+PSAxMSkgewo+IC0JCWVudW0gZm9yY2V3 YWtlX2RvbWFpbnMgZndfZG9tYWlucyA9IHVuY29yZS0+ZndfZG9tYWluczsKPiAtCQllbnVtIGZv cmNld2FrZV9kb21haW5faWQgZG9tYWluX2lkOwo+IC0JCWludCBpOwo+ICsJaWYgKCFpbnRlbF91 bmNvcmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpIHx8IElOVEVMX0dFTihpOTE1KSA8IDExKQo+ICsJ CXJldHVybjsKPiAgIAo+IC0JCWZvciAoaSA9IDA7IGkgPCBJOTE1X01BWF9WQ1M7IGkrKykgewo+ IC0JCQlkb21haW5faWQgPSBGV19ET01BSU5fSURfTUVESUFfVkRCT1gwICsgaTsKPiArCWZvciAo aSA9IDA7IGkgPCBJOTE1X01BWF9WQ1M7IGkrKykgewo+ICsJCWRvbWFpbl9pZCA9IEZXX0RPTUFJ Tl9JRF9NRURJQV9WREJPWDAgKyBpOwo+ICAgCj4gLQkJCWlmIChIQVNfRU5HSU5FKGk5MTUsIF9W Q1MoaSkpKQo+IC0JCQkJY29udGludWU7Cj4gKwkJaWYgKEhBU19FTkdJTkUoaTkxNSwgX1ZDUyhp KSkpCj4gKwkJCWNvbnRpbnVlOwo+ICAgCj4gLQkJCWlmIChmd19kb21haW5zICYgQklUKGRvbWFp bl9pZCkpCj4gLQkJCQlmd19kb21haW5fZmluaSh1bmNvcmUsIGRvbWFpbl9pZCk7Cj4gLQkJfQo+ ICsJCWlmIChmd19kb21haW5zICYgQklUKGRvbWFpbl9pZCkpCj4gKwkJCWZ3X2RvbWFpbl9maW5p KHVuY29yZSwgZG9tYWluX2lkKTsKPiArCX0KPiAgIAo+IC0JCWZvciAoaSA9IDA7IGkgPCBJOTE1 X01BWF9WRUNTOyBpKyspIHsKPiAtCQkJZG9tYWluX2lkID0gRldfRE9NQUlOX0lEX01FRElBX1ZF Qk9YMCArIGk7Cj4gKwlmb3IgKGkgPSAwOyBpIDwgSTkxNV9NQVhfVkVDUzsgaSsrKSB7Cj4gKwkJ ZG9tYWluX2lkID0gRldfRE9NQUlOX0lEX01FRElBX1ZFQk9YMCArIGk7Cj4gICAKPiAtCQkJaWYg KEhBU19FTkdJTkUoaTkxNSwgX1ZFQ1MoaSkpKQo+IC0JCQkJY29udGludWU7Cj4gKwkJaWYgKEhB U19FTkdJTkUoaTkxNSwgX1ZFQ1MoaSkpKQo+ICsJCQljb250aW51ZTsKPiAgIAo+IC0JCQlpZiAo ZndfZG9tYWlucyAmIEJJVChkb21haW5faWQpKQo+IC0JCQkJZndfZG9tYWluX2ZpbmkodW5jb3Jl LCBkb21haW5faWQpOwo+IC0JCX0KPiArCQlpZiAoZndfZG9tYWlucyAmIEJJVChkb21haW5faWQp KQo+ICsJCQlmd19kb21haW5fZmluaSh1bmNvcmUsIGRvbWFpbl9pZCk7Cj4gICAJfQo+ICAgfQo+ ICAgCj4gICB2b2lkIGludGVsX3VuY29yZV9maW5pX21taW8oc3RydWN0IGludGVsX3VuY29yZSAq dW5jb3JlKQo+ICAgewo+IC0JaW9zZl9tYmlfcHVuaXRfYWNxdWlyZSgpOwo+IC0JaW9zZl9tYmlf dW5yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXJfdW5sb2NrZWQoCj4gLQkJJnVuY29y ZS0+cG1pY19idXNfYWNjZXNzX25iKTsKPiAtCWludGVsX3VuY29yZV9mb3JjZXdha2VfcmVzZXQo dW5jb3JlKTsKPiAtCWlvc2ZfbWJpX3B1bml0X3JlbGVhc2UoKTsKPiArCWlmIChpbnRlbF91bmNv cmVfaGFzX2ZvcmNld2FrZSh1bmNvcmUpKSB7CgpUbyBhdm9pZCBoeXBob3RldGljYWwgb2Jub3hp b3VzIGRpZmZzIGluIHRoZSBmdXR1cmUsIGxpa2UgdGhlIG9uZSBmb3IgCmludGVsX3VuY29yZV9w cnVuZV9tbWlvX2RvbWFpbnMgYWJvdmUgaW4gdGhpcyBwYXRjaCwgbWF5YmUgaW52ZXJ0IHRoaXMg CnRvIGVhcmx5IHJldHVybiBzdHJhaWdodCBhd2F5LgoKPiArCQlpb3NmX21iaV9wdW5pdF9hY3F1 aXJlKCk7Cj4gKwkJaW9zZl9tYmlfdW5yZWdpc3Rlcl9wbWljX2J1c19hY2Nlc3Nfbm90aWZpZXJf dW5sb2NrZWQoCj4gKwkJCSZ1bmNvcmUtPnBtaWNfYnVzX2FjY2Vzc19uYik7Cj4gKwkJaW50ZWxf dW5jb3JlX2ZvcmNld2FrZV9yZXNldCh1bmNvcmUpOwo+ICsJCWlvc2ZfbWJpX3B1bml0X3JlbGVh c2UoKTsKPiArCX0KPiArCj4gICAJdW5jb3JlX21taW9fY2xlYW51cCh1bmNvcmUpOwo+ICAgfQo+ ICAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3JlLmgKPiBpbmRleCA5MTI2MTYxODhmZjUu Ljg3OTI1MjczNWJiYSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF91 bmNvcmUuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5oCj4gQEAg LTE4NiwxMyArMTg2LDEzIEBAIGludGVsX3VuY29yZV9oYXNfZmlmbyhjb25zdCBzdHJ1Y3QgaW50 ZWxfdW5jb3JlICp1bmNvcmUpCj4gICB2b2lkIGludGVsX3VuY29yZV9pbml0X2Vhcmx5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAo+ICAgCQkJICAgICBzdHJ1Y3QgaW50ZWxfdW5jb3Jl ICp1bmNvcmUpOwo+ICAgaW50IGludGVsX3VuY29yZV9pbml0X21taW8oc3RydWN0IGludGVsX3Vu Y29yZSAqdW5jb3JlKTsKPiAtdm9pZCBpbnRlbF91bmNvcmVfcHJ1bmVfbW1pb19kb21haW5zKHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gK3ZvaWQgaW50ZWxfdW5jb3JlX3BydW5lX2Zv cmNld2FrZV9kb21haW5zKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gICBib29sIGlu dGVsX3VuY29yZV91bmNsYWltZWRfbW1pbyhzdHJ1Y3QgaW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+ ICAgYm9vbCBpbnRlbF91bmNvcmVfYXJtX3VuY2xhaW1lZF9tbWlvX2RldGVjdGlvbihzdHJ1Y3Qg aW50ZWxfdW5jb3JlICp1bmNvcmUpOwo+ICAgdm9pZCBpbnRlbF91bmNvcmVfZmluaV9tbWlvKHN0 cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gLXZvaWQgaW50ZWxfdW5jb3JlX3N1c3BlbmQo c3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPiAtdm9pZCBpbnRlbF91bmNvcmVfcmVzdW1l X2Vhcmx5KHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gLXZvaWQgaW50ZWxfdW5jb3Jl X3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gK3ZvaWQgaW50 ZWxfdW5jb3JlX2ZvcmNld2FrZV9zdXNwZW5kKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7 Cj4gK3ZvaWQgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9yZXN1bWVfZWFybHkoc3RydWN0IGludGVs X3VuY29yZSAqdW5jb3JlKTsKPiArdm9pZCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3J1bnRpbWVf cmVzdW1lKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSk7Cj4gICAKPiAgIHZvaWQgYXNzZXJ0 X2ZvcmNld2FrZXNfaW5hY3RpdmUoc3RydWN0IGludGVsX3VuY29yZSAqdW5jb3JlKTsKPiAgIHZv aWQgYXNzZXJ0X2ZvcmNld2FrZXNfYWN0aXZlKHN0cnVjdCBpbnRlbF91bmNvcmUgKnVuY29yZSwK PiAKClJlZ2FyZHMsCgpUdnJ0a28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aW50ZWwtZ2Z4