From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3 6/7] drm/qxl: Use drm_fb_helper deferred_io support Date: Wed, 27 Apr 2016 21:22:12 +0200 Message-ID: <20160427192212.GH2558@phenom.ffwll.local> References: <1461780996-8612-1-git-send-email-noralf@tronnes.org> <1461780996-8612-7-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-x242.google.com (mail-wm0-x242.google.com [IPv6:2a00:1450:400c:c09::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id F3DB96E34F for ; Wed, 27 Apr 2016 19:22:16 +0000 (UTC) Received: by mail-wm0-x242.google.com with SMTP id w143so15958930wmw.3 for ; Wed, 27 Apr 2016 12:22:16 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1461780996-8612-7-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 T24gV2VkLCBBcHIgMjcsIDIwMTYgYXQgMDg6MTY6MzVQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFVzZSB0aGUgZmJkZXYgZGVmZXJyZWQgaW8gc3VwcG9ydCBpbiBkcm1fZmJfaGVs cGVyIHdoaWNoIG1pcnJvcnMgdGhlCj4gb25lIHF4bCBoYXMgaGFkLgo+IFRoaXMgcGF0Y2ggaGFz IG9ubHkgYmVlbiBjb21waWxlIHRlc3RlZC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLD uG5uZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiAtLS0KPiAKPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ IC0gVGhlIGRybV9jbGlwX3JlY3Rfe3dpZHRoL2hlaWdodH0gZnVuY3Rpb25zIGFyZSBkcm9wcGVk LCBzbyBvcGVuIGNvZGUgaXQKClJldmlld2VkLWJ5OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0 dGVyQGZmd2xsLmNoPiBzdGlsbCBhcHBsaWVzLgoKPiAKPiBDaGFuZ2VzIHNpbmNlIHYxOgo+IC0g QWRkIEZJWE1FIGFib3V0IHNwZWNpYWwgZGlydHkoKSBjYWxsYmFjayBmb3IgZmJkZXYKPiAtIFJl bW92ZSBub3RlIGluIGNvbW1pdCBtZXNzYWdlIGFib3V0IGRlZmVycmVkIHdvcmtlciwgZHJtX2Zi X2hlbHBlcgo+ICAgaXMgc2ltaWxhciB0byBxeGwgbm93Lgo+IAo+ICBkcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9kaXNwbGF5LmMgfCAgIDkgKy0KPiAgZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2 LmggICAgIHwgICA3ICstCj4gIGRyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ZiLmMgICAgICB8IDIy MyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9k cm0vcXhsL3F4bF9rbXMuYyAgICAgfCAgIDQgLQo+ICA0IGZpbGVzIGNoYW5nZWQsIDY1IGluc2Vy dGlvbnMoKyksIDE3OCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL3F4bC9xeGxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZGlzcGxheS5j Cj4gaW5kZXggMDMwNDA5YS4uOWEwMzUyNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9kaXNwbGF5LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kaXNwbGF5 LmMKPiBAQCAtNDY1LDcgKzQ2NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfZnVu Y3MgcXhsX2NydGNfZnVuY3MgPSB7Cj4gIAkucGFnZV9mbGlwID0gcXhsX2NydGNfcGFnZV9mbGlw LAo+ICB9Owo+IAo+IC1zdGF0aWMgdm9pZCBxeGxfdXNlcl9mcmFtZWJ1ZmZlcl9kZXN0cm95KHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQo+ICt2b2lkIHF4bF91c2VyX2ZyYW1lYnVmZmVyX2Rl c3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCj4gIHsKPiAgCXN0cnVjdCBxeGxfZnJh bWVidWZmZXIgKnF4bF9mYiA9IHRvX3F4bF9mcmFtZWJ1ZmZlcihmYik7Cj4gCj4gQEAgLTUyNywx MiArNTI3LDEzIEBAIGludAo+ICBxeGxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LAo+ICAJCSAgICAgc3RydWN0IHF4bF9mcmFtZWJ1ZmZlciAqcWZiLAo+ICAJCSAgICAg Y29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAo+IC0JCSAgICAgc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmopCj4gKwkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwKPiArCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKQo+ ICB7Cj4gIAlpbnQgcmV0Owo+IAo+ICAJcWZiLT5vYmogPSBvYmo7Cj4gLQlyZXQgPSBkcm1fZnJh bWVidWZmZXJfaW5pdChkZXYsICZxZmItPmJhc2UsICZxeGxfZmJfZnVuY3MpOwo+ICsJcmV0ID0g ZHJtX2ZyYW1lYnVmZmVyX2luaXQoZGV2LCAmcWZiLT5iYXNlLCBmdW5jcyk7Cj4gIAlpZiAocmV0 KSB7Cj4gIAkJcWZiLT5vYmogPSBOVUxMOwo+ICAJCXJldHVybiByZXQ7Cj4gQEAgLTk5OSw3ICsx MDAwLDcgQEAgcXhsX3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsCj4gIAlpZiAocXhsX2ZiID09IE5VTEwpCj4gIAkJcmV0dXJuIE5VTEw7Cj4gCj4gLQlyZXQg PSBxeGxfZnJhbWVidWZmZXJfaW5pdChkZXYsIHF4bF9mYiwgbW9kZV9jbWQsIG9iaik7Cj4gKwly ZXQgPSBxeGxfZnJhbWVidWZmZXJfaW5pdChkZXYsIHF4bF9mYiwgbW9kZV9jbWQsIG9iaiwgJnF4 bF9mYl9mdW5jcyk7Cj4gIAlpZiAocmV0KSB7Cj4gIAkJa2ZyZWUocXhsX2ZiKTsKPiAgCQlkcm1f Z2VtX29iamVjdF91bnJlZmVyZW5jZV91bmxvY2tlZChvYmopOwo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5o Cj4gaW5kZXggM2YzODk3ZS4uM2FkNjYwNCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9kcnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rydi5oCj4gQEAg LTMyNCw4ICszMjQsNiBAQCBzdHJ1Y3QgcXhsX2RldmljZSB7Cj4gIAlzdHJ1Y3Qgd29ya3F1ZXVl X3N0cnVjdCAqZ2NfcXVldWU7Cj4gIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QgZ2Nfd29yazsKPiAKPiAt CXN0cnVjdCB3b3JrX3N0cnVjdCBmYl93b3JrOwo+IC0KPiAgCXN0cnVjdCBkcm1fcHJvcGVydHkg KmhvdHBsdWdfbW9kZV91cGRhdGVfcHJvcGVydHk7Cj4gIAlpbnQgbW9uaXRvcnNfY29uZmlnX3dp ZHRoOwo+ICAJaW50IG1vbml0b3JzX2NvbmZpZ19oZWlnaHQ7Cj4gQEAgLTM4OSwxMSArMzg3LDEz IEBAIGludCBxeGxfZ2V0X2hhbmRsZV9mb3JfcHJpbWFyeV9mYihzdHJ1Y3QgcXhsX2RldmljZSAq cWRldiwKPiAgdm9pZCBxeGxfZmJkZXZfc2V0X3N1c3BlbmQoc3RydWN0IHF4bF9kZXZpY2UgKnFk ZXYsIGludCBzdGF0ZSk7Cj4gCj4gIC8qIHF4bF9kaXNwbGF5LmMgKi8KPiArdm9pZCBxeGxfdXNl cl9mcmFtZWJ1ZmZlcl9kZXN0cm95KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKPiAgaW50 Cj4gIHF4bF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAkJICAg ICBzdHJ1Y3QgcXhsX2ZyYW1lYnVmZmVyICpyZmIsCj4gIAkJICAgICBjb25zdCBzdHJ1Y3QgZHJt X21vZGVfZmJfY21kMiAqbW9kZV9jbWQsCj4gLQkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaik7Cj4gKwkJICAgICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwKPiArCQkgICAgIGNv bnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgKmZ1bmNzKTsKPiAgdm9pZCBxeGxfZGlz cGxheV9yZWFkX2NsaWVudF9tb25pdG9yc19jb25maWcoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYp Owo+ICB2b2lkIHF4bF9zZW5kX21vbml0b3JzX2NvbmZpZyhzdHJ1Y3QgcXhsX2RldmljZSAqcWRl dik7Cj4gIGludCBxeGxfY3JlYXRlX21vbml0b3JzX29iamVjdChzdHJ1Y3QgcXhsX2RldmljZSAq cWRldik7Cj4gQEAgLTU1Myw3ICs1NTMsNiBAQCBpbnQgcXhsX2lycV9pbml0KHN0cnVjdCBxeGxf ZGV2aWNlICpxZGV2KTsKPiAgaXJxcmV0dXJuX3QgcXhsX2lycV9oYW5kbGVyKGludCBpcnEsIHZv aWQgKmFyZyk7Cj4gCj4gIC8qIHF4bF9mYi5jICovCj4gLWludCBxeGxfZmJfaW5pdChzdHJ1Y3Qg cXhsX2RldmljZSAqcWRldik7Cj4gIGJvb2wgcXhsX2ZiZGV2X3FvYmpfaXNfZmIoc3RydWN0IHF4 bF9kZXZpY2UgKnFkZXYsIHN0cnVjdCBxeGxfYm8gKnFvYmopOwo+IAo+ICBpbnQgcXhsX2RlYnVn ZnNfYWRkX2ZpbGVzKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LAo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcXhsL3F4bF9mYi5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZmIuYwo+ IGluZGV4IDNmN2M1NDMuLjczOWEwOGMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4 bC9xeGxfZmIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ZiLmMKPiBAQCAtNDYs MTUgKzQ2LDYgQEAgc3RydWN0IHF4bF9mYmRldiB7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGRlbGF5 ZWRfb3BzOwo+ICAJdm9pZCAqc2hhZG93Owo+ICAJaW50IHNpemU7Cj4gLQo+IC0JLyogZGlydHkg bWVtb3J5IGxvZ2dpbmcgKi8KPiAtCXN0cnVjdCB7Cj4gLQkJc3BpbmxvY2tfdCBsb2NrOwo+IC0J CXVuc2lnbmVkIHgxOwo+IC0JCXVuc2lnbmVkIHkxOwo+IC0JCXVuc2lnbmVkIHgyOwo+IC0JCXVu c2lnbmVkIHkyOwo+IC0JfSBkaXJ0eTsKPiAgfTsKPiAKPiAgc3RhdGljIHZvaWQgcXhsX2ZiX2lt YWdlX2luaXQoc3RydWN0IHF4bF9mYl9pbWFnZSAqcXhsX2ZiX2ltYWdlLAo+IEBAIC04MiwxNjkg KzczLDE4IEBAIHN0YXRpYyB2b2lkIHF4bF9mYl9pbWFnZV9pbml0KHN0cnVjdCBxeGxfZmJfaW1h Z2UgKnF4bF9mYl9pbWFnZSwKPiAgCX0KPiAgfQo+IAo+IC1zdGF0aWMgdm9pZCBxeGxfZmJfZGly dHlfZmx1c2goc3RydWN0IGZiX2luZm8gKmluZm8pCj4gLXsKPiAtCXN0cnVjdCBxeGxfZmJkZXYg KnFmYmRldiA9IGluZm8tPnBhcjsKPiAtCXN0cnVjdCBxeGxfZGV2aWNlICpxZGV2ID0gcWZiZGV2 LT5xZGV2Owo+IC0Jc3RydWN0IHF4bF9mYl9pbWFnZSBxeGxfZmJfaW1hZ2U7Cj4gLQlzdHJ1Y3Qg ZmJfaW1hZ2UgKmltYWdlID0gJnF4bF9mYl9pbWFnZS5mYl9pbWFnZTsKPiAtCXVuc2lnbmVkIGxv bmcgZmxhZ3M7Cj4gLQl1MzIgeDEsIHgyLCB5MSwgeTI7Cj4gLQo+IC0JLyogVE9ETzogaGFyZCBj b2RpbmcgMzIgYnBwICovCj4gLQlpbnQgc3RyaWRlID0gcWZiZGV2LT5xZmIuYmFzZS5waXRjaGVz WzBdOwo+IC0KPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZxZmJkZXYtPmRpcnR5LmxvY2ssIGZsYWdz KTsKPiAtCj4gLQl4MSA9IHFmYmRldi0+ZGlydHkueDE7Cj4gLQl4MiA9IHFmYmRldi0+ZGlydHku eDI7Cj4gLQl5MSA9IHFmYmRldi0+ZGlydHkueTE7Cj4gLQl5MiA9IHFmYmRldi0+ZGlydHkueTI7 Cj4gLQlxZmJkZXYtPmRpcnR5LngxID0gMDsKPiAtCXFmYmRldi0+ZGlydHkueDIgPSAwOwo+IC0J cWZiZGV2LT5kaXJ0eS55MSA9IDA7Cj4gLQlxZmJkZXYtPmRpcnR5LnkyID0gMDsKPiAtCj4gLQlz cGluX3VubG9ja19pcnFyZXN0b3JlKCZxZmJkZXYtPmRpcnR5LmxvY2ssIGZsYWdzKTsKPiAtCj4g LQkvKgo+IC0JICogd2UgYXJlIHVzaW5nIGEgc2hhZG93IGRyYXcgYnVmZmVyLCBhdCBxZGV2LT5z dXJmYWNlMF9zaGFkb3cKPiAtCSAqLwo+IC0JcXhsX2lvX2xvZyhxZGV2LCAiZGlydHkgeFslZCwg JWRdLCB5WyVkLCAlZF0iLCB4MSwgeDIsIHkxLCB5Mik7Cj4gLQlpbWFnZS0+ZHggPSB4MTsKPiAt CWltYWdlLT5keSA9IHkxOwo+IC0JaW1hZ2UtPndpZHRoID0geDIgLSB4MSArIDE7Cj4gLQlpbWFn ZS0+aGVpZ2h0ID0geTIgLSB5MSArIDE7Cj4gLQlpbWFnZS0+ZmdfY29sb3IgPSAweGZmZmZmZmZm OyAvKiB1bnVzZWQsIGp1c3QgdG8gYXZvaWQgdW5pbml0aWFsaXplZAo+IC0JCQkJCSB3YXJuaW5n cyAqLwo+IC0JaW1hZ2UtPmJnX2NvbG9yID0gMDsKPiAtCWltYWdlLT5kZXB0aCA9IDMyOwkgICAg IC8qIFRPRE86IHRha2UgZnJvbSBzb21ld2hlcmU/ICovCj4gLQlpbWFnZS0+Y21hcC5zdGFydCA9 IDA7Cj4gLQlpbWFnZS0+Y21hcC5sZW4gPSAwOwo+IC0JaW1hZ2UtPmNtYXAucmVkID0gTlVMTDsK PiAtCWltYWdlLT5jbWFwLmdyZWVuID0gTlVMTDsKPiAtCWltYWdlLT5jbWFwLmJsdWUgPSBOVUxM Owo+IC0JaW1hZ2UtPmNtYXAudHJhbnNwID0gTlVMTDsKPiAtCWltYWdlLT5kYXRhID0gcWZiZGV2 LT5zaGFkb3cgKyAoeDEgKiA0KSArIChzdHJpZGUgKiB5MSk7Cj4gLQo+IC0JcXhsX2ZiX2ltYWdl X2luaXQoJnF4bF9mYl9pbWFnZSwgcWRldiwgaW5mbywgTlVMTCk7Cj4gLQlxeGxfZHJhd19vcGFx dWVfZmIoJnF4bF9mYl9pbWFnZSwgc3RyaWRlKTsKPiAtfQo+IC0KPiAtc3RhdGljIHZvaWQgcXhs X2RpcnR5X3VwZGF0ZShzdHJ1Y3QgcXhsX2ZiZGV2ICpxZmJkZXYsCj4gLQkJCSAgICAgaW50IHgs IGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCj4gLXsKPiAtCXN0cnVjdCBxeGxfZGV2aWNl ICpxZGV2ID0gcWZiZGV2LT5xZGV2Owo+IC0JdW5zaWduZWQgbG9uZyBmbGFnczsKPiAtCWludCB4 MiwgeTI7Cj4gLQo+IC0JeDIgPSB4ICsgd2lkdGggLSAxOwo+IC0JeTIgPSB5ICsgaGVpZ2h0IC0g MTsKPiAtCj4gLQlzcGluX2xvY2tfaXJxc2F2ZSgmcWZiZGV2LT5kaXJ0eS5sb2NrLCBmbGFncyk7 Cj4gLQo+IC0JaWYgKChxZmJkZXYtPmRpcnR5LnkyIC0gcWZiZGV2LT5kaXJ0eS55MSkgJiYKPiAt CSAgICAocWZiZGV2LT5kaXJ0eS54MiAtIHFmYmRldi0+ZGlydHkueDEpKSB7Cj4gLQkJaWYgKHFm YmRldi0+ZGlydHkueTEgPCB5KQo+IC0JCQl5ID0gcWZiZGV2LT5kaXJ0eS55MTsKPiAtCQlpZiAo cWZiZGV2LT5kaXJ0eS55MiA+IHkyKQo+IC0JCQl5MiA9IHFmYmRldi0+ZGlydHkueTI7Cj4gLQkJ aWYgKHFmYmRldi0+ZGlydHkueDEgPCB4KQo+IC0JCQl4ID0gcWZiZGV2LT5kaXJ0eS54MTsKPiAt CQlpZiAocWZiZGV2LT5kaXJ0eS54MiA+IHgyKQo+IC0JCQl4MiA9IHFmYmRldi0+ZGlydHkueDI7 Cj4gLQl9Cj4gLQo+IC0JcWZiZGV2LT5kaXJ0eS54MSA9IHg7Cj4gLQlxZmJkZXYtPmRpcnR5Lngy ID0geDI7Cj4gLQlxZmJkZXYtPmRpcnR5LnkxID0geTsKPiAtCXFmYmRldi0+ZGlydHkueTIgPSB5 MjsKPiAtCj4gLQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZxZmJkZXYtPmRpcnR5LmxvY2ssIGZs YWdzKTsKPiAtCj4gLQlzY2hlZHVsZV93b3JrKCZxZGV2LT5mYl93b3JrKTsKPiAtfQo+IC0KPiAt c3RhdGljIHZvaWQgcXhsX2RlZmVycmVkX2lvKHN0cnVjdCBmYl9pbmZvICppbmZvLAo+IC0JCQkg ICAgc3RydWN0IGxpc3RfaGVhZCAqcGFnZWxpc3QpCj4gLXsKPiAtCXN0cnVjdCBxeGxfZmJkZXYg KnFmYmRldiA9IGluZm8tPnBhcjsKPiAtCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZCwgbWluLCBt YXg7Cj4gLQlzdHJ1Y3QgcGFnZSAqcGFnZTsKPiAtCWludCB5MSwgeTI7Cj4gLQo+IC0JbWluID0g VUxPTkdfTUFYOwo+IC0JbWF4ID0gMDsKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgcGFn ZWxpc3QsIGxydSkgewo+IC0JCXN0YXJ0ID0gcGFnZS0+aW5kZXggPDwgUEFHRV9TSElGVDsKPiAt CQllbmQgPSBzdGFydCArIFBBR0VfU0laRSAtIDE7Cj4gLQkJbWluID0gbWluKG1pbiwgc3RhcnQp Owo+IC0JCW1heCA9IG1heChtYXgsIGVuZCk7Cj4gLQl9Cj4gLQo+IC0JaWYgKG1pbiA8IG1heCkg ewo+IC0JCXkxID0gbWluIC8gaW5mby0+Zml4LmxpbmVfbGVuZ3RoOwo+IC0JCXkyID0gKG1heCAv IGluZm8tPmZpeC5saW5lX2xlbmd0aCkgKyAxOwo+IC0JCXF4bF9kaXJ0eV91cGRhdGUocWZiZGV2 LCAwLCB5MSwgaW5mby0+dmFyLnhyZXMsIHkyIC0geTEpOwo+IC0JfQo+IC19Owo+IC0KPiAgc3Rh dGljIHN0cnVjdCBmYl9kZWZlcnJlZF9pbyBxeGxfZGVmaW8gPSB7Cj4gIAkuZGVsYXkJCT0gUVhM X0RJUlRZX0RFTEFZLAo+IC0JLmRlZmVycmVkX2lvCT0gcXhsX2RlZmVycmVkX2lvLAo+ICsJLmRl ZmVycmVkX2lvCT0gZHJtX2ZiX2hlbHBlcl9kZWZlcnJlZF9pbywKPiAgfTsKPiAKPiAtc3RhdGlj IHZvaWQgcXhsX2ZiX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICppbmZvLAo+IC0JCQkgICAgY29u c3Qgc3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0KQo+IC17Cj4gLQlzdHJ1Y3QgcXhsX2ZiZGV2ICpx ZmJkZXYgPSBpbmZvLT5wYXI7Cj4gLQo+IC0Jc3lzX2ZpbGxyZWN0KGluZm8sIHJlY3QpOwo+IC0J cXhsX2RpcnR5X3VwZGF0ZShxZmJkZXYsIHJlY3QtPmR4LCByZWN0LT5keSwgcmVjdC0+d2lkdGgs Cj4gLQkJCSByZWN0LT5oZWlnaHQpOwo+IC19Cj4gLQo+IC1zdGF0aWMgdm9pZCBxeGxfZmJfY29w eWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sCj4gLQkJCSAgICBjb25zdCBzdHJ1Y3QgZmJfY29w eWFyZWEgKmFyZWEpCj4gLXsKPiAtCXN0cnVjdCBxeGxfZmJkZXYgKnFmYmRldiA9IGluZm8tPnBh cjsKPiAtCj4gLQlzeXNfY29weWFyZWEoaW5mbywgYXJlYSk7Cj4gLQlxeGxfZGlydHlfdXBkYXRl KHFmYmRldiwgYXJlYS0+ZHgsIGFyZWEtPmR5LCBhcmVhLT53aWR0aCwKPiAtCQkJIGFyZWEtPmhl aWdodCk7Cj4gLX0KPiAtCj4gLXN0YXRpYyB2b2lkIHF4bF9mYl9pbWFnZWJsaXQoc3RydWN0IGZi X2luZm8gKmluZm8sCj4gLQkJCSAgICAgY29uc3Qgc3RydWN0IGZiX2ltYWdlICppbWFnZSkKPiAt ewo+IC0Jc3RydWN0IHF4bF9mYmRldiAqcWZiZGV2ID0gaW5mby0+cGFyOwo+IC0KPiAtCXN5c19p bWFnZWJsaXQoaW5mbywgaW1hZ2UpOwo+IC0JcXhsX2RpcnR5X3VwZGF0ZShxZmJkZXYsIGltYWdl LT5keCwgaW1hZ2UtPmR5LCBpbWFnZS0+d2lkdGgsCj4gLQkJCSBpbWFnZS0+aGVpZ2h0KTsKPiAt fQo+IC0KPiAtc3RhdGljIHZvaWQgcXhsX2ZiX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3Jr KQo+IC17Cj4gLQlzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiA9IGNvbnRhaW5lcl9vZih3b3JrLCBz dHJ1Y3QgcXhsX2RldmljZSwgZmJfd29yayk7Cj4gLQlzdHJ1Y3QgcXhsX2ZiZGV2ICpxZmJkZXYg PSBxZGV2LT5tb2RlX2luZm8ucWZiZGV2Owo+IC0KPiAtCXF4bF9mYl9kaXJ0eV9mbHVzaChxZmJk ZXYtPmhlbHBlci5mYmRldik7Cj4gLX0KPiAtCj4gLWludCBxeGxfZmJfaW5pdChzdHJ1Y3QgcXhs X2RldmljZSAqcWRldikKPiAtewo+IC0JSU5JVF9XT1JLKCZxZGV2LT5mYl93b3JrLCBxeGxfZmJf d29yayk7Cj4gLQlyZXR1cm4gMDsKPiAtfQo+IC0KPiAgc3RhdGljIHN0cnVjdCBmYl9vcHMgcXhs ZmJfb3BzID0gewo+ICAJLm93bmVyID0gVEhJU19NT0RVTEUsCj4gIAkuZmJfY2hlY2tfdmFyID0g ZHJtX2ZiX2hlbHBlcl9jaGVja192YXIsCj4gIAkuZmJfc2V0X3BhciA9IGRybV9mYl9oZWxwZXJf c2V0X3BhciwgLyogVE9ETzogY29weSB2bXdnZnggKi8KPiAtCS5mYl9maWxscmVjdCA9IHF4bF9m Yl9maWxscmVjdCwKPiAtCS5mYl9jb3B5YXJlYSA9IHF4bF9mYl9jb3B5YXJlYSwKPiAtCS5mYl9p bWFnZWJsaXQgPSBxeGxfZmJfaW1hZ2VibGl0LAo+ICsJLmZiX2ZpbGxyZWN0ID0gZHJtX2ZiX2hl bHBlcl9zeXNfZmlsbHJlY3QsCj4gKwkuZmJfY29weWFyZWEgPSBkcm1fZmJfaGVscGVyX3N5c19j b3B5YXJlYSwKPiArCS5mYl9pbWFnZWJsaXQgPSBkcm1fZmJfaGVscGVyX3N5c19pbWFnZWJsaXQs Cj4gIAkuZmJfcGFuX2Rpc3BsYXkgPSBkcm1fZmJfaGVscGVyX3Bhbl9kaXNwbGF5LAo+ICAJLmZi X2JsYW5rID0gZHJtX2ZiX2hlbHBlcl9ibGFuaywKPiAgCS5mYl9zZXRjbWFwID0gZHJtX2ZiX2hl bHBlcl9zZXRjbWFwLAo+IEBAIC0zMzgsNiArMTc4LDU3IEBAIG91dF91bnJlZjoKPiAgCXJldHVy biByZXQ7Cj4gIH0KPiAKPiArLyoKPiArICogRklYTUUKPiArICogSXQgc2hvdWxkIG5vdCBiZSBu ZWNlc3NhcnkgdG8gaGF2ZSBhIHNwZWNpYWwgZGlydHkoKSBjYWxsYmFjayBmb3IgZmJkZXYuCj4g KyAqLwo+ICtzdGF0aWMgaW50IHF4bGZiX2ZyYW1lYnVmZmVyX2RpcnR5KHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLAo+ICsJCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlX3ByaXYsCj4gKwkJ CQkgICB1bnNpZ25lZCBmbGFncywgdW5zaWduZWQgY29sb3IsCj4gKwkJCQkgICBzdHJ1Y3QgZHJt X2NsaXBfcmVjdCAqY2xpcHMsCj4gKwkJCQkgICB1bnNpZ25lZCBudW1fY2xpcHMpCj4gK3sKPiAr CXN0cnVjdCBxeGxfZGV2aWNlICpxZGV2ID0gZmItPmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1 Y3QgZmJfaW5mbyAqaW5mbyA9IHFkZXYtPmZiZGV2X2luZm87Cj4gKwlzdHJ1Y3QgcXhsX2ZiZGV2 ICpxZmJkZXYgPSBpbmZvLT5wYXI7Cj4gKwlzdHJ1Y3QgcXhsX2ZiX2ltYWdlIHF4bF9mYl9pbWFn ZTsKPiArCXN0cnVjdCBmYl9pbWFnZSAqaW1hZ2UgPSAmcXhsX2ZiX2ltYWdlLmZiX2ltYWdlOwo+ ICsKPiArCS8qIFRPRE86IGhhcmQgY29kaW5nIDMyIGJwcCAqLwo+ICsJaW50IHN0cmlkZSA9IHFm YmRldi0+cWZiLmJhc2UucGl0Y2hlc1swXTsKPiArCj4gKwkvKgo+ICsJICogd2UgYXJlIHVzaW5n IGEgc2hhZG93IGRyYXcgYnVmZmVyLCBhdCBxZGV2LT5zdXJmYWNlMF9zaGFkb3cKPiArCSAqLwo+ ICsJcXhsX2lvX2xvZyhxZGV2LCAiZGlydHkgeFslZCwgJWRdLCB5WyVkLCAlZF0iLCBjbGlwcy0+ eDEsIGNsaXBzLT54MiwKPiArCQkgICBjbGlwcy0+eTEsIGNsaXBzLT55Mik7Cj4gKwlpbWFnZS0+ ZHggPSBjbGlwcy0+eDE7Cj4gKwlpbWFnZS0+ZHkgPSBjbGlwcy0+eTE7Cj4gKwlpbWFnZS0+d2lk dGggPSBjbGlwcy0+eDIgLSBjbGlwcy0+eDE7Cj4gKwlpbWFnZS0+aGVpZ2h0ID0gY2xpcHMtPnky IC0gY2xpcHMtPnkxOwo+ICsJaW1hZ2UtPmZnX2NvbG9yID0gMHhmZmZmZmZmZjsgLyogdW51c2Vk LCBqdXN0IHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQKPiArCQkJCQkgd2FybmluZ3MgKi8KPiArCWlt YWdlLT5iZ19jb2xvciA9IDA7Cj4gKwlpbWFnZS0+ZGVwdGggPSAzMjsJICAgICAvKiBUT0RPOiB0 YWtlIGZyb20gc29tZXdoZXJlPyAqLwo+ICsJaW1hZ2UtPmNtYXAuc3RhcnQgPSAwOwo+ICsJaW1h Z2UtPmNtYXAubGVuID0gMDsKPiArCWltYWdlLT5jbWFwLnJlZCA9IE5VTEw7Cj4gKwlpbWFnZS0+ Y21hcC5ncmVlbiA9IE5VTEw7Cj4gKwlpbWFnZS0+Y21hcC5ibHVlID0gTlVMTDsKPiArCWltYWdl LT5jbWFwLnRyYW5zcCA9IE5VTEw7Cj4gKwlpbWFnZS0+ZGF0YSA9IHFmYmRldi0+c2hhZG93ICsg KGNsaXBzLT54MSAqIDQpICsgKHN0cmlkZSAqIGNsaXBzLT55MSk7Cj4gKwo+ICsJcXhsX2ZiX2lt YWdlX2luaXQoJnF4bF9mYl9pbWFnZSwgcWRldiwgaW5mbywgTlVMTCk7Cj4gKwlxeGxfZHJhd19v cGFxdWVfZmIoJnF4bF9mYl9pbWFnZSwgc3RyaWRlKTsKPiArCj4gKwlyZXR1cm4gMDsKPiArfQo+ ICsKPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVuY3MgcXhsZmJfZmJf ZnVuY3MgPSB7Cj4gKwkuZGVzdHJveSA9IHF4bF91c2VyX2ZyYW1lYnVmZmVyX2Rlc3Ryb3ksCj4g KwkuZGlydHkgPSBxeGxmYl9mcmFtZWJ1ZmZlcl9kaXJ0eSwKPiArfTsKPiArCj4gIHN0YXRpYyBp bnQgcXhsZmJfY3JlYXRlKHN0cnVjdCBxeGxfZmJkZXYgKnFmYmRldiwKPiAgCQkJc3RydWN0IGRy bV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplICpzaXplcykKPiAgewo+IEBAIC0zODMsNyArMjc0LDgg QEAgc3RhdGljIGludCBxeGxmYl9jcmVhdGUoc3RydWN0IHF4bF9mYmRldiAqcWZiZGV2LAo+IAo+ ICAJaW5mby0+cGFyID0gcWZiZGV2Owo+IAo+IC0JcXhsX2ZyYW1lYnVmZmVyX2luaXQocWRldi0+ ZGRldiwgJnFmYmRldi0+cWZiLCAmbW9kZV9jbWQsIGdvYmopOwo+ICsJcXhsX2ZyYW1lYnVmZmVy X2luaXQocWRldi0+ZGRldiwgJnFmYmRldi0+cWZiLCAmbW9kZV9jbWQsIGdvYmosCj4gKwkJCSAg ICAgJnF4bGZiX2ZiX2Z1bmNzKTsKPiAKPiAgCWZiID0gJnFmYmRldi0+cWZiLmJhc2U7Cj4gCj4g QEAgLTUwNCw3ICszOTYsNiBAQCBpbnQgcXhsX2ZiZGV2X2luaXQoc3RydWN0IHF4bF9kZXZpY2Ug KnFkZXYpCj4gIAlxZmJkZXYtPnFkZXYgPSBxZGV2Owo+ICAJcWRldi0+bW9kZV9pbmZvLnFmYmRl diA9IHFmYmRldjsKPiAgCXNwaW5fbG9ja19pbml0KCZxZmJkZXYtPmRlbGF5ZWRfb3BzX2xvY2sp Owo+IC0Jc3Bpbl9sb2NrX2luaXQoJnFmYmRldi0+ZGlydHkubG9jayk7Cj4gIAlJTklUX0xJU1Rf SEVBRCgmcWZiZGV2LT5kZWxheWVkX29wcyk7Cj4gCj4gIAlkcm1fZmJfaGVscGVyX3ByZXBhcmUo cWRldi0+ZGRldiwgJnFmYmRldi0+aGVscGVyLAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vcXhsL3F4bF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ttcy5jCj4gaW5kZXgg YjI5NzdhMS4uMjMxOTgwMCAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9r bXMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2ttcy5jCj4gQEAgLTI2MSwxMCAr MjYxLDYgQEAgc3RhdGljIGludCBxeGxfZGV2aWNlX2luaXQoc3RydWN0IHF4bF9kZXZpY2UgKnFk ZXYsCj4gIAlxZGV2LT5nY19xdWV1ZSA9IGNyZWF0ZV9zaW5nbGV0aHJlYWRfd29ya3F1ZXVlKCJx eGxfZ2MiKTsKPiAgCUlOSVRfV09SSygmcWRldi0+Z2Nfd29yaywgcXhsX2djX3dvcmspOwo+IAo+ IC0JciA9IHF4bF9mYl9pbml0KHFkZXYpOwo+IC0JaWYgKHIpCj4gLQkJcmV0dXJuIHI7Cj4gLQo+ ICAJcmV0dXJuIDA7Cj4gIH0KPiAKPiAtLQo+IDIuMi4yCj4gCgotLSAKRGFuaWVsIFZldHRlcgpT b2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==