From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 7/8] drm/qxl: Use drm_fb_helper deferred_io support Date: Wed, 20 Apr 2016 19:47:10 +0200 Message-ID: <20160420174710.GR2510@phenom.ffwll.local> References: <1461165929-11344-1-git-send-email-noralf@tronnes.org> <1461165929-11344-8-git-send-email-noralf@tronnes.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wm0-x241.google.com (mail-wm0-x241.google.com [IPv6:2a00:1450:400c:c09::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1FE1B6EABD for ; Wed, 20 Apr 2016 17:47:15 +0000 (UTC) Received: by mail-wm0-x241.google.com with SMTP id l6so15748104wml.3 for ; Wed, 20 Apr 2016 10:47:15 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1461165929-11344-8-git-send-email-noralf@tronnes.org> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Noralf =?iso-8859-1?Q?Tr=F8nnes?= Cc: linux-fbdev@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, tomi.valkeinen@ti.com, laurent.pinchart@ideasonboard.com List-Id: dri-devel@lists.freedesktop.org T24gV2VkLCBBcHIgMjAsIDIwMTYgYXQgMDU6MjU6MjhQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFVzZSB0aGUgZmJkZXYgZGVmZXJyZWQgaW8gc3VwcG9ydCBpbiBkcm1fZmJfaGVs cGVyLgo+IFRoZSAoc3RydWN0IGZiX29wcyAqKS0+ZmJfe2ZpbGxyZWN0LGNvcHlhcmVhLGltYWdl YmxpdH0gZnVuY3Rpb25zIHdpbGwKPiBub3cgYmUgZGVmZXJyZWQgaW4gdGhlIHNhbWUgd2F5IHRo YXQgbW1hcCBkYW1hZ2UgaXMsIGluc3RlYWQgb2YgYmVpbmcKPiBmbHVzaGVkIGRpcmVjdGx5Lgo+ IFRoaXMgcGF0Y2ggaGFzIG9ubHkgYmVlbiBjb21waWxlIHRlc3RlZC4KPiAKPiBTaWduZWQtb2Zm LWJ5OiBOb3JhbGYgVHLDuG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiAtLS0KPiAgZHJpdmVy cy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jIHwgICA5ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9x eGwvcXhsX2Rydi5oICAgICB8ICAgNyArLQo+ICBkcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9mYi5j ICAgICAgfCAyMjAgKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfa21zLmMgICAgIHwgICA0IC0KPiAgNCBmaWxlcyBjaGFuZ2Vk LCA2MiBpbnNlcnRpb25zKCspLCAxNzggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhs X2Rpc3BsYXkuYwo+IGluZGV4IDAzMDQwOWEuLjlhMDM1MjQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZGlzcGxheS5jCj4gQEAgLTQ2NSw3ICs0NjUsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jcnRjX2Z1bmNzIHF4bF9jcnRjX2Z1bmNzID0gewo+ICAJLnBhZ2VfZmxpcCA9IHF4bF9jcnRj X3BhZ2VfZmxpcCwKPiAgfTsKPiAgCj4gLXN0YXRpYyB2b2lkIHF4bF91c2VyX2ZyYW1lYnVmZmVy X2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4gK3ZvaWQgcXhsX3VzZXJfZnJh bWVidWZmZXJfZGVzdHJveShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKPiAgewo+ICAJc3Ry dWN0IHF4bF9mcmFtZWJ1ZmZlciAqcXhsX2ZiID0gdG9fcXhsX2ZyYW1lYnVmZmVyKGZiKTsKPiAg Cj4gQEAgLTUyNywxMiArNTI3LDEzIEBAIGludAo+ICBxeGxfZnJhbWVidWZmZXJfaW5pdChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICAJCSAgICAgc3RydWN0IHF4bF9mcmFtZWJ1ZmZlciAqcWZi LAo+ICAJCSAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAo+IC0J CSAgICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gKwkJICAgICBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaiwKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVu Y3MgKmZ1bmNzKQoKVGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQgYXQgYWxsIHRvIGhhdmUgYSBzZXBh cmF0ZSBmYiBmdW5jcyB0YWJsZSBmb3IgdGhlCmZiZGV2IGZiLiBCb3RoIC9zaG91bGQvIGJlIGFi bGUgdG8gdXNlIHRoZSBleGFjdCBzYW1lIChhbHJlYWR5IGV4aXN0aW5nKQotPmRpcnR5KCkgY2Fs bGJhY2suIFdlIG5lZWQgdGhpcyBvbmx5IGluIENNQSBiZWNhdXNlIENNQSBpcyBhIG1pZGxheWVy CnVzZWQgYnkgbXVsdGlwbGUgZHJpdmVycy4KCldpdGggdGhhdCBjaGFuZ2UgeW91IHNob3VsZCBi ZSBhYmxlIHRvIGNvbmRlbnNlIHRoaXMgcGF0Y2ggZG93biB0byBwcmV0dHkKbXVjaCBqdXN0IHJl bW92aW5nIGxpbmVzLiBXaGljaCBpcyBHb29kICh0bSkuCgpDaGVlcnMsIERhbmllbAoKPiAgewo+ ICAJaW50IHJldDsKPiAgCj4gIAlxZmItPm9iaiA9IG9iajsKPiAtCXJldCA9IGRybV9mcmFtZWJ1 ZmZlcl9pbml0KGRldiwgJnFmYi0+YmFzZSwgJnF4bF9mYl9mdW5jcyk7Cj4gKwlyZXQgPSBkcm1f ZnJhbWVidWZmZXJfaW5pdChkZXYsICZxZmItPmJhc2UsIGZ1bmNzKTsKPiAgCWlmIChyZXQpIHsK PiAgCQlxZmItPm9iaiA9IE5VTEw7Cj4gIAkJcmV0dXJuIHJldDsKPiBAQCAtOTk5LDcgKzEwMDAs NyBAQCBxeGxfdXNlcl9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwK PiAgCWlmIChxeGxfZmIgPT0gTlVMTCkKPiAgCQlyZXR1cm4gTlVMTDsKPiAgCj4gLQlyZXQgPSBx eGxfZnJhbWVidWZmZXJfaW5pdChkZXYsIHF4bF9mYiwgbW9kZV9jbWQsIG9iaik7Cj4gKwlyZXQg PSBxeGxfZnJhbWVidWZmZXJfaW5pdChkZXYsIHF4bF9mYiwgbW9kZV9jbWQsIG9iaiwgJnF4bF9m Yl9mdW5jcyk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJa2ZyZWUocXhsX2ZiKTsKPiAgCQlkcm1fZ2Vt X29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vcXhsL3F4bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCj4g aW5kZXggM2YzODk3ZS4uM2FkNjYwNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhs L3F4bF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCj4gQEAgLTMy NCw4ICszMjQsNiBAQCBzdHJ1Y3QgcXhsX2RldmljZSB7Cj4gIAlzdHJ1Y3Qgd29ya3F1ZXVlX3N0 cnVjdCAqZ2NfcXVldWU7Cj4gIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZ2Nfd29yazsKPiAgCj4gLQlz dHJ1Y3Qgd29ya19zdHJ1Y3QgZmJfd29yazsKPiAtCj4gIAlzdHJ1Y3QgZHJtX3Byb3BlcnR5ICpo b3RwbHVnX21vZGVfdXBkYXRlX3Byb3BlcnR5Owo+ICAJaW50IG1vbml0b3JzX2NvbmZpZ193aWR0 aDsKPiAgCWludCBtb25pdG9yc19jb25maWdfaGVpZ2h0Owo+IEBAIC0zODksMTEgKzM4NywxMyBA QCBpbnQgcXhsX2dldF9oYW5kbGVfZm9yX3ByaW1hcnlfZmIoc3RydWN0IHF4bF9kZXZpY2UgKnFk ZXYsCj4gIHZvaWQgcXhsX2ZiZGV2X3NldF9zdXNwZW5kKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2 LCBpbnQgc3RhdGUpOwo+ICAKPiAgLyogcXhsX2Rpc3BsYXkuYyAqLwo+ICt2b2lkIHF4bF91c2Vy X2ZyYW1lYnVmZmVyX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOwo+ICBpbnQK PiAgcXhsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKPiAgCQkgICAg IHN0cnVjdCBxeGxfZnJhbWVidWZmZXIgKnJmYiwKPiAgCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1f bW9kZV9mYl9jbWQyICptb2RlX2NtZCwKPiAtCQkgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqKTsKPiArCQkgICAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLAo+ICsJCSAgICAgY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyAqZnVuY3MpOwo+ICB2b2lkIHF4bF9kaXNw bGF5X3JlYWRfY2xpZW50X21vbml0b3JzX2NvbmZpZyhzdHJ1Y3QgcXhsX2RldmljZSAqcWRldik7 Cj4gIHZvaWQgcXhsX3NlbmRfbW9uaXRvcnNfY29uZmlnKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2 KTsKPiAgaW50IHF4bF9jcmVhdGVfbW9uaXRvcnNfb2JqZWN0KHN0cnVjdCBxeGxfZGV2aWNlICpx ZGV2KTsKPiBAQCAtNTUzLDcgKzU1Myw2IEBAIGludCBxeGxfaXJxX2luaXQoc3RydWN0IHF4bF9k ZXZpY2UgKnFkZXYpOwo+ICBpcnFyZXR1cm5fdCBxeGxfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9p ZCAqYXJnKTsKPiAgCj4gIC8qIHF4bF9mYi5jICovCj4gLWludCBxeGxfZmJfaW5pdChzdHJ1Y3Qg cXhsX2RldmljZSAqcWRldik7Cj4gIGJvb2wgcXhsX2ZiZGV2X3FvYmpfaXNfZmIoc3RydWN0IHF4 bF9kZXZpY2UgKnFkZXYsIHN0cnVjdCBxeGxfYm8gKnFvYmopOwo+ICAKPiAgaW50IHF4bF9kZWJ1 Z2ZzX2FkZF9maWxlcyhzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ZiLmMK PiBpbmRleCAwNmYwMzJkLi4wOTBkY2VlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9x eGwvcXhsX2ZiLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9mYi5jCj4gQEAgLTMw LDYgKzMwLDcgQEAKPiAgI2luY2x1ZGUgImRybS9kcm0uaCIKPiAgI2luY2x1ZGUgImRybS9kcm1f Y3J0Yy5oIgo+ICAjaW5jbHVkZSAiZHJtL2RybV9jcnRjX2hlbHBlci5oIgo+ICsjaW5jbHVkZSAi ZHJtL2RybV9yZWN0LmgiCj4gICNpbmNsdWRlICJxeGxfZHJ2LmgiCj4gIAo+ICAjaW5jbHVkZSAi cXhsX29iamVjdC5oIgo+IEBAIC00NiwxNSArNDcsNiBAQCBzdHJ1Y3QgcXhsX2ZiZGV2IHsKPiAg CXN0cnVjdCBsaXN0X2hlYWQgZGVsYXllZF9vcHM7Cj4gIAl2b2lkICpzaGFkb3c7Cj4gIAlpbnQg c2l6ZTsKPiAtCj4gLQkvKiBkaXJ0eSBtZW1vcnkgbG9nZ2luZyAqLwo+IC0Jc3RydWN0IHsKPiAt CQlzcGlubG9ja190IGxvY2s7Cj4gLQkJdW5zaWduZWQgeDE7Cj4gLQkJdW5zaWduZWQgeTE7Cj4g LQkJdW5zaWduZWQgeDI7Cj4gLQkJdW5zaWduZWQgeTI7Cj4gLQl9IGRpcnR5Owo+ICB9Owo+ICAK PiAgc3RhdGljIHZvaWQgcXhsX2ZiX2ltYWdlX2luaXQoc3RydWN0IHF4bF9mYl9pbWFnZSAqcXhs X2ZiX2ltYWdlLAo+IEBAIC04MiwxNjkgKzc0LDE4IEBAIHN0YXRpYyB2b2lkIHF4bF9mYl9pbWFn ZV9pbml0KHN0cnVjdCBxeGxfZmJfaW1hZ2UgKnF4bF9mYl9pbWFnZSwKPiAgCX0KPiAgfQo+ICAK PiAtc3RhdGljIHZvaWQgcXhsX2ZiX2RpcnR5X2ZsdXNoKHN0cnVjdCBmYl9pbmZvICppbmZvKQo+ IC17Cj4gLQlzdHJ1Y3QgcXhsX2ZiZGV2ICpxZmJkZXYgPSBpbmZvLT5wYXI7Cj4gLQlzdHJ1Y3Qg cXhsX2RldmljZSAqcWRldiA9IHFmYmRldi0+cWRldjsKPiAtCXN0cnVjdCBxeGxfZmJfaW1hZ2Ug cXhsX2ZiX2ltYWdlOwo+IC0Jc3RydWN0IGZiX2ltYWdlICppbWFnZSA9ICZxeGxfZmJfaW1hZ2Uu ZmJfaW1hZ2U7Cj4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOwo+IC0JdTMyIHgxLCB4MiwgeTEsIHky Owo+IC0KPiAtCS8qIFRPRE86IGhhcmQgY29kaW5nIDMyIGJwcCAqLwo+IC0JaW50IHN0cmlkZSA9 IHFmYmRldi0+cWZiLmJhc2UucGl0Y2hlc1swXTsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgm cWZiZGV2LT5kaXJ0eS5sb2NrLCBmbGFncyk7Cj4gLQo+IC0JeDEgPSBxZmJkZXYtPmRpcnR5Lngx Owo+IC0JeDIgPSBxZmJkZXYtPmRpcnR5LngyOwo+IC0JeTEgPSBxZmJkZXYtPmRpcnR5LnkxOwo+ IC0JeTIgPSBxZmJkZXYtPmRpcnR5LnkyOwo+IC0JcWZiZGV2LT5kaXJ0eS54MSA9IDA7Cj4gLQlx ZmJkZXYtPmRpcnR5LngyID0gMDsKPiAtCXFmYmRldi0+ZGlydHkueTEgPSAwOwo+IC0JcWZiZGV2 LT5kaXJ0eS55MiA9IDA7Cj4gLQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcWZiZGV2LT5k aXJ0eS5sb2NrLCBmbGFncyk7Cj4gLQo+IC0JLyoKPiAtCSAqIHdlIGFyZSB1c2luZyBhIHNoYWRv dyBkcmF3IGJ1ZmZlciwgYXQgcWRldi0+c3VyZmFjZTBfc2hhZG93Cj4gLQkgKi8KPiAtCXF4bF9p b19sb2cocWRldiwgImRpcnR5IHhbJWQsICVkXSwgeVslZCwgJWRdIiwgeDEsIHgyLCB5MSwgeTIp Owo+IC0JaW1hZ2UtPmR4ID0geDE7Cj4gLQlpbWFnZS0+ZHkgPSB5MTsKPiAtCWltYWdlLT53aWR0 aCA9IHgyIC0geDEgKyAxOwo+IC0JaW1hZ2UtPmhlaWdodCA9IHkyIC0geTEgKyAxOwo+IC0JaW1h Z2UtPmZnX2NvbG9yID0gMHhmZmZmZmZmZjsgLyogdW51c2VkLCBqdXN0IHRvIGF2b2lkIHVuaW5p dGlhbGl6ZWQKPiAtCQkJCQkgd2FybmluZ3MgKi8KPiAtCWltYWdlLT5iZ19jb2xvciA9IDA7Cj4g LQlpbWFnZS0+ZGVwdGggPSAzMjsJICAgICAvKiBUT0RPOiB0YWtlIGZyb20gc29tZXdoZXJlPyAq Lwo+IC0JaW1hZ2UtPmNtYXAuc3RhcnQgPSAwOwo+IC0JaW1hZ2UtPmNtYXAubGVuID0gMDsKPiAt CWltYWdlLT5jbWFwLnJlZCA9IE5VTEw7Cj4gLQlpbWFnZS0+Y21hcC5ncmVlbiA9IE5VTEw7Cj4g LQlpbWFnZS0+Y21hcC5ibHVlID0gTlVMTDsKPiAtCWltYWdlLT5jbWFwLnRyYW5zcCA9IE5VTEw7 Cj4gLQlpbWFnZS0+ZGF0YSA9IHFmYmRldi0+c2hhZG93ICsgKHgxICogNCkgKyAoc3RyaWRlICog eTEpOwo+IC0KPiAtCXF4bF9mYl9pbWFnZV9pbml0KCZxeGxfZmJfaW1hZ2UsIHFkZXYsIGluZm8s IE5VTEwpOwo+IC0JcXhsX2RyYXdfb3BhcXVlX2ZiKCZxeGxfZmJfaW1hZ2UsIHN0cmlkZSk7Cj4g LX0KPiAtCj4gLXN0YXRpYyB2b2lkIHF4bF9kaXJ0eV91cGRhdGUoc3RydWN0IHF4bF9mYmRldiAq cWZiZGV2LAo+IC0JCQkgICAgIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQo+ IC17Cj4gLQlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiA9IHFmYmRldi0+cWRldjsKPiAtCXVuc2ln bmVkIGxvbmcgZmxhZ3M7Cj4gLQlpbnQgeDIsIHkyOwo+IC0KPiAtCXgyID0geCArIHdpZHRoIC0g MTsKPiAtCXkyID0geSArIGhlaWdodCAtIDE7Cj4gLQo+IC0Jc3Bpbl9sb2NrX2lycXNhdmUoJnFm YmRldi0+ZGlydHkubG9jaywgZmxhZ3MpOwo+IC0KPiAtCWlmICgocWZiZGV2LT5kaXJ0eS55MiAt IHFmYmRldi0+ZGlydHkueTEpICYmCj4gLQkgICAgKHFmYmRldi0+ZGlydHkueDIgLSBxZmJkZXYt PmRpcnR5LngxKSkgewo+IC0JCWlmIChxZmJkZXYtPmRpcnR5LnkxIDwgeSkKPiAtCQkJeSA9IHFm YmRldi0+ZGlydHkueTE7Cj4gLQkJaWYgKHFmYmRldi0+ZGlydHkueTIgPiB5MikKPiAtCQkJeTIg PSBxZmJkZXYtPmRpcnR5LnkyOwo+IC0JCWlmIChxZmJkZXYtPmRpcnR5LngxIDwgeCkKPiAtCQkJ eCA9IHFmYmRldi0+ZGlydHkueDE7Cj4gLQkJaWYgKHFmYmRldi0+ZGlydHkueDIgPiB4MikKPiAt CQkJeDIgPSBxZmJkZXYtPmRpcnR5LngyOwo+IC0JfQo+IC0KPiAtCXFmYmRldi0+ZGlydHkueDEg PSB4Owo+IC0JcWZiZGV2LT5kaXJ0eS54MiA9IHgyOwo+IC0JcWZiZGV2LT5kaXJ0eS55MSA9IHk7 Cj4gLQlxZmJkZXYtPmRpcnR5LnkyID0geTI7Cj4gLQo+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9y ZSgmcWZiZGV2LT5kaXJ0eS5sb2NrLCBmbGFncyk7Cj4gLQo+IC0Jc2NoZWR1bGVfd29yaygmcWRl di0+ZmJfd29yayk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHF4bF9kZWZlcnJlZF9pbyhzdHJ1 Y3QgZmJfaW5mbyAqaW5mbywKPiAtCQkJICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KQo+ IC17Cj4gLQlzdHJ1Y3QgcXhsX2ZiZGV2ICpxZmJkZXYgPSBpbmZvLT5wYXI7Cj4gLQl1bnNpZ25l ZCBsb25nIHN0YXJ0LCBlbmQsIG1pbiwgbWF4Owo+IC0Jc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gLQlp bnQgeTEsIHkyOwo+IC0KPiAtCW1pbiA9IFVMT05HX01BWDsKPiAtCW1heCA9IDA7Cj4gLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIHBhZ2VsaXN0LCBscnUpIHsKPiAtCQlzdGFydCA9IHBhZ2Ut PmluZGV4IDw8IFBBR0VfU0hJRlQ7Cj4gLQkJZW5kID0gc3RhcnQgKyBQQUdFX1NJWkUgLSAxOwo+ IC0JCW1pbiA9IG1pbihtaW4sIHN0YXJ0KTsKPiAtCQltYXggPSBtYXgobWF4LCBlbmQpOwo+IC0J fQo+IC0KPiAtCWlmIChtaW4gPCBtYXgpIHsKPiAtCQl5MSA9IG1pbiAvIGluZm8tPmZpeC5saW5l X2xlbmd0aDsKPiAtCQl5MiA9IChtYXggLyBpbmZvLT5maXgubGluZV9sZW5ndGgpICsgMTsKPiAt CQlxeGxfZGlydHlfdXBkYXRlKHFmYmRldiwgMCwgeTEsIGluZm8tPnZhci54cmVzLCB5MiAtIHkx KTsKPiAtCX0KPiAtfTsKPiAtCj4gIHN0YXRpYyBzdHJ1Y3QgZmJfZGVmZXJyZWRfaW8gcXhsX2Rl ZmlvID0gewo+ICAJLmRlbGF5CQk9IFFYTF9ESVJUWV9ERUxBWSwKPiAtCS5kZWZlcnJlZF9pbwk9 IHF4bF9kZWZlcnJlZF9pbywKPiArCS5kZWZlcnJlZF9pbwk9IGRybV9mYl9oZWxwZXJfZGVmZXJy ZWRfaW8sCj4gIH07Cj4gIAo+IC1zdGF0aWMgdm9pZCBxeGxfZmJfZmlsbHJlY3Qoc3RydWN0IGZi X2luZm8gKmluZm8sCj4gLQkJCSAgICBjb25zdCBzdHJ1Y3QgZmJfZmlsbHJlY3QgKnJlY3QpCj4g LXsKPiAtCXN0cnVjdCBxeGxfZmJkZXYgKnFmYmRldiA9IGluZm8tPnBhcjsKPiAtCj4gLQlzeXNf ZmlsbHJlY3QoaW5mbywgcmVjdCk7Cj4gLQlxeGxfZGlydHlfdXBkYXRlKHFmYmRldiwgcmVjdC0+ ZHgsIHJlY3QtPmR5LCByZWN0LT53aWR0aCwKPiAtCQkJIHJlY3QtPmhlaWdodCk7Cj4gLX0KPiAt Cj4gLXN0YXRpYyB2b2lkIHF4bF9mYl9jb3B5YXJlYShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiAt CQkJICAgIGNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSkKPiAtewo+IC0Jc3RydWN0IHF4 bF9mYmRldiAqcWZiZGV2ID0gaW5mby0+cGFyOwo+IC0KPiAtCXN5c19jb3B5YXJlYShpbmZvLCBh cmVhKTsKPiAtCXF4bF9kaXJ0eV91cGRhdGUocWZiZGV2LCBhcmVhLT5keCwgYXJlYS0+ZHksIGFy ZWEtPndpZHRoLAo+IC0JCQkgYXJlYS0+aGVpZ2h0KTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQg cXhsX2ZiX2ltYWdlYmxpdChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiAtCQkJICAgICBjb25zdCBz dHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQo+IC17Cj4gLQlzdHJ1Y3QgcXhsX2ZiZGV2ICpxZmJkZXYg PSBpbmZvLT5wYXI7Cj4gLQo+IC0Jc3lzX2ltYWdlYmxpdChpbmZvLCBpbWFnZSk7Cj4gLQlxeGxf ZGlydHlfdXBkYXRlKHFmYmRldiwgaW1hZ2UtPmR4LCBpbWFnZS0+ZHksIGltYWdlLT53aWR0aCwK PiAtCQkJIGltYWdlLT5oZWlnaHQpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBxeGxfZmJfd29y ayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspCj4gLXsKPiAtCXN0cnVjdCBxeGxfZGV2aWNlICpx ZGV2ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBxeGxfZGV2aWNlLCBmYl93b3JrKTsKPiAt CXN0cnVjdCBxeGxfZmJkZXYgKnFmYmRldiA9IHFkZXYtPm1vZGVfaW5mby5xZmJkZXY7Cj4gLQo+ IC0JcXhsX2ZiX2RpcnR5X2ZsdXNoKHFmYmRldi0+aGVscGVyLmZiZGV2KTsKPiAtfQo+IC0KPiAt aW50IHF4bF9mYl9pbml0KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2KQo+IC17Cj4gLQlJTklUX1dP UksoJnFkZXYtPmZiX3dvcmssIHF4bF9mYl93b3JrKTsKPiAtCXJldHVybiAwOwo+IC19Cj4gLQo+ ICBzdGF0aWMgc3RydWN0IGZiX29wcyBxeGxmYl9vcHMgPSB7Cj4gIAkub3duZXIgPSBUSElTX01P RFVMRSwKPiAgCS5mYl9jaGVja192YXIgPSBkcm1fZmJfaGVscGVyX2NoZWNrX3ZhciwKPiAgCS5m Yl9zZXRfcGFyID0gZHJtX2ZiX2hlbHBlcl9zZXRfcGFyLCAvKiBUT0RPOiBjb3B5IHZtd2dmeCAq Lwo+IC0JLmZiX2ZpbGxyZWN0ID0gcXhsX2ZiX2ZpbGxyZWN0LAo+IC0JLmZiX2NvcHlhcmVhID0g cXhsX2ZiX2NvcHlhcmVhLAo+IC0JLmZiX2ltYWdlYmxpdCA9IHF4bF9mYl9pbWFnZWJsaXQsCj4g KwkuZmJfZmlsbHJlY3QgPSBkcm1fZmJfaGVscGVyX3N5c19maWxscmVjdCwKPiArCS5mYl9jb3B5 YXJlYSA9IGRybV9mYl9oZWxwZXJfc3lzX2NvcHlhcmVhLAo+ICsJLmZiX2ltYWdlYmxpdCA9IGRy bV9mYl9oZWxwZXJfc3lzX2ltYWdlYmxpdCwKPiAgCS5mYl9wYW5fZGlzcGxheSA9IGRybV9mYl9o ZWxwZXJfcGFuX2Rpc3BsYXksCj4gIAkuZmJfYmxhbmsgPSBkcm1fZmJfaGVscGVyX2JsYW5rLAo+ ICAJLmZiX3NldGNtYXAgPSBkcm1fZmJfaGVscGVyX3NldGNtYXAsCj4gQEAgLTMzOCw2ICsxNzks NTMgQEAgb3V0X3VucmVmOgo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiArc3RhdGljIGludCBx eGxmYl9mcmFtZWJ1ZmZlcl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiArCQkJ CSAgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZV9wcml2LAo+ICsJCQkJICAgdW5zaWduZWQgZmxhZ3Ms IHVuc2lnbmVkIGNvbG9yLAo+ICsJCQkJICAgc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXBzLAo+ ICsJCQkJICAgdW5zaWduZWQgbnVtX2NsaXBzKQo+ICt7Cj4gKwlzdHJ1Y3QgcXhsX2RldmljZSAq cWRldiA9IGZiLT5kZXYtPmRldl9wcml2YXRlOwo+ICsJc3RydWN0IGZiX2luZm8gKmluZm8gPSBx ZGV2LT5mYmRldl9pbmZvOwo+ICsJc3RydWN0IHF4bF9mYmRldiAqcWZiZGV2ID0gaW5mby0+cGFy Owo+ICsJc3RydWN0IHF4bF9mYl9pbWFnZSBxeGxfZmJfaW1hZ2U7Cj4gKwlzdHJ1Y3QgZmJfaW1h Z2UgKmltYWdlID0gJnF4bF9mYl9pbWFnZS5mYl9pbWFnZTsKPiArCj4gKwkvKiBUT0RPOiBoYXJk IGNvZGluZyAzMiBicHAgKi8KPiArCWludCBzdHJpZGUgPSBxZmJkZXYtPnFmYi5iYXNlLnBpdGNo ZXNbMF07Cj4gKwo+ICsJLyoKPiArCSAqIHdlIGFyZSB1c2luZyBhIHNoYWRvdyBkcmF3IGJ1ZmZl ciwgYXQgcWRldi0+c3VyZmFjZTBfc2hhZG93Cj4gKwkgKi8KPiArCXF4bF9pb19sb2cocWRldiwg ImRpcnR5IHhbJWQsICVkXSwgeVslZCwgJWRdIiwgY2xpcHMtPngxLCBjbGlwcy0+eDIsCj4gKwkJ ICAgY2xpcHMtPnkxLCBjbGlwcy0+eTIpOwo+ICsJaW1hZ2UtPmR4ID0gY2xpcHMtPngxOwo+ICsJ aW1hZ2UtPmR5ID0gY2xpcHMtPnkxOwo+ICsJaW1hZ2UtPndpZHRoID0gZHJtX2NsaXBfcmVjdF93 aWR0aChjbGlwcyk7Cj4gKwlpbWFnZS0+aGVpZ2h0ID0gZHJtX2NsaXBfcmVjdF9oZWlnaHQoY2xp cHMpOwo+ICsJaW1hZ2UtPmZnX2NvbG9yID0gMHhmZmZmZmZmZjsgLyogdW51c2VkLCBqdXN0IHRv IGF2b2lkIHVuaW5pdGlhbGl6ZWQKPiArCQkJCQkgd2FybmluZ3MgKi8KPiArCWltYWdlLT5iZ19j b2xvciA9IDA7Cj4gKwlpbWFnZS0+ZGVwdGggPSAzMjsJICAgICAvKiBUT0RPOiB0YWtlIGZyb20g c29tZXdoZXJlPyAqLwo+ICsJaW1hZ2UtPmNtYXAuc3RhcnQgPSAwOwo+ICsJaW1hZ2UtPmNtYXAu bGVuID0gMDsKPiArCWltYWdlLT5jbWFwLnJlZCA9IE5VTEw7Cj4gKwlpbWFnZS0+Y21hcC5ncmVl biA9IE5VTEw7Cj4gKwlpbWFnZS0+Y21hcC5ibHVlID0gTlVMTDsKPiArCWltYWdlLT5jbWFwLnRy YW5zcCA9IE5VTEw7Cj4gKwlpbWFnZS0+ZGF0YSA9IHFmYmRldi0+c2hhZG93ICsgKGNsaXBzLT54 MSAqIDQpICsgKHN0cmlkZSAqIGNsaXBzLT55MSk7Cj4gKwo+ICsJcXhsX2ZiX2ltYWdlX2luaXQo JnF4bF9mYl9pbWFnZSwgcWRldiwgaW5mbywgTlVMTCk7Cj4gKwlxeGxfZHJhd19vcGFxdWVfZmIo JnF4bF9mYl9pbWFnZSwgc3RyaWRlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ICsKPiArc3Rh dGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgcXhsZmJfZmJfZnVuY3MgPSB7 Cj4gKwkuZGVzdHJveSA9IHF4bF91c2VyX2ZyYW1lYnVmZmVyX2Rlc3Ryb3ksCj4gKwkuZGlydHkg PSBxeGxmYl9mcmFtZWJ1ZmZlcl9kaXJ0eSwKPiArfTsKPiArCj4gIHN0YXRpYyBpbnQgcXhsZmJf Y3JlYXRlKHN0cnVjdCBxeGxfZmJkZXYgKnFmYmRldiwKPiAgCQkJc3RydWN0IGRybV9mYl9oZWxw ZXJfc3VyZmFjZV9zaXplICpzaXplcykKPiAgewo+IEBAIC0zODMsNyArMjcxLDggQEAgc3RhdGlj IGludCBxeGxmYl9jcmVhdGUoc3RydWN0IHF4bF9mYmRldiAqcWZiZGV2LAo+ICAKPiAgCWluZm8t PnBhciA9IHFmYmRldjsKPiAgCj4gLQlxeGxfZnJhbWVidWZmZXJfaW5pdChxZGV2LT5kZGV2LCAm cWZiZGV2LT5xZmIsICZtb2RlX2NtZCwgZ29iaik7Cj4gKwlxeGxfZnJhbWVidWZmZXJfaW5pdChx ZGV2LT5kZGV2LCAmcWZiZGV2LT5xZmIsICZtb2RlX2NtZCwgZ29iaiwKPiArCQkJICAgICAmcXhs ZmJfZmJfZnVuY3MpOwo+ICAKPiAgCWZiID0gJnFmYmRldi0+cWZiLmJhc2U7Cj4gIAo+IEBAIC01 MDQsNyArMzkzLDYgQEAgaW50IHF4bF9mYmRldl9pbml0KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2 KQo+ICAJcWZiZGV2LT5xZGV2ID0gcWRldjsKPiAgCXFkZXYtPm1vZGVfaW5mby5xZmJkZXYgPSBx ZmJkZXY7Cj4gIAlzcGluX2xvY2tfaW5pdCgmcWZiZGV2LT5kZWxheWVkX29wc19sb2NrKTsKPiAt CXNwaW5fbG9ja19pbml0KCZxZmJkZXYtPmRpcnR5LmxvY2spOwo+ICAJSU5JVF9MSVNUX0hFQUQo JnFmYmRldi0+ZGVsYXllZF9vcHMpOwo+ICAKPiAgCWRybV9mYl9oZWxwZXJfcHJlcGFyZShxZGV2 LT5kZGV2LCAmcWZiZGV2LT5oZWxwZXIsCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9x eGwvcXhsX2ttcy5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfa21zLmMKPiBpbmRleCBiMjk3 N2ExLi4yMzE5ODAwIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ttcy5j Cj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfa21zLmMKPiBAQCAtMjYxLDEwICsyNjEs NiBAQCBzdGF0aWMgaW50IHF4bF9kZXZpY2VfaW5pdChzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwK PiAgCXFkZXYtPmdjX3F1ZXVlID0gY3JlYXRlX3NpbmdsZXRocmVhZF93b3JrcXVldWUoInF4bF9n YyIpOwo+ICAJSU5JVF9XT1JLKCZxZGV2LT5nY193b3JrLCBxeGxfZ2Nfd29yayk7Cj4gIAo+IC0J ciA9IHF4bF9mYl9pbml0KHFkZXYpOwo+IC0JaWYgKHIpCj4gLQkJcmV0dXJuIHI7Cj4gLQo+ICAJ cmV0dXJuIDA7Cj4gIH0KPiAgCj4gLS0gCj4gMi4yLjIKPiAKCi0tIApEYW5pZWwgVmV0dGVyClNv ZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApf X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmktZGV2ZWwg bWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK