From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Zanoni, Paulo R" Subject: Re: [PATCH 1/5] drm/i915: Add sys PSR toggle interface Date: Wed, 13 Apr 2016 13:26:16 +0000 Message-ID: <1460553974.8441.22.camel@intel.com> References: <1460488728-23319-1-git-send-email-alexandra.yates@linux.intel.com> <1460488728-23319-2-git-send-email-alexandra.yates@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga04.intel.com (mga04.intel.com [192.55.52.120]) by gabe.freedesktop.org (Postfix) with ESMTP id 89DF16E8D6 for ; Wed, 13 Apr 2016 13:26:18 +0000 (UTC) In-Reply-To: <1460488728-23319-2-git-send-email-alexandra.yates@linux.intel.com> Content-Language: en-US Content-ID: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" , "Vivi, Rodrigo" , "alexandra.yates@linux.intel.com" , "Konno, Joe" , "Swaminathan, Nivedita" List-Id: intel-gfx@lists.freedesktop.org RW0gVGVyLCAyMDE2LTA0LTEyIMOgcyAxMjoxOCAtMDcwMCwgQWxleGFuZHJhIFlhdGVzIGVzY3Jl dmV1Og0KPiBUaGlzIGludGVyZmFjZSBhbGxvd3MgYW4gaW1tZWRpYXRlIGVuYWJsaW5nIG9mIFBT UiBmZWF0dXJlLiBXaGF0DQo+IGFsbG93IHVzDQo+IHRvIHNlZSBpbW1lZGlhdGVseSB0aGUgUFNS IHNhdmluZ3MgYW5kIHdpbGwgYWxsb3cgdXMgdG8gZXhwb3NlIHRoaXMNCj4gdGhyb3VnaCBzeXNm cyBpbnRlcmZhY2UgZm9yIHBvd2VydG9wIHRvIGxldmVyYWdlIGl0cyBmdW5jdGlvbmFsaXR5Lg0K PiANCj4gU2lnbmVkLW9mZi1ieTogQWxleGFuZHJhIFlhdGVzIDxhbGV4YW5kcmEueWF0ZXNAbGlu dXguaW50ZWwuY29tPg0KPiAtLS0NCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5o wqDCoMKgfMKgwqAxICsNCj4gwqBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMgfCA3 OQ0KPiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gwqBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuY8KgwqB8wqDCoDYgKystDQo+IMKgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHAuY8KgwqDCoHwgMTEgKysrKy0tDQo+IMKgZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmjCoMKgfMKgwqA0ICstDQo+IMKgZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfcHNyLmPCoMKgfCAzNiArKysrKysrKysrKysrKy0tLS0NCj4gwqA2IGZpbGVzIGNoYW5n ZWQsIDEyMiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuaA0KPiBpbmRleCBmNWM5MWIwLi5jOTZkYTRkIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgNCj4gQEAgLTk3Niw2ICs5NzYsNyBAQCBzdHJ1Y3QgaTkxNV9wc3Igew0K PiDCoAlib29sIHBzcjJfc3VwcG9ydDsNCj4gwqAJYm9vbCBhdXhfZnJhbWVfc3luYzsNCj4gwqAJ Ym9vbCBsaW5rX3N0YW5kYnk7DQo+ICsJYm9vbCBzeXNmc19zZXQ7DQo+IMKgfTsNCj4gwqANCj4g wqBlbnVtIGludGVsX3BjaCB7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3N5c2ZzLmMNCj4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3N5c2ZzLmMNCj4gaW5k ZXggMmQ1NzZiNy4uMjA4YzZlYyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9zeXNmcy5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfc3lzZnMuYw0K PiBAQCAtMTA2LDEyICsxMDYsODQgQEAgc2hvd19tZWRpYV9yYzZfbXMoc3RydWN0IGRldmljZSAq a2Rldiwgc3RydWN0DQo+IGRldmljZV9hdHRyaWJ1dGUgKmF0dHIsIGNoYXIgKmJ1ZikNCj4gwqAJ cmV0dXJuIHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXVcbiIsIHJjNl9yZXNpZGVuY3kpOw0K PiDCoH0NCj4gwqANCj4gK3N0YXRpYyBzc2l6ZV90DQo+ICtzaG93X3BzcihzdHJ1Y3QgZGV2aWNl ICprZGV2LCBzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhcg0KPiAqYnVmKQ0KPiAr ew0KPiArCXN0cnVjdCBkcm1fbWlub3IgKmRtaW5vciA9IGRldl90b19kcm1fbWlub3Ioa2Rldik7 DQo+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRtaW5vci0+ZGV2Ow0KPiArCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7DQo+ICsJc3NpemVf dCByZXQ7DQo+ICsNCj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiArCXJl dCA9IHNucHJpbnRmKGJ1ZiwgUEFHRV9TSVpFLCAiJXNcbiIsIGRldl9wcml2LT5wc3IuZW5hYmxl ZCANCj4gPw0KPiArCQkJImVuYWJsZWQiOiJkaXNhYmxlZCIpOw0KPiArCW11dGV4X3VubG9jaygm ZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwlyZXR1cm4gcmV0Ow0KPiArfQ0KPiArDQo+ICtzdGF0 aWMgc3NpemVfdA0KPiArdG9nZ2xlX3BzcihzdHJ1Y3QgZGV2aWNlICprZGV2LCBzdHJ1Y3QgZGV2 aWNlX2F0dHJpYnV0ZSAqYXR0ciwNCj4gKwljb25zdCBjaGFyICpidWYsIHNpemVfdCBjb3VudCkN Cj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX21pbm9yICpkbWlub3IgPSBkZXZfdG9fZHJtX21pbm9yKGtk ZXYpOw0KPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkbWlub3ItPmRldjsNCj4gKwlzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7DQo+ICsJc3RydWN0IGludGVsX2VuY29kZXIg KmVuY29kZXI7DQo+ICsJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSBOVUxMOw0KPiArCXUzMiB2 YWw7DQo+ICsJc3NpemVfdCByZXQ7DQo+ICsJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9IE5V TEw7DQo+ICsJYm9vbCBzeXNmc19zZXQgPSB0cnVlOw0KPiArDQo+ICsJcmV0ID0ga3N0cnRvdTMy KGJ1ZiwgMCwgJnZhbCk7DQo+ICsJaWYgKHJldCkNCj4gKwkJcmV0dXJuIHJldDsNCj4gKw0KPiAr CWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3Rvcikgew0KPiArCQlpZiAoIWNv bm5lY3Rvci0+YmFzZS5lbmNvZGVyKQ0KPiArCQkJY29udGludWU7DQo+ICsJCWVuY29kZXIgPSB0 b19pbnRlbF9lbmNvZGVyKGNvbm5lY3Rvci0+YmFzZS5lbmNvZGVyKTsNCj4gKwkJY3J0YyA9IHRv X2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsNCj4gKwkJaW50ZWxfZHAgPSBlbmNfdG9f aW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOw0KPiArCX0NCg0KU2FtZSBwcm9ibGVtIGhlcmU6IG5v IGd1YXJhbnRlZSB0aGF0IHRoZSBlbmNvZGVyIGlzIERQLCBub3IgdGhhdCBpdA0Kc3VwcG9ydHMg UFNSLCBub3IgdGhhdCBpdCBpcyBlbmFibGVkIGFuZCBoYXMgYSBtb2RlIHNldC4NCg0KPiArDQo+ ICsJaWYgKCFjcnRjKQ0KPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gKwlzd2l0Y2ggKHZhbCkgew0K PiArCWNhc2UgMDoNCj4gKwkJcmV0ID0gaW50ZWxfcHNyX2Rpc2FibGUoaW50ZWxfZHAsIHN5c2Zz X3NldCk7DQo+ICsJCWlmIChyZXQpDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQlicmVhazsNCj4g KwljYXNlIDE6DQo+ICsJCXJldCA9IGludGVsX3Bzcl9lbmFibGUoaW50ZWxfZHAsIHN5c2ZzX3Nl dCk7DQo+ICsJCWlmIChyZXQpDQo+ICsJCQlyZXR1cm4gcmV0Ow0KPiArCQlicmVhazsNCj4gKwlk ZWZhdWx0Og0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKw0KPiArCX0NCj4gKwlyZXR1cm4gY291 bnQ7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBERVZJQ0VfQVRUUihwc3JfZW5hYmxlLCBTX0lSVUdP IHwgU19JV1VTUiwgc2hvd19wc3IsDQo+IHRvZ2dsZV9wc3IpOw0KPiDCoHN0YXRpYyBERVZJQ0Vf QVRUUihyYzZfZW5hYmxlLCBTX0lSVUdPLCBzaG93X3JjNl9tYXNrLCBOVUxMKTsNCj4gwqBzdGF0 aWMgREVWSUNFX0FUVFIocmM2X3Jlc2lkZW5jeV9tcywgU19JUlVHTywgc2hvd19yYzZfbXMsIE5V TEwpOw0KPiDCoHN0YXRpYyBERVZJQ0VfQVRUUihyYzZwX3Jlc2lkZW5jeV9tcywgU19JUlVHTywg c2hvd19yYzZwX21zLCBOVUxMKTsNCj4gwqBzdGF0aWMgREVWSUNFX0FUVFIocmM2cHBfcmVzaWRl bmN5X21zLCBTX0lSVUdPLCBzaG93X3JjNnBwX21zLA0KPiBOVUxMKTsNCj4gwqBzdGF0aWMgREVW SUNFX0FUVFIobWVkaWFfcmM2X3Jlc2lkZW5jeV9tcywgU19JUlVHTywNCj4gc2hvd19tZWRpYV9y YzZfbXMsIE5VTEwpOw0KPiDCoA0KPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnBzcl9hdHRy c1tdID0gew0KPiArCSZkZXZfYXR0cl9wc3JfZW5hYmxlLmF0dHIsDQo+ICsJTlVMTA0KPiArfTsN Cj4gKw0KPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgcHNyX2F0dHJfZ3JvdXAgPSB7 DQo+ICsJLm5hbWUgPSBwb3dlcl9ncm91cF9uYW1lLA0KPiArCS5hdHRycyA9IHBzcl9hdHRycw0K PiArfTsNCj4gKw0KPiDCoHN0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpyYzZfYXR0cnNbXSA9IHsN Cj4gwqAJJmRldl9hdHRyX3JjNl9lbmFibGUuYXR0ciwNCj4gwqAJJmRldl9hdHRyX3JjNl9yZXNp ZGVuY3lfbXMuYXR0ciwNCj4gQEAgLTU5Niw2ICs2NjgsMTIgQEAgdm9pZCBpOTE1X3NldHVwX3N5 c2ZzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpDQo+IMKgCWludCByZXQ7DQo+IMKgDQo+IMKgI2lm ZGVmIENPTkZJR19QTQ0KPiArCWlmIChIQVNfUFNSKGRldikpIHsNCj4gKwkJcmV0ID0gc3lzZnNf bWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwNCj4gKwkJCQkJJnBzcl9hdHRy X2dyb3VwKTsNCj4gKwkJaWYgKHJldCkNCj4gKwkJCURSTV9FUlJPUigiUFNSIHN5c2ZzIHNldHVw IGZhaWxlZFxuIik7DQo+ICsJfQ0KPiDCoAlpZiAoSEFTX1JDNihkZXYpKSB7DQo+IMKgCQlyZXQg PSBzeXNmc19tZXJnZV9ncm91cCgmZGV2LT5wcmltYXJ5LT5rZGV2LT5rb2JqLA0KPiDCoAkJCQkJ JnJjNl9hdHRyX2dyb3VwKTsNCj4gQEAgLTY1Miw2ICs3MzAsNyBAQCB2b2lkIGk5MTVfdGVhcmRv d25fc3lzZnMoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gwqAJZGV2aWNlX3JlbW92ZV9iaW5f ZmlsZShkZXYtPnByaW1hcnktPmtkZXYswqDCoCZkcGZfYXR0cnNfMSk7DQo+IMKgCWRldmljZV9y ZW1vdmVfYmluX2ZpbGUoZGV2LT5wcmltYXJ5LT5rZGV2LMKgwqAmZHBmX2F0dHJzKTsNCj4gwqAj aWZkZWYgQ09ORklHX1BNDQo+ICsJc3lzZnNfdW5tZXJnZV9ncm91cCgmZGV2LT5wcmltYXJ5LT5r ZGV2LT5rb2JqLA0KPiAmcHNyX2F0dHJfZ3JvdXApOw0KPiDCoAlzeXNmc191bm1lcmdlX2dyb3Vw KCZkZXYtPnByaW1hcnktPmtkZXYtPmtvYmosDQo+ICZyYzZfYXR0cl9ncm91cCk7DQo+IMKgCXN5 c2ZzX3VubWVyZ2VfZ3JvdXAoJmRldi0+cHJpbWFyeS0+a2Rldi0+a29iaiwNCj4gJnJjNnBfYXR0 cl9ncm91cCk7DQo+IMKgI2VuZGlmDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kZGkuYw0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jDQo+IGlu ZGV4IDkyMWVkZjEuLjhlMzg0ZTUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2RkaS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jDQo+ IEBAIC0xNjg5LDcgKzE2ODksOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZGRpKHN0cnVj dA0KPiBpbnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyKQ0KPiDCoAkJCWludGVsX2RwX3N0b3Bf bGlua190cmFpbihpbnRlbF9kcCk7DQo+IMKgDQo+IMKgCQlpbnRlbF9lZHBfYmFja2xpZ2h0X29u KGludGVsX2RwKTsNCj4gLQkJaW50ZWxfcHNyX2VuYWJsZShpbnRlbF9kcCk7DQo+ICsJCWlmIChk ZXZfcHJpdi0+cHNyLnN5c2ZzX3NldCAhPSB0cnVlKQ0KPiArCQkJaW50ZWxfcHNyX2VuYWJsZShp bnRlbF9kcCwgZGV2X3ByaXYtDQo+ID5wc3Iuc3lzZnNfc2V0KTsNCj4gwqAJCWludGVsX2VkcF9k cnJzX2VuYWJsZShpbnRlbF9kcCk7DQo+IMKgCX0NCj4gwqANCj4gQEAgLTE3MTcsNyArMTcxOCw4 IEBAIHN0YXRpYyB2b2lkIGludGVsX2Rpc2FibGVfZGRpKHN0cnVjdA0KPiBpbnRlbF9lbmNvZGVy ICppbnRlbF9lbmNvZGVyKQ0KPiDCoAkJc3RydWN0IGludGVsX2RwICppbnRlbF9kcCA9DQo+IGVu Y190b19pbnRlbF9kcChlbmNvZGVyKTsNCj4gwqANCj4gwqAJCWludGVsX2VkcF9kcnJzX2Rpc2Fi bGUoaW50ZWxfZHApOw0KPiAtCQlpbnRlbF9wc3JfZGlzYWJsZShpbnRlbF9kcCk7DQo+ICsJCWlm IChkZXZfcHJpdi0+cHNyLnN5c2ZzX3NldCAhPSB0cnVlKQ0KPiArCQkJaW50ZWxfcHNyX2Rpc2Fi bGUoaW50ZWxfZHAsIGRldl9wcml2LQ0KPiA+cHNyLnN5c2ZzX3NldCk7DQo+IMKgCQlpbnRlbF9l ZHBfYmFja2xpZ2h0X29mZihpbnRlbF9kcCk7DQo+IMKgCX0NCj4gwqB9DQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+IGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYw0KPiBpbmRleCA3NTIzNTU4Li4xODNhNjBhIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMNCj4gQEAgLTI0MjEsMTMgKzI0MjEsMTYgQEAgc3RhdGljIHZvaWQgaW50 ZWxfZGlzYWJsZV9kcChzdHJ1Y3QNCj4gaW50ZWxfZW5jb2RlciAqZW5jb2RlcikNCj4gwqB7DQo+ IMKgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoJmVuY29kZXIt PmJhc2UpOw0KPiDCoAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7 DQo+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0 ZTsNCj4gwqAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRjKGVuY29kZXIt PmJhc2UuY3J0Yyk7DQo+IMKgDQo+IMKgCWlmIChjcnRjLT5jb25maWctPmhhc19hdWRpbykNCj4g wqAJCWludGVsX2F1ZGlvX2NvZGVjX2Rpc2FibGUoZW5jb2Rlcik7DQo+IMKgDQo+IC0JaWYgKEhB U19QU1IoZGV2KSAmJiAhSEFTX0RESShkZXYpKQ0KPiAtCQlpbnRlbF9wc3JfZGlzYWJsZShpbnRl bF9kcCk7DQo+ICsJaWYgKEhBU19QU1IoZGV2KSAmJiAhSEFTX0RESShkZXYpKSB7DQo+ICsJCWlm IChkZXZfcHJpdi0+cHNyLnN5c2ZzX3NldCAhPSB0cnVlKQ0KPiArCQkJaW50ZWxfcHNyX2Rpc2Fi bGUoaW50ZWxfZHAsIGRldl9wcml2LQ0KPiA+cHNyLnN5c2ZzX3NldCk7DQo+ICsJfQ0KPiDCoA0K PiDCoAkvKiBNYWtlIHN1cmUgdGhlIHBhbmVsIGlzIG9mZiBiZWZvcmUgdHJ5aW5nIHRvIGNoYW5n ZSB0aGUNCj4gbW9kZS4gQnV0IGFsc28NCj4gwqAJwqAqIGVuc3VyZSB0aGF0IHdlIGhhdmUgdmRk IHdoaWxlIHdlIHN3aXRjaCBvZmYgdGhlIHBhbmVsLiAqLw0KPiBAQCAtMjY4OSw5ICsyNjkyLDEx IEBAIHN0YXRpYyB2b2lkIGc0eF9lbmFibGVfZHAoc3RydWN0IGludGVsX2VuY29kZXINCj4gKmVu Y29kZXIpDQo+IMKgc3RhdGljIHZvaWQgdmx2X2VuYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikNCj4gwqB7DQo+IMKgCXN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNf dG9faW50ZWxfZHAoJmVuY29kZXItPmJhc2UpOw0KPiArCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IHRvX2k5MTUoZW5jb2Rlci0NCj4gPmJhc2UuZGV2KTsNCj4gwqANCj4gwqAJ aW50ZWxfZWRwX2JhY2tsaWdodF9vbihpbnRlbF9kcCk7DQo+IC0JaW50ZWxfcHNyX2VuYWJsZShp bnRlbF9kcCk7DQo+ICsJaWYgKGRldl9wcml2LT5wc3Iuc3lzZnNfc2V0ICE9IHRydWUpDQo+ICsJ CWludGVsX3Bzcl9lbmFibGUoaW50ZWxfZHAsIGRldl9wcml2LT5wc3Iuc3lzZnNfc2V0KTsNCj4g wqB9DQo+IMKgDQo+IMKgc3RhdGljIHZvaWQgZzR4X3ByZV9lbmFibGVfZHAoc3RydWN0IGludGVs X2VuY29kZXIgKmVuY29kZXIpDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcnYuaA0KPiBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+IGluZGV4 IGUwZmNmYTEuLjE5OWU4Y2MgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oDQo+IEBA IC0xNDQ2LDggKzE0NDYsOCBAQCB2b2lkIGludGVsX2JhY2tsaWdodF91bnJlZ2lzdGVyKHN0cnVj dA0KPiBkcm1fZGV2aWNlICpkZXYpOw0KPiDCoA0KPiDCoA0KPiDCoC8qIGludGVsX3Bzci5jICov DQo+IC12b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCk7DQo+ IC12b2lkIGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApOw0KPiAr aW50IGludGVsX3Bzcl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwgYm9vbCBzeXNm c19zZXQpOw0KPiAraW50IGludGVsX3Bzcl9kaXNhYmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHAsIGJvb2wgc3lzZnNfc2V0KTsNCj4gwqB2b2lkIGludGVsX3Bzcl9pbnZhbGlkYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsDQo+IMKgCQkJwqDCoHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMp Ow0KPiDCoHZvaWQgaW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYw0KPiBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3Bzci5jDQo+IGluZGV4IGMzYWJhZTQuLjY0Y2I3MTQgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jDQo+IEBAIC0zNzgsMzQgKzM3OCw0MyBAQCBzdGF0 aWMgdm9pZCBpbnRlbF9wc3JfYWN0aXZhdGUoc3RydWN0IGludGVsX2RwDQo+ICppbnRlbF9kcCkN Cj4gwqAvKioNCj4gwqAgKiBpbnRlbF9wc3JfZW5hYmxlIC0gRW5hYmxlIFBTUg0KPiDCoCAqIEBp bnRlbF9kcDogSW50ZWwgRFANCj4gKyAqIEBzeXNmc19zZXQ6IElkZW50aWZpZXMgaWYgdGhpcyBm ZWF0dXJlIGlzIHNldCBmcm9tIHN5c2ZzDQo+IMKgICoNCj4gwqAgKiBUaGlzIGZ1bmN0aW9uIGNh biBvbmx5IGJlIGNhbGxlZCBhZnRlciB0aGUgcGlwZSBpcyBmdWxseSB0cmFpbmVkDQo+IGFuZCBl bmFibGVkLg0KPiArICoNCj4gKyAqIFJldHVybnM6DQo+ICsgKiAwIG9uIHN1Y2Nlc3MgYW5kIC1l cnJubyBvdGhlcndpc2UuDQo+IMKgICovDQo+IC12b2lkIGludGVsX3Bzcl9lbmFibGUoc3RydWN0 IGludGVsX2RwICppbnRlbF9kcCkNCj4gK2ludCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRl bF9kcCAqaW50ZWxfZHAsIGJvb2wgc3lzZnNfc2V0KQ0KPiDCoHsNCj4gwqAJc3RydWN0IGludGVs X2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQ0KPiBkcF90b19kaWdfcG9ydChpbnRlbF9k cCk7DQo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5i YXNlLmRldjsNCj4gwqAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5k ZXZfcHJpdmF0ZTsNCj4gwqAJc3RydWN0IGludGVsX2NydGMgKmNydGMgPSB0b19pbnRlbF9jcnRj KGludGVsX2RpZ19wb3J0LQ0KPiA+YmFzZS5iYXNlLmNydGMpOw0KPiArCWludCByZXQgPSAwOw0K PiArDQo+IMKgDQo+IMKgCWlmICghSEFTX1BTUihkZXYpKSB7DQo+IMKgCQlEUk1fREVCVUdfS01T KCJQU1Igbm90IHN1cHBvcnRlZCBvbiB0aGlzDQo+IHBsYXRmb3JtXG4iKTsNCj4gLQkJcmV0dXJu Ow0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gwqAJfQ0KPiDCoA0KPiDCoAlpZiAoIWlzX2VkcF9w c3IoaW50ZWxfZHApKSB7DQo+IMKgCQlEUk1fREVCVUdfS01TKCJQU1Igbm90IHN1cHBvcnRlZCBi eSB0aGlzIHBhbmVsXG4iKTsNCj4gLQkJcmV0dXJuOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4g wqAJfQ0KPiDCoA0KPiDCoAltdXRleF9sb2NrKCZkZXZfcHJpdi0+cHNyLmxvY2spOw0KPiDCoAlp ZiAoZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7DQo+IMKgCQlEUk1fREVCVUdfS01TKCJQU1IgYWxy ZWFkeSBpbiB1c2VcbiIpOw0KPiArCQlyZXQgPSAtRUFMUkVBRFk7DQo+IMKgCQlnb3RvIHVubG9j azsNCj4gwqAJfQ0KPiDCoA0KPiAtCWlmICghaW50ZWxfcHNyX21hdGNoX2NvbmRpdGlvbnMoaW50 ZWxfZHApKQ0KPiArCWlmICghaW50ZWxfcHNyX21hdGNoX2NvbmRpdGlvbnMoaW50ZWxfZHApKSB7 DQo+ICsJCXJldCA9IC1FTk9UVFk7DQo+IMKgCQlnb3RvIHVubG9jazsNCj4gKwl9DQo+IMKgDQo+ IMKgCWRldl9wcml2LT5wc3IuYnVzeV9mcm9udGJ1ZmZlcl9iaXRzID0gMDsNCj4gwqANCj4gQEAg LTQ2NCw4ICs0NzMsMTIgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9kcCAq aW50ZWxfZHApDQo+IMKgCQkJCcKgwqDCoMKgwqDCoG1zZWNzX3RvX2ppZmZpZXMoaW50ZWxfZHAt DQo+ID5wYW5lbF9wb3dlcl9jeWNsZV9kZWxheSAqIDUpKTsNCj4gwqANCj4gwqAJZGV2X3ByaXYt PnBzci5lbmFibGVkID0gaW50ZWxfZHA7DQo+ICsJaWYgKHN5c2ZzX3NldCkNCj4gKwkJZGV2X3By aXYtPnBzci5zeXNmc19zZXQgPSBzeXNmc19zZXQ7DQo+ICsNCj4gwqB1bmxvY2s6DQo+IMKgCW11 dGV4X3VubG9jaygmZGV2X3ByaXYtPnBzci5sb2NrKTsNCj4gKwlyZXR1cm4gcmV0Ow0KPiDCoH0N Cj4gwqANCj4gwqBzdGF0aWMgdm9pZCB2bHZfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICpp bnRlbF9kcCkNCj4gQEAgLTUyMCwxMCArNTMzLDExIEBAIHN0YXRpYyB2b2lkIGhzd19wc3JfZGlz YWJsZShzdHJ1Y3QgaW50ZWxfZHANCj4gKmludGVsX2RwKQ0KPiDCoC8qKg0KPiDCoCAqIGludGVs X3Bzcl9kaXNhYmxlIC0gRGlzYWJsZSBQU1INCj4gwqAgKiBAaW50ZWxfZHA6IEludGVsIERQDQo+ ICsgKiBAc3lzZnNfc2V0OiBJZGVudGlmaWVzIGlmIHRoaXMgZmVhdHVyZSBpcyBzZXQgZnJvbSBz eXNmcw0KPiDCoCAqDQo+IMKgICogVGhpcyBmdW5jdGlvbiBuZWVkcyB0byBiZSBjYWxsZWQgYmVm b3JlIGRpc2FibGluZyBwaXBlLg0KPiDCoCAqLw0KPiAtdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShz dHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQ0KPiAraW50IGludGVsX3Bzcl9kaXNhYmxlKHN0cnVj dCBpbnRlbF9kcCAqaW50ZWxfZHAsIGJvb2wgc3lzZnNfc2V0KQ0KPiDCoHsNCj4gwqAJc3RydWN0 IGludGVsX2RpZ2l0YWxfcG9ydCAqaW50ZWxfZGlnX3BvcnQgPQ0KPiBkcF90b19kaWdfcG9ydChp bnRlbF9kcCk7DQo+IMKgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+ YmFzZS5iYXNlLmRldjsNCj4gQEAgLTUzMiw3ICs1NDYsNyBAQCB2b2lkIGludGVsX3Bzcl9kaXNh YmxlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApDQo+IMKgCW11dGV4X2xvY2soJmRldl9wcml2 LT5wc3IubG9jayk7DQo+IMKgCWlmICghZGV2X3ByaXYtPnBzci5lbmFibGVkKSB7DQo+IMKgCQlt dXRleF91bmxvY2soJmRldl9wcml2LT5wc3IubG9jayk7DQo+IC0JCXJldHVybjsNCj4gKwkJcmV0 dXJuIC1FQUxSRUFEWTsNCj4gwqAJfQ0KPiDCoA0KPiDCoAkvKiBEaXNhYmxlIFBTUiBvbiBTb3Vy Y2UgKi8NCj4gQEAgLTU0NSw5ICs1NTksMTMgQEAgdm9pZCBpbnRlbF9wc3JfZGlzYWJsZShzdHJ1 Y3QgaW50ZWxfZHANCj4gKmludGVsX2RwKQ0KPiDCoAlkcm1fZHBfZHBjZF93cml0ZWIoJmludGVs X2RwLT5hdXgsIERQX1BTUl9FTl9DRkcsIDApOw0KPiDCoA0KPiDCoAlkZXZfcHJpdi0+cHNyLmVu YWJsZWQgPSBOVUxMOw0KPiArCWlmIChzeXNmc19zZXQpDQo+ICsJCWRldl9wcml2LT5wc3Iuc3lz ZnNfc2V0ID0gc3lzZnNfc2V0Ow0KPiArDQo+IMKgCW11dGV4X3VubG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsNCj4gwqANCj4gwqAJY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZkZXZfcHJpdi0+ cHNyLndvcmspOw0KPiArCXJldHVybiAwOw0KPiDCoH0NCj4gwqANCj4gwqBzdGF0aWMgdm9pZCBp bnRlbF9wc3Jfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+IEBAIC03ODEsOCArNzk5 LDEwIEBAIHZvaWQgaW50ZWxfcHNyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikNCj4gwqAN Cj4gwqAJLyogUGVyIHBsYXRmb3JtIGRlZmF1bHQgKi8NCj4gwqAJaWYgKGk5MTUuZW5hYmxlX3Bz ciA9PSAtMSkgew0KPiAtCQlpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VMTChkZXYp KQ0KPiAtCQkJaTkxNS5lbmFibGVfcHNyID0gMTsNCj4gKwkJaWYgKElTX0hBU1dFTEwoZGV2KSB8 fCBJU19CUk9BRFdFTEwoZGV2KSkgew0KPiArCQkJaWYgKGRldl9wcml2LT5wc3Iuc3lzZnNfc2V0 ICE9IHRydWUpDQo+ICsJCQkJaTkxNS5lbmFibGVfcHNyID0gMTsNCj4gKwkJfQ0KPiDCoAkJZWxz ZQ0KPiDCoAkJCWk5MTUuZW5hYmxlX3BzciA9IDA7DQo+IMKgCX0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==