From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v2 09/10] drm/imx: atomic phase 3 step 4: Use generic atomic page flip Date: Tue, 31 May 2016 13:03:35 +0200 Message-ID: <20160531110335.GG30560@phenom.ffwll.local> References: <1464686671-20299-1-git-send-email-gnuiyl@gmail.com> <1464686671-20299-10-git-send-email-gnuiyl@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id 847626E418 for ; Tue, 31 May 2016 11:03:40 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id q62so31512996wmg.3 for ; Tue, 31 May 2016 04:03:40 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1464686671-20299-10-git-send-email-gnuiyl@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Liu Ying Cc: Russell King , dri-devel@lists.freedesktop.org, Daniel Vetter List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMzEsIDIwMTYgYXQgMDU6MjQ6MzBQTSArMDgwMCwgTGl1IFlpbmcgd3JvdGU6 Cj4gVG8gc3VwcG9ydCBnZW5lcmljIGF0b21pYyBwYWdlIGZsaXAsIHRoaXMgcGF0Y2ggY3VzdG9t aXplcyAtPmF0b21pY19jb21taXQKPiBmb3Igbm9uYmxvY2sgY29tbWl0cy4KPiAKPiBTaWduZWQt b2ZmLWJ5OiBMaXUgWWluZyA8Z251aXlsQGdtYWlsLmNvbT4KPiAtLS0KPiB2MS0+djI6Cj4gKiBz L2FzeW5jL25vbmJsb2NrLyBvbiB0aGlzIHBhdGNoIHRvIGFkZHJlc3MgRGFuaWVsIFZldHRlcidz IGNvbW1lbnQuCj4gKiBXYWl0IGZvciBwZW5kaW5nIGNvbW1pdCBvbiBlYWNoIENSVEMgZm9yIGJv dGggYmxvY2sgYW5kIG5vbmJsb2NrCj4gICBhdG9taWMgbW9kZSBzZXR0aW5ncy4gIFRoaXMgd2F5 LCBhIGJsb2NrIGNvbW1pdCB3aWxsIG5vdCBvdmVyd3JpdGUKPiAgIHRoZSBoYXJkd2FyZSBzZXR0 aW5nIHdoZW4gYSBub25ibG9jayBwYWdlIGZsaXAgaXMgYWJvdXQgdG8gZmluaXNoLAo+ICAgc28g dGhhdCB0aGUgcGFnZSBmbGlwIG1heSB3YWl0IGZvciB2Ymxhbmsgc3VjY2Vzc2Z1bGx5LgoKT2ss IG15IGdlbmVyaWMgbm9uYmxvY2tpbmcgY29kZSBzZWVtcyBwcmV0dHkgc3RhYmxlIG5vd2FkYXlz LCBwbGVhc2UKcmViYXNlIG9uIHRvcCBvZiB0aGF0LiBNb3N0bHkgeW91IGp1c3QgaGF2ZSB0byBy ZXBsYWNlIHlvdXIKY29tbWl0X2NvbXBsZXRlIHdpdGggYW4gYXRvbWljX2NvbW1pdF90YWlsIHRo YXQgeW91IHBsdWcgaW50bwpkZXYtPm1vZGVfY29uZmlnLmhlbHBlcl9wcml2YXRlLT5hdG9taWNf Y29tbWl0X3RhaWwuCgpOb3RlIHRoYXQgdGhlIG5vbmJsb2NraW5nIGhlbHBlcnMgYXJlIF92ZXJ5 XyBwaWNreSBhYm91dCB5b3VyIGhhbmRsaW5nIG9mCmNydGNfc3RhdGUtPmV2ZW50LiBJZiBhbnl0 aGluZyB0aW1lcyBvdXQgaXQncyBwcm9iYWJseSBiZWNhdXNlIHlvdXIgZHJpdmVyCmRpZG4ndCBz ZW5kIG91dCB0aGF0IGV2ZW50IGNvcnJlY3RseS4gQnV0IHRoYXQncyBqdXN0IGF0b21pYyBldmVu dApoYW5kbGluZywgc28gcmVhbGx5IGp1c3QgYSBkcml2ZXIgYnVnIGlmIHlvdSBoaXQgaXQuCgpG b3IgYW4gZXhhbXBsZSB0aGF0IGNsb3NlbHkgcmVzZW1ibGVzIHlvdXIgZHJpdmVyIGxvb2sgYXQg cm9ja2NoaXAuIFdlJ3JlCnN0aWxsIGh1bnRpbmcgZG93biBzb21lIG9mIHRoZSBldmVudCBoYW5k bGluZyBpc3N1ZXMuCi1EYW5pZWwKCj4gCj4gIGRyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1j b3JlLmMgfCAxMzUgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPiAgZHJpdmVycy9n cHUvZHJtL2lteC9pcHV2My1jcnRjLmMgICB8IDE1NiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgMTQyIGluc2VydGlvbnMoKyksIDE0OSBk ZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJt LWNvcmUuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMKPiBpbmRleCAyYTJh YjhjLi5kMmJiNzQzIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1j b3JlLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1kcm0tY29yZS5jCj4gQEAgLTE1 LDEwICsxNSwxNCBAQAo+ICAgKi8KPiAgI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+ICAj aW5jbHVkZSA8bGludXgvZGV2aWNlLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9mYi5oPgo+ICAjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4gICNp bmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L3Jlc2Vy dmF0aW9uLmg+Cj4gKyNpbmNsdWRlIDxsaW51eC93YWl0Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJt UC5oPgo+ICsjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4KPiAgI2luY2x1ZGUgPGRybS9kcm1f YXRvbWljX2hlbHBlci5oPgo+ICAjaW5jbHVkZSA8ZHJtL2RybV9mYl9oZWxwZXIuaD4KPiAgI2lu Y2x1ZGUgPGRybS9kcm1fY3J0Y19oZWxwZXIuaD4KPiBAQCAtNDgsNiArNTIsMTQgQEAgc3RydWN0 IGlteF9kcm1fZGV2aWNlIHsKPiAgc3RydWN0IGlteF9kcm1fY3J0YyB7Cj4gIAlzdHJ1Y3QgZHJt X2NydGMJCQkJKmNydGM7Cj4gIAlzdHJ1Y3QgaW14X2RybV9jcnRjX2hlbHBlcl9mdW5jcwlpbXhf ZHJtX2hlbHBlcl9mdW5jczsKPiArCXdhaXRfcXVldWVfaGVhZF90CQkJY29tbWl0X3dhaXQ7Cj4g Kwlib29sCQkJCQljb21taXRfcGVuZGluZzsKPiArfTsKPiArCj4gK3N0cnVjdCBpbXhfZHJtX2Nv bW1pdCB7Cj4gKwlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKPiArCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXY7Cj4gKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7Cj4gIH07Cj4gIAo+ICAj aWYgSVNfRU5BQkxFRChDT05GSUdfRFJNX0ZCREVWX0VNVUxBVElPTikKPiBAQCAtMTY4LDExICsx ODAsMTMwIEBAIHN0YXRpYyB2b2lkIGlteF9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZChzdHJ1Y3Qg ZHJtX2RldmljZSAqZHJtKQo+ICAJZHJtX2ZiZGV2X2NtYV9ob3RwbHVnX2V2ZW50KGlteGRybS0+ ZmJoZWxwZXIpOwo+ICB9Cj4gIAo+ICtzdGF0aWMgdm9pZCBpbXhfZHJtX2F0b21pY19jb21wbGV0 ZShzdHJ1Y3QgaW14X2RybV9jb21taXQgKmNvbW1pdCkKPiArewo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNvbW1pdC0+ZGV2Owo+ICsJc3RydWN0IGlteF9kcm1fZGV2aWNlICppbXhkcm0g PSBkZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGlteF9kcm1fY3J0YyAqaW14X2NydGM7Cj4g KwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqb2xkX3N0YXRlID0gY29tbWl0LT5zdGF0ZTsKPiAr CXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqb2xkX2Ny dGNfc3RhdGU7Cj4gKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpwbGFuZV9zdGF0ZTsKPiArCXN0 cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmo7Cj4gKwlzdHJ1Y3QgZmVuY2UgKmV4Y2w7 Cj4gKwl1bnNpZ25lZCBzaGFyZWRfY291bnQ7Cj4gKwlzdHJ1Y3QgZmVuY2UgKipzaGFyZWQ7Cj4g Kwl1bnNpZ25lZCBpbnQgaSwgajsKPiArCWludCByZXQ7Cj4gKwo+ICsJLyogV2FpdCBmb3IgZmVu Y2VzLiAqLwo+ICsJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShvbGRfc3RhdGUsIGNydGMsIG9sZF9j cnRjX3N0YXRlLCBpKSB7Cj4gKwkJaWYgKGNydGMtPnN0YXRlLT5ldmVudCkgewo+ICsJCQlwbGFu ZV9zdGF0ZSA9IGNydGMtPnByaW1hcnktPnN0YXRlOwo+ICsJCQljbWFfb2JqID0gZHJtX2ZiX2Nt YV9nZXRfZ2VtX29iaihwbGFuZV9zdGF0ZS0+ZmIsIDApOwo+ICsJCQlpZiAoY21hX29iai0+YmFz ZS5kbWFfYnVmKSB7Cj4gKwkJCQlyZXQgPSByZXNlcnZhdGlvbl9vYmplY3RfZ2V0X2ZlbmNlc19y Y3UoCj4gKwkJCQkJY21hX29iai0+YmFzZS5kbWFfYnVmLT5yZXN2LCAmZXhjbCwKPiArCQkJCQkm c2hhcmVkX2NvdW50LCAmc2hhcmVkKTsKPiArCQkJCWlmICh1bmxpa2VseShyZXQpKQo+ICsJCQkJ CURSTV9FUlJPUigiZmFpbGVkIHRvIGdldCBmZW5jZXMgIgo+ICsJCQkJCQkgICJmb3IgYnVmZmVy XG4iKTsKPiArCj4gKwkJCQlpZiAoZXhjbCkgewo+ICsJCQkJCWZlbmNlX3dhaXQoZXhjbCwgZmFs c2UpOwo+ICsJCQkJCWZlbmNlX3B1dChleGNsKTsKPiArCQkJCX0KPiArCQkJCWZvciAoaiA9IDA7 IGogPCBzaGFyZWRfY291bnQ7IGkrKykgewo+ICsJCQkJCWZlbmNlX3dhaXQoc2hhcmVkW2pdLCBm YWxzZSk7Cj4gKwkJCQkJZmVuY2VfcHV0KHNoYXJlZFtqXSk7Cj4gKwkJCQl9Cj4gKwkJCX0KPiAr CQl9Cj4gKwl9Cj4gKwo+ICsJLyogQXBwbHkgdGhlIGF0b21pYyB1cGRhdGUuICovCj4gKwlkcm1f YXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9kaXNhYmxlcyhkZXYsIG9sZF9zdGF0ZSk7Cj4g Kwlkcm1fYXRvbWljX2hlbHBlcl9jb21taXRfbW9kZXNldF9lbmFibGVzKGRldiwgb2xkX3N0YXRl KTsKPiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUsIGZh bHNlKTsKPiArCWRybV9hdG9taWNfaGVscGVyX3dhaXRfZm9yX3ZibGFua3MoZGV2LCBvbGRfc3Rh dGUpOwo+ICsJZHJtX2F0b21pY19oZWxwZXJfY2xlYW51cF9wbGFuZXMoZGV2LCBvbGRfc3RhdGUp Owo+ICsKPiArCWZvcl9lYWNoX2NydGNfaW5fc3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0 Y19zdGF0ZSwgaSkgewo+ICsJCWlteF9jcnRjID0gaW14ZHJtLT5jcnRjW2ldOwo+ICsKPiArCQkv KiBDb21wbGV0ZSB0aGUgY29tbWl0LCB3YWtlIHVwIGFueSB3YWl0ZXIuICovCj4gKwkJc3Bpbl9s b2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQubG9jayk7Cj4gKwkJaW14X2NydGMtPmNvbW1pdF9w ZW5kaW5nID0gZmFsc2U7Cj4gKwkJd2FrZV91cF9hbGxfbG9ja2VkKCZpbXhfY3J0Yy0+Y29tbWl0 X3dhaXQpOwo+ICsJCXNwaW5fdW5sb2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQubG9jayk7Cj4g Kwl9Cj4gKwo+ICsJZHJtX2F0b21pY19zdGF0ZV9mcmVlKG9sZF9zdGF0ZSk7Cj4gKwo+ICsJa2Zy ZWUoY29tbWl0KTsKPiArfQo+ICsKPiArc3RhdGljIHZvaWQgaW14X2RybV9hdG9taWNfd29yayhz dHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gK3sKPiArCXN0cnVjdCBpbXhfZHJtX2NvbW1pdCAq Y29tbWl0ID0KPiArCQljb250YWluZXJfb2Yod29yaywgc3RydWN0IGlteF9kcm1fY29tbWl0LCB3 b3JrKTsKPiArCj4gKwlpbXhfZHJtX2F0b21pY19jb21wbGV0ZShjb21taXQpOwo+ICt9Cj4gKwo+ ICtzdGF0aWMgaW50IGlteF9kcm1fYXRvbWljX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAo+ICsJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwgYm9vbCBub25ibG9jaykK PiArewo+ICsJc3RydWN0IGlteF9kcm1fZGV2aWNlICppbXhkcm0gPSBkZXYtPmRldl9wcml2YXRl Owo+ICsJc3RydWN0IGlteF9kcm1fY3J0YyAqaW14X2NydGM7Cj4gKwlzdHJ1Y3QgaW14X2RybV9j b21taXQgKmNvbW1pdDsKPiArCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPiArCXN0cnVjdCBkcm1f Y3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZTsKPiArCXVuc2lnbmVkIGludCBpOwo+ICsJaW50IHJldDsK PiArCj4gKwljb21taXQgPSBremFsbG9jKHNpemVvZigqY29tbWl0KSwgR0ZQX0tFUk5FTCk7Cj4g KwlpZiAoY29tbWl0ID09IE5VTEwpCj4gKwkJcmV0dXJuIC1FTk9NRU07Cj4gKwo+ICsJY29tbWl0 LT5kZXYgPSBkZXY7Cj4gKwljb21taXQtPnN0YXRlID0gc3RhdGU7Cj4gKwo+ICsJZm9yX2VhY2hf Y3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+ICsJCWlteF9jcnRj ID0gaW14ZHJtLT5jcnRjW2ldOwo+ICsKPiArCQlzcGluX2xvY2soJmlteF9jcnRjLT5jb21taXRf d2FpdC5sb2NrKTsKPiArCQlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfbG9ja2VkKAo+ ICsJCQkJaW14X2NydGMtPmNvbW1pdF93YWl0LAo+ICsJCQkJIWlteF9jcnRjLT5jb21taXRfcGVu ZGluZyk7Cj4gKwkJaWYgKHJldCA9PSAwKQo+ICsJCQlpbXhfY3J0Yy0+Y29tbWl0X3BlbmRpbmcg PSB0cnVlOwo+ICsJCXNwaW5fdW5sb2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQubG9jayk7Cj4g Kwo+ICsJCWlmIChyZXQpIHsKPiArCQkJa2ZyZWUoY29tbWl0KTsKPiArCQkJcmV0dXJuIHJldDsK PiArCQl9Cj4gKwl9Cj4gKwo+ICsJaWYgKG5vbmJsb2NrKQo+ICsJCUlOSVRfV09SSygmY29tbWl0 LT53b3JrLCBpbXhfZHJtX2F0b21pY193b3JrKTsKPiArCj4gKwlkcm1fYXRvbWljX2hlbHBlcl9z d2FwX3N0YXRlKGRldiwgc3RhdGUpOwo+ICsKPiArCWlmIChub25ibG9jaykKPiArCQlzY2hlZHVs ZV93b3JrKCZjb21taXQtPndvcmspOwo+ICsJZWxzZQo+ICsJCWlteF9kcm1fYXRvbWljX2NvbXBs ZXRlKGNvbW1pdCk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGlteF9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7 Cj4gIAkuZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCj4gIAkub3V0cHV0X3BvbGxfY2hh bmdlZCA9IGlteF9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZCwKPiAgCS5hdG9taWNfY2hlY2sgPSBk cm1fYXRvbWljX2hlbHBlcl9jaGVjaywKPiAtCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0b21pY19o ZWxwZXJfY29tbWl0LAo+ICsJLmF0b21pY19jb21taXQgPSBpbXhfZHJtX2F0b21pY19jb21taXQs Cj4gIH07Cj4gIAo+ICAvKgo+IEBAIC0zMDcsNiArNDM4LDggQEAgaW50IGlteF9kcm1fYWRkX2Ny dGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ICAJaW14 X2RybV9jcnRjLT5pbXhfZHJtX2hlbHBlcl9mdW5jcyA9ICppbXhfZHJtX2hlbHBlcl9mdW5jczsK PiAgCWlteF9kcm1fY3J0Yy0+Y3J0YyA9IGNydGM7Cj4gIAo+ICsJaW5pdF93YWl0cXVldWVfaGVh ZCgmaW14X2RybV9jcnRjLT5jb21taXRfd2FpdCk7Cj4gKwo+ICAJY3J0Yy0+cG9ydCA9IHBvcnQ7 Cj4gIAo+ICAJaW14ZHJtLT5jcnRjW2lteGRybS0+cGlwZXMrK10gPSBpbXhfZHJtX2NydGM7Cj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jIGIvZHJpdmVycy9n cHUvZHJtL2lteC9pcHV2My1jcnRjLmMKPiBpbmRleCBmMjAzNDBmLi43ZWU1MWRiIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL2lteC9pcHV2My1jcnRjLmMKPiBAQCAtMjQsOCArMjQsNiBAQAo+ICAjaW5jbHVkZSA8 bGludXgvZmIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICAjaW5jbHVkZSA8bGludXgv ZXJybm8uaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4gLSNpbmNsdWRlIDxs aW51eC9kbWEtYnVmLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVyLmg+Cj4g ICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiAgCj4gQEAgLTM1LDIzICszMyw2 IEBACj4gIAo+ICAjZGVmaW5lIERSSVZFUl9ERVNDCQkiaS5NWCBJUFV2MyBHcmFwaGljcyIKPiAg Cj4gLWVudW0gaXB1X2ZsaXBfc3RhdHVzIHsKPiAtCUlQVV9GTElQX05PTkUsCj4gLQlJUFVfRkxJ UF9QRU5ESU5HLAo+IC0JSVBVX0ZMSVBfU1VCTUlUVEVELAo+IC19Owo+IC0KPiAtc3RydWN0IGlw dV9mbGlwX3dvcmsgewo+IC0Jc3RydWN0IHdvcmtfc3RydWN0CQl1bnJlZl93b3JrOwo+IC0Jc3Ry dWN0IGRybV9nZW1fb2JqZWN0CQkqYm87Cj4gLQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2 ZW50ICpwYWdlX2ZsaXBfZXZlbnQ7Cj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCWZlbmNlX3dvcms7 Cj4gLQlzdHJ1Y3QgaXB1X2NydGMJCQkqY3J0YzsKPiAtCXN0cnVjdCBmZW5jZQkJCSpleGNsOwo+ IC0JdW5zaWduZWQJCQlzaGFyZWRfY291bnQ7Cj4gLQlzdHJ1Y3QgZmVuY2UJCQkqKnNoYXJlZDsK PiAtfTsKPiAtCj4gIHN0cnVjdCBpcHVfY3J0YyB7Cj4gIAlzdHJ1Y3QgZGV2aWNlCQkqZGV2Owo+ ICAJc3RydWN0IGRybV9jcnRjCQliYXNlOwo+IEBAIC02Miw5ICs0Myw2IEBAIHN0cnVjdCBpcHVf Y3J0YyB7Cj4gIAo+ICAJc3RydWN0IGlwdV9kYwkJKmRjOwo+ICAJc3RydWN0IGlwdV9kaQkJKmRp Owo+IC0JZW51bSBpcHVfZmxpcF9zdGF0dXMJZmxpcF9zdGF0ZTsKPiAtCXN0cnVjdCB3b3JrcXVl dWVfc3RydWN0ICpmbGlwX3F1ZXVlOwo+IC0Jc3RydWN0IGlwdV9mbGlwX3dvcmsJKmZsaXBfd29y azsKPiAgCWludAkJCWlycTsKPiAgfTsKPiAgCj4gQEAgLTkyLDE1MCArNzAsMzUgQEAgc3RhdGlj IHZvaWQgaXB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlkcm1fY3J0 Y192Ymxhbmtfb2ZmKCZpcHVfY3J0Yy0+YmFzZSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkIGlw dV9mbGlwX3VucmVmX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykKPiAtewo+ IC0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKndvcmsgPQo+IC0JCQljb250YWluZXJfb2YoX193b3Jr LCBzdHJ1Y3QgaXB1X2ZsaXBfd29yaywgdW5yZWZfd29yayk7Cj4gLQo+IC0JZHJtX2dlbV9vYmpl Y3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQod29yay0+Ym8pOwo+IC0Ja2ZyZWUod29yayk7Cj4gLX0K PiAtCj4gLXN0YXRpYyB2b2lkIGlwdV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19z dHJ1Y3QgKl9fd29yaykKPiAtewo+IC0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKndvcmsgPQo+IC0J CQljb250YWluZXJfb2YoX193b3JrLCBzdHJ1Y3QgaXB1X2ZsaXBfd29yaywgZmVuY2Vfd29yayk7 Cj4gLQlpbnQgaTsKPiAtCj4gLQkvKiB3YWl0IGZvciBhbGwgZmVuY2VzIGF0dGFjaGVkIHRvIHRo ZSBGQiBvYmogdG8gc2lnbmFsICovCj4gLQlpZiAod29yay0+ZXhjbCkgewo+IC0JCWZlbmNlX3dh aXQod29yay0+ZXhjbCwgZmFsc2UpOwo+IC0JCWZlbmNlX3B1dCh3b3JrLT5leGNsKTsKPiAtCX0K PiAtCWZvciAoaSA9IDA7IGkgPCB3b3JrLT5zaGFyZWRfY291bnQ7IGkrKykgewo+IC0JCWZlbmNl X3dhaXQod29yay0+c2hhcmVkW2ldLCBmYWxzZSk7Cj4gLQkJZmVuY2VfcHV0KHdvcmstPnNoYXJl ZFtpXSk7Cj4gLQl9Cj4gLQo+IC0Jd29yay0+Y3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9GTElQX1NV Qk1JVFRFRDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBpcHVfcGFnZV9mbGlwKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKPiAtCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAtCQlzdHJ1Y3Qg ZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKPiAtCQl1aW50MzJfdCBwYWdlX2ZsaXBf ZmxhZ3MpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmogPSBkcm1f ZmJfY21hX2dldF9nZW1fb2JqKGZiLCAwKTsKPiAtCXN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMg PSB0b19pcHVfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpcHVfZmxpcF93b3JrICpmbGlwX3dvcms7 Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSAhPSBJUFVfRkxJ UF9OT05FKQo+IC0JCXJldHVybiAtRUJVU1k7Cj4gLQo+IC0JcmV0ID0gaW14X2RybV9jcnRjX3Zi bGFua19nZXQoaXB1X2NydGMtPmlteF9jcnRjKTsKPiAtCWlmIChyZXQpIHsKPiAtCQlkZXZfZGJn KGlwdV9jcnRjLT5kZXYsICJmYWlsZWQgdG8gYWNxdWlyZSB2YmxhbmsgY291bnRlclxuIik7Cj4g LQkJbGlzdF9kZWwoJmV2ZW50LT5iYXNlLmxpbmspOwo+IC0KPiAtCQlyZXR1cm4gcmV0Owo+IC0J fQo+IC0KPiAtCWZsaXBfd29yayA9IGt6YWxsb2Moc2l6ZW9mICpmbGlwX3dvcmssIEdGUF9LRVJO RUwpOwo+IC0JaWYgKCFmbGlwX3dvcmspIHsKPiAtCQlyZXQgPSAtRU5PTUVNOwo+IC0JCWdvdG8g cHV0X3ZibGFuazsKPiAtCX0KPiAtCUlOSVRfV09SSygmZmxpcF93b3JrLT51bnJlZl93b3JrLCBp cHVfZmxpcF91bnJlZl93b3JrX2Z1bmMpOwo+IC0JZmxpcF93b3JrLT5wYWdlX2ZsaXBfZXZlbnQg PSBldmVudDsKPiAtCj4gLQkvKiBnZXQgQk8gYmFja2luZyB0aGUgb2xkIGZyYW1lYnVmZmVyIGFu ZCB0YWtlIGEgcmVmZXJlbmNlICovCj4gLQlmbGlwX3dvcmstPmJvID0gJmRybV9mYl9jbWFfZ2V0 X2dlbV9vYmooY3J0Yy0+cHJpbWFyeS0+ZmIsIDApLT5iYXNlOwo+IC0JZHJtX2dlbV9vYmplY3Rf cmVmZXJlbmNlKGZsaXBfd29yay0+Ym8pOwo+IC0KPiAtCWlwdV9jcnRjLT5mbGlwX3dvcmsgPSBm bGlwX3dvcms7Cj4gLQkvKgo+IC0JICogSWYgdGhlIG9iamVjdCBoYXMgYSBETUFCVUYgYXR0YWNo ZWQsIHdlIG5lZWQgdG8gd2FpdCBvbiBpdHMgZmVuY2VzCj4gLQkgKiBpZiB0aGVyZSBhcmUgYW55 Lgo+IC0JICovCj4gLQlpZiAoY21hX29iai0+YmFzZS5kbWFfYnVmKSB7Cj4gLQkJSU5JVF9XT1JL KCZmbGlwX3dvcmstPmZlbmNlX3dvcmssIGlwdV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyk7Cj4gLQkJ ZmxpcF93b3JrLT5jcnRjID0gaXB1X2NydGM7Cj4gLQo+IC0JCXJldCA9IHJlc2VydmF0aW9uX29i amVjdF9nZXRfZmVuY2VzX3JjdSgKPiAtCQkJCWNtYV9vYmotPmJhc2UuZG1hX2J1Zi0+cmVzdiwg JmZsaXBfd29yay0+ZXhjbCwKPiAtCQkJCSZmbGlwX3dvcmstPnNoYXJlZF9jb3VudCwgJmZsaXBf d29yay0+c2hhcmVkKTsKPiAtCj4gLQkJaWYgKHVubGlrZWx5KHJldCkpIHsKPiAtCQkJRFJNX0VS Uk9SKCJmYWlsZWQgdG8gZ2V0IGZlbmNlcyBmb3IgYnVmZmVyXG4iKTsKPiAtCQkJZ290byBmcmVl X2ZsaXBfd29yazsKPiAtCQl9Cj4gLQo+IC0JCS8qIE5vIG5lZWQgdG8gcXVldWUgdGhlIHdvcmtl ciBpZiB0aGUgYXJlIG5vIGZlbmNlcyAqLwo+IC0JCWlmICghZmxpcF93b3JrLT5leGNsICYmICFm bGlwX3dvcmstPnNoYXJlZF9jb3VudCkgewo+IC0JCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSA9IElQ VV9GTElQX1NVQk1JVFRFRDsKPiAtCQl9IGVsc2Ugewo+IC0JCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0 ZSA9IElQVV9GTElQX1BFTkRJTkc7Cj4gLQkJCXF1ZXVlX3dvcmsoaXB1X2NydGMtPmZsaXBfcXVl dWUsCj4gLQkJCQkgICAmZmxpcF93b3JrLT5mZW5jZV93b3JrKTsKPiAtCQl9Cj4gLQl9IGVsc2Ug ewo+IC0JCWlwdV9jcnRjLT5mbGlwX3N0YXRlID0gSVBVX0ZMSVBfU1VCTUlUVEVEOwo+IC0JfQo+ IC0KPiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZSkKPiAtCQlkcm1fYXRvbWljX3NldF9mYl9m b3JfcGxhbmUoY3J0Yy0+cHJpbWFyeS0+c3RhdGUsIGZiKTsKPiAtCj4gLQlyZXR1cm4gMDsKPiAt Cj4gLWZyZWVfZmxpcF93b3JrOgo+IC0JZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2Nr ZWQoZmxpcF93b3JrLT5ibyk7Cj4gLQlrZnJlZShmbGlwX3dvcmspOwo+IC0JaXB1X2NydGMtPmZs aXBfd29yayA9IE5VTEw7Cj4gLXB1dF92Ymxhbms6Cj4gLQlpbXhfZHJtX2NydGNfdmJsYW5rX3B1 dChpcHVfY3J0Yy0+aW14X2NydGMpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAtCj4gIHN0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgaXB1X2NydGNfZnVuY3MgPSB7Cj4gIAku c2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCj4gIAkuZGVzdHJveSA9 IGRybV9jcnRjX2NsZWFudXAsCj4gLQkucGFnZV9mbGlwID0gaXB1X3BhZ2VfZmxpcCwKPiArCS5w YWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCj4gIAkucmVzZXQgPSBkcm1f YXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAo+ICAJLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSBk cm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKPiAgCS5hdG9taWNfZGVzdHJv eV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKPiAgfTsKPiAg Cj4gLXN0YXRpYyB2b2lkIGlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChzdHJ1Y3QgaXB1X2NydGMg KmlwdV9jcnRjKQo+ICtzdGF0aWMgdm9pZCBpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAoc3RydWN0 IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0gY3J0Yy0+ ZGV2Owo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkcm0g PSBpcHVfY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgaXB1X2ZsaXBfd29yayAqd29yayA9IGlw dV9jcnRjLT5mbGlwX3dvcms7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRybS0+ZXZlbnRf bG9jaywgZmxhZ3MpOwo+IC0JaWYgKHdvcmstPnBhZ2VfZmxpcF9ldmVudCkKPiAtCQlkcm1fY3J0 Y19zZW5kX3ZibGFua19ldmVudCgmaXB1X2NydGMtPmJhc2UsCj4gLQkJCQkJICAgd29yay0+cGFn ZV9mbGlwX2V2ZW50KTsKPiAtCWlteF9kcm1fY3J0Y192YmxhbmtfcHV0KGlwdV9jcnRjLT5pbXhf Y3J0Yyk7Cj4gKwlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ ZXZlbnQpOwo+ICsJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiAgCXNwaW5fdW5sb2NrX2ly cXJlc3RvcmUoJmRybS0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+ICB9Cj4gIAo+ICBzdGF0aWMgaXJx cmV0dXJuX3QgaXB1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAgewo+ICAJ c3RydWN0IGlwdV9jcnRjICppcHVfY3J0YyA9IGRldl9pZDsKPiArCXN0cnVjdCBkcm1fY3J0YyAq Y3J0YyA9ICZpcHVfY3J0Yy0+YmFzZTsKPiAgCj4gIAlpbXhfZHJtX2hhbmRsZV92YmxhbmsoaXB1 X2NydGMtPmlteF9jcnRjKTsKPiAgCj4gLQlpZiAoaXB1X2NydGMtPmZsaXBfc3RhdGUgPT0gSVBV X0ZMSVBfU1VCTUlUVEVEKSB7Cj4gLQkJc3RydWN0IGlwdV9wbGFuZSAqcGxhbmUgPSBpcHVfY3J0 Yy0+cGxhbmVbMF07Cj4gLQo+IC0JCWlwdV9wbGFuZV9zZXRfYmFzZShwbGFuZSwgaXB1X2NydGMt PmJhc2UucHJpbWFyeS0+ZmIpOwo+IC0JCWlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChpcHVfY3J0 Yyk7Cj4gLQkJcXVldWVfd29yayhpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSwKPiAtCQkJICAgJmlwdV9j cnRjLT5mbGlwX3dvcmstPnVucmVmX3dvcmspOwo+IC0JCWlwdV9jcnRjLT5mbGlwX3N0YXRlID0g SVBVX0ZMSVBfTk9ORTsKPiAtCX0KPiArCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpCj4gKwkJaXB1 X2NydGNfaGFuZGxlX3BhZ2VmbGlwKGNydGMpOwo+ICAKPiAgCXJldHVybiBJUlFfSEFORExFRDsK PiAgfQo+IEBAIC00NTgsOCArMzIxLDYgQEAgc3RhdGljIGludCBpcHVfY3J0Y19pbml0KHN0cnVj dCBpcHVfY3J0YyAqaXB1X2NydGMsCj4gIAkvKiBPbmx5IGVuYWJsZSBJUlEgd2hlbiB3ZSBhY3R1 YWxseSBuZWVkIGl0IHRvIHRyaWdnZXIgd29yay4gKi8KPiAgCWRpc2FibGVfaXJxKGlwdV9jcnRj LT5pcnEpOwo+ICAKPiAtCWlwdV9jcnRjLT5mbGlwX3F1ZXVlID0gY3JlYXRlX3NpbmdsZXRocmVh ZF93b3JrcXVldWUoImlwdS1jcnRjLWZsaXAiKTsKPiAtCj4gIAlyZXR1cm4gMDsKPiAgCj4gIGVy cl9wdXRfcGxhbmUxX3JlczoKPiBAQCAtNTA0LDcgKzM2NSw2IEBAIHN0YXRpYyB2b2lkIGlwdV9k cm1fdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmljZSAqbWFzdGVyLAo+ICAK PiAgCWlteF9kcm1fcmVtb3ZlX2NydGMoaXB1X2NydGMtPmlteF9jcnRjKTsKPiAgCj4gLQlkZXN0 cm95X3dvcmtxdWV1ZShpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSk7Cj4gIAlpcHVfcHV0X3Jlc291cmNl cyhpcHVfY3J0Yyk7Cj4gIAlpZiAoaXB1X2NydGMtPnBsYW5lWzFdKQo+ICAJCWlwdV9wbGFuZV9w dXRfcmVzb3VyY2VzKGlwdV9jcnRjLT5wbGFuZVsxXSk7Cj4gLS0gCj4gMi43LjQKPiAKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK