From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [PATCH 1/2] drm/i915/BXT: Get pipe conf from the port registers Date: Wed, 30 Mar 2016 13:43:36 +0300 Message-ID: <877fgk2qlj.fsf@intel.com> References: <1459272891-6830-1-git-send-email-ramalingam.c@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 ESMTP id 7A2306E0B2 for ; Wed, 30 Mar 2016 10:43:39 +0000 (UTC) In-Reply-To: <1459272891-6830-1-git-send-email-ramalingam.c@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ramalingam C , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCAyOSBNYXIgMjAxNiwgUmFtYWxpbmdhbSBDIDxyYW1hbGluZ2FtLmNAaW50ZWwuY29t PiB3cm90ZToKPiBBdCBCWFQgRFNJLCBQSVBFIHJlZ2lzdGVycyBhcmUgaW5hY3RpdmUuIFNvIHdl IGNhbid0IGdldCB0aGUKPiBQSVBFJ3MgbW9kZSBwYXJhbWV0ZXJzIGZyb20gdGhlbS4gVGhlIHBv c3NpYmxlIG9wdGlvbiBpcwo+IHJldHJpdmluZyB0aGVtIGZyb20gdGhlIFBPUlQgcmVnaXN0ZXJz Lgo+Cj4gVGhlIHJlcXVpcmVkIGNoYW5nZXMgYXJlIGFkZGVkIGZvciBCWFQgaW4gaW50ZWxfZHNp X2dldF9jb25maWcKPiAoZW5jb2Rlci0+Z2V0X2NvbmZpZykuCj4KPiBTaWduZWQtb2ZmLWJ5OiBS YW1hbGluZ2FtIEMgPHJhbWFsaW5nYW0uY0BpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogVW1h IFNoYW5rYXIgPHVtYS5zaGFua2FyQGludGVsLmNvbT4KPiAtLS0KPiBQcmV2aW91c2x5IHJldmll d2VkIGF0IGh0dHBzOi8vcGF0Y2h3b3JrLmZyZWVkZXNrdG9wLm9yZy9wYXRjaC83NTMwMS8KPgo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oICAgICAgfCAgICAxICsKPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgICA0NCArKysrKysrKysrKysrKwo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYyAgICAgfCAgMTA0ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysKPiAgMyBmaWxlcyBjaGFuZ2VkLCAxNDkgaW5zZXJ0aW9ucygr KQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggYzgzOWNlOS4uZGEzY2RlZiAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+IEBAIC04MjEwLDYgKzgyMTAsNyBAQCBlbnVtIHNr bF9kaXNwX3Bvd2VyX3dlbGxzIHsKPiAgI2RlZmluZSAgQlhUX1BJUEVfU0VMRUNUX1NISUZUCQkJ CTcKPiAgI2RlZmluZSAgQlhUX1BJUEVfU0VMRUNUX01BU0sJCQkJKDcgPDwgNykKPiAgI2RlZmlu ZSAgQlhUX1BJUEVfU0VMRUNUKHBpcGUpCQkJCSgocGlwZSkgPDwgNykKPiArI2RlZmluZSAgQlhU X1BPUlRfVE9fUElQRShjdHJsKQkJKChjdHJsICYgQlhUX1BJUEVfU0VMRUNUX01BU0spID4+IDcp Cj4gIAo+ICAjZGVmaW5lIF9NSVBJQV9EQVRBX0FERFJFU1MJCShkZXZfcHJpdi0+bWlwaV9tbWlv X2Jhc2UgKyAweGIxMDgpCj4gICNkZWZpbmUgX01JUElDX0RBVEFfQUREUkVTUwkJKGRldl9wcml2 LT5taXBpX21taW9fYmFzZSArIDB4YjkwOCkKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCj4gaW5kZXggMjlhYTY0Yi4uYzA2MjdkNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kaXNwbGF5LmMKPiBAQCAtOTk0MSwxMSArOTk0MSw0MCBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxs X2dldF9kZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCX0KPiAgfQo+ ICAKPiArc3RydWN0IGludGVsX2VuY29kZXIgKmJ4dF9nZXRfZHNpX2VuY29kZXJfZm9yX2NydGMo c3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gKwkJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFz ZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9w cml2YXRlOwo+ICsJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXI7Cj4gKwlzdHJ1 Y3QgaW50ZWxfZHNpICppbnRlbF9kc2k7Cj4gKwllbnVtIHBvcnQgcG9ydDsKPiArCXUzMiB0bXA7 Cj4gKwo+ICsJZm9yX2VhY2hfaW50ZWxfZW5jb2RlcihkZXYsIGludGVsX2VuY29kZXIpIHsKPiAr CQlpZiAoaW50ZWxfZW5jb2Rlci0+dHlwZSA9PSBJTlRFTF9PVVRQVVRfRFNJKSB7Cj4gKwkJCWlu dGVsX2RzaSA9IGVuY190b19pbnRlbF9kc2koJmludGVsX2VuY29kZXItPmJhc2UpOwo+ICsJCQlm b3JfZWFjaF9kc2lfcG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJCQlpZiAoIShJ OTE1X1JFQUQoQlhUX01JUElfUE9SVF9DVFJMKHBvcnQpKSAmCj4gKwkJCQkJCQkJRFBJX0VOQUJM RSkpCj4gKwkJCQkJYnJlYWs7Cj4gKwo+ICsJCQkJdG1wID0gSTkxNV9SRUFEKE1JUElfQ1RSTChw b3J0KSk7Cj4gKwkJCQlpZiAoKHRtcCAmIEJYVF9QSVBFX1NFTEVDVF9NQVNLKSA9PQo+ICsJCQkJ CQlCWFRfUElQRV9TRUxFQ1QoY3J0Yy0+cGlwZSkpCj4gKwkJCQkJcmV0dXJuIGludGVsX2VuY29k ZXI7Cj4gKwkJCX0KPiArCQl9Cj4gKwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAgc3Rh dGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMs Cj4gIAkJCQkgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICB7Cj4g IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGlu dGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIsICphdHRhY2hlZF9lbmNvZGVyID0gTlVMTDsKPiAg CWVudW0gaW50ZWxfZGlzcGxheV9wb3dlcl9kb21haW4gcG93ZXJfZG9tYWluOwo+ICAJdW5zaWdu ZWQgbG9uZyBwb3dlcl9kb21haW5fbWFzazsKPiAgCWJvb2wgYWN0aXZlOwo+IEBAIC05OTY1LDYg Kzk5OTQsMjEgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCj4gIAkJV0FSTl9PTihhY3RpdmUgJiYgcGlwZV9jb25maWctPmhhc19k c2lfZW5jb2Rlcik7Cj4gIAkJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHNpX2VuY29kZXIpCj4gIAkJ CWFjdGl2ZSA9IHRydWU7Cj4gKwo+ICsJCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsICZj cnRjLT5iYXNlLCBpbnRlbF9lbmNvZGVyKQo+ICsJCQlhdHRhY2hlZF9lbmNvZGVyID0gaW50ZWxf ZW5jb2RlcjsKPiArCj4gKwkJLyoKPiArCQkgKiBhdHRhY2hlZF9lbmNvZGVyIHdpbGwgYmUgTlVM TCwgaWYgdGhlcmUgaXMgbm8gbW9kZXNldCBmcm9tCj4gKwkJICogdGhlIGtlcm5lbCBib290dXAu Cj4gKwkJICovCj4gKwkJaWYgKCFhdHRhY2hlZF9lbmNvZGVyICYmIHBpcGVfY29uZmlnLT5oYXNf ZHNpX2VuY29kZXIpCj4gKwkJCWF0dGFjaGVkX2VuY29kZXIgPQo+ICsJCQkJYnh0X2dldF9kc2lf ZW5jb2Rlcl9mb3JfY3J0YyhjcnRjLCBwaXBlX2NvbmZpZyk7Cj4gKwo+ICsJCWlmIChhdHRhY2hl ZF9lbmNvZGVyICYmIGF0dGFjaGVkX2VuY29kZXItPmdldF9jb25maWcpCj4gKwkJCWF0dGFjaGVk X2VuY29kZXItPmdldF9jb25maWcoYXR0YWNoZWRfZW5jb2RlciwKPiArCQkJCQkJCQlwaXBlX2Nv bmZpZyk7CgpObywgeW91IG11c3Qgbm90IGFkZCBhIG5ldyBjYWxsIHRvIHRoZSBlbmNvZGVyLT5n ZXRfY29uZmlnKCkgaG9vay4KCmhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKCkgaXMgY2FsbGVkIHRo cm91Z2ggdGhlCmRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2NvbmZpZygpIGZ1bmN0aW9uIHBv aW50ZXIuIFRoaXMgaGFwcGVucyBpbgpjaGVja19jcnRjX3N0YXRlKCkgYW5kIGludGVsX21vZGVz ZXRfcmVhZG91dF9od19zdGF0ZSgpLiBJbiBib3RoIHBsYWNlcywKZW5jb2Rlci0+Z2V0X2NvbmZp ZygpIGlzIGNhbGxlZCBhZnRlcndhcmRzLCBpZiBlbmNvZGVyLT5nZXRfaHdfc3RhdGUoKQpyZXR1 cm5zIHRydWUgZm9yIHRoZSBlbmNvZGVyLgoKVGhlIGluZnJhc3RydWN0dXJlIGlzIHRoZXJlLCB5 b3Ugb25seSBuZWVkIHRvIHVwZGF0ZSBEU0kgLT5nZXRfY29uZmlnKCkuCgo+ICAJfQo+ICAKPiAg CWlmICghYWN0aXZlKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k c2kuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gaW5kZXggMGRlNzRlMS4u NjlhODAxZSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kc2kuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RzaS5jCj4gQEAgLTc0MCwxNCArNzQw LDExOCBAQCBvdXRfcHV0X3Bvd2VyOgo+ICAJcmV0dXJuIGFjdGl2ZTsKPiAgfQo+ICAKPiArLyog cmV0dXJuIHBpeGVscyBlcXV2YWxlbnQgdG8gdHhieXRlY2xraHMgKi8KPiArc3RhdGljIHUxNiBw aXhlbHNfZnJvbV90eGJ5dGVjbGtocyh1MTYgY2xrX2hzLCBpbnQgYnBwLCBpbnQgbGFuZV9jb3Vu dCwKPiArCQkgICAgICAgdTE2IGJ1cnN0X21vZGVfcmF0aW8pCj4gK3sKPiArCXJldHVybiBESVZf Uk9VTkRfVVAoKGNsa19ocyAqIGxhbmVfY291bnQgKiA4ICogMTAwKSwKPiArCQkJCQkJKGJwcCAq IGJ1cnN0X21vZGVfcmF0aW8pKTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgYnh0X2RzaV9nZXRf cGlwZV9jb25maWcoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCj4gKwkJCQkgc3RydWN0 IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUg KmFkanVzdGVkX21vZGUgPQo+ICsJCQkJCSZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2Rl Owo+ICsJc3RydWN0IGludGVsX2RzaSAqaW50ZWxfZHNpID0KPiArCQkJCWVuY190b19pbnRlbF9k c2koJmVuY29kZXItPmJhc2UpOwo+ICsJdW5zaWduZWQgaW50IGJwcCA9IG1pcGlfZHNpX3BpeGVs X2Zvcm1hdF90b19icHAoaW50ZWxfZHNpLT5waXhlbF9mb3JtYXQpOwo+ICsJdW5zaWduZWQgaW50 IGxhbmVfY291bnQgPSBpbnRlbF9kc2ktPmxhbmVfY291bnQ7Cj4gKwllbnVtIHBvcnQgcG9ydDsK PiArCWVudW0gcGlwZSBkc2lfcGlwZTsKPiArCXUxNiBoYWN0aXZlLCBoZnAsIGhzeW5jLCBoYnAs IHZmcCwgdnN5bmMsIHZicDsKPiArCXVpbnQzMl90IHRtcDsKPiArCj4gKwlmb3JfZWFjaF9kc2lf cG9ydChwb3J0LCBpbnRlbF9kc2ktPnBvcnRzKSB7Cj4gKwkJaWYgKCEoSTkxNV9SRUFEKEJYVF9N SVBJX1BPUlRfQ1RSTChwb3J0KSkgJiBEUElfRU5BQkxFKSkKPiArCQkJY29udGludWU7CgpQbGVh c2UgdXNlIHRoZSBsb29wIGp1c3QgZm9yIGZpZ3VyaW5nIG91dCB0aGUgcG9ydCB0byB1c2UgZm9y IHJlYWRpbmcKdGhlIHJlZ2lzdGVycy4gQWZ0ZXIgdGhhdCwgeW91IGNhbiBkbyB0aGUgcmVzdCBh dCBhIGxvd2VyIGluZGVudGF0aW9uCmxldmVsLCBhbmQgaXQncyBjbGVhcmVyIHRoZSByZXN0IG9u bHkgZ2V0cyBkb25lIG9uY2UsIGZvciBvbmUgcG9ydC4KCj4gKwo+ICsJCS8qIEluIHRlcm1zIG9m IHBpeGVscyAqLwo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaGRpc3BsYXkgPQo+ICsJCQkJCUk5 MTVfUkVBRChCWFRfTUlQSV9UUkFOU19IQUNUSVZFKHBvcnQpKTsKPiArCQlhZGp1c3RlZF9tb2Rl LT5jcnRjX3ZkaXNwbGF5ID0KPiArCQkJCQlJOTE1X1JFQUQoQlhUX01JUElfVFJBTlNfVkFDVElW RShwb3J0KSk7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y192dG90YWwgPQo+ICsJCQkJCUk5MTVf UkVBRChCWFRfTUlQSV9UUkFOU19WVE9UQUwocG9ydCkpOwo+ICsKPiArCQloYWN0aXZlID0gYWRq dXN0ZWRfbW9kZS0+Y3J0Y19oZGlzcGxheTsKPiArCQloZnAgPSBJOTE1X1JFQUQoTUlQSV9IRlBf Q09VTlQocG9ydCkpOwo+ICsKPiArCQkvKgo+ICsJCSAqIG1lYW5pbmdmdWwgZm9yIHZpZGVvIG1v ZGUgbm9uLWJ1cnN0IHN5bmMgcHVsc2UgbW9kZSBvbmx5LAo+ICsJCSAqIGNhbiBiZSB6ZXJvIGZv ciBub24tYnVyc3Qgc3luYyBldmVudHMgYW5kIGJ1cnN0IG1vZGVzCj4gKwkJICovCj4gKwkJaHN5 bmMgPSBJOTE1X1JFQUQoTUlQSV9IU1lOQ19QQURESU5HX0NPVU5UKHBvcnQpKTsKPiArCQloYnAg PSBJOTE1X1JFQUQoTUlQSV9IQlBfQ09VTlQocG9ydCkpOwo+ICsKPiArCQkvKiBob3Jpem9udGFs IHZhbHVlcyBhcmUgaW4gdGVybXMgb2YgaGlnaCBzcGVlZCBieXRlIGNsb2NrICovCj4gKwkJaGZw ID0gcGl4ZWxzX2Zyb21fdHhieXRlY2xraHMoaGZwLCBicHAsIGxhbmVfY291bnQsCj4gKwkJCQkJ CWludGVsX2RzaS0+YnVyc3RfbW9kZV9yYXRpbyk7Cj4gKwkJaHN5bmMgPSBwaXhlbHNfZnJvbV90 eGJ5dGVjbGtocyhoc3luYywgYnBwLCBsYW5lX2NvdW50LAo+ICsJCQkJCQlpbnRlbF9kc2ktPmJ1 cnN0X21vZGVfcmF0aW8pOwo+ICsJCWhicCA9IHBpeGVsc19mcm9tX3R4Ynl0ZWNsa2hzKGhicCwg YnBwLCBsYW5lX2NvdW50LAo+ICsJCQkJCQlpbnRlbF9kc2ktPmJ1cnN0X21vZGVfcmF0aW8pOwo+ ICsKPiArCQlpZiAoaW50ZWxfZHNpLT5kdWFsX2xpbmspIHsKPiArCQkJaGZwICo9IDI7Cj4gKwkJ CWhzeW5jICo9IDI7Cj4gKwkJCWhicCAqPSAyOwo+ICsJCX0KPiArCj4gKwkJLyogdmVydGljYWwg dmFsdWVzIGFyZSBpbiB0ZXJtcyBvZiBsaW5lcyAqLwo+ICsJCXZmcCA9IEk5MTVfUkVBRChNSVBJ X1ZGUF9DT1VOVChwb3J0KSk7Cj4gKwkJdnN5bmMgPSBJOTE1X1JFQUQoTUlQSV9WU1lOQ19QQURE SU5HX0NPVU5UKHBvcnQpKTsKPiArCQl2YnAgPSBJOTE1X1JFQUQoTUlQSV9WQlBfQ09VTlQocG9y dCkpOwo+ICsKPiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbCA9IGhhY3RpdmUgKyBoZnAg KyBoc3luYyArIGhicDsKPiArCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID0KPiAr CQkJCQloZnAgKyBhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICsJCWFkanVzdGVkX21v ZGUtPmNydGNfaHN5bmNfZW5kID0KPiArCQkJCQloc3luYyArIGFkanVzdGVkX21vZGUtPmNydGNf aHN5bmNfc3RhcnQ7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+Y3J0Y19oYmxhbmtfc3RhcnQgPSBhZGp1 c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5Owo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfaGJsYW5r X2VuZCA9IGFkanVzdGVkX21vZGUtPmNydGNfaHRvdGFsOwo+ICsKPiArCQlhZGp1c3RlZF9tb2Rl LT5jcnRjX3ZzeW5jX3N0YXJ0ID0KPiArCQkJCQl2ZnAgKyBhZGp1c3RlZF9tb2RlLT5jcnRjX3Zk aXNwbGF5Owo+ICsJCWFkanVzdGVkX21vZGUtPmNydGNfdnN5bmNfZW5kID0KPiArCQkJCQl2c3lu YyArIGFkanVzdGVkX21vZGUtPmNydGNfdnN5bmNfc3RhcnQ7Cj4gKwkJYWRqdXN0ZWRfbW9kZS0+ Y3J0Y192Ymxhbmtfc3RhcnQgPSBhZGp1c3RlZF9tb2RlLT5jcnRjX3ZkaXNwbGF5Owo+ICsJCWFk anVzdGVkX21vZGUtPmNydGNfdmJsYW5rX2VuZCA9IGFkanVzdGVkX21vZGUtPmNydGNfdnRvdGFs Owo+ICsKPiArCQlwaXBlX2NvbmZpZy0+cGlwZV9icHAgPQo+ICsJCQltaXBpX2RzaV9waXhlbF9m b3JtYXRfdG9fYnBwKGludGVsX2RzaS0+cGl4ZWxfZm9ybWF0KTsKCkkgZ3Vlc3MgdGhpcyBzaG91 bGQgYmUgcmVhZCBmcm9tIHRoZSByZWdpc3Rlci4KCj4gKwo+ICsJCWRzaV9waXBlID0gQlhUX1BP UlRfVE9fUElQRShJOTE1X1JFQUQoTUlQSV9DVFJMKHBvcnQpKSk7Cj4gKwkJaWYgKGRzaV9waXBl ID4gUElQRV9DKSB7Cj4gKwkJCURSTV9FUlJPUigiSW52YWxpZCBQSVBFIGNvbmZpZ3VyZWRcbiIp Owo+ICsJCQlicmVhazsKPiArCQl9Cj4gKwo+ICsJCXRtcCA9IEk5MTVfUkVBRChQSVBFU1JDKGRz aV9waXBlKSk7Cj4gKwkJcGlwZV9jb25maWctPnBpcGVfc3JjX2ggPSAodG1wICYgMHhmZmZmKSAr IDE7Cj4gKwkJcGlwZV9jb25maWctPnBpcGVfc3JjX3cgPSAoKHRtcCA+PiAxNikgJiAweGZmZmYp ICsgMTsKPiArCj4gKwkJcGlwZV9jb25maWctPmJhc2UubW9kZS52ZGlzcGxheSA9IHBpcGVfY29u ZmlnLT5waXBlX3NyY19oOwo+ICsJCXBpcGVfY29uZmlnLT5iYXNlLm1vZGUuaGRpc3BsYXkgPSBw aXBlX2NvbmZpZy0+cGlwZV9zcmNfdzsKClRoaXMgcGFydCBpcyBhbHJlYWR5IGNvdmVyZWQgYnkg aW50ZWxfZ2V0X3BpcGVfc3JjX3NpemUoKSBmb3IgRFNJLgoKCkJSLApKYW5pLgoKCj4gKwkJYnJl YWs7Cj4gKwl9Cj4gK30KPiArCj4gKwo+ICBzdGF0aWMgdm9pZCBpbnRlbF9kc2lfZ2V0X2NvbmZp ZyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPiAgCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpCj4gIHsKPiArCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBl bmNvZGVyLT5iYXNlLmRldjsKPiAgCXUzMiBwY2xrOwo+ICAJRFJNX0RFQlVHX0tNUygiXG4iKTsK PiAgCj4gIAlwaXBlX2NvbmZpZy0+aGFzX2RzaV9lbmNvZGVyID0gdHJ1ZTsKPiAgCj4gKwlpZiAo SVNfQlJPWFRPTihkZXYpKQo+ICsJCWJ4dF9kc2lfZ2V0X3BpcGVfY29uZmlnKGVuY29kZXIsIHBp cGVfY29uZmlnKTsKPiArCj4gIAkvKgo+ICAJICogRFBMTF9NRCBpcyBub3QgdXNlZCBpbiBjYXNl IG9mIERTSSwgcmVhZGluZyB3aWxsIGdldCBzb21lIGRlZmF1bHQgdmFsdWUKPiAgCSAqIHNldCBk cGxsX21kID0gMAoKLS0gCkphbmkgTmlrdWxhLCBJbnRlbCBPcGVuIFNvdXJjZSBUZWNobm9sb2d5 IENlbnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK