From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC v2 1/8] drm/fb-helper: Add fb_deferred_io support Date: Wed, 13 Apr 2016 13:09:31 +0200 Message-ID: <20160413110931.GZ2510@phenom.ffwll.local> References: <1460135110-24121-1-git-send-email-noralf@tronnes.org> <1460135110-24121-2-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-x22b.google.com (mail-wm0-x22b.google.com [IPv6:2a00:1450:400c:c09::22b]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6BB316E3CC for ; Wed, 13 Apr 2016 11:09:16 +0000 (UTC) Received: by mail-wm0-x22b.google.com with SMTP id v188so168044519wme.1 for ; Wed, 13 Apr 2016 04:09:16 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1460135110-24121-2-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: thomas.petazzoni@free-electrons.com, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gRnJpLCBBcHIgMDgsIDIwMTYgYXQgMDc6MDU6MDNQTSArMDIwMCwgTm9yYWxmIFRyw7hubmVz IHdyb3RlOgo+IFRoaXMgYWRkcyBkZWZlcnJlZCBpbyBzdXBwb3J0IGlmIENPTkZJR19GQl9ERUZF UlJFRF9JTyBpcyBlbmFibGVkLgo+IEFjY3VtdWxhdGVkIGZiZGV2IGZyYW1lYnVmZmVyIGNoYW5n ZXMgYXJlIHNpZ25hbGVkIHVzaW5nIHRoZSBjYWxsYmFjawo+IChzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyX2Z1bmNzICopLT5kaXJ0eSgpCj4gCj4gVGhlIGRybV9mYl9oZWxwZXJfc3lzXyooKSBmdW5j dGlvbnMgd2lsbCBhY2N1bXVsYXRlIGNoYW5nZXMgYW5kCj4gc2NoZWR1bGUgZmJfaW5mby5kZWZl cnJlZF93b3JrIF9pZl8gZmJfaW5mby5mYmRlZmlvIGlzIHNldC4KPiBUaGlzIHdvcmtlciBpcyB1 c2VkIGJ5IHRoZSBkZWZlcnJlZCBpbyBtbWFwIGNvZGUgdG8gc2lnbmFsIHRoYXQgaXQKPiBoYXMg YmVlbiBjb2xsZWN0aW5nIHBhZ2UgZmF1bHRzLiBUaGUgcGFnZSBmYXVsdHMgYW5kL29yIG90aGVy IGNoYW5nZXMKPiBhcmUgdGhlbiBtZXJnZWQgaW50byBhIGRybV9jbGlwX3JlY3QgYW5kIHBhc3Nl ZCB0byB0aGUgZnJhbWVidWZmZXIKPiBkaXJ0eSgpIGZ1bmN0aW9uLgo+IAo+IFRoZSBkcml2ZXIg aXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIGZiX2luZm8uZmJkZWZpbyBzdHJ1Y3R1 cmUKPiBhbmQgY2FsbGluZyBmYl9kZWZlcnJlZF9pb19pbml0KCkgdXNpbmcgdGhlIHByb3ZpZGVk IGNhbGxiYWNrOgo+IChzdHJ1Y3QgZmJfaW5mbyAqKS0+ZmJkZWZpby0+ZGVmZXJyZWRfaW8gPSBk cm1fZmJfaGVscGVyX2RlZmVycmVkX2lvOwo+IAo+IFNpZ25lZC1vZmYtYnk6IE5vcmFsZiBUcsO4 bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgoKRm9yIHRoaXMgb25lIGl0J2QgYmUgYXdlc29tZSB0 byB0aHJvdyBwYXRjaGVzIGZvciBxeGwvdWRsIG9uIHRvcCB0byByZW1vdmUKdGhlaXIgb3duIGhh bmQtcm9sbGVkIGltcGxlbWVudGF0aW9ucy4gSnVzdCB0byBtYXhpbWl6ZSB0aGUgdGVzdGluZwpj b3ZlcmFnZSBvZiB0aGlzIG5ldyBjb2RlLiBTaG91bGQgYmUgZG9hYmxlIHRvIHNldCB1cCBhIHF4 bCB2aXJ0dWFsCm1hY2hpbmUgcXVpY2tseSwgYnV0IGV2ZW4gd2l0aG91dCB0aGF0IHdlIHNob3Vs ZCBiZSBhYmxlIHRvIHB1bGwgaXQgaW4KKHNpbmNlIGl0J3MgbW9zdGx5IGp1c3QgYWJvdXQgcmVt b3ZpbmcgY29kZSBmcm9tIHRoZXNlIHR3byBkcml2ZXJzKS4KLURhbmllbAoKPiAtLS0KPiAgZHJp dmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyB8IDE4OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKystCj4gIGluY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaCAgICAgfCAg MTUgKysrKwo+ICAyIGZpbGVzIGNoYW5nZWQsIDIwMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9u KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMgYi9k cml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gaW5kZXggMWUxMDNjNC4uMzBmM2RmZCAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ZiX2hlbHBlci5jCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYwo+IEBAIC00OCw2ICs0OCwxMDAgQEAgTU9EVUxF X1BBUk1fREVTQyhmYmRldl9lbXVsYXRpb24sCj4gIAo+ICBzdGF0aWMgTElTVF9IRUFEKGtlcm5l bF9mYl9oZWxwZXJfbGlzdCk7Cj4gIAo+ICsvKgo+ICsgKiBXaGVyZSBzaG91bGQgSSBwdXQgdGhl c2UgZHJtX2NsaXBfcmVjdCBmdW5jdGlvbnM/Cj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIGRybV9j bGlwX3JlY3RfcmVzZXQgLSBSZXNldCBjbGlwCj4gKyAqIEBjbGlwOiBjbGlwIHJlY3RhbmdsZQo+ ICsgKgo+ICsgKiBTZXRzIGNsaXAgdG8gezAsMCwwLDB9Lgo+ICsgKi8KPiArc3RhdGljIGlubGlu ZSB2b2lkIGRybV9jbGlwX3JlY3RfcmVzZXQoc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXApCj4g K3sKPiArCWNsaXAtPngxID0gMDsKPiArCWNsaXAtPngyID0gMDsKPiArCWNsaXAtPnkxID0gMDsK PiArCWNsaXAtPnkyID0gMDsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9jbGlwX3JlY3RfaXNf ZW1wdHkgLSBJcyBjbGlwIGVtcHR5Pwo+ICsgKiBAY2xpcDogY2xpcCByZWN0YW5nbGUKPiArICoK PiArICogUmV0dXJucyB0cnVlIGlmIGNsaXAgaXMgezAsMCwwLDB9Lgo+ICsgKi8KPiArc3RhdGlj IGlubGluZSBib29sIGRybV9jbGlwX3JlY3RfaXNfZW1wdHkoc3RydWN0IGRybV9jbGlwX3JlY3Qg KmNsaXApCj4gK3sKPiArCXJldHVybiAoIWNsaXAtPngxICYmICFjbGlwLT54MiAmJiAhY2xpcC0+ eTEgJiYgIWNsaXAtPnkyKTsKPiArfQo+ICsKPiArLyoqCj4gKyAqIGRybV9jbGlwX3JlY3Rfc2Fu ZXRpemUgLSBNYWtlIHN1cmUgY2xpcCByZWN0YW5nbGUgaGFzIHNhbmUgdmFsdWVzCj4gKyAqIEBj bGlwOiBjbGlwIHJlY3RhbmdsZQo+ICsgKiBAd2lkdGg6IG1heGltdW0gd2lkdGggb2YgcmVjdGFu Z2xlCj4gKyAqIEBoZWlnaHQ6IG1heGltdW0gaGVpZ2h0IG9mIHJlY3RhbmdsZQo+ICsgKgo+ICsg KiBNYWtlcyBzdXJlIHRoZSBjbGlwIGRvZXNuJ3QgZXhjZWVkIHRoZSBzcGVjaWZpZWQgd2lkdGgg YW5kIGhlaWdodCBhbmQgdGhhdAo+ICsgKiB4MSA8PSB4MiBhbmQgeTEgPD0geTIuCj4gKyAqLwo+ ICt2b2lkIGRybV9jbGlwX3JlY3Rfc2FuZXRpemUoc3RydWN0IGRybV9jbGlwX3JlY3QgKmNsaXAs IHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPiArewo+ICsJaWYgKGNsaXAtPngxID4gY2xpcC0+eDIp Cj4gKwkJc3dhcChjbGlwLT54MSwgY2xpcC0+eDIpOwo+ICsJaWYgKGNsaXAtPnkxID4gY2xpcC0+ eTIpCj4gKwkJc3dhcChjbGlwLT55MSwgY2xpcC0+eTIpOwo+ICsKPiArCWNsaXAtPngxID0gbWlu X3QodTMyLCBjbGlwLT54MSwgd2lkdGggLSAxKTsKPiArCWNsaXAtPngyID0gbWluX3QodTMyLCBj bGlwLT54Miwgd2lkdGggLSAxKTsKPiArCWNsaXAtPnkxID0gbWluX3QodTMyLCBjbGlwLT55MSwg aGVpZ2h0IC0gMSk7Cj4gKwljbGlwLT55MiA9IG1pbl90KHUzMiwgY2xpcC0+eTIsIGhlaWdodCAt IDEpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2NsaXBfcmVjdF9zYW5ldGl6ZSk7Cj4gKwo+ ICsvKioKPiArICogZHJtX2NsaXBfcmVjdF9tZXJnZSAtIE1lcmdlIGNsaXAgcmVjdGFuZ2xlcwo+ ICsgKiBAZHN0OiBkZXN0aW5hdGlvbiBjbGlwIHJlY3RhbmdsZQo+ICsgKiBAc3JjOiBzb3VyY2Ug Y2xpcCByZWN0YW5nbGUocyksIGNhbiBiZSBOVUxMCj4gKyAqIEBudW1fY2xpcHM6IG51bWJlciBv ZiBzb3VyY2UgY2xpcCByZWN0YW5nbGVzCj4gKyAqIEB3aWR0aDogd2lkdGggb2YgcmVjdGFuZ2xl IGlmIEBzcmMgaXMgTlVMTAo+ICsgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgcmVjdGFuZ2xlIGlmIEBz cmMgaXMgTlVMTAo+ICsgKgo+ICsgKiBUaGUgZGlydHlmYiBpb2N0bCBhbGxvd3MgZm9yIGEgTlVM TCBjbGlwIHRvIGJlIHBhc3NlZCBpbiwKPiArICogc28gaWYgQHNyYyBpcyBOVUxMLCB3aWR0aCBh bmQgaGVpZ2h0IGlzIHVzZWQgdG8gc2V0IGEgZnVsbCBjbGlwLgo+ICsgKiBAZHN0IHRha2VzIHBh cnQgaW4gdGhlIG1lcmdlIHVubGVzcyBpdCBpcyBlbXB0eSB7MCwwLDAsMH0uCj4gKyAqLwo+ICt2 b2lkIGRybV9jbGlwX3JlY3RfbWVyZ2Uoc3RydWN0IGRybV9jbGlwX3JlY3QgKmRzdCwKPiArCQkJ IHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpzcmMsIHVuc2lnbmVkIG51bV9jbGlwcywKPiArCQkJIHVu c2lnbmVkIGZsYWdzLCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCj4gK3sKPiArCWludCBpOwo+ICsK PiArCWlmICghc3JjIHx8ICFudW1fY2xpcHMpIHsKPiArCQlkc3QtPngxID0gMDsKPiArCQlkc3Qt PngyID0gd2lkdGggLSAxOwo+ICsJCWRzdC0+eTEgPSAwOwo+ICsJCWRzdC0+eTIgPSBoZWlnaHQg LSAxOwo+ICsJCXJldHVybjsKPiArCX0KPiArCj4gKwlpZiAoZHJtX2NsaXBfcmVjdF9pc19lbXB0 eShkc3QpKSB7Cj4gKwkJZHN0LT54MSA9IH4wOwo+ICsJCWRzdC0+eTEgPSB+MDsKPiArCX0KPiAr Cj4gKwlmb3IgKGkgPSAwOyBpIDwgbnVtX2NsaXBzOyBpKyspIHsKPiArCQlpZiAoZmxhZ3MgJiBE Uk1fTU9ERV9GQl9ESVJUWV9BTk5PVEFURV9DT1BZKQo+ICsJCQlpKys7Cj4gKwkJZHN0LT54MSA9 IG1pbihkc3QtPngxLCBzcmNbaV0ueDEpOwo+ICsJCWRzdC0+eDIgPSBtYXgoZHN0LT54Miwgc3Jj W2ldLngyKTsKPiArCQlkc3QtPnkxID0gbWluKGRzdC0+eTEsIHNyY1tpXS55MSk7Cj4gKwkJZHN0 LT55MiA9IG1heChkc3QtPnkyLCBzcmNbaV0ueTIpOwo+ICsJfQo+ICt9Cj4gK0VYUE9SVF9TWU1C T0woZHJtX2NsaXBfcmVjdF9tZXJnZSk7Cj4gKwo+ICAvKioKPiAgICogRE9DOiBmYmRldiBoZWxw ZXJzCj4gICAqCj4gQEAgLTQxMCw2ICs1MDQsMTMgQEAgc3RhdGljIGludCByZXN0b3JlX2ZiZGV2 X21vZGUoc3RydWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcikKPiAgCj4gIAlkcm1fd2Fybl9v bl9tb2Rlc2V0X25vdF9hbGxfbG9ja2VkKGRldik7Cj4gIAo+ICsjaWZkZWYgQ09ORklHX0ZCX0RF RkVSUkVEX0lPCj4gKwlzcGluX2xvY2soJmZiX2hlbHBlci0+ZGlydHlfbG9jayk7Cj4gKwlkcm1f Y2xpcF9yZWN0X21lcmdlKCZmYl9oZWxwZXItPmRpcnR5X2NsaXAsIE5VTEwsIDAsIDAsCj4gKwkJ CSAgICBmYl9oZWxwZXItPmZiZGV2LT52YXIueHJlcywKPiArCQkJICAgIGZiX2hlbHBlci0+ZmJk ZXYtPnZhci55cmVzKTsKPiArCXNwaW5fdW5sb2NrKCZmYl9oZWxwZXItPmRpcnR5X2xvY2spOwo+ ICsjZW5kaWYKPiAgCWlmIChmYl9oZWxwZXItPmF0b21pYykKPiAgCQlyZXR1cm4gcmVzdG9yZV9m YmRldl9tb2RlX2F0b21pYyhmYl9oZWxwZXIpOwo+ICAKPiBAQCAtNjU0LDYgKzc1NSw5IEBAIHZv aWQgZHJtX2ZiX2hlbHBlcl9wcmVwYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZmJfaGVscGVyICpoZWxwZXIsCj4gIAkJCSAgIGNvbnN0IHN0cnVjdCBkcm1fZmJfaGVscGVy X2Z1bmNzICpmdW5jcykKPiAgewo+ICAJSU5JVF9MSVNUX0hFQUQoJmhlbHBlci0+a2VybmVsX2Zi X2xpc3QpOwo+ICsjaWZkZWYgQ09ORklHX0ZCX0RFRkVSUkVEX0lPCj4gKwlzcGluX2xvY2tfaW5p dCgmaGVscGVyLT5kaXJ0eV9sb2NrKTsKPiArI2VuZGlmCj4gIAloZWxwZXItPmZ1bmNzID0gZnVu Y3M7Cj4gIAloZWxwZXItPmRldiA9IGRldjsKPiAgfQo+IEBAIC04MzgsNiArOTQyLDc2IEBAIHZv aWQgZHJtX2ZiX2hlbHBlcl91bmxpbmtfZmJpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxw ZXIpCj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3VubGlua19mYmkpOwo+ICAK PiArI2lmZGVmIENPTkZJR19GQl9ERUZFUlJFRF9JTwo+ICt2b2lkIGRybV9mYl9oZWxwZXJfZGVm ZXJyZWRfaW8oc3RydWN0IGZiX2luZm8gKmluZm8sCj4gKwkJCSAgICAgICBzdHJ1Y3QgbGlzdF9o ZWFkICpwYWdlbGlzdCkKPiArewo+ICsJc3RydWN0IGRybV9mYl9oZWxwZXIgKmhlbHBlciA9IGlu Zm8tPnBhcjsKPiArCXVuc2lnbmVkIGxvbmcgc3RhcnQsIGVuZCwgbWluLCBtYXg7Cj4gKwlzdHJ1 Y3QgZHJtX2NsaXBfcmVjdCBjbGlwOwo+ICsJc3RydWN0IHBhZ2UgKnBhZ2U7Cj4gKwo+ICsJaWYg KCFoZWxwZXItPmZiLT5mdW5jcy0+ZGlydHkpCj4gKwkJcmV0dXJuOwo+ICsKPiArCXNwaW5fbG9j aygmaGVscGVyLT5kaXJ0eV9sb2NrKTsKPiArCWNsaXAgPSBoZWxwZXItPmRpcnR5X2NsaXA7Cj4g Kwlkcm1fY2xpcF9yZWN0X3Jlc2V0KCZoZWxwZXItPmRpcnR5X2NsaXApOwo+ICsJc3Bpbl91bmxv Y2soJmhlbHBlci0+ZGlydHlfbG9jayk7Cj4gKwo+ICsJbWluID0gVUxPTkdfTUFYOwo+ICsJbWF4 ID0gMDsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkocGFnZSwgcGFnZWxpc3QsIGxydSkgewo+ICsJ CXN0YXJ0ID0gcGFnZS0+aW5kZXggPDwgUEFHRV9TSElGVDsKPiArCQllbmQgPSBzdGFydCArIFBB R0VfU0laRSAtIDE7Cj4gKwkJbWluID0gbWluKG1pbiwgc3RhcnQpOwo+ICsJCW1heCA9IG1heCht YXgsIGVuZCk7Cj4gKwl9Cj4gKwo+ICsJaWYgKG1pbiA8IG1heCkgewo+ICsJCWNsaXAueDEgPSAw Owo+ICsJCWNsaXAueDIgPSBpbmZvLT52YXIueHJlcyAtIDE7Cj4gKwkJY2xpcC55MSA9IG1pbiAv IGluZm8tPmZpeC5saW5lX2xlbmd0aDsKPiArCQljbGlwLnkyID0gbWluX3QodTMyLCBtYXggLyBp bmZvLT5maXgubGluZV9sZW5ndGgsCj4gKwkJCQkgICAgaW5mby0+dmFyLnlyZXMgLSAxKTsKPiAr CX0gZWxzZSBpZiAoZHJtX2NsaXBfcmVjdF9pc19lbXB0eSgmY2xpcCkpIHsKPiArCQljbGlwLngx ID0gMDsKPiArCQljbGlwLngyID0gaW5mby0+dmFyLnhyZXMgLSAxOwo+ICsJCWNsaXAueTEgPSAw Owo+ICsJCWNsaXAueTIgPSBpbmZvLT52YXIueXJlcyAtIDE7Cj4gKwl9Cj4gKwo+ICsJaGVscGVy LT5mYi0+ZnVuY3MtPmRpcnR5KGhlbHBlci0+ZmIsIE5VTEwsIDAsIDAsICZjbGlwLCAxKTsKPiAr fQo+ICtFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfZGVmZXJyZWRfaW8pOwo+ICsKPiArc3Rh dGljIHZvaWQgZHJtX2ZiX2hlbHBlcl9zeXNfZGVmZXJyZWQoc3RydWN0IGZiX2luZm8gKmluZm8s IHUzMiB4LCB1MzIgeSwKPiArCQkJCSAgICAgICB1MzIgd2lkdGgsIHUzMiBoZWlnaHQpCj4gK3sK PiArCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIgPSBpbmZvLT5wYXI7Cj4gKwlzdHJ1Y3Qg ZHJtX2NsaXBfcmVjdCBjbGlwOwo+ICsKPiArCWlmICghaW5mby0+ZmJkZWZpbykKPiArCQlyZXR1 cm47Cj4gKwo+ICsJY2xpcC54MSA9IHg7Cj4gKwljbGlwLngyID0geCArIHdpZHRoIC0gMTsKPiAr CWNsaXAueTEgPSB5Owo+ICsJY2xpcC55MiA9IHkgKyBoZWlnaHQgLSAxOwo+ICsKPiArCXNwaW5f bG9jaygmaGVscGVyLT5kaXJ0eV9sb2NrKTsKPiArCWRybV9jbGlwX3JlY3RfbWVyZ2UoJmhlbHBl ci0+ZGlydHlfY2xpcCwgJmNsaXAsIDEsIDAsIDAsIDApOwo+ICsJc3Bpbl91bmxvY2soJmhlbHBl ci0+ZGlydHlfbG9jayk7Cj4gKwo+ICsJc2NoZWR1bGVfZGVsYXllZF93b3JrKCZpbmZvLT5kZWZl cnJlZF93b3JrLCBpbmZvLT5mYmRlZmlvLT5kZWxheSk7Cj4gK30KPiArI2Vsc2UKPiArc3RhdGlj IGlubGluZSB2b2lkIGRybV9mYl9oZWxwZXJfc3lzX2RlZmVycmVkKHN0cnVjdCBmYl9pbmZvICpp bmZvLCB1MzIgeCwgdTMyIHksCj4gKwkJCQkJICAgICAgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQo+ ICt7Cj4gK30KPiArI2VuZGlmCj4gKwo+ICAvKioKPiAgICogZHJtX2ZiX2hlbHBlcl9zeXNfcmVh ZCAtIHdyYXBwZXIgYXJvdW5kIGZiX3N5c19yZWFkCj4gICAqIEBpbmZvOiBmYl9pbmZvIHN0cnVj dCBwb2ludGVyCj4gQEAgLTg2Niw3ICsxMDQwLDE0IEBAIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hl bHBlcl9zeXNfcmVhZCk7Cj4gIHNzaXplX3QgZHJtX2ZiX2hlbHBlcl9zeXNfd3JpdGUoc3RydWN0 IGZiX2luZm8gKmluZm8sIGNvbnN0IGNoYXIgX191c2VyICpidWYsCj4gIAkJCQlzaXplX3QgY291 bnQsIGxvZmZfdCAqcHBvcykKPiAgewo+IC0JcmV0dXJuIGZiX3N5c193cml0ZShpbmZvLCBidWYs IGNvdW50LCBwcG9zKTsKPiArCXNzaXplX3QgcmV0Owo+ICsKPiArCXJldCA9IGZiX3N5c193cml0 ZShpbmZvLCBidWYsIGNvdW50LCBwcG9zKTsKPiArCWlmIChyZXQgPiAwKQo+ICsJCWRybV9mYl9o ZWxwZXJfc3lzX2RlZmVycmVkKGluZm8sIDAsIDAsCj4gKwkJCQkJICAgaW5mby0+dmFyLnhyZXMs IGluZm8tPnZhci55cmVzKTsKPiArCj4gKwlyZXR1cm4gcmV0Owo+ICB9Cj4gIEVYUE9SVF9TWU1C T0woZHJtX2ZiX2hlbHBlcl9zeXNfd3JpdGUpOwo+ICAKPiBAQCAtODgxLDYgKzEwNjIsOCBAQCB2 b2lkIGRybV9mYl9oZWxwZXJfc3lzX2ZpbGxyZWN0KHN0cnVjdCBmYl9pbmZvICppbmZvLAo+ICAJ CQkJY29uc3Qgc3RydWN0IGZiX2ZpbGxyZWN0ICpyZWN0KQo+ICB7Cj4gIAlzeXNfZmlsbHJlY3Qo aW5mbywgcmVjdCk7Cj4gKwlkcm1fZmJfaGVscGVyX3N5c19kZWZlcnJlZChpbmZvLCByZWN0LT5k eCwgcmVjdC0+ZHksCj4gKwkJCQkgICByZWN0LT53aWR0aCwgcmVjdC0+aGVpZ2h0KTsKPiAgfQo+ ICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc3lzX2ZpbGxyZWN0KTsKPiAgCj4gQEAgLTg5 NSw2ICsxMDc4LDggQEAgdm9pZCBkcm1fZmJfaGVscGVyX3N5c19jb3B5YXJlYShzdHJ1Y3QgZmJf aW5mbyAqaW5mbywKPiAgCQkJCWNvbnN0IHN0cnVjdCBmYl9jb3B5YXJlYSAqYXJlYSkKPiAgewo+ ICAJc3lzX2NvcHlhcmVhKGluZm8sIGFyZWEpOwo+ICsJZHJtX2ZiX2hlbHBlcl9zeXNfZGVmZXJy ZWQoaW5mbywgYXJlYS0+ZHgsIGFyZWEtPmR5LAo+ICsJCQkJICAgYXJlYS0+d2lkdGgsIGFyZWEt PmhlaWdodCk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJPTChkcm1fZmJfaGVscGVyX3N5c19jb3B5YXJl YSk7Cj4gIAo+IEBAIC05MDksNiArMTA5NCw4IEBAIHZvaWQgZHJtX2ZiX2hlbHBlcl9zeXNfaW1h Z2VibGl0KHN0cnVjdCBmYl9pbmZvICppbmZvLAo+ICAJCQkJIGNvbnN0IHN0cnVjdCBmYl9pbWFn ZSAqaW1hZ2UpCj4gIHsKPiAgCXN5c19pbWFnZWJsaXQoaW5mbywgaW1hZ2UpOwo+ICsJZHJtX2Zi X2hlbHBlcl9zeXNfZGVmZXJyZWQoaW5mbywgaW1hZ2UtPmR4LCBpbWFnZS0+ZHksCj4gKwkJCQkg ICBpbWFnZS0+d2lkdGgsIGltYWdlLT5oZWlnaHQpOwo+ICB9Cj4gIEVYUE9SVF9TWU1CT0woZHJt X2ZiX2hlbHBlcl9zeXNfaW1hZ2VibGl0KTsKPiAgCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJt L2RybV9mYl9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IGluZGV4IGQ4 YTQwZGYuLjFkYWFkYzcgMTAwNjQ0Cj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5o Cj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oCj4gQEAgLTE3Miw2ICsxNzIsOSBA QCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9jb25uZWN0b3Igewo+ICAgKiBAZnVuY3M6IGRyaXZlciBj YWxsYmFja3MgZm9yIGZiIGhlbHBlcgo+ICAgKiBAZmJkZXY6IGVtdWxhdGVkIGZiZGV2IGRldmlj ZSBpbmZvIHN0cnVjdAo+ICAgKiBAcHNldWRvX3BhbGV0dGU6IGZha2UgcGFsZXR0ZSBvZiAxNiBj b2xvcnMKPiArICogQGRpcnR5X2NsaXA6IGNsaXAgcmVjdGFuZ2xlIHVzZWQgd2l0aCBkZWZlcnJl ZF9pbyB0byBhY2N1bXVsYXRlIGRhbWFnZSB0bwo+ICsgKiAgICAgICAgICAgICAgdGhlIHNjcmVl biBidWZmZXIKPiArICogQGRpcnR5X2xvY2s6IHNwaW5sb2NrIHByb3RlY3RpbmcgQGRpcnR5X2Ns aXAKPiAgICoKPiAgICogVGhpcyBpcyB0aGUgbWFpbiBzdHJ1Y3R1cmUgdXNlZCBieSB0aGUgZmJk ZXYgaGVscGVycy4gRHJpdmVycyBzdXBwb3J0aW5nCj4gICAqIGZiZGV2IGVtdWxhdGlvbiBzaG91 bGQgZW1iZWRkZWQgdGhpcyBpbnRvIHRoZWlyIG92ZXJhbGwgZHJpdmVyIHN0cnVjdHVyZS4KPiBA QCAtMTg5LDYgKzE5MiwxMCBAQCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciB7Cj4gIAljb25zdCBzdHJ1 Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyAqZnVuY3M7Cj4gIAlzdHJ1Y3QgZmJfaW5mbyAqZmJkZXY7 Cj4gIAl1MzIgcHNldWRvX3BhbGV0dGVbMTddOwo+ICsjaWZkZWYgQ09ORklHX0ZCX0RFRkVSUkVE X0lPCj4gKwlzdHJ1Y3QgZHJtX2NsaXBfcmVjdCBkaXJ0eV9jbGlwOwo+ICsJc3BpbmxvY2tfdCBk aXJ0eV9sb2NrOwo+ICsjZW5kaWYKPiAgCj4gIAkvKioKPiAgCSAqIEBrZXJuZWxfZmJfbGlzdDoK PiBAQCAtMjQ0LDYgKzI1MSw5IEBAIHZvaWQgZHJtX2ZiX2hlbHBlcl9maWxsX2ZpeChzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywgdWludDMyX3QgcGl0Y2gsCj4gIAo+ICB2b2lkIGRybV9mYl9oZWxwZXJf dW5saW5rX2ZiaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKTsKPiAgCj4gK3ZvaWQg ZHJtX2ZiX2hlbHBlcl9kZWZlcnJlZF9pbyhzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiArCQkJICAg ICAgIHN0cnVjdCBsaXN0X2hlYWQgKnBhZ2VsaXN0KTsKPiArCj4gIHNzaXplX3QgZHJtX2ZiX2hl bHBlcl9zeXNfcmVhZChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY2hhciBfX3VzZXIgKmJ1ZiwKPiAg CQkJICAgICAgIHNpemVfdCBjb3VudCwgbG9mZl90ICpwcG9zKTsKPiAgc3NpemVfdCBkcm1fZmJf aGVscGVyX3N5c193cml0ZShzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgY29uc3QgY2hhciBfX3VzZXIg KmJ1ZiwKPiBAQCAtMzYyLDYgKzM3MiwxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZHJtX2ZiX2hl bHBlcl91bmxpbmtfZmJpKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIHsKPiAg fQo+ICAKPiArc3RhdGljIGlubGluZSB2b2lkIGRybV9mYl9oZWxwZXJfZGVmZXJyZWRfaW8oc3Ry dWN0IGZiX2luZm8gKmluZm8sCj4gKwkJCQkJICAgICBzdHJ1Y3QgbGlzdF9oZWFkICpwYWdlbGlz dCkKPiArewo+ICt9Cj4gKwo+ICBzdGF0aWMgaW5saW5lIHNzaXplX3QgZHJtX2ZiX2hlbHBlcl9z eXNfcmVhZChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiAgCQkJCQkgICAgIGNoYXIgX191c2VyICpi dWYsIHNpemVfdCBjb3VudCwKPiAgCQkJCQkgICAgIGxvZmZfdCAqcHBvcykKPiAtLSAKPiAyLjIu Mgo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4g ZHJpLWRldmVsIG1haWxpbmcgbGlzdAo+IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcK PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZl bAoKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5naW5lZXIsIEludGVsIENvcnBvcmF0aW9u Cmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2RyaS1kZXZlbAo=