From mboxrd@z Thu Jan 1 00:00:00 1970 From: ville.syrjala@linux.intel.com Subject: [PATCH 6/7] drm/i915: Implement PHY lane power gating for CHV Date: Fri, 10 Apr 2015 18:21:32 +0300 Message-ID: <1428679293-6208-7-git-send-email-ville.syrjala@linux.intel.com> References: <1428679293-6208-1-git-send-email-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id A7B936E99A for ; Fri, 10 Apr 2015 08:21:56 -0700 (PDT) In-Reply-To: <1428679293-6208-1-git-send-email-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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClBv d2VyZ2F0ZSB0aGUgUEhZIGxhbmVzIHdoZW4gdGhleSdyZSBub3QgbmVlZGVkLiBGb3IgSERNSSBh bGwgZm91ciBsYW5lcwphcmUgbmVlZGVkIGFsd2F5cywgYnV0IGZvciBEUCB3ZSBjYW4gZW5hYmxl IG9ubHkgdGhlIG5lZWRlZCBsYW5lcy4gQW5kCndoZW4gdGhlIHBvcnQgaXMgbm90IHVzZWQgYWxs IGxhbmVzIGNhbiBiZSBwb3dlciBnYXRlZC4gVGhpcyBjb3VsZApyZWR1Y2UgcG93ZXIgY29uc3Vt cHRpb24gYSBiaXQgd2hlbiBvbmx5IGEgc3Vic2V0IG9mIHRoZSBsYW5lcyBpbiB0aGUKUEhZIGFy ZSByZXF1aXJlZC4KCkEgYml0IG9mIGV4dHJhIGNhcmUgaXMgbmVlZGVkIHRvIHJlY29uc3RydWN0 IHRoZSBpbml0aWFsIHN0YXRlIG9mIHRoZQpEUElPX1BIWV9DT05UUk9MIHJlZ2lzdGVyIHNpbmNl IHdlIGNhbid0IHJlYWQgaXQuIFNvIGluc3RlYWQgd2UgcmVhZCB0aGUKYWN0dWFsIGxhbmUgc3Rh dHVzIGZyb20gdGhlIERQTEwvUEhZX1NUQVRVUyByZWdpc3RlcnMgYW5kIHVzZSB0aGF0IHRvCmRl dGVybWluZSB3aGljaCBsYW5lcyBvdWdodCB0byBiZSBwb3dlcmdhdGVkIGluaXRpYWxseS4KCkFs c28gc3ByaW5rbGUgYSBmZXcgZGVidWcgcHJpbnRzIGFyb3VuZCBzbyB0aGF0IHdlIGNhbiBtb25p dG9yIHRoZQpEUElPX1BIWV9TVEFUVVMgY2hhbmdlcyB3aXRob3V0IGhhdmluZyB0byByZWFkIGl0 IGFuZCByaXNrIGNvcnJ1cHRpbmcKaXQuCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6Qg PHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfcmVnLmggICAgICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMgICAgICAgICB8ICA4ICsrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAg ICAgICB8ICAyICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYyAgICAgICB8ICA1 ICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIHwgNjkgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tCiA1IGZpbGVzIGNoYW5nZWQsIDgyIGluc2VydGlv bnMoKyksIDQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9yZWcuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKaW5kZXggOTc3YmFk Ni4uMzRjMzY2YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCkBAIC0xODg3LDEwICsxODg3LDEy IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogI2RlZmluZSBEUElPX1BIWV9TVEFUVVMJ CQkoVkxWX0RJU1BMQVlfQkFTRSArIDB4NjI0MCkKICNkZWZpbmUgICBEUExMX1BPUlREX1JFQURZ X01BU0sJCSgweGYpCiAjZGVmaW5lIERJU1BMQVlfUEhZX0NPTlRST0wgKFZMVl9ESVNQTEFZX0JB U0UgKyAweDYwMTAwKQorI2RlZmluZSAgIFBIWV9DSF9QT1dFUl9ET1dOX09WUkRfRU4ocGh5LCBj aCkJKDEgPDwgKDIqKHBoeSkrKGNoKSsyNykpCiAjZGVmaW5lICAgUEhZX0xET19ERUxBWV8wTlMJ CQkweDAKICNkZWZpbmUgICBQSFlfTERPX0RFTEFZXzIwME5TCQkJMHgxCiAjZGVmaW5lICAgUEhZ X0xET19ERUxBWV82MDBOUwkJCTB4MgogI2RlZmluZSAgIFBIWV9MRE9fU0VRX0RFTEFZKGRlbGF5 LCBwaHkpCQkoKGRlbGF5KSA8PCAoMioocGh5KSsyMykpCisjZGVmaW5lICAgUEhZX0NIX1BPV0VS X0RPV05fT1ZSRChtYXNrLCBwaHksIGNoKQkoKG1hc2spIDw8ICg4KihwaHkpKzQqKGNoKSsxMSkp CiAjZGVmaW5lICAgUEhZX0NIX1NVX1BTUgkJCQkweDEKICNkZWZpbmUgICBQSFlfQ0hfREVFUF9Q U1IJCQkweDcKICNkZWZpbmUgICBQSFlfQ0hfUE9XRVJfTU9ERShtb2RlLCBwaHksIGNoKQkoKG1v ZGUpIDw8ICg2KihwaHkpKzMqKGNoKSsyKSkKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2RwLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCmluZGV4IGFj MzhmZDguLjBiNDNmOTkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rw LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtMjMzNiw2ICsyMzM2 LDggQEAgc3RhdGljIHZvaWQgY2h2X3Bvc3RfZGlzYWJsZV9kcChzdHJ1Y3QgaW50ZWxfZW5jb2Rl ciAqZW5jb2RlcikKIAogCWludGVsX2RwX2xpbmtfZG93bihpbnRlbF9kcCk7CiAKKwljaHZfcG93 ZXJnYXRlX3BoeV9sYW5lcyhlbmNvZGVyLCAweGYpOworCiAJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PmRwaW9fbG9jayk7CiAKIAkvKiBQcm9wYWdhdGUgc29mdCByZXNldCB0byBkYXRhIGxhbmUgcmVz ZXQgKi8KQEAgLTI0ODIsNiArMjQ4NCwxMiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9lbmFibGVfZHAo c3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkK IAkJdmx2X2luaXRfcGFuZWxfcG93ZXJfc2VxdWVuY2VyKGludGVsX2RwKTsKIAorCWlmIChJU19D SEVSUllWSUVXKGRldikpIHsKKwkJLyogRklYTUUgZGVhbCB3aXRoIGxhbmUgcmV2ZXJzYWwgKi8K KwkJbGFuZV9tYXNrID0gMHhmICYgfigoMSA8PCBpbnRlbF9kcC0+bGFuZV9jb3VudCkgLSAxKTsK KwkJY2h2X3Bvd2VyZ2F0ZV9waHlfbGFuZXMoZW5jb2RlciwgbGFuZV9tYXNrKTsKKwl9CisKIAlp bnRlbF9kcF9lbmFibGVfcG9ydChpbnRlbF9kcCk7CiAKIAllZHBfcGFuZWxfdmRkX29uKGludGVs X2RwKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKaW5kZXggM2VjODI5YS4uNTRiY2NhOCAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTEyMzgsNiArMTIzOCw4IEBAIHZvaWQgaW50ZWxf cnVudGltZV9wbV9wdXQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIAogdm9p ZCBpbnRlbF9kaXNwbGF5X3NldF9pbml0X3Bvd2VyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXYsIGJvb2wgZW5hYmxlKTsKIAordm9pZCBjaHZfcG93ZXJnYXRlX3BoeV9sYW5lcyhzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlciwgdW5zaWduZWQgaW50IG1hc2spOworCiAvKiBpbnRlbF9w bS5jICovCiB2b2lkIGludGVsX2luaXRfY2xvY2tfZ2F0aW5nKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYpOwogdm9pZCBpbnRlbF9zdXNwZW5kX2h3KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jCmluZGV4IDI0YjBhYTEuLmY1ODQyYzMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9oZG1pLmMKQEAgLTkxNiw2ICs5MTYsOSBAQCBzdGF0aWMgdm9pZCBpbnRlbF9k aXNhYmxlX2hkbWkoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIpCiAJCUk5MTVfV1JJVEUo aW50ZWxfaGRtaS0+aGRtaV9yZWcsIHRlbXApOwogCQlQT1NUSU5HX1JFQUQoaW50ZWxfaGRtaS0+ aGRtaV9yZWcpOwogCX0KKworCWlmIChJU19DSEVSUllWSUVXKGRldikpCisJCWNodl9wb3dlcmdh dGVfcGh5X2xhbmVzKGVuY29kZXIsIDB4Zik7CiB9CiAKIHN0YXRpYyBpbnQgaGRtaV9wb3J0Y2xv Y2tfbGltaXQoc3RydWN0IGludGVsX2hkbWkgKmhkbWksIGJvb2wgcmVzcGVjdF9kdmlfbGltaXQp CkBAIC0xNjM0LDYgKzE2MzcsOCBAQCBzdGF0aWMgdm9pZCBjaHZfaGRtaV9wcmVfZW5hYmxlKHN0 cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyKQogCQkJCSAgIGludGVsX2NydGMtPmNvbmZpZy0+ aGFzX2hkbWlfc2luaywKIAkJCQkgICBhZGp1c3RlZF9tb2RlKTsKIAorCWNodl9wb3dlcmdhdGVf cGh5X2xhbmVzKGVuY29kZXIsIDB4MCk7CisKIAlpbnRlbF9lbmFibGVfaGRtaShlbmNvZGVyKTsK IAogCXZsdl93YWl0X3BvcnRfcmVhZHkoZGV2X3ByaXYsIGRwb3J0LCAweDApOwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfcnVudGltZV9wbS5jCmluZGV4IDVjZDhhNTEuLmQ5ZTAwZDMgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3J1bnRpbWVfcG0uYworKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9ydW50aW1lX3BtLmMKQEAgLTY2OCw2ICs2NjgsOSBAQCBz dGF0aWMgdm9pZCBjaHZfZHBpb19jbW5fcG93ZXJfd2VsbF9lbmFibGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCiAJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PSBQSFlf Q09NX0xBTkVfUkVTRVRfREVBU1NFUlQocGh5KTsKIAlJOTE1X1dSSVRFKERJU1BMQVlfUEhZX0NP TlRST0wsIGRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOworCisJRFJNX0RFQlVHX0tNUygiRW5h YmxlZCBEUElPIFBIWSVkIChEUElPX1BIWV9DT05UUk9MPTB4JTA4eClcbiIsCisJCSAgICAgIHBo eSwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNodl9kcGlv X2Ntbl9wb3dlcl93ZWxsX2Rpc2FibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 LApAQCAtNjgwLDEwICs2ODMsMTUgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dl bGxfZGlzYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAlpZiAocG93 ZXJfd2VsbC0+ZGF0YSA9PSBQVU5JVF9QT1dFUl9XRUxMX0RQSU9fQ01OX0JDKSB7CiAJCXBoeSA9 IERQSU9fUEhZMDsKKwkJZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCB8PQorCQkJUEhZX0NIX1BP V0VSX0RPV05fT1ZSRCgweGYsIHBoeSwgRFBJT19DSDApIHwKKwkJCVBIWV9DSF9QT1dFUl9ET1dO X09WUkQoMHhmLCBwaHksIERQSU9fQ0gxKTsKIAkJYXNzZXJ0X3BsbF9kaXNhYmxlZChkZXZfcHJp diwgUElQRV9BKTsKIAkJYXNzZXJ0X3BsbF9kaXNhYmxlZChkZXZfcHJpdiwgUElQRV9CKTsKIAl9 IGVsc2UgewogCQlwaHkgPSBEUElPX1BIWTE7CisJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wg fD0KKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09WUkQoMHhmLCBwaHksIERQSU9fQ0gwKTsKIAkJYXNz ZXJ0X3BsbF9kaXNhYmxlZChkZXZfcHJpdiwgUElQRV9DKTsKIAl9CiAKQEAgLTY5MSw2ICs2OTks MjUgQEAgc3RhdGljIHZvaWQgY2h2X2RwaW9fY21uX3Bvd2VyX3dlbGxfZGlzYWJsZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJSTkxNV9XUklURShESVNQTEFZX1BIWV9DT05U Uk9MLCBkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sKTsKIAogCXZsdl9zZXRfcG93ZXJfd2VsbChk ZXZfcHJpdiwgcG93ZXJfd2VsbCwgZmFsc2UpOworCisJRFJNX0RFQlVHX0tNUygiRGlzYWJsZWQg RFBJTyBQSFklZCAoRFBJT19QSFlfQ09OVFJPTD0weCUwOHgpXG4iLAorCQkgICAgICBwaHksIGRl dl9wcml2LT5jaHZfcGh5X2NvbnRyb2wpOworfQorCit2b2lkIGNodl9wb3dlcmdhdGVfcGh5X2xh bmVzKHN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyLCB1bnNpZ25lZCBpbnQgbWFzaykKK3sK KwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+YmFzZS5kZXY7CisJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKKwlzdHJ1Y3QgaW50 ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoZW5jb2Rlci0+YmFzZS5jcnRjKTsK KwllbnVtIGRwaW9fcGh5IHBoeSA9IERQSU9fUEhZKGludGVsX2NydGMtPnBpcGUpOworCWVudW0g ZHBpb19jaGFubmVsIGNoID0gdmx2X2Rwb3J0X3RvX2NoYW5uZWwoZW5jX3RvX2RpZ19wb3J0KCZl bmNvZGVyLT5iYXNlKSk7CisKKwlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sICY9IH5QSFlfQ0hf UE9XRVJfRE9XTl9PVlJEKDB4ZiwgcGh5LCBjaCk7CisJZGV2X3ByaXYtPmNodl9waHlfY29udHJv bCB8PSBQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIHBoeSwgY2gpOworCUk5MTVfV1JJVEUo RElTUExBWV9QSFlfQ09OVFJPTCwgZGV2X3ByaXYtPmNodl9waHlfY29udHJvbCk7CisKKwlEUk1f REVCVUdfS01TKCJQb3dlciBnYXRpbmcgRFBJTyBQSFklZCBDSCVkIGxhbmVzIDB4JXggKERQSU9f UEhZX0NPTlRST0w9MHglMDh4KVxuIiwKKwkJICAgICAgcGh5LCBjaCwgbWFzaywgZGV2X3ByaXYt PmNodl9waHlfY29udHJvbCk7CiB9CiAKIHN0YXRpYyBib29sIGNodl9waXBlX3Bvd2VyX3dlbGxf ZW5hYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCkBAIC0xNDAyLDE5ICsx NDI5LDUzIEBAIHN0YXRpYyB2b2lkIGNodl9waHlfY29udHJvbF9pbml0KHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAkgKiBESVNQTEFZX1BIWV9DT05UUk9MIGNhbiBnZXQgY29y cnVwdGVkIGlmIHJlYWQuIEFzIGEKIAkgKiB3b3JrYXJvdW5kIG5ldmVyIGV2ZXIgcmVhZCBESVNQ TEFZX1BIWV9DT05UUk9MLCBhbmQKIAkgKiBpbnN0ZWFkIG1haW50YWluIGEgc2hhZG93IGNvcHkg b3Vyc2VsdmVzLiBVc2UgdGhlIGFjdHVhbAotCSAqIHBvd2VyIHdlbGwgc3RhdGUgdG8gcmVjb25z dHJ1Y3QgdGhlIGV4cGVjdGVkIGluaXRpYWwKLQkgKiB2YWx1ZS4KKwkgKiBwb3dlciB3ZWxsIHN0 YXRlIGFuZCBsYW5lIHN0YXR1cyB0byByZWNvbnN0cnVjdCB0aGUKKwkgKiBleHBlY3RlZCBpbml0 aWFsIHZhbHVlLgogCSAqLwogCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgPQorCQlQSFlfQ0hf UE9XRVJfRE9XTl9PVlJEX0VOKERQSU9fUEhZMCwgRFBJT19DSDApIHwKKwkJUEhZX0NIX1BPV0VS X0RPV05fT1ZSRF9FTihEUElPX1BIWTAsIERQSU9fQ0gxKSB8CisJCVBIWV9DSF9QT1dFUl9ET1dO X09WUkRfRU4oRFBJT19QSFkxLCBEUElPX0NIMCkgfAogCQlQSFlfTERPX1NFUV9ERUxBWShQSFlf TERPX0RFTEFZXzYwME5TLCBEUElPX1BIWTApIHwKIAkJUEhZX0xET19TRVFfREVMQVkoUEhZX0xE T19ERUxBWV82MDBOUywgRFBJT19QSFkxKSB8CiAJCVBIWV9DSF9QT1dFUl9NT0RFKFBIWV9DSF9T VV9QU1IsIERQSU9fUEhZMCwgRFBJT19DSDApIHwKIAkJUEhZX0NIX1BPV0VSX01PREUoUEhZX0NI X1NVX1BTUiwgRFBJT19QSFkwLCBEUElPX0NIMSkgfAogCQlQSFlfQ0hfUE9XRVJfTU9ERShQSFlf Q0hfU1VfUFNSLCBEUElPX1BIWTEsIERQSU9fQ0gwKTsKLQlpZiAoY21uX2JjLT5vcHMtPmlzX2Vu YWJsZWQoZGV2X3ByaXYsIGNtbl9iYykpCisKKwlpZiAoY21uX2JjLT5vcHMtPmlzX2VuYWJsZWQo ZGV2X3ByaXYsIGNtbl9iYykpIHsKKwkJdWludDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFEKERQTEwo UElQRV9BKSk7CisJCXVuc2lnbmVkIGludCBtYXNrOworCisJCW1hc2sgPSBzdGF0dXMgJiBEUExM X1BPUlRCX1JFQURZX01BU0s7CisJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KKwkJCVBI WV9DSF9QT1dFUl9ET1dOX09WUkQobWFzaywgRFBJT19QSFkwLCBEUElPX0NIMCk7CisJCW1hc2sg PSAoc3RhdHVzICYgRFBMTF9QT1JUQ19SRUFEWV9NQVNLKSA+PiA0OworCQlkZXZfcHJpdi0+Y2h2 X3BoeV9jb250cm9sIHw9CisJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKG1hc2ssIERQSU9fUEhZ MCwgRFBJT19DSDEpOworCiAJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0gUEhZX0NPTV9M QU5FX1JFU0VUX0RFQVNTRVJUKERQSU9fUEhZMCk7Ci0JaWYgKGNtbl9kLT5vcHMtPmlzX2VuYWJs ZWQoZGV2X3ByaXYsIGNtbl9kKSkKKwl9IGVsc2UgeworCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250 cm9sIHw9CisJCQlQSFlfQ0hfUE9XRVJfRE9XTl9PVlJEKDB4ZiwgRFBJT19QSFkwLCBEUElPX0NI MCkgfAorCQkJUEhZX0NIX1BPV0VSX0RPV05fT1ZSRCgweGYsIERQSU9fUEhZMCwgRFBJT19DSDEp OworCX0KKworCWlmIChjbW5fZC0+b3BzLT5pc19lbmFibGVkKGRldl9wcml2LCBjbW5fZCkpIHsK KwkJdWludDMyX3Qgc3RhdHVzID0gSTkxNV9SRUFEKERQSU9fUEhZX1NUQVRVUyk7CisJCXVuc2ln bmVkIGludCBtYXNrOworCisJCW1hc2sgPSBzdGF0dXMgJiBEUExMX1BPUlREX1JFQURZX01BU0s7 CisJCWRldl9wcml2LT5jaHZfcGh5X2NvbnRyb2wgfD0KKwkJCVBIWV9DSF9QT1dFUl9ET1dOX09W UkQobWFzaywgRFBJT19QSFkxLCBEUElPX0NIMCk7CisKIAkJZGV2X3ByaXYtPmNodl9waHlfY29u dHJvbCB8PSBQSFlfQ09NX0xBTkVfUkVTRVRfREVBU1NFUlQoRFBJT19QSFkxKTsKKwl9IGVsc2Ug eworCQlkZXZfcHJpdi0+Y2h2X3BoeV9jb250cm9sIHw9CisJCQlQSFlfQ0hfUE9XRVJfRE9XTl9P VlJEKDB4ZiwgRFBJT19QSFkxLCBEUElPX0NIMCk7CisJfQorCisJRFJNX0RFQlVHX0tNUygiSW5p dGlhbCBEUElPX1BIWV9DT05UUk9MPTB4JTA4eFxuIiwKKwkJICAgICAgZGV2X3ByaXYtPmNodl9w aHlfY29udHJvbCk7CiB9CiAKIHN0YXRpYyB2b2lkIHZsdl9jbW5sYW5lX3dhKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKLS0gCjIuMC41CgpfX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=