From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3] drm/i915/skl: Deinit/init the display at suspend/resume Date: Thu, 21 May 2015 18:44:53 +0300 Message-ID: <20150521154453.GL18908@intel.com> References: <20150521144225.GG18908@intel.com> <1432222668-20379-1-git-send-email-damien.lespiau@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 55B4B6E958 for ; Thu, 21 May 2015 08:45:04 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1432222668-20379-1-git-send-email-damien.lespiau@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Damien Lespiau Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBNYXkgMjEsIDIwMTUgYXQgMDQ6Mzc6NDhQTSArMDEwMCwgRGFtaWVuIExlc3BpYXUg d3JvdGU6Cj4gV2UgbmVlZCB0byByZS1pbml0IHRoZSBkaXNwbGF5IGhhcmR3YXJlIHdoZW4gZ29p bmcgb3V0IG9mIHN1c3BlbmQuIFRoaXMKPiBpbmNsdWRlczoKPiAKPiAgIC0gSG9va2luZyB0aGUg UENIIHRvIHRoZSByZXNldCBsb2dpYwo+ICAgLSBSZXN0b3JpbmcgQ0RDRExLCj4gICAtIEVuYWJs aW5nIHRoZSBEREIgcG93ZXIKPiAKPiBBbW9uZyB0aG9zZSwgb25seSB0aGUgQ0RDRExLIG9uZSBp cyBhIGJpdCB0cmlja3kuIFRoZXJlJ3Mgc29tZQo+IGNvbXBsZXhpdHkgaW4gdGhhdDoKPiAKPiAg IC0gRFBMTDAgKHdoaWNoIGlzIHRoZSBzb3VyY2UgZm9yIENEQ0xLKSBoYXMgdHdvIFZDT3MsIGVh Y2ggd2l0aCBhIHNldAo+ICAgICBvZiBzdXBwb3J0ZWQgZnJlcXVlbmNpZXMuIEFzIGVEUCBhbHNv IHVzZXMgRFBMTDAgZm9yIGl0cyBsaW5rIHJhdGUsCj4gICAgIG9uY2UgRFBMTDAgaXMgb24sIHdl IHJlc3RyaWN0IHRoZSBwb3NzaWJsZSBlRFAgbGluayByYXRlcyB0aGUgY2hvc2VuCj4gICAgIFZD Ty4KPiAgIC0gQ0RDTEsgYWxzbyBsaW1pdHMgdGhlIGJhbmR3aWR0aCBhdmFpbGFibGUgdG8gcHVz aCBwaXhlbHMuCj4gCj4gU28sIGFzIGEgZmlyc3Qgc3RlcCwgdGhpcyBjb21taXQgcmVzdG9yZSB3 aGF0IHRoZSBCSU9TIHNldCwgdW50aWwgSSBjYW4KPiBkbyBtb3JlIHRlc3RpbmcuCj4gCj4gSW4g Y2FzZSB0aGF0J3Mgb2YgaW50ZXJlc3QgZm9yIHRoZSByZXZpZXdlciwgSSd2ZSB1bml0IHRlc3Rl ZCB0aGUKPiBmdW5jdGlvbiB0aGF0IGRlcml2ZXMgdGhlIGRlY2ltYWwgZnJlcXVlbmN5IGZpZWxk Ogo+IAo+ICAgI2luY2x1ZGUgPHN0ZGlvLmg+Cj4gICAjaW5jbHVkZSA8c3RkaW50Lmg+Cj4gICAj aW5jbHVkZSA8YXNzZXJ0Lmg+Cj4gCj4gICAjZGVmaW5lIEFSUkFZX1NJWkUoeCkgKHNpemVvZih4 KSAvIHNpemVvZigqKHgpKSkKPiAKPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHBsbF9mcmVxIHsK PiAgICAgICAgICAgdW5zaWduZWQgaW50IGZyZXE7Cj4gICAgICAgICAgIHVuc2lnbmVkIGludCBk ZWNpbWFsOwo+ICAgfSBmcmVxc1tdID0gewo+ICAgICAgICAgICB7IC5mcmVxID0gMzA4NTcwLCAu ZGVjaW1hbCA9IDBiMDEwMDExMDAxMTF9LAo+ICAgICAgICAgICB7IC5mcmVxID0gMzM3NTAwLCAu ZGVjaW1hbCA9IDBiMDEwMTAxMDAwMDF9LAo+ICAgICAgICAgICB7IC5mcmVxID0gNDMyMDAwLCAu ZGVjaW1hbCA9IDBiMDExMDEwMTExMTB9LAo+ICAgICAgICAgICB7IC5mcmVxID0gNDUwMDAwLCAu ZGVjaW1hbCA9IDBiMDExMTAwMDAwMTB9LAo+ICAgICAgICAgICB7IC5mcmVxID0gNTQwMDAwLCAu ZGVjaW1hbCA9IDBiMTAwMDAxMTAxMTB9LAo+ICAgICAgICAgICB7IC5mcmVxID0gNjE3MTQwLCAu ZGVjaW1hbCA9IDBiMTAwMTEwMTAwMDB9LAo+ICAgICAgICAgICB7IC5mcmVxID0gNjc1MDAwLCAu ZGVjaW1hbCA9IDBiMTAxMDEwMDAxMDB9LAo+ICAgfTsKPiAKPiAgIHN0YXRpYyB2b2lkIGludGJp dHModW5zaWduZWQgaW50IHYpCj4gICB7Cj4gICAgICAgICAgIGludCBpOwo+IAo+ICAgICAgICAg ICBmb3IoaSA9IDEwOyBpID49IDA7IGktLSkKPiAgICAgICAgICAgICAgICAgICBwdXRjaGFyKCcw JyArICgodiA+PiBpKSAmIDEpKTsKPiAgIH0KPiAKPiAgIHN0YXRpYyB1bnNpZ25lZCBpbnQgZnJl cV9kZWNpbWFsKHVuc2lnbmVkIGludCBmcmVxIC8qIGluIGtIeiAqLykKPiAgIHsKPiAgICAgICAg ICAgcmV0dXJuIChmcmVxIC0gMTAwMCkgLyA1MDA7Cj4gICB9Cj4gCj4gICBzdGF0aWMgdm9pZCB0 ZXN0X2ZyZXEoY29uc3Qgc3RydWN0IGRwbGxfZnJlcSAqZW50cnkpCj4gICB7Cj4gICAgICAgICAg IHVuc2lnbmVkIGludCBkZWNpbWFsID0gZnJlcV9kZWNpbWFsKGVudHJ5LT5mcmVxKTsKPiAKPiAg ICAgICAgICAgcHJpbnRmKCJmcmVxOiAlZCwgZXhwZWN0ZWQ6ICIsIGVudHJ5LT5mcmVxKTsKPiAg ICAgICAgICAgaW50Yml0cyhlbnRyeS0+ZGVjaW1hbCk7Cj4gICAgICAgICAgIHByaW50ZigiLCBn b3Q6ICIpOwo+ICAgICAgICAgICBpbnRiaXRzKGRlY2ltYWwpOwo+ICAgICAgICAgICBwdXRjaGFy KCdcbicpOwo+IAo+ICAgICAgICAgICBhc3NlcnQoZGVjaW1hbCA9PSBlbnRyeS0+ZGVjaW1hbCk7 Cj4gICB9Cj4gCj4gICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCj4gICB7Cj4gICAg ICAgICAgIGludCBpOwo+IAo+ICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShm cmVxcyk7IGkrKykKPiAgICAgICAgICAgICAgICAgICB0ZXN0X2ZyZXEoJmZyZXFzW2ldKTsKPiAK PiAgICAgICAgICAgcmV0dXJuIDA7Cj4gICB9Cj4gCj4gdjI6Cj4gICAtIFJlYmFzZSBvbiB0b3Ag b2YgLW5pZ2h0bHkKPiAgIC0gVXNlIChmcmVxIC0gMTAwMCkgLyA1MDAgZm9yIHRoZSBkZWNpbWFs IGZyZXF1ZW5jeSAoVmlsbGUpCj4gICAtIEZpeCBzZXR0aW5nIHRoZSBlbmFibGUgYml0IG9mIEhT V19OREVfUlNUV1JOX09QVCAoVmlsbGUpCj4gICAtIFJlbmFtZSBza2xfZGlzcGxheV97cmVzdW1l LHN1c3BlbmR9IHRvIHNrbF97aW5pdCx1bmluaXR9X2NkY2xrIHRvCj4gICAgIGJlIGNvbnNpc3Rl bnQgd2l0aCB0aGUgQlhUIGNvZGUgKFZpbGxlKQo+ICAgLSBTdG9yZSBib290IENEQ0xLIGluIGRk aV9wbGxfaW5pdCAoVmlsbGUpCj4gICAtIE1lcmdlIGRldl9wcml2J3Mgc2tsX2Jvb3RfY2RjbGsg aW50byBjZGNsa19mcmVxCj4gICAtIFVzZSBMQ1BMTF9QTExfTE9DSyBpbnN0ZWFkIG9mICgxIDw8 IDMwKSAoVmlsbGUpCj4gICAtIFJlcGxhY2UgdmFyaW91cyAnMCcgYnkgU0tMX0RQTEwwIHRvIGJl IGEgYml0IG1vcmUgZXhwbGljaXQgdGhhdAo+ICAgICB3ZSdyZSBwcm9ncmFtbWluZyBEUExMMAo+ ICAgLSBCdXN5IHBvbGwgdGhlIFBDVSBiZWZvcmUgZG9pbmcgdGhlIGZyZXF1ZW5jeSBjaGFuZ2Uu IEl0IHRha2VzIGFib3V0Cj4gICAgIDMvNCBjeWNsZXMsIGVhY2ggc2VwYXJhdGVkIGJ5IDEwdXMs IHRvIGdldCB0aGUgQUNLIGZyb20gdGhlIENQVQo+ICAgICAoVmlsbGUpCj4gCj4gdjM6Cj4gICAt IFJlc3RvcmUgZGV2X3ByaXYtPnNrbF9ib290X2NkY2xrLCBsZWF2aW5nIHVuaWZpY2F0aW9uIHdp dGgKPiAgICAgZGV2X3ByaXYtPmNkY2xrX2ZyZXEgZm9yIGEgbGF0ZXIgcGF0Y2ggKERhbmllbCwg VmlsbGUpCj4gCj4gUmV2aWV3ZWQtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBs aW51eC5pbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogRGFtaWVuIExlc3BpYXUgPGRhbWllbi5s ZXNwaWF1QGludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYu YyAgICAgIHwgICAzICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgIHwg ICAxICsKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCAgICAgIHwgICAzICsKPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgIHwgICA4ICstCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDIwOCArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAg IDIgKwo+ICA2IGZpbGVzIGNoYW5nZWQsIDIyMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IDkzMTkxYzEuLjg4NGI0ZjkgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKPiBAQCAtMTA0Nyw2ICsxMDQ3LDggQEAgc3RhdGlj IGludCBza2xfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpCj4gIAkgKi8KPiAgCWludGVsX2Nzcl9sb2FkX3N0YXR1c19zZXQoZGV2X3ByaXYsIEZXX1VO SU5JVElBTElaRUQpOwo+ICAKPiArCXNrbF91bmluaXRfY2RjbGsoZGV2X3ByaXYpOwo+ICsKPiAg CXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC0xMDkzLDYgKzEwOTUsNyBAQCBzdGF0aWMgaW50IHNr bF9yZXN1bWVfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsK PiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+ICAKPiArCXNrbF9p bml0X2NkY2xrKGRldl9wcml2KTsKPiAgCWludGVsX2Nzcl9sb2FkX3Byb2dyYW0oZGV2KTsKPiAg Cj4gIAlyZXR1cm4gMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRleCBiNGVlYmQwLi40 NGQ1OTJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTE3MDUsNiArMTcwNSw3 IEBAIHN0cnVjdCBkcm1faTkxNV9wcml2YXRlIHsKPiAgCWludCBudW1fZmVuY2VfcmVnczsgLyog OCBvbiBwcmUtOTY1LCAxNiBvdGhlcndpc2UgKi8KPiAgCj4gIAl1bnNpZ25lZCBpbnQgZnNiX2Zy ZXEsIG1lbV9mcmVxLCBpc19kZHIzOwo+ICsJdW5zaWduZWQgaW50IHNrbF9ib290X2NkY2xrOwo+ ICAJdW5zaWduZWQgaW50IGNkY2xrX2ZyZXE7Cj4gIAl1bnNpZ25lZCBpbnQgaHBsbF9mcmVxOwo+ ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiBpbmRleCA1YWZmZjNhLi40ZDcyODJlIDEwMDY0 NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgKPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gQEAgLTY2OTksNiArNjY5OSw5IEBAIGVudW0gc2ts X2Rpc3BfcG93ZXJfd2VsbHMgewo+ICAjZGVmaW5lICAgICBHRU45X01FTV9MQVRFTkNZX0xFVkVM XzFfNV9TSElGVAk4Cj4gICNkZWZpbmUgICAgIEdFTjlfTUVNX0xBVEVOQ1lfTEVWRUxfMl82X1NI SUZUCTE2Cj4gICNkZWZpbmUgICAgIEdFTjlfTUVNX0xBVEVOQ1lfTEVWRUxfM183X1NISUZUCTI0 Cj4gKyNkZWZpbmUgICBTS0xfUENPREVfQ0RDTEtfQ09OVFJPTAkJMHg3Cj4gKyNkZWZpbmUgICAg IFNLTF9DRENMS19QUkVQQVJFX0ZPUl9DSEFOR0UJMHgzCj4gKyNkZWZpbmUgICAgIFNLTF9DRENM S19SRUFEWV9GT1JfQ0hBTkdFCQkweDEKPiAgI2RlZmluZSAgIEdFTjZfUENPREVfV1JJVEVfTUlO X0ZSRVFfVEFCTEUJMHg4Cj4gICNkZWZpbmUgICBHRU42X1BDT0RFX1JFQURfTUlOX0ZSRVFfVEFC TEUJMHg5Cj4gICNkZWZpbmUgICBHRU42X1JFQURfT0NfUEFSQU1TCQkJMHhjCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiBpbmRleCBkNjAyZGIyLi5jYWNiMDdiIDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGRpLmMKPiBAQCAtMjUxMCw2ICsyNTEwLDcgQEAgdm9pZCBpbnRlbF9kZGlfcGxs X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXVpbnQzMl90IHZhbCA9IEk5 MTVfUkVBRChMQ1BMTF9DVEwpOwo+ICsJaW50IGNkY2xrX2ZyZXE7Cj4gIAo+ICAJaWYgKElTX1NL WUxBS0UoZGV2KSkKPiAgCQlza2xfc2hhcmVkX2RwbGxzX2luaXQoZGV2X3ByaXYpOwo+IEBAIC0y NTE4LDEyICsyNTE5LDE1IEBAIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAllbHNlCj4gIAkJaHN3X3NoYXJlZF9kcGxsc19pbml0KGRldl9wcml2KTsK PiAgCj4gLQlEUk1fREVCVUdfS01TKCJDRENMSyBydW5uaW5nIGF0ICVkS0h6XG4iLAo+IC0JCSAg ICAgIGRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldikpOwo+ICsJ Y2RjbGtfZnJlcSA9IGRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRl dik7Cj4gKwlEUk1fREVCVUdfS01TKCJDRENMSyBydW5uaW5nIGF0ICVkS0h6XG4iLCBjZGNsa19m cmVxKTsKPiAgCj4gIAlpZiAoSVNfU0tZTEFLRShkZXYpKSB7Cj4gKwkJZGV2X3ByaXYtPnNrbF9i b290X2NkY2xrID0gY2RjbGtfZnJlcTsKPiAgCQlpZiAoIShJOTE1X1JFQUQoTENQTEwxX0NUTCkg JiBMQ1BMTF9QTExfRU5BQkxFKSkKPiAgCQkJRFJNX0VSUk9SKCJMQ1BMTDEgaXMgZGlzYWJsZWRc biIpOwo+ICsJCWVsc2UKPiArCQkJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBP V0VSX0RPTUFJTl9QTExTKTsKCkhtbSwgYWN0dWFsbHkgYXJlIHdlIG5vdCBjYWxsaW5nIHRoZSBz a2xfaW5pdF9jZGNsaygpIG9uIGJvb3QgYXQgYWxsPyBJIHNlZQppdCBvbmx5IGluIHRoZSByZXN1 bWUgcGF0aC4KCj4gIAl9IGVsc2UgaWYgKElTX0JST1hUT04oZGV2KSkgewo+ICAJCWJyb3h0b25f aW5pdF9jZGNsayhkZXYpOwo+ICAJCWJyb3h0b25fZGRpX3BoeV9pbml0KGRldik7Cj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IDA0ODU2NTUuLjI2ODA0M2YgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gQEAgLTU1MjcsNiArNTUyNywyMTQg QEAgdm9pZCBicm94dG9uX3VuaW5pdF9jZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJ aW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKTsKPiAg fQo+ICAKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBza2xfY2RjbGtfZW50cnkgewo+ICsJdW5zaWdu ZWQgaW50IGZyZXE7Cj4gKwl1bnNpZ25lZCBpbnQgdmNvOwo+ICt9IHNrbF9jZGNsa19mcmVxdWVu Y2llc1tdID0gewo+ICsJeyAuZnJlcSA9IDMwODU3MCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZy ZXEgPSAzMzc1MDAsIC52Y28gPSA4MTAwIH0sCj4gKwl7IC5mcmVxID0gNDMyMDAwLCAudmNvID0g ODY0MCB9LAo+ICsJeyAuZnJlcSA9IDQ1MDAwMCwgLnZjbyA9IDgxMDAgfSwKPiArCXsgLmZyZXEg PSA1NDAwMDAsIC52Y28gPSA4MTAwIH0sCj4gKwl7IC5mcmVxID0gNjE3MTQwLCAudmNvID0gODY0 MCB9LAo+ICsJeyAuZnJlcSA9IDY3NTAwMCwgLnZjbyA9IDgxMDAgfSwKPiArfTsKPiArCj4gK3N0 YXRpYyB1bnNpZ25lZCBpbnQgc2tsX2NkY2xrX2RlY2ltYWwodW5zaWduZWQgaW50IGZyZXEpCj4g K3sKPiArCXJldHVybiAoZnJlcSAtIDEwMDApIC8gNTAwOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdW5z aWduZWQgaW50IHNrbF9jZGNsa19nZXRfdmNvKHVuc2lnbmVkIGludCBmcmVxKQo+ICt7Cj4gKwl1 bnNpZ25lZCBpbnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShza2xfY2Rj bGtfZnJlcXVlbmNpZXMpOyBpKyspIHsKPiArCQljb25zdCBzdHJ1Y3Qgc2tsX2NkY2xrX2VudHJ5 ICplID0gJnNrbF9jZGNsa19mcmVxdWVuY2llc1tpXTsKPiArCj4gKwkJaWYgKGUtPmZyZXEgPT0g ZnJlcSkKPiArCQkJcmV0dXJuIGUtPnZjbzsKPiArCX0KPiArCj4gKwlyZXR1cm4gODEwMDsKPiAr fQo+ICsKPiArc3RhdGljIHZvaWQKPiArc2tsX2RwbGwwX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGludCByZXF1aXJlZF92Y28pCj4gK3sKPiArCXVu c2lnbmVkIGludCBtaW5fZnJlcTsKPiArCXUzMiB2YWw7Cj4gKwo+ICsJLyogc2VsZWN0IHRoZSBt aW5pbXVtIENEQ0xLIGJlZm9yZSBlbmFibGluZyBEUExMIDAgKi8KPiArCXZhbCA9IEk5MTVfUkVB RChDRENMS19DVEwpOwo+ICsJdmFsICY9IH5DRENMS19GUkVRX1NFTF9NQVNLIHwgfkNEQ0xLX0ZS RVFfREVDSU1BTF9NQVNLOwo+ICsJdmFsIHw9IENEQ0xLX0ZSRVFfMzM3XzMwODsKPiArCj4gKwlp ZiAocmVxdWlyZWRfdmNvID09IDg2NDApCj4gKwkJbWluX2ZyZXEgPSAzMDg1NzA7Cj4gKwllbHNl Cj4gKwkJbWluX2ZyZXEgPSAzMzc1MDA7Cj4gKwo+ICsJdmFsID0gQ0RDTEtfRlJFUV8zMzdfMzA4 IHwgc2tsX2NkY2xrX2RlY2ltYWwobWluX2ZyZXEpOwo+ICsKPiArCUk5MTVfV1JJVEUoQ0RDTEtf Q1RMLCB2YWwpOwo+ICsJUE9TVElOR19SRUFEKENEQ0xLX0NUTCk7Cj4gKwo+ICsJLyoKPiArCSAq IFdlIGFsd2F5cyBlbmFibGUgRFBMTDAgd2l0aCB0aGUgbG93ZXN0IGxpbmsgcmF0ZSBwb3NzaWJs ZSwgYnV0IHN0aWxsCj4gKwkgKiB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBWQ08gcmVxdWlyZWQg dG8gb3BlcmF0ZSB0aGUgZURQIHBhbmVsIGF0IHRoZQo+ICsJICogZGVzaXJlZCBmcmVxdWVuY3ku IFRoZSB1c3VhbCBEUCBsaW5rIHJhdGVzIG9wZXJhdGUgd2l0aCBhIFZDTyBvZgo+ICsJICogODEw MCB3aGlsZSB0aGUgZURQIDEuNCBhbHRlcm5hdGUgbGluayByYXRlcyBuZWVkIGEgVkNPIG9mIDg2 NDAuCj4gKwkgKiBUaGUgbW9kZXNldCBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2VsZWN0 aW9uIG9mIHRoZSBleGFjdCBsaW5rCj4gKwkgKiByYXRlIGxhdGVyIG9uLCB3aXRoIHRoZSBjb25z dHJhaW50IG9mIGNob29zaW5nIGEgZnJlcXVlbmN5IHRoYXQKPiArCSAqIHdvcmtzIHdpdGggcmVx dWlyZWRfdmNvLgo+ICsJICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoRFBMTF9DVFJMMSk7Cj4gKwo+ ICsJdmFsICY9IH4oRFBMTF9DVFJMMV9IRE1JX01PREUoU0tMX0RQTEwwKSB8IERQTExfQ1RSTDFf U1NDKFNLTF9EUExMMCkgfAo+ICsJCSBEUExMX0NUUkwxX0xJTktfUkFURV9NQVNLKFNLTF9EUExM MCkpOwo+ICsJdmFsIHw9IERQTExfQ1RSTDFfT1ZFUlJJREUoU0tMX0RQTEwwKTsKPiArCWlmIChy ZXF1aXJlZF92Y28gPT0gODY0MCkKPiArCQl2YWwgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBM TF9DVFJMMV9MSU5LX1JBVEVfMTA4MCwKPiArCQkJCQkgICAgU0tMX0RQTEwwKTsKPiArCWVsc2UK PiArCQl2YWwgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfODEw LAo+ICsJCQkJCSAgICBTS0xfRFBMTDApOwo+ICsKPiArCUk5MTVfV1JJVEUoRFBMTF9DVFJMMSwg dmFsKTsKPiArCVBPU1RJTkdfUkVBRChEUExMX0NUUkwxKTsKPiArCj4gKwlJOTE1X1dSSVRFKExD UExMMV9DVEwsIEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSB8IExDUExMX1BMTF9FTkFCTEUpOwo+ICsK PiArCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiBMQ1BMTF9QTExfTE9DSywg NSkpCj4gKwkJRFJNX0VSUk9SKCJEUExMMCBub3QgbG9ja2VkXG4iKTsKPiArfQo+ICsKPiArc3Rh dGljIGJvb2wgc2tsX2NkY2xrX3BjdV9yZWFkeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3sKPiArCWludCByZXQ7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCS8qIGluZm9ybSBQ Q1Ugd2Ugd2FudCB0byBjaGFuZ2UgQ0RDTEsgKi8KPiArCXZhbCA9IFNLTF9DRENMS19QUkVQQVJF X0ZPUl9DSEFOR0U7Cj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICsJ cmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NP TlRST0wsICZ2YWwpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ ICsKPiArCXJldHVybiByZXQgPT0gMCAmJiAodmFsICYgU0tMX0NEQ0xLX1JFQURZX0ZPUl9DSEFO R0UpOwo+ICt9Cj4gKwo+ICtzdGF0aWMgYm9vbCBza2xfY2RjbGtfd2FpdF9mb3JfcGN1X3JlYWR5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJdW5zaWduZWQgaW50 IGk7Cj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDE1OyBpKyspIHsKPiArCQlpZiAoc2tsX2NkY2xr X3BjdV9yZWFkeShkZXZfcHJpdikpCj4gKwkJCXJldHVybiB0cnVlOwo+ICsJCXVkZWxheSgxMCk7 Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBza2xf c2V0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdW5zaWduZWQgaW50 IGZyZXEpCj4gK3sKPiArCXUzMiBmcmVxX3NlbGVjdCwgcGN1X2FjazsKPiArCj4gKwlEUk1fREVC VUdfRFJJVkVSKCJDaGFuZ2luZyBDRENMSyB0byAlZEtIelxuIiwgZnJlcSk7Cj4gKwo+ICsJaWYg KCFza2xfY2RjbGtfd2FpdF9mb3JfcGN1X3JlYWR5KGRldl9wcml2KSkgewo+ICsJCURSTV9FUlJP UigiZmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJvdXQgY2RjbGsgY2hhbmdlXG4iKTsKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gKwo+ICsJLyogc2V0IENEQ0xLX0NUTCAqLwo+ICsJc3dpdGNoKGZyZXEpIHsK PiArCWNhc2UgNDUwMDAwOgo+ICsJY2FzZSA0MzIwMDA6Cj4gKwkJZnJlcV9zZWxlY3QgPSBDRENM S19GUkVRXzQ1MF80MzI7Cj4gKwkJcGN1X2FjayA9IDE7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDU0 MDAwMDoKPiArCQlmcmVxX3NlbGVjdCA9IENEQ0xLX0ZSRVFfNTQwOwo+ICsJCXBjdV9hY2sgPSAy Owo+ICsJCWJyZWFrOwo+ICsJY2FzZSAzMDg1NzA6Cj4gKwljYXNlIDMzNzUwMDoKPiArCWRlZmF1 bHQ6Cj4gKwkJZnJlcV9zZWxlY3QgPSBDRENMS19GUkVRXzMzN18zMDg7Cj4gKwkJcGN1X2FjayA9 IDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDYxNzE0MDoKPiArCWNhc2UgNjc1MDAwOgo+ICsJCWZy ZXFfc2VsZWN0ID0gQ0RDTEtfRlJFUV82NzVfNjE3Owo+ICsJCXBjdV9hY2sgPSAzOwo+ICsJCWJy ZWFrOwo+ICsJfQo+ICsKPiArCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCBmcmVxX3NlbGVjdCB8IHNr bF9jZGNsa19kZWNpbWFsKGZyZXEpKTsKPiArCVBPU1RJTkdfUkVBRChDRENMS19DVEwpOwo+ICsK PiArCS8qIGluZm9ybSBQQ1Ugb2YgdGhlIGNoYW5nZSAqLwo+ICsJbXV0ZXhfbG9jaygmZGV2X3By aXYtPnJwcy5od19sb2NrKTsKPiArCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBT S0xfUENPREVfQ0RDTEtfQ09OVFJPTCwgcGN1X2Fjayk7Cj4gKwltdXRleF91bmxvY2soJmRldl9w cml2LT5ycHMuaHdfbG9jayk7Cj4gK30KPiArCj4gK3ZvaWQgc2tsX3VuaW5pdF9jZGNsayhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCS8qIGRpc2FibGUgREJVRiBw b3dlciAqLwo+ICsJSTkxNV9XUklURShEQlVGX0NUTCwgSTkxNV9SRUFEKERCVUZfQ1RMKSAmIH5E QlVGX1BPV0VSX1JFUVVFU1QpOwo+ICsJUE9TVElOR19SRUFEKERCVUZfQ1RMKTsKPiArCj4gKwl1 ZGVsYXkoMTApOwo+ICsKPiArCWlmIChJOTE1X1JFQUQoREJVRl9DVEwpICYgREJVRl9QT1dFUl9T VEFURSkKPiArCQlEUk1fRVJST1IoIkRCdWYgcG93ZXIgZGlzYWJsZSB0aW1lb3V0XG4iKTsKPiAr Cj4gKwkvKiBkaXNhYmxlIERQTEwwICovCj4gKwlJOTE1X1dSSVRFKExDUExMMV9DVEwsIEk5MTVf UkVBRChMQ1BMTDFfQ1RMKSAmIH5MQ1BMTF9QTExfRU5BQkxFKTsKPiArCWlmICh3YWl0X2Zvcigh KEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9MT0NLKSwgMSkpCj4gKwkJRFJNX0VS Uk9SKCJDb3VsZG4ndCBkaXNhYmxlIERQTEwwXG4iKTsKPiArCj4gKwlpbnRlbF9kaXNwbGF5X3Bv d2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICt9Cj4gKwo+ICt2b2lkIHNr bF9pbml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJ dTMyIHZhbDsKPiArCXVuc2lnbmVkIGludCByZXF1aXJlZF92Y287Cj4gKwo+ICsJLyogZW5hYmxl IFBDSCByZXNldCBoYW5kc2hha2UgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChIU1dfTkRFX1JTVFdS Tl9PUFQpOwo+ICsJSTkxNV9XUklURShIU1dfTkRFX1JTVFdSTl9PUFQsIHZhbCB8IFJFU0VUX1BD SF9IQU5EU0hBS0VfRU5BQkxFKTsKPiArCj4gKwkvKiBlbmFibGUgUEcxIGFuZCBNaXNjIEkvTyAq Lwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExT KTsKPiArCj4gKwkvKiBEUExMMCBhbHJlYWR5IGVuYWJlZCAhPyAqLwo+ICsJaWYgKEk5MTVfUkVB RChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9FTkFCTEUpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVS KCJEUExMMCBhbHJlYWR5IHJ1bm5pbmdcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwkv KiBlbmFibGUgRFBMTDAgKi8KPiArCXJlcXVpcmVkX3ZjbyA9IHNrbF9jZGNsa19nZXRfdmNvKGRl dl9wcml2LT5za2xfYm9vdF9jZGNsayk7Cj4gKwlza2xfZHBsbDBfZW5hYmxlKGRldl9wcml2LCBy ZXF1aXJlZF92Y28pOwo+ICsKPiArCS8qIHNldCBDRENMSyB0byB0aGUgZnJlcXVlbmN5IHRoZSBC SU9TIGNob3NlICovCj4gKwlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+c2tsX2Jv b3RfY2RjbGspOwo+ICsKPiArCS8qIGVuYWJsZSBEQlVGIHBvd2VyICovCj4gKwlJOTE1X1dSSVRF KERCVUZfQ1RMLCBJOTE1X1JFQUQoREJVRl9DVEwpIHwgREJVRl9QT1dFUl9SRVFVRVNUKTsKPiAr CVBPU1RJTkdfUkVBRChEQlVGX0NUTCk7Cj4gKwo+ICsJdWRlbGF5KDEwKTsKPiArCj4gKwlpZiAo IShJOTE1X1JFQUQoREJVRl9DVEwpICYgREJVRl9QT1dFUl9TVEFURSkpCj4gKwkJRFJNX0VSUk9S KCJEQnVmIHBvd2VyIGVuYWJsZSB0aW1lb3V0XG4iKTsKPiArfQo+ICsKPiAgLyogcmV0dXJucyBI UExMIGZyZXF1ZW5jeSBpbiBrSHogKi8KPiAgc3RhdGljIGludCB2YWxsZXl2aWV3X2dldF92Y28o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiBpbmRleCBlOTRjYjZlLi4wMmQ4MzE3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHJ2LmgKPiBAQCAtMTExOCw2ICsxMTE4LDggQEAgdm9pZCBicm94dG9uX2RkaV9waHlfaW5p dChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBicm94dG9uX2RkaV9waHlfdW5pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGJ4dF9lbmFibGVfZGM5KHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgYnh0X2Rpc2FibGVfZGM5KHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgc2tsX2luaXRfY2RjbGsoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBza2xfdW5pbml0X2NkY2xr KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaW50ZWxfZHBfZ2V0 X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkgICAgICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ICB2b2lkIGludGVsX2RwX3NldF9tX24oc3RydWN0IGlu dGVsX2NydGMgKmNydGMsIGVudW0gbGlua19tX25fc2V0IG1fbik7Cj4gLS0gCj4gMi4xLjAKCi0t IApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaW50ZWwtZ2Z4Cg==