From mboxrd@z Thu Jan 1 00:00:00 1970 From: Imre Deak Subject: [PATCH v4 25/25] drm/i915: vlv: add runtime PM support Date: Mon, 5 May 2014 15:19:56 +0300 Message-ID: <1399292396-16498-1-git-send-email-imre.deak@intel.com> References: <1398187713-3104-1-git-send-email-imre.deak@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 [143.182.124.21]) by gabe.freedesktop.org (Postfix) with ESMTP id EE8456E183 for ; Mon, 5 May 2014 05:20:01 -0700 (PDT) In-Reply-To: <1398187713-3104-1-git-send-email-imre.deak@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 QWRkIHJ1bnRpbWUgUE0gc3VwcG9ydCBmb3IgVkxWLCBidXQgbGVhdmUgaXQgZGlzYWJsZWQuIFRo ZSBuZXh0IHBhdGNoCmVuYWJsZXMgaXQuCgpUaGUgc3VzcGVuZC9yZXN1bWUgc2VxdWVuY2UgdXNl ZCBpcyBiYXNlZCBvbiBbMV0gYW5kIFsyXS4gSW4gcHJhY3RpY2Ugd2UKZGVwZW5kIG9uIHRoZSBH VCBSQzYgbWVjaGFuaXNtIHRvIHNhdmUgdGhlIEhXIGNvbnRleHQgZGVwZW5kaW5nIG9uIHRoZQpy ZW5kZXIgYW5kIG1lZGlhIHBvd2VyIHdlbGxzLiBCeSB0aGUgdGltZSB3ZSBydW4gdGhlIHJ1bnRp bWUgc3VzcGVuZApjYWxsYmFjayB0aGUgZGlzcGxheSBzaWRlIGlzIGFsc28gb2ZmIGFuZCB0aGUg SFcgY29udGV4dCBmb3IgdGhhdCBpcwptYW5hZ2VkIGJ5IHRoZSBkaXNwbGF5IHBvd2VyIGRvbWFp biBmcmFtZXdvcmsuCgpCZXNpZGVzIHRoZSBhYm92ZSB0aGVyZSBhcmUgR3VuaXQgcmVnaXN0ZXJz IHRoYXQgZGVwZW5kIG9uIGEgc3lzdGVtLXdpZGUKcG93ZXIgd2VsbC4gVGhpcyBwb3dlciB3ZWxs IGdvZXMgb2ZmIG9uY2UgdGhlIGRldmljZSBlbnRlcnMgYW55IG9mIHRoZQpTMGlbUjEyM10gc3Rh dGVzLiBUbyBoYW5kbGUgdGhpcyBzY2VuYXJpbywgc2F2ZS9yZXN0b3JlIHRoZXNlIEd1bml0CnJl Z2lzdGVycy4gTm90ZSB0aGF0IHRoaXMgaXMgbm90IHRoZSBjb21wbGV0ZSByZWdpc3RlciBzZXQg ZGljdGF0ZWQgYnkKWzJdLCB0byByZW1vdmUgc29tZSBvdmVyaGVhZCwgcmVnaXN0ZXJzIHRoYXQg YXJlIGtub3duIG5vdCB0byBiZSB1c2VkIGFyZQppZ25vcmVkLiBBbHNvIHNvbWUgcmVnaXN0ZXJz IGFyZSBmdWxseSBzZXR1cCBieSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMKY2FsbGVkIGR1cmlu ZyByZXN1bWUsIHRoZXNlIGFyZSBub3Qgc2F2ZWQgZWl0aGVyLiBUaGUgbGlzdCBvZiByZWdpc3Rl cnMKY2FuIGJlIGZ1cnRoZXIgcmVkdWNlZCwgc2VlIHRoZSBUT0RPIG5vdGUgaW4gdGhlIGNvZGUu CgpbMV0gVkxWX2dmeF9jbG9ja2luZ19QTV9yZXNldF95MTJ3MjFkMyAvICJEcml2ZXIgRDMgZW50 cnkvZXhpdCIKWzJdIFZMVjJfUzBJWFJlZ3MKCnYyOgotIHVuY2hhbmdlZAp2MzoKLSBmaXggcy9H RU42X1BNSUlSL0dFTjZfUE1JTVIvIHR5cG8gd2hlbiBzYXZpbmcvcmVzdG9yaW5nIHJlZ2lzdGVy cwogIChWaWxsZSkKdjQ6Ci0gcmViYXNlZCBvbiB0aGUgcHJldmlvdXMgcGF0Y2ggZml4aW5nIEdF TiByZWdpc3RlciBwcmVmaXhlcwoKUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+ClsgcmViYXNlZCAoYWNjb3JkaW5nIHRvIHY0KSBdClNp Z25lZC1vZmYtYnk6IEltcmUgRGVhayA8aW1yZS5kZWFrQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIHwgMzI3ICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggfCAgNjIgKysr KysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMzg5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwppbmRleCAzMTQ0YTEyLi5jYzg0YjlhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMK QEAgLTkxMiw2ICs5MTIsMTk4IEBAIHN0YXRpYyBpbnQgaHN3X3J1bnRpbWVfcmVzdW1lKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAlyZXR1cm4gMDsKIH0KIAorLyoKKyAqIFNh dmUgYWxsIEd1bml0IHJlZ2lzdGVycyB0aGF0IG1heSBiZSBsb3N0IGFmdGVyIGEgRDMgYW5kIGEg c3Vic2VxdWVudAorICogUzBpW1IxMjNdIHRyYW5zaXRpb24uIFRoZSBsaXN0IG9mIHJlZ2lzdGVy cyBuZWVkaW5nIGEgc2F2ZS9yZXN0b3JlIGlzCisgKiBkZWZpbmVkIGluIHRoZSBWTFYyX1MwSVhS ZWdzIGRvY3VtZW50LiBUaGlzIGRvY3VtZW50cyBtYXJrcyBhbGwgR3VuaXQKKyAqIHJlZ2lzdGVy cyBpbiB0aGUgZm9sbG93aW5nIHdheToKKyAqIC0gRHJpdmVyOiBzYXZlZC9yZXN0b3JlZCBieSB0 aGUgZHJpdmVyCisgKiAtIFB1bml0IDogc2F2ZWQvcmVzdG9yZWQgYnkgdGhlIFB1bml0IGZpcm13 YXJlCisgKiAtIE5vLCB3L28gbWFya2luZzogbm8gbmVlZCB0byBzYXZlL3Jlc3RvcmUsIHNpbmNl IHRoZSByZWdpc3RlciBpcyBSL08gb3IKKyAqICAgICAgICAgICAgICAgICAgICB1c2VkIGludGVy bmFsbHkgYnkgdGhlIEhXIGluIGEgd2F5IHRoYXQgZG9lc24ndCBkZXBlbmQKKyAqICAgICAgICAg ICAgICAgICAgICBrZWVwaW5nIHRoZSBjb250ZW50IGFjcm9zcyBhIHN1c3BlbmQvcmVzdW1lLgor ICogLSBEZWJ1ZyA6IHVzZWQgZm9yIGRlYnVnZ2luZworICoKKyAqIFdlIHNhdmUvcmVzdG9yZSBh bGwgcmVnaXN0ZXJzIG1hcmtlZCB3aXRoICdEcml2ZXInLCB3aXRoIHRoZSBmb2xsb3dpbmcKKyAq IGV4Y2VwdGlvbnM6CisgKiAtIFJlZ2lzdGVycyBvdXQgb2YgdXNlLCBpbmNsdWRpbmcgYWxzbyBy ZWdpc3RlcnMgbWFya2VkIHdpdGggJ0RlYnVnJy4KKyAqICAgVGhlc2UgaGF2ZSBubyBlZmZlY3Qg b24gdGhlIGRyaXZlcidzIG9wZXJhdGlvbiwgc28gd2UgZG9uJ3Qgc2F2ZS9yZXN0b3JlCisgKiAg IHRoZW0gdG8gcmVkdWNlIHRoZSBvdmVyaGVhZC4KKyAqIC0gUmVnaXN0ZXJzIHRoYXQgYXJlIGZ1 bGx5IHNldHVwIGJ5IGFuIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGNhbGxlZCBmcm9tCisgKiAg IHRoZSByZXN1bWUgcGF0aC4gRm9yIGV4YW1wbGUgbWFueSBjbG9jayBnYXRpbmcgYW5kIFJQUy9S QzYgcmVnaXN0ZXJzLgorICogLSBSZWdpc3RlcnMgdGhhdCBwcm92aWRlIHRoZSByaWdodCBmdW5j dGlvbmFsaXR5IHdpdGggdGhlaXIgcmVzZXQgZGVmYXVsdHMuCisgKgorICogVE9ETzogRXhjZXB0 IGZvciByZWdpc3RlcnMgdGhhdCBiYXNlZCBvbiB0aGUgYWJvdmUgMyBjcml0ZXJpYSBjYW4gYmUg c2FmZWx5CisgKiBpZ25vcmVkLCB3ZSBzYXZlL3Jlc3RvcmUgYWxsIG90aGVycywgcHJhY3RpY2Fs bHkgdHJlYXRpbmcgdGhlIEhXIGNvbnRleHQgYXMKKyAqIGEgYmxhY2stYm94IGZvciB0aGUgZHJp dmVyLiBGdXJ0aGVyIGludmVzdGlnYXRpb24gaXMgbmVlZGVkIHRvIHJlZHVjZSB0aGUKKyAqIHNh dmVkL3Jlc3RvcmVkIHJlZ2lzdGVycyBldmVuIGZ1cnRoZXIsIGJ5IGZvbGxvd2luZyB0aGUgc2Ft ZSAzIGNyaXRlcmlhLgorICovCitzdGF0aWMgdm9pZCB2bHZfc2F2ZV9ndW5pdF9zMGl4X3N0YXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKK3sKKwlzdHJ1Y3Qgdmx2X3MwaXhf c3RhdGUgKnMgPSAmZGV2X3ByaXYtPnZsdl9zMGl4X3N0YXRlOworCWludCBpOworCisJLyogR0FN IDB4NDAwMC0weDQ3NzAgKi8KKwlzLT53cl93YXRlcm1hcmsJCT0gSTkxNV9SRUFEKEdFTjdfV1Jf V0FURVJNQVJLKTsKKwlzLT5nZnhfcHJpb19jdHJsCT0gSTkxNV9SRUFEKEdFTjdfR0ZYX1BSSU9f Q1RSTCk7CisJcy0+YXJiX21vZGUJCT0gSTkxNV9SRUFEKEFSQl9NT0RFKTsKKwlzLT5nZnhfcGVu ZF90bGIwCT0gSTkxNV9SRUFEKEdFTjdfR0ZYX1BFTkRfVExCMCk7CisJcy0+Z2Z4X3BlbmRfdGxi MQk9IEk5MTVfUkVBRChHRU43X0dGWF9QRU5EX1RMQjEpOworCisJZm9yIChpID0gMDsgaSA8IEFS UkFZX1NJWkUocy0+bHJhX2xpbWl0cyk7IGkrKykKKwkJcy0+bHJhX2xpbWl0c1tpXSA9IEk5MTVf UkVBRChHRU43X0xSQV9MSU1JVFNfQkFTRSArIGkgKiA0KTsKKworCXMtPm1lZGlhX21heF9yZXFf Y291bnQJPSBJOTE1X1JFQUQoR0VON19NRURJQV9NQVhfUkVRX0NPVU5UKTsKKwlzLT5nZnhfbWF4 X3JlcV9jb3VudAk9IEk5MTVfUkVBRChHRU43X01FRElBX01BWF9SRVFfQ09VTlQpOworCisJcy0+ cmVuZGVyX2h3c3AJCT0gSTkxNV9SRUFEKFJFTkRFUl9IV1NfUEdBX0dFTjcpOworCXMtPmVjb2No awkJPSBJOTE1X1JFQUQoR0FNX0VDT0NISyk7CisJcy0+YnNkX2h3c3AJCT0gSTkxNV9SRUFEKEJT RF9IV1NfUEdBX0dFTjcpOworCXMtPmJsdF9od3NwCQk9IEk5MTVfUkVBRChCTFRfSFdTX1BHQV9H RU43KTsKKworCXMtPnRsYl9yZF9hZGRyCQk9IEk5MTVfUkVBRChHRU43X1RMQl9SRF9BRERSKTsK KworCS8qIE1CQyAweDkwMjQtMHg5MUQwLCAweDg1MDAgKi8KKwlzLT5nM2RjdGwJCT0gSTkxNV9S RUFEKFZMVl9HM0RDVEwpOworCXMtPmdzY2tnY3RsCQk9IEk5MTVfUkVBRChWTFZfR1NDS0dDVEwp OworCXMtPm1iY3RsCQk9IEk5MTVfUkVBRChHRU42X01CQ1RMKTsKKworCS8qIEdDUCAweDk0MDAt MHg5NDI0LCAweDgxMDAtMHg4MTBDICovCisJcy0+dWNnY3RsMQkJPSBJOTE1X1JFQUQoR0VONl9V Q0dDVEwxKTsKKwlzLT51Y2djdGwzCQk9IEk5MTVfUkVBRChHRU42X1VDR0NUTDMpOworCXMtPnJj Z2N0bDEJCT0gSTkxNV9SRUFEKEdFTjZfUkNHQ1RMMSk7CisJcy0+cmNnY3RsMgkJPSBJOTE1X1JF QUQoR0VONl9SQ0dDVEwyKTsKKwlzLT5yc3RjdGwJCT0gSTkxNV9SRUFEKEdFTjZfUlNUQ1RMKTsK KwlzLT5taXNjY3BjdGwJCT0gSTkxNV9SRUFEKEdFTjdfTUlTQ0NQQ1RMKTsKKworCS8qIEdQTSAw eEEwMDAtMHhBQTg0LCAweDgwMDAtMHg4MEZDICovCisJcy0+Z2Z4cGF1c2UJCT0gSTkxNV9SRUFE KEdFTjZfR0ZYUEFVU0UpOworCXMtPnJwZGV1aHd0YwkJPSBJOTE1X1JFQUQoR0VONl9SUERFVUhX VEMpOworCXMtPnJwZGV1YwkJPSBJOTE1X1JFQUQoR0VONl9SUERFVUMpOworCXMtPmVjb2J1cwkJ PSBJOTE1X1JFQUQoRUNPQlVTKTsKKwlzLT5wd3Jkd251cGN0bAkJPSBJOTE1X1JFQUQoVkxWX1BX UkRXTlVQQ1RMKTsKKwlzLT5ycF9kb3duX3RpbWVvdXQJPSBJOTE1X1JFQUQoR0VONl9SUF9ET1dO X1RJTUVPVVQpOworCXMtPnJwX2RldWNzdwkJPSBJOTE1X1JFQUQoR0VONl9SUERFVUNTVyk7CisJ cy0+cmN1Ym1hYmR0bXIJCT0gSTkxNV9SRUFEKEdFTjZfUkNVQk1BQkRUTVIpOworCXMtPnJjZWRh dGEJCT0gSTkxNV9SRUFEKFZMVl9SQ0VEQVRBKTsKKwlzLT5zcGFyZTJnaAkJPSBJOTE1X1JFQUQo VkxWX1NQQVJFRzJIKTsKKworCS8qIERpc3BsYXkgQ1ogZG9tYWluLCAweDQ0MDBDLTB4NDQwMkMs IDB4NEYwMDAtMHg0RjExRiAqLworCXMtPmd0X2ltcgkJPSBJOTE1X1JFQUQoR1RJTVIpOworCXMt Pmd0X2llcgkJPSBJOTE1X1JFQUQoR1RJRVIpOworCXMtPnBtX2ltcgkJPSBJOTE1X1JFQUQoR0VO Nl9QTUlNUik7CisJcy0+cG1faWVyCQk9IEk5MTVfUkVBRChHRU42X1BNSUVSKTsKKworCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHMtPmd0X3NjcmF0Y2gpOyBpKyspCisJCXMtPmd0X3NjcmF0 Y2hbaV0gPSBJOTE1X1JFQUQoR0VON19HVF9TQ1JBVENIX0JBU0UgKyBpICogNCk7CisKKwkvKiBH VCBTQSBDWiBkb21haW4sIDB4MTAwMDAwLTB4MTM4MTI0ICovCisJcy0+dGlsZWN0bAkJPSBJOTE1 X1JFQUQoVElMRUNUTCk7CisJcy0+Z3RfZmlmb2N0bAkJPSBJOTE1X1JFQUQoR1RGSUZPQ1RMKTsK KwlzLT5ndGxjX3dha2VfY3RybAk9IEk5MTVfUkVBRChWTFZfR1RMQ19XQUtFX0NUUkwpOworCXMt Pmd0bGNfc3Vydml2ZQkJPSBJOTE1X1JFQUQoVkxWX0dUTENfU1VSVklWQUJJTElUWV9SRUcpOwor CXMtPnBtd2dpY3oJCT0gSTkxNV9SRUFEKFZMVl9QTVdHSUNaKTsKKworCS8qIEd1bml0LURpc3Bs YXkgQ1ogZG9tYWluLCAweDE4MjAyOC0weDE4MjFDRiAqLworCXMtPmd1X2N0bDAJCT0gSTkxNV9S RUFEKFZMVl9HVV9DVEwwKTsKKwlzLT5ndV9jdGwxCQk9IEk5MTVfUkVBRChWTFZfR1VfQ1RMMSk7 CisJcy0+Y2xvY2tfZ2F0ZV9kaXMyCT0gSTkxNV9SRUFEKFZMVl9HVU5JVF9DTE9DS19HQVRFMik7 CisKKwkvKgorCSAqIE5vdCBzYXZpbmcgYW55IG9mOgorCSAqIERGVCwJCTB4OTgwMC0weDlFQzAK KwkgKiBTQVJCLAkweEIwMDAtMHhCMUZDCisJICogR0FDLAkJMHg1MjA4LTB4NTI0QywgMHgxNDAw MC0weDE0QzAwMAorCSAqIFBDSSBDRkcKKwkgKi8KK30KKworc3RhdGljIHZvaWQgdmx2X3Jlc3Rv cmVfZ3VuaXRfczBpeF9zdGF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJc3RydWN0IHZsdl9zMGl4X3N0YXRlICpzID0gJmRldl9wcml2LT52bHZfczBpeF9zdGF0ZTsK Kwl1MzIgdmFsOworCWludCBpOworCisJLyogR0FNIDB4NDAwMC0weDQ3NzAgKi8KKwlJOTE1X1dS SVRFKEdFTjdfV1JfV0FURVJNQVJLLAlzLT53cl93YXRlcm1hcmspOworCUk5MTVfV1JJVEUoR0VO N19HRlhfUFJJT19DVFJMLAlzLT5nZnhfcHJpb19jdHJsKTsKKwlJOTE1X1dSSVRFKEFSQl9NT0RF LAkJcy0+YXJiX21vZGUgfCAoMHhmZmZmIDw8IDE2KSk7CisJSTkxNV9XUklURShHRU43X0dGWF9Q RU5EX1RMQjAsCXMtPmdmeF9wZW5kX3RsYjApOworCUk5MTVfV1JJVEUoR0VON19HRlhfUEVORF9U TEIxLAlzLT5nZnhfcGVuZF90bGIxKTsKKworCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHMt PmxyYV9saW1pdHMpOyBpKyspCisJCUk5MTVfV1JJVEUoR0VON19MUkFfTElNSVRTX0JBU0UgKyBp ICogNCwgcy0+bHJhX2xpbWl0c1tpXSk7CisKKwlJOTE1X1dSSVRFKEdFTjdfTUVESUFfTUFYX1JF UV9DT1VOVCwgcy0+bWVkaWFfbWF4X3JlcV9jb3VudCk7CisJSTkxNV9XUklURShHRU43X01FRElB X01BWF9SRVFfQ09VTlQsIHMtPmdmeF9tYXhfcmVxX2NvdW50KTsKKworCUk5MTVfV1JJVEUoUkVO REVSX0hXU19QR0FfR0VONywJcy0+cmVuZGVyX2h3c3ApOworCUk5MTVfV1JJVEUoR0FNX0VDT0NI SywJCXMtPmVjb2Noayk7CisJSTkxNV9XUklURShCU0RfSFdTX1BHQV9HRU43LAlzLT5ic2RfaHdz cCk7CisJSTkxNV9XUklURShCTFRfSFdTX1BHQV9HRU43LAlzLT5ibHRfaHdzcCk7CisKKwlJOTE1 X1dSSVRFKEdFTjdfVExCX1JEX0FERFIsCXMtPnRsYl9yZF9hZGRyKTsKKworCS8qIE1CQyAweDkw MjQtMHg5MUQwLCAweDg1MDAgKi8KKwlJOTE1X1dSSVRFKFZMVl9HM0RDVEwsCQlzLT5nM2RjdGwp OworCUk5MTVfV1JJVEUoVkxWX0dTQ0tHQ1RMLAlzLT5nc2NrZ2N0bCk7CisJSTkxNV9XUklURShH RU42X01CQ1RMLAkJcy0+bWJjdGwpOworCisJLyogR0NQIDB4OTQwMC0weDk0MjQsIDB4ODEwMC0w eDgxMEMgKi8KKwlJOTE1X1dSSVRFKEdFTjZfVUNHQ1RMMSwJcy0+dWNnY3RsMSk7CisJSTkxNV9X UklURShHRU42X1VDR0NUTDMsCXMtPnVjZ2N0bDMpOworCUk5MTVfV1JJVEUoR0VONl9SQ0dDVEwx LAlzLT5yY2djdGwxKTsKKwlJOTE1X1dSSVRFKEdFTjZfUkNHQ1RMMiwJcy0+cmNnY3RsMik7CisJ STkxNV9XUklURShHRU42X1JTVENUTCwJCXMtPnJzdGN0bCk7CisJSTkxNV9XUklURShHRU43X01J U0NDUENUTCwJcy0+bWlzY2NwY3RsKTsKKworCS8qIEdQTSAweEEwMDAtMHhBQTg0LCAweDgwMDAt MHg4MEZDICovCisJSTkxNV9XUklURShHRU42X0dGWFBBVVNFLAlzLT5nZnhwYXVzZSk7CisJSTkx NV9XUklURShHRU42X1JQREVVSFdUQywJcy0+cnBkZXVod3RjKTsKKwlJOTE1X1dSSVRFKEdFTjZf UlBERVVDLAkJcy0+cnBkZXVjKTsKKwlJOTE1X1dSSVRFKEVDT0JVUywJCXMtPmVjb2J1cyk7CisJ STkxNV9XUklURShWTFZfUFdSRFdOVVBDVEwsCXMtPnB3cmR3bnVwY3RsKTsKKwlJOTE1X1dSSVRF KEdFTjZfUlBfRE9XTl9USU1FT1VULHMtPnJwX2Rvd25fdGltZW91dCk7CisJSTkxNV9XUklURShH RU42X1JQREVVQ1NXLAlzLT5ycF9kZXVjc3cpOworCUk5MTVfV1JJVEUoR0VONl9SQ1VCTUFCRFRN UiwJcy0+cmN1Ym1hYmR0bXIpOworCUk5MTVfV1JJVEUoVkxWX1JDRURBVEEsCQlzLT5yY2VkYXRh KTsKKwlJOTE1X1dSSVRFKFZMVl9TUEFSRUcySCwJcy0+c3BhcmUyZ2gpOworCisJLyogRGlzcGxh eSBDWiBkb21haW4sIDB4NDQwMEMtMHg0NDAyQywgMHg0RjAwMC0weDRGMTFGICovCisJSTkxNV9X UklURShHVElNUiwJCXMtPmd0X2ltcik7CisJSTkxNV9XUklURShHVElFUiwJCXMtPmd0X2llcik7 CisJSTkxNV9XUklURShHRU42X1BNSU1SLAkJcy0+cG1faW1yKTsKKwlJOTE1X1dSSVRFKEdFTjZf UE1JRVIsCQlzLT5wbV9pZXIpOworCisJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocy0+Z3Rf c2NyYXRjaCk7IGkrKykKKwkJSTkxNV9XUklURShHRU43X0dUX1NDUkFUQ0hfQkFTRSArIGkgKiA0 LCBzLT5ndF9zY3JhdGNoW2ldKTsKKworCS8qIEdUIFNBIENaIGRvbWFpbiwgMHgxMDAwMDAtMHgx MzgxMjQgKi8KKwlJOTE1X1dSSVRFKFRJTEVDVEwsCQkJcy0+dGlsZWN0bCk7CisJSTkxNV9XUklU RShHVEZJRk9DVEwsCQkJcy0+Z3RfZmlmb2N0bCk7CisJLyoKKwkgKiBQcmVzZXJ2ZSB0aGUgR1Qg YWxsb3cgd2FrZSBhbmQgR0ZYIGZvcmNlIGNsb2NrIGJpdCwgdGhleSBhcmUgbm90CisJICogYmUg cmVzdG9yZWQsIGFzIHRoZXkgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgczBpeCBzdXNwZW5kL3Jl c3VtZQorCSAqIHNlcXVlbmNlIGJ5IHRoZSBjYWxsZXIuCisJICovCisJdmFsID0gSTkxNV9SRUFE KFZMVl9HVExDX1dBS0VfQ1RSTCk7CisJdmFsICY9IFZMVl9HVExDX0FMTE9XV0FLRVJFUTsKKwl2 YWwgfD0gcy0+Z3RsY193YWtlX2N0cmwgJiB+VkxWX0dUTENfQUxMT1dXQUtFUkVROworCUk5MTVf V1JJVEUoVkxWX0dUTENfV0FLRV9DVFJMLCB2YWwpOworCisJdmFsID0gSTkxNV9SRUFEKFZMVl9H VExDX1NVUlZJVkFCSUxJVFlfUkVHKTsKKwl2YWwgJj0gVkxWX0dGWF9DTEtfRk9SQ0VfT05fQklU OworCXZhbCB8PSBzLT5ndGxjX3N1cnZpdmUgJiB+VkxWX0dGWF9DTEtfRk9SQ0VfT05fQklUOwor CUk5MTVfV1JJVEUoVkxWX0dUTENfU1VSVklWQUJJTElUWV9SRUcsIHZhbCk7CisKKwlJOTE1X1dS SVRFKFZMVl9QTVdHSUNaLAkJCXMtPnBtd2dpY3opOworCisJLyogR3VuaXQtRGlzcGxheSBDWiBk b21haW4sIDB4MTgyMDI4LTB4MTgyMUNGICovCisJSTkxNV9XUklURShWTFZfR1VfQ1RMMCwJCQlz LT5ndV9jdGwwKTsKKwlJOTE1X1dSSVRFKFZMVl9HVV9DVEwxLAkJCXMtPmd1X2N0bDEpOworCUk5 MTVfV1JJVEUoVkxWX0dVTklUX0NMT0NLX0dBVEUyLAlzLT5jbG9ja19nYXRlX2RpczIpOworfQor CiBpbnQgdmx2X2ZvcmNlX2dmeF9jbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIGJvb2wgZm9yY2Vfb24pCiB7CiAJdTMyIHZhbDsKQEAgLTk0OSw2ICsxMTQxLDEzNyBAQCBp bnQgdmx2X2ZvcmNlX2dmeF9jbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs IGJvb2wgZm9yY2Vfb24pCiAjdW5kZWYgQ09ORAogfQogCitzdGF0aWMgaW50IHZsdl9hbGxvd19n dF93YWtlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgYm9vbCBhbGxvdykKK3sK Kwl1MzIgdmFsOworCWludCBlcnIgPSAwOworCisJdmFsID0gSTkxNV9SRUFEKFZMVl9HVExDX1dB S0VfQ1RSTCk7CisJdmFsICY9IH5WTFZfR1RMQ19BTExPV1dBS0VSRVE7CisJaWYgKGFsbG93KQor CQl2YWwgfD0gVkxWX0dUTENfQUxMT1dXQUtFUkVROworCUk5MTVfV1JJVEUoVkxWX0dUTENfV0FL RV9DVFJMLCB2YWwpOworCVBPU1RJTkdfUkVBRChWTFZfR1RMQ19XQUtFX0NUUkwpOworCisjZGVm aW5lIENPTkQgKCEhKEk5MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpICYgVkxWX0dUTENfQUxM T1dXQUtFQUNLKSA9PSBcCisJICAgICAgYWxsb3cpCisJZXJyID0gd2FpdF9mb3IoQ09ORCwgMSk7 CisJaWYgKGVycikKKwkJRFJNX0VSUk9SKCJ0aW1lb3V0IGRpc2FibGluZyBHVCB3YWtpbmdcbiIp OworCXJldHVybiBlcnI7CisjdW5kZWYgQ09ORAorfQorCitzdGF0aWMgaW50IHZsdl93YWl0X2Zv cl9ndF93ZWxscyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkJIGJvb2wg d2FpdF9mb3Jfb24pCit7CisJdTMyIG1hc2s7CisJdTMyIHZhbDsKKwlpbnQgZXJyOworCisJbWFz ayA9IFZMVl9HVExDX1BXX01FRElBX1NUQVRVU19NQVNLIHwgVkxWX0dUTENfUFdfUkVOREVSX1NU QVRVU19NQVNLOworCXZhbCA9IHdhaXRfZm9yX29uID8gbWFzayA6IDA7CisjZGVmaW5lIENPTkQg KChJOTE1X1JFQUQoVkxWX0dUTENfUFdfU1RBVFVTKSAmIG1hc2spID09IHZhbCkKKwlpZiAoQ09O RCkKKwkJcmV0dXJuIDA7CisKKwlEUk1fREVCVUdfS01TKCJ3YWl0aW5nIGZvciBHVCB3ZWxscyB0 byBnbyAlcyAoJTA4eClcbiIsCisJCQl3YWl0X2Zvcl9vbiA/ICJvbiIgOiAib2ZmIiwKKwkJCUk5 MTVfUkVBRChWTFZfR1RMQ19QV19TVEFUVVMpKTsKKworCS8qCisJICogUkM2IHRyYW5zaXRpb25p bmcgY2FuIGJlIGRlbGF5ZWQgdXAgdG8gMiBtc2VjIChzZWUKKwkgKiB2YWxsZXl2aWV3X2VuYWJs ZV9ycHMpLCB1c2UgMyBtc2VjIGZvciBzYWZldHkuCisJICovCisJZXJyID0gd2FpdF9mb3IoQ09O RCwgMyk7CisJaWYgKGVycikKKwkJRFJNX0VSUk9SKCJ0aW1lb3V0IHdhaXRpbmcgZm9yIEdUIHdl bGxzIHRvIGdvICVzXG4iLAorCQkJICB3YWl0X2Zvcl9vbiA/ICJvbiIgOiAib2ZmIik7CisKKwly ZXR1cm4gZXJyOworI3VuZGVmIENPTkQKK30KKworc3RhdGljIHZvaWQgdmx2X2NoZWNrX25vX2d0 X2FjY2VzcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7CisJaWYgKCEoSTkx NV9SRUFEKFZMVl9HVExDX1BXX1NUQVRVUykgJiBWTFZfR1RMQ19BTExPV1dBS0VFUlIpKQorCQly ZXR1cm47CisKKwlEUk1fRVJST1IoIkdUIHJlZ2lzdGVyIGFjY2VzcyB3aGlsZSBHVCB3YWtpbmcg ZGlzYWJsZWRcbiIpOworCUk5MTVfV1JJVEUoVkxWX0dUTENfUFdfU1RBVFVTLCBWTFZfR1RMQ19B TExPV1dBS0VFUlIpOworfQorCitzdGF0aWMgaW50IHZsdl9ydW50aW1lX3N1c3BlbmQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQoreworCXUzMiBtYXNrOworCWludCBlcnI7CisK KwkvKgorCSAqIEJzcGVjIGRlZmluZXMgdGhlIGZvbGxvd2luZyBHVCB3ZWxsIG9uIGZsYWdzIGFz IGRlYnVnIG9ubHksIHNvCisJICogZG9uJ3QgdHJlYXQgdGhlbSBhcyBoYXJkIGZhaWx1cmVzLgor CSAqLworCSh2b2lkKXZsdl93YWl0X2Zvcl9ndF93ZWxscyhkZXZfcHJpdiwgZmFsc2UpOworCisJ bWFzayA9IFZMVl9HVExDX1JFTkRFUl9DVFhfRVhJU1RTIHwgVkxWX0dUTENfTUVESUFfQ1RYX0VY SVNUUzsKKwlXQVJOX09OKChJOTE1X1JFQUQoVkxWX0dUTENfV0FLRV9DVFJMKSAmIG1hc2spICE9 IG1hc2spOworCisJdmx2X2NoZWNrX25vX2d0X2FjY2VzcyhkZXZfcHJpdik7CisKKwllcnIgPSB2 bHZfZm9yY2VfZ2Z4X2Nsb2NrKGRldl9wcml2LCB0cnVlKTsKKwlpZiAoZXJyKQorCQlnb3RvIGVy cjE7CisKKwllcnIgPSB2bHZfYWxsb3dfZ3Rfd2FrZShkZXZfcHJpdiwgZmFsc2UpOworCWlmIChl cnIpCisJCWdvdG8gZXJyMjsKKwl2bHZfc2F2ZV9ndW5pdF9zMGl4X3N0YXRlKGRldl9wcml2KTsK KworCWVyciA9IHZsdl9mb3JjZV9nZnhfY2xvY2soZGV2X3ByaXYsIGZhbHNlKTsKKwlpZiAoZXJy KQorCQlnb3RvIGVycjI7CisKKwlyZXR1cm4gMDsKKworZXJyMjoKKwkvKiBGb3Igc2FmZXR5IGFs d2F5cyByZS1lbmFibGUgd2FraW5nIGFuZCBkaXNhYmxlIGdmeCBjbG9jayBmb3JjaW5nICovCisJ dmx2X2FsbG93X2d0X3dha2UoZGV2X3ByaXYsIHRydWUpOworZXJyMToKKwl2bHZfZm9yY2VfZ2Z4 X2Nsb2NrKGRldl9wcml2LCBmYWxzZSk7CisKKwlyZXR1cm4gZXJyOworfQorCitzdGF0aWMgaW50 IHZsdl9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCit7 CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRldl9wcml2LT5kZXY7CisJaW50IGVycjsKKwlp bnQgcmV0OworCisJLyoKKwkgKiBJZiBhbnkgb2YgdGhlIHN0ZXBzIGZhaWwganVzdCB0cnkgdG8g Y29udGludWUsIHRoYXQncyB0aGUgYmVzdCB3ZQorCSAqIGNhbiBkbyBhdCB0aGlzIHBvaW50LiBS ZXR1cm4gdGhlIGZpcnN0IGVycm9yIGNvZGUgKHdoaWNoIHdpbGwgYWxzbworCSAqIGxlYXZlIFJQ TSBwZXJtYW5lbnRseSBkaXNhYmxlZCkuCisJICovCisJcmV0ID0gdmx2X2ZvcmNlX2dmeF9jbG9j ayhkZXZfcHJpdiwgdHJ1ZSk7CisKKwl2bHZfcmVzdG9yZV9ndW5pdF9zMGl4X3N0YXRlKGRldl9w cml2KTsKKworCWVyciA9IHZsdl9hbGxvd19ndF93YWtlKGRldl9wcml2LCB0cnVlKTsKKwlpZiAo IXJldCkKKwkJcmV0ID0gZXJyOworCisJZXJyID0gdmx2X2ZvcmNlX2dmeF9jbG9jayhkZXZfcHJp diwgZmFsc2UpOworCWlmICghcmV0KQorCQlyZXQgPSBlcnI7CisKKwl2bHZfY2hlY2tfbm9fZ3Rf YWNjZXNzKGRldl9wcml2KTsKKworCWludGVsX2luaXRfY2xvY2tfZ2F0aW5nKGRldik7CisJaTkx NV9nZW1fcmVzdG9yZV9mZW5jZXMoZGV2KTsKKworCXJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBp bnQgaW50ZWxfcnVudGltZV9zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldmljZSkKIHsKIAlzdHJ1 Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2aWNlKTsKQEAgLTk3Niw2ICsxMjk5LDgg QEAgc3RhdGljIGludCBpbnRlbF9ydW50aW1lX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2aWNl KQogCQlyZXQgPSAwOwogCX0gZWxzZSBpZiAoSVNfSEFTV0VMTChkZXYpIHx8IElTX0JST0FEV0VM TChkZXYpKSB7CiAJCXJldCA9IGhzd19ydW50aW1lX3N1c3BlbmQoZGV2X3ByaXYpOworCX0gZWxz ZSBpZiAoSVNfVkFMTEVZVklFVyhkZXYpKSB7CisJCXJldCA9IHZsdl9ydW50aW1lX3N1c3BlbmQo ZGV2X3ByaXYpOwogCX0gZWxzZSB7CiAJCXJldCA9IC1FTk9ERVY7CiAJCVdBUk5fT04oMSk7CkBA IC0xMDI0LDYgKzEzNDksOCBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVj dCBkZXZpY2UgKmRldmljZSkKIAkJcmV0ID0gc25iX3J1bnRpbWVfcmVzdW1lKGRldl9wcml2KTsK IAl9IGVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdFTEwoZGV2KSkgewogCQly ZXQgPSBoc3dfcnVudGltZV9yZXN1bWUoZGV2X3ByaXYpOworCX0gZWxzZSBpZiAoSVNfVkFMTEVZ VklFVyhkZXYpKSB7CisJCXJldCA9IHZsdl9ydW50aW1lX3Jlc3VtZShkZXZfcHJpdik7CiAJfSBl bHNlIHsKIAkJV0FSTl9PTigxKTsKIAkJcmV0ID0gLUVOT0RFVjsKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCmluZGV4IDNjYWM0MzQuLjc3Y2I3ZmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaApAQCAt ODE5LDYgKzgxOSw2NyBAQCBzdHJ1Y3QgaTkxNV9zdXNwZW5kX3NhdmVkX3JlZ2lzdGVycyB7CiAJ dTMyIHNhdmVQQ0hfUE9SVF9IT1RQTFVHOwogfTsKIAorc3RydWN0IHZsdl9zMGl4X3N0YXRlIHsK KwkvKiBHQU0gKi8KKwl1MzIgd3Jfd2F0ZXJtYXJrOworCXUzMiBnZnhfcHJpb19jdHJsOworCXUz MiBhcmJfbW9kZTsKKwl1MzIgZ2Z4X3BlbmRfdGxiMDsKKwl1MzIgZ2Z4X3BlbmRfdGxiMTsKKwl1 MzIgbHJhX2xpbWl0c1tHRU43X0xSQV9MSU1JVFNfUkVHX05VTV07CisJdTMyIG1lZGlhX21heF9y ZXFfY291bnQ7CisJdTMyIGdmeF9tYXhfcmVxX2NvdW50OworCXUzMiByZW5kZXJfaHdzcDsKKwl1 MzIgZWNvY2hrOworCXUzMiBic2RfaHdzcDsKKwl1MzIgYmx0X2h3c3A7CisJdTMyIHRsYl9yZF9h ZGRyOworCisJLyogTUJDICovCisJdTMyIGczZGN0bDsKKwl1MzIgZ3Nja2djdGw7CisJdTMyIG1i Y3RsOworCisJLyogR0NQICovCisJdTMyIHVjZ2N0bDE7CisJdTMyIHVjZ2N0bDM7CisJdTMyIHJj Z2N0bDE7CisJdTMyIHJjZ2N0bDI7CisJdTMyIHJzdGN0bDsKKwl1MzIgbWlzY2NwY3RsOworCisJ LyogR1BNICovCisJdTMyIGdmeHBhdXNlOworCXUzMiBycGRldWh3dGM7CisJdTMyIHJwZGV1YzsK Kwl1MzIgZWNvYnVzOworCXUzMiBwd3Jkd251cGN0bDsKKwl1MzIgcnBfZG93bl90aW1lb3V0Owor CXUzMiBycF9kZXVjc3c7CisJdTMyIHJjdWJtYWJkdG1yOworCXUzMiByY2VkYXRhOworCXUzMiBz cGFyZTJnaDsKKworCS8qIERpc3BsYXkgMSBDWiBkb21haW4gKi8KKwl1MzIgZ3RfaW1yOworCXUz MiBndF9pZXI7CisJdTMyIHBtX2ltcjsKKwl1MzIgcG1faWVyOworCXUzMiBndF9zY3JhdGNoW0dF TjdfR1RfU0NSQVRDSF9SRUdfTlVNXTsKKworCS8qIEdUIFNBIENaIGRvbWFpbiAqLworCXUzMiB0 aWxlY3RsOworCXUzMiBndF9maWZvY3RsOworCXUzMiBndGxjX3dha2VfY3RybDsKKwl1MzIgZ3Rs Y19zdXJ2aXZlOworCXUzMiBwbXdnaWN6OworCisJLyogRGlzcGxheSAyIENaIGRvbWFpbiAqLwor CXUzMiBndV9jdGwwOworCXUzMiBndV9jdGwxOworCXUzMiBjbG9ja19nYXRlX2RpczI7Cit9Owor CiBzdHJ1Y3QgaW50ZWxfZ2VuNl9wb3dlcl9tZ210IHsKIAkvKiB3b3JrIGFuZCBwbV9paXIgYXJl IHByb3RlY3RlZCBieSBkZXZfcHJpdi0+aXJxX2xvY2sgKi8KIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qg d29yazsKQEAgLTE0NDcsNiArMTUwOCw3IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKIAog CXUzMiBzdXNwZW5kX2NvdW50OwogCXN0cnVjdCBpOTE1X3N1c3BlbmRfc2F2ZWRfcmVnaXN0ZXJz IHJlZ2ZpbGU7CisJc3RydWN0IHZsdl9zMGl4X3N0YXRlIHZsdl9zMGl4X3N0YXRlOwogCiAJc3Ry dWN0IHsKIAkJLyoKLS0gCjEuOC40CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ludGVsLWdmeAo=