From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 6/8] drm/i915/skl: Deinit/init the display at suspend/resume Date: Wed, 6 May 2015 12:52:15 +0200 Message-ID: <20150506105215.GS30184@phenom.ffwll.local> 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 mail-wg0-f43.google.com (mail-wg0-f43.google.com [74.125.82.43]) by gabe.freedesktop.org (Postfix) with ESMTP id 74D886E647 for ; Wed, 6 May 2015 03:49:57 -0700 (PDT) Received: by wgso17 with SMTP id o17so7043346wgs.1 for ; Wed, 06 May 2015 03:49:56 -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 SSBtZXJnZWQgYWxsIHRoZSBwcmVjZWRpbmcgcGF0Y2hlcyB0byBkaW5xLiBUaGlzIG9uZSBzdGFy dHMgdG8gY29uZmxpY3QsCnNpbmNlIGRtYyBjb2RlIGxhbmRlZCBtZWFud2hpbGUuCgpPbiBUaHUs IEFwciAzMCwgMjAxNSBhdCAwNDozOToyMVBNICswMTAwLCBEYW1pZW4gTGVzcGlhdSB3cm90ZToK PiBXZSBuZWVkIHRvIHJlLWluaXQgdGhlIGRpc3BsYXkgaGFyZHdhcmUgd2hlbiBnb2luZyBvdXQg b2Ygc3VzcGVuZC4gVGhpcwo+IGluY2x1ZGVzOgo+IAo+ICAgLSBIb29raW5nIHRoZSBQQ0ggdG8g dGhlIHJlc2V0IGxvZ2ljCj4gICAtIFJlc3RvcmluZyBDRENETEsKPiAgIC0gRW5hYmxpbmcgdGhl IEREQiBwb3dlcgo+IAo+IEFtb25nIHRob3NlLCBvbmx5IHRoZSBDRENETEsgb25lIGlzIGEgYml0 IHRyaWNreS4gVGhlcmUncyBzb21lCj4gY29tcGxleGl0eSBpbiB0aGF0Ogo+IAo+ICAgLSBEUExM MCAod2hpY2ggaXMgdGhlIHNvdXJjZSBmb3IgQ0RDTEspIGhhcyB0d28gVkNPcywgZWFjaCB3aXRo IGEgc2V0Cj4gICAgIG9mIHN1cHBvcnRlZCBmcmVxdWVuY2llcy4gQXMgZURQIGFsc28gdXNlcyBE UExMMCBmb3IgaXRzIGxpbmsgcmF0ZSwKPiAgICAgb25jZSBEUExMMCBpcyBvbiwgd2UgcmVzdHJp Y3QgdGhlIHBvc3NpYmxlIGVEUCBsaW5rIHJhdGVzIHRoZSBjaG9zZW4KPiAgICAgVkNPLgo+ICAg LSBDRENMSyBhbHNvIGxpbWl0cyB0aGUgYmFuZHdpZHRoIGF2YWlsYWJsZSB0byBwdXNoIHBpeGVs cy4KPiAgIC0gTXkgY3VycmVudCBQQ1UgZmlybXdhcmUgbmV2ZXIgYWNrIHRoZSBmcmVxdWVuY3kg Y2hhbmdlIHJlcXVlc3QKPiAKPiBTbywgYXMgYSBmaXJzdCBzdGVwLCB0aGlzIGNvbW1pdCByZXN0 b3JlIHdoYXQgdGhlIEJJT1Mgc2V0LCB1bnRpbCBJIGNhbgo+IGRvIG1vcmUgdGVzdGluZy4KPiAK PiAtLS0tCgpIbSwgSSB0aGluayB0aGlzIHdpbGwgY2F1c2UgZ2l0IGFtIHRvIGRyb3AgZXZlcnl0 aGluZyBiZWxvdyBmb3IgdGhlIGNvbW1pdAptZXNzYWdlLCB3aGljaCBkb2Vzbid0IGxvb2sgbGlr ZSB0aGUgaW50ZW50aW9uLiBBdCBsZWFzdCBJJ2QgbGlrZSB0byBrZWVwCml0IDstKQotRGFuaWVs Cgo+IEluIGNhc2UgdGhhdCdzIG9mIGludGVyZXN0IGZvciB0aGUgcmV2aWV3ZXIsIEkndmUgdW5p dCB0ZXN0ZWQgdGhlCj4gZnVuY3Rpb24gdGhhdCBkZXJpdmVzIHRoZSBkZWNpbWFsIGZyZXF1ZW5j eSBmaWVsZDoKPiAKPiAgICNpbmNsdWRlIDxzdGRpby5oPgo+ICAgI2luY2x1ZGUgPHN0ZGludC5o Pgo+ICAgI2luY2x1ZGUgPGFzc2VydC5oPgo+IAo+ICAgI2RlZmluZSBBUlJBWV9TSVpFKHgpIChz aXplb2YoeCkgLyBzaXplb2YoKih4KSkpCj4gCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRwbGxf ZnJlcSB7Cj4gICAgICAgICAgIHVuc2lnbmVkIGludCBmcmVxOwo+ICAgICAgICAgICB1bnNpZ25l ZCBpbnQgZGVjaW1hbDsKPiAgIH0gZnJlcXNbXSA9IHsKPiAgICAgICAgICAgeyAuZnJlcSA9IDMw ODU3MCwgLmRlY2ltYWwgPSAwYjAxMDAxMTAwMTExfSwKPiAgICAgICAgICAgeyAuZnJlcSA9IDMz NzUwMCwgLmRlY2ltYWwgPSAwYjAxMDEwMTAwMDAxfSwKPiAgICAgICAgICAgeyAuZnJlcSA9IDQz MjAwMCwgLmRlY2ltYWwgPSAwYjAxMTAxMDExMTEwfSwKPiAgICAgICAgICAgeyAuZnJlcSA9IDQ1 MDAwMCwgLmRlY2ltYWwgPSAwYjAxMTEwMDAwMDEwfSwKPiAgICAgICAgICAgeyAuZnJlcSA9IDU0 MDAwMCwgLmRlY2ltYWwgPSAwYjEwMDAwMTEwMTEwfSwKPiAgICAgICAgICAgeyAuZnJlcSA9IDYx NzE0MCwgLmRlY2ltYWwgPSAwYjEwMDExMDEwMDAwfSwKPiAgICAgICAgICAgeyAuZnJlcSA9IDY3 NTAwMCwgLmRlY2ltYWwgPSAwYjEwMTAxMDAwMTAwfSwKPiAgIH07Cj4gCj4gICBzdGF0aWMgdm9p ZCBpbnRiaXRzKHVuc2lnbmVkIGludCB2KQo+ICAgewo+ICAgICAgICAgICBpbnQgaTsKPiAKPiAg ICAgICAgICAgZm9yKGkgPSAxMDsgaSA+PSAwOyBpLS0pCj4gICAgICAgICAgICAgICAgICAgcHV0 Y2hhcignMCcgKyAoKHYgPj4gaSkgJiAxKSk7Cj4gICB9Cj4gCj4gICBzdGF0aWMgdW5zaWduZWQg aW50IGZyZXFfZGVjaW1hbCh1bnNpZ25lZCBpbnQgZnJlcSAvKiBpbiBrSHogKi8pCj4gICB7Cj4g ICAgICAgICAgIHVuc2lnbmVkIGludCBtaHosIGRvdDU7Cj4gCj4gICAgICAgICAgIG1oeiA9IGZy ZXEgLyAxMDAwOwo+ICAgICAgICAgICBkb3Q1ID0gKGZyZXEgLSBtaHogKiAxMDAwKSA+PSA1MDA7 Cj4gCj4gICAgICAgICAgIHJldHVybiAobWh6IC0gMSkgPDwgMSB8IGRvdDU7Cj4gICB9Cj4gCj4g ICBzdGF0aWMgdm9pZCB0ZXN0X2ZyZXEoY29uc3Qgc3RydWN0IGRwbGxfZnJlcSAqZW50cnkpCj4g ICB7Cj4gICAgICAgICAgIHVuc2lnbmVkIGludCBkZWNpbWFsID0gZnJlcV9kZWNpbWFsKGVudHJ5 LT5mcmVxKTsKPiAKPiAgICAgICAgICAgcHJpbnRmKCJmcmVxOiAlZCwgZXhwZWN0ZWQ6ICIsIGVu dHJ5LT5mcmVxKTsKPiAgICAgICAgICAgaW50Yml0cyhlbnRyeS0+ZGVjaW1hbCk7Cj4gICAgICAg ICAgIHByaW50ZigiLCBnb3Q6ICIpOwo+ICAgICAgICAgICBpbnRiaXRzKGRlY2ltYWwpOwo+ICAg ICAgICAgICBwdXRjaGFyKCdcbicpOwo+IAo+ICAgICAgICAgICBhc3NlcnQoZGVjaW1hbCA9PSBl bnRyeS0+ZGVjaW1hbCk7Cj4gICB9Cj4gCj4gICBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCj4gICB7Cj4gICAgICAgICAgIGludCBpOwo+IAo+ICAgICAgICAgICBmb3IgKGkgPSAwOyBp IDwgQVJSQVlfU0laRShmcmVxcyk7IGkrKykKPiAgICAgICAgICAgICAgICAgICB0ZXN0X2ZyZXEo JmZyZXFzW2ldKTsKPiAKPiAgICAgICAgICAgcmV0dXJuIDA7Cj4gICB9Cj4gCj4gU2lnbmVkLW9m Zi1ieTogRGFtaWVuIExlc3BpYXUgPGRhbWllbi5sZXNwaWF1QGludGVsLmNvbT4KPiAtLS0KPiAg ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyAgICAgIHwgIDI2ICsrKystCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAgMSArCj4gIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfcmVnLmggICAgICB8ICAgMyArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2RkaS5jICAgICB8ICAgMiArCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYyB8IDIwOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgfCAgIDIgKwo+ICA2IGZpbGVzIGNoYW5nZWQs IDI0MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuYwo+IGluZGV4IGU3MGFkZmQuLjU4ZGIwYzYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kcnYuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmMKPiBAQCAtNTc0LDYgKzU3NCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3N1c3BlbmRfZW5jb2Rl cnMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICBzdGF0aWMgaW50IGludGVs X3N1c3BlbmRfY29tcGxldGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAg c3RhdGljIGludCB2bHZfcmVzdW1lX3ByZXBhcmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAo+ICAJCQkgICAgICBib29sIHJwbV9yZXN1bWUpOwo+ICtzdGF0aWMgaW50IHNrbF9y ZXN1bWVfcHJlcGFyZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAKPiAg c3RhdGljIGludCBpOTE1X2RybV9zdXNwZW5kKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsK PiBAQCAtNzgxLDYgKzc4Miw5IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fcmVzdW1lX2Vhcmx5KHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIAo+ICAJaWYgKElTX1ZBTExFWVZJRVcoZGV2X3ByaXYp KQo+ICAJCXJldCA9IHZsdl9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdiwgZmFsc2UpOwo+ICsJZWxz ZSBpZiAoSVNfU0tZTEFLRShkZXZfcHJpdikpCj4gKwkJcmV0ID0gc2tsX3Jlc3VtZV9wcmVwYXJl KGRldl9wcml2KTsKPiArCj4gIAlpZiAocmV0KQo+ICAJCURSTV9FUlJPUigiUmVzdW1lIHByZXBh cmUgZmFpbGVkOiAlZCxDb250aW51aW5nIHJlc3VtZVxuIiwgcmV0KTsKPiAgCj4gQEAgLTEwMDks NiArMTAxMywyMCBAQCBzdGF0aWMgaW50IGhzd19zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+ICtzdGF0aWMg aW50IHNrbF9zdXNwZW5kX2NvbXBsZXRlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dikKPiArewo+ICsJc2tsX2Rpc3BsYXlfc3VzcGVuZChkZXZfcHJpdik7Cj4gKwo+ICsJcmV0dXJu IDA7Cj4gK30KPiArCj4gK3N0YXRpYyBpbnQgc2tsX3Jlc3VtZV9wcmVwYXJlKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJc2tsX2Rpc3BsYXlfcmVzdW1lKGRldl9w cml2KTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiAgc3RhdGljIGludCBieHRfc3VzcGVu ZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gIHsKPiAgCXN0 cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBkZXZfcHJpdi0+ZGV2Owo+IEBAIC0xNTAwLDcgKzE1MTgs OSBAQCBzdGF0aWMgaW50IGludGVsX3J1bnRpbWVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldmlj ZSkKPiAgCWlmIChJU19HRU42KGRldl9wcml2KSkKPiAgCQlpbnRlbF9pbml0X3BjaF9yZWZjbGso ZGV2KTsKPiAgCj4gLQlpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICsJaWYgKElTX1NLWUxBS0UoZGV2 KSkKPiArCQlyZXQgPSBza2xfcmVzdW1lX3ByZXBhcmUoZGV2X3ByaXYpOwo+ICsJZWxzZSBpZiAo SVNfQlJPWFRPTihkZXYpKQo+ICAJCXJldCA9IGJ4dF9yZXN1bWVfcHJlcGFyZShkZXZfcHJpdik7 Cj4gIAllbHNlIGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJU19CUk9BRFdFTEwoZGV2X3By aXYpKQo+ICAJCWhzd19kaXNhYmxlX3BjOChkZXZfcHJpdik7Cj4gQEAgLTE1MzQsNyArMTU1NCw5 IEBAIHN0YXRpYyBpbnQgaW50ZWxfc3VzcGVuZF9jb21wbGV0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZGV2X3ByaXYtPmRl djsKPiAgCWludCByZXQ7Cj4gIAo+IC0JaWYgKElTX0JST1hUT04oZGV2KSkKPiArCWlmIChJU19T S1lMQUtFKGRldikpCj4gKwkJcmV0ID0gc2tsX3N1c3BlbmRfY29tcGxldGUoZGV2X3ByaXYpOwo+ ICsJZWxzZSBpZiAoSVNfQlJPWFRPTihkZXYpKQo+ICAJCXJldCA9IGJ4dF9zdXNwZW5kX2NvbXBs ZXRlKGRldl9wcml2KTsKPiAgCWVsc2UgaWYgKElTX0hBU1dFTEwoZGV2KSB8fCBJU19CUk9BRFdF TEwoZGV2KSkKPiAgCQlyZXQgPSBoc3dfc3VzcGVuZF9jb21wbGV0ZShkZXZfcHJpdik7Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggOTA4YzEyNC4uZjYzNzY2NyAxMDA2NDQKPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0xNjU5LDYgKzE2NTksNyBAQCBzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSB7Cj4gIAlpbnQgbnVtX2ZlbmNlX3JlZ3M7IC8qIDggb24gcHJlLTk2NSwgMTYgb3Ro ZXJ3aXNlICovCj4gIAo+ICAJdW5zaWduZWQgaW50IGZzYl9mcmVxLCBtZW1fZnJlcSwgaXNfZGRy MzsKPiArCXVuc2lnbmVkIGludCBza2xfYm9vdF9jZGNsazsKPiAgCXVuc2lnbmVkIGludCBjZGNs a19mcmVxOwo+ICAJdW5zaWduZWQgaW50IGhwbGxfZnJlcTsKPiAgCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3JlZy5oCj4gaW5kZXggNmQ0MjhhNS4uNGIwNjNhOCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9y ZWcuaAo+IEBAIC02NjQ3LDYgKzY2NDcsOSBAQCBlbnVtIHNrbF9kaXNwX3Bvd2VyX3dlbGxzIHsK PiAgI2RlZmluZSAgICAgR0VOOV9NRU1fTEFURU5DWV9MRVZFTF8xXzVfU0hJRlQJOAo+ICAjZGVm aW5lICAgICBHRU45X01FTV9MQVRFTkNZX0xFVkVMXzJfNl9TSElGVAkxNgo+ICAjZGVmaW5lICAg ICBHRU45X01FTV9MQVRFTkNZX0xFVkVMXzNfN19TSElGVAkyNAo+ICsjZGVmaW5lICAgU0tMX1BD T0RFX0NEQ0xLX0NPTlRST0wJCTB4Nwo+ICsjZGVmaW5lICAgICBTS0xfQ0RDTEtfUFJFUEFSRV9G T1JfQ0hBTkdFCTB4Mwo+ICsjZGVmaW5lICAgICBTS0xfQ0RDTEtfUkVBRFlfRk9SX0NIQU5HRQkJ MHgxCj4gICNkZWZpbmUgICBHRU42X1BDT0RFX1dSSVRFX01JTl9GUkVRX1RBQkxFCTB4OAo+ICAj ZGVmaW5lICAgR0VONl9QQ09ERV9SRUFEX01JTl9GUkVRX1RBQkxFCTB4OQo+ICAjZGVmaW5lICAg R0VONl9SRUFEX09DX1BBUkFNUwkJCTB4Ywo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gaW5k ZXggZDViZWU4Yi4uZjc2YmNkMyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kZGkuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gQEAg LTI0ODEsNiArMjQ4MSw4IEBAIHZvaWQgaW50ZWxfZGRpX3BsbF9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAlpZiAoSVNfU0tZTEFLRShkZXYpKSB7Cj4gIAkJaWYgKCEoSTkxNV9SRUFE KExDUExMMV9DVEwpICYgTENQTExfUExMX0VOQUJMRSkpCj4gIAkJCURSTV9FUlJPUigiTENQTEwx IGlzIGRpc2FibGVkXG4iKTsKPiArCQllbHNlCj4gKwkJCWludGVsX2Rpc3BsYXlfcG93ZXJfZ2V0 KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gIAl9IGVsc2UgaWYgKElTX0JST1hUT04o ZGV2KSkgewo+ICAJCWJyb3h0b25faW5pdF9jZGNsayhkZXYpOwo+ICAJCWJyb3h0b25fZGRpX3Bo eV9pbml0KGRldik7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rp c3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+IGluZGV4IGYy ZjRhZDUuLjljODMzOGYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4g QEAgLTU0MjAsNiArNTQyMCwyMTMgQEAgdm9pZCBicm94dG9uX3VuaW5pdF9jZGNsayhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KQo+ICAJaW50ZWxfZGlzcGxheV9wb3dlcl9wdXQoZGV2X3ByaXYsIFBP V0VSX0RPTUFJTl9QTExTKTsKPiAgfQo+ICAKPiArLyoKPiArICogRm9yIG5vdywgd2Ugc3RvcmUg dGhlIENEQ0xLIGZyZXF1ZW5jeSBzZXQgYnkgdGhlIEJJT1MgYW5kIHJlc3RvcmUgaXQgYXQKPiAr ICogcmVzdW1lLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgc2tsX2luaXRfY2RjbGsoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwlpZiAoIUlTX1NLWUxBS0UoZGV2X3By aXYpKQo+ICsJCXJldHVybjsKPiArCj4gKwlkZXZfcHJpdi0+c2tsX2Jvb3RfY2RjbGsgPQo+ICsJ CWRldl9wcml2LT5kaXNwbGF5LmdldF9kaXNwbGF5X2Nsb2NrX3NwZWVkKGRldl9wcml2LT5kZXYp Owo+ICsKPiArCURSTV9ERUJVR19EUklWRVIoIkNEQ0xLOiAlZCBrSHpcbiIsIGRldl9wcml2LT5z a2xfYm9vdF9jZGNsayk7Cj4gK30KPiArCj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2tsX2NkY2xr X2VudHJ5IHsKPiArCXVuc2lnbmVkIGludCBmcmVxOwo+ICsJdW5zaWduZWQgaW50IHZjbzsKPiAr fSBza2xfY2RjbGtfZnJlcXVlbmNpZXNbXSA9IHsKPiArCXsgLmZyZXEgPSAzMDg1NzAsIC52Y28g PSA4NjQwIH0sCj4gKwl7IC5mcmVxID0gMzM3NTAwLCAudmNvID0gODEwMCB9LAo+ICsJeyAuZnJl cSA9IDQzMjAwMCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZyZXEgPSA0NTAwMDAsIC52Y28gPSA4 MTAwIH0sCj4gKwl7IC5mcmVxID0gNTQwMDAwLCAudmNvID0gODEwMCB9LAo+ICsJeyAuZnJlcSA9 IDYxNzE0MCwgLnZjbyA9IDg2NDAgfSwKPiArCXsgLmZyZXEgPSA2NzUwMDAsIC52Y28gPSA4MTAw IH0sCj4gK307Cj4gKwo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHNrbF9jZGNsa19nZXRfdmNvKHVu c2lnbmVkIGludCBmcmVxKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCj4gKwlmb3IgKGkg PSAwOyBpIDwgQVJSQVlfU0laRShza2xfY2RjbGtfZnJlcXVlbmNpZXMpOyBpKyspIHsKPiArCQlj b25zdCBzdHJ1Y3Qgc2tsX2NkY2xrX2VudHJ5ICplID0gJnNrbF9jZGNsa19mcmVxdWVuY2llc1tp XTsKPiArCj4gKwkJaWYgKGUtPmZyZXEgPT0gZnJlcSkKPiArCQkJcmV0dXJuIGUtPnZjbzsKPiAr CX0KPiArCj4gKwlyZXR1cm4gODEwMDsKPiArfQo+ICsKPiArc3RhdGljIHVuc2lnbmVkIGludCBz a2xfY2RsY2tfZGVjaW1hbCh1bnNpZ25lZCBpbnQgZnJlcSkKPiArewo+ICsgICAgICAgIHVuc2ln bmVkIGludCBtaHosIGRvdDU7Cj4gKwo+ICsgICAgICAgIG1oeiA9IGZyZXEgLyAxMDAwOwo+ICsg ICAgICAgIGRvdDUgPSAoZnJlcSAtIG1oeiAqIDEwMDApID49IDUwMDsKPiArCj4gKyAgICAgICAg cmV0dXJuIChtaHogLSAxKSA8PCAxIHwgZG90NTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQKPiAr c2tsX2RwbGwwX2VuYWJsZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIHVuc2ln bmVkIGludCByZXF1aXJlZF92Y28pCj4gK3sKPiArCXVuc2lnbmVkIGludCBtaW5fZnJlcTsKPiAr CXUzMiB2YWw7Cj4gKwo+ICsJLyogc2VsZWN0IHRoZSBtaW5pbXVtIENEQ0xLIGJlZm9yZSBlbmFi bGluZyBEUExMIDAgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChDRENMS19DVEwpOwo+ICsJdmFsICY9 IH5DRENMS19GUkVRX1NFTF9NQVNLIHwgfkNEQ0xLX0ZSRVFfREVDSU1BTF9NQVNLOwo+ICsJdmFs IHw9IENEQ0xLX0ZSRVFfMzM3XzMwODsKPiArCj4gKwlpZiAocmVxdWlyZWRfdmNvID09IDg2NDAp Cj4gKwkJbWluX2ZyZXEgPSAzMDg1NzA7Cj4gKwllbHNlCj4gKwkJbWluX2ZyZXEgPSAzMzc1MDA7 Cj4gKwo+ICsJdmFsID0gQ0RDTEtfRlJFUV8zMzdfMzA4IHwgc2tsX2NkbGNrX2RlY2ltYWwobWlu X2ZyZXEpOwo+ICsKPiArCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCB2YWwpOwo+ICsJUE9TVElOR19S RUFEKENEQ0xLX0NUTCk7Cj4gKwo+ICsJLyoKPiArCSAqIFdlIGFsd2F5cyBlbmFibGUgRFBMTDAg d2l0aCB0aGUgbG93ZXN0IGxpbmsgcmF0ZSBwb3NzaWJsZSwgYnV0IHN0aWxsCj4gKwkgKiB0YWtp bmcgaW50byBhY2NvdW50IHRoZSBWQ08gcmVxdWlyZWQgdG8gb3BlcmF0ZSB0aGUgZURQIHBhbmVs IGF0IHRoZQo+ICsJICogZGVzaXJlZCBmcmVxdWVuY3kuIFRoZSB1c3VhbCBEUCBsaW5rIHJhdGVz IG9wZXJhdGUgd2l0aCBhIFZDTyBvZgo+ICsJICogODEwMCB3aGlsZSB0aGUgZURQIDEuNCBhbHRl cm5hdGUgbGluayByYXRlcyBuZWVkIGEgVkNPIG9mIDg2NDAuCj4gKwkgKiBUaGUgbW9kZXNldCBj b2RlIGlzIHJlc3BvbnNpYmxlIGZvciB0aGUgc2VsZWN0aW9uIG9mIHRoZSBleGFjdCBsaW5rCj4g KwkgKiByYXRlIGxhdGVyIG9uLCB3aXRoIHRoZSBjb25zdHJhaW50IG9mIGNob29zaW5nIGEgZnJl cXVlbmN5IHRoYXQKPiArCSAqIHdvcmtzIHdpdGggcmVxdWlyZWRfdmNvLgo+ICsJICovCj4gKwl2 YWwgPSBJOTE1X1JFQUQoRFBMTF9DVFJMMSk7Cj4gKwo+ICsJdmFsICY9IH4oRFBMTF9DVFJMMV9I RE1JX01PREUoMCkgfCBEUExMX0NUUkwxX1NTQygwKSB8Cj4gKwkJIERQTExfQ1RSTDFfTElOS19S QVRFX01BU0soMCkpOwo+ICsJdmFsIHw9IERQTExfQ1RSTDFfT1ZFUlJJREUoMCk7Cj4gKwlpZiAo cmVxdWlyZWRfdmNvID09IDg2NDApCj4gKwkJdmFsIHw9IERQTExfQ1RSTDFfTElOS19SQVRFKERQ TExfQ1RSTDFfTElOS19SQVRFXzEwODAsIDApOwo+ICsJZWxzZQo+ICsJCXZhbCB8PSBEUExMX0NU UkwxX0xJTktfUkFURShEUExMX0NUUkwxX0xJTktfUkFURV84MTAsIDApOwo+ICsKPiArCUk5MTVf V1JJVEUoRFBMTF9DVFJMMSwgdmFsKTsKPiArCVBPU1RJTkdfUkVBRChEUExMX0NUUkwxKTsKPiAr Cj4gKwlJOTE1X1dSSVRFKExDUExMMV9DVEwsIEk5MTVfUkVBRChMQ1BMTDFfQ1RMKSB8IExDUExM X1BMTF9FTkFCTEUpOwo+ICsKPiArCWlmICh3YWl0X2ZvcihJOTE1X1JFQUQoTENQTEwxX0NUTCkg JiAoMSA8PCAzMCksIDUpKQo+ICsJCURSTV9FUlJPUigiRFBMTDAgbm90IGxvY2tlZFxuIik7Cj4g K30KPiArCj4gK3N0YXRpYyB2b2lkIHNrbF9zZXRfY2RjbGsoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2LCB1bnNpZ25lZCBpbnQgZnJlcSkKPiArewo+ICsJaW50IHJldDsKPiArCXUz MiB2YWwsIGZyZXFfc2VsZWN0LCBmcmVxX2RlY2ltYWwsIHBjdV9hY2s7Cj4gKwo+ICsJRFJNX0RF QlVHX0RSSVZFUigiQ2hhbmdpbmcgQ0RDTEsgdG8gJWRLSHpcbiIsIGZyZXEpOwo+ICsKPiArCS8q IGluZm9ybSBQQ1Ugd2Ugd2FudCB0byBjaGFuZ2UgQ0RDTEsgKi8KPiArCXZhbCA9IFNLTF9DRENM S19QUkVQQVJFX0ZPUl9DSEFOR0U7Cj4gKwltdXRleF9sb2NrKCZkZXZfcHJpdi0+cnBzLmh3X2xv Y2spOwo+ICsJcmV0ID0gc2FuZHlicmlkZ2VfcGNvZGVfcmVhZChkZXZfcHJpdiwgU0tMX1BDT0RF X0NEQ0xLX0NPTlRST0wsICZ2YWwpOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+cnBzLmh3 X2xvY2spOwo+ICsJaWYgKHJldCB8fCAhKHZhbCAmIFNLTF9DRENMS19SRUFEWV9GT1JfQ0hBTkdF KSkgewo+ICsJCURSTV9FUlJPUigiZmFpbGVkIHRvIGluZm9ybSBQQ1UgYWJvdXQgY2RjbGsgY2hh bmdlXG4iKTsKPiArCQlyZXR1cm47Cj4gKwl9Cj4gKwo+ICsJLyogc2V0IENEQ0xLX0NUTCAqLwo+ ICsJc3dpdGNoKGZyZXEpIHsKPiArCWNhc2UgNDUwMDAwOgo+ICsJY2FzZSA0MzIwMDA6Cj4gKwkJ ZnJlcV9zZWxlY3QgPSBDRENMS19GUkVRXzQ1MF80MzI7Cj4gKwkJcGN1X2FjayA9IDE7Cj4gKwkJ YnJlYWs7Cj4gKwljYXNlIDU0MDAwMDoKPiArCQlmcmVxX3NlbGVjdCA9IENEQ0xLX0ZSRVFfNTQw Owo+ICsJCXBjdV9hY2sgPSAyOwo+ICsJCWJyZWFrOwo+ICsJY2FzZSAzMDg1NzA6Cj4gKwljYXNl IDMzNzUwMDoKPiArCWRlZmF1bHQ6Cj4gKwkJZnJlcV9zZWxlY3QgPSBDRENMS19GUkVRXzMzN18z MDg7Cj4gKwkJcGN1X2FjayA9IDA7Cj4gKwkJYnJlYWs7Cj4gKwljYXNlIDYxNzE0MDoKPiArCWNh c2UgNjc1MDAwOgo+ICsJCWZyZXFfc2VsZWN0ID0gQ0RDTEtfRlJFUV82NzVfNjE3Owo+ICsJCXBj dV9hY2sgPSAzOwo+ICsJCWJyZWFrOwo+ICsJfQo+ICsKPiArCWZyZXFfZGVjaW1hbCA9IHNrbF9j ZGxja19kZWNpbWFsKGZyZXEpOwo+ICsKPiArCUk5MTVfV1JJVEUoQ0RDTEtfQ1RMLCBmcmVxX3Nl bGVjdCB8IGZyZXFfZGVjaW1hbCk7Cj4gKwlQT1NUSU5HX1JFQUQoQ0RDTEtfQ1RMKTsKPiArCj4g KwkvKiBpbmZvcm0gUENVIG9mIHRoZSBjaGFuZ2UgKi8KPiArCW11dGV4X2xvY2soJmRldl9wcml2 LT5ycHMuaHdfbG9jayk7Cj4gKwlzYW5keWJyaWRnZV9wY29kZV93cml0ZShkZXZfcHJpdiwgU0tM X1BDT0RFX0NEQ0xLX0NPTlRST0wsIHBjdV9hY2spOwo+ICsJbXV0ZXhfdW5sb2NrKCZkZXZfcHJp di0+cnBzLmh3X2xvY2spOwo+ICt9Cj4gKwo+ICt2b2lkIHNrbF9kaXNwbGF5X3N1c3BlbmQoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICt7Cj4gKwkvKiBkaXNhYmxlIERCVUYg cG93ZXIgKi8KPiArCUk5MTVfV1JJVEUoREJVRl9DVEwsIEk5MTVfUkVBRChEQlVGX0NUTCkgJiB+ REJVRl9QT1dFUl9SRVFVRVNUKTsKPiArCVBPU1RJTkdfUkVBRChEQlVGX0NUTCk7Cj4gKwo+ICsJ dWRlbGF5KDEwKTsKPiArCj4gKwlpZiAoSTkxNV9SRUFEKERCVUZfQ1RMKSAmIERCVUZfUE9XRVJf U1RBVEUpCj4gKwkJRFJNX0VSUk9SKCJEQnVmIHBvd2VyIGRpc2FibGUgdGltZW91dFxuIik7Cj4g Kwo+ICsJLyogZGlzYWJsZSBEUExMMCAqLwo+ICsJSTkxNV9XUklURShMQ1BMTDFfQ1RMLCBJOTE1 X1JFQUQoTENQTEwxX0NUTCkgJiB+TENQTExfUExMX0VOQUJMRSk7Cj4gKwlpZiAod2FpdF9mb3Io IShJOTE1X1JFQUQoTENQTEwxX0NUTCkgJiAoMSA8PCAzMCkpLCAxKSkKPiArCQlEUk1fRVJST1Io IkNvdWxkbid0IGRpc2FibGUgRFBMTDBcbiIpOwo+ICsKPiArCWludGVsX2Rpc3BsYXlfcG93ZXJf cHV0KGRldl9wcml2LCBQT1dFUl9ET01BSU5fUExMUyk7Cj4gK30KPiArCj4gK3ZvaWQgc2tsX2Rp c3BsYXlfcmVzdW1lKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKPiArewo+ICsJ dTMyIHZhbDsKPiArCXVuc2lnbmVkIGludCByZXF1aXJlZF92Y287Cj4gKwo+ICsJLyogZW5hYmxl IFBDSCByZXNldCBoYW5kc2hha2UgKi8KPiArCXZhbCA9IEk5MTVfUkVBRChIU1dfTkRFX1JTVFdS Tl9PUFQpOwo+ICsJSTkxNV9XUklURShIU1dfTkRFX1JTVFdSTl9PUFQsIHZhbCAmIFJFU0VUX1BD SF9IQU5EU0hBS0VfRU5BQkxFKTsKPiArCj4gKwkvKiBlbmFibGUgUEcxIGFuZCBNaXNjIEkvTyAq Lwo+ICsJaW50ZWxfZGlzcGxheV9wb3dlcl9nZXQoZGV2X3ByaXYsIFBPV0VSX0RPTUFJTl9QTExT KTsKPiArCj4gKwkvKiBEUExMMCBhbHJlYWR5IGVuYWJlZCAhPyAqLwo+ICsJaWYgKEk5MTVfUkVB RChMQ1BMTDFfQ1RMKSAmIExDUExMX1BMTF9FTkFCTEUpIHsKPiArCQlEUk1fREVCVUdfRFJJVkVS KCJEUExMMCBhbHJlYWR5IHJ1bm5pbmdcbiIpOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwkv KiBlbmFibGUgRFBMTDAgKi8KPiArCXJlcXVpcmVkX3ZjbyA9IHNrbF9jZGNsa19nZXRfdmNvKGRl dl9wcml2LT5za2xfYm9vdF9jZGNsayk7Cj4gKwlza2xfZHBsbDBfZW5hYmxlKGRldl9wcml2LCBy ZXF1aXJlZF92Y28pOwo+ICsKPiArCS8qIHNldCBDRENMSyB0byB0aGUgZnJlcXVlbmN5IHRoZSBC SU9TIGNob3NlICovCj4gKwlza2xfc2V0X2NkY2xrKGRldl9wcml2LCBkZXZfcHJpdi0+c2tsX2Jv b3RfY2RjbGspOwo+ICsKPiArCS8qIGVuYWJsZSBEQlVGIHBvd2VyICovCj4gKwlJOTE1X1dSSVRF KERCVUZfQ1RMLCBJOTE1X1JFQUQoREJVRl9DVEwpIHwgREJVRl9QT1dFUl9SRVFVRVNUKTsKPiAr CVBPU1RJTkdfUkVBRChEQlVGX0NUTCk7Cj4gKwo+ICsJdWRlbGF5KDEwKTsKPiArCj4gKwlpZiAo IShJOTE1X1JFQUQoREJVRl9DVEwpICYgREJVRl9QT1dFUl9TVEFURSkpCj4gKwkJRFJNX0VSUk9S KCJEQnVmIHBvd2VyIGVuYWJsZSB0aW1lb3V0XG4iKTsKPiArfQo+ICsKPiAgLyogcmV0dXJucyBI UExMIGZyZXF1ZW5jeSBpbiBrSHogKi8KPiAgc3RhdGljIGludCB2YWxsZXl2aWV3X2dldF92Y28o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQo+ICB7Cj4gQEAgLTE0NTczLDYgKzE0 NzgwLDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK PiAgCj4gIAlpbnRlbF9pbml0X2RwaW8oZGV2KTsKPiAgCj4gKwlza2xfaW5pdF9jZGNsayhkZXZf cHJpdik7Cj4gIAlpbnRlbF9zaGFyZWRfZHBsbF9pbml0KGRldik7Cj4gIAo+ICAJLyogSnVzdCBk aXNhYmxlIGl0IG9uY2UgYXQgc3RhcnR1cCAqLwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g aW5kZXggNDNmZTAwMy4uNjcyNzVhMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4g QEAgLTExMjMsNiArMTEyMyw4IEBAIHZvaWQgYnJveHRvbl9kZGlfcGh5X2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldik7Cj4gIHZvaWQgYnJveHRvbl9kZGlfcGh5X3VuaW5pdChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsKPiAgdm9pZCBieHRfZW5hYmxlX2RjOShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGJ4dF9kaXNhYmxlX2RjOShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICt2b2lkIHNrbF9kaXNwbGF5X3N1c3BlbmQoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiArdm9pZCBza2xfZGlzcGxheV9yZXN1bWUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiAgdm9pZCBpbnRlbF9kcF9nZXRfbV9u KHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAo+ICAJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZyk7Cj4gIHZvaWQgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YywgZW51bSBsaW5rX21fbl9zZXQgbV9uKTsKPiAtLSAKPiAyLjEuMAo+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK