From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sean Paul Subject: Re: [DPU PATCH 01/11] drm/msm: Skip seamless disables in crtc/encoder Date: Mon, 12 Mar 2018 16:14:59 -0400 Message-ID: <20180312201459.GZ223881@art_vandelay> References: <20180228191906.185417-1-seanpaul@chromium.org> <20180228191906.185417-2-seanpaul@chromium.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: freedreno-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "Freedreno" To: jsanka-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org Cc: linux-arm-msm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org, dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org, robdclark-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org, Sean Paul , abhinavk-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org, hoegsberg-F7+t8E8rja9g9hUCZPvPmw@public.gmane.org, freedreno-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org List-Id: linux-arm-msm@vger.kernel.org T24gRnJpLCBNYXIgMDIsIDIwMTggYXQgMDQ6MDQ6MjRQTSAtMDgwMCwganNhbmthQGNvZGVhdXJv cmEub3JnIHdyb3RlOgo+IE9uIDIwMTgtMDItMjggMTE6MTgsIFNlYW4gUGF1bCB3cm90ZToKPiA+ IEluc3RlYWQgb2YgZHVwbGljYXRpbmcgd2hvbGUgc3dhdGhzIG9mIGF0b21pYyBoZWxwZXIgZnVu Y3Rpb25zICh3aGljaAo+ID4gYXJlIGFscmVhZHkgb3V0LW9mLWRhdGUpLCBqdXN0IHNraXAgdGhl IGVuY29kZXIvY3J0YyBkaXNhYmxlcyBpbiB0aGUKPiA+IC5kaXNhYmxlIGhvb2tzLgo+ID4gCj4g PiBDaGFuZ2UtSWQ6IEk3YmQ5MTgzYWU2MDYyNDIwNGZiMWRlOTU1MDY1NmI3NzZlZmM3MjAyCj4g PiBTaWduZWQtb2ZmLWJ5OiBTZWFuIFBhdWwgPHNlYW5wYXVsQGNocm9taXVtLm9yZz4KPiAKPiBD YW4geW91IGNvbnNpZGVyIGdldHRpbmcgcmlkIG9mIHRoZXNlIGNoZWNrcz8KCkRvIHlvdSBtZWFu IHRoZSBDaGFuZ2UtSWQ/IFllYWgsIEkgZm9yZ290IHRvIHN0cmlwIHRoZW0gb3V0IGJlZm9yZSBz ZW5kaW5nLCBJJ2xsCm1ha2Ugc3VyZSBJIGNsZWFuIGl0IHVwIGJlZm9yZSBJIGFwcGx5LgoKPiAK PiA+IC0tLQo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMgICAg fCAgIDggKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMg fCAgIDggKwo+ID4gIGRyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2F0b21pYy5jICAgICAgICAgICAg fCAxODUgKy0tLS0tLS0tLS0tLS0tLS0tLS0KPiA+ICAzIGZpbGVzIGNoYW5nZWQsIDE3IGluc2Vy dGlvbnMoKyksIDE4NCBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9jcnRjLmMKPiA+IGIvZHJpdmVycy9ncHUvZHJtL21z bS9kaXNwL2RwdTEvZHB1X2NydGMuYwo+ID4gaW5kZXggM2NkZjFlM2Q5ZDk2Li5hM2FiNmVkMmJm MWQgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0 Yy5jCj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfY3J0Yy5jCj4g PiBAQCAtMzM5Myw2ICszMzkzLDcgQEAgc3RhdGljIHZvaWQgZHB1X2NydGNfZGlzYWJsZShzdHJ1 Y3QgZHJtX2NydGMKPiA+ICpjcnRjKQo+ID4gIHsKPiA+ICAJc3RydWN0IGRwdV9jcnRjICpkcHVf Y3J0YzsKPiA+ICAJc3RydWN0IGRwdV9jcnRjX3N0YXRlICpjc3RhdGU7Cj4gPiArCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlOwo+ID4gIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXI7 Cj4gPiAgCXN0cnVjdCBtc21fZHJtX3ByaXZhdGUgKnByaXY7Cj4gPiAgCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7Cj4gPiBAQCAtMzQwNyw4ICszNDA4LDE1IEBAIHN0YXRpYyB2b2lkIGRwdV9jcnRjX2Rp c2FibGUoc3RydWN0IGRybV9jcnRjCj4gPiAqY3J0YykKPiA+ICAJfQo+ID4gIAlkcHVfY3J0YyA9 IHRvX2RwdV9jcnRjKGNydGMpOwo+ID4gIAljc3RhdGUgPSB0b19kcHVfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7Cj4gPiArCW1vZGUgPSAmY3N0YXRlLT5iYXNlLmFkanVzdGVkX21vZGU7Cj4gPiAg CXByaXYgPSBjcnRjLT5kZXYtPmRldl9wcml2YXRlOwo+ID4gCj4gPiArCWlmIChtc21faXNfbW9k ZV9zZWFtbGVzcyhtb2RlKSB8fCBtc21faXNfbW9kZV9zZWFtbGVzc192cnIobW9kZSkKPiA+IHx8 Cj4gPiArCSAgICBtc21faXNfbW9kZV9zZWFtbGVzc19kbXMobW9kZSkpIHsKPiA+ICsJCURQVV9E RUJVRygiU2VhbWxlc3MgbW9kZSBpcyBiZWluZyBhcHBsaWVkLCBza2lwCj4gPiBkaXNhYmxlXG4i KTsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+IEFub3RoZXIgdG9waWMgb2YgZGlzY3Vz c2lvbiB3aGljaCBzaG91bGQgYmUgYnJvdWdodCB1cCB3aXRoIGRyaS1kZXZlbC4KPiAKPiBNYXkg bm90IGJlIGNvbW1vbiBpbiBQQyB3b3JsZCwgYnV0IHRoZXJlIGFyZSBhIGhhbmRmdWwgb2YgbW9i aWxlIE9FTSdzCj4gdXNpbmcgcGFuZWxzIHdoaWNoIHN1cHBvcnRzIG1vcmUgdGhhbiBvbmUgcmVz b2x1dGlvbi4gUHJpbWFyeSB1c2UgY2FzZXMKPiBpbnZvbHZlICJzZWFtbGVzcyIgc3dpdGNoaW5n IHRvIG9wdGltaXplZCBkaXNwbGF5IHJlc29sdXRpb24gd2hlbgo+IHN0cmVhbWluZyBjb250ZW50 IGNoYW5nZXMgcmVzb2x1dGlvbnMgb3IgcmVuZGVyaW5nIGxvc3NsZXNzIGRhdGEuCgpZZWFoLCBJ IHRoaW5rIHdlIGNhbiBkbyB0aGlzIHVuZGVyIHRoZSBjb3ZlcnMgaWYgdGhlIGhhcmR3YXJlIHN1 cHBvcnRzIGl0IHN1Y2gKYXMgdGhpcyBwYXRjaC4gV2UgY291bGQgcHJvYmFibHkgZG8gYSBiZXR0 ZXIgam9iIG9mIG1ha2luZyB0aGlzIHVzZWZ1bCBmb3Igb3RoZXIKZHJpdmVycywgYnV0IEkgd2Fz IHJlYWxseSBqdXN0IHRyeWluZyB0byBnZXQgdGhlIHNlYW1sZXNzIHN0dWZmIG91dCBvZiB0aGUg d2F5CnNvIHdlIGRvbid0IG5lZWQgdG8gcm9sbCBvdXIgb3duIGF0b21pYyBjb21taXQuCgpTZWFu Cgo+IAo+IEpleWt1bWFyIFMuCj4gCj4gPiAgCURQVV9ERUJVRygiY3J0YyVkXG4iLCBjcnRjLT5i YXNlLmlkKTsKPiA+IAo+ID4gIAlpZiAoZHB1X2ttc19pc19zdXNwZW5kX3N0YXRlKGNydGMtPmRl dikpCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9kaXNwL2RwdTEvZHB1X2Vu Y29kZXIuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL2Rpc3AvZHB1MS9kcHVfZW5jb2Rlci5j Cj4gPiBpbmRleCAzZDE2OGZhMDlmM2YuLjI4Y2ViNTg5ZWU0MCAxMDA2NDQKPiA+IC0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiA+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9tc20vZGlzcC9kcHUxL2RwdV9lbmNvZGVyLmMKPiA+IEBAIC0yMTgzLDYgKzIx ODMsNyBAQCBzdGF0aWMgdm9pZCBkcHVfZW5jb2Rlcl92aXJ0X2Rpc2FibGUoc3RydWN0Cj4gPiBk cm1fZW5jb2RlciAqZHJtX2VuYykKPiA+ICAJc3RydWN0IGRwdV9lbmNvZGVyX3ZpcnQgKmRwdV9l bmMgPSBOVUxMOwo+ID4gIAlzdHJ1Y3QgbXNtX2RybV9wcml2YXRlICpwcml2Owo+ID4gIAlzdHJ1 Y3QgZHB1X2ttcyAqZHB1X2ttczsKPiA+ICsJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGU7 Cj4gPiAgCWludCBpID0gMDsKPiA+IAo+ID4gIAlpZiAoIWRybV9lbmMpIHsKPiA+IEBAIC0yMTk2 LDYgKzIxOTcsMTMgQEAgc3RhdGljIHZvaWQgZHB1X2VuY29kZXJfdmlydF9kaXNhYmxlKHN0cnVj dAo+ID4gZHJtX2VuY29kZXIgKmRybV9lbmMpCj4gPiAgCQlyZXR1cm47Cj4gPiAgCX0KPiA+IAo+ ID4gKwltb2RlID0gJmRybV9lbmMtPmNydGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlOwo+ID4gKwlp ZiAobXNtX2lzX21vZGVfc2VhbWxlc3MobW9kZSkgfHwgbXNtX2lzX21vZGVfc2VhbWxlc3NfdnJy KG1vZGUpCj4gPiB8fAo+ID4gKwkgICAgbXNtX2lzX21vZGVfc2VhbWxlc3NfZG1zKG1vZGUpKSB7 Cj4gPiArCQlEUFVfREVCVUcoIlNlYW1sZXNzIG1vZGUgaXMgYmVpbmcgYXBwbGllZCwgc2tpcAo+ ID4gZGlzYWJsZVxuIik7Cj4gPiArCQlyZXR1cm47Cj4gPiArCX0KPiA+ICsKPiA+ICAJZHB1X2Vu YyA9IHRvX2RwdV9lbmNvZGVyX3ZpcnQoZHJtX2VuYyk7Cj4gPiAgCURQVV9ERUJVR19FTkMoZHB1 X2VuYywgIlxuIik7Cj4gPiAKPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbXNtL21z bV9hdG9taWMuYwo+ID4gYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9hdG9taWMuYwo+ID4gaW5k ZXggNDY1MzZlZGI3MmVlLi41Y2ZiODAzNDUwNTIgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vbXNtL21zbV9hdG9taWMuYwo+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9tc21f YXRvbWljLmMKPiA+IEBAIC04NCwxODkgKzg0LDYgQEAgc3RhdGljIHZvaWQgbXNtX2F0b21pY193 YWl0X2Zvcl9jb21taXRfZG9uZSgKPiA+ICAJfQo+ID4gIH0KPiA+IAo+ID4gLXN0YXRpYyB2b2lk Cj4gPiAtbXNtX2Rpc2FibGVfb3V0cHV0cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZQo+ID4gKm9sZF9zdGF0ZSkKPiA+IC17Cj4gPiAtCXN0cnVjdCBkcm1f Y29ubmVjdG9yICpjb25uZWN0b3I7Cj4gPiAtCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpv bGRfY29ubl9zdGF0ZSwgKm5ld19jb25uX3N0YXRlOwo+ID4gLQlzdHJ1Y3QgZHJtX2NydGMgKmNy dGM7Cj4gPiAtCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsICpuZXdfY3J0 Y19zdGF0ZTsKPiA+IC0JaW50IGk7Cj4gPiAtCj4gPiAtCWZvcl9lYWNoX29sZG5ld19jb25uZWN0 b3JfaW5fc3RhdGUob2xkX3N0YXRlLCBjb25uZWN0b3IsCj4gPiBvbGRfY29ubl9zdGF0ZSwgbmV3 X2Nvbm5fc3RhdGUsIGkpIHsKPiA+IC0JCWNvbnN0IHN0cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJf ZnVuY3MgKmZ1bmNzOwo+ID4gLQkJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyOwo+ID4gLQkJ c3RydWN0IGRybV9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiA+IC0JCXVuc2lnbmVkIGlu dCBjcnRjX2lkeDsKPiA+IC0KPiA+IC0JCS8qCj4gPiAtCQkgKiBTaHV0IGRvd24gZXZlcnl0aGlu ZyB0aGF0J3MgaW4gdGhlIGNoYW5nZXNldCBhbmQKPiA+IGN1cnJlbnRseQo+ID4gLQkJICogc3Rp bGwgb24uIFNvIG5lZWQgdG8gY2hlY2sgdGhlIG9sZCwgc2F2ZWQgc3RhdGUuCj4gPiAtCQkgKi8K PiA+IC0JCWlmICghb2xkX2Nvbm5fc3RhdGUtPmNydGMpCj4gPiAtCQkJY29udGludWU7Cj4gPiAt Cj4gPiAtCQljcnRjX2lkeCA9IGRybV9jcnRjX2luZGV4KG9sZF9jb25uX3N0YXRlLT5jcnRjKTsK PiA+IC0JCW9sZF9jcnRjX3N0YXRlID0gZHJtX2F0b21pY19nZXRfb2xkX2NydGNfc3RhdGUob2xk X3N0YXRlLAo+ID4gLQo+ID4gb2xkX2Nvbm5fc3RhdGUtPmNydGMpOwo+ID4gLQo+ID4gLQkJaWYg KCFvbGRfY3J0Y19zdGF0ZS0+YWN0aXZlIHx8Cj4gPiAtCj4gPiAhZHJtX2F0b21pY19jcnRjX25l ZWRzX21vZGVzZXQob2xkX2Nvbm5fc3RhdGUtPmNydGMtPnN0YXRlKSkKPiA+IC0JCQljb250aW51 ZTsKPiA+IC0KPiA+IC0JCWVuY29kZXIgPSBvbGRfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyOwo+ ID4gLQo+ID4gLQkJLyogV2Ugc2hvdWxkbid0IGdldCB0aGlzIGZhciBpZiB3ZSBkaWRuJ3QgcHJl dmlvdXNseSBoYXZlCj4gPiAtCQkgKiBhbiBlbmNvZGVyLi4gYnV0IFdBUk5fT04oKSByYXRoZXIg dGhhbiBleHBsb2RlLgo+ID4gLQkJICovCj4gPiAtCQlpZiAoV0FSTl9PTighZW5jb2RlcikpCj4g PiAtCQkJY29udGludWU7Cj4gPiAtCj4gPiAtCQlpZiAobXNtX2lzX21vZGVfc2VhbWxlc3MoCj4g PiAtCQkJJmNvbm5lY3Rvci0+ZW5jb2Rlci0+Y3J0Yy0+c3RhdGUtPm1vZGUpIHx8Cj4gPiAtCQkJ bXNtX2lzX21vZGVfc2VhbWxlc3NfdnJyKAo+ID4gLQkJCSZjb25uZWN0b3ItPmVuY29kZXItPmNy dGMtPnN0YXRlLT5hZGp1c3RlZF9tb2RlKSkKPiA+IC0JCQljb250aW51ZTsKPiA+IC0KPiA+IC0J CWlmIChtc21faXNfbW9kZV9zZWFtbGVzc19kbXMoCj4gPiAtCQkJJmNvbm5lY3Rvci0+ZW5jb2Rl ci0+Y3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpKQo+ID4gLQkJCWNvbnRpbnVlOwo+ID4gLQo+ ID4gLQkJZnVuY3MgPSBlbmNvZGVyLT5oZWxwZXJfcHJpdmF0ZTsKPiA+IC0KPiA+IC0JCURSTV9E RUJVR19BVE9NSUMoImRpc2FibGluZyBbRU5DT0RFUjolZDolc11cbiIsCj4gPiAtCQkJCSBlbmNv ZGVyLT5iYXNlLmlkLCBlbmNvZGVyLT5uYW1lKTsKPiA+IC0KPiA+IC0JCS8qCj4gPiAtCQkgKiBF YWNoIGVuY29kZXIgaGFzIGF0IG1vc3Qgb25lIGNvbm5lY3RvciAoc2luY2Ugd2UgYWx3YXlzCj4g PiBzdGVhbAo+ID4gLQkJICogaXQgYXdheSksIHNvIHdlIHdvbid0IGNhbGwgZGlzYWJsZSBob29r cyB0d2ljZS4KPiA+IC0JCSAqLwo+ID4gLQkJZHJtX2JyaWRnZV9kaXNhYmxlKGVuY29kZXItPmJy aWRnZSk7Cj4gPiAtCj4gPiAtCQkvKiBSaWdodCBmdW5jdGlvbiBkZXBlbmRzIHVwb24gdGFyZ2V0 IHN0YXRlLiAqLwo+ID4gLQkJaWYgKG5ld19jb25uX3N0YXRlLT5jcnRjICYmIGZ1bmNzLT5wcmVw YXJlKQo+ID4gLQkJCWZ1bmNzLT5wcmVwYXJlKGVuY29kZXIpOwo+ID4gLQkJZWxzZSBpZiAoZnVu Y3MtPmRpc2FibGUpCj4gPiAtCQkJZnVuY3MtPmRpc2FibGUoZW5jb2Rlcik7Cj4gPiAtCQllbHNl Cj4gPiAtCQkJZnVuY3MtPmRwbXMoZW5jb2RlciwgRFJNX01PREVfRFBNU19PRkYpOwo+ID4gLQo+ ID4gLQkJZHJtX2JyaWRnZV9wb3N0X2Rpc2FibGUoZW5jb2Rlci0+YnJpZGdlKTsKPiA+IC0JfQo+ ID4gLQo+ID4gLQlmb3JfZWFjaF9vbGRuZXdfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMs IG9sZF9jcnRjX3N0YXRlLAo+ID4gbmV3X2NydGNfc3RhdGUsIGkpIHsKPiA+IC0JCWNvbnN0IHN0 cnVjdCBkcm1fY3J0Y19oZWxwZXJfZnVuY3MgKmZ1bmNzOwo+ID4gLQo+ID4gLQkJLyogU2h1dCBk b3duIGV2ZXJ5dGhpbmcgdGhhdCBuZWVkcyBhIGZ1bGwgbW9kZXNldC4gKi8KPiA+IC0JCWlmICgh ZHJtX2F0b21pY19jcnRjX25lZWRzX21vZGVzZXQobmV3X2NydGNfc3RhdGUpKQo+ID4gLQkJCWNv bnRpbnVlOwo+ID4gLQo+ID4gLQkJaWYgKCFvbGRfY3J0Y19zdGF0ZS0+YWN0aXZlKQo+ID4gLQkJ CWNvbnRpbnVlOwo+ID4gLQo+ID4gLQkJaWYgKG1zbV9pc19tb2RlX3NlYW1sZXNzKCZjcnRjLT5z dGF0ZS0+bW9kZSkgfHwKPiA+IC0KPiA+IG1zbV9pc19tb2RlX3NlYW1sZXNzX3ZycigmY3J0Yy0+ c3RhdGUtPmFkanVzdGVkX21vZGUpKQo+ID4gLQkJCWNvbnRpbnVlOwo+ID4gLQo+ID4gLQkJaWYg KG1zbV9pc19tb2RlX3NlYW1sZXNzX2RtcygmY3J0Yy0+c3RhdGUtPmFkanVzdGVkX21vZGUpKQo+ ID4gLQkJCWNvbnRpbnVlOwo+ID4gLQo+ID4gLQkJZnVuY3MgPSBjcnRjLT5oZWxwZXJfcHJpdmF0 ZTsKPiA+IC0KPiA+IC0JCURSTV9ERUJVR19BVE9NSUMoImRpc2FibGluZyBbQ1JUQzolZF1cbiIs Cj4gPiAtCQkJCSBjcnRjLT5iYXNlLmlkKTsKPiA+IC0KPiA+IC0JCS8qIFJpZ2h0IGZ1bmN0aW9u IGRlcGVuZHMgdXBvbiB0YXJnZXQgc3RhdGUuICovCj4gPiAtCQlpZiAobmV3X2NydGNfc3RhdGUt PmVuYWJsZSAmJiBmdW5jcy0+cHJlcGFyZSkKPiA+IC0JCQlmdW5jcy0+cHJlcGFyZShjcnRjKTsK PiA+IC0JCWVsc2UgaWYgKGZ1bmNzLT5kaXNhYmxlKQo+ID4gLQkJCWZ1bmNzLT5kaXNhYmxlKGNy dGMpOwo+ID4gLQkJZWxzZQo+ID4gLQkJCWZ1bmNzLT5kcG1zKGNydGMsIERSTV9NT0RFX0RQTVNf T0ZGKTsKPiA+IC0JfQo+ID4gLX0KPiA+IC0KPiA+IC1zdGF0aWMgdm9pZAo+ID4gLW1zbV9jcnRj X3NldF9tb2RlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRl Cj4gPiAqb2xkX3N0YXRlKQo+ID4gLXsKPiA+IC0Jc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ID4g LQlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ID4gLQlzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yOwo+ID4gLQlzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq bmV3X2Nvbm5fc3RhdGU7Cj4gPiAtCWludCBpOwo+ID4gLQo+ID4gLQlmb3JfZWFjaF9uZXdfY3J0 Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG5ld19jcnRjX3N0YXRlLCBpKSB7Cj4gPiAtCQlj b25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1bmNzICpmdW5jczsKPiA+IC0KPiA+IC0JCWlm ICghbmV3X2NydGNfc3RhdGUtPm1vZGVfY2hhbmdlZCkKPiA+IC0JCQljb250aW51ZTsKPiA+IC0K PiA+IC0JCWZ1bmNzID0gY3J0Yy0+aGVscGVyX3ByaXZhdGU7Cj4gPiAtCj4gPiAtCQlpZiAobmV3 X2NydGNfc3RhdGUtPmVuYWJsZSAmJiBmdW5jcy0+bW9kZV9zZXRfbm9mYikgewo+ID4gLQkJCURS TV9ERUJVR19BVE9NSUMoIm1vZGVzZXQgb24gW0NSVEM6JWRdXG4iLAo+ID4gLQkJCQkJIGNydGMt PmJhc2UuaWQpOwo+ID4gLQo+ID4gLQkJCWZ1bmNzLT5tb2RlX3NldF9ub2ZiKGNydGMpOwo+ID4g LQkJfQo+ID4gLQl9Cj4gPiAtCj4gPiAtCWZvcl9lYWNoX25ld19jb25uZWN0b3JfaW5fc3RhdGUo b2xkX3N0YXRlLCBjb25uZWN0b3IsCj4gPiBuZXdfY29ubl9zdGF0ZSwgaSkgewo+ID4gLQkJY29u c3Qgc3RydWN0IGRybV9lbmNvZGVyX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gPiAtCQlzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKm5ld19jcnRjX3N0YXRlOwo+ID4gLQkJc3RydWN0IGRybV9lbmNvZGVy ICplbmNvZGVyOwo+ID4gLQkJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsICphZGp1c3Rl ZF9tb2RlOwo+ID4gLQo+ID4gLQkJaWYgKCFuZXdfY29ubl9zdGF0ZS0+YmVzdF9lbmNvZGVyKQo+ ID4gLQkJCWNvbnRpbnVlOwo+ID4gLQo+ID4gLQkJZW5jb2RlciA9IG5ld19jb25uX3N0YXRlLT5i ZXN0X2VuY29kZXI7Cj4gPiAtCQlmdW5jcyA9IGVuY29kZXItPmhlbHBlcl9wcml2YXRlOwo+ID4g LQkJbmV3X2NydGNfc3RhdGUgPSBuZXdfY29ubl9zdGF0ZS0+Y3J0Yy0+c3RhdGU7Cj4gPiAtCQlt b2RlID0gJm5ld19jcnRjX3N0YXRlLT5tb2RlOwo+ID4gLQkJYWRqdXN0ZWRfbW9kZSA9ICZuZXdf Y3J0Y19zdGF0ZS0+YWRqdXN0ZWRfbW9kZTsKPiA+IC0KPiA+IC0JCWlmICghbmV3X2NydGNfc3Rh dGUtPm1vZGVfY2hhbmdlZCkKPiA+IC0JCQljb250aW51ZTsKPiA+IC0KPiA+IC0JCURSTV9ERUJV R19BVE9NSUMoIm1vZGVzZXQgb24gW0VOQ09ERVI6JWQ6JXNdXG4iLAo+ID4gLQkJCQkgZW5jb2Rl ci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSk7Cj4gPiAtCj4gPiAtCQkvKgo+ID4gLQkJICogRWFj aCBlbmNvZGVyIGhhcyBhdCBtb3N0IG9uZSBjb25uZWN0b3IgKHNpbmNlIHdlIGFsd2F5cwo+ID4g c3RlYWwKPiA+IC0JCSAqIGl0IGF3YXkpLCBzbyB3ZSB3b24ndCBjYWxsIG1vZGVfc2V0IGhvb2tz IHR3aWNlLgo+ID4gLQkJICovCj4gPiAtCQlpZiAoZnVuY3MtPm1vZGVfc2V0KQo+ID4gLQkJCWZ1 bmNzLT5tb2RlX3NldChlbmNvZGVyLCBtb2RlLCBhZGp1c3RlZF9tb2RlKTsKPiA+IC0KPiA+IC0J CWRybV9icmlkZ2VfbW9kZV9zZXQoZW5jb2Rlci0+YnJpZGdlLCBtb2RlLCBhZGp1c3RlZF9tb2Rl KTsKPiA+IC0JfQo+ID4gLX0KPiA+IC0KPiA+IC0vKioKPiA+IC0gKiBtc21fYXRvbWljX2hlbHBl cl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyAtIG1vZGVzZXQgY29tbWl0IHRvCj4gPiBkaXNhYmxl Cj4gPiBvdXRwdXRzCj4gPiAtICogQGRldjogRFJNIGRldmljZQo+ID4gLSAqIEBvbGRfc3RhdGU6 IGF0b21pYyBzdGF0ZSBvYmplY3Qgd2l0aCBvbGQgc3RhdGUgc3RydWN0dXJlcwo+ID4gLSAqCj4g PiAtICogVGhpcyBmdW5jdGlvbiBzaHV0cyBkb3duIGFsbCB0aGUgb3V0cHV0cyB0aGF0IG5lZWQg dG8gYmUgc2h1dCBkb3duCj4gPiBhbmQKPiA+IC0gKiBwcmVwYXJlcyB0aGVtIChpZiByZXF1aXJl ZCkgd2l0aCB0aGUgbmV3IG1vZGUuCj4gPiAtICoKPiA+IC0gKiBGb3IgY29tcGF0aWJpbGl0eSB3 aXRoIGxlZ2FjeSBjcnRjIGhlbHBlcnMgdGhpcyBzaG91bGQgYmUgY2FsbGVkCj4gPiBiZWZvcmUK PiA+IC0gKiBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfcGxhbmVzKCksIHdoaWNoIGlzIHdoYXQg dGhlIGRlZmF1bHQgY29tbWl0Cj4gPiBmdW5jdGlvbgo+ID4gLSAqIGRvZXMuIEJ1dCBkcml2ZXJz IHdpdGggZGlmZmVyZW50IG5lZWRzIGNhbiBncm91cCB0aGUgbW9kZXNldCBjb21taXRzCj4gPiB0 b2dldGhlcgo+ID4gLSAqIGFuZCBkbyB0aGUgcGxhbmUgY29tbWl0cyBhdCB0aGUgZW5kLiBUaGlz IGlzIHVzZWZ1bCBmb3IgZHJpdmVycwo+ID4gZG9pbmcKPiA+IHJ1bnRpbWUKPiA+IC0gKiBQTSBz aW5jZSBwbGFuZXMgdXBkYXRlcyB0aGVuIG9ubHkgaGFwcGVuIHdoZW4gdGhlIENSVEMgaXMgYWN0 dWFsbHkKPiA+IGVuYWJsZWQuCj4gPiAtICovCj4gPiAtdm9pZCBtc21fYXRvbWljX2hlbHBlcl9j b21taXRfbW9kZXNldF9kaXNhYmxlcyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gLQkJc3Ry dWN0IGRybV9hdG9taWNfc3RhdGUgKm9sZF9zdGF0ZSkKPiA+IC17Cj4gPiAtCW1zbV9kaXNhYmxl X291dHB1dHMoZGV2LCBvbGRfc3RhdGUpOwo+ID4gLQo+ID4gLQlkcm1fYXRvbWljX2hlbHBlcl91 cGRhdGVfbGVnYWN5X21vZGVzZXRfc3RhdGUoZGV2LCBvbGRfc3RhdGUpOwo+ID4gLQo+ID4gLQlt c21fY3J0Y19zZXRfbW9kZShkZXYsIG9sZF9zdGF0ZSk7Cj4gPiAtfQo+ID4gLQo+ID4gIC8qKgo+ ID4gICAqIG1zbV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMgLSBtb2Rlc2V0 IGNvbW1pdCB0byBlbmFibGUKPiA+IG91dHB1dHMKPiA+ICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4g PiBAQCAtNDA2LDcgKzIyMyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBsZXRlX2NvbW1pdChzdHJ1Y3Qg bXNtX2NvbW1pdCAqYykKPiA+IAo+ID4gIAlrbXMtPmZ1bmNzLT5wcmVwYXJlX2NvbW1pdChrbXMs IHN0YXRlKTsKPiA+IAo+ID4gLQltc21fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9kaXNh YmxlcyhkZXYsIHN0YXRlKTsKPiA+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X21vZGVzZXRf ZGlzYWJsZXMoZGV2LCBzdGF0ZSk7Cj4gPiAKPiA+ICAJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0 X3BsYW5lcyhkZXYsIHN0YXRlLCAwKTsKCi0tIApTZWFuIFBhdWwsIFNvZnR3YXJlIEVuZ2luZWVy LCBHb29nbGUgLyBDaHJvbWl1bSBPUwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwpGcmVlZHJlbm8gbWFpbGluZyBsaXN0CkZyZWVkcmVub0BsaXN0cy5mcmVl ZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5m by9mcmVlZHJlbm8K