From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 5/5] drm/i915/skl: Deinit/init the display at suspend/resume Date: Thu, 21 May 2015 17:42:25 +0300 Message-ID: <20150521144225.GG18908@intel.com> References: <1432129518-29140-1-git-send-email-damien.lespiau@intel.com> <1432129518-29140-6-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 mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id F0ACD6E923 for ; Thu, 21 May 2015 07:42:35 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1432129518-29140-6-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 T24gV2VkLCBNYXkgMjAsIDIwMTUgYXQgMDI6NDU6MThQTSArMDEwMCwgRGFtaWVuIExlc3BpYXUg 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+ICAgICAoVmlsbGUpCj4gCj4gU2lnbmVkLW9m Zi1ieTogRGFtaWVuIExlc3BpYXUgPGRhbWllbi5sZXNwaWF1QGludGVsLmNvbT4KCkxvb2tzIGxp a2UgYWxsIG9mIG15IGNvbXBsYWludHMgZ290IGFkZHJlc3NlZC4gU28gdGhlIGJvb3QgY2RjbGsg dGhpbmcKaXMgc3RpbGwgYSBiaXQgb3BlbiwgYnV0IGFwYXJ0IGZyb20gdGhhdCB0aGlzIGdldHM6 CgpSZXZpZXdlZC1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVs LmNvbT4KCj4gLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICB8ICAg MyArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgMyArCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDIxMCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDIg Kwo+ICA1IGZpbGVzIGNoYW5nZWQsIDIyMCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2Rydi5jCj4gaW5kZXggOTMxOTFjMS4uODg0YjRmOSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9kcnYuYwo+IEBAIC0xMDQ3LDYgKzEwNDcsOCBAQCBzdGF0aWMgaW50IHNrbF9zdXNwZW5kX2Nv bXBsZXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCSAqLwo+ICAJaW50 ZWxfY3NyX2xvYWRfc3RhdHVzX3NldChkZXZfcHJpdiwgRldfVU5JTklUSUFMSVpFRCk7Cj4gIAo+ ICsJc2tsX3VuaW5pdF9jZGNsayhkZXZfcHJpdik7Cj4gKwo+ICAJcmV0dXJuIDA7Cj4gIH0KPiAg Cj4gQEAgLTEwOTMsNiArMTA5NSw3IEBAIHN0YXRpYyBpbnQgc2tsX3Jlc3VtZV9wcmVwYXJlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgewo+ICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGRldl9wcml2LT5kZXY7Cj4gIAo+ICsJc2tsX2luaXRfY2RjbGsoZGV2X3ByaXYp Owo+ICAJaW50ZWxfY3NyX2xvYWRfcHJvZ3JhbShkZXYpOwo+ICAKPiAgCXJldHVybiAwOwo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9yZWcuaAo+IGluZGV4IDg0YWYyNTUuLjRkZjVjZGQgMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmgKPiBAQCAtNjY5OCw2ICs2Njk4LDkgQEAgZW51bSBza2xfZGlzcF9w b3dlcl93ZWxscyB7Cj4gICNkZWZpbmUgICAgIEdFTjlfTUVNX0xBVEVOQ1lfTEVWRUxfMV81X1NI SUZUCTgKPiAgI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF8yXzZfU0hJRlQJMTYK PiAgI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF8zXzdfU0hJRlQJMjQKPiArI2Rl ZmluZSAgIFNLTF9QQ09ERV9DRENMS19DT05UUk9MCQkweDcKPiArI2RlZmluZSAgICAgU0tMX0NE Q0xLX1BSRVBBUkVfRk9SX0NIQU5HRQkweDMKPiArI2RlZmluZSAgICAgU0tMX0NEQ0xLX1JFQURZ X0ZPUl9DSEFOR0UJCTB4MQo+ICAjZGVmaW5lICAgR0VONl9QQ09ERV9XUklURV9NSU5fRlJFUV9U QUJMRQkweDgKPiAgI2RlZmluZSAgIEdFTjZfUENPREVfUkVBRF9NSU5fRlJFUV9UQUJMRQkweDkK PiAgI2RlZmluZSAgIEdFTjZfUkVBRF9PQ19QQVJBTVMJCQkweGMKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYwo+IGluZGV4IGI1N2YxNTYuLmJjNmI4OTkgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kZGkuYwo+IEBAIC0yNTI0LDYgKzI1MjQsOCBAQCB2b2lkIGludGVsX2RkaV9wbGxfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaWYgKElTX1NLWUxBS0UoZGV2KSkgewo+ICAJCWlm ICghKEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9FTkFCTEUpKQo+ICAJCQlEUk1f RVJST1IoIkxDUExMMSBpcyBkaXNhYmxlZFxuIik7Cj4gKwkJZWxzZQo+ICsJCQlpbnRlbF9kaXNw bGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICAJfSBlbHNlIGlm IChJU19CUk9YVE9OKGRldikpIHsKPiAgCQlicm94dG9uX2luaXRfY2RjbGsoZGV2KTsKPiAgCQli cm94dG9uX2RkaV9waHlfaW5pdChkZXYpOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKPiBpbmRleCBjOTdiNDk2Li4xZjJmNGY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwo+IEBAIC01NTI3LDYgKzU1MjcsMjE2IEBAIHZvaWQgYnJveHRvbl91bmluaXRf Y2RjbGsoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCWludGVsX2Rpc3BsYXlfcG93ZXJfcHV0 KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gIH0KPiAgCj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3Qgc2tsX2NkY2xrX2VudHJ5IHsKPiArCXVuc2lnbmVkIGludCBmcmVxOwo+ICsJdW5zaWdu ZWQgaW50IHZjbzsKPiArfSBza2xfY2RjbGtfZnJlcXVlbmNpZXNbXSA9IHsKPiArCXsgLmZyZXEg PSAzMDg1NzAsIC52Y28gPSA4NjQwIH0sCj4gKwl7IC5mcmVxID0gMzM3NTAwLCAudmNvID0gODEw MCB9LAo+ICsJeyAuZnJlcSA9IDQzMjAwMCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZyZXEgPSA0 NTAwMDAsIC52Y28gPSA4MTAwIH0sCj4gKwl7IC5mcmVxID0gNTQwMDAwLCAudmNvID0gODEwMCB9 LAo+ICsJeyAuZnJlcSA9IDYxNzE0MCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZyZXEgPSA2NzUw MDAsIC52Y28gPSA4MTAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHNrbF9j ZGNsa19kZWNpbWFsKHVuc2lnbmVkIGludCBmcmVxKQo+ICt7Cj4gKwlyZXR1cm4gKGZyZXEgLSAx MDAwKSAvIDUwMDsKPiArfQo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGludCBza2xfY2RjbGtfZ2V0 X3Zjbyh1bnNpZ25lZCBpbnQgZnJlcSkKPiArewo+ICsJdW5zaWduZWQgaW50IGk7Cj4gKwo+ICsJ Zm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoc2tsX2NkY2xrX2ZyZXF1ZW5jaWVzKTsgaSsrKSB7 Cj4gKwkJY29uc3Qgc3RydWN0IHNrbF9jZGNsa19lbnRyeSAqZSA9ICZza2xfY2RjbGtfZnJlcXVl bmNpZXNbaV07Cj4gKwo+ICsJCWlmIChlLT5mcmVxID09IGZyZXEpCj4gKwkJCXJldHVybiBlLT52 Y287Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDgxMDA7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkCj4g K3NrbF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNp Z25lZCBpbnQgcmVxdWlyZWRfdmNvKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgbWluX2ZyZXE7Cj4g Kwl1MzIgdmFsOwo+ICsKPiArCS8qIHNlbGVjdCB0aGUgbWluaW11bSBDRENMSyBiZWZvcmUgZW5h YmxpbmcgRFBMTCAwICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RMKTsKPiArCXZhbCAm PSB+Q0RDTEtfRlJFUV9TRUxfTUFTSyB8IH5DRENMS19GUkVRX0RFQ0lNQUxfTUFTSzsKPiArCXZh bCB8PSBDRENMS19GUkVRXzMzN18zMDg7Cj4gKwo+ICsJaWYgKHJlcXVpcmVkX3ZjbyA9PSA4NjQw KQo+ICsJCW1pbl9mcmVxID0gMzA4NTcwOwo+ICsJZWxzZQo+ICsJCW1pbl9mcmVxID0gMzM3NTAw Owo+ICsKPiArCXZhbCA9IENEQ0xLX0ZSRVFfMzM3XzMwOCB8IHNrbF9jZGNsa19kZWNpbWFsKG1p bl9mcmVxKTsKPiArCj4gKwlJOTE1X1dSSVRFKENEQ0xLX0NUTCwgdmFsKTsKPiArCVBPU1RJTkdf UkVBRChDRENMS19DVEwpOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBhbHdheXMgZW5hYmxlIERQTEww IHdpdGggdGhlIGxvd2VzdCBsaW5rIHJhdGUgcG9zc2libGUsIGJ1dCBzdGlsbAo+ICsJICogdGFr aW5nIGludG8gYWNjb3VudCB0aGUgVkNPIHJlcXVpcmVkIHRvIG9wZXJhdGUgdGhlIGVEUCBwYW5l bCBhdCB0aGUKPiArCSAqIGRlc2lyZWQgZnJlcXVlbmN5LiBUaGUgdXN1YWwgRFAgbGluayByYXRl cyBvcGVyYXRlIHdpdGggYSBWQ08gb2YKPiArCSAqIDgxMDAgd2hpbGUgdGhlIGVEUCAxLjQgYWx0 ZXJuYXRlIGxpbmsgcmF0ZXMgbmVlZCBhIFZDTyBvZiA4NjQwLgo+ICsJICogVGhlIG1vZGVzZXQg Y29kZSBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHNlbGVjdGlvbiBvZiB0aGUgZXhhY3QgbGluawo+ ICsJICogcmF0ZSBsYXRlciBvbiwgd2l0aCB0aGUgY29uc3RyYWludCBvZiBjaG9vc2luZyBhIGZy ZXF1ZW5jeSB0aGF0Cj4gKwkgKiB3b3JrcyB3aXRoIHJlcXVpcmVkX3Zjby4KPiArCSAqLwo+ICsJ dmFsID0gSTkxNV9SRUFEKERQTExfQ1RSTDEpOwo+ICsKPiArCXZhbCAmPSB+KERQTExfQ1RSTDFf SERNSV9NT0RFKFNLTF9EUExMMCkgfCBEUExMX0NUUkwxX1NTQyhTS0xfRFBMTDApIHwKPiArCQkg RFBMTF9DVFJMMV9MSU5LX1JBVEVfTUFTSyhTS0xfRFBMTDApKTsKPiArCXZhbCB8PSBEUExMX0NU UkwxX09WRVJSSURFKFNLTF9EUExMMCk7Cj4gKwlpZiAocmVxdWlyZWRfdmNvID09IDg2NDApCj4g KwkJdmFsIHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzEwODAs Cj4gKwkJCQkJICAgIFNLTF9EUExMMCk7Cj4gKwllbHNlCj4gKwkJdmFsIHw9IERQTExfQ1RSTDFf TElOS19SQVRFKERQTExfQ1RSTDFfTElOS19SQVRFXzgxMCwKPiArCQkJCQkgICAgU0tMX0RQTEww KTsKPiArCj4gKwlJOTE1X1dSSVRFKERQTExfQ1RSTDEsIHZhbCk7Cj4gKwlQT1NUSU5HX1JFQUQo RFBMTF9DVFJMMSk7Cj4gKwo+ICsJSTkxNV9XUklURShMQ1BMTDFfQ1RMLCBJOTE1X1JFQUQoTENQ TEwxX0NUTCkgfCBMQ1BMTF9QTExfRU5BQkxFKTsKPiArCj4gKwlpZiAod2FpdF9mb3IoSTkxNV9S RUFEKExDUExMMV9DVEwpICYgTENQTExfUExMX0xPQ0ssIDUpKQo+ICsJCURSTV9FUlJPUigiRFBM TDAgbm90IGxvY2tlZFxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyBib29sIHNrbF9jZGNsa19wY3Vf cmVhZHkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpbnQgcmV0 Owo+ICsJdTMyIHZhbDsKPiArCj4gKwkvKiBpbmZvcm0gUENVIHdlIHdhbnQgdG8gY2hhbmdlIENE Q0xLICovCj4gKwl2YWwgPSBTS0xfQ0RDTEtfUFJFUEFSRV9GT1JfQ0hBTkdFOwo+ICsJbXV0ZXhf bG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiArCXJldCA9IHNhbmR5YnJpZGdlX3Bjb2Rl X3JlYWQoZGV2X3ByaXYsIFNLTF9QQ09ERV9DRENMS19DT05UUk9MLCAmdmFsKTsKPiArCW11dGV4 X3VubG9jaygmZGV2X3ByaXYtPnJwcy5od19sb2NrKTsKPiArCj4gKwlyZXR1cm4gcmV0ID09IDAg JiYgKHZhbCAmIFNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdFKTsKPiArfQo+ICsKPiArc3RhdGlj IGJvb2wgc2tsX2NkY2xrX3dhaXRfZm9yX3BjdV9yZWFkeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYpCj4gK3sKPiArCXVuc2lnbmVkIGludCBpOwo+ICsKPiArCWZvciAoaSA9IDA7 IGkgPCAxNTsgaSsrKSB7Cj4gKwkJaWYgKHNrbF9jZGNsa19wY3VfcmVhZHkoZGV2X3ByaXYpKQo+ ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCQl1ZGVsYXkoMTApOwo+ICsJfQo+ICsKPiArCXJldHVybiBm YWxzZTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgc2tsX3NldF9jZGNsayhzdHJ1Y3QgZHJtX2k5 MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2lnbmVkIGludCBmcmVxKQo+ICt7Cj4gKwl1MzIgZnJl cV9zZWxlY3QsIHBjdV9hY2s7Cj4gKwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiQ2hhbmdpbmcgQ0RD TEsgdG8gJWRLSHpcbiIsIGZyZXEpOwo+ICsKPiArCWlmICghc2tsX2NkY2xrX3dhaXRfZm9yX3Bj dV9yZWFkeShkZXZfcHJpdikpIHsKPiArCQlEUk1fRVJST1IoImZhaWxlZCB0byBpbmZvcm0gUENV IGFib3V0IGNkY2xrIGNoYW5nZVxuIik7Cj4gKwkJcmV0dXJuOwo+ICsJfQo+ICsKPiArCS8qIHNl dCBDRENMS19DVEwgKi8KPiArCXN3aXRjaChmcmVxKSB7Cj4gKwljYXNlIDQ1MDAwMDoKPiArCWNh c2UgNDMyMDAwOgo+ICsJCWZyZXFfc2VsZWN0ID0gQ0RDTEtfRlJFUV80NTBfNDMyOwo+ICsJCXBj dV9hY2sgPSAxOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSA1NDAwMDA6Cj4gKwkJZnJlcV9zZWxlY3Qg PSBDRENMS19GUkVRXzU0MDsKPiArCQlwY3VfYWNrID0gMjsKPiArCQlicmVhazsKPiArCWNhc2Ug MzA4NTcwOgo+ICsJY2FzZSAzMzc1MDA6Cj4gKwlkZWZhdWx0Ogo+ICsJCWZyZXFfc2VsZWN0ID0g Q0RDTEtfRlJFUV8zMzdfMzA4Owo+ICsJCXBjdV9hY2sgPSAwOwo+ICsJCWJyZWFrOwo+ICsJY2Fz ZSA2MTcxNDA6Cj4gKwljYXNlIDY3NTAwMDoKPiArCQlmcmVxX3NlbGVjdCA9IENEQ0xLX0ZSRVFf Njc1XzYxNzsKPiArCQlwY3VfYWNrID0gMzsKPiArCQlicmVhazsKPiArCX0KPiArCj4gKwlJOTE1 X1dSSVRFKENEQ0xLX0NUTCwgZnJlcV9zZWxlY3QgfCBza2xfY2RjbGtfZGVjaW1hbChmcmVxKSk7 Cj4gKwlQT1NUSU5HX1JFQUQoQ0RDTEtfQ1RMKTsKPiArCj4gKwkvKiBpbmZvcm0gUENVIG9mIHRo ZSBjaGFuZ2UgKi8KPiArCW11dGV4X2xvY2soJmRldl9wcml2LT5ycHMuaHdfbG9jayk7Cj4gKwlz YW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0ws IHBjdV9hY2spOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xvY2spOwo+ICsK PiArCWRldl9wcml2LT5jZGNsa19mcmVxID0gZnJlcTsKPiArfQo+ICsKPiArdm9pZCBza2xfdW5p bml0X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJLyog ZGlzYWJsZSBEQlVGIHBvd2VyICovCj4gKwlJOTE1X1dSSVRFKERCVUZfQ1RMLCBJOTE1X1JFQUQo REJVRl9DVEwpICYgfkRCVUZfUE9XRVJfUkVRVUVTVCk7Cj4gKwlQT1NUSU5HX1JFQUQoREJVRl9D VEwpOwo+ICsKPiArCXVkZWxheSgxMCk7Cj4gKwo+ICsJaWYgKEk5MTVfUkVBRChEQlVGX0NUTCkg JiBEQlVGX1BPV0VSX1NUQVRFKQo+ICsJCURSTV9FUlJPUigiREJ1ZiBwb3dlciBkaXNhYmxlIHRp bWVvdXRcbiIpOwo+ICsKPiArCS8qIGRpc2FibGUgRFBMTDAgKi8KPiArCUk5MTVfV1JJVEUoTENQ TEwxX0NUTCwgSTkxNV9SRUFEKExDUExMMV9DVEwpICYgfkxDUExMX1BMTF9FTkFCTEUpOwo+ICsJ aWYgKHdhaXRfZm9yKCEoSTkxNV9SRUFEKExDUExMMV9DVEwpICYgTENQTExfUExMX0xPQ0spLCAx KSkKPiArCQlEUk1fRVJST1IoIkNvdWxkbid0IGRpc2FibGUgRFBMTDBcbiIpOwo+ICsKPiArCWlu dGVsX2Rpc3BsYXlfcG93ZXJfcHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gK30K PiArCj4gK3ZvaWQgc2tsX2luaXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQo+ICt7Cj4gKwl1MzIgdmFsOwo+ICsJdW5zaWduZWQgaW50IHJlcXVpcmVkX3ZjbzsKPiAr Cj4gKwkvKiBlbmFibGUgUENIIHJlc2V0IGhhbmRzaGFrZSAqLwo+ICsJdmFsID0gSTkxNV9SRUFE KEhTV19OREVfUlNUV1JOX09QVCk7Cj4gKwlJOTE1X1dSSVRFKEhTV19OREVfUlNUV1JOX09QVCwg dmFsIHwgUkVTRVRfUENIX0hBTkRTSEFLRV9FTkFCTEUpOwo+ICsKPiArCS8qIGVuYWJsZSBQRzEg YW5kIE1pc2MgSS9PICovCj4gKwlpbnRlbF9kaXNwbGF5X3Bvd2VyX2dldChkZXZfcHJpdiwgUE9X RVJfRE9NQUlOX1BMTFMpOwo+ICsKPiArCS8qIERQTEwwIGFscmVhZHkgZW5hYmVkICE/ICovCj4g KwlpZiAoSTkxNV9SRUFEKExDUExMMV9DVEwpICYgTENQTExfUExMX0VOQUJMRSkgewo+ICsJCURS TV9ERUJVR19EUklWRVIoIkRQTEwwIGFscmVhZHkgcnVubmluZ1xuIik7Cj4gKwkJcmV0dXJuOwo+ ICsJfQo+ICsKPiArCS8qIGVuYWJsZSBEUExMMCAqLwo+ICsJcmVxdWlyZWRfdmNvID0gc2tsX2Nk Y2xrX2dldF92Y28oZGV2X3ByaXYtPmNkY2xrX2ZyZXEpOwo+ICsJc2tsX2RwbGwwX2VuYWJsZShk ZXZfcHJpdiwgcmVxdWlyZWRfdmNvKTsKPiArCj4gKwkvKiBzZXQgQ0RDTEsgdG8gdGhlIGZyZXF1 ZW5jeSB0aGUgQklPUyBjaG9zZSAqLwo+ICsJc2tsX3NldF9jZGNsayhkZXZfcHJpdiwgZGV2X3By aXYtPmNkY2xrX2ZyZXEpOwo+ICsKPiArCS8qIGVuYWJsZSBEQlVGIHBvd2VyICovCj4gKwlJOTE1 X1dSSVRFKERCVUZfQ1RMLCBJOTE1X1JFQUQoREJVRl9DVEwpIHwgREJVRl9QT1dFUl9SRVFVRVNU KTsKPiArCVBPU1RJTkdfUkVBRChEQlVGX0NUTCk7Cj4gKwo+ICsJdWRlbGF5KDEwKTsKPiArCj4g KwlpZiAoIShJOTE1X1JFQUQoREJVRl9DVEwpICYgREJVRl9QT1dFUl9TVEFURSkpCj4gKwkJRFJN X0VSUk9SKCJEQnVmIHBvd2VyIGVuYWJsZSB0aW1lb3V0XG4iKTsKPiArfQo+ICsKPiAgLyogcmV0 dXJucyBIUExMIGZyZXF1ZW5jeSBpbiBrSHogKi8KPiAgc3RhdGljIGludCB2YWxsZXl2aWV3X2dl dF92Y28oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0N2JjNzI5Li40NjQwZmI2IDEwMDY0NAo+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTExNyw2ICsxMTE3LDggQEAgdm9pZCBicm94dG9uX2RkaV9w aHlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBicm94dG9uX2RkaV9waHlf dW5pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGJ4dF9lbmFibGVfZGM5KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgYnh0X2Rpc2FibGVfZGM5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgc2tsX2luaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBza2xfdW5pbml0 X2NkY2xrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgaW50ZWxf ZHBfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKPiAgCQkgICAgICBzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpOwo+ICB2b2lkIGludGVsX2RwX3NldF9tX24oc3Ry dWN0IGludGVsX2NydGMgKmNydGMsIGVudW0gbGlua19tX25fc2V0IG1fbik7Cj4gLS0gCj4gMi4x LjAKPiAKPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+ IEludGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cj4gaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdm eAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngK