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 12:57:01 +0200 Message-ID: <20160413105701.GX2510@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-x22c.google.com (mail-wm0-x22c.google.com [IPv6:2a00:1450:400c:c09::22c]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7710B6E079 for ; Wed, 13 Apr 2016 10:56:45 +0000 (UTC) Received: by mail-wm0-x22c.google.com with SMTP id u206so70333348wme.1 for ; Wed, 13 Apr 2016 03:56:45 -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 bm5lcyA8bm9yYWxmQHRyb25uZXMub3JnPgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jIHwgMTg5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0K PiAgaW5jbHVkZS9kcm0vZHJtX2ZiX2hlbHBlci5oICAgICB8ICAxNSArKysrCj4gIDIgZmlsZXMg Y2hhbmdlZCwgMjAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f ZmJfaGVscGVyLmMKPiBpbmRleCAxZTEwM2M0Li4zMGYzZGZkIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fZmJfaGVscGVyLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jCj4gQEAgLTQ4LDYgKzQ4LDEwMCBAQCBNT0RVTEVfUEFSTV9ERVNDKGZiZGV2X2Vt dWxhdGlvbiwKPiAgCj4gIHN0YXRpYyBMSVNUX0hFQUQoa2VybmVsX2ZiX2hlbHBlcl9saXN0KTsK PiAgCj4gKy8qCj4gKyAqIFdoZXJlIHNob3VsZCBJIHB1dCB0aGVzZSBkcm1fY2xpcF9yZWN0IGZ1 bmN0aW9ucz8KPiArICovCgpkcm1fcmVjdC5baGNdIFNvbWUgb2YgdGhlbSBhcmUgdGhlcmUgYWxy ZWFkeSBidXQgdW5kZXIgZGlmZmVyZW50IG5hbWVzCihlLmcuIGludGVyc2VjdCBpbnN0ZWFkIG9m IHNhbml0aXplKS4KLURhbmllbAoKPiArCj4gKy8qKgo+ICsgKiBkcm1fY2xpcF9yZWN0X3Jlc2V0 IC0gUmVzZXQgY2xpcAo+ICsgKiBAY2xpcDogY2xpcCByZWN0YW5nbGUKPiArICoKPiArICogU2V0 cyBjbGlwIHRvIHswLDAsMCwwfS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkcm1fY2xp cF9yZWN0X3Jlc2V0KHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwKQo+ICt7Cj4gKwljbGlwLT54 MSA9IDA7Cj4gKwljbGlwLT54MiA9IDA7Cj4gKwljbGlwLT55MSA9IDA7Cj4gKwljbGlwLT55MiA9 IDA7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1fY2xpcF9yZWN0X2lzX2VtcHR5IC0gSXMgY2xp cCBlbXB0eT8KPiArICogQGNsaXA6IGNsaXAgcmVjdGFuZ2xlCj4gKyAqCj4gKyAqIFJldHVybnMg dHJ1ZSBpZiBjbGlwIGlzIHswLDAsMCwwfS4KPiArICovCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBk cm1fY2xpcF9yZWN0X2lzX2VtcHR5KHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwKQo+ICt7Cj4g KwlyZXR1cm4gKCFjbGlwLT54MSAmJiAhY2xpcC0+eDIgJiYgIWNsaXAtPnkxICYmICFjbGlwLT55 Mik7Cj4gK30KPiArCj4gKy8qKgo+ICsgKiBkcm1fY2xpcF9yZWN0X3NhbmV0aXplIC0gTWFrZSBz dXJlIGNsaXAgcmVjdGFuZ2xlIGhhcyBzYW5lIHZhbHVlcwo+ICsgKiBAY2xpcDogY2xpcCByZWN0 YW5nbGUKPiArICogQHdpZHRoOiBtYXhpbXVtIHdpZHRoIG9mIHJlY3RhbmdsZQo+ICsgKiBAaGVp Z2h0OiBtYXhpbXVtIGhlaWdodCBvZiByZWN0YW5nbGUKPiArICoKPiArICogTWFrZXMgc3VyZSB0 aGUgY2xpcCBkb2Vzbid0IGV4Y2VlZCB0aGUgc3BlY2lmaWVkIHdpZHRoIGFuZCBoZWlnaHQgYW5k IHRoYXQKPiArICogeDEgPD0geDIgYW5kIHkxIDw9IHkyLgo+ICsgKi8KPiArdm9pZCBkcm1fY2xp cF9yZWN0X3NhbmV0aXplKHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlwLCB1MzIgd2lkdGgsIHUz MiBoZWlnaHQpCj4gK3sKPiArCWlmIChjbGlwLT54MSA+IGNsaXAtPngyKQo+ICsJCXN3YXAoY2xp cC0+eDEsIGNsaXAtPngyKTsKPiArCWlmIChjbGlwLT55MSA+IGNsaXAtPnkyKQo+ICsJCXN3YXAo Y2xpcC0+eTEsIGNsaXAtPnkyKTsKPiArCj4gKwljbGlwLT54MSA9IG1pbl90KHUzMiwgY2xpcC0+ eDEsIHdpZHRoIC0gMSk7Cj4gKwljbGlwLT54MiA9IG1pbl90KHUzMiwgY2xpcC0+eDIsIHdpZHRo IC0gMSk7Cj4gKwljbGlwLT55MSA9IG1pbl90KHUzMiwgY2xpcC0+eTEsIGhlaWdodCAtIDEpOwo+ ICsJY2xpcC0+eTIgPSBtaW5fdCh1MzIsIGNsaXAtPnkyLCBoZWlnaHQgLSAxKTsKPiArfQo+ICtF WFBPUlRfU1lNQk9MKGRybV9jbGlwX3JlY3Rfc2FuZXRpemUpOwo+ICsKPiArLyoqCj4gKyAqIGRy bV9jbGlwX3JlY3RfbWVyZ2UgLSBNZXJnZSBjbGlwIHJlY3RhbmdsZXMKPiArICogQGRzdDogZGVz dGluYXRpb24gY2xpcCByZWN0YW5nbGUKPiArICogQHNyYzogc291cmNlIGNsaXAgcmVjdGFuZ2xl KHMpLCBjYW4gYmUgTlVMTAo+ICsgKiBAbnVtX2NsaXBzOiBudW1iZXIgb2Ygc291cmNlIGNsaXAg cmVjdGFuZ2xlcwo+ICsgKiBAd2lkdGg6IHdpZHRoIG9mIHJlY3RhbmdsZSBpZiBAc3JjIGlzIE5V TEwKPiArICogQGhlaWdodDogaGVpZ2h0IG9mIHJlY3RhbmdsZSBpZiBAc3JjIGlzIE5VTEwKPiAr ICoKPiArICogVGhlIGRpcnR5ZmIgaW9jdGwgYWxsb3dzIGZvciBhIE5VTEwgY2xpcCB0byBiZSBw YXNzZWQgaW4sCj4gKyAqIHNvIGlmIEBzcmMgaXMgTlVMTCwgd2lkdGggYW5kIGhlaWdodCBpcyB1 c2VkIHRvIHNldCBhIGZ1bGwgY2xpcC4KPiArICogQGRzdCB0YWtlcyBwYXJ0IGluIHRoZSBtZXJn ZSB1bmxlc3MgaXQgaXMgZW1wdHkgezAsMCwwLDB9Lgo+ICsgKi8KPiArdm9pZCBkcm1fY2xpcF9y ZWN0X21lcmdlKHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpkc3QsCj4gKwkJCSBzdHJ1Y3QgZHJtX2Ns aXBfcmVjdCAqc3JjLCB1bnNpZ25lZCBudW1fY2xpcHMsCj4gKwkJCSB1bnNpZ25lZCBmbGFncywg dTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQo+ICt7Cj4gKwlpbnQgaTsKPiArCj4gKwlpZiAoIXNyYyB8 fCAhbnVtX2NsaXBzKSB7Cj4gKwkJZHN0LT54MSA9IDA7Cj4gKwkJZHN0LT54MiA9IHdpZHRoIC0g MTsKPiArCQlkc3QtPnkxID0gMDsKPiArCQlkc3QtPnkyID0gaGVpZ2h0IC0gMTsKPiArCQlyZXR1 cm47Cj4gKwl9Cj4gKwo+ICsJaWYgKGRybV9jbGlwX3JlY3RfaXNfZW1wdHkoZHN0KSkgewo+ICsJ CWRzdC0+eDEgPSB+MDsKPiArCQlkc3QtPnkxID0gfjA7Cj4gKwl9Cj4gKwo+ICsJZm9yIChpID0g MDsgaSA8IG51bV9jbGlwczsgaSsrKSB7Cj4gKwkJaWYgKGZsYWdzICYgRFJNX01PREVfRkJfRElS VFlfQU5OT1RBVEVfQ09QWSkKPiArCQkJaSsrOwo+ICsJCWRzdC0+eDEgPSBtaW4oZHN0LT54MSwg c3JjW2ldLngxKTsKPiArCQlkc3QtPngyID0gbWF4KGRzdC0+eDIsIHNyY1tpXS54Mik7Cj4gKwkJ ZHN0LT55MSA9IG1pbihkc3QtPnkxLCBzcmNbaV0ueTEpOwo+ICsJCWRzdC0+eTIgPSBtYXgoZHN0 LT55Miwgc3JjW2ldLnkyKTsKPiArCX0KPiArfQo+ICtFWFBPUlRfU1lNQk9MKGRybV9jbGlwX3Jl Y3RfbWVyZ2UpOwo+ICsKPiAgLyoqCj4gICAqIERPQzogZmJkZXYgaGVscGVycwo+ICAgKgo+IEBA IC00MTAsNiArNTA0LDEzIEBAIHN0YXRpYyBpbnQgcmVzdG9yZV9mYmRldl9tb2RlKHN0cnVjdCBk cm1fZmJfaGVscGVyICpmYl9oZWxwZXIpCj4gIAo+ICAJZHJtX3dhcm5fb25fbW9kZXNldF9ub3Rf YWxsX2xvY2tlZChkZXYpOwo+ICAKPiArI2lmZGVmIENPTkZJR19GQl9ERUZFUlJFRF9JTwo+ICsJ c3Bpbl9sb2NrKCZmYl9oZWxwZXItPmRpcnR5X2xvY2spOwo+ICsJZHJtX2NsaXBfcmVjdF9tZXJn ZSgmZmJfaGVscGVyLT5kaXJ0eV9jbGlwLCBOVUxMLCAwLCAwLAo+ICsJCQkgICAgZmJfaGVscGVy LT5mYmRldi0+dmFyLnhyZXMsCj4gKwkJCSAgICBmYl9oZWxwZXItPmZiZGV2LT52YXIueXJlcyk7 Cj4gKwlzcGluX3VubG9jaygmZmJfaGVscGVyLT5kaXJ0eV9sb2NrKTsKPiArI2VuZGlmCj4gIAlp ZiAoZmJfaGVscGVyLT5hdG9taWMpCj4gIAkJcmV0dXJuIHJlc3RvcmVfZmJkZXZfbW9kZV9hdG9t aWMoZmJfaGVscGVyKTsKPiAgCj4gQEAgLTY1NCw2ICs3NTUsOSBAQCB2b2lkIGRybV9mYl9oZWxw ZXJfcHJlcGFyZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAq aGVscGVyLAo+ICAJCQkgICBjb25zdCBzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9mdW5jcyAqZnVuY3Mp Cj4gIHsKPiAgCUlOSVRfTElTVF9IRUFEKCZoZWxwZXItPmtlcm5lbF9mYl9saXN0KTsKPiArI2lm ZGVmIENPTkZJR19GQl9ERUZFUlJFRF9JTwo+ICsJc3Bpbl9sb2NrX2luaXQoJmhlbHBlci0+ZGly dHlfbG9jayk7Cj4gKyNlbmRpZgo+ICAJaGVscGVyLT5mdW5jcyA9IGZ1bmNzOwo+ICAJaGVscGVy LT5kZXYgPSBkZXY7Cj4gIH0KPiBAQCAtODM4LDYgKzk0Miw3NiBAQCB2b2lkIGRybV9mYl9oZWxw ZXJfdW5saW5rX2ZiaShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICB9Cj4gIEVY UE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl91bmxpbmtfZmJpKTsKPiAgCj4gKyNpZmRlZiBDT05G SUdfRkJfREVGRVJSRURfSU8KPiArdm9pZCBkcm1fZmJfaGVscGVyX2RlZmVycmVkX2lvKHN0cnVj dCBmYl9pbmZvICppbmZvLAo+ICsJCQkgICAgICAgc3RydWN0IGxpc3RfaGVhZCAqcGFnZWxpc3Qp Cj4gK3sKPiArCXN0cnVjdCBkcm1fZmJfaGVscGVyICpoZWxwZXIgPSBpbmZvLT5wYXI7Cj4gKwl1 bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQsIG1pbiwgbWF4Owo+ICsJc3RydWN0IGRybV9jbGlwX3Jl Y3QgY2xpcDsKPiArCXN0cnVjdCBwYWdlICpwYWdlOwo+ICsKPiArCWlmICghaGVscGVyLT5mYi0+ ZnVuY3MtPmRpcnR5KQo+ICsJCXJldHVybjsKPiArCj4gKwlzcGluX2xvY2soJmhlbHBlci0+ZGly dHlfbG9jayk7Cj4gKwljbGlwID0gaGVscGVyLT5kaXJ0eV9jbGlwOwo+ICsJZHJtX2NsaXBfcmVj dF9yZXNldCgmaGVscGVyLT5kaXJ0eV9jbGlwKTsKPiArCXNwaW5fdW5sb2NrKCZoZWxwZXItPmRp cnR5X2xvY2spOwo+ICsKPiArCW1pbiA9IFVMT05HX01BWDsKPiArCW1heCA9IDA7Cj4gKwlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHBhZ2UsIHBhZ2VsaXN0LCBscnUpIHsKPiArCQlzdGFydCA9IHBhZ2Ut PmluZGV4IDw8IFBBR0VfU0hJRlQ7Cj4gKwkJZW5kID0gc3RhcnQgKyBQQUdFX1NJWkUgLSAxOwo+ ICsJCW1pbiA9IG1pbihtaW4sIHN0YXJ0KTsKPiArCQltYXggPSBtYXgobWF4LCBlbmQpOwo+ICsJ fQo+ICsKPiArCWlmIChtaW4gPCBtYXgpIHsKPiArCQljbGlwLngxID0gMDsKPiArCQljbGlwLngy ID0gaW5mby0+dmFyLnhyZXMgLSAxOwo+ICsJCWNsaXAueTEgPSBtaW4gLyBpbmZvLT5maXgubGlu ZV9sZW5ndGg7Cj4gKwkJY2xpcC55MiA9IG1pbl90KHUzMiwgbWF4IC8gaW5mby0+Zml4LmxpbmVf bGVuZ3RoLAo+ICsJCQkJICAgIGluZm8tPnZhci55cmVzIC0gMSk7Cj4gKwl9IGVsc2UgaWYgKGRy bV9jbGlwX3JlY3RfaXNfZW1wdHkoJmNsaXApKSB7Cj4gKwkJY2xpcC54MSA9IDA7Cj4gKwkJY2xp cC54MiA9IGluZm8tPnZhci54cmVzIC0gMTsKPiArCQljbGlwLnkxID0gMDsKPiArCQljbGlwLnky ID0gaW5mby0+dmFyLnlyZXMgLSAxOwo+ICsJfQo+ICsKPiArCWhlbHBlci0+ZmItPmZ1bmNzLT5k aXJ0eShoZWxwZXItPmZiLCBOVUxMLCAwLCAwLCAmY2xpcCwgMSk7Cj4gK30KPiArRVhQT1JUX1NZ TUJPTChkcm1fZmJfaGVscGVyX2RlZmVycmVkX2lvKTsKPiArCj4gK3N0YXRpYyB2b2lkIGRybV9m Yl9oZWxwZXJfc3lzX2RlZmVycmVkKHN0cnVjdCBmYl9pbmZvICppbmZvLCB1MzIgeCwgdTMyIHks Cj4gKwkJCQkgICAgICAgdTMyIHdpZHRoLCB1MzIgaGVpZ2h0KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJt X2ZiX2hlbHBlciAqaGVscGVyID0gaW5mby0+cGFyOwo+ICsJc3RydWN0IGRybV9jbGlwX3JlY3Qg Y2xpcDsKPiArCj4gKwlpZiAoIWluZm8tPmZiZGVmaW8pCj4gKwkJcmV0dXJuOwo+ICsKPiArCWNs aXAueDEgPSB4Owo+ICsJY2xpcC54MiA9IHggKyB3aWR0aCAtIDE7Cj4gKwljbGlwLnkxID0geTsK PiArCWNsaXAueTIgPSB5ICsgaGVpZ2h0IC0gMTsKPiArCj4gKwlzcGluX2xvY2soJmhlbHBlci0+ ZGlydHlfbG9jayk7Cj4gKwlkcm1fY2xpcF9yZWN0X21lcmdlKCZoZWxwZXItPmRpcnR5X2NsaXAs ICZjbGlwLCAxLCAwLCAwLCAwKTsKPiArCXNwaW5fdW5sb2NrKCZoZWxwZXItPmRpcnR5X2xvY2sp Owo+ICsKPiArCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmaW5mby0+ZGVmZXJyZWRfd29yaywgaW5m by0+ZmJkZWZpby0+ZGVsYXkpOwo+ICt9Cj4gKyNlbHNlCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBk cm1fZmJfaGVscGVyX3N5c19kZWZlcnJlZChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywgdTMyIHgsIHUz MiB5LAo+ICsJCQkJCSAgICAgIHUzMiB3aWR0aCwgdTMyIGhlaWdodCkKPiArewo+ICt9Cj4gKyNl bmRpZgo+ICsKPiAgLyoqCj4gICAqIGRybV9mYl9oZWxwZXJfc3lzX3JlYWQgLSB3cmFwcGVyIGFy b3VuZCBmYl9zeXNfcmVhZAo+ICAgKiBAaW5mbzogZmJfaW5mbyBzdHJ1Y3QgcG9pbnRlcgo+IEBA IC04NjYsNyArMTA0MCwxNCBAQCBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc3lzX3JlYWQp Owo+ICBzc2l6ZV90IGRybV9mYl9oZWxwZXJfc3lzX3dyaXRlKHN0cnVjdCBmYl9pbmZvICppbmZv LCBjb25zdCBjaGFyIF9fdXNlciAqYnVmLAo+ICAJCQkJc2l6ZV90IGNvdW50LCBsb2ZmX3QgKnBw b3MpCj4gIHsKPiAtCXJldHVybiBmYl9zeXNfd3JpdGUoaW5mbywgYnVmLCBjb3VudCwgcHBvcyk7 Cj4gKwlzc2l6ZV90IHJldDsKPiArCj4gKwlyZXQgPSBmYl9zeXNfd3JpdGUoaW5mbywgYnVmLCBj b3VudCwgcHBvcyk7Cj4gKwlpZiAocmV0ID4gMCkKPiArCQlkcm1fZmJfaGVscGVyX3N5c19kZWZl cnJlZChpbmZvLCAwLCAwLAo+ICsJCQkJCSAgIGluZm8tPnZhci54cmVzLCBpbmZvLT52YXIueXJl cyk7Cj4gKwo+ICsJcmV0dXJuIHJldDsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxw ZXJfc3lzX3dyaXRlKTsKPiAgCj4gQEAgLTg4MSw2ICsxMDYyLDggQEAgdm9pZCBkcm1fZmJfaGVs cGVyX3N5c19maWxscmVjdChzdHJ1Y3QgZmJfaW5mbyAqaW5mbywKPiAgCQkJCWNvbnN0IHN0cnVj dCBmYl9maWxscmVjdCAqcmVjdCkKPiAgewo+ICAJc3lzX2ZpbGxyZWN0KGluZm8sIHJlY3QpOwo+ ICsJZHJtX2ZiX2hlbHBlcl9zeXNfZGVmZXJyZWQoaW5mbywgcmVjdC0+ZHgsIHJlY3QtPmR5LAo+ ICsJCQkJICAgcmVjdC0+d2lkdGgsIHJlY3QtPmhlaWdodCk7Cj4gIH0KPiAgRVhQT1JUX1NZTUJP TChkcm1fZmJfaGVscGVyX3N5c19maWxscmVjdCk7Cj4gIAo+IEBAIC04OTUsNiArMTA3OCw4IEBA IHZvaWQgZHJtX2ZiX2hlbHBlcl9zeXNfY29weWFyZWEoc3RydWN0IGZiX2luZm8gKmluZm8sCj4g IAkJCQljb25zdCBzdHJ1Y3QgZmJfY29weWFyZWEgKmFyZWEpCj4gIHsKPiAgCXN5c19jb3B5YXJl YShpbmZvLCBhcmVhKTsKPiArCWRybV9mYl9oZWxwZXJfc3lzX2RlZmVycmVkKGluZm8sIGFyZWEt PmR4LCBhcmVhLT5keSwKPiArCQkJCSAgIGFyZWEtPndpZHRoLCBhcmVhLT5oZWlnaHQpOwo+ICB9 Cj4gIEVYUE9SVF9TWU1CT0woZHJtX2ZiX2hlbHBlcl9zeXNfY29weWFyZWEpOwo+ICAKPiBAQCAt OTA5LDYgKzEwOTQsOCBAQCB2b2lkIGRybV9mYl9oZWxwZXJfc3lzX2ltYWdlYmxpdChzdHJ1Y3Qg ZmJfaW5mbyAqaW5mbywKPiAgCQkJCSBjb25zdCBzdHJ1Y3QgZmJfaW1hZ2UgKmltYWdlKQo+ICB7 Cj4gIAlzeXNfaW1hZ2VibGl0KGluZm8sIGltYWdlKTsKPiArCWRybV9mYl9oZWxwZXJfc3lzX2Rl ZmVycmVkKGluZm8sIGltYWdlLT5keCwgaW1hZ2UtPmR5LAo+ICsJCQkJICAgaW1hZ2UtPndpZHRo LCBpbWFnZS0+aGVpZ2h0KTsKPiAgfQo+ICBFWFBPUlRfU1lNQk9MKGRybV9mYl9oZWxwZXJfc3lz X2ltYWdlYmxpdCk7Cj4gIAo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVy LmggYi9pbmNsdWRlL2RybS9kcm1fZmJfaGVscGVyLmgKPiBpbmRleCBkOGE0MGRmLi4xZGFhZGM3 IDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+ICsrKyBiL2luY2x1 ZGUvZHJtL2RybV9mYl9oZWxwZXIuaAo+IEBAIC0xNzIsNiArMTcyLDkgQEAgc3RydWN0IGRybV9m Yl9oZWxwZXJfY29ubmVjdG9yIHsKPiAgICogQGZ1bmNzOiBkcml2ZXIgY2FsbGJhY2tzIGZvciBm YiBoZWxwZXIKPiAgICogQGZiZGV2OiBlbXVsYXRlZCBmYmRldiBkZXZpY2UgaW5mbyBzdHJ1Y3QK PiAgICogQHBzZXVkb19wYWxldHRlOiBmYWtlIHBhbGV0dGUgb2YgMTYgY29sb3JzCj4gKyAqIEBk aXJ0eV9jbGlwOiBjbGlwIHJlY3RhbmdsZSB1c2VkIHdpdGggZGVmZXJyZWRfaW8gdG8gYWNjdW11 bGF0ZSBkYW1hZ2UgdG8KPiArICogICAgICAgICAgICAgIHRoZSBzY3JlZW4gYnVmZmVyCj4gKyAq IEBkaXJ0eV9sb2NrOiBzcGlubG9jayBwcm90ZWN0aW5nIEBkaXJ0eV9jbGlwCj4gICAqCj4gICAq IFRoaXMgaXMgdGhlIG1haW4gc3RydWN0dXJlIHVzZWQgYnkgdGhlIGZiZGV2IGhlbHBlcnMuIERy aXZlcnMgc3VwcG9ydGluZwo+ICAgKiBmYmRldiBlbXVsYXRpb24gc2hvdWxkIGVtYmVkZGVkIHRo aXMgaW50byB0aGVpciBvdmVyYWxsIGRyaXZlciBzdHJ1Y3R1cmUuCj4gQEAgLTE4OSw2ICsxOTIs MTAgQEAgc3RydWN0IGRybV9mYl9oZWxwZXIgewo+ICAJY29uc3Qgc3RydWN0IGRybV9mYl9oZWxw ZXJfZnVuY3MgKmZ1bmNzOwo+ICAJc3RydWN0IGZiX2luZm8gKmZiZGV2Owo+ICAJdTMyIHBzZXVk b19wYWxldHRlWzE3XTsKPiArI2lmZGVmIENPTkZJR19GQl9ERUZFUlJFRF9JTwo+ICsJc3RydWN0 IGRybV9jbGlwX3JlY3QgZGlydHlfY2xpcDsKPiArCXNwaW5sb2NrX3QgZGlydHlfbG9jazsKPiAr I2VuZGlmCj4gIAo+ICAJLyoqCj4gIAkgKiBAa2VybmVsX2ZiX2xpc3Q6Cj4gQEAgLTI0NCw2ICsy NTEsOSBAQCB2b2lkIGRybV9mYl9oZWxwZXJfZmlsbF9maXgoc3RydWN0IGZiX2luZm8gKmluZm8s IHVpbnQzMl90IHBpdGNoLAo+ICAKPiAgdm9pZCBkcm1fZmJfaGVscGVyX3VubGlua19mYmkoc3Ry dWN0IGRybV9mYl9oZWxwZXIgKmZiX2hlbHBlcik7Cj4gIAo+ICt2b2lkIGRybV9mYl9oZWxwZXJf ZGVmZXJyZWRfaW8oc3RydWN0IGZiX2luZm8gKmluZm8sCj4gKwkJCSAgICAgICBzdHJ1Y3QgbGlz dF9oZWFkICpwYWdlbGlzdCk7Cj4gKwo+ICBzc2l6ZV90IGRybV9mYl9oZWxwZXJfc3lzX3JlYWQo c3RydWN0IGZiX2luZm8gKmluZm8sIGNoYXIgX191c2VyICpidWYsCj4gIAkJCSAgICAgICBzaXpl X3QgY291bnQsIGxvZmZfdCAqcHBvcyk7Cj4gIHNzaXplX3QgZHJtX2ZiX2hlbHBlcl9zeXNfd3Jp dGUoc3RydWN0IGZiX2luZm8gKmluZm8sIGNvbnN0IGNoYXIgX191c2VyICpidWYsCj4gQEAgLTM2 Miw2ICszNzIsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGRybV9mYl9oZWxwZXJfdW5saW5rX2Zi aShzdHJ1Y3QgZHJtX2ZiX2hlbHBlciAqZmJfaGVscGVyKQo+ICB7Cj4gIH0KPiAgCj4gK3N0YXRp YyBpbmxpbmUgdm9pZCBkcm1fZmJfaGVscGVyX2RlZmVycmVkX2lvKHN0cnVjdCBmYl9pbmZvICpp bmZvLAo+ICsJCQkJCSAgICAgc3RydWN0IGxpc3RfaGVhZCAqcGFnZWxpc3QpCj4gK3sKPiArfQo+ ICsKPiAgc3RhdGljIGlubGluZSBzc2l6ZV90IGRybV9mYl9oZWxwZXJfc3lzX3JlYWQoc3RydWN0 IGZiX2luZm8gKmluZm8sCj4gIAkJCQkJICAgICBjaGFyIF9fdXNlciAqYnVmLCBzaXplX3QgY291 bnQsCj4gIAkJCQkJICAgICBsb2ZmX3QgKnBwb3MpCj4gLS0gCj4gMi4yLjIKPiAKPiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IGRyaS1kZXZlbCBtYWls aW5nIGxpc3QKPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwKCi0tIApEYW5pZWwg VmV0dGVyClNvZnR3YXJlIEVuZ2luZWVyLCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5m ZndsbC5jaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpk cmktZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK