From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: [PATCH v5 7/8] drm/i915: BDW clock change support Date: Tue, 2 Jun 2015 10:21:05 +0300 Message-ID: <1433229666-3152-8-git-send-email-mika.kahola@intel.com> References: <1433229666-3152-1-git-send-email-mika.kahola@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 0D3736E7C4 for ; Tue, 2 Jun 2015 00:20:34 -0700 (PDT) In-Reply-To: <1433229666-3152-1-git-send-email-mika.kahola@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 RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KCkFk ZCBzdXBwb3J0IGZvciBjaGFuZ2luZyBjZGNsayBmcmVxdWVuY3kgZHVyaW5nIHJ1bnRpbWUgb24g QkRXLiBUaGUKcHJvY2VkdXJlIGlzIHF1aXRlIGEgYml0IGRpZmZlcmVudCBvbiBCRFcgZnJvbSB0 aGUgb25lIG9uIEhTVywgc28KYWRkIGEgc2VwYXJhdGUgZnVuY3Rpb24gZm9yIGl0LgoKQWxzbyB3 aXRoIElQUyBlbmFibGVkIHRoZSBhY3R1YWwgcGl4ZWwgcmF0ZSBtdXN0bid0IGV4Y2VlZCA5NSUg b2YgY2RjbGssCnNvIHRha2UgdGhhdCBpbnRvIGFjY291bnQgd2hlbiBjb21wdXRpbmcgdGhlIG1h eCBwaXhlbCByYXRlLgoKdjI6IEdyYWIgcnBzLmh3X2xvY2sgYXJvdW5kIHNhbmR5YnJpZGdlX3Bj b2RlX3dyaXRlKCkKdjM6IFJlYmFzZSBkdWUgdG8gcG93ZXIgd2VsbCB2cy4gLmdsb2JhbF9yZXNv dXJjZXMoKSByZW9yZGVyaW5nCgpTaWduZWQtb2ZmLWJ5OiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxl LnN5cmphbGFAbGludXguaW50ZWwuY29tPgoKdjQ6IFJlYmFzZWQgdG8gdGhlIGxhdGVzdAp2NTog UmViYXNlZCB0byB0aGUgbGF0ZXN0CnY2OiBQYXRjaCBvcmRlciBzaHVmZmxlIHNvIHRoYXQgQnJv YWR3ZWxsIENEIGNsb2NrIGNoYW5nZSBpcwogICAgYXBwbGllZCBiZWZvcmUgdGhlIHBhdGNoIGZv ciBIYXN3ZWxsIENEIGNsb2NrIGNoYW5nZQoKU2lnbmVkLW9mZi1ieTogTWlrYSBLYWhvbGEgPG1p a2Eua2Fob2xhQGludGVsLmNvbT4KCkF1dGhvcjogICAgVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3Jl Zy5oICAgICAgfCAgIDIgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg MjE2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiAyIGZpbGVzIGNoYW5nZWQs IDIwOCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcu aAppbmRleCA3MjEzMjI0Li4wZjcyYzBlIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3JlZy5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKQEAgLTY3 MDUsNiArNjcwNSw3IEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMgewogI2RlZmluZQkgIEdF TjZfUENPREVfUkVBRF9SQzZWSURTCQkweDUKICNkZWZpbmUgICAgIEdFTjZfRU5DT0RFX1JDNl9W SUQobXYpCQkoKChtdikgLSAyNDUpIC8gNSkKICNkZWZpbmUgICAgIEdFTjZfREVDT0RFX1JDNl9W SUQodmlkcykJCSgoKHZpZHMpICogNSkgKyAyNDUpCisjZGVmaW5lICAgQkRXX1BDT0RFX0RJU1BM QVlfRlJFUV9DSEFOR0VfUkVRCTB4MTgKICNkZWZpbmUgICBHRU45X1BDT0RFX1JFQURfTUVNX0xB VEVOQ1kJCTB4NgogI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF9NQVNLCQkweEZG CiAjZGVmaW5lICAgICBHRU45X01FTV9MQVRFTkNZX0xFVkVMXzFfNV9TSElGVAk4CkBAIC03MTcw LDYgKzcxNzEsNyBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsKICNkZWZpbmUgIExDUExM X0NMS19GUkVRXzMzN181X0JEVwkoMjw8MjYpCiAjZGVmaW5lICBMQ1BMTF9DTEtfRlJFUV82NzVf QkRXCQkoMzw8MjYpCiAjZGVmaW5lICBMQ1BMTF9DRF9DTE9DS19ESVNBQkxFCQkoMTw8MjUpCisj ZGVmaW5lICBMQ1BMTF9ST09UX0NEX0NMT0NLX0RJU0FCTEUJKDE8PDI0KQogI2RlZmluZSAgTENQ TExfQ0QyWF9DTE9DS19ESVNBQkxFCSgxPDwyMykKICNkZWZpbmUgIExDUExMX1BPV0VSX0RPV05f QUxMT1cJCSgxPDwyMikKICNkZWZpbmUgIExDUExMX0NEX1NPVVJDRV9GQ0xLCQkoMTw8MjEpCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggOTYxNTM1ZS4uM2Y1MGJiMSAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCisrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtNTc1MSw3ICs1NzUxLDIyIEBAIHN0 YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9tYXhfY2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRl OwogCi0JaWYgKElTX1ZBTExFWVZJRVcoZGV2KSkgeworCWlmIChJU19CUk9BRFdFTEwoZGV2KSkg IHsKKwkJLyoKKwkJICogRklYTUUgd2l0aCBleHRyYSBjb29saW5nIHdlIGNhbiBhbGxvdworCQkg KiA1NDAgTUh6IGZvciBVTFggYW5kIDY3NSBNaHogZm9yIFVMVC4KKwkJICogSG93IGNhbiB3ZSBr bm93IGlmIGV4dHJhIGNvb2xpbmcgaXMKKwkJICogYXZhaWxhYmxlPyBQQ0kgSUQsIFZUQiwgc29t ZXRoaW5nIGVsc2U/CisJCSAqLworCQlpZiAoSTkxNV9SRUFEKEZVU0VfU1RSQVApICYgSFNXX0NE Q0xLX0xJTUlUKQorCQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gNDUwMDAwOworCQllbHNl IGlmIChJU19CRFdfVUxYKGRldikpCisJCQlkZXZfcHJpdi0+bWF4X2NkY2xrX2ZyZXEgPSA0NTAw MDA7CisJCWVsc2UgaWYgKElTX0JEV19VTFQoZGV2KSkKKwkJCWRldl9wcml2LT5tYXhfY2RjbGtf ZnJlcSA9IDU0MDAwMDsKKwkJZWxzZQorCQkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxID0gNjc1 MDAwOworCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CiAJCWRldl9wcml2LT5tYXhf Y2RjbGtfZnJlcSA9IDQwMDAwMDsKIAl9IGVsc2UgewogCQkvKiBvdGhlcndpc2UgYXNzdW1lIGNk Y2xrIGlzIGZpeGVkICovCkBAIC02NjIzLDEzICs2NjM4LDExIEBAIHN0YXRpYyBib29sIHBpcGVf Y29uZmlnX3N1cHBvcnRzX2lwcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJ CXJldHVybiB0cnVlOwogCiAJLyoKLQkgKiBGSVhNRSBpZiB3ZSBjb21wYXJlIGFnYWluc3QgbWF4 IHdlIHNob3VsZCB0aGVuCi0JICogaW5jcmVhc2UgdGhlIGNkY2xrIGZyZXF1ZW5jeSB3aGVuIHRo ZSBjdXJyZW50Ci0JICogdmFsdWUgaXMgdG9vIGxvdy4gVGhlIG90aGVyIG9wdGlvbiBpcyB0byBj b21wYXJlCi0JICogYWdhaW5zdCB0aGUgY2RjbGsgZnJlcXVlbmN5IHdlJ3JlIGdvaW5nIGhhdmUg cG9zdAotCSAqIG1vZGVzZXQgKGllLiBvbmUgd2UgY29tcHV0ZWQgdXNpbmcgb3RoZXIgY29uc3Ry YWludHMpLgotCSAqIE5lZWQgdG8gbWVhc3VyZSB3aGV0aGVyIHVzaW5nIGEgbG93ZXIgY2RjbGsg dy9vIElQUwotCSAqIGlzIGJldHRlciBvciB3b3JzZSB0aGFuIGEgaGlnaGVyIGNkY2xrIHcvIElQ Uy4KKwkgKiBXZSBjb21wYXJlIGFnYWluc3QgbWF4IHdoaWNoIG1lYW5zIHdlIG11c3QgdGFrZQor CSAqIHRoZSBpbmNyZWFzZWQgY2RjbGsgcmVxdWlyZW1lbnQgaW50byBhY2NvdW50IHdoZW4KKwkg KiBjYWxjdWxhdGluZyB0aGUgbmV3IGNkY2xrLgorCSAqCisJICogU2hvdWxkIG1lYXN1cmUgd2hl dGhlciB1c2luZyBhIGxvd2VyIGNkY2xrIHcvbyBJUFMKIAkgKi8KIAlyZXR1cm4gaWxrX3BpcGVf cGl4ZWxfcmF0ZShwaXBlX2NvbmZpZykgPD0KIAkJZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICog OTUgLyAxMDA7CkBAIC05NjEwLDYgKzk2MjMsMTgyIEBAIHN0YXRpYyB2b2lkIGJyb3h0b25fbW9k ZXNldF9nbG9iYWxfcmVzb3VyY2VzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUp CiAJCWJyb3h0b25fc2V0X2NkY2xrKGRldiwgcmVxX2NkY2xrKTsKIH0KIAorLyogY29tcHV0ZSB0 aGUgbWF4IHJhdGUgZm9yIG5ldyBjb25maWd1cmF0aW9uICovCitzdGF0aWMgaW50IGlsa19tYXhf cGl4ZWxfcmF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7CisJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGM7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCWludCBtYXhfcGl4ZWxfcmF0ZSA9 IDA7CisJaW50IHBpeGVsX3JhdGU7CisKKwlmb3JfZWFjaF9jcnRjKGRldiwgY3J0YykgeworCQlp ZiAoIWNydGMtPnN0YXRlLT5lbmFibGUpCisJCQljb250aW51ZTsKKworCQlpbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKKwkJcGl4ZWxfcmF0ZSA9IGlsa19waXBlX3BpeGVsX3JhdGUo aW50ZWxfY3J0Yy0+Y29uZmlnKTsKKworCQkvKiBwaXhlbCByYXRlIG11c3RuJ3QgZXhjZWVkIDk1 JSBvZiBjZGNsayB3aXRoIElQUyBvbiBCRFcgKi8KKwkJaWYgKElTX0JST0FEV0VMTChkZXYpICYm IGludGVsX2NydGMtPmNvbmZpZy0+aXBzX2VuYWJsZWQpCisJCQlwaXhlbF9yYXRlID0gRElWX1JP VU5EX1VQKHBpeGVsX3JhdGUgKiAxMDAsIDk1KTsKKworCQltYXhfcGl4ZWxfcmF0ZSA9IG1heCht YXhfcGl4ZWxfcmF0ZSwgcGl4ZWxfcmF0ZSk7CisJfQorCisJcmV0dXJuIG1heF9waXhlbF9yYXRl OworfQorCitzdGF0aWMgdm9pZCBicm9hZHdlbGxfc2V0X2NkY2xrKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIGludCBjZGNsaykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOworCXVpbnQzMl90IHZhbCwgZGF0YTsKKwlpbnQgcmV0OworCisJ aWYgKFdBUk4oKEk5MTVfUkVBRChMQ1BMTF9DVEwpICYKKwkJICAoTENQTExfUExMX0RJU0FCTEUg fCBMQ1BMTF9QTExfTE9DSyB8CisJCSAgIExDUExMX0NEX0NMT0NLX0RJU0FCTEUgfCBMQ1BMTF9S T09UX0NEX0NMT0NLX0RJU0FCTEUgfAorCQkgICBMQ1BMTF9DRDJYX0NMT0NLX0RJU0FCTEUgfCBM Q1BMTF9QT1dFUl9ET1dOX0FMTE9XIHwKKwkJICAgTENQTExfQ0RfU09VUkNFX0ZDTEspKSAhPSBM Q1BMTF9QTExfTE9DSywKKwkJICJ0cnlpbmcgdG8gY2hhbmdlIGNkY2xrIGZyZXF1ZW5jeSB3aXRo IGNkY2xrIG5vdCBlbmFibGVkXG4iKSkKKwkJcmV0dXJuOworCisJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnJwcy5od19sb2NrKTsKKwlyZXQgPSBzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJp diwKKwkJCQkgICAgICBCRFdfUENPREVfRElTUExBWV9GUkVRX0NIQU5HRV9SRVEsIDB4MCk7CisJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOworCWlmIChyZXQpIHsKKwkJRFJN X0VSUk9SKCJmYWlsZWQgdG8gaW5mb3JtIHBjb2RlIGFib3V0IGNkY2xrIGNoYW5nZVxuIik7CisJ CXJldHVybjsKKwl9CisKKwl2YWwgPSBJOTE1X1JFQUQoTENQTExfQ1RMKTsKKwl2YWwgfD0gTENQ TExfQ0RfU09VUkNFX0ZDTEs7CisJSTkxNV9XUklURShMQ1BMTF9DVEwsIHZhbCk7CisKKwlpZiAo d2FpdF9mb3JfYXRvbWljX3VzKEk5MTVfUkVBRChMQ1BMTF9DVEwpICYKKwkJCSAgICAgICBMQ1BM TF9DRF9TT1VSQ0VfRkNMS19ET05FLCAxKSkKKwkJRFJNX0VSUk9SKCJTd2l0Y2hpbmcgdG8gRkNM SyBmYWlsZWRcbiIpOworCisJdmFsID0gSTkxNV9SRUFEKExDUExMX0NUTCk7CisJdmFsICY9IH5M Q1BMTF9DTEtfRlJFUV9NQVNLOworCisJc3dpdGNoIChjZGNsaykgeworCWNhc2UgNDUwMDAwOgor CQl2YWwgfD0gTENQTExfQ0xLX0ZSRVFfNDUwOworCQlkYXRhID0gMDsKKwkJYnJlYWs7CisJY2Fz ZSA1NDAwMDA6CisJCXZhbCB8PSBMQ1BMTF9DTEtfRlJFUV81NE9fQkRXOworCQlkYXRhID0gMTsK KwkJYnJlYWs7CisJY2FzZSAzMzc1MDA6CisJCXZhbCB8PSBMQ1BMTF9DTEtfRlJFUV8zMzdfNV9C RFc7CisJCWRhdGEgPSAyOworCQlicmVhazsKKwljYXNlIDY3NTAwMDoKKwkJdmFsIHw9IExDUExM X0NMS19GUkVRXzY3NV9CRFc7CisJCWRhdGEgPSAzOworCQlicmVhazsKKwlkZWZhdWx0OgorCQlX QVJOKDEsICJpbnZhbGlkIGNkY2xrIGZyZXF1ZW5jeVxuIik7CisJCXJldHVybjsKKwl9CisKKwlJ OTE1X1dSSVRFKExDUExMX0NUTCwgdmFsKTsKKworCXZhbCA9IEk5MTVfUkVBRChMQ1BMTF9DVEwp OworCXZhbCAmPSB+TENQTExfQ0RfU09VUkNFX0ZDTEs7CisJSTkxNV9XUklURShMQ1BMTF9DVEws IHZhbCk7CisKKwlpZiAod2FpdF9mb3JfYXRvbWljX3VzKChJOTE1X1JFQUQoTENQTExfQ1RMKSAm CisJCQkJTENQTExfQ0RfU09VUkNFX0ZDTEtfRE9ORSkgPT0gMCwgMSkpCisJCURSTV9FUlJPUigi U3dpdGNoaW5nIGJhY2sgdG8gTENQTEwgZmFpbGVkXG4iKTsKKworCW11dGV4X2xvY2soJmRldl9w cml2LT5ycHMuaHdfbG9jayk7CisJc2FuZHlicmlkZ2VfcGNvZGVfd3JpdGUoZGV2X3ByaXYsIEhT V19QQ09ERV9ERV9XUklURV9GUkVRX1JFUSwgZGF0YSk7CisJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOworCisJaW50ZWxfdXBkYXRlX2NkY2xrKGRldik7CisKKwlXQVJOKGNk Y2xrICE9IGRldl9wcml2LT5jZGNsa19mcmVxLAorCSAgICAgImNkY2xrIHJlcXVlc3RlZCAlZCBr SHogYnV0IGdvdCAlZCBrSHpcbiIsCisJICAgICBjZGNsaywgZGV2X3ByaXYtPmNkY2xrX2ZyZXEp OworfQorCitzdGF0aWMgaW50IGJyb2Fkd2VsbF9jYWxjX2NkY2xrKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKKwkJCSAgICAgIGludCBtYXhfcGl4ZWxfcmF0ZSkKK3sKKwlpbnQg Y2RjbGs7CisKKwkvKgorCSAqIEZJWE1FIHNob3VsZCBhbHNvIGFjY291bnQgZm9yIHBsYW5lIHJh dGlvCisJICogb25jZSA2NGJwcCBwaXhlbCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCisJICovCisJ aWYgKG1heF9waXhlbF9yYXRlID4gNTQwMDAwKQorCQljZGNsayA9IDY3NTAwMDsKKwllbHNlIGlm IChtYXhfcGl4ZWxfcmF0ZSA+IDQ1MDAwMCkKKwkJY2RjbGsgPSA1NDAwMDA7CisJZWxzZSBpZiAo bWF4X3BpeGVsX3JhdGUgPiAzMzc1MDApCisJCWNkY2xrID0gNDUwMDAwOworCWVsc2UKKwkJY2Rj bGsgPSAzMzc1MDA7CisKKwkvKgorCSAqIEZJWE1FIG1vdmUgdGhlIGNkY2xrIGNhY2x1bGF0aW9u IHRvCisJICogY29tcHV0ZV9jb25maWcoKSBzbyB3ZSBjYW4gZmFpbCBncmFjZWd1bGx5LgorCSAq LworCWlmIChjZGNsayA+IGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSkgeworCQlEUk1fRVJST1Io InJlcXVlc3RlZCBjZGNsayAoJWQga0h6KSBleGNlZWRzIG1heCAoJWQga0h6KVxuIiwKKwkJCSAg Y2RjbGssIGRldl9wcml2LT5tYXhfY2RjbGtfZnJlcSk7CisJCWNkY2xrID0gZGV2X3ByaXYtPm1h eF9jZGNsa19mcmVxOworCX0KKworCXJldHVybiBjZGNsazsKK30KKworc3RhdGljIGludCBicm9h ZHdlbGxfbW9kZXNldF9nbG9iYWxfcGlwZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl KQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoc3RhdGUt PmRldik7CisJc3RydWN0IGRybV9jcnRjICpjcnRjOworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZTsKKwlpbnQgbWF4X3BpeGNsayA9IGlsa19tYXhfcGl4ZWxfcmF0ZShkZXZfcHJp dik7CisJaW50IGNkY2xrLCBpOworCisJY2RjbGsgPSBicm9hZHdlbGxfY2FsY19jZGNsayhkZXZf cHJpdiwgbWF4X3BpeGNsayk7CisKKwlpZiAoY2RjbGsgPT0gZGV2X3ByaXYtPmNkY2xrX2ZyZXEp CisJCXJldHVybiAwOworCisJLyogYWRkIGFsbCBhY3RpdmUgcGlwZXMgdG8gdGhlIHN0YXRlICov CisJZm9yX2VhY2hfY3J0YyhzdGF0ZS0+ZGV2LCBjcnRjKSB7CisJCWlmICghY3J0Yy0+c3RhdGUt PmVuYWJsZSkKKwkJCWNvbnRpbnVlOworCisJCWNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dldF9j cnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsKKwkJaWYgKElTX0VSUihjcnRjX3N0YXRlKSkKKwkJCXJl dHVybiBQVFJfRVJSKGNydGNfc3RhdGUpOworCX0KKworCS8qIGRpc2FibGUvZW5hYmxlIGFsbCBj dXJyZW50bHkgYWN0aXZlIHBpcGVzIHdoaWxlIHdlIGNoYW5nZSBjZGNsayAqLworCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpCisJCWlmIChjcnRjX3N0 YXRlLT5lbmFibGUpCisJCQljcnRjX3N0YXRlLT5tb2RlX2NoYW5nZWQgPSB0cnVlOworCisJcmV0 dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkIGJyb2Fkd2VsbF9tb2Rlc2V0X2dsb2JhbF9yZXNvdXJj ZXMoc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQoreworCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBzdGF0ZS0+ZGV2OworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CisJaW50IG1heF9waXhlbF9yYXRlID0gaWxrX21heF9waXhlbF9y YXRlKGRldl9wcml2KTsKKwlpbnQgcmVxX2NkY2xrID0gYnJvYWR3ZWxsX2NhbGNfY2RjbGsoZGV2 X3ByaXYsIG1heF9waXhlbF9yYXRlKTsKKworCWlmIChyZXFfY2RjbGsgIT0gZGV2X3ByaXYtPmNk Y2xrX2ZyZXEpCisJCWJyb2Fkd2VsbF9zZXRfY2RjbGsoZGV2LCByZXFfY2RjbGspOworfQorCiBz dGF0aWMgaW50IGhhc3dlbGxfY3J0Y19jb21wdXRlX2Nsb2NrKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCQkJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQogewpA QCAtMTI3OTAsOCArMTI5NzksMTIgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlX2NoZWNr cyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiAJICogbW9kZSBzZXQgb24gdGhpcyBj cnRjLiAgRm9yIG90aGVyIGNydGNzIHdlIG5lZWQgdG8gdXNlIHRoZQogCSAqIGFkanVzdGVkX21v ZGUgYml0cyBpbiB0aGUgY3J0YyBkaXJlY3RseS4KIAkgKi8KLQlpZiAoSVNfVkFMTEVZVklFVyhk ZXYpIHx8IElTX0JST1hUT04oZGV2KSkgewotCQlyZXQgPSB2YWxsZXl2aWV3X21vZGVzZXRfZ2xv YmFsX3BpcGVzKHN0YXRlKTsKKwlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0JST1hUT04o ZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkgeworCQlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0JST1hUT04oZGV2KSkKKwkJCXJldCA9IHZhbGxleXZpZXdfbW9kZXNldF9nbG9iYWxfcGlw ZXMoc3RhdGUpOworCQllbHNlCisJCQlyZXQgPSBicm9hZHdlbGxfbW9kZXNldF9nbG9iYWxfcGlw ZXMoc3RhdGUpOworCiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gcmV0OwogCX0KQEAgLTE0Njc5LDYg KzE0ODcyLDkgQEAgc3RhdGljIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCiAJCWRldl9wcml2LT5kaXNwbGF5LmZkaV9saW5rX3RyYWluID0gaXZiX21hbnVh bF9mZGlfbGlua190cmFpbjsKIAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9B RFdFTEwoZGV2KSkgewogCQlkZXZfcHJpdi0+ZGlzcGxheS5mZGlfbGlua190cmFpbiA9IGhzd19m ZGlfbGlua190cmFpbjsKKwkJaWYgKElTX0JST0FEV0VMTChkZXYpKQorCQkJZGV2X3ByaXYtPmRp c3BsYXkubW9kZXNldF9nbG9iYWxfcmVzb3VyY2VzID0KKwkJCQlicm9hZHdlbGxfbW9kZXNldF9n bG9iYWxfcmVzb3VyY2VzOwogCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CiAJCWRl dl9wcml2LT5kaXNwbGF5Lm1vZGVzZXRfZ2xvYmFsX3Jlc291cmNlcyA9CiAJCQl2YWxsZXl2aWV3 X21vZGVzZXRfZ2xvYmFsX3Jlc291cmNlczsKLS0gCjEuOS4xCgpfX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVs LWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=