From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH v3 01/22] drm: Add GEM backed framebuffer library Date: Wed, 16 Aug 2017 23:37:54 +0300 Message-ID: <5610639.ruGKPlVryA@avalon> References: <1502631125-13557-1-git-send-email-noralf@tronnes.org> <1502631125-13557-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 galahad.ideasonboard.com (galahad.ideasonboard.com [IPv6:2001:4b98:dc2:45:216:3eff:febb:480d]) by gabe.freedesktop.org (Postfix) with ESMTPS id 467CB6E2EC for ; Wed, 16 Aug 2017 20:37:31 +0000 (UTC) In-Reply-To: <1502631125-13557-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: narmstrong@baylibre.com, daniel.vetter@ffwll.ch, liviu.dudau@arm.com, marex@denx.de, boris.brezillon@free-electrons.com, abrodkin@synopsys.com, z.liuxinliang@hisilicon.com, kong.kongxinwei@hisilicon.com, tomi.valkeinen@ti.com, puck.chen@hisilicon.com, jsarha@ti.com, dri-devel@lists.freedesktop.org, vincent.abriou@st.com, alison.wang@freescale.com, philippe.cornu@st.com, yannick.fertre@st.com, zourongrong@gmail.com, maxime.ripard@free-electrons.com, shawnguo@kernel.org List-Id: dri-devel@lists.freedesktop.org TmkgTm9yYWxmLAoKVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCgpPbiBTdW5kYXkgMTMgQXVnIDIw MTcgMTU6MzE6NDQgTm9yYWxmIFRyw7hubmVzIHdyb3RlOgo+IFRoaXMgbGlicmFyeSBwcm92aWRl cyBoZWxwZXJzIGZvciBkcml2ZXJzIHRoYXQgZG9uJ3Qgc3ViY2xhc3MKPiBkcm1fZnJhbWVidWZm ZXIgYW5kIGFyZSBiYWNrZWQgYnkgZHJtX2dlbV9vYmplY3QuIFRoZSBjb2RlIGlzCj4gdGFrZW4g ZnJvbSBkcm1fZmJfY21hX2hlbHBlci4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBOb3JhbGYgVHLDuG5u ZXMgPG5vcmFsZkB0cm9ubmVzLm9yZz4KPiBSZXZpZXdlZC1ieTogRGFuaWVsIFZldHRlciA8ZGFu aWVsLnZldHRlckBmZndsbC5jaD4KPiAtLS0KPiAgRG9jdW1lbnRhdGlvbi9ncHUvZHJtLWttcy1o ZWxwZXJzLnJzdCAgICAgICAgfCAgIDkgKwo+ICBkcml2ZXJzL2dwdS9kcm0vTWFrZWZpbGUgICAg ICAgICAgICAgICAgICAgICB8ICAgMiArLQo+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFt ZWJ1ZmZlcl9oZWxwZXIuYyB8IDI4MyArKysrKysrKysrKysrKysrKysrKysrKysKPiAgaW5jbHVk ZS9kcm0vZHJtX2ZyYW1lYnVmZmVyLmggICAgICAgICAgICAgICAgfCAgIDcgKwo+ICBpbmNsdWRl L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5oICAgICB8ICAzNyArKysrCj4gIDUgZmls ZXMgY2hhbmdlZCwgMzM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKPiAgY3JlYXRlIG1v ZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBlci5jCj4g IGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVyX2hlbHBl ci5oCgpbc25pcF0KCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1l YnVmZmVyX2hlbHBlci5jCj4gYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9o ZWxwZXIuYyBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+IGluZGV4IDAwMDAwMDAuLjA2OGE2MzAKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJf aGVscGVyLmMKPiBAQCAtMCwwICsxLDI4MyBAQAoKW3NuaXBdCgo+ICsvKioKPiArICogRE9DOiBv dmVydmlldwo+ICsgKgo+ICsgKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgaGVscGVycyBmb3IgZHJp dmVycyB0aGF0IGRvbid0IHN1YmNsYXNzCj4gKyAqICZkcm1fZnJhbWVidWZmZXIgYW5kIGFuZCB1 c2UgJmRybV9nZW1fb2JqZWN0IGZvciB0aGVpciBiYWNraW5nIHN0b3JhZ2UuCgpzL2FuZCBhbmQv YW5kLwoKPiArICoKPiArICogRHJpdmVycyB3aXRob3V0IGFkZGl0aW9uYWwgbmVlZHMgdG8gdmFs aWRhdGUgZnJhbWVidWZmZXJzIGNhbiBzaW1wbHkgdXNlCj4gKyAqIGRybV9nZW1fZmJfY3JlYXRl KCkgYW5kIGV2ZXJ5dGhpbmcgaXMgd2lyZWQgdXAgYXV0b21hdGljYWxseS4gQnV0IGFsbAo+ICsg KiBwYXJ0cyBjYW4gYmUgdXNlZCBpbmRpdmlkdWFsbHkuCgpBIHNlbnRlbmNlIHNob3VsZCBub3Qg c3RhcnQgYnkgImJ1dCIuIEhvdyBhYm91dCAiT3RoZXIgZHJpdmVycyBjYW4gdXNlIGFsbCAKcGFy dHMgaW5kZXBlbmRlbnRseS4iID8KCj4gKyAqLwo+ICsKPiArLyoqCj4gKyAqIGRybV9nZW1fZmJf Z2V0X29iaigpIC0gR2V0IEdFTSBvYmplY3QgZm9yIGZyYW1lYnVmZmVyCj4gKyAqIEBmYjogVGhl IGZyYW1lYnVmZmVyCj4gKyAqIEBwbGFuZTogV2hpY2ggcGxhbmUKPiArICoKPiArICogUmV0dXJu cyB0aGUgR0VNIG9iamVjdCBmb3IgZ2l2ZW4gZnJhbWVidWZmZXIuCgpZb3UgbWlnaHQgd2FudCB0 byBtZW50aW9uIHRoYXQgbm8gcmVmZXJlbmNlIGlzIHRha2VuIG9uIHRoZSBHRU0gb2JqZWN0LgoK PiArICovCj4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdCAqZHJtX2dlbV9mYl9nZXRfb2JqKHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLAo+ICsJCQkJCSAgdW5zaWduZWQgaW50IHBsYW5lKQo+ICt7 Cj4gKwlpZiAocGxhbmUgPj0gNCkKPiArCQlyZXR1cm4gTlVMTDsKPiArCj4gKwlyZXR1cm4gZmIt Pm9ialtwbGFuZV07Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9mYl9nZXRfb2Jq KTsKPiArCj4gK3N0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKPiArZHJtX2dlbV9mYl9h bGxvYyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCSBjb25zdCBzdHJ1Y3QgZHJtX21vZGVf ZmJfY21kMiAqbW9kZV9jbWQsCj4gKwkJIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqKm9iaiwgdW5z aWduZWQgaW50IG51bV9wbGFuZXMsCj4gKwkJIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJf ZnVuY3MgKmZ1bmNzKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYjsKPiArCWlu dCByZXQsIGk7CgppIGlzIG5ldmVyIG5lZ2F0aXZlLCB5b3UgY2FuIG1ha2UgaXQgYW4gdW5zaWdu ZWQgaW50LgoKPiArCj4gKwlmYiA9IGt6YWxsb2Moc2l6ZW9mKCpmYiksIEdGUF9LRVJORUwpOwo+ ICsJaWYgKCFmYikKPiArCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPiArCj4gKwlkcm1faGVs cGVyX21vZGVfZmlsbF9mYl9zdHJ1Y3QoZGV2LCBmYiwgbW9kZV9jbWQpOwo+ICsKPiArCWZvciAo aSA9IDA7IGkgPCBudW1fcGxhbmVzOyBpKyspCj4gKwkJZmItPm9ialtpXSA9IG9ialtpXTsKPiAr Cj4gKwlyZXQgPSBkcm1fZnJhbWVidWZmZXJfaW5pdChkZXYsIGZiLCBmdW5jcyk7Cj4gKwlpZiAo cmV0KSB7Cj4gKwkJRFJNX0RFVl9FUlJPUihkZXYtPmRldiwgIkZhaWxlZCB0byBpbml0IGZyYW1l YnVmZmVyOiAlZFxuIiwKPiArCQkJICAgICAgcmV0KTsKPiArCQlrZnJlZShmYik7Cj4gKwkJcmV0 dXJuIEVSUl9QVFIocmV0KTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmI7Cj4gK30KPiArCj4gKy8q Kgo+ICsgKiBkcm1fZ2VtX2ZiX2Rlc3Ryb3kgLSBGcmVlIEdFTSBiYWNrZWQgZnJhbWVidWZmZXIK PiArICogQGZiOiBEUk0gZnJhbWVidWZmZXIKPiArICoKPiArICogRnJlZXMgYSBHRU0gYmFja2Vk IGZyYW1lYnVmZmVyIHdpdGggaXQncyBiYWNraW5nIGJ1ZmZlcihzKSBhbmQgdGhlCgpzL2l0J3Mv aXRzLwoKPiBzdHJ1Y3R1cmUKPiArICogaXRzZWxmLiBEcml2ZXJzIGNhbiB1c2UgdGhpcyBhcyB0 aGVpciAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLT5kZXN0cm95Cj4gKyAqIGNhbGxiYWNrLgo+ICsg Ki8KPiArdm9pZCBkcm1fZ2VtX2ZiX2Rlc3Ryb3koc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIp Cj4gK3sKPiArCWludCBpOwoKaSBpcyBuZXZlciBuZWdhdGl2ZSwgeW91IGNhbiBtYWtlIGl0IGFu IHVuc2lnbmVkIGludC4KCj4gKwo+ICsJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKPiArCQlkcm1f Z2VtX29iamVjdF9wdXRfdW5sb2NrZWQoZmItPm9ialtpXSk7Cj4gKwo+ICsJZHJtX2ZyYW1lYnVm ZmVyX2NsZWFudXAoZmIpOwo+ICsJa2ZyZWUoZmIpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJt X2dlbV9mYl9kZXN0cm95KTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX2ZiX2NyZWF0ZV9oYW5k bGUgLSBDcmVhdGUgaGFuZGxlIGZvciBHRU0gYmFja2VkIGZyYW1lYnVmZmVyCj4gKyAqIEBmYjog RFJNIGZyYW1lYnVmZmVyCj4gKyAqIEBmaWxlOiBkcm0gZmlsZQoKV2h5IGRvZXMgdGhlIGZiIGhh dmUgYSBEUk0gYW5kIHRoZSBmaWxlIGEgZHJtID8gOi0pIEkgd291bGQgcGljayBvbmUgYW5kIHN0 aWNrIAp0byBpdCBmb3IgdGhlIHdob2xlIGZpbGUuCgo+ICsgKiBAaGFuZGxlOiBoYW5kbGUgY3Jl YXRlZAo+ICsgKgo+ICsgKiBEcml2ZXJzIGNhbiB1c2UgdGhpcyBhcyB0aGVpciAmZHJtX2ZyYW1l YnVmZmVyX2Z1bmNzLT5jcmVhdGVfaGFuZGxlCj4gKyAqIGNhbGxiYWNrLgo+ICsgKgo+ICsgKiBS ZXR1cm5zOgo+ICsgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZh aWx1cmUuCj4gKyAqLwo+ICtpbnQgZHJtX2dlbV9mYl9jcmVhdGVfaGFuZGxlKHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLCBzdHJ1Y3QgZHJtX2ZpbGUKPiAqZmlsZSwKPiArCQkJICAgICB1bnNp Z25lZCBpbnQgKmhhbmRsZSkKPiArewo+ICsJcmV0dXJuIGRybV9nZW1faGFuZGxlX2NyZWF0ZShm aWxlLCBmYi0+b2JqWzBdLCBoYW5kbGUpOwo+ICt9Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2dlbV9m Yl9jcmVhdGVfaGFuZGxlKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRo X2Z1bmNzKCkgLSBoZWxwZXIgZnVuY3Rpb24gZm9yIHRoZQo+ICsgKiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAmZHJtX21vZGVfY29uZmlnX2Z1bmNzLmZiX2NyZWF0ZQo+ICsgKiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjawo+ICsgKiBAZGV2OiBEUk0g ZGV2aWNlCj4gKyAqIEBmaWxlOiBkcm0gZmlsZSBmb3IgdGhlIGlvY3RsIGNhbGwKPiArICogQG1v ZGVfY21kOiBtZXRhZGF0YSBmcm9tIHRoZSB1c2Vyc3BhY2UgZmIgY3JlYXRpb24gcmVxdWVzdAoK VGhpcyBsb29rcyBsaWtlIGRhdGEgdG8gbWUsIG5vdCBtZXRhZGF0YSAoZGF0YSBhYm91dCB0aGUg ZGF0YSkuIFNhbWUgZm9yIHRoZSAKbmV4dCBmdW5jdGlvbi4KCj4gKyAqIEBmdW5jczogdnRhYmxl IHRvIGJlIHVzZWQgZm9yIHRoZSBuZXcgZnJhbWVidWZmZXIgb2JqZWN0Cj4gKyAqCj4gKyAqIFRo aXMgY2FuIGJlIHVzZWQgdG8gc2V0ICZkcm1fZnJhbWVidWZmZXJfZnVuY3MgZm9yIGRyaXZlcnMg dGhhdCBuZWVkIHRoZQo+ICsgKiAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLmRpcnR5IGNhbGxiYWNr LiBVc2UgZHJtX2dlbV9mYl9jcmVhdGUoKSBpZiB5b3UKPiBkb24ndAo+ICsgKiBuZWVkIHRvIGNo YW5nZSAmZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzLgo+ICsgKiBUaGUgZnVuY3Rpb24gZG9lcyBidWZm ZXIgc2l6ZSB2YWxpZGF0aW9uLgo+ICsgKi8KPiArc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqCj4g K2RybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3Ry dWN0IGRybV9maWxlICpmaWxlLAo+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyICptb2RlX2NtZCwKPiArCQkJICAgICBjb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1 bmNzICpmdW5jcykKPiArewo+ICsJY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqaW5mbzsK PiArCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jqc1s0XTsKPiArCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiOwo+ICsJaW50IHJldCwgaTsKCmkgaXMgbmV2ZXIgbmVnYXRpdmUgKGV4Y2VwdCBp biB0aGUgZXJyb3IgcGF0aCwgYnV0IHNlZSBiZWxvdyksIHlvdSBjYW4gbWFrZSBpdCAKYW4gdW5z aWduZWQgaW50LgoKPiArCWluZm8gPSBkcm1fZ2V0X2Zvcm1hdF9pbmZvKGRldiwgbW9kZV9jbWQp Owo+ICsJaWYgKCFpbmZvKQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiArCWZv ciAoaSA9IDA7IGkgPCBpbmZvLT5udW1fcGxhbmVzOyBpKyspIHsKPiArCQl1bnNpZ25lZCBpbnQg d2lkdGggPSBtb2RlX2NtZC0+d2lkdGggLyAoaSA/IGluZm8tPmhzdWIgOiAxKTsKPiArCQl1bnNp Z25lZCBpbnQgaGVpZ2h0ID0gbW9kZV9jbWQtPmhlaWdodCAvIChpID8gaW5mby0+dnN1YiA6IDEp Owo+ICsJCXVuc2lnbmVkIGludCBtaW5fc2l6ZTsKPiArCj4gKwkJb2Jqc1tpXSA9IGRybV9nZW1f b2JqZWN0X2xvb2t1cChmaWxlLCBtb2RlX2NtZC0+aGFuZGxlc1tpXSk7Cj4gKwkJaWYgKCFvYmpz W2ldKSB7Cj4gKwkJCURSTV9ERVZfRVJST1IoZGV2LT5kZXYsICJGYWlsZWQgdG8gbG9va3VwIEdF TVxuIik7CgpzL0dFTS9HRU0gb2JqZWN0LyA/CgpBcyB0aGlzIGlzIGEgY29uZGl0aW9uIHRoYXQg Y2FuIGVhc2lseSBiZSB0cmlnZ2VyZWQgYnkgdXNlcnNwYWNlIEkgd291bGQgbWFrZSAKaXQgYSBk ZWJ1ZyBtZXNzYWdlLCBub3QgYW4gZXJyb3IgbWVzc2FnZS4KCj4gKwkJCXJldCA9IC1FTk9FTlQ7 Cj4gKwkJCWdvdG8gZXJyX2dlbV9vYmplY3RfcHV0Owo+ICsJCX0KPiArCj4gKwkJbWluX3NpemUg PSAoaGVpZ2h0IC0gMSkgKiBtb2RlX2NtZC0+cGl0Y2hlc1tpXQo+ICsJCQkgKyB3aWR0aCAqIGlu Zm8tPmNwcFtpXQo+ICsJCQkgKyBtb2RlX2NtZC0+b2Zmc2V0c1tpXTsKClRoYXQgbWlnaHQgYmUg YSBiaXQgb2YgYW4gb3Zlcm9wdGltaXphdGlvbiwgSSB0aGluayBJIHdvdWxkIGhhdmUgcmVxdWly ZWQgdGhlIApsYXN0IGxpbmUgdG8gbWF0Y2ggdGhlIHBpdGNoIG9mIHRoZSByZXN0IG9mIHRoZSBp bWFnZSwgYnV0IGl0J3MgdG9vIGxhdGUgdG8gCmNoYW5nZSB0aGF0IGFzIHRoZSBDTUEgRkIgaGVs cGVycyBoYXZlIHRoZSBzYW1lIGNoZWNrIGluIHBsYWNlLgoKPiArCQlpZiAob2Jqc1tpXS0+c2l6 ZSA8IG1pbl9zaXplKSB7Cj4gKwkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmpzW2ld KTsKPiArCQkJcmV0ID0gLUVJTlZBTDsKPiArCQkJZ290byBlcnJfZ2VtX29iamVjdF9wdXQ7Cj4g KwkJfQo+ICsJfQo+ICsKPiArCWZiID0gZHJtX2dlbV9mYl9hbGxvYyhkZXYsIG1vZGVfY21kLCBv YmpzLCBpLCBmdW5jcyk7Cj4gKwlpZiAoSVNfRVJSKGZiKSkgewo+ICsJCXJldCA9IFBUUl9FUlIo ZmIpOwo+ICsJCWdvdG8gZXJyX2dlbV9vYmplY3RfcHV0Owo+ICsJfQo+ICsKPiArCXJldHVybiBm YjsKPiArCj4gK2Vycl9nZW1fb2JqZWN0X3B1dDoKPiArCWZvciAoaS0tOyBpID49IDA7IGktLSkK PiArCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2NrZWQob2Jqc1tpXSk7CgpZb3UgY2FuIHdyaXRl IHRoaXMgYXMKCglmb3IgKDsgaSA+IDA7IGktLSkKCQlkcm1fZ2VtX29iamVjdF9wdXRfdW5sb2Nr ZWQob2Jqc1tpLTFdKTsKCnRvIHJlc3RyaWN0IGkgdG8gcG9zaXRpdmUgdmFsdWVzLiBVcCB0byB5 b3UuCgo+ICsKPiArCXJldHVybiBFUlJfUFRSKHJldCk7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9H UEwoZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcyk7Cj4gKwo+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyBkcm1fZ2VtX2ZiX2Z1bmNzID0gewo+ICsJLmRlc3Ry b3kJPSBkcm1fZ2VtX2ZiX2Rlc3Ryb3ksCj4gKwkuY3JlYXRlX2hhbmRsZQk9IGRybV9nZW1fZmJf Y3JlYXRlX2hhbmRsZSwKPiArfTsKCk5pdHBpY2tpbmcsIEkgZmluZCBpdCBlYXNpZXIgdG8gbmF2 aWdhdGUgY29kZSB3aGVuIHRoZSBvcHMgc3RydWN0dXJlIGlzIApsb2NhdGVkIHJpZ2h0IGFmdGVy IHRoZSBvcHMgZnVuY3Rpb25zLiBZb3UgY291bGQganVzdCBtb3ZlIHRoaXMgb25lIG9uZSAKZnVu Y3Rpb24gdXAuIFVwIHRvIHlvdS4KCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX2ZiX2NyZWF0ZSgpIC0g JmRybV9tb2RlX2NvbmZpZ19mdW5jcy5mYl9jcmVhdGUgY2FsbGJhY2sgZnVuY3Rpb24KPiArICog QGRldjogRFJNIGRldmljZQo+ICsgKiBAZmlsZTogZHJtIGZpbGUgZm9yIHRoZSBpb2N0bCBjYWxs Cj4gKyAqIEBtb2RlX2NtZDogbWV0YWRhdGEgZnJvbSB0aGUgdXNlcnNwYWNlIGZiIGNyZWF0aW9u IHJlcXVlc3QKPiArICoKPiArICogSWYgeW91ciBoYXJkd2FyZSBoYXMgc3BlY2lhbCBhbGlnbm1l bnQgb3IgcGl0Y2ggcmVxdWlyZW1lbnRzIHRoZXNlCj4gc2hvdWxkIGJlCj4gKyAqIGNoZWNrZWQg YmVmb3JlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4gVGhlIGZ1bmN0aW9uIGRvZXMgYnVmZmVyIHNp emUKPiArICogdmFsaWRhdGlvbi4gVXNlIGRybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3MoKSBp ZiB5b3UgbmVlZCB0byBzZXQKPiArICogJmRybV9mcmFtZWJ1ZmZlcl9mdW5jcy5kaXJ0eS4KPiAr ICovCj4gK3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgo+ICtkcm1fZ2VtX2ZiX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gKwkJICBjb25zdCBz dHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAqbW9kZV9jbWQpCj4gK3sKPiArCXJldHVybiBkcm1fZ2Vt X2ZiX2NyZWF0ZV93aXRoX2Z1bmNzKGRldiwgZmlsZSwgbW9kZV9jbWQsCj4gKwkJCQkJICAgICZk cm1fZ2VtX2ZiX2Z1bmNzKTsKPiArfQo+ICtFWFBPUlRfU1lNQk9MX0dQTChkcm1fZ2VtX2ZiX2Ny ZWF0ZSk7Cj4gKwo+ICsvKioKPiArICogZHJtX2dlbV9mYl9wcmVwYXJlX2ZiKCkgLSBQcmVwYXJl IGdlbSBmcmFtZWJ1ZmZlcgo+ICsgKiBAcGxhbmU6IFdoaWNoIHBsYW5lCj4gKyAqIEBzdGF0ZTog UGxhbmUgc3RhdGUgYXR0YWNoIGZlbmNlIHRvCgpHb29kIEVuZ2xpc2ggdGhhdCBub3QgYmUgOi0p Cgo+ICsgKgo+ICsgKiBUaGlzIGNhbiBiZSB1c2VkIGFzIHRoZSAmZHJtX3BsYW5lX2hlbHBlcl9m dW5jcy5wcmVwYXJlX2ZiIGhvb2suCj4gKyAqCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlm IHRoZSBwbGFuZSBGQiBoYXMgYW4gZG1hLWJ1ZiBhdHRhY2hlZCwgZXh0cmFjdHMKCnMvaGFzIGFu L2hhcyBhLwoKPiArICogdGhlIGV4Y2x1c2l2ZSBmZW5jZSBhbmQgYXR0YWNoZXMgaXQgdG8gcGxh bmUgc3RhdGUgZm9yIHRoZSBhdG9taWMgaGVscGVyCj4gKyAqIHRvIHdhaXQgb24uCj4gKyAqCj4g KyAqIFRoZXJlIGlzIG5vIG5lZWQgZm9yICZkcm1fcGxhbmVfaGVscGVyX2Z1bmNzLmNsZWFudXBf ZmIgaG9vayBmb3Igc2ltcGxlCj4gKyAqIGdlbSBiYXNlZCBmcmFtZWJ1ZmZlciBkcml2ZXJzIHdo aWNoIGhhdmUgdGhlaXIgYnVmZmVycyBhbHdheXMgcGlubmVkIGluCj4gKyAqIG1lbW9yeS4KPiAr ICovCj4gK2ludCBkcm1fZ2VtX2ZiX3ByZXBhcmVfZmIoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs Cj4gKwkJCSAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUpCj4gK3sKPiArCXN0cnVjdCBk bWFfYnVmICpkbWFfYnVmOwo+ICsJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gKwo+ICsJaWYg KChwbGFuZS0+c3RhdGUtPmZiID09IHN0YXRlLT5mYikgfHwgIXN0YXRlLT5mYikKCk5vIG5lZWQg Zm9yIHRoZSBpbm5lciBwYXJlbnRoZXNlcy4KCj4gKwkJcmV0dXJuIDA7Cj4gKwo+ICsJZG1hX2J1 ZiA9IGRybV9nZW1fZmJfZ2V0X29iaihzdGF0ZS0+ZmIsIDApLT5kbWFfYnVmOwo+ICsJaWYgKGRt YV9idWYpIHsKPiArCQlmZW5jZSA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRfZXhjbF9yY3UoZG1h X2J1Zi0+cmVzdik7Cj4gKwkJZHJtX2F0b21pY19zZXRfZmVuY2VfZm9yX3BsYW5lKHN0YXRlLCBm ZW5jZSk7Cj4gKwl9Cj4gKwo+ICsJcmV0dXJuIDA7Cj4gK30KPiArRVhQT1JUX1NZTUJPTF9HUEwo ZHJtX2dlbV9mYl9wcmVwYXJlX2ZiKTsKPiArCj4gKy8qKgo+ICsgKiBkcm1fZ2VtX2ZiZGV2X2Zi X2NyZWF0ZSAtIENyZWF0ZSBhIGRybV9mcmFtZWJ1ZmZlciBmb3IgZmJkZXYgZW11bGF0aW9uCj4g KyAqIEBkZXY6IERSTSBkZXZpY2UKPiArICogQHNpemVzOiBmYmRldiBzaXplIGRlc2NyaXB0aW9u Cj4gKyAqIEBwaXRjaF9hbGlnbjogb3B0aW9uYWwgcGl0Y2ggYWxpZ25tZW50Cj4gKyAqIEBvYmo6 IEdFTSBvYmplY3QgYmFja2luZyB0aGUgZnJhbWVidWZmZXIKPiArICogQGZ1bmNzOiB2dGFibGUg dG8gYmUgdXNlZCBmb3IgdGhlIG5ldyBmcmFtZWJ1ZmZlciBvYmplY3QKPiArICoKPiArICogVGhp cyBmdW5jdGlvbiBjcmVhdGVzIGEgZnJhbWVidWZmZXIgZm9yIHVzZSB3aXRoIGZiZGV2IGVtdWxh dGlvbi4KPiArICoKPiArICogUmV0dXJuczoKPiArICogUG9pbnRlciB0byBhIGRybV9mcmFtZWJ1 ZmZlciBvbiBzdWNjZXNzIG9yIGFuIGVycm9yIHBvaW50ZXIgb24gZmFpbHVyZS4KPiArICovCj4g K3N0cnVjdCBkcm1fZnJhbWVidWZmZXIgKgo+ICtkcm1fZ2VtX2ZiZGV2X2ZiX2NyZWF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+ICsJCQlzdHJ1Y3QgZHJtX2ZiX2hlbHBlcl9zdXJmYWNlX3Np emUgKnNpemVzLAo+ICsJCQl1bnNpZ25lZCBpbnQgcGl0Y2hfYWxpZ24sIHN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqLAo+ICsJCQljb25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzICpm dW5jcykKPiArewo+ICsJc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgbW9kZV9jbWQgPSB7IDAgfTsK PiArCj4gKwltb2RlX2NtZC53aWR0aCA9IHNpemVzLT5zdXJmYWNlX3dpZHRoOwo+ICsJbW9kZV9j bWQuaGVpZ2h0ID0gc2l6ZXMtPnN1cmZhY2VfaGVpZ2h0Owo+ICsJbW9kZV9jbWQucGl0Y2hlc1sw XSA9IHNpemVzLT5zdXJmYWNlX3dpZHRoICoKPiArCQkJICAgICAgRElWX1JPVU5EX1VQKHNpemVz LT5zdXJmYWNlX2JwcCwgOCk7Cj4gKwlpZiAocGl0Y2hfYWxpZ24pCj4gKwkJbW9kZV9jbWQucGl0 Y2hlc1swXSA9IHJvdW5kdXAobW9kZV9jbWQucGl0Y2hlc1swXSwKPiArCQkJCQkgICAgICBwaXRj aF9hbGlnbik7Cj4gKwltb2RlX2NtZC5waXhlbF9mb3JtYXQgPSBkcm1fbW9kZV9sZWdhY3lfZmJf Zm9ybWF0KHNpemVzLT5zdXJmYWNlX2JwcCwKPiArCQkJCQkJCXNpemVzLT5zdXJmYWNlX2RlcHRo KTsKPiArCWlmIChvYmotPnNpemUgPCBtb2RlX2NtZC5waXRjaGVzWzBdICogbW9kZV9jbWQuaGVp Z2h0KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiArCXJldHVybiBkcm1fZ2Vt X2ZiX2FsbG9jKGRldiwgJm1vZGVfY21kLCAmb2JqLCAxLCBmdW5jcyk7Cj4gK30KPiArRVhQT1JU X1NZTUJPTChkcm1fZ2VtX2ZiZGV2X2ZiX2NyZWF0ZSk7Cgpbc25pcF0KCj4gZGlmZiAtLWdpdCBh L2luY2x1ZGUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmgKPiBiL2luY2x1ZGUvZHJt L2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRl eCAwMDAwMDAwLi5kYjljZmEwCj4gLS0tIC9kZXYvbnVsbAo+ICsrKyBiL2luY2x1ZGUvZHJtL2Ry bV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmgKPiBAQCAtMCwwICsxLDM3IEBACj4gKyNpZm5kZWYg X19EUk1fR0VNX0ZCX0hFTFBFUl9IX18KPiArI2RlZmluZSBfX0RSTV9HRU1fRkJfSEVMUEVSX0hf Xwo+ICsKPiArc3RydWN0IGRybV9kZXZpY2U7Cj4gK3N0cnVjdCBkcm1fZmlsZTsKPiArc3RydWN0 IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplOwoKTml0cGlja2luZywgaW4gYWxwaGFiZXRpY2Fs IG9yZGVyIGRybV9mYl9oZWxwZXJfc3VyZmFjZV9zaXplIGdvZXMgYmVmb3JlIApkcm1fZmlsZS4K Cj4gK3N0cnVjdCBkcm1fZnJhbWVidWZmZXI7Cj4gK3N0cnVjdCBkcm1fZnJhbWVidWZmZXJfZnVu Y3M7Cj4gK3N0cnVjdCBkcm1fZ2VtX29iamVjdDsKPiArc3RydWN0IGRybV9tb2RlX2ZiX2NtZDI7 Cj4gK3N0cnVjdCBkcm1fcGxhbmU7Cj4gK3N0cnVjdCBkcm1fcGxhbmVfc3RhdGU7Cj4gKwo+ICtz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmRybV9nZW1fZmJfZ2V0X29iaihzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwKPiArCQkJCQkgIHVuc2lnbmVkIGludCBwbGFuZSk7Cj4gK3ZvaWQgZHJtX2dl bV9mYl9kZXN0cm95KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKTsKPiAraW50IGRybV9nZW1f ZmJfY3JlYXRlX2hhbmRsZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgc3RydWN0IGRybV9m aWxlCj4gKmZpbGUsCj4gKwkJCSAgICAgdW5zaWduZWQgaW50ICpoYW5kbGUpOwo+ICsKPiArc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqCj4gK2RybV9nZW1fZmJfY3JlYXRlX3dpdGhfZnVuY3Moc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxlICpmaWxlLAo+ICsJCQkgICAgIGNv bnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKPiArCQkJICAgICBjb25zdCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyX2Z1bmNzICpmdW5jcyk7Cj4gK3N0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKgo+ICtkcm1fZ2VtX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUsCj4gKwkJICBjb25zdCBzdHJ1Y3QgZHJtX21vZGVfZmJfY21kMiAq bW9kZV9jbWQpOwo+ICsKPiAraW50IGRybV9nZW1fZmJfcHJlcGFyZV9mYihzdHJ1Y3QgZHJtX3Bs YW5lICpwbGFuZSwKPiArCQkJICBzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICpzdGF0ZSk7Cj4gKwo+ ICtzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICoKPiArZHJtX2dlbV9mYmRldl9mYl9jcmVhdGUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKPiArCQkJc3RydWN0IGRybV9mYl9oZWxwZXJfc3VyZmFjZV9z aXplICpzaXplcywKPiArCQkJdW5zaWduZWQgaW50IHBpdGNoX2FsaWduLCBzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaiwKPiArCQkJY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyAq ZnVuY3MpOwo+ICsKPiArI2VuZGlmCgotLSAKUmVnYXJkcywKCkxhdXJlbnQgUGluY2hhcnQKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBt YWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=