From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH v2] drm/i915: Start tracking PSR state in crtc state Date: Thu, 12 Oct 2017 16:28:43 +0300 Message-ID: <87fuaomr5g.fsf@intel.com> References: <20171012100920.29823-1-ville.syrjala@linux.intel.com> <20171012130201.21318-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 320756E826 for ; Thu, 12 Oct 2017 13:29:02 +0000 (UTC) In-Reply-To: <20171012130201.21318-1-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala , intel-gfx@lists.freedesktop.org Cc: Rodrigo Vivi List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCAxMiBPY3QgMjAxNywgVmlsbGUgU3lyamFsYSA8dmlsbGUuc3lyamFsYUBsaW51eC5p bnRlbC5jb20+IHdyb3RlOgo+IEZyb206IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4KPiBBZGQgdGhlIG1pbmltYWwgYW1vdW50IG9mIFBTUiB0cmFja2lu ZyBpbnRvIHRoZSBjcnRjIHN0YXRlLiBUaGlzIGFsbG93cwo+IHByZWNvbXB1dGluZyB0aGUgcG9z c2liaWxpdHkgb2YgdXNpbmcgUFNSIGNvcnJlY3RseSwgYW5kIGl0IG1lYW5zIHdlIGNhbgo+IHNh ZmVseSBjYWxsIHRoZSBwc3IgZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zIGZvciBhbnkgRFAgZW5k Y29kZXIuCj4KPiBBcyBhIG5pY2UgYm9udXMgd2UgZ2V0IHJpZCBvZiBzb21lIG1vcmUgY3J0Yy0+ Y29uZmlnIHVzYWdlLCB3aGljaCB3ZQo+IHdhbnQgdG8ga2lsbCBvZmYgZXZlbnR1YWxseS4KPgo+ IHYyOiBGaXggJ2dvdG8gdW5sb2NrJyBmYWlsIGluIGludGVsX3Bzcl9lbmFibGUoKSAoSmFuaSkK PiAgICAgQ2hlY2sgaW50ZWxfZHBfaXNfZWRwKCkgaW4gaXNfZWRwX3BzcigpIChKYW5pKQo+Cj4g Q2M6IFJvZHJpZ28gVml2aSA8cm9kcmlnby52aXZpQGludGVsLmNvbT4KPiBDYzogSmFuaSBOaWt1 bGEgPGphbmkubmlrdWxhQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rs w6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKUmV2aWV3ZWQtYnk6IEphbmkgTmlr dWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+CgpCdXQgSSB0aGluayBhbiBhY2sgZnJvbSBSb2Ry aWdvIG1pZ2h0IGJlIGluIG9yZGVyLgoKVGhlcmUncyBhbHNvIHNvbWUgZm9sbG93LXVwIHRvIGRv IHdpdGggdW50YW5nbGluZwpkZXZfcHJpdi0+cHNyLnBzcjJfc3VwcG9ydC4KCj4gLS0tCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMgIHwgIDIgKwo+ICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaCB8ICA1ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9w c3IuYyB8IDg1ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgMyBm aWxlcyBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkKPgo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHAuYwo+IGluZGV4IGIwZjQ0NmI2OGY0Mi4uNzUzNDA0MjgwYTE5IDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCj4gQEAgLTE4MzIsNiArMTgzMiw4IEBAIGludGVsX2Rw X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLAo+ICAJaWYgKCFI QVNfRERJKGRldl9wcml2KSkKPiAgCQlpbnRlbF9kcF9zZXRfY2xvY2soZW5jb2RlciwgcGlwZV9j b25maWcpOwo+ICAKPiArCWludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhpbnRlbF9kcCwgcGlwZV9j b25maWcpOwo+ICsKPiAgCXJldHVybiB0cnVlOwo+ICB9Cj4gIAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oCj4gaW5kZXggYjg3OTQ2ZGNjNTNmLi5kNjE5ODVmOTNkNDAgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kcnYuaAo+IEBAIC03MTgsNiArNzE4LDkgQEAgc3RydWN0IGludGVsX2NydGNf c3RhdGUgewo+ICAJc3RydWN0IGludGVsX2xpbmtfbV9uIGRwX20yX24yOwo+ICAJYm9vbCBoYXNf ZHJyczsKPiAgCj4gKwlib29sIGhhc19wc3I7Cj4gKwlib29sIGhhc19wc3IyOwo+ICsKPiAgCS8q Cj4gIAkgKiBGcmVxdWVuY2UgdGhlIGRwbGwgZm9yIHRoZSBwb3J0IHNob3VsZCBydW4gYXQuIERp ZmZlcnMgZnJvbSB0aGUKPiAgCSAqIGFkanVzdGVkIGRvdGNsb2NrIGUuZy4gZm9yIERQIG9yIDEy YnBjIGhkbWkgbW9kZS4gVGhpcyBpcyBhbHNvCj4gQEAgLTE3NjQsNiArMTc2Nyw4IEBAIHZvaWQg aW50ZWxfcHNyX2ZsdXNoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKPiAgdm9p ZCBpbnRlbF9wc3JfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2 b2lkIGludGVsX3Bzcl9zaW5nbGVfZnJhbWVfdXBkYXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKPiAgCQkJCSAgIHVuc2lnbmVkIGZyb250YnVmZmVyX2JpdHMpOwo+ICt2b2lk IGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwLAo+ICsJ CQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gIAo+ICAvKiBp bnRlbF9ydW50aW1lX3BtLmMgKi8KPiAgaW50IGludGVsX3Bvd2VyX2RvbWFpbnNfaW5pdChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcHNyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9wc3IuYwo+IGluZGV4 IDU0MTljZGE4M2JhOC4uOTNiMTc3Y2M0Y2JmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3Bzci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcHNy LmMKPiBAQCAtNTgsNiArNTgsOSBAQAo+ICAKPiAgc3RhdGljIGJvb2wgaXNfZWRwX3BzcihzdHJ1 Y3QgaW50ZWxfZHAgKmludGVsX2RwKQo+ICB7Cj4gKwlpZiAoIWludGVsX2RwX2lzX2VkcChpbnRl bF9kcCkpCj4gKwkJcmV0dXJuIGZhbHNlOwo+ICsKPiAgCXJldHVybiBpbnRlbF9kcC0+cHNyX2Rw Y2RbMF0gJiBEUF9QU1JfSVNfU1VQUE9SVEVEOwo+ICB9Cj4gIAo+IEBAIC0zNzYsMjIgKzM3OSwy NSBAQCBzdGF0aWMgdm9pZCBoc3dfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxf ZHApCj4gIAkJaHN3X2FjdGl2YXRlX3BzcjEoaW50ZWxfZHApOwo+ICB9Cj4gIAo+IC1zdGF0aWMg Ym9vbCBpbnRlbF9wc3JfbWF0Y2hfY29uZGl0aW9ucyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2Rw KQo+ICt2b2lkIGludGVsX3Bzcl9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfZHAgKmludGVs X2RwLAo+ICsJCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSkKPiAg ewo+ICAJc3RydWN0IGludGVsX2RpZ2l0YWxfcG9ydCAqZGlnX3BvcnQgPSBkcF90b19kaWdfcG9y dChpbnRlbF9kcCk7Cj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGlnX3BvcnQtPmJhc2Uu YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1 KGRldik7Cj4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBkaWdfcG9ydC0+YmFzZS5iYXNlLmNy dGM7Cj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRpZ19w b3J0LT5iYXNlLmJhc2UuZGV2KTsKPiAgCWNvbnN0IHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICph ZGp1c3RlZF9tb2RlID0KPiAtCQkmaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGU7Cj4gKwkJJmNydGNfc3RhdGUtPmJhc2UuYWRqdXN0ZWRfbW9kZTsKPiAgCWludCBwc3Jfc2V0 dXBfdGltZTsKPiAgCj4gLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZkZXZfcHJpdi0+cHNyLmxvY2sp Owo+IC0JV0FSTl9PTighZHJtX21vZGVzZXRfaXNfbG9ja2VkKCZkZXYtPm1vZGVfY29uZmlnLmNv bm5lY3Rpb25fbXV0ZXgpKTsKPiAtCVdBUk5fT04oIWRybV9tb2Rlc2V0X2lzX2xvY2tlZCgmY3J0 Yy0+bXV0ZXgpKTsKPiArCWlmICghSEFTX1BTUihkZXZfcHJpdikpCj4gKwkJcmV0dXJuOwo+ICAK PiAtCWRldl9wcml2LT5wc3Iuc291cmNlX29rID0gZmFsc2U7Cj4gKwlpZiAoIWlzX2VkcF9wc3Io aW50ZWxfZHApKQo+ICsJCXJldHVybjsKPiArCj4gKwlpZiAoIWk5MTVfbW9kcGFyYW1zLmVuYWJs ZV9wc3IpIHsKPiArCQlEUk1fREVCVUdfS01TKCJQU1IgZGlzYWJsZSBieSBmbGFnXG4iKTsKPiAr CQlyZXR1cm47Cj4gKwl9Cj4gIAo+ICAJLyoKPiAgCSAqIEhTVyBzcGVjIGV4cGxpY2l0bHkgc2F5 cyBQU1IgaXMgdGllZCB0byBwb3J0IEEuCj4gQEAgLTQwMiw2NiArNDA4LDcwIEBAIHN0YXRpYyBi b29sIGludGVsX3Bzcl9tYXRjaF9jb25kaXRpb25zKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHAp Cj4gIAkgKi8KPiAgCWlmIChIQVNfRERJKGRldl9wcml2KSAmJiBkaWdfcG9ydC0+cG9ydCAhPSBQ T1JUX0EpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQU1IgY29uZGl0aW9uIGZhaWxlZDogUG9ydCBu b3Qgc3VwcG9ydGVkXG4iKTsKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gLQl9Cj4gLQo+IC0JaWYgKCFp OTE1X21vZHBhcmFtcy5lbmFibGVfcHNyKSB7Cj4gLQkJRFJNX0RFQlVHX0tNUygiUFNSIGRpc2Fi bGUgYnkgZmxhZ1xuIik7Cj4gLQkJcmV0dXJuIGZhbHNlOwo+ICsJCXJldHVybjsKPiAgCX0KPiAg Cj4gIAlpZiAoKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKSAmJgo+ICAJICAgICFkZXZfcHJpdi0+cHNyLmxpbmtfc3RhbmRieSkgewo+ICAJCURSTV9F UlJPUigiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IExpbmsgb2ZmIHJlcXVlc3RlZCBidXQgbm90IHN1 cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtXG4iKTsKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwkJcmV0 dXJuOwo+ICAJfQo+ICAKPiAgCWlmIChJU19IQVNXRUxMKGRldl9wcml2KSAmJgo+IC0JICAgIEk5 MTVfUkVBRChIU1dfU1RFUkVPXzNEX0NUTChpbnRlbF9jcnRjLT5jb25maWctPmNwdV90cmFuc2Nv ZGVyKSkgJgo+ICsJICAgIEk5MTVfUkVBRChIU1dfU1RFUkVPXzNEX0NUTChjcnRjX3N0YXRlLT5j cHVfdHJhbnNjb2RlcikpICYKPiAgCQkgICAgICBTM0RfRU5BQkxFKSB7Cj4gIAkJRFJNX0RFQlVH X0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IFN0ZXJlbyAzRCBpcyBFbmFibGVkXG4iKTsKPiAt CQlyZXR1cm4gZmFsc2U7Cj4gKwkJcmV0dXJuOwo+ICAJfQo+ICAKPiAgCWlmIChJU19IQVNXRUxM KGRldl9wcml2KSAmJgo+ICAJICAgIGFkanVzdGVkX21vZGUtPmZsYWdzICYgRFJNX01PREVfRkxB R19JTlRFUkxBQ0UpIHsKPiAgCQlEUk1fREVCVUdfS01TKCJQU1IgY29uZGl0aW9uIGZhaWxlZDog SW50ZXJsYWNlZCBpcyBFbmFibGVkXG4iKTsKPiAtCQlyZXR1cm4gZmFsc2U7Cj4gKwkJcmV0dXJu Owo+ICAJfQo+ICAKPiAgCXBzcl9zZXR1cF90aW1lID0gZHJtX2RwX3Bzcl9zZXR1cF90aW1lKGlu dGVsX2RwLT5wc3JfZHBjZCk7Cj4gIAlpZiAocHNyX3NldHVwX3RpbWUgPCAwKSB7Cj4gIAkJRFJN X0RFQlVHX0tNUygiUFNSIGNvbmRpdGlvbiBmYWlsZWQ6IEludmFsaWQgUFNSIHNldHVwIHRpbWUg KDB4JTAyeClcbiIsCj4gIAkJCSAgICAgIGludGVsX2RwLT5wc3JfZHBjZFsxXSk7Cj4gLQkJcmV0 dXJuIGZhbHNlOwo+ICsJCXJldHVybjsKPiAgCX0KPiAgCj4gIAlpZiAoaW50ZWxfdXNlY3NfdG9f c2NhbmxpbmVzKGFkanVzdGVkX21vZGUsIHBzcl9zZXR1cF90aW1lKSA+Cj4gIAkgICAgYWRqdXN0 ZWRfbW9kZS0+Y3J0Y192dG90YWwgLSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5IC0gMSkg ewo+ICAJCURSTV9ERUJVR19LTVMoIlBTUiBjb25kaXRpb24gZmFpbGVkOiBQU1Igc2V0dXAgdGlt ZSAoJWQgdXMpIHRvbyBsb25nXG4iLAo+ICAJCQkgICAgICBwc3Jfc2V0dXBfdGltZSk7Cj4gLQkJ cmV0dXJuIGZhbHNlOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwkvKgo+ICsJICogRklYTUUg cHNyMl9zdXBwb3J0IGlzIG1lc3NlZCB1cC4gSXQncyBib3RoIGNvbXB1dGVkCj4gKwkgKiBkeW5h bWljYWxseSBkdXJpbmcgUFNSIGVuYWJsZSwgYW5kIGV4dHJhY3RlZCBmcm9tIHNpbmsKPiArCSAq IGNhcHMgZHVyaW5nIGVEUCBkZXRlY3Rpb24uCj4gKwkgKi8KPiArCWlmICghZGV2X3ByaXYtPnBz ci5wc3IyX3N1cHBvcnQpIHsKPiArCQljcnRjX3N0YXRlLT5oYXNfcHNyID0gdHJ1ZTsKPiArCQly ZXR1cm47Cj4gIAl9Cj4gIAo+ICAJLyogUFNSMiBpcyByZXN0cmljdGVkIHRvIHdvcmsgd2l0aCBw YW5lbCByZXNvbHV0aW9ucyB1cHRvIDMyMDB4MjAwMCAqLwo+IC0JaWYgKGRldl9wcml2LT5wc3Iu cHNyMl9zdXBwb3J0ICYmCj4gLQkgICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyA+ IDMyMDAgfHwKPiAtCSAgICAgaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oID4gMjAwMCkp IHsKPiAtCQlkZXZfcHJpdi0+cHNyLnBzcjJfc3VwcG9ydCA9IGZhbHNlOwo+IC0JCXJldHVybiBm YWxzZTsKPiArCWlmIChhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5ID4gMzIwMCB8fAo+ICsJ ICAgIGFkanVzdGVkX21vZGUtPmNydGNfdmRpc3BsYXkgPiAyMDAwKSB7Cj4gKwkJRFJNX0RFQlVH X0tNUygiUFNSMiBkaXNhYmxlZCwgcGFuZWwgcmVzb2x1dGlvbiB0b28gYmlnXG4iKTsKPiArCQly ZXR1cm47Cj4gIAl9Cj4gIAo+ICAJLyoKPiAgCSAqIEZJWE1FOmVuYWJsZSBwc3IyIG9ubHkgZm9y IHktY29yZGluYXRlIHBzcjIgcGFuZWxzCj4gIAkgKiBBZnRlciBndGMgaW1wbGVtZW50YXRpb24g LCByZW1vdmUgdGhpcyByZXN0cmljdGlvbi4KPiAgCSAqLwo+IC0JaWYgKCFkZXZfcHJpdi0+cHNy LnlfY29yZF9zdXBwb3J0ICYmICBkZXZfcHJpdi0+cHNyLnBzcjJfc3VwcG9ydCkgewo+ICsJaWYg KCFkZXZfcHJpdi0+cHNyLnlfY29yZF9zdXBwb3J0KSB7Cj4gIAkJRFJNX0RFQlVHX0tNUygiUFNS MiBkaXNhYmxlZCwgcGFuZWwgZG9lcyBub3Qgc3VwcG9ydCBZIGNvb3JkaW5hdGVcbiIpOwo+IC0J CXJldHVybiBmYWxzZTsKPiArCQlyZXR1cm47Cj4gIAl9Cj4gIAo+IC0JZGV2X3ByaXYtPnBzci5z b3VyY2Vfb2sgPSB0cnVlOwo+IC0JcmV0dXJuIHRydWU7Cj4gKwljcnRjX3N0YXRlLT5oYXNfcHNy ID0gdHJ1ZTsKPiArCWNydGNfc3RhdGUtPmhhc19wc3IyID0gdHJ1ZTsKPiAgfQo+ICAKPiAgc3Rh dGljIHZvaWQgaW50ZWxfcHNyX2FjdGl2YXRlKHN0cnVjdCBpbnRlbF9kcCAqaW50ZWxfZHApCj4g QEAgLTUzMSwxNCArNTQxLDkgQEAgdm9pZCBpbnRlbF9wc3JfZW5hYmxlKHN0cnVjdCBpbnRlbF9k cCAqaW50ZWxfZHAsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gaW50ZWxfZGlnX3BvcnQt PmJhc2UuYmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4gIAo+IC0JaWYgKCFIQVNfUFNSKGRldl9wcml2KSkKPiArCWlmICghY3J0 Y19zdGF0ZS0+aGFzX3BzcikKPiAgCQlyZXR1cm47Cj4gIAo+IC0JaWYgKCFpc19lZHBfcHNyKGlu dGVsX2RwKSkgewo+IC0JCURSTV9ERUJVR19LTVMoIlBTUiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMg cGFuZWxcbiIpOwo+IC0JCXJldHVybjsKPiAtCX0KPiAtCj4gIAlXQVJOX09OKGRldl9wcml2LT5k cnJzLmRwKTsKPiAgCW11dGV4X2xvY2soJmRldl9wcml2LT5wc3IubG9jayk7Cj4gIAlpZiAoZGV2 X3ByaXYtPnBzci5lbmFibGVkKSB7Cj4gQEAgLTU0Niw4ICs1NTEsOCBAQCB2b2lkIGludGVsX3Bz cl9lbmFibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9kcCwKPiAgCQlnb3RvIHVubG9jazsKPiAg CX0KPiAgCj4gLQlpZiAoIWludGVsX3Bzcl9tYXRjaF9jb25kaXRpb25zKGludGVsX2RwKSkKPiAt CQlnb3RvIHVubG9jazsKPiArCWRldl9wcml2LT5wc3IucHNyMl9zdXBwb3J0ID0gY3J0Y19zdGF0 ZS0+aGFzX3BzcjI7Cj4gKwlkZXZfcHJpdi0+cHNyLnNvdXJjZV9vayA9IHRydWU7Cj4gIAo+ICAJ ZGV2X3ByaXYtPnBzci5idXN5X2Zyb250YnVmZmVyX2JpdHMgPSAwOwo+ICAKPiBAQCAtNjY4LDcg KzY3Myw3IEBAIHZvaWQgaW50ZWxfcHNyX2Rpc2FibGUoc3RydWN0IGludGVsX2RwICppbnRlbF9k cCwKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBpbnRlbF9kaWdfcG9ydC0+YmFzZS5iYXNl LmRldjsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2 KTsKPiAgCj4gLQlpZiAoIUhBU19QU1IoZGV2X3ByaXYpKQo+ICsJaWYgKCFvbGRfY3J0Y19zdGF0 ZS0+aGFzX3BzcikKPiAgCQlyZXR1cm47Cj4gIAo+ICAJbXV0ZXhfbG9jaygmZGV2X3ByaXYtPnBz ci5sb2NrKTsKCi0tIApKYW5pIE5pa3VsYSwgSW50ZWwgT3BlbiBTb3VyY2UgVGVjaG5vbG9neSBD ZW50ZXIKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50 ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBz Oi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==