From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 1/6] drm/i915: Use atomic state to obtain load detection crtc. Date: Mon, 1 Feb 2016 18:08:35 +0200 Message-ID: <20160201160835.GQ23290@intel.com> References: <1454334242-23354-1-git-send-email-maarten.lankhorst@linux.intel.com> <1454334242-23354-2-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 666366E31F for ; Mon, 1 Feb 2016 08:08:38 -0800 (PST) Content-Disposition: inline In-Reply-To: <1454334242-23354-2-git-send-email-maarten.lankhorst@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: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBGZWIgMDEsIDIwMTYgYXQgMDI6NDM6NTdQTSArMDEwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gSW5zdGVhZCBvZiByZXN0b3JpbmcgZHBtcyBhbmQgYSBmbGFnIGZvciB3aGV0 aGVyIGEgdGVtcCBmYiBpcyBhbGxvY2F0ZWQgZHVwbGljYXRlCj4gdGhlIG9sZCBwbGFuZV9zdGF0 ZSBhbmQgY3J0Y19zdGF0ZSwgYW5kIHJlc3RvcmUgdGhlIG1lbWJlcnMgd2UgcG90ZW50aWFsbHkg dG91Y2hlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5s YW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMgfCAxMjggKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0K PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgIHwgICA0ICstCj4gIDIgZmls ZXMgY2hhbmdlZCwgNzYgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDRkOGM5Zjc4NTdkYi4uMDcwMmNlOGVj MzZhIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IEBAIC0xMDM2MSw2 ICsxMDM2MSw3IEBAIG1vZGVfZml0c19pbl9mYmRldihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ ICAJaWYgKG9iai0+YmFzZS5zaXplIDwgbW9kZS0+dmRpc3BsYXkgKiBmYi0+cGl0Y2hlc1swXSkK PiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gKwlkcm1fZnJhbWVidWZmZXJfcmVmZXJlbmNlKGZiKTsK PiAgCXJldHVybiBmYjsKPiAgI2Vsc2UKPiAgCXJldHVybiBOVUxMOwo+IEBAIC0xMDQyNiw2ICsx MDQyNyw5IEBAIGJvb2wgaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm5lY3RvciwKPiAgCQkgICAgICBlbmNvZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5u YW1lKTsKPiAgCj4gIHJldHJ5Ogo+ICsJb2xkLT5vbGRfcGlwZV9jb25maWcgPSBOVUxMOwo+ICsJ b2xkLT5vbGRfcGxhbmVfc3RhdGUgPSBOVUxMOwo+ICsKPiAgCXJldCA9IGRybV9tb2Rlc2V0X2xv Y2soJmNvbmZpZy0+Y29ubmVjdGlvbl9tdXRleCwgY3R4KTsKPiAgCWlmIChyZXQpCj4gIAkJZ290 byBmYWlsOwo+IEBAIC0xMDQ0MSwyNCArMTA0NDUsMTUgQEAgcmV0cnk6Cj4gIAkgKi8KPiAgCj4g IAkvKiBTZWUgaWYgd2UgYWxyZWFkeSBoYXZlIGEgQ1JUQyBmb3IgdGhpcyBjb25uZWN0b3IgKi8K PiAtCWlmIChlbmNvZGVyLT5jcnRjKSB7Cj4gLQkJY3J0YyA9IGVuY29kZXItPmNydGM7Cj4gKwlp ZiAoY29ubmVjdG9yLT5zdGF0ZS0+Y3J0Yykgewo+ICsJCWNydGMgPSBjb25uZWN0b3ItPnN0YXRl LT5jcnRjOwo+ICAKPiAgCQlyZXQgPSBkcm1fbW9kZXNldF9sb2NrKCZjcnRjLT5tdXRleCwgY3R4 KTsKPiAgCQlpZiAocmV0KQo+ICAJCQlnb3RvIGZhaWw7Cj4gLQkJcmV0ID0gZHJtX21vZGVzZXRf bG9jaygmY3J0Yy0+cHJpbWFyeS0+bXV0ZXgsIGN0eCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJZ290 byBmYWlsOwo+IC0KPiAtCQlvbGQtPmRwbXNfbW9kZSA9IGNvbm5lY3Rvci0+ZHBtczsKPiAtCQlv bGQtPmxvYWRfZGV0ZWN0X3RlbXAgPSBmYWxzZTsKPiAgCj4gIAkJLyogTWFrZSBzdXJlIHRoZSBj cnRjIGFuZCBjb25uZWN0b3IgYXJlIHJ1bm5pbmcgKi8KPiAtCQlpZiAoY29ubmVjdG9yLT5kcG1z ICE9IERSTV9NT0RFX0RQTVNfT04pCj4gLQkJCWNvbm5lY3Rvci0+ZnVuY3MtPmRwbXMoY29ubmVj dG9yLCBEUk1fTU9ERV9EUE1TX09OKTsKPiAtCj4gLQkJcmV0dXJuIHRydWU7Cj4gKwkJZ290byBm b3VuZDsKPiAgCX0KPiAgCj4gIAkvKiBGaW5kIGFuIHVudXNlZCBvbmUgKGlmIHBvc3NpYmxlKSAq Lwo+IEBAIC0xMDQ2Niw4ICsxMDQ2MSwxNSBAQCByZXRyeToKPiAgCQlpKys7Cj4gIAkJaWYgKCEo ZW5jb2Rlci0+cG9zc2libGVfY3J0Y3MgJiAoMSA8PCBpKSkpCj4gIAkJCWNvbnRpbnVlOwo+IC0J CWlmIChwb3NzaWJsZV9jcnRjLT5zdGF0ZS0+ZW5hYmxlKQo+ICsKPiArCQlyZXQgPSBkcm1fbW9k ZXNldF9sb2NrKCZwb3NzaWJsZV9jcnRjLT5tdXRleCwgY3R4KTsKPiArCQlpZiAocmV0KQo+ICsJ CQlnb3RvIGZhaWw7Cj4gKwo+ICsJCWlmIChwb3NzaWJsZV9jcnRjLT5zdGF0ZS0+ZW5hYmxlKSB7 Cj4gKwkJCWRybV9tb2Rlc2V0X3VubG9jaygmcG9zc2libGVfY3J0Yy0+bXV0ZXgpOwo+ICAJCQlj b250aW51ZTsKPiArCQl9Cj4gIAo+ICAJCWNydGMgPSBwb3NzaWJsZV9jcnRjOwo+ICAJCWJyZWFr Owo+IEBAIC0xMDQ4MSwxNyArMTA0ODMsMTkgQEAgcmV0cnk6Cj4gIAkJZ290byBmYWlsOwo+ICAJ fQo+ICAKPiAtCXJldCA9IGRybV9tb2Rlc2V0X2xvY2soJmNydGMtPm11dGV4LCBjdHgpOwo+IC0J aWYgKHJldCkKPiAtCQlnb3RvIGZhaWw7Cj4gK2ZvdW5kOgo+ICsJaW50ZWxfY3J0YyA9IHRvX2lu dGVsX2NydGMoY3J0Yyk7Cj4gKwo+ICAJcmV0ID0gZHJtX21vZGVzZXRfbG9jaygmY3J0Yy0+cHJp bWFyeS0+bXV0ZXgsIGN0eCk7Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZmFpbDsKPiAgCj4gLQlp bnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiAtCW9sZC0+ZHBtc19tb2RlID0gY29u bmVjdG9yLT5kcG1zOwo+IC0Jb2xkLT5sb2FkX2RldGVjdF90ZW1wID0gdHJ1ZTsKPiAtCW9sZC0+ cmVsZWFzZV9mYiA9IE5VTEw7Cj4gKwlvbGQtPm9sZF9waXBlX2NvbmZpZyA9IGludGVsX2NydGNf ZHVwbGljYXRlX3N0YXRlKGNydGMpOwo+ICsJb2xkLT5vbGRfcGxhbmVfc3RhdGUgPSBpbnRlbF9w bGFuZV9kdXBsaWNhdGVfc3RhdGUoY3J0Yy0+cHJpbWFyeSk7Cj4gKwlpZiAoIW9sZC0+b2xkX3Bp cGVfY29uZmlnIHx8ICFvbGQtPm9sZF9wbGFuZV9zdGF0ZSkgewo+ICsJCXJldCA9IC1FTk9NRU07 Cj4gKwkJZ290byBmYWlsOwo+ICsJfQo+ICAKPiAgCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9h bGxvYyhkZXYpOwo+ICAJaWYgKCFzdGF0ZSkKPiBAQCAtMTA1MDUsNyArMTA1MDksOSBAQCByZXRy eToKPiAgCQlnb3RvIGZhaWw7Cj4gIAl9Cj4gIAo+IC0JY29ubmVjdG9yX3N0YXRlLT5jcnRjID0g Y3J0YzsKPiArCXJldCA9IGRybV9hdG9taWNfc2V0X2NydGNfZm9yX2Nvbm5lY3Rvcihjb25uZWN0 b3Jfc3RhdGUsIGNydGMpOwo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZhaWw7Cj4gIAo+ICAJY3J0 Y19zdGF0ZSA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgaW50ZWxfY3J0Yyk7 Cj4gIAlpZiAoSVNfRVJSKGNydGNfc3RhdGUpKSB7Cj4gQEAgLTEwNTI5LDcgKzEwNTM1LDYgQEAg cmV0cnk6Cj4gIAlpZiAoZmIgPT0gTlVMTCkgewo+ICAJCURSTV9ERUJVR19LTVMoImNyZWF0aW5n IHRtcCBmYiBmb3IgbG9hZC1kZXRlY3Rpb25cbiIpOwo+ICAJCWZiID0gaW50ZWxfZnJhbWVidWZm ZXJfY3JlYXRlX2Zvcl9tb2RlKGRldiwgbW9kZSwgMjQsIDMyKTsKPiAtCQlvbGQtPnJlbGVhc2Vf ZmIgPSBmYjsKPiAgCX0gZWxzZQo+ICAJCURSTV9ERUJVR19LTVMoInJldXNpbmcgZmJkZXYgZm9y IGxvYWQtZGV0ZWN0aW9uIGZyYW1lYnVmZmVyXG4iKTsKPiAgCWlmIChJU19FUlIoZmIpKSB7Cj4g QEAgLTEwNTQxLDE1ICsxMDU0NiwxNiBAQCByZXRyeToKPiAgCWlmIChyZXQpCj4gIAkJZ290byBm YWlsOwo+ICAKPiAtCWRybV9tb2RlX2NvcHkoJmNydGNfc3RhdGUtPmJhc2UubW9kZSwgbW9kZSk7 Cj4gKwlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2UoZmIpOwo+ICsKPiArCXJldCA9IGRybV9h dG9taWNfc2V0X21vZGVfZm9yX2NydGMoJmNydGNfc3RhdGUtPmJhc2UsIG1vZGUpOwo+ICsJaWYg KHJldCkKPiArCQlnb3RvIGZhaWw7Cj4gIAo+ICAJaWYgKGRybV9hdG9taWNfY29tbWl0KHN0YXRl KSkgewo+ICAJCURSTV9ERUJVR19LTVMoImZhaWxlZCB0byBzZXQgbW9kZSBvbiBsb2FkLWRldGVj dCBwaXBlXG4iKTsKPiAtCQlpZiAob2xkLT5yZWxlYXNlX2ZiKQo+IC0JCQlvbGQtPnJlbGVhc2Vf ZmItPmZ1bmNzLT5kZXN0cm95KG9sZC0+cmVsZWFzZV9mYik7Cj4gIAkJZ290byBmYWlsOwo+ICAJ fQo+IC0JY3J0Yy0+cHJpbWFyeS0+Y3J0YyA9IGNydGM7Cj4gIAo+ICAJLyogbGV0IHRoZSBjb25u ZWN0b3IgZ2V0IHRocm91Z2ggb25lIGZ1bGwgY3ljbGUgYmVmb3JlIHRlc3RpbmcgKi8KPiAgCWlu dGVsX3dhaXRfZm9yX3ZibGFuayhkZXYsIGludGVsX2NydGMtPnBpcGUpOwo+IEBAIC0xMDU1OSw2 ICsxMDU2NSwxMiBAQCBmYWlsOgo+ICAJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKPiAg CXN0YXRlID0gTlVMTDsKPiAgCj4gKwlpZiAob2xkLT5vbGRfcGlwZV9jb25maWcpCj4gKwkJaW50 ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsIG9sZC0+b2xkX3BpcGVfY29uZmlnKTsKPiArCj4g KwlpZiAob2xkLT5vbGRfcGxhbmVfc3RhdGUpCj4gKwkJaW50ZWxfcGxhbmVfZGVzdHJveV9zdGF0 ZShjcnRjLT5wcmltYXJ5LCBvbGQtPm9sZF9wbGFuZV9zdGF0ZSk7Cj4gKwo+ICAJaWYgKHJldCA9 PSAtRURFQURMSykgewo+ICAJCWRybV9tb2Rlc2V0X2JhY2tvZmYoY3R4KTsKPiAgCQlnb3RvIHJl dHJ5Owo+IEBAIC0xMDU3NSw2MSArMTA1ODcsNjkgQEAgdm9pZCBpbnRlbF9yZWxlYXNlX2xvYWRf ZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiAgCXN0cnVjdCBp bnRlbF9lbmNvZGVyICppbnRlbF9lbmNvZGVyID0KPiAgCQlpbnRlbF9hdHRhY2hlZF9lbmNvZGVy KGNvbm5lY3Rvcik7Cj4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZW5j b2Rlci0+YmFzZTsKPiAtCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9IGVuY29kZXItPmNydGM7Cj4g KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBjb25uZWN0b3ItPnN0YXRlLT5jcnRjOwo+ICAJc3Ry dWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ICAJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwo+ICAJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5lY3Rvcl9zdGF0ZTsKPiAgCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlOwo+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7Cj4gIAlpbnQgcmV0 Owo+ICAKPiAgCURSTV9ERUJVR19LTVMoIltDT05ORUNUT1I6JWQ6JXNdLCBbRU5DT0RFUjolZDol c11cbiIsCj4gIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUsCj4g IAkJICAgICAgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSk7Cj4gIAo+IC0JaWYgKG9s ZC0+bG9hZF9kZXRlY3RfdGVtcCkgewo+IC0JCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxv YyhkZXYpOwo+IC0JCWlmICghc3RhdGUpCj4gLQkJCWdvdG8gZmFpbDsKPiArCWlmICghb2xkLT5v bGRfcGlwZV9jb25maWcpCj4gKwkJcmV0dXJuOwo+ICAKPiAtCQlzdGF0ZS0+YWNxdWlyZV9jdHgg PSBjdHg7Cj4gKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKPiArCWlmICgh c3RhdGUpCj4gKwkJZ290byBmYWlsOwo+ICAKPiAtCQljb25uZWN0b3Jfc3RhdGUgPSBkcm1fYXRv bWljX2dldF9jb25uZWN0b3Jfc3RhdGUoc3RhdGUsIGNvbm5lY3Rvcik7Cj4gLQkJaWYgKElTX0VS Uihjb25uZWN0b3Jfc3RhdGUpKQo+IC0JCQlnb3RvIGZhaWw7Cj4gKwlzdGF0ZS0+YWNxdWlyZV9j dHggPSBjdHg7Cj4gIAo+IC0JCWNydGNfc3RhdGUgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3Rh dGUoc3RhdGUsIGludGVsX2NydGMpOwo+IC0JCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4gLQkJ CWdvdG8gZmFpbDsKPiArCWNvbm5lY3Rvcl9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rv cl9zdGF0ZShzdGF0ZSwgY29ubmVjdG9yKTsKPiArCWlmIChJU19FUlIoY29ubmVjdG9yX3N0YXRl KSkKPiArCQlnb3RvIGZhaWw7Cj4gIAo+IC0JCWNvbm5lY3Rvcl9zdGF0ZS0+Y3J0YyA9IE5VTEw7 Cj4gKwljcnRjX3N0YXRlID0gaW50ZWxfYXRvbWljX2dldF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRl bF9jcnRjKTsKPiArCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCj4gKwkJZ290byBmYWlsOwo+ICAK PiAtCQljcnRjX3N0YXRlLT5iYXNlLmVuYWJsZSA9IGNydGNfc3RhdGUtPmJhc2UuYWN0aXZlID0g ZmFsc2U7Cj4gKwlwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X3BsYW5lX3N0YXRlKHN0YXRl LCBjcnRjLT5wcmltYXJ5KTsKPiArCWlmIChJU19FUlIocGxhbmVfc3RhdGUpKQo+ICsJCWdvdG8g ZmFpbDsKPiAgCj4gLQkJcmV0ID0gaW50ZWxfbW9kZXNldF9zZXR1cF9wbGFuZV9zdGF0ZShzdGF0 ZSwgY3J0YywgTlVMTCwgTlVMTCwKPiAtCQkJCQkJICAgICAgMCwgMCk7Cj4gKwlpZiAoIW9sZC0+ b2xkX3BpcGVfY29uZmlnLT5lbmFibGUpIHsKPiArCQlyZXQgPSBkcm1fYXRvbWljX3NldF9jcnRj X2Zvcl9jb25uZWN0b3IoY29ubmVjdG9yX3N0YXRlLCBOVUxMKTsKPiAgCQlpZiAocmV0KQo+ICAJ CQlnb3RvIGZhaWw7Cj4gKwl9Cj4gIAo+IC0JCXJldCA9IGRybV9hdG9taWNfY29tbWl0KHN0YXRl KTsKPiAtCQlpZiAocmV0KQo+IC0JCQlnb3RvIGZhaWw7Cj4gKwljcnRjX3N0YXRlLT5iYXNlLmVu YWJsZSA9IG9sZC0+b2xkX3BpcGVfY29uZmlnLT5lbmFibGU7Cj4gKwljcnRjX3N0YXRlLT5iYXNl LmFjdGl2ZSA9IG9sZC0+b2xkX3BpcGVfY29uZmlnLT5hY3RpdmU7Cj4gIAo+IC0JCWlmIChvbGQt PnJlbGVhc2VfZmIpIHsKPiAtCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZShv bGQtPnJlbGVhc2VfZmIpOwo+IC0JCQlkcm1fZnJhbWVidWZmZXJfdW5yZWZlcmVuY2Uob2xkLT5y ZWxlYXNlX2ZiKTsKPiAtCQl9Cj4gKwlkcm1fYXRvbWljX3NldF9mYl9mb3JfcGxhbmUocGxhbmVf c3RhdGUsIG9sZC0+b2xkX3BsYW5lX3N0YXRlLT5mYik7Cj4gKwlyZXQgPSBkcm1fYXRvbWljX3Nl dF9jcnRjX2Zvcl9wbGFuZShwbGFuZV9zdGF0ZSwgb2xkLT5vbGRfcGxhbmVfc3RhdGUtPmNydGMp Owo+ICsJaWYgKHJldCkKPiArCQlnb3RvIGZhaWw7Cj4gIAo+IC0JCXJldHVybjsKPiAtCX0KPiAr CW9sZC0+b2xkX3BsYW5lX3N0YXRlLT5zdGF0ZSA9IHBsYW5lX3N0YXRlLT5zdGF0ZTsKPiArCSpw bGFuZV9zdGF0ZSA9ICpvbGQtPm9sZF9wbGFuZV9zdGF0ZTsKClRoaXMgcGFydCBsb29rcyBtZXNz eS4gSSBkb24ndCB0aGluayB0aGVyZSdzIGFueSByZWFzb24gYW55b25lCmludGVyZXN0ZWQgaW4g bG9hZCBkZXRlY3Rpb24gc2hvdWxkIG5lZWQgdG8gZG8gdGhlc2Ugc29ydCBvZgpneW1uYXN0aWNz IG1hbnVhbGx5LiBTbyB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIHNvbWUga2luZCBvZiBuaWNlCnRo aW5nIHRvIGp1c3QgdGVsbCBhdG9taWMgdGhhdDoKImkgaGF2ZSB0aGlzIG9sZCBwbGFuZS9jcnRj L2Nvbm5lY3Rvci9ldGMuIHN0YXRlIGhlcmUsIHBsZWFzZQpqdXN0IHJlc3RvcmUgaXQiCgo+ICAK PiAtCS8qIFN3aXRjaCBjcnRjIGFuZCBlbmNvZGVyIGJhY2sgb2ZmIGlmIG5lY2Vzc2FyeSAqLwo+ IC0JaWYgKG9sZC0+ZHBtc19tb2RlICE9IERSTV9NT0RFX0RQTVNfT04pCj4gLQkJY29ubmVjdG9y LT5mdW5jcy0+ZHBtcyhjb25uZWN0b3IsIG9sZC0+ZHBtc19tb2RlKTsKPiArCXJldCA9IGRybV9h dG9taWNfY29tbWl0KHN0YXRlKTsKPiArCWlmIChyZXQpCj4gKwkJZ290byBmYWlsOwo+ICAKPiAr CWludGVsX3BsYW5lX2Rlc3Ryb3lfc3RhdGUoY3J0Yy0+cHJpbWFyeSwgb2xkLT5vbGRfcGxhbmVf c3RhdGUpOwo+ICsJaW50ZWxfY3J0Y19kZXN0cm95X3N0YXRlKGNydGMsIG9sZC0+b2xkX3BpcGVf Y29uZmlnKTsKPiAgCXJldHVybjsKPiArCj4gIGZhaWw6Cj4gIAlEUk1fREVCVUdfS01TKCJDb3Vs ZG4ndCByZWxlYXNlIGxvYWQgZGV0ZWN0IHBpcGUuXG4iKTsKPiAgCWRybV9hdG9taWNfc3RhdGVf ZnJlZShzdGF0ZSk7Cj4gKwlpbnRlbF9wbGFuZV9kZXN0cm95X3N0YXRlKGNydGMtPnByaW1hcnks IG9sZC0+b2xkX3BsYW5lX3N0YXRlKTsKPiArCWludGVsX2NydGNfZGVzdHJveV9zdGF0ZShjcnRj LCBvbGQtPm9sZF9waXBlX2NvbmZpZyk7Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaTl4eF9wbGxf cmVmY2xrKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgK PiBpbmRleCA5M2JhMTRhM2JiNzYuLmVlZGE3ZDAyYTRmNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rydi5oCj4gQEAgLTkxMyw4ICs5MTMsOCBAQCBzdHJ1Y3QgaW50ZWxfdW5waW5fd29yayB7 Cj4gIAo+ICBzdHJ1Y3QgaW50ZWxfbG9hZF9kZXRlY3RfcGlwZSB7Cj4gIAlzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpyZWxlYXNlX2ZiOwo+IC0JYm9vbCBsb2FkX2RldGVjdF90ZW1wOwo+IC0JaW50 IGRwbXNfbW9kZTsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX3BpcGVfY29uZmlnOwo+ ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqb2xkX3BsYW5lX3N0YXRlOwo+ICB9Owo+ICAKPiAg c3RhdGljIGlubGluZSBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqCj4gLS0gCj4gMi4xLjAKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IEludGVsLWdm eCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cDov L2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAoKLS0gClZp bGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngK