From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 6/8] drm/i915/skl: Deinit/init the display at suspend/resume Date: Tue, 5 May 2015 21:56:02 +0300 Message-ID: <20150505185602.GN18908@intel.com> References: <1430408363-20905-1-git-send-email-damien.lespiau@intel.com> <1430408363-20905-7-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 mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 24CEA6E594 for ; Tue, 5 May 2015 11:56:13 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1430408363-20905-7-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 T24gVGh1LCBBcHIgMzAsIDIwMTUgYXQgMDQ6Mzk6MjFQTSArMDEwMCwgRGFtaWVuIExlc3BpYXUg d3JvdGU6Cj4gV2UgbmVlZCB0byByZS1pbml0IHRoZSBkaXNwbGF5IGhhcmR3YXJlIHdoZW4gZ29p bmcgb3V0IG9mIHN1c3BlbmQuIFRoaXMKPiBpbmNsdWRlczoKPiAKPiAgIC0gSG9va2luZyB0aGUg UENIIHRvIHRoZSByZXNldCBsb2dpYwo+ICAgLSBSZXN0b3JpbmcgQ0RDRExLCj4gICAtIEVuYWJs aW5nIHRoZSBEREIgcG93ZXIKPiAKPiBBbW9uZyB0aG9zZSwgb25seSB0aGUgQ0RDRExLIG9uZSBp cyBhIGJpdCB0cmlja3kuIFRoZXJlJ3Mgc29tZQo+IGNvbXBsZXhpdHkgaW4gdGhhdDoKPiAKPiAg IC0gRFBMTDAgKHdoaWNoIGlzIHRoZSBzb3VyY2UgZm9yIENEQ0xLKSBoYXMgdHdvIFZDT3MsIGVh Y2ggd2l0aCBhIHNldAo+ICAgICBvZiBzdXBwb3J0ZWQgZnJlcXVlbmNpZXMuIEFzIGVEUCBhbHNv IHVzZXMgRFBMTDAgZm9yIGl0cyBsaW5rIHJhdGUsCj4gICAgIG9uY2UgRFBMTDAgaXMgb24sIHdl IHJlc3RyaWN0IHRoZSBwb3NzaWJsZSBlRFAgbGluayByYXRlcyB0aGUgY2hvc2VuCj4gICAgIFZD Ty4KPiAgIC0gQ0RDTEsgYWxzbyBsaW1pdHMgdGhlIGJhbmR3aWR0aCBhdmFpbGFibGUgdG8gcHVz aCBwaXhlbHMuCj4gICAtIE15IGN1cnJlbnQgUENVIGZpcm13YXJlIG5ldmVyIGFjayB0aGUgZnJl cXVlbmN5IGNoYW5nZSByZXF1ZXN0Cj4gCj4gU28sIGFzIGEgZmlyc3Qgc3RlcCwgdGhpcyBjb21t aXQgcmVzdG9yZSB3aGF0IHRoZSBCSU9TIHNldCwgdW50aWwgSSBjYW4KPiBkbyBtb3JlIHRlc3Rp bmcuCj4gCj4gLS0tLQo+IEluIGNhc2UgdGhhdCdzIG9mIGludGVyZXN0IGZvciB0aGUgcmV2aWV3 ZXIsIEkndmUgdW5pdCB0ZXN0ZWQgdGhlCj4gZnVuY3Rpb24gdGhhdCBkZXJpdmVzIHRoZSBkZWNp bWFsIGZyZXF1ZW5jeSBmaWVsZDoKPiAKPiAgICNpbmNsdWRlIDxzdGRpby5oPgo+ICAgI2luY2x1 ZGUgPHN0ZGludC5oPgo+ICAgI2luY2x1ZGUgPGFzc2VydC5oPgo+IAo+ICAgI2RlZmluZSBBUlJB WV9TSVpFKHgpIChzaXplb2YoeCkgLyBzaXplb2YoKih4KSkpCj4gCj4gICBzdGF0aWMgY29uc3Qg c3RydWN0IGRwbGxfZnJlcSB7Cj4gICAgICAgICAgIHVuc2lnbmVkIGludCBmcmVxOwo+ICAgICAg ICAgICB1bnNpZ25lZCBpbnQgZGVjaW1hbDsKPiAgIH0gZnJlcXNbXSA9IHsKPiAgICAgICAgICAg eyAuZnJlcSA9IDMwODU3MCwgLmRlY2ltYWwgPSAwYjAxMDAxMTAwMTExfSwKPiAgICAgICAgICAg eyAuZnJlcSA9IDMzNzUwMCwgLmRlY2ltYWwgPSAwYjAxMDEwMTAwMDAxfSwKPiAgICAgICAgICAg eyAuZnJlcSA9IDQzMjAwMCwgLmRlY2ltYWwgPSAwYjAxMTAxMDExMTEwfSwKPiAgICAgICAgICAg eyAuZnJlcSA9IDQ1MDAwMCwgLmRlY2ltYWwgPSAwYjAxMTEwMDAwMDEwfSwKPiAgICAgICAgICAg eyAuZnJlcSA9IDU0MDAwMCwgLmRlY2ltYWwgPSAwYjEwMDAwMTEwMTEwfSwKPiAgICAgICAgICAg eyAuZnJlcSA9IDYxNzE0MCwgLmRlY2ltYWwgPSAwYjEwMDExMDEwMDAwfSwKPiAgICAgICAgICAg eyAuZnJlcSA9IDY3NTAwMCwgLmRlY2ltYWwgPSAwYjEwMTAxMDAwMTAwfSwKPiAgIH07Cj4gCj4g ICBzdGF0aWMgdm9pZCBpbnRiaXRzKHVuc2lnbmVkIGludCB2KQo+ICAgewo+ICAgICAgICAgICBp bnQgaTsKPiAKPiAgICAgICAgICAgZm9yKGkgPSAxMDsgaSA+PSAwOyBpLS0pCj4gICAgICAgICAg ICAgICAgICAgcHV0Y2hhcignMCcgKyAoKHYgPj4gaSkgJiAxKSk7Cj4gICB9Cj4gCj4gICBzdGF0 aWMgdW5zaWduZWQgaW50IGZyZXFfZGVjaW1hbCh1bnNpZ25lZCBpbnQgZnJlcSAvKiBpbiBrSHog Ki8pCj4gICB7Cj4gICAgICAgICAgIHVuc2lnbmVkIGludCBtaHosIGRvdDU7Cj4gCj4gICAgICAg ICAgIG1oeiA9IGZyZXEgLyAxMDAwOwo+ICAgICAgICAgICBkb3Q1ID0gKGZyZXEgLSBtaHogKiAx MDAwKSA+PSA1MDA7Cj4gCj4gICAgICAgICAgIHJldHVybiAobWh6IC0gMSkgPDwgMSB8IGRvdDU7 Cj4gICB9Cj4gCj4gICBzdGF0aWMgdm9pZCB0ZXN0X2ZyZXEoY29uc3Qgc3RydWN0IGRwbGxfZnJl cSAqZW50cnkpCj4gICB7Cj4gICAgICAgICAgIHVuc2lnbmVkIGludCBkZWNpbWFsID0gZnJlcV9k ZWNpbWFsKGVudHJ5LT5mcmVxKTsKPiAKPiAgICAgICAgICAgcHJpbnRmKCJmcmVxOiAlZCwgZXhw ZWN0ZWQ6ICIsIGVudHJ5LT5mcmVxKTsKPiAgICAgICAgICAgaW50Yml0cyhlbnRyeS0+ZGVjaW1h bCk7Cj4gICAgICAgICAgIHByaW50ZigiLCBnb3Q6ICIpOwo+ICAgICAgICAgICBpbnRiaXRzKGRl Y2ltYWwpOwo+ICAgICAgICAgICBwdXRjaGFyKCdcbicpOwo+IAo+ICAgICAgICAgICBhc3NlcnQo ZGVjaW1hbCA9PSBlbnRyeS0+ZGVjaW1hbCk7Cj4gICB9Cj4gCj4gICBpbnQgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCj4gICB7Cj4gICAgICAgICAgIGludCBpOwo+IAo+ICAgICAgICAgICBm b3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmcmVxcyk7IGkrKykKPiAgICAgICAgICAgICAgICAg ICB0ZXN0X2ZyZXEoJmZyZXFzW2ldKTsKPiAKPiAgICAgICAgICAgcmV0dXJuIDA7Cj4gICB9Cj4g Cj4gU2lnbmVkLW9mZi1ieTogRGFtaWVuIExlc3BpYXUgPGRhbWllbi5sZXNwaWF1QGludGVsLmNv bT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgIDI2ICsr KystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMSArCj4gIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2RkaS5jICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyB8IDIwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Kwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDIgKwo+ICA2IGZp bGVzIGNoYW5nZWQsIDI0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuYwo+IGluZGV4IGU3MGFkZmQuLjU4ZGIwYzYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMKPiBAQCAtNTc0LDYgKzU3NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3N1 c3BlbmRfZW5jb2RlcnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBzdGF0 aWMgaW50IGludGVsX3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2KTsKPiAgc3RhdGljIGludCB2bHZfcmVzdW1lX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCQkgICAgICBib29sIHJwbV9yZXN1bWUpOwo+ICtzdGF0 aWMgaW50IHNrbF9yZXN1bWVfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYpOwo+ICAKPiAgc3RhdGljIGludCBpOTE1X2RybV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYpCj4gIHsKPiBAQCAtNzgxLDYgKzc4Miw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fcmVz dW1lX2Vhcmx5KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaWYgKElTX1ZBTExFWVZJ RVcoZGV2X3ByaXYpKQo+ICAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdiwgZmFs c2UpOwo+ICsJZWxzZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpCj4gKwkJcmV0ID0gc2tsX3Jl c3VtZV9wcmVwYXJlKGRldl9wcml2KTsKPiArCj4gIAlpZiAocmV0KQo+ICAJCURSTV9FUlJPUigi UmVzdW1lIHByZXBhcmUgZmFpbGVkOiAlZCxDb250aW51aW5nIHJlc3VtZVxuIiwgcmV0KTsKPiAg Cj4gQEAgLTEwMDksNiArMTAxMywyMCBAQCBzdGF0aWMgaW50IGhzd19zdXNwZW5kX2NvbXBsZXRl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXJldHVybiAwOwo+ICB9Cj4g IAo+ICtzdGF0aWMgaW50IHNrbF9zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdikKPiArewo+ICsJc2tsX2Rpc3BsYXlfc3VzcGVuZChkZXZfcHJpdik7Cj4g Kwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2tsX3Jlc3VtZV9wcmVwYXJl KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc2tsX2Rpc3BsYXlf cmVzdW1lKGRldl9wcml2KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGlu dCBieHRfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp Cj4gIHsKPiAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IEBAIC0x NTAwLDcgKzE1MTgsOSBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldmljZSkKPiAgCWlmIChJU19HRU42KGRldl9wcml2KSkKPiAgCQlpbnRlbF9pbml0 X3BjaF9yZWZjbGsoZGV2KTsKPiAgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICsJaWYgKElT X1NLWUxBS0UoZGV2KSkKPiArCQlyZXQgPSBza2xfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYpOwo+ ICsJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAJCXJldCA9IGJ4dF9yZXN1bWVfcHJlcGFy ZShkZXZfcHJpdik7Cj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9B RFdFTEwoZGV2X3ByaXYpKQo+ICAJCWhzd19kaXNhYmxlX3BjOChkZXZfcHJpdik7Cj4gQEAgLTE1 MzQsNyArMTU1NCw5IEBAIHN0YXRpYyBpbnQgaW50ZWxfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g ZGV2X3ByaXYtPmRldjsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKElTX0JST1hUT04oZGV2KSkK PiArCWlmIChJU19TS1lMQUtFKGRldikpCj4gKwkJcmV0ID0gc2tsX3N1c3BlbmRfY29tcGxldGUo ZGV2X3ByaXYpOwo+ICsJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAJCXJldCA9IGJ4dF9z dXNwZW5kX2NvbXBsZXRlKGRldl9wcml2KTsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8 fCBJU19CUk9BRFdFTEwoZGV2KSkKPiAgCQlyZXQgPSBoc3dfc3VzcGVuZF9jb21wbGV0ZShkZXZf cHJpdik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggOTA4YzEyNC4uZjYzNzY2NyAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNjU5LDYgKzE2NTksNyBAQCBzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSB7Cj4gIAlpbnQgbnVtX2ZlbmNlX3JlZ3M7IC8qIDggb24gcHJl LTk2NSwgMTYgb3RoZXJ3aXNlICovCj4gIAo+ICAJdW5zaWduZWQgaW50IGZzYl9mcmVxLCBtZW1f ZnJlcSwgaXNfZGRyMzsKPiArCXVuc2lnbmVkIGludCBza2xfYm9vdF9jZGNsazsKPiAgCXVuc2ln bmVkIGludCBjZGNsa19mcmVxOwo+ICAJdW5zaWduZWQgaW50IGhwbGxfZnJlcTsKPiAgCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3JlZy5oCj4gaW5kZXggNmQ0MjhhNS4uNGIwNjNhOCAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9yZWcuaAo+IEBAIC02NjQ3LDYgKzY2NDcsOSBAQCBlbnVtIHNrbF9kaXNwX3Bv d2VyX3dlbGxzIHsKPiAgI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF8xXzVfU0hJ RlQJOAo+ICAjZGVmaW5lICAgICBHRU45X01FTV9MQVRFTkNZX0xFVkVMXzJfNl9TSElGVAkxNgo+ ICAjZGVmaW5lICAgICBHRU45X01FTV9MQVRFTkNZX0xFVkVMXzNfN19TSElGVAkyNAo+ICsjZGVm aW5lICAgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wJCTB4Nwo+ICsjZGVmaW5lICAgICBTS0xfQ0RD TEtfUFJFUEFSRV9GT1JfQ0hBTkdFCTB4Mwo+ICsjZGVmaW5lICAgICBTS0xfQ0RDTEtfUkVBRFlf Rk9SX0NIQU5HRQkJMHgxCj4gICNkZWZpbmUgICBHRU42X1BDT0RFX1dSSVRFX01JTl9GUkVRX1RB QkxFCTB4OAo+ICAjZGVmaW5lICAgR0VONl9QQ09ERV9SRUFEX01JTl9GUkVRX1RBQkxFCTB4OQo+ ICAjZGVmaW5lICAgR0VONl9SRUFEX09DX1BBUkFNUwkJCTB4Ywo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gaW5kZXggZDViZWU4Yi4uZjc2YmNkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2RkaS5jCj4gQEAgLTI0ODEsNiArMjQ4MSw4IEBAIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAlpZiAoSVNfU0tZTEFLRShkZXYpKSB7Cj4gIAkJaWYg KCEoSTkxNV9SRUFEKExDUExMMV9DVEwpICYgTENQTExfUExMX0VOQUJMRSkpCj4gIAkJCURSTV9F UlJPUigiTENQTEwxIGlzIGRpc2FibGVkXG4iKTsKPiArCQllbHNlCj4gKwkJCWludGVsX2Rpc3Bs YXlfcG93ZXJfZ2V0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gIAl9IGVsc2UgaWYg KElTX0JST1hUT04oZGV2KSkgewo+ICAJCWJyb3h0b25faW5pdF9jZGNsayhkZXYpOwo+ICAJCWJy b3h0b25fZGRpX3BoeV9pbml0KGRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+IGluZGV4IGYyZjRhZDUuLjljODMzOGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gQEAgLTU0MjAsNiArNTQyMCwyMTMgQEAgdm9pZCBicm94dG9uX3VuaW5pdF9j ZGNsayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQo ZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExTKTsKPiAgfQo+ICAKPiArLyoKPiArICogRm9yIG5v dywgd2Ugc3RvcmUgdGhlIENEQ0xLIGZyZXF1ZW5jeSBzZXQgYnkgdGhlIEJJT1MgYW5kIHJlc3Rv cmUgaXQgYXQKPiArICogcmVzdW1lLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgc2tsX2luaXRfY2Rj bGsoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpZiAoIUlTX1NL WUxBS0UoZGV2X3ByaXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlkZXZfcHJpdi0+c2tsX2Jvb3Rf Y2RjbGsgPQo+ICsJCWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRl dl9wcml2LT5kZXYpOwo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIkNEQ0xLOiAlZCBrSHpcbiIs IGRldl9wcml2LT5za2xfYm9vdF9jZGNsayk7Cj4gK30KClRoZSBuYW1pbmcgaXMgYSBiaXQgY29u ZnVzaW5nIHdydC4gYnh0IG5vdy4KClNvIGl0IGxvb2tzIGxpa2UgYnJveHRvbl9pbml0X2NkY2xr KCkgPT0gc2tsX2Rpc3BsYXlfcmVzdW1lKCksCmFuZCBza2xfaW5pdF9jZGNsaygpIGp1c3QgcmVh ZHMgb3V0IHRoZSBjdXJyZW50IHNldHRpbmcgYW5kIHN0YXNoZXMgaXQKc29tZXdoZXJlLCBhbmQg dGhlcmUncyBubyBjb3VudGVycGFydCBmb3IgdGhhdCBvbiBieHQuIFdvdWxkIGJlIG5pY2UgdG8K dW5pZnkgYSBiaXQgdG8gYXZvaWQgbG9hZHMgb2YgY29uZnVzaW9uLgoKPiArCj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgc2tsX2NkY2xrX2VudHJ5IHsKPiArCXVuc2lnbmVkIGludCBmcmVxOwo+ICsJ dW5zaWduZWQgaW50IHZjbzsKPiArfSBza2xfY2RjbGtfZnJlcXVlbmNpZXNbXSA9IHsKPiArCXsg LmZyZXEgPSAzMDg1NzAsIC52Y28gPSA4NjQwIH0sCj4gKwl7IC5mcmVxID0gMzM3NTAwLCAudmNv ID0gODEwMCB9LAo+ICsJeyAuZnJlcSA9IDQzMjAwMCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZy ZXEgPSA0NTAwMDAsIC52Y28gPSA4MTAwIH0sCj4gKwl7IC5mcmVxID0gNTQwMDAwLCAudmNvID0g ODEwMCB9LAo+ICsJeyAuZnJlcSA9IDYxNzE0MCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZyZXEg PSA2NzUwMDAsIC52Y28gPSA4MTAwIH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50 IHNrbF9jZGNsa19nZXRfdmNvKHVuc2lnbmVkIGludCBmcmVxKQo+ICt7Cj4gKwl1bnNpZ25lZCBp bnQgaTsKPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShza2xfY2RjbGtfZnJlcXVl bmNpZXMpOyBpKyspIHsKPiArCQljb25zdCBzdHJ1Y3Qgc2tsX2NkY2xrX2VudHJ5ICplID0gJnNr bF9jZGNsa19mcmVxdWVuY2llc1tpXTsKPiArCj4gKwkJaWYgKGUtPmZyZXEgPT0gZnJlcSkKPiAr CQkJcmV0dXJuIGUtPnZjbzsKPiArCX0KPiArCj4gKwlyZXR1cm4gODEwMDsKPiArfQo+ICsKPiAr c3RhdGljIHVuc2lnbmVkIGludCBza2xfY2RsY2tfZGVjaW1hbCh1bnNpZ25lZCBpbnQgZnJlcSkK PiArewo+ICsgICAgICAgIHVuc2lnbmVkIGludCBtaHosIGRvdDU7Cj4gKwo+ICsgICAgICAgIG1o eiA9IGZyZXEgLyAxMDAwOwo+ICsgICAgICAgIGRvdDUgPSAoZnJlcSAtIG1oeiAqIDEwMDApID49 IDUwMDsKPiArCj4gKyAgICAgICAgcmV0dXJuIChtaHogLSAxKSA8PCAxIHwgZG90NTsKPiArfQoK SnVzdCAnKGZyZXEgLSAxMDAwKSAvIDUwMCcgbGlrZSB3ZSBkbyBmb3IgYnh0PwoKPiArCj4gK3N0 YXRpYyB2b2lkCj4gK3NrbF9kcGxsMF9lbmFibGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LCB1bnNpZ25lZCBpbnQgcmVxdWlyZWRfdmNvKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQg bWluX2ZyZXE7Cj4gKwl1MzIgdmFsOwo+ICsKPiArCS8qIHNlbGVjdCB0aGUgbWluaW11bSBDRENM SyBiZWZvcmUgZW5hYmxpbmcgRFBMTCAwICovCj4gKwl2YWwgPSBJOTE1X1JFQUQoQ0RDTEtfQ1RM KTsKPiArCXZhbCAmPSB+Q0RDTEtfRlJFUV9TRUxfTUFTSyB8IH5DRENMS19GUkVRX0RFQ0lNQUxf TUFTSzsKPiArCXZhbCB8PSBDRENMS19GUkVRXzMzN18zMDg7Cj4gKwo+ICsJaWYgKHJlcXVpcmVk X3ZjbyA9PSA4NjQwKQo+ICsJCW1pbl9mcmVxID0gMzA4NTcwOwo+ICsJZWxzZQo+ICsJCW1pbl9m cmVxID0gMzM3NTAwOwo+ICsKPiArCXZhbCA9IENEQ0xLX0ZSRVFfMzM3XzMwOCB8IHNrbF9jZGxj a19kZWNpbWFsKG1pbl9mcmVxKTsKPiArCj4gKwlJOTE1X1dSSVRFKENEQ0xLX0NUTCwgdmFsKTsK PiArCVBPU1RJTkdfUkVBRChDRENMS19DVEwpOwo+ICsKPiArCS8qCj4gKwkgKiBXZSBhbHdheXMg ZW5hYmxlIERQTEwwIHdpdGggdGhlIGxvd2VzdCBsaW5rIHJhdGUgcG9zc2libGUsIGJ1dCBzdGls bAo+ICsJICogdGFraW5nIGludG8gYWNjb3VudCB0aGUgVkNPIHJlcXVpcmVkIHRvIG9wZXJhdGUg dGhlIGVEUCBwYW5lbCBhdCB0aGUKPiArCSAqIGRlc2lyZWQgZnJlcXVlbmN5LiBUaGUgdXN1YWwg RFAgbGluayByYXRlcyBvcGVyYXRlIHdpdGggYSBWQ08gb2YKPiArCSAqIDgxMDAgd2hpbGUgdGhl IGVEUCAxLjQgYWx0ZXJuYXRlIGxpbmsgcmF0ZXMgbmVlZCBhIFZDTyBvZiA4NjQwLgo+ICsJICog VGhlIG1vZGVzZXQgY29kZSBpcyByZXNwb25zaWJsZSBmb3IgdGhlIHNlbGVjdGlvbiBvZiB0aGUg ZXhhY3QgbGluawo+ICsJICogcmF0ZSBsYXRlciBvbiwgd2l0aCB0aGUgY29uc3RyYWludCBvZiBj aG9vc2luZyBhIGZyZXF1ZW5jeSB0aGF0Cj4gKwkgKiB3b3JrcyB3aXRoIHJlcXVpcmVkX3Zjby4K PiArCSAqLwo+ICsJdmFsID0gSTkxNV9SRUFEKERQTExfQ1RSTDEpOwo+ICsKPiArCXZhbCAmPSB+ KERQTExfQ1RSTDFfSERNSV9NT0RFKDApIHwgRFBMTF9DVFJMMV9TU0MoMCkgfAo+ICsJCSBEUExM X0NUUkwxX0xJTktfUkFURV9NQVNLKDApKTsKPiArCXZhbCB8PSBEUExMX0NUUkwxX09WRVJSSURF KDApOwo+ICsJaWYgKHJlcXVpcmVkX3ZjbyA9PSA4NjQwKQo+ICsJCXZhbCB8PSBEUExMX0NUUkwx X0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV8xMDgwLCAwKTsKPiArCWVsc2UKPiArCQl2 YWwgfD0gRFBMTF9DVFJMMV9MSU5LX1JBVEUoRFBMTF9DVFJMMV9MSU5LX1JBVEVfODEwLCAwKTsK CkhtbS4gVGhlc2UgbmV3IHBsbCByZWdpc3RlcnMgYXJlIHZlcnkgY29uZnVzaW5nLiBCdXQgbG9v a3MgY29ycmVjdApiYXNlZCBvbiBteSB1bmRlcnN0YW5kaW5nLgoKPiArCj4gKwlJOTE1X1dSSVRF KERQTExfQ1RSTDEsIHZhbCk7Cj4gKwlQT1NUSU5HX1JFQUQoRFBMTF9DVFJMMSk7Cj4gKwo+ICsJ STkxNV9XUklURShMQ1BMTDFfQ1RMLCBJOTE1X1JFQUQoTENQTEwxX0NUTCkgfCBMQ1BMTF9QTExf RU5BQkxFKTsKPiArCj4gKwlpZiAod2FpdF9mb3IoSTkxNV9SRUFEKExDUExMMV9DVEwpICYgKDEg PDwgMzApLCA1KSkKCkxDUExMX1BMTF9MT0NLCgo+ICsJCURSTV9FUlJPUigiRFBMTDAgbm90IGxv Y2tlZFxuIik7Cj4gK30KPiArCj4gK3N0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LCB1bnNpZ25lZCBpbnQgZnJlcSkKPiArewo+ICsJaW50 IHJldDsKPiArCXUzMiB2YWwsIGZyZXFfc2VsZWN0LCBmcmVxX2RlY2ltYWwsIHBjdV9hY2s7Cj4g Kwo+ICsJRFJNX0RFQlVHX0RSSVZFUigiQ2hhbmdpbmcgQ0RDTEsgdG8gJWRLSHpcbiIsIGZyZXEp Owo+ICsKPiArCS8qIGluZm9ybSBQQ1Ugd2Ugd2FudCB0byBjaGFuZ2UgQ0RDTEsgKi8KPiArCXZh bCA9IFNLTF9DRENMS19QUkVQQVJFX0ZPUl9DSEFOR0U7Cj4gKwltdXRleF9sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOwo+ICsJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJp diwgU0tMX1BDT0RFX0NEQ0xLX0NPTlRST0wsICZ2YWwpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZf cHJpdi0+cnBzLmh3X2xvY2spOwo+ICsJaWYgKHJldCB8fCAhKHZhbCAmIFNLTF9DRENMS19SRUFE WV9GT1JfQ0hBTkdFKSkgewo+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJv dXQgY2RjbGsgY2hhbmdlXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9CgpTcGVjIHNheXMgd2Ugc2hv dWxkIGtlZXAgcmVwZWF0aW5nIHRoaXMgdW50aWwgd2UgZ2V0IHRoZQpTS0xfQ0RDTEtfUkVBRFlf Rk9SX0NIQU5HRSBiaXQgb3IgMTUwdXMgdGltZW91dCBoYXMgcGFzc2VkLiBUaGUgY29kZQpob3dl dmVyIHdpbGwgb25seSBkbyBpdCBvbmNlLgoKPiArCj4gKwkvKiBzZXQgQ0RDTEtfQ1RMICovCj4g Kwlzd2l0Y2goZnJlcSkgewo+ICsJY2FzZSA0NTAwMDA6Cj4gKwljYXNlIDQzMjAwMDoKPiArCQlm cmVxX3NlbGVjdCA9IENEQ0xLX0ZSRVFfNDUwXzQzMjsKPiArCQlwY3VfYWNrID0gMTsKPiArCQli cmVhazsKPiArCWNhc2UgNTQwMDAwOgo+ICsJCWZyZXFfc2VsZWN0ID0gQ0RDTEtfRlJFUV81NDA7 Cj4gKwkJcGN1X2FjayA9IDI7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDMwODU3MDoKPiArCWNhc2Ug MzM3NTAwOgo+ICsJZGVmYXVsdDoKPiArCQlmcmVxX3NlbGVjdCA9IENEQ0xLX0ZSRVFfMzM3XzMw ODsKPiArCQlwY3VfYWNrID0gMDsKPiArCQlicmVhazsKPiArCWNhc2UgNjE3MTQwOgo+ICsJY2Fz ZSA2NzUwMDA6Cj4gKwkJZnJlcV9zZWxlY3QgPSBDRENMS19GUkVRXzY3NV82MTc7Cj4gKwkJcGN1 X2FjayA9IDM7Cj4gKwkJYnJlYWs7Cj4gKwl9Cj4gKwo+ICsJZnJlcV9kZWNpbWFsID0gc2tsX2Nk bGNrX2RlY2ltYWwoZnJlcSk7Cj4gKwo+ICsJSTkxNV9XUklURShDRENMS19DVEwsIGZyZXFfc2Vs ZWN0IHwgZnJlcV9kZWNpbWFsKTsKPiArCVBPU1RJTkdfUkVBRChDRENMS19DVEwpOwo+ICsKPiAr CS8qIGluZm9ybSBQQ1Ugb2YgdGhlIGNoYW5nZSAqLwo+ICsJbXV0ZXhfbG9jaygmZGV2X3ByaXYt PnJwcy5od19sb2NrKTsKPiArCXNhbmR5YnJpZGdlX3Bjb2RlX3dyaXRlKGRldl9wcml2LCBTS0xf UENPREVfQ0RDTEtfQ09OVFJPTCwgcGN1X2Fjayk7Cj4gKwltdXRleF91bmxvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7Cj4gK30KPiArCj4gK3ZvaWQgc2tsX2Rpc3BsYXlfc3VzcGVuZChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gK3sKPiArCS8qIGRpc2FibGUgREJVRiBw b3dlciAqLwo+ICsJSTkxNV9XUklURShEQlVGX0NUTCwgSTkxNV9SRUFEKERCVUZfQ1RMKSAmIH5E QlVGX1BPV0VSX1JFUVVFU1QpOwo+ICsJUE9TVElOR19SRUFEKERCVUZfQ1RMKTsKPiArCj4gKwl1 ZGVsYXkoMTApOwo+ICsKPiArCWlmIChJOTE1X1JFQUQoREJVRl9DVEwpICYgREJVRl9QT1dFUl9T VEFURSkKPiArCQlEUk1fRVJST1IoIkRCdWYgcG93ZXIgZGlzYWJsZSB0aW1lb3V0XG4iKTsKPiAr Cj4gKwkvKiBkaXNhYmxlIERQTEwwICovCj4gKwlJOTE1X1dSSVRFKExDUExMMV9DVEwsIEk5MTVf UkVBRChMQ1BMTDFfQ1RMKSAmIH5MQ1BMTF9QTExfRU5BQkxFKTsKPiArCWlmICh3YWl0X2Zvcigh KEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSAmICgxIDw8IDMwKSksIDEpKQoKTENQTExfUExMX0xPQ0sK Cj4gKwkJRFJNX0VSUk9SKCJDb3VsZG4ndCBkaXNhYmxlIERQTEwwXG4iKTsKPiArCj4gKwlpbnRl bF9kaXNwbGF5X3Bvd2VyX3B1dChkZXZfcHJpdiwgUE9XRVJfRE9NQUlOX1BMTFMpOwo+ICt9Cj4g Kwo+ICt2b2lkIHNrbF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCj4gK3sKPiArCXUzMiB2YWw7Cj4gKwl1bnNpZ25lZCBpbnQgcmVxdWlyZWRfdmNvOwo+ ICsKPiArCS8qIGVuYWJsZSBQQ0ggcmVzZXQgaGFuZHNoYWtlICovCj4gKwl2YWwgPSBJOTE1X1JF QUQoSFNXX05ERV9SU1RXUk5fT1BUKTsKPiArCUk5MTVfV1JJVEUoSFNXX05ERV9SU1RXUk5fT1BU LCB2YWwgJiBSRVNFVF9QQ0hfSEFORFNIQUtFX0VOQUJMRSk7CgpzLyYvfC8KCj4gKwo+ICsJLyog ZW5hYmxlIFBHMSBhbmQgTWlzYyBJL08gKi8KPiArCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0KGRl dl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gKwo+ICsJLyogRFBMTDAgYWxyZWFkeSBlbmFi ZWQgIT8gKi8KPiArCWlmIChJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiBMQ1BMTF9QTExfRU5BQkxF KSB7Cj4gKwkJRFJNX0RFQlVHX0RSSVZFUigiRFBMTDAgYWxyZWFkeSBydW5uaW5nXG4iKTsKPiAr CQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogZW5hYmxlIERQTEwwICovCj4gKwlyZXF1aXJlZF92 Y28gPSBza2xfY2RjbGtfZ2V0X3ZjbyhkZXZfcHJpdi0+c2tsX2Jvb3RfY2RjbGspOwo+ICsJc2ts X2RwbGwwX2VuYWJsZShkZXZfcHJpdiwgcmVxdWlyZWRfdmNvKTsKPiArCj4gKwkvKiBzZXQgQ0RD TEsgdG8gdGhlIGZyZXF1ZW5jeSB0aGUgQklPUyBjaG9zZSAqLwo+ICsJc2tsX3NldF9jZGNsayhk ZXZfcHJpdiwgZGV2X3ByaXYtPnNrbF9ib290X2NkY2xrKTsKPiArCj4gKwkvKiBlbmFibGUgREJV RiBwb3dlciAqLwo+ICsJSTkxNV9XUklURShEQlVGX0NUTCwgSTkxNV9SRUFEKERCVUZfQ1RMKSB8 IERCVUZfUE9XRVJfUkVRVUVTVCk7Cj4gKwlQT1NUSU5HX1JFQUQoREJVRl9DVEwpOwo+ICsKPiAr CXVkZWxheSgxMCk7Cj4gKwo+ICsJaWYgKCEoSTkxNV9SRUFEKERCVUZfQ1RMKSAmIERCVUZfUE9X RVJfU1RBVEUpKQo+ICsJCURSTV9FUlJPUigiREJ1ZiBwb3dlciBlbmFibGUgdGltZW91dFxuIik7 Cj4gK30KPiArCj4gIC8qIHJldHVybnMgSFBMTCBmcmVxdWVuY3kgaW4ga0h6ICovCj4gIHN0YXRp YyBpbnQgdmFsbGV5dmlld19nZXRfdmNvKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiAgewo+IEBAIC0xNDU3Myw2ICsxNDc4MCw3IEBAIHZvaWQgaW50ZWxfbW9kZXNldF9pbml0 KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaW50ZWxfaW5pdF9kcGlvKGRldik7Cj4g IAo+ICsJc2tsX2luaXRfY2RjbGsoZGV2X3ByaXYpOwoKTWF5YmUganVzdCBzdGljayB0aGF0IGlu dG8gdGhlIGRkaSBwbGwgaW5pdCBjb2RlPwoKPiAgCWludGVsX3NoYXJlZF9kcGxsX2luaXQoZGV2 KTsKPiAgCj4gIAkvKiBKdXN0IGRpc2FibGUgaXQgb25jZSBhdCBzdGFydHVwICovCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBpbmRleCA0M2ZlMDAzLi42NzI3NWExIDEwMDY0NAo+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKPiBAQCAtMTEyMyw2ICsxMTIzLDggQEAgdm9pZCBicm94dG9uX2Rk aV9waHlfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsKPiAgdm9pZCBicm94dG9uX2RkaV9w aHlfdW5pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ICB2b2lkIGJ4dF9lbmFibGVfZGM5 KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gIHZvaWQgYnh0X2Rpc2FibGVf ZGM5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gK3ZvaWQgc2tsX2Rpc3Bs YXlfc3VzcGVuZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIHNr bF9kaXNwbGF5X3Jlc3VtZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2 b2lkIGludGVsX2RwX2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCj4gIAkJICAgICAg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKPiAgdm9pZCBpbnRlbF9kcF9z ZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBlbnVtIGxpbmtfbV9uX3NldCBtX24pOwo+ IC0tIAo+IDIuMS4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9pbnRlbC1nZngKCi0tIApWaWxsZSBTeXJqw6Rsw6QKSW50ZWwgT1RDCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QK SW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==