From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrzej Pietrasiewicz Subject: Re: [PATCH 4/8] drm/rockchip: Use drm_gem_fb_create_with_dirty Date: Wed, 27 Nov 2019 18:33:07 +0100 Message-ID: <023053cb-9f72-c29a-ec2f-cf7532ff5c43@collabora.com> References: <20191115092120.4445-1-daniel.vetter@ffwll.ch> <20191115092120.4445-5-daniel.vetter@ffwll.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20191115092120.4445-5-daniel.vetter@ffwll.ch> Content-Language: en-US List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , DRI Development Cc: linux-rockchip@lists.infradead.org, Intel Graphics Development , linux-arm-kernel@lists.infradead.org, Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org SGkgRGFuaWVsLAoKQWZ0ZXIgYXBwbHlpbmcgdGhpcyBwYXRjaCB0aGVyZSBhcmUgc29tZSBzbGln aHQgZGlmZmVyZW5jZXMKaW4gdGhlIGVmZmVjdGl2ZSBiZWhhdmlvciBvZiB0aGUgY29kZS4KCkkg Y2FuJ3QgdGVsbCBpZiB0aGV5IGFyZSBpbXBvcnRhbnQsIHBsZWFzZSBzZWUgYmVsb3cuCgpBbmRy emVqCgpXIGRuaXUgMTUuMTEuMjAxOSBvwqAxMDoyMSwgRGFuaWVsIFZldHRlciBwaXN6ZToKPiBJ ZiByb2NrY2hpcCB3b3VsZCBzd2l0Y2ggb3ZlciB0byB0aGUgZ2VuZXJpYyBmYmRldiBzZXR1cCB3 ZSBjb3VsZAo+IGdyYWJhZ2UgY29sbGVjdCBldmVuIG1vcmUgb2YgYWxsIHRoaXMgY29kZSAoYWxs IG9mIHRoZSByZW1haW5pbmcgZmIKPiBoYW5kbGluZyBjb2RlIHJlYWxseSkuCj4gCj4gU2lnbmVk LW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gQ2M6IFNh bmR5IEh1YW5nIDxoamNAcm9jay1jaGlwcy5jb20+Cj4gQ2M6ICJIZWlrbyBTdMO8Ym5lciIgPGhl aWtvQHNudGVjaC5kZT4KPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cj4gQ2M6IGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKPiAtLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYyB8IDU0ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNTMgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+IGlu ZGV4IGNhMDEyMzRjMDM3Yy4uMDgxZGJkYWEwYjA3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+IEBAIC01Myw2NCArNTMsMTIgQEAgcm9ja2NoaXBf ZmJfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRybV9tb2RlX2Zi X2NtZDIgKm1vZGVfY20KPiAgIAlyZXR1cm4gZmI7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKgo+IC1yb2NrY2hpcF91c2VyX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiAtCQkJY29uc3Qgc3Ry dWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKQo+IC17Cj4gLQljb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICppbmZvID0gZHJtX2dldF9mb3JtYXRfaW5mbyhkZXYsCj4gLQkJCQkJCQkJ IG1vZGVfY21kKTsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+IC0Jc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmpzW1JPQ0tDSElQX01BWF9GQl9CVUZGRVJdOwo+IC0Jc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlpbnQgbnVtX3BsYW5lcyA9IG1pbl90KGludCwgaW5mby0+ bnVtX3BsYW5lcywgUk9DS0NISVBfTUFYX0ZCX0JVRkZFUik7Cj4gLQlpbnQgcmV0Owo+IC0JaW50 IGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IG51bV9wbGFuZXM7IGkrKykgewoKZHJtX2dlbV9m Yl9jcmVhdGVfd2l0aF9mdW5jcygpLCBpZiBubyBlcnJvciBoYXBwZW5zLAppdGVyYXRlcyBleGFj dGx5IGluZm8tPm51bV9wbGFuZXMgdGltZXMsCmJ1dCB0aGUgZnVuY3Rpb24gYmVpbmcgcmVtb3Zl ZCBoZXJlIGl0ZXJhdGVzCm1pbl90KGludCwgaW5mby0+bnVtX3BsYW5lcywgMykgdGltZXMuCgpJ cyBpdCBlbnN1cmVkIGVhcmxpZXIgZWxzZXdoZXJlIHRoYXQgaW5mby0+bnVtX3BsYW5lcyBkb2Vz IG5vdCBleGNlZWQgMz8KCj4gLQkJdW5zaWduZWQgaW50IHdpZHRoID0gbW9kZV9jbWQtPndpZHRo IC8gKGkgPyBpbmZvLT5oc3ViIDogMSk7Cj4gLQkJdW5zaWduZWQgaW50IGhlaWdodCA9IG1vZGVf Y21kLT5oZWlnaHQgLyAoaSA/IGluZm8tPnZzdWIgOiAxKTsKPiAtCQl1bnNpZ25lZCBpbnQgbWlu X3NpemU7Cj4gLQo+IC0JCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlX3ByaXYsIG1v ZGVfY21kLT5oYW5kbGVzW2ldKTsKPiAtCQlpZiAoIW9iaikgewo+IC0JCQlEUk1fREVWX0VSUk9S KGRldi0+ZGV2LAo+IC0JCQkJICAgICAgIkZhaWxlZCB0byBsb29rdXAgR0VNIG9iamVjdFxuIik7 Cj4gLQkJCXJldCA9IC1FTlhJTzsKPiAtCQkJZ290byBlcnJfZ2VtX29iamVjdF91bnJlZmVyZW5j ZTsKPiAtCQl9Cj4gLQo+IC0JCW1pbl9zaXplID0gKGhlaWdodCAtIDEpICogbW9kZV9jbWQtPnBp dGNoZXNbaV0gKwo+IC0JCQltb2RlX2NtZC0+b2Zmc2V0c1tpXSArCj4gLQkJCXdpZHRoICogaW5m by0+Y3BwW2ldOwoKVGhpcyBjb21wdXRhdGlvbiBpbiBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1 bmNzIGxvb2tzIGxpa2UgdGhpczoKCgkJbWluX3NpemUgPSAoaGVpZ2h0IC0gMSkgKiBtb2RlX2Nt ZC0+cGl0Y2hlc1tpXQoJCQkgKyBkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIGksIHdp ZHRoKQoJCQkgKyBtb2RlX2NtZC0+b2Zmc2V0c1tpXTsKClBlcmhhcHMgdGhhdCdzIGFjdHVhbGx5 IHRoZSBzYW1lIHRoaW5nPwoKPiAtCj4gLQkJaWYgKG9iai0+c2l6ZSA8IG1pbl9zaXplKSB7Cj4g LQkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwo+IC0JCQlyZXQgPSAtRUlOVkFM Owo+IC0JCQlnb3RvIGVycl9nZW1fb2JqZWN0X3VucmVmZXJlbmNlOwo+IC0JCX0KPiAtCQlvYmpz W2ldID0gb2JqOwo+IC0JfQo+IC0KPiAtCWZiID0gcm9ja2NoaXBfZmJfYWxsb2MoZGV2LCBtb2Rl X2NtZCwgb2JqcywgaSk7Cj4gLQlpZiAoSVNfRVJSKGZiKSkgewo+IC0JCXJldCA9IFBUUl9FUlIo ZmIpOwo+IC0JCWdvdG8gZXJyX2dlbV9vYmplY3RfdW5yZWZlcmVuY2U7Cj4gLQl9Cj4gLQo+IC0J cmV0dXJuIGZiOwo+IC0KPiAtZXJyX2dlbV9vYmplY3RfdW5yZWZlcmVuY2U6Cj4gLQlmb3IgKGkt LTsgaSA+PSAwOyBpLS0pCj4gLQkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9ianNbaV0p Owo+IC0JcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtfQo+IC0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX21vZGVfY29uZmlnX2hlbHBlcl9mdW5jcyByb2NrY2hpcF9tb2RlX2NvbmZpZ19oZWxw ZXJzID0gewo+ICAgCS5hdG9taWNfY29tbWl0X3RhaWwgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfdGFpbF9ycG0sCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2Rl X2NvbmZpZ19mdW5jcyByb2NrY2hpcF9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gLQkuZmJf Y3JlYXRlID0gcm9ja2NoaXBfdXNlcl9mYl9jcmVhdGUsCj4gKwkuZmJfY3JlYXRlID0gZHJtX2dl bV9mYl9jcmVhdGUsCgpUaGF0IHdheSB5b3UgbGVhdmUgb3V0IHRoZSAtPmRpcnR5KCkgY2FsbGJh Y2sgZnJvbQpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyByb2NrY2hp cF9kcm1fZmJfZnVuY3MKCkknZCBzYXkgaW5zdGVhZDoKCnN0cnVjdCBkcm1fZnJhbWVidWZmZXIg Kgpyb2NrY2hpcF9nZW1fZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSwKCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1v ZGVfY21kKQp7CglyZXR1cm4gZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcyhkZXYsIGZpbGUs IG1vZGVfY21kLAoJCQkJCSAgICAmcm9ja2NoaXBfZHJtX2ZiX2Z1bmNzKTsKfQoKYW5kIHRoZW4K CisJLmZiX2NyZWF0ZSA9IHJvY2tjaGlwX2dlbV9mYl9jcmVhdGUsCgo+ICAgCS5vdXRwdXRfcG9s bF9jaGFuZ2VkID0gZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkLAo+ICAgCS5hdG9t aWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKPiAgIAkuYXRvbWljX2NvbW1pdCA9 IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2RyaS1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.2 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNPARSEABLE_RELAY,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 42D7BC432C0 for ; Wed, 27 Nov 2019 17:33:18 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 22AC4206E0 for ; Wed, 27 Nov 2019 17:33:18 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 22AC4206E0 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=collabora.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1A6A56E39B; Wed, 27 Nov 2019 17:33:15 +0000 (UTC) Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [46.235.227.227]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3C7CF6E0FF; Wed, 27 Nov 2019 17:33:13 +0000 (UTC) Received: from [127.0.0.1] (localhost [127.0.0.1]) (Authenticated sender: andrzej.p) with ESMTPSA id C764F2882FC To: Daniel Vetter , DRI Development References: <20191115092120.4445-1-daniel.vetter@ffwll.ch> <20191115092120.4445-5-daniel.vetter@ffwll.ch> From: Andrzej Pietrasiewicz Message-ID: <023053cb-9f72-c29a-ec2f-cf7532ff5c43@collabora.com> Date: Wed, 27 Nov 2019 18:33:07 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.1 MIME-Version: 1.0 In-Reply-To: <20191115092120.4445-5-daniel.vetter@ffwll.ch> Content-Language: en-US Subject: Re: [Intel-gfx] [PATCH 4/8] drm/rockchip: Use drm_gem_fb_create_with_dirty X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: linux-rockchip@lists.infradead.org, Intel Graphics Development , linux-arm-kernel@lists.infradead.org, Daniel Vetter Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Message-ID: <20191127173307.Ev5cAsIhC3r3t4U4LNajAK3GfwUlzl39jd2IAgkRqXQ@z> SGkgRGFuaWVsLAoKQWZ0ZXIgYXBwbHlpbmcgdGhpcyBwYXRjaCB0aGVyZSBhcmUgc29tZSBzbGln aHQgZGlmZmVyZW5jZXMKaW4gdGhlIGVmZmVjdGl2ZSBiZWhhdmlvciBvZiB0aGUgY29kZS4KCkkg Y2FuJ3QgdGVsbCBpZiB0aGV5IGFyZSBpbXBvcnRhbnQsIHBsZWFzZSBzZWUgYmVsb3cuCgpBbmRy emVqCgpXIGRuaXUgMTUuMTEuMjAxOSBvwqAxMDoyMSwgRGFuaWVsIFZldHRlciBwaXN6ZToKPiBJ ZiByb2NrY2hpcCB3b3VsZCBzd2l0Y2ggb3ZlciB0byB0aGUgZ2VuZXJpYyBmYmRldiBzZXR1cCB3 ZSBjb3VsZAo+IGdyYWJhZ2UgY29sbGVjdCBldmVuIG1vcmUgb2YgYWxsIHRoaXMgY29kZSAoYWxs IG9mIHRoZSByZW1haW5pbmcgZmIKPiBoYW5kbGluZyBjb2RlIHJlYWxseSkuCj4gCj4gU2lnbmVk LW9mZi1ieTogRGFuaWVsIFZldHRlciA8ZGFuaWVsLnZldHRlckBpbnRlbC5jb20+Cj4gQ2M6IFNh bmR5IEh1YW5nIDxoamNAcm9jay1jaGlwcy5jb20+Cj4gQ2M6ICJIZWlrbyBTdMO8Ym5lciIgPGhl aWtvQHNudGVjaC5kZT4KPiBDYzogbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3Jn Cj4gQ2M6IGxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKPiAtLS0KPiAgIGRyaXZl cnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYyB8IDU0ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiAgIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgNTMgZGVsZXRpb25z KC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9k cm1fZmIuYyBiL2RyaXZlcnMvZ3B1L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+IGlu ZGV4IGNhMDEyMzRjMDM3Yy4uMDgxZGJkYWEwYjA3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9yb2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9y b2NrY2hpcC9yb2NrY2hpcF9kcm1fZmIuYwo+IEBAIC01Myw2NCArNTMsMTIgQEAgcm9ja2NoaXBf ZmJfYWxsb2Moc3RydWN0IGRybV9kZXZpY2UgKmRldiwgY29uc3Qgc3RydWN0IGRybV9tb2RlX2Zi X2NtZDIgKm1vZGVfY20KPiAgIAlyZXR1cm4gZmI7Cj4gICB9Cj4gICAKPiAtc3RhdGljIHN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKgo+IC1yb2NrY2hpcF91c2VyX2ZiX2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwKPiAtCQkJY29uc3Qgc3Ry dWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kKQo+IC17Cj4gLQljb25zdCBzdHJ1Y3QgZHJt X2Zvcm1hdF9pbmZvICppbmZvID0gZHJtX2dldF9mb3JtYXRfaW5mbyhkZXYsCj4gLQkJCQkJCQkJ IG1vZGVfY21kKTsKPiAtCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwo+IC0Jc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmpzW1JPQ0tDSElQX01BWF9GQl9CVUZGRVJdOwo+IC0Jc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmo7Cj4gLQlpbnQgbnVtX3BsYW5lcyA9IG1pbl90KGludCwgaW5mby0+ bnVtX3BsYW5lcywgUk9DS0NISVBfTUFYX0ZCX0JVRkZFUik7Cj4gLQlpbnQgcmV0Owo+IC0JaW50 IGk7Cj4gLQo+IC0JZm9yIChpID0gMDsgaSA8IG51bV9wbGFuZXM7IGkrKykgewoKZHJtX2dlbV9m Yl9jcmVhdGVfd2l0aF9mdW5jcygpLCBpZiBubyBlcnJvciBoYXBwZW5zLAppdGVyYXRlcyBleGFj dGx5IGluZm8tPm51bV9wbGFuZXMgdGltZXMsCmJ1dCB0aGUgZnVuY3Rpb24gYmVpbmcgcmVtb3Zl ZCBoZXJlIGl0ZXJhdGVzCm1pbl90KGludCwgaW5mby0+bnVtX3BsYW5lcywgMykgdGltZXMuCgpJ cyBpdCBlbnN1cmVkIGVhcmxpZXIgZWxzZXdoZXJlIHRoYXQgaW5mby0+bnVtX3BsYW5lcyBkb2Vz IG5vdCBleGNlZWQgMz8KCj4gLQkJdW5zaWduZWQgaW50IHdpZHRoID0gbW9kZV9jbWQtPndpZHRo IC8gKGkgPyBpbmZvLT5oc3ViIDogMSk7Cj4gLQkJdW5zaWduZWQgaW50IGhlaWdodCA9IG1vZGVf Y21kLT5oZWlnaHQgLyAoaSA/IGluZm8tPnZzdWIgOiAxKTsKPiAtCQl1bnNpZ25lZCBpbnQgbWlu X3NpemU7Cj4gLQo+IC0JCW9iaiA9IGRybV9nZW1fb2JqZWN0X2xvb2t1cChmaWxlX3ByaXYsIG1v ZGVfY21kLT5oYW5kbGVzW2ldKTsKPiAtCQlpZiAoIW9iaikgewo+IC0JCQlEUk1fREVWX0VSUk9S KGRldi0+ZGV2LAo+IC0JCQkJICAgICAgIkZhaWxlZCB0byBsb29rdXAgR0VNIG9iamVjdFxuIik7 Cj4gLQkJCXJldCA9IC1FTlhJTzsKPiAtCQkJZ290byBlcnJfZ2VtX29iamVjdF91bnJlZmVyZW5j ZTsKPiAtCQl9Cj4gLQo+IC0JCW1pbl9zaXplID0gKGhlaWdodCAtIDEpICogbW9kZV9jbWQtPnBp dGNoZXNbaV0gKwo+IC0JCQltb2RlX2NtZC0+b2Zmc2V0c1tpXSArCj4gLQkJCXdpZHRoICogaW5m by0+Y3BwW2ldOwoKVGhpcyBjb21wdXRhdGlvbiBpbiBkcm1fZ2VtX2ZiX2NyZWF0ZV93aXRoX2Z1 bmNzIGxvb2tzIGxpa2UgdGhpczoKCgkJbWluX3NpemUgPSAoaGVpZ2h0IC0gMSkgKiBtb2RlX2Nt ZC0+cGl0Y2hlc1tpXQoJCQkgKyBkcm1fZm9ybWF0X2luZm9fbWluX3BpdGNoKGluZm8sIGksIHdp ZHRoKQoJCQkgKyBtb2RlX2NtZC0+b2Zmc2V0c1tpXTsKClBlcmhhcHMgdGhhdCdzIGFjdHVhbGx5 IHRoZSBzYW1lIHRoaW5nPwoKPiAtCj4gLQkJaWYgKG9iai0+c2l6ZSA8IG1pbl9zaXplKSB7Cj4g LQkJCWRybV9nZW1fb2JqZWN0X3B1dF91bmxvY2tlZChvYmopOwo+IC0JCQlyZXQgPSAtRUlOVkFM Owo+IC0JCQlnb3RvIGVycl9nZW1fb2JqZWN0X3VucmVmZXJlbmNlOwo+IC0JCX0KPiAtCQlvYmpz W2ldID0gb2JqOwo+IC0JfQo+IC0KPiAtCWZiID0gcm9ja2NoaXBfZmJfYWxsb2MoZGV2LCBtb2Rl X2NtZCwgb2JqcywgaSk7Cj4gLQlpZiAoSVNfRVJSKGZiKSkgewo+IC0JCXJldCA9IFBUUl9FUlIo ZmIpOwo+IC0JCWdvdG8gZXJyX2dlbV9vYmplY3RfdW5yZWZlcmVuY2U7Cj4gLQl9Cj4gLQo+IC0J cmV0dXJuIGZiOwo+IC0KPiAtZXJyX2dlbV9vYmplY3RfdW5yZWZlcmVuY2U6Cj4gLQlmb3IgKGkt LTsgaSA+PSAwOyBpLS0pCj4gLQkJZHJtX2dlbV9vYmplY3RfcHV0X3VubG9ja2VkKG9ianNbaV0p Owo+IC0JcmV0dXJuIEVSUl9QVFIocmV0KTsKPiAtfQo+IC0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1 Y3QgZHJtX21vZGVfY29uZmlnX2hlbHBlcl9mdW5jcyByb2NrY2hpcF9tb2RlX2NvbmZpZ19oZWxw ZXJzID0gewo+ICAgCS5hdG9taWNfY29tbWl0X3RhaWwgPSBkcm1fYXRvbWljX2hlbHBlcl9jb21t aXRfdGFpbF9ycG0sCj4gICB9Owo+ICAgCj4gICBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2Rl X2NvbmZpZ19mdW5jcyByb2NrY2hpcF9kcm1fbW9kZV9jb25maWdfZnVuY3MgPSB7Cj4gLQkuZmJf Y3JlYXRlID0gcm9ja2NoaXBfdXNlcl9mYl9jcmVhdGUsCj4gKwkuZmJfY3JlYXRlID0gZHJtX2dl bV9mYl9jcmVhdGUsCgpUaGF0IHdheSB5b3UgbGVhdmUgb3V0IHRoZSAtPmRpcnR5KCkgY2FsbGJh Y2sgZnJvbQpzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlcl9mdW5jcyByb2NrY2hp cF9kcm1fZmJfZnVuY3MKCkknZCBzYXkgaW5zdGVhZDoKCnN0cnVjdCBkcm1fZnJhbWVidWZmZXIg Kgpyb2NrY2hpcF9nZW1fZmJfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSwKCQkgICAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1v ZGVfY21kKQp7CglyZXR1cm4gZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcyhkZXYsIGZpbGUs IG1vZGVfY21kLAoJCQkJCSAgICAmcm9ja2NoaXBfZHJtX2ZiX2Z1bmNzKTsKfQoKYW5kIHRoZW4K CisJLmZiX2NyZWF0ZSA9IHJvY2tjaGlwX2dlbV9mYl9jcmVhdGUsCgo+ICAgCS5vdXRwdXRfcG9s bF9jaGFuZ2VkID0gZHJtX2ZiX2hlbHBlcl9vdXRwdXRfcG9sbF9jaGFuZ2VkLAo+ICAgCS5hdG9t aWNfY2hlY2sgPSBkcm1fYXRvbWljX2hlbHBlcl9jaGVjaywKPiAgIAkuYXRvbWljX2NvbW1pdCA9 IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeA==