From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 13/14] drm/imx: atomic phase 3 step 4: Use generic atomic page flip Date: Tue, 24 May 2016 13:11:50 +0200 Message-ID: <20160524111150.GW27098@phenom.ffwll.local> References: <1464084653-16684-1-git-send-email-gnuiyl@gmail.com> <1464084653-16684-14-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-x243.google.com (mail-wm0-x243.google.com [IPv6:2a00:1450:400c:c09::243]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8DE546E71B for ; Tue, 24 May 2016 11:11:51 +0000 (UTC) Received: by mail-wm0-x243.google.com with SMTP id q62so5000811wmg.3 for ; Tue, 24 May 2016 04:11:51 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1464084653-16684-14-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 List-Id: dri-devel@lists.freedesktop.org T24gVHVlLCBNYXkgMjQsIDIwMTYgYXQgMDY6MTA6NTJQTSArMDgwMCwgTGl1IFlpbmcgd3JvdGU6 Cj4gVG8gc3VwcG9ydCBnZW5lcmljIGF0b21pYyBwYWdlIGZsaXAsIHRoaXMgcGF0Y2ggY3VzdG9t aXplcyAtPmF0b21pY19jb21taXQKPiBmb3IgYXN5bmMgY29tbWl0cy4KCkl0J3Mgbm93IGNhbGxl ZCBub25ibG9ja2luZyBpbnN0ZWFkIG9mIGFzeW5jLiBQbGVhc2UgcnVuIHMvYXN5bmMvbm9uYmxv Y2svCm92ZXIgdGhpcyBwYXRjaC4KLURhbmllbAoKPiAKPiBTaWduZWQtb2ZmLWJ5OiBMaXUgWWlu ZyA8Z251aXlsQGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJt LWNvcmUuYyB8IDEzNyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQo+ICBkcml2ZXJz L2dwdS9kcm0vaW14L2lwdXYzLWNydGMuYyAgIHwgMTU2ICsrLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAgMiBmaWxlcyBjaGFuZ2VkLCAxNDQgaW5zZXJ0aW9ucygrKSwgMTQ5 IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2lteC1k cm0tY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJtLWNvcmUuYwo+IGluZGV4IDJm YTA0YTAuLmNiNTIxY2IgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2lteC9pbXgtZHJt LWNvcmUuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvaW14LWRybS1jb3JlLmMKPiBAQCAt MTUsMTAgKzE1LDE0IEBACj4gICAqLwo+ICAjaW5jbHVkZSA8bGludXgvY29tcG9uZW50Lmg+Cj4g ICNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPiArI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4K PiAgI2luY2x1ZGUgPGxpbnV4L2ZiLmg+Cj4gICNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPiAg I2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+ICsjaW5jbHVkZSA8bGludXgvcmVz ZXJ2YXRpb24uaD4KPiArI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4KPiAgI2luY2x1ZGUgPGRybS9k cm1QLmg+Cj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21pYy5oPgo+ICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWNfaGVscGVyLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2hlbHBlci5oPgo+ICAj aW5jbHVkZSA8ZHJtL2RybV9jcnRjX2hlbHBlci5oPgo+IEBAIC00OCw2ICs1MiwxNCBAQCBzdHJ1 Y3QgaW14X2RybV9kZXZpY2Ugewo+ICBzdHJ1Y3QgaW14X2RybV9jcnRjIHsKPiAgCXN0cnVjdCBk cm1fY3J0YwkJCQkqY3J0YzsKPiAgCXN0cnVjdCBpbXhfZHJtX2NydGNfaGVscGVyX2Z1bmNzCWlt eF9kcm1faGVscGVyX2Z1bmNzOwo+ICsJd2FpdF9xdWV1ZV9oZWFkX3QJCQljb21taXRfd2FpdDsK PiArCWJvb2wJCQkJCWNvbW1pdF9wZW5kaW5nOwo+ICt9Owo+ICsKPiArc3RydWN0IGlteF9kcm1f Y29tbWl0IHsKPiArCXN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrOwo+ICsJc3RydWN0IGRybV9kZXZp Y2UgKmRldjsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKPiAgfTsKPiAgCj4g ICNpZiBJU19FTkFCTEVEKENPTkZJR19EUk1fRkJERVZfRU1VTEFUSU9OKQo+IEBAIC0xNjgsMTEg KzE4MCwxMzIgQEAgc3RhdGljIHZvaWQgaW14X2RybV9vdXRwdXRfcG9sbF9jaGFuZ2VkKHN0cnVj dCBkcm1fZGV2aWNlICpkcm0pCj4gIAlkcm1fZmJkZXZfY21hX2hvdHBsdWdfZXZlbnQoaW14ZHJt LT5mYmhlbHBlcik7Cj4gIH0KPiAgCj4gK3N0YXRpYyB2b2lkIGlteF9kcm1fYXRvbWljX2NvbXBs ZXRlKHN0cnVjdCBpbXhfZHJtX2NvbW1pdCAqY29tbWl0LCBib29sIGFzeW5jKQo+ICt7Cj4gKwlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29tbWl0LT5kZXY7Cj4gKwlzdHJ1Y3QgaW14X2RybV9k ZXZpY2UgKmlteGRybSA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaW14X2RybV9jcnRj ICppbXhfY3J0YzsKPiArCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUgPSBjb21t aXQtPnN0YXRlOwo+ICsJc3RydWN0IGRybV9jcnRjICpjcnRjOwo+ICsJc3RydWN0IGRybV9jcnRj X3N0YXRlICpvbGRfY3J0Y19zdGF0ZTsKPiArCXN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5l X3N0YXRlOwo+ICsJc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iajsKPiArCXN0cnVj dCBmZW5jZSAqZXhjbDsKPiArCXVuc2lnbmVkIHNoYXJlZF9jb3VudDsKPiArCXN0cnVjdCBmZW5j ZSAqKnNoYXJlZDsKPiArCXVuc2lnbmVkIGludCBpLCBqOwo+ICsJaW50IHJldDsKPiArCj4gKwkv KiBXYWl0IGZvciBmZW5jZXMuICovCj4gKwlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKG9sZF9zdGF0 ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUsIGkpIHsKPiArCQlpZiAoY3J0Yy0+c3RhdGUtPmV2ZW50 KSB7Cj4gKwkJCXBsYW5lX3N0YXRlID0gY3J0Yy0+cHJpbWFyeS0+c3RhdGU7Cj4gKwkJCWNtYV9v YmogPSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKHBsYW5lX3N0YXRlLT5mYiwgMCk7Cj4gKwkJCWlm IChjbWFfb2JqLT5iYXNlLmRtYV9idWYpIHsKPiArCQkJCXJldCA9IHJlc2VydmF0aW9uX29iamVj dF9nZXRfZmVuY2VzX3JjdSgKPiArCQkJCQljbWFfb2JqLT5iYXNlLmRtYV9idWYtPnJlc3YsICZl eGNsLAo+ICsJCQkJCSZzaGFyZWRfY291bnQsICZzaGFyZWQpOwo+ICsJCQkJaWYgKHVubGlrZWx5 KHJldCkpCj4gKwkJCQkJRFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGZlbmNlcyAiCj4gKwkJCQkJ CSAgImZvciBidWZmZXJcbiIpOwo+ICsKPiArCQkJCWlmIChleGNsKSB7Cj4gKwkJCQkJZmVuY2Vf d2FpdChleGNsLCBmYWxzZSk7Cj4gKwkJCQkJZmVuY2VfcHV0KGV4Y2wpOwo+ICsJCQkJfQo+ICsJ CQkJZm9yIChqID0gMDsgaiA8IHNoYXJlZF9jb3VudDsgaSsrKSB7Cj4gKwkJCQkJZmVuY2Vfd2Fp dChzaGFyZWRbal0sIGZhbHNlKTsKPiArCQkJCQlmZW5jZV9wdXQoc2hhcmVkW2pdKTsKPiArCQkJ CX0KPiArCQkJfQo+ICsJCX0KPiArCX0KPiArCj4gKwkvKiBBcHBseSB0aGUgYXRvbWljIHVwZGF0 ZS4gKi8KPiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2Rpc2FibGVzKGRldiwg b2xkX3N0YXRlKTsKPiArCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9tb2Rlc2V0X2VuYWJsZXMo ZGV2LCBvbGRfc3RhdGUpOwo+ICsJZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X3BsYW5lcyhkZXYs IG9sZF9zdGF0ZSwgZmFsc2UpOwo+ICsJZHJtX2F0b21pY19oZWxwZXJfd2FpdF9mb3JfdmJsYW5r cyhkZXYsIG9sZF9zdGF0ZSk7Cj4gKwlkcm1fYXRvbWljX2hlbHBlcl9jbGVhbnVwX3BsYW5lcyhk ZXYsIG9sZF9zdGF0ZSk7Cj4gKwo+ICsJaWYgKGFzeW5jKQo+ICsJCWZvcl9lYWNoX2NydGNfaW5f c3RhdGUob2xkX3N0YXRlLCBjcnRjLCBvbGRfY3J0Y19zdGF0ZSwgaSkgewo+ICsJCQlpbXhfY3J0 YyA9IGlteGRybS0+Y3J0Y1tpXTsKPiArCj4gKwkJCS8qIENvbXBsZXRlIHRoZSBjb21taXQsIHdh a2UgdXAgYW55IHdhaXRlci4gKi8KPiArCQkJc3Bpbl9sb2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dh aXQubG9jayk7Cj4gKwkJCWlteF9jcnRjLT5jb21taXRfcGVuZGluZyA9IGZhbHNlOwo+ICsJCQl3 YWtlX3VwX2FsbF9sb2NrZWQoJmlteF9jcnRjLT5jb21taXRfd2FpdCk7Cj4gKwkJCXNwaW5fdW5s b2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQubG9jayk7Cj4gKwkJfQo+ICsKPiArCWRybV9hdG9t aWNfc3RhdGVfZnJlZShvbGRfc3RhdGUpOwo+ICsKPiArCWtmcmVlKGNvbW1pdCk7Cj4gK30KPiAr Cj4gK3N0YXRpYyB2b2lkIGlteF9kcm1fYXRvbWljX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3 b3JrKQo+ICt7Cj4gKwlzdHJ1Y3QgaW14X2RybV9jb21taXQgKmNvbW1pdCA9Cj4gKwkJY29udGFp bmVyX29mKHdvcmssIHN0cnVjdCBpbXhfZHJtX2NvbW1pdCwgd29yayk7Cj4gKwo+ICsJaW14X2Ry bV9hdG9taWNfY29tcGxldGUoY29tbWl0LCB0cnVlKTsKPiArfQo+ICsKPiArc3RhdGljIGludCBp bXhfZHJtX2F0b21pY19jb21taXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJCSBzdHJ1 Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsIGJvb2wgYXN5bmMpCj4gK3sKPiArCXN0cnVjdCBp bXhfZHJtX2RldmljZSAqaW14ZHJtID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiArCXN0cnVjdCBpbXhf ZHJtX2NydGMgKmlteF9jcnRjOwo+ICsJc3RydWN0IGlteF9kcm1fY29tbWl0ICpjb21taXQ7Cj4g KwlzdHJ1Y3QgZHJtX2NydGMgKmNydGM7Cj4gKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKmNydGNf c3RhdGU7Cj4gKwl1bnNpZ25lZCBpbnQgaTsKPiArCWludCByZXQ7Cj4gKwo+ICsJY29tbWl0ID0g a3phbGxvYyhzaXplb2YoKmNvbW1pdCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKGNvbW1pdCA9PSBO VUxMKQo+ICsJCXJldHVybiAtRU5PTUVNOwo+ICsKPiArCWNvbW1pdC0+ZGV2ID0gZGV2Owo+ICsJ Y29tbWl0LT5zdGF0ZSA9IHN0YXRlOwo+ICsKPiArCWlmIChhc3luYykgewo+ICsJCWZvcl9lYWNo X2NydGNfaW5fc3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiArCQkJaW14X2Ny dGMgPSBpbXhkcm0tPmNydGNbaV07Cj4gKwo+ICsJCQlzcGluX2xvY2soJmlteF9jcnRjLT5jb21t aXRfd2FpdC5sb2NrKTsKPiArCQkJcmV0ID0gd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX2xvY2tl ZCgKPiArCQkJCQlpbXhfY3J0Yy0+Y29tbWl0X3dhaXQsCj4gKwkJCQkJIWlteF9jcnRjLT5jb21t aXRfcGVuZGluZyk7Cj4gKwkJCWlmIChyZXQgPT0gMCkKPiArCQkJCWlteF9jcnRjLT5jb21taXRf cGVuZGluZyA9IHRydWU7Cj4gKwkJCXNwaW5fdW5sb2NrKCZpbXhfY3J0Yy0+Y29tbWl0X3dhaXQu bG9jayk7Cj4gKwo+ICsJCQlpZiAocmV0KSB7Cj4gKwkJCQlrZnJlZShjb21taXQpOwo+ICsJCQkJ cmV0dXJuIHJldDsKPiArCQkJfQo+ICsJCX0KPiArCj4gKwkJSU5JVF9XT1JLKCZjb21taXQtPndv cmssIGlteF9kcm1fYXRvbWljX3dvcmspOwo+ICsJfQo+ICsKPiArCWRybV9hdG9taWNfaGVscGVy X3N3YXBfc3RhdGUoZGV2LCBzdGF0ZSk7Cj4gKwo+ICsJaWYgKGFzeW5jKQo+ICsJCXNjaGVkdWxl X3dvcmsoJmNvbW1pdC0+d29yayk7Cj4gKwllbHNlCj4gKwkJaW14X2RybV9hdG9taWNfY29tcGxl dGUoY29tbWl0LCBhc3luYyk7Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArCj4gIHN0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX21vZGVfY29uZmlnX2Z1bmNzIGlteF9kcm1fbW9kZV9jb25maWdfZnVu Y3MgPSB7Cj4gIAkuZmJfY3JlYXRlID0gZHJtX2ZiX2NtYV9jcmVhdGUsCj4gIAkub3V0cHV0X3Bv bGxfY2hhbmdlZCA9IGlteF9kcm1fb3V0cHV0X3BvbGxfY2hhbmdlZCwKPiAgCS5hdG9taWNfY2hl Y2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKPiAtCS5hdG9taWNfY29tbWl0ID0gZHJtX2F0 b21pY19oZWxwZXJfY29tbWl0LAo+ICsJLmF0b21pY19jb21taXQgPSBpbXhfZHJtX2F0b21pY19j b21taXQsCj4gIH07Cj4gIAo+ICAvKgo+IEBAIC0zMTUsNiArNDQ4LDggQEAgaW50IGlteF9kcm1f YWRkX2NydGMoc3RydWN0IGRybV9kZXZpY2UgKmRybSwgc3RydWN0IGRybV9jcnRjICpjcnRjLAo+ ICAJaW14X2RybV9jcnRjLT5pbXhfZHJtX2hlbHBlcl9mdW5jcyA9ICppbXhfZHJtX2hlbHBlcl9m dW5jczsKPiAgCWlteF9kcm1fY3J0Yy0+Y3J0YyA9IGNydGM7Cj4gIAo+ICsJaW5pdF93YWl0cXVl dWVfaGVhZCgmaW14X2RybV9jcnRjLT5jb21taXRfd2FpdCk7Cj4gKwo+ICAJY3J0Yy0+cG9ydCA9 IHBvcnQ7Cj4gIAo+ICAJaW14ZHJtLT5jcnRjW2lteGRybS0+cGlwZXMrK10gPSBpbXhfZHJtX2Ny dGM7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jIGIvZHJp dmVycy9ncHUvZHJtL2lteC9pcHV2My1jcnRjLmMKPiBpbmRleCA0ZDFiOTExLi5kY2JlYjU2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvaXB1djMtY3J0Yy5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2lteC9pcHV2My1jcnRjLmMKPiBAQCAtMjQsOCArMjQsNiBAQAo+ICAjaW5j bHVkZSA8bGludXgvZmIuaD4KPiAgI2luY2x1ZGUgPGxpbnV4L2Nsay5oPgo+ICAjaW5jbHVkZSA8 bGludXgvZXJybm8uaD4KPiAtI2luY2x1ZGUgPGxpbnV4L3Jlc2VydmF0aW9uLmg+Cj4gLSNpbmNs dWRlIDxsaW51eC9kbWEtYnVmLmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2dlbV9jbWFfaGVscGVy Lmg+Cj4gICNpbmNsdWRlIDxkcm0vZHJtX2ZiX2NtYV9oZWxwZXIuaD4KPiAgCj4gQEAgLTM1LDIz ICszMyw2IEBACj4gIAo+ICAjZGVmaW5lIERSSVZFUl9ERVNDCQkiaS5NWCBJUFV2MyBHcmFwaGlj cyIKPiAgCj4gLWVudW0gaXB1X2ZsaXBfc3RhdHVzIHsKPiAtCUlQVV9GTElQX05PTkUsCj4gLQlJ UFVfRkxJUF9QRU5ESU5HLAo+IC0JSVBVX0ZMSVBfU1VCTUlUVEVELAo+IC19Owo+IC0KPiAtc3Ry dWN0IGlwdV9mbGlwX3dvcmsgewo+IC0Jc3RydWN0IHdvcmtfc3RydWN0CQl1bnJlZl93b3JrOwo+ IC0Jc3RydWN0IGRybV9nZW1fb2JqZWN0CQkqYm87Cj4gLQlzdHJ1Y3QgZHJtX3BlbmRpbmdfdmJs YW5rX2V2ZW50ICpwYWdlX2ZsaXBfZXZlbnQ7Cj4gLQlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCWZlbmNl X3dvcms7Cj4gLQlzdHJ1Y3QgaXB1X2NydGMJCQkqY3J0YzsKPiAtCXN0cnVjdCBmZW5jZQkJCSpl eGNsOwo+IC0JdW5zaWduZWQJCQlzaGFyZWRfY291bnQ7Cj4gLQlzdHJ1Y3QgZmVuY2UJCQkqKnNo YXJlZDsKPiAtfTsKPiAtCj4gIHN0cnVjdCBpcHVfY3J0YyB7Cj4gIAlzdHJ1Y3QgZGV2aWNlCQkq ZGV2Owo+ICAJc3RydWN0IGRybV9jcnRjCQliYXNlOwo+IEBAIC02Miw5ICs0Myw2IEBAIHN0cnVj dCBpcHVfY3J0YyB7Cj4gIAo+ICAJc3RydWN0IGlwdV9kYwkJKmRjOwo+ICAJc3RydWN0IGlwdV9k aQkJKmRpOwo+IC0JZW51bSBpcHVfZmxpcF9zdGF0dXMJZmxpcF9zdGF0ZTsKPiAtCXN0cnVjdCB3 b3JrcXVldWVfc3RydWN0ICpmbGlwX3F1ZXVlOwo+IC0Jc3RydWN0IGlwdV9mbGlwX3dvcmsJKmZs aXBfd29yazsKPiAgCWludAkJCWlycTsKPiAgfTsKPiAgCj4gQEAgLTk0LDE1MCArNzIsMzUgQEAg c3RhdGljIHZvaWQgaXB1X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4gIAlk cm1fY3J0Y192Ymxhbmtfb2ZmKCZpcHVfY3J0Yy0+YmFzZSk7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2 b2lkIGlwdV9mbGlwX3VucmVmX3dvcmtfZnVuYyhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKl9fd29yaykK PiAtewo+IC0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKndvcmsgPQo+IC0JCQljb250YWluZXJfb2Yo X193b3JrLCBzdHJ1Y3QgaXB1X2ZsaXBfd29yaywgdW5yZWZfd29yayk7Cj4gLQo+IC0JZHJtX2dl bV9vYmplY3RfdW5yZWZlcmVuY2VfdW5sb2NrZWQod29yay0+Ym8pOwo+IC0Ja2ZyZWUod29yayk7 Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIGlwdV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyhzdHJ1Y3Qg d29ya19zdHJ1Y3QgKl9fd29yaykKPiAtewo+IC0Jc3RydWN0IGlwdV9mbGlwX3dvcmsgKndvcmsg PQo+IC0JCQljb250YWluZXJfb2YoX193b3JrLCBzdHJ1Y3QgaXB1X2ZsaXBfd29yaywgZmVuY2Vf d29yayk7Cj4gLQlpbnQgaTsKPiAtCj4gLQkvKiB3YWl0IGZvciBhbGwgZmVuY2VzIGF0dGFjaGVk IHRvIHRoZSBGQiBvYmogdG8gc2lnbmFsICovCj4gLQlpZiAod29yay0+ZXhjbCkgewo+IC0JCWZl bmNlX3dhaXQod29yay0+ZXhjbCwgZmFsc2UpOwo+IC0JCWZlbmNlX3B1dCh3b3JrLT5leGNsKTsK PiAtCX0KPiAtCWZvciAoaSA9IDA7IGkgPCB3b3JrLT5zaGFyZWRfY291bnQ7IGkrKykgewo+IC0J CWZlbmNlX3dhaXQod29yay0+c2hhcmVkW2ldLCBmYWxzZSk7Cj4gLQkJZmVuY2VfcHV0KHdvcmst PnNoYXJlZFtpXSk7Cj4gLQl9Cj4gLQo+IC0Jd29yay0+Y3J0Yy0+ZmxpcF9zdGF0ZSA9IElQVV9G TElQX1NVQk1JVFRFRDsKPiAtfQo+IC0KPiAtc3RhdGljIGludCBpcHVfcGFnZV9mbGlwKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKPiAtCQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiAtCQlz dHJ1Y3QgZHJtX3BlbmRpbmdfdmJsYW5rX2V2ZW50ICpldmVudCwKPiAtCQl1aW50MzJfdCBwYWdl X2ZsaXBfZmxhZ3MpCj4gLXsKPiAtCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmog PSBkcm1fZmJfY21hX2dldF9nZW1fb2JqKGZiLCAwKTsKPiAtCXN0cnVjdCBpcHVfY3J0YyAqaXB1 X2NydGMgPSB0b19pcHVfY3J0YyhjcnRjKTsKPiAtCXN0cnVjdCBpcHVfZmxpcF93b3JrICpmbGlw X3dvcms7Cj4gLQlpbnQgcmV0Owo+IC0KPiAtCWlmIChpcHVfY3J0Yy0+ZmxpcF9zdGF0ZSAhPSBJ UFVfRkxJUF9OT05FKQo+IC0JCXJldHVybiAtRUJVU1k7Cj4gLQo+IC0JcmV0ID0gaW14X2RybV9j cnRjX3ZibGFua19nZXQoaXB1X2NydGMtPmlteF9jcnRjKTsKPiAtCWlmIChyZXQpIHsKPiAtCQlk ZXZfZGJnKGlwdV9jcnRjLT5kZXYsICJmYWlsZWQgdG8gYWNxdWlyZSB2YmxhbmsgY291bnRlclxu Iik7Cj4gLQkJbGlzdF9kZWwoJmV2ZW50LT5iYXNlLmxpbmspOwo+IC0KPiAtCQlyZXR1cm4gcmV0 Owo+IC0JfQo+IC0KPiAtCWZsaXBfd29yayA9IGt6YWxsb2Moc2l6ZW9mICpmbGlwX3dvcmssIEdG UF9LRVJORUwpOwo+IC0JaWYgKCFmbGlwX3dvcmspIHsKPiAtCQlyZXQgPSAtRU5PTUVNOwo+IC0J CWdvdG8gcHV0X3ZibGFuazsKPiAtCX0KPiAtCUlOSVRfV09SSygmZmxpcF93b3JrLT51bnJlZl93 b3JrLCBpcHVfZmxpcF91bnJlZl93b3JrX2Z1bmMpOwo+IC0JZmxpcF93b3JrLT5wYWdlX2ZsaXBf ZXZlbnQgPSBldmVudDsKPiAtCj4gLQkvKiBnZXQgQk8gYmFja2luZyB0aGUgb2xkIGZyYW1lYnVm ZmVyIGFuZCB0YWtlIGEgcmVmZXJlbmNlICovCj4gLQlmbGlwX3dvcmstPmJvID0gJmRybV9mYl9j bWFfZ2V0X2dlbV9vYmooY3J0Yy0+cHJpbWFyeS0+ZmIsIDApLT5iYXNlOwo+IC0JZHJtX2dlbV9v YmplY3RfcmVmZXJlbmNlKGZsaXBfd29yay0+Ym8pOwo+IC0KPiAtCWlwdV9jcnRjLT5mbGlwX3dv cmsgPSBmbGlwX3dvcms7Cj4gLQkvKgo+IC0JICogSWYgdGhlIG9iamVjdCBoYXMgYSBETUFCVUYg YXR0YWNoZWQsIHdlIG5lZWQgdG8gd2FpdCBvbiBpdHMgZmVuY2VzCj4gLQkgKiBpZiB0aGVyZSBh cmUgYW55Lgo+IC0JICovCj4gLQlpZiAoY21hX29iai0+YmFzZS5kbWFfYnVmKSB7Cj4gLQkJSU5J VF9XT1JLKCZmbGlwX3dvcmstPmZlbmNlX3dvcmssIGlwdV9mbGlwX2ZlbmNlX3dvcmtfZnVuYyk7 Cj4gLQkJZmxpcF93b3JrLT5jcnRjID0gaXB1X2NydGM7Cj4gLQo+IC0JCXJldCA9IHJlc2VydmF0 aW9uX29iamVjdF9nZXRfZmVuY2VzX3JjdSgKPiAtCQkJCWNtYV9vYmotPmJhc2UuZG1hX2J1Zi0+ cmVzdiwgJmZsaXBfd29yay0+ZXhjbCwKPiAtCQkJCSZmbGlwX3dvcmstPnNoYXJlZF9jb3VudCwg JmZsaXBfd29yay0+c2hhcmVkKTsKPiAtCj4gLQkJaWYgKHVubGlrZWx5KHJldCkpIHsKPiAtCQkJ RFJNX0VSUk9SKCJmYWlsZWQgdG8gZ2V0IGZlbmNlcyBmb3IgYnVmZmVyXG4iKTsKPiAtCQkJZ290 byBmcmVlX2ZsaXBfd29yazsKPiAtCQl9Cj4gLQo+IC0JCS8qIE5vIG5lZWQgdG8gcXVldWUgdGhl IHdvcmtlciBpZiB0aGUgYXJlIG5vIGZlbmNlcyAqLwo+IC0JCWlmICghZmxpcF93b3JrLT5leGNs ICYmICFmbGlwX3dvcmstPnNoYXJlZF9jb3VudCkgewo+IC0JCQlpcHVfY3J0Yy0+ZmxpcF9zdGF0 ZSA9IElQVV9GTElQX1NVQk1JVFRFRDsKPiAtCQl9IGVsc2Ugewo+IC0JCQlpcHVfY3J0Yy0+Zmxp cF9zdGF0ZSA9IElQVV9GTElQX1BFTkRJTkc7Cj4gLQkJCXF1ZXVlX3dvcmsoaXB1X2NydGMtPmZs aXBfcXVldWUsCj4gLQkJCQkgICAmZmxpcF93b3JrLT5mZW5jZV93b3JrKTsKPiAtCQl9Cj4gLQl9 IGVsc2Ugewo+IC0JCWlwdV9jcnRjLT5mbGlwX3N0YXRlID0gSVBVX0ZMSVBfU1VCTUlUVEVEOwo+ IC0JfQo+IC0KPiAtCWlmIChjcnRjLT5wcmltYXJ5LT5zdGF0ZSkKPiAtCQlkcm1fYXRvbWljX3Nl dF9mYl9mb3JfcGxhbmUoY3J0Yy0+cHJpbWFyeS0+c3RhdGUsIGZiKTsKPiAtCj4gLQlyZXR1cm4g MDsKPiAtCj4gLWZyZWVfZmxpcF93b3JrOgo+IC0JZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2Vf dW5sb2NrZWQoZmxpcF93b3JrLT5ibyk7Cj4gLQlrZnJlZShmbGlwX3dvcmspOwo+IC0JaXB1X2Ny dGMtPmZsaXBfd29yayA9IE5VTEw7Cj4gLXB1dF92Ymxhbms6Cj4gLQlpbXhfZHJtX2NydGNfdmJs YW5rX3B1dChpcHVfY3J0Yy0+aW14X2NydGMpOwo+IC0KPiAtCXJldHVybiByZXQ7Cj4gLX0KPiAt Cj4gIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVuY3MgaXB1X2NydGNfZnVuY3MgPSB7 Cj4gIAkuc2V0X2NvbmZpZyA9IGRybV9hdG9taWNfaGVscGVyX3NldF9jb25maWcsCj4gIAkuZGVz dHJveSA9IGRybV9jcnRjX2NsZWFudXAsCj4gLQkucGFnZV9mbGlwID0gaXB1X3BhZ2VfZmxpcCwK PiArCS5wYWdlX2ZsaXAgPSBkcm1fYXRvbWljX2hlbHBlcl9wYWdlX2ZsaXAsCj4gIAkucmVzZXQg PSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX3Jlc2V0LAo+ICAJLmF0b21pY19kdXBsaWNhdGVfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX2R1cGxpY2F0ZV9zdGF0ZSwKPiAgCS5hdG9taWNf ZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2NydGNfZGVzdHJveV9zdGF0ZSwKPiAg fTsKPiAgCj4gLXN0YXRpYyB2b2lkIGlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChzdHJ1Y3QgaXB1 X2NydGMgKmlwdV9jcnRjKQo+ICtzdGF0aWMgdm9pZCBpcHVfY3J0Y19oYW5kbGVfcGFnZWZsaXAo c3RydWN0IGRybV9jcnRjICpjcnRjKQo+ICB7Cj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZHJtID0g Y3J0Yy0+ZGV2Owo+ICAJdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCXN0cnVjdCBkcm1fZGV2aWNl ICpkcm0gPSBpcHVfY3J0Yy0+YmFzZS5kZXY7Cj4gLQlzdHJ1Y3QgaXB1X2ZsaXBfd29yayAqd29y ayA9IGlwdV9jcnRjLT5mbGlwX3dvcms7Cj4gIAo+ICAJc3Bpbl9sb2NrX2lycXNhdmUoJmRybS0+ ZXZlbnRfbG9jaywgZmxhZ3MpOwo+IC0JaWYgKHdvcmstPnBhZ2VfZmxpcF9ldmVudCkKPiAtCQlk cm1fY3J0Y19zZW5kX3ZibGFua19ldmVudCgmaXB1X2NydGMtPmJhc2UsCj4gLQkJCQkJICAgd29y ay0+cGFnZV9mbGlwX2V2ZW50KTsKPiAtCWlteF9kcm1fY3J0Y192YmxhbmtfcHV0KGlwdV9jcnRj LT5pbXhfY3J0Yyk7Cj4gKwlkcm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5z dGF0ZS0+ZXZlbnQpOwo+ICsJY3J0Yy0+c3RhdGUtPmV2ZW50ID0gTlVMTDsKPiAgCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmRybS0+ZXZlbnRfbG9jaywgZmxhZ3MpOwo+ICB9Cj4gIAo+ICBzdGF0 aWMgaXJxcmV0dXJuX3QgaXB1X2lycV9oYW5kbGVyKGludCBpcnEsIHZvaWQgKmRldl9pZCkKPiAg ewo+ICAJc3RydWN0IGlwdV9jcnRjICppcHVfY3J0YyA9IGRldl9pZDsKPiArCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9ICZpcHVfY3J0Yy0+YmFzZTsKPiAgCj4gIAlpbXhfZHJtX2hhbmRsZV92Ymxh bmsoaXB1X2NydGMtPmlteF9jcnRjKTsKPiAgCj4gLQlpZiAoaXB1X2NydGMtPmZsaXBfc3RhdGUg PT0gSVBVX0ZMSVBfU1VCTUlUVEVEKSB7Cj4gLQkJc3RydWN0IGlwdV9wbGFuZSAqcGxhbmUgPSBp cHVfY3J0Yy0+cGxhbmVbMF07Cj4gLQo+IC0JCWlwdV9wbGFuZV9zZXRfYmFzZShwbGFuZSwgaXB1 X2NydGMtPmJhc2UucHJpbWFyeS0+ZmIpOwo+IC0JCWlwdV9jcnRjX2hhbmRsZV9wYWdlZmxpcChp cHVfY3J0Yyk7Cj4gLQkJcXVldWVfd29yayhpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSwKPiAtCQkJICAg JmlwdV9jcnRjLT5mbGlwX3dvcmstPnVucmVmX3dvcmspOwo+IC0JCWlwdV9jcnRjLT5mbGlwX3N0 YXRlID0gSVBVX0ZMSVBfTk9ORTsKPiAtCX0KPiArCWlmIChjcnRjLT5zdGF0ZS0+ZXZlbnQpCj4g KwkJaXB1X2NydGNfaGFuZGxlX3BhZ2VmbGlwKGNydGMpOwo+ICAKPiAgCXJldHVybiBJUlFfSEFO RExFRDsKPiAgfQo+IEBAIC00NTIsOCArMzE1LDYgQEAgc3RhdGljIGludCBpcHVfY3J0Y19pbml0 KHN0cnVjdCBpcHVfY3J0YyAqaXB1X2NydGMsCj4gIAo+ICAJaXB1X3BsYW5lX3B1dF9yZXNvdXJj ZXMoaXB1X2NydGMtPnBsYW5lWzBdKTsKPiAgCj4gLQlpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSA9IGNy ZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJpcHUtY3J0Yy1mbGlwIik7Cj4gLQo+ICAJcmV0 dXJuIDA7Cj4gIAo+ICBlcnJfcHV0X3BsYW5lX3JlczoKPiBAQCAtNDk1LDcgKzM1Niw2IEBAIHN0 YXRpYyB2b2lkIGlwdV9kcm1fdW5iaW5kKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IGRldmlj ZSAqbWFzdGVyLAo+ICAKPiAgCWlteF9kcm1fcmVtb3ZlX2NydGMoaXB1X2NydGMtPmlteF9jcnRj KTsKPiAgCj4gLQlkZXN0cm95X3dvcmtxdWV1ZShpcHVfY3J0Yy0+ZmxpcF9xdWV1ZSk7Cj4gIAlp cHVfcHV0X3Jlc291cmNlcyhpcHVfY3J0Yyk7Cj4gIH0KPiAgCj4gLS0gCj4gMi43LjQKPiAKPiBf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApE YW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8v YmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpkcmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2 ZWwK