From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Brezillon Subject: Re: [PATCH 1/5] drm: don't block fb changes for async plane updates Date: Tue, 12 Mar 2019 10:32:09 +0100 Message-ID: <20190312103209.57e05982@collabora.com> References: <20190304144909.6267-1-helen.koike@collabora.com> <20190304144909.6267-2-helen.koike@collabora.com> <20190311110616.6b474865@collabora.com> <01f2b3ba-434a-f61f-e8e8-85f3c9107a5c@amd.com> <20190311152009.7c55b797@collabora.com> <20190311195127.GT2665@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from bhuna.collabora.co.uk (bhuna.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e3e3]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8BB1C89E50 for ; Tue, 12 Mar 2019 09:32:15 +0000 (UTC) In-Reply-To: <20190311195127.GT2665@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Daniel Vetter , Sean Paul , =?UTF-8?B?U3TDqXBoYW5l?= Marchesin , Eric Anholt Cc: David Airlie , "daniel.vetter@ffwll.ch" , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Tomasz Figa , Helen Koike , "kernel@collabora.com" , "Kazlauskas, Nicholas" List-Id: dri-devel@lists.freedesktop.org T24gTW9uLCAxMSBNYXIgMjAxOSAyMDo1MToyNyArMDEwMApEYW5pZWwgVmV0dGVyIDxkYW5pZWxA ZmZ3bGwuY2g+IHdyb3RlOgoKPiBPbiBNb24sIE1hciAxMSwgMjAxOSBhdCAwMzoyMDowOVBNICsw MTAwLCBCb3JpcyBCcmV6aWxsb24gd3JvdGU6Cj4gPiBPbiBNb24sIDExIE1hciAyMDE5IDEzOjE1 OjIzICswMDAwCj4gPiAiS2F6bGF1c2thcywgTmljaG9sYXMiIDxOaWNob2xhcy5LYXpsYXVza2Fz QGFtZC5jb20+IHdyb3RlOgo+ID4gICAKPiA+ID4gT24gMy8xMS8xOSA2OjA2IEFNLCBCb3JpcyBC cmV6aWxsb24gd3JvdGU6ICAKPiA+ID4gPiBIZWxsbyBOaWNob2xhcywKPiA+ID4gPiAKPiA+ID4g PiBPbiBNb24sIDQgTWFyIDIwMTkgMTU6NDY6NDkgKzAwMDAKPiA+ID4gPiAiS2F6bGF1c2thcywg TmljaG9sYXMiIDxOaWNob2xhcy5LYXpsYXVza2FzQGFtZC5jb20+IHdyb3RlOgo+ID4gPiA+ICAg ICAKPiA+ID4gPj4gT24gMy80LzE5IDk6NDkgQU0sIEhlbGVuIEtvaWtlIHdyb3RlOiAgICAKPiA+ ID4gPj4+IEluIHRoZSBjYXNlIG9mIGEgbm9ybWFsIHN5bmMgdXBkYXRlLCB0aGUgcHJlcGFyYXRp b24gb2YgZnJhbWVidWZmZXJzIChiZQo+ID4gPiA+Pj4gaXQgY2FsbGluZyBkcm1fYXRvbWljX2hl bHBlcl9wcmVwYXJlX3BsYW5lcygpIG9yIGRvaW5nIHNldHVwcyB3aXRoCj4gPiA+ID4+PiBkcm1f ZnJhbWVidWZmZXJfZ2V0KCkpIGFyZSBwZXJmb3JtZWQgaW4gdGhlIG5ld19zdGF0ZSBhbmQgdGhl IHJlc3BlY3RpdmUKPiA+ID4gPj4+IGNsZWFudXBzIGFyZSBwZXJmb3JtZWQgaW4gdGhlIG9sZF9z dGF0ZS4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBJbiB0aGUgY2FzZSBvZiBhc3luYyB1cGRhdGVzLCB0 aGUgcHJlcGFyYXRpb24gaXMgYWxzbyBkb25lIGluIHRoZQo+ID4gPiA+Pj4gbmV3X3N0YXRlIGJ1 dCB0aGUgY2xlYW51cHMgYXJlIGRvbmUgaW4gdGhlIG5ld19zdGF0ZSAoYmVjYXVzZSB1cGRhdGVz Cj4gPiA+ID4+PiBhcmUgcGVyZm9ybWVkIGluIHBsYWNlLCBpLmUuIGluIHRoZSBjdXJyZW50IHN0 YXRlKS4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBUaGUgY3VycmVudCBjb2RlIGJsb2NrcyBhc3luYyB1 ZHBhdGVzIHdoZW4gdGhlIGZiIGlzIGNoYW5nZWQsIHR1cm5pbmcKPiA+ID4gPj4+IGFzeW5jIHVw ZGF0ZXMgaW50byBzeW5jIHVwZGF0ZXMsIHNsb3dpbmcgZG93biBjdXJzb3IgdXBkYXRlcyBhbmQK PiA+ID4gPj4+IGludHJvZHVjaW5nIHJlZ3Jlc3Npb25zIGluIGlndCB0ZXN0cyB3aXRoIGVycm9y cyBvZiB0eXBlOgo+ID4gPiA+Pj4KPiA+ID4gPj4+ICJDUklUSUNBTDogY29tcGxldGVkIDk3IGN1 cnNvciB1cGRhdGVkIGluIGEgcGVyaW9kIG9mIDMwIGZsaXBzLCB3ZQo+ID4gPiA+Pj4gZXhwZWN0 IHRvIGNvbXBsZXRlIGFwcHJveGltYXRlbHkgMTUzNjAgdXBkYXRlcywgd2l0aCB0aGUgdGhyZXNo b2xkIHNldAo+ID4gPiA+Pj4gYXQgNzY4MCIKPiA+ID4gPj4+Cj4gPiA+ID4+PiBGYiBjaGFuZ2Vz IGluIGFzeW5jIHVwZGF0ZXMgd2VyZSBwcmV2ZW50ZWQgdG8gYXZvaWQgdGhlIGZvbGxvd2luZyBz Y2VuYXJpbzoKPiA+ID4gPj4+Cj4gPiA+ID4+PiAtIEFzeW5jIHVwZGF0ZSwgb2xkZmIgPSBOVUxM LCBuZXdmYiA9IGZiMSwgcHJlcGFyZSBmYjEsIGNsZWFudXAgZmIxCj4gPiA+ID4+PiAtIEFzeW5j IHVwZGF0ZSwgb2xkZmIgPSBmYjEsIG5ld2ZiID0gZmIyLCBwcmVwYXJlIGZiMiwgY2xlYW51cCBm YjIKPiA+ID4gPj4+IC0gTm9uLWFzeW5jIGNvbW1pdCwgb2xkZmIgPSBmYjIsIG5ld2ZiID0gZmIx LCBwcmVwYXJlIGZiMSwgY2xlYW51cCBmYjIgKHdyb25nKQo+ID4gPiA+Pj4gV2hlcmUgd2UgaGF2 ZSBhIHNpbmdsZSBjYWxsIHRvIHByZXBhcmUgZmIyIGJ1dCBkb3VibGUgY2xlYW51cCBjYWxsIHRv IGZiMi4KPiA+ID4gPj4+Cj4gPiA+ID4+PiBUbyBzb2x2ZSB0aGUgYWJvdmUgcHJvYmxlbXMsIGlu c3RlYWQgb2YgYmxvY2tpbmcgYXN5bmMgZmIgY2hhbmdlcywgd2UKPiA+ID4gPj4+IHBsYWNlIHRo ZSBvbGQgZnJhbWVidWZmZXIgaW4gdGhlIG5ld19zdGF0ZSBvYmplY3QsIHNvIHdoZW4gdGhlIGNv ZGUKPiA+ID4gPj4+IHBlcmZvcm1zIGNsZWFudXBzIGluIHRoZSBuZXdfc3RhdGUgaXQgd2lsbCBj bGVhbnVwIHRoZSBvbGRfZmIgYW5kIHdlCj4gPiA+ID4+PiB3aWxsIGhhdmUgdGhlIGZvbGxvd2lu ZyBzY2VuYXJpbyBpbnN0ZWFkOgo+ID4gPiA+Pj4KPiA+ID4gPj4+IC0gQXN5bmMgdXBkYXRlLCBv bGRmYiA9IE5VTEwsIG5ld2ZiID0gZmIxLCBwcmVwYXJlIGZiMSwgbm8gY2xlYW51cAo+ID4gPiA+ Pj4gLSBBc3luYyB1cGRhdGUsIG9sZGZiID0gZmIxLCBuZXdmYiA9IGZiMiwgcHJlcGFyZSBmYjIs IGNsZWFudXAgZmIxCj4gPiA+ID4+PiAtIE5vbi1hc3luYyBjb21taXQsIG9sZGZiID0gZmIyLCBu ZXdmYiA9IGZiMSwgcHJlcGFyZSBmYjEsIGNsZWFudXAgZmIyCj4gPiA+ID4+Pgo+ID4gPiA+Pj4g V2hlcmUgY2FsbHMgdG8gcHJlcGFyZS9jbGVhbnVwIGFyZSBiYWxsYW5jZWQuCj4gPiA+ID4+Pgo+ ID4gPiA+Pj4gQ2M6IDxzdGFibGVAdmdlci5rZXJuZWwub3JnPiAjIHY0LjE0KzogMjVkYzE5NGIz NGRkOiBkcm06IEJsb2NrIGZiIGNoYW5nZXMgZm9yIGFzeW5jIHBsYW5lIHVwZGF0ZXMKPiA+ID4g Pj4+IEZpeGVzOiAyNWRjMTk0YjM0ZGQgKCJkcm06IEJsb2NrIGZiIGNoYW5nZXMgZm9yIGFzeW5j IHBsYW5lIHVwZGF0ZXMiKQo+ID4gPiA+Pj4gU3VnZ2VzdGVkLWJ5OiBCb3JpcyBCcmV6aWxsb24g PGJvcmlzLmJyZXppbGxvbkBjb2xsYWJvcmEuY29tPgo+ID4gPiA+Pj4gU2lnbmVkLW9mZi1ieTog SGVsZW4gS29pa2UgPGhlbGVuLmtvaWtlQGNvbGxhYm9yYS5jb20+Cj4gPiA+ID4+Pgo+ID4gPiA+ Pj4gLS0tCj4gPiA+ID4+PiBIZWxsbywKPiA+ID4gPj4+Cj4gPiA+ID4+PiBBcyBtZW50aW9uZWQg aW4gdGhlIGNvdmVyIGxldHRlciwKPiA+ID4gPj4+IEkgdGVzdGVkIG9uIHRoZSByb2NrY2hpcCBh bmQgb24gaTkxNSAod2l0aCBhIHBhdGNoIEkgYW0gc3RpbGwgd29ya2luZyBvbiBmb3IKPiA+ID4g Pj4+IHJlcGxhY2luZyBjdXJzb3JzIGJ5IGFzeW5jIHVwZGF0ZSksIHdpdGggaWd0IHBsYW5lX2N1 cnNvcl9sZWdhY3kgYW5kCj4gPiA+ID4+PiBrbXNfY3Vyc29yX2xlZ2FjeSBhbmQgSSBkaWRuJ3Qg c2VlIGFueSByZWdyZXNzaW9ucy4KPiA+ID4gPj4+IEkgY291bGRuJ3QgdGVzdCBvbiBNU00gYW5k IEFNRCBiZWNhdXNlIEkgZG9uJ3QgaGF2ZSB0aGUgaGFyZHdhcmUgKGFuZCBJIGFtCj4gPiA+ID4+ PiBoYXZpbmcgc29tZSBpc3N1ZXMgdGVzdGluZyBvbiB2YzQpIGFuZCBJIHdvdWxkIGFwcHJlY2lh dGUgaWYgYW55b25lIGNvdWxkIGhlbHAKPiA+ID4gPj4+IG1lIHRlc3RpbmcgdGhvc2UuCj4gPiA+ ID4+Pgo+ID4gPiA+Pj4gSSBhbHNvIHRoaW5rIGl0IHdvdWxkIGJlIGEgYmV0dGVyIHNvbHV0aW9u IGlmLCBpbnN0ZWFkIG9mIGhhdmluZyBhc3luYwo+ID4gPiA+Pj4gdG8gZG8gaW4tcGxhY2UgdXBk YXRlcyBpbiB0aGUgY3VycmVudCBzdGF0ZSwgdGhlIGFzeW5jIHBhdGggc2hvdWxkIGJlCj4gPiA+ ID4+PiBlcXVpdmFsZW50IHRvIGEgc3luY3Jvbm91cyB1cGRhdGUsIGkuZS4sIG1vZGlmeWluZyBu ZXdfc3RhdGUgYW5kCj4gPiA+ID4+PiBwZXJmb3JtaW5nIGEgZmxpcAo+ID4gPiA+Pj4gSU1ITywg dGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHN5bmMgYW5kIGFzeW5jIHNob3VsZCBiZSB0aGF0 IGFzeW5jIHVwZGF0ZQo+ID4gPiA+Pj4gZG9lc24ndCB3YWl0IGZvciB2YmxhbmsgYW5kIGFwcGxp ZXMgdGhlIGNoYW5nZXMgaW1tZWRpdGFsbHkgdG8gdGhlIGh3LAo+ID4gPiA+Pj4gYnV0IHRoZSBj b2RlIHBhdGggY291bGQgYmUgYWxtb3N0IHRoZSBzYW1lLgo+ID4gPiA+Pj4gQnV0IGZvciBub3cg SSB0aGluayB0aGlzIHNvbHV0aW9uIGlzIG9rIChzd2FwaW5nIG5ld19mYi9vbGRfZmIpLCBhbmQK PiA+ID4gPj4+IHRoZW4gd2UgY2FuIGFkanVzdCB0aGluZ3MgbGl0dGxlIGJ5IGxpdHRsZSwgd2hh dCBkbyB5b3UgdGhpbms/Cj4gPiA+ID4+Pgo+ID4gPiA+Pj4gVGhhbmtzIQo+ID4gPiA+Pj4gSGVs ZW4KPiA+ID4gPj4+Cj4gPiA+ID4+PiAgICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxw ZXIuYyB8IDIwICsrKysrKysrKystLS0tLS0tLS0tCj4gPiA+ID4+PiAgICAxIGZpbGUgY2hhbmdl ZCwgMTAgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCj4gPiA+ID4+Pgo+ID4gPiA+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX2hlbHBlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9hdG9taWNfaGVscGVyLmMKPiA+ID4gPj4+IGluZGV4IDU0MGE3N2EyYWRl OS4uZTdlYjk2ZjFlZmMyIDEwMDY0NAo+ID4gPiA+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2Ry bV9hdG9taWNfaGVscGVyLmMKPiA+ID4gPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRv bWljX2hlbHBlci5jCj4gPiA+ID4+PiBAQCAtMTYwOCwxNSArMTYwOCw2IEBAIGludCBkcm1fYXRv bWljX2hlbHBlcl9hc3luY19jaGVjayhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiA+Pj4g ICAgCSAgICBvbGRfcGxhbmVfc3RhdGUtPmNydGMgIT0gbmV3X3BsYW5lX3N0YXRlLT5jcnRjKQo+ ID4gPiA+Pj4gICAgCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPj4+ICAgIAo+ID4gPiA+Pj4gLQkv Kgo+ID4gPiA+Pj4gLQkgKiBGSVhNRTogU2luY2UgcHJlcGFyZV9mYiBhbmQgY2xlYW51cF9mYiBh cmUgYWx3YXlzIGNhbGxlZCBvbgo+ID4gPiA+Pj4gLQkgKiB0aGUgbmV3X3BsYW5lX3N0YXRlIGZv ciBhc3luYyB1cGRhdGVzIHdlIG5lZWQgdG8gYmxvY2sgZnJhbWVidWZmZXIKPiA+ID4gPj4+IC0J ICogY2hhbmdlcy4gVGhpcyBwcmV2ZW50cyB1c2Ugb2YgYSBmYiB0aGF0J3MgYmVlbiBjbGVhbmVk IHVwIGFuZAo+ID4gPiA+Pj4gLQkgKiBkb3VibGUgY2xlYW51cHMgZnJvbSBvY2N1cmluZy4KPiA+ ID4gPj4+IC0JICovCj4gPiA+ID4+PiAtCWlmIChvbGRfcGxhbmVfc3RhdGUtPmZiICE9IG5ld19w bGFuZV9zdGF0ZS0+ZmIpCj4gPiA+ID4+PiAtCQlyZXR1cm4gLUVJTlZBTDsKPiA+ID4gPj4+IC0K PiA+ID4gPj4+ICAgIAlmdW5jcyA9IHBsYW5lLT5oZWxwZXJfcHJpdmF0ZTsKPiA+ID4gPj4+ICAg IAlpZiAoIWZ1bmNzLT5hdG9taWNfYXN5bmNfdXBkYXRlKQo+ID4gPiA+Pj4gICAgCQlyZXR1cm4g LUVJTlZBTDsKPiA+ID4gPj4+IEBAIC0xNjU3LDYgKzE2NDgsOSBAQCB2b2lkIGRybV9hdG9taWNf aGVscGVyX2FzeW5jX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4gPiA+Pj4gICAg CWludCBpOwo+ID4gPiA+Pj4gICAgCj4gPiA+ID4+PiAgICAJZm9yX2VhY2hfbmV3X3BsYW5lX2lu X3N0YXRlKHN0YXRlLCBwbGFuZSwgcGxhbmVfc3RhdGUsIGkpIHsKPiA+ID4gPj4+ICsJCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKm5ld19mYiA9IHBsYW5lX3N0YXRlLT5mYjsKPiA+ID4gPj4+ICsJ CXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IHBsYW5lLT5zdGF0ZS0+ZmI7Cj4gPiA+ ID4+PiArCj4gPiA+ID4+PiAgICAJCWZ1bmNzID0gcGxhbmUtPmhlbHBlcl9wcml2YXRlOwo+ID4g PiA+Pj4gICAgCQlmdW5jcy0+YXRvbWljX2FzeW5jX3VwZGF0ZShwbGFuZSwgcGxhbmVfc3RhdGUp Owo+ID4gPiA+Pj4gICAgCj4gPiA+ID4+PiBAQCAtMTY2NSwxMSArMTY1OSwxNyBAQCB2b2lkIGRy bV9hdG9taWNfaGVscGVyX2FzeW5jX2NvbW1pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAo+ID4g PiA+Pj4gICAgCQkgKiBwbGFuZS0+c3RhdGUgaW4tcGxhY2UsIG1ha2Ugc3VyZSBhdCBsZWFzdCBj b21tb24KPiA+ID4gPj4+ICAgIAkJICogcHJvcGVydGllcyBoYXZlIGJlZW4gcHJvcGVybHkgdXBk YXRlZC4KPiA+ID4gPj4+ICAgIAkJICovCj4gPiA+ID4+PiAtCQlXQVJOX09OX09OQ0UocGxhbmUt PnN0YXRlLT5mYiAhPSBwbGFuZV9zdGF0ZS0+ZmIpOwo+ID4gPiA+Pj4gKwkJV0FSTl9PTl9PTkNF KHBsYW5lLT5zdGF0ZS0+ZmIgIT0gbmV3X2ZiKTsKPiA+ID4gPj4+ICAgIAkJV0FSTl9PTl9PTkNF KHBsYW5lLT5zdGF0ZS0+Y3J0Y194ICE9IHBsYW5lX3N0YXRlLT5jcnRjX3gpOwo+ID4gPiA+Pj4g ICAgCQlXQVJOX09OX09OQ0UocGxhbmUtPnN0YXRlLT5jcnRjX3kgIT0gcGxhbmVfc3RhdGUtPmNy dGNfeSk7Cj4gPiA+ID4+PiAgICAJCVdBUk5fT05fT05DRShwbGFuZS0+c3RhdGUtPnNyY194ICE9 IHBsYW5lX3N0YXRlLT5zcmNfeCk7Cj4gPiA+ID4+PiAgICAJCVdBUk5fT05fT05DRShwbGFuZS0+ c3RhdGUtPnNyY195ICE9IHBsYW5lX3N0YXRlLT5zcmNfeSk7Cj4gPiA+ID4+PiArCj4gPiA+ID4+ PiArCQkvKgo+ID4gPiA+Pj4gKwkJICogTWFrZSBzdXJlIHRoZSBGQnMgaGF2ZSBiZWVuIHN3YXBw ZWQgc28gdGhhdCBjbGVhbnVwcyBpbiB0aGUKPiA+ID4gPj4+ICsJCSAqIG5ld19zdGF0ZSBwZXJm b3JtcyBhIGNsZWFudXAgaW4gdGhlIG9sZCBGQi4KPiA+ID4gPj4+ICsJCSAqLwo+ID4gPiA+Pj4g KwkJV0FSTl9PTl9PTkNFKHBsYW5lX3N0YXRlLT5mYiAhPSBvbGRfZmIpOyAgICAKPiA+ID4gPj4K PiA+ID4gPj4gSSBwZXJzb25hbGx5IHRoaW5rIHRoaXMgYXBwcm9hY2ggaXMgZmluZSBhbmQgdGhl IFdBUk5fT04gcyBhcmUgZ29vZCBmb3IKPiA+ID4gPj4gY2F0Y2hpbmcgZHJpdmVycyB0aGF0IHdh bnQgdG8gdXNlIHRoZXNlIGluIHRoZSBmdXR1cmUuICAgIAo+ID4gPiA+IAo+ID4gPiA+IFdlbGws IEkgYWdyZWUgdGhpcyBjaGFuZ2UgaXMgdGhlIHdheSB0byBnbyBmb3IgYSBzaG9ydC10ZXJtIHNv bHV0aW9uCj4gPiA+ID4gdG8gcmVsYXggdGhlIG9sZF9mYiA9PSBuZXdfZmIgY29uc3RyYWludCwg YnV0IEkga2VlcCB0aGlua2luZyB0aGlzIHdob2xlCj4gPiA+ID4gInVwZGF0ZSBwbGFuZV9zdGF0 ZSBpbiBwbGFjZSIgaXMgYSByZWNpcGUgZm9yIHRyb3VibGUgYW5kIGp1c3QgbWFrZQo+ID4gPiA+ IHRoaW5ncyBtb3JlIGNvbXBsaWNhdGVkIGZvciBkcml2ZXJzIGZvciBubyBvYnZpb3VzIHJlYXNv bnMuIExvb2sgYXQgdGhlCj4gPiA+ID4gVkM0IGltcGxlbSBbMV0gaWYgeW91IG5lZWQgYSBwcm9v ZiB0aGF0IHRoaW5ncyBjYW4gZ2V0IG1lc3N5IHByZXR0eQo+ID4gPiA+IHF1aWNrbHkuCj4gPiA+ ID4gCj4gPiA+ID4gQWxsIHRoaXMgc3RhdGUtZmllbGRzLWNvcHlpbmcgc3RlcHMgY291bGQgYmUg c2tpcHBlZCBpZiB0aGUgY29yZSB3YXMKPiA+ID4gPiBzaW1wbHkgc3dhcHBpbmcgdGhlIG9sZC9u ZXcgc3RhdGVzIGFzIGlzIGRvbmUgaW4gdGhlIHN5bmMgdXBkYXRlIHBhdGguCj4gPiA+ID4gCj4g PiA+ID4gWzFdaHR0cHM6Ly9lbGl4aXIuYm9vdGxpbi5jb20vbGludXgvdjUuMC1yYzcvc291cmNl L2RyaXZlcnMvZ3B1L2RybS92YzQvdmM0X3BsYW5lLmMjTDg3OCAgICAKPiA+ID4gCj4gPiA+IEkg Y29tcGxldGVseSBhZ3JlZSB3aXRoIHRoaXMgdmlldyBGV0lXLiBJIGhhZCBhIGRpc2N1c3Npb24g d2l0aCBEYW5pZWwgCj4gPiA+IGFib3V0IHRoaXMgd2hlbiBJIGhhZCBwb3N0ZWQgdGhlIG9yaWdp bmFsIGJsb2NrIEZCIGNoYW5nZXMgcGF0Y2guCj4gPiA+IAo+ID4gPiAtIFRoZSBwbGFuZSBvYmpl Y3QgbmVlZHMgdG8gYmUgbG9ja2VkIGluIG9yZGVyIGZvciBhc3luYyBzdGF0ZSB0byBiZSB1cGRh dGVkCj4gPiA+IC0gQmxvY2tpbmcgY29tbWl0IHdvcmsgaG9sZHMgdGhlIGxvY2sgZm9yIHRoZSBw bGFuZSwgYXN5bmMgdXBkYXRlIHdvbid0IAo+ID4gPiBoYXBwZW4KPiA+ID4gLSBOb24tYmxvY2tp bmcgY29tbWl0IHdvcmsgdGhhdCdzIHN0aWxsIG9uZ29pbmcgd29uJ3QgaGF2ZSBod19kb25lIAo+ ID4gPiBzaWduYWxlZCBhbmQgZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY2hlY2sgd2lsbCBibG9j ayB0aGUgYXN5bmMgdXBkYXRlCj4gPiA+IAo+ID4gPiBTbyB0aGlzIGxvb2tzIHNhZmUgaW4gdGhl b3J5LCB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIGNhbGwgdG8gCj4gPiA+IGRybV9hdG9taWNf aGVscGVyX2NsZWFudXBfcGxhbmVzIG9jY3VyaW5nIGFmdGVyIGh3X2RvbmUgaXMgc2lnbmFsZWQu ICAKPiA+IAo+ID4gSXNuJ3QgaXQgYWxzbyB0aGUgY2FzZSBpbiB0aGUgc3luYyB1cGRhdGUgcGF0 aD8KPiA+ICAgCj4gPiA+IAo+ID4gPiBJIGJlbGlldmUgdGhhdCB0aGUgYmVoYXZpb3Igb2YgdGhp cyBmdW5jdGlvbiBzdGlsbCByZW1haW5zIHRoZSBzYW1lIGV2ZW4gCj4gPiA+IGlmIHBsYW5lLT5z dGF0ZSBpcyBzd2FwcGVkIHRvIHNvbWV0aGluZyBlbHNlIGR1cmluZyB0aGUgY2FsbCAoc2luY2Ug Cj4gPiA+IG9sZF9wbGFuZV9zdGF0ZSBzaG91bGQgbmV2ZXIgYmUgZXF1YWwgdG8gcGxhbmUtPnN0 YXRlIGlmIHRoZSBjb21taXQgCj4gPiA+IHN1Y2NlZWRlZCBhbmQgdGhlIHBsYW5lIGlzIGluIHRo ZSBjb21taXQpLCBidXQgSSdtIG5vdCBzdXJlIHRoYXQncyAKPiA+ID4gc29tZXRoaW5nIHdlJ2Qg d2FudCB0byByZWx5IG9uLgo+ID4gPiAKPiA+ID4gSSB0aGluayBvdGhlciB0aGFuIHRoYXQgaXNz dWUsIHlvdSBjb3VsZCBwcm9iYWJseSBqdXN0Ogo+ID4gPiAKPiA+ID4gZHJtX2F0b21pY19oZWxw ZXJfcHJlcGFyZV9wbGFuZXMoLi4uKTsKPiA+ID4gZHJtX2F0b21pY19oZWxwZXJfc3dhcF9zdGF0 ZSguLi4pOwo+ID4gPiBkcm1fYXRvbWljX3N0YXRlX2dldChzdGF0ZSk7ICAKPiA+IAo+ID4gV2h5 IGRvIHdlIG5lZWQgYSBzdGF0ZV9nZXQoKSBoZXJlPyBBRkFJQ1QsIGl0J3MgZG9uZSB0aGlzIHdh eSBpbiB0aGUKPiA+IHN5bmMgdXBkYXRlIHBhdGggYmVjYXVzZSBvZiB0aGUgbm9uLWJsb2NraW5n IHNlbWFudGljIHdoZXJlIHRoZSBzdGF0ZQo+ID4gbWlnaHQgYmUgcmVsZWFzZWQgYnkgdGhlIGNh bGxlciBiZWZvcmUgaXQncyBiZWVuIGFwcGxpZWQgYnkgdGhlIGNvbW1pdAo+ID4gd29ya2VyLgo+ ID4gICAKPiA+ID4gZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29tbWl0KC4uLik7Cj4gPiA+IGRy bV9hdG9taWNfaGVscGVyX2NsZWFudXBfcGxhbmVzKGRldiwgc3RhdGUpOwo+ID4gPiAKPiA+ID4g YW5kIGl0IHdvdWxkIHdvcmsgYXMgZXhwZWN0ZWQuIEJ1dCB0aGVyZSBzdGlsbCBtYXkgYmUgb3Ro ZXIgdGhpbmdzIEknbSAKPiA+ID4gbWlzc2luZyBvciBoYXZlbid0IGNvbnNpZGVyZWQgaGVyZS4g IAo+ID4gCj4gPiBBY3R1YWxseSwgd2hlbiBJIHNhaWQgd2UgY291bGQgc3dhcCBzdGF0ZXMsIEkg d2FzIG5vdCBuZWNlc3NhcmlseQo+ID4gdGhpbmtpbmcgYWJvdXQgcmUtdXNpbmcgZHJtX2F0b21p Y19oZWxwZXJfc3dhcF9zdGF0ZSgpLCBidXQgaW5zdGVhZAo+ID4gc3dhcCBzdGF0ZXMgZGlyZWN0 bHkgaW4gZHJtX2F0b21pY19oZWxwZXJfYXN5bmNfY29tbWl0KCk6Cj4gPiAKPiA+IAlmb3JfZWFj aF9vbGRuZXdfcGxhbmVfaW5fc3RhdGUoc3RhdGUsIHBsYW5lLCBvbGRfcGxhbmVfc3RhdGUsCj4g PiAJCQkJICAgICAgIG5ld19wbGFuZV9zdGF0ZSwgaSkgewo+ID4gCQlXQVJOX09OKHBsYW5lLT5z dGF0ZSAhPSBvbGRfcGxhbmVfc3RhdGUpOwo+ID4gCQlvbGRfcGxhbmVfc3RhdGUtPnN0YXRlID0g c3RhdGU7Cj4gPiAJCW5ld19wbGFuZV9zdGF0ZS0+c3RhdGUgPSBOVUxMOwo+ID4gCQlzdGF0ZS0+ cGxhbmVzW2ldLnN0YXRlID0gb2xkX3BsYW5lX3N0YXRlOwo+ID4gCQlwbGFuZS0+c3RhdGUgPSBu ZXdfcGxhbmVfc3RhdGU7Cj4gPiAKPiA+IAkJZnVuY3MgPSBwbGFuZS0+aGVscGVyX3ByaXZhdGU7 Cj4gPiAJCWZ1bmNzLT5hdG9taWNfYXN5bmNfdXBkYXRlKHBsYW5lLCBuZXdfcGxhbmVfc3RhdGUp Owo+ID4gCX0KPiA+IAo+ID4gVGhpcyB3YXkgd2Ugd291bGQgYXZvaWQgdGhlIFdBUk5fT04oKSBs aW5lcyB3ZSBoYXZlIGluCj4gPiBkcm1fYXRvbWljX2hlbHBlcl9hc3luY19jb21taXQoKSB0byBj aGVjayB0aGF0IHRoaW5ncyBoYXZlIGJlZW4KPiA+IHByb3Blcmx5IHVwZGF0ZWQgaW4tcGxhY2Us IGFuZCB3ZSB3b3VsZCBhbHNvIGdldCByaWQgb2YgdGhlIGRyaXZlcgo+ID4gY29kZSBjb3B5aW5n IHRoZSBwbGFuZV9zdGF0ZSBwcm9wZXJ0eSB0aGF0IGNhbiBjaGFuZ2UgZHVyaW5nIGFuIGFzeW5j Cj4gPiB1cGRhdGUuCj4gPiAKPiA+IEJ1dCwgYXMgeW91IHNhaWQsIEkgbWlnaHQgYmUgbWlzc2lu ZyBvdGhlciBwb3RlbnRpYWwgaXNzdWVzLiAgCj4gCj4gT2sgSSBkdWcgYXJvdW5kIGFnYWluLCBh bmQgSSB0aGluayBJIHJlY29uc3RydWN0ZWQgdGhlIHByb2JsZW0gYWdhaW4uCgpHcmVhdCEKCj4g Cj4gVGhlIGlzc3VlIGlzIHRoZSBsaWZldGltZXMgb2Ygc3RhdGUgc3RydWN0cy4gVGhlIG5vbmJs b2NraW5nIGNvbW1pdCB3b3JrZXIKPiBkb2Vzbid0IGhvbGQgYSByZWZlcmVuY2Ugb250byB0aGUg bmV3IHN0YXRlcyBhdCBhbGwuIFRoZSBvbmx5IHJlYXNvbiB0aG9zZQo+IG5ldyBzdGF0ZXMgY2Fu bm90IGRpc2FwcGVhciBpcyB0aGF0IHRoZSBuZXh0IGF0b21pYyBjb21pdCB0b3VjaGluZyB0aGUK PiBzYW1lIHN0YXRlcyB3YWl0cyBmb3IgY3J0Y19jb21taXQuaHdfZG9uZSBiZWZvcmUgaXQgcHVz aGVzIGl0cyBvd24gdXBkYXRlCj4gdGhyb3VnaCAoYW5kIHRoZW4gZ29lcyBhbmQgcmVsZWFzZXMg dGhvc2Ugc3RhdGUgc3RydWN0dXJlcykuCgpCeSBkaXNhcHBlYXIgSSBndWVzcyB5b3UgbWVhbiB3 aGVuIGl0J3MgcmVwbGFjZWQgaW4gcGxhbmUtPnN0YXRlIGJ5IGEKc3Vic2VxdWVudCBhdG9taWMg Y29tbWl0IHRoYXQgcGxhY2VzIHRoZW0gaW4gdGhlIG9sZF9zdGF0ZSBzbG90IGFuZApyZWxlYXNl IHRoZW0gYXMgcGFydCBvZiB0aGUgZHJtX2F0b21pY19zdGF0ZV9wdXQoKSBjYWxsIHdoZW4gcmV0 dXJuaW5nCmZyb20gYSBub24tYmxvY2tpbmcgYXRvbWljIHVwZGF0ZS4gQW55IHJlYXNvbiB3ZSBj b3VsZG4ndCByZXRhaW4KbmV3X3N0YXRlIHJlZnMgdW50aWwgd2UncmUgZG9uZSBtYW5pcHVsYXRp bmcgdGhlbSB0byBvdmVyY29tZSB0aGlzCnByb2JsZW0/Cgo+IAo+IFRoZSBvbGQgc3RhdGUgaGFz IG5vIHN1Y2ggaXNzdWUsIHNpbmNlIGVhY2ggY29tbWl0IHRha2VzIG93bmVyc2hpcCBvZiB0aGUK PiBvbGQgc3RhdGUgYW5kIHRoZW4gcmVsZWFzZXMgaXQuIEFuZCBjYW4gZG8gdGhhdCBhbnkgdGlt ZSBhZnRlciBod19kb25lLgoKSSdkIGV4cGVjdCB0aGUgd2FpdCBvbiBod19kb25lIHRvIGJlIG5l ZWRlZCBhbnl3YXkgZm9yIGFzeW5jIGNvbW1pdHMKZ29pbmcgYWZ0ZXIgc3luYyBvbmVzLiBBcyB0 aGUgY29tbWVudCBzYXlzLCBpZiB3ZSBkb24ndCB3YWl0IGZvcgpod19kb25lLCB0aGUgYXN5bmMg dXBkYXRlIHNldHRpbmdzIG1pZ2h0IGJlIG92ZXJyaWRkZW4gYnkgdGhlIHN5bmMKdXBkYXRlIG9u ZXMuCgo+IAo+IE5vdyB3aXRoIHRoZSBjdXJyZW50IGFzeW5jIGNvZGUgdGhhdCdzIG5vIGlzc3Vl LCBiZWNhdXNlIHdlIGRvIGNoZWNrIGZvcgo+IGh3X2RvbmUuIFRoZSB0cm91YmxlIGlzIHRoYXQg aHdfZG9uZSBpcyBhIGtlcm5lbC1pbnRlcm5hbCBpbXBsZW1lbnRhdGlvbgo+IGRldGFpbC4gVGhl IG9ubHkgdGhpbmsgdXNlcnNwYWNlIGNhbiBvYnNlcnZlIGlzIGZsaXBfZG9uZSwgYW5kIHRoYXQn cwo+IHdoYXQncyB1c2VkIGZvciAtRUJVU1kgZm9yIG5vcm1hbCBwYWdlLWZsaXBzLiBGb3IgY3Vy c29yIHRoaXMga2luZGEKPiBkb2Vzbid0IG1hdHRlciwgYmVjYXVzZSB0aGVzZSB0d28gc2hvdWxk IGJlIGZhaXJseSBjbG9zZSB0b2dldGhlciAoaW4gbW9zdAo+IGNhc2VzIGh3X2RvbmUgZXZlbiBo YXBwZW5zIGJlZm9yZSBmbGlwX2RvbmUsIGJ1dCB0aGF0IGRlcGVuZHMgdXBvbiB0aGUKPiBkcml2 ZXIpLiBTbyB0aGUgb2NjYXNpb25hbCBzaWxlbnQgZmFsbGJhY2sgdG8gYSBzeW5jaHJvbm91cyBj b21taXQgZG9lc24ndAo+IHJlYWxseSBtYXR0ZXIuCj4gCj4gV2hhdCB3ZSBjb3VsZCBkbyBpcyBq dXN0IHdhaXQgZm9yIGh3X2RvbmUgZm9yIGFzeW5jIGNvbW1pdHMsIGJ1dCB0aGF0J3MKPiBraW5k YSBub3QgY29vbCBlaXRoZXIgc2luY2UgaXQgYmxvY2tzIChhZ2FpbiBjdXJzb3IgaXMgaWxsLWRl ZmluZWQgZW5vdWdoCj4gdGhhdCBpdCBkb2Vzbid0IG1hdHRlcikuIEFuZCBwdXNoaW5nIGFzeW5j IHVwZGF0ZXMgdG8gYSB3b3JrZXIgbWVhbnMgd2UKPiBuZWVkIHRvIGdyZWF0bHkgZXh0ZW5kIHRo ZSBjcnRjX2NvbW1pdCB0cmFja2luZyAoYXQgbGVhc3QgdG8gZWFjaCBwbGFuZQo+IHN0YXRlKS4g SSB0aGluayBtb3N0IG9mIHRoYXQgZXhpc3Qgbm93LCBzaW5jZSB3ZSBoYWQgdG8gYWRkIGl0IGFu eXdheSBmb3IKPiBwbGFuZXMgd2hpY2ggY2FuIGJlIHJlYXNzaWduZWQgYmV0d2VlbiBjcnRjLgoK VG8gYmUgaG9uZXN0LCBJIGRvbid0IGtub3cgd2hhdCB0aGUgc2VtYW50aWMgb2YgYXN5bmMgY29t bWl0IHNob3VsZCBiZS4KRG9lcyBhc3luYyAodXBkYXRlIHRoaW5ncyBiZXR3ZWVuIDIgVkJMQU5L UyBhdCB0aGUgcmlzayBvZiBjYXVzaW5nCnRlYXJpbmcpIG5lY2Vzc2FyaWx5IGltcGxpZXMgbm9u LWJsb2NraW5nIChyZXR1cm4gYmVmb3JlIHRoZSB1cGRhdGUgaXMKYWN0dWFsbHkgcHVzaGVkIHRv IHRoZSBIVyk/Cgo+IAo+IHRsZHI7IG1heWJlIHdlIGNhbiBkbyB0aGUgZnVsbCBzd2FwcGluZyBu b3c/Cj4gCj4gSSBhZ3JlZSBpdCBmZWVscyBsaWtlIHRoZSBjbGVhbmVyIHNvbHV0aW9uLCBidXQg ZGVmaW5pdGVseSBuZWVkIGEgcGlsZSBvZgo+IGlndCB0ZXN0cyB0byBtYWtlIHN1cmUgd2UgY2Fu IG1peCZtYXRjaCBiZXR3ZWVuIGFzeW5jIGFuZCBzeW5jIGNvbW1pdHMgYW5kCj4gbm90aGluZyBi bG93cyB1cC4gQW5kIHN5bmMgY29tbWl0cyBuZWVkIHRvIHVzZSByZWFzc2lnbm1lbnQgb2YgcGxh bmVzIHRvCj4gZGlmZmVyZW50IGNydGNzIHBsdXMgbm9uYmxvY2tpbmcgY29tbWl0IChJIHRoaW5r IGFtZCBodyBjYW4gZG8gYWxsIHRoYXQsCj4gb3IgYXQgbGVhc3QgSSd2ZSBzZWVuIHByZXAgcGF0 Y2hlcykuCgpZZXMsIHRoYXQnZCBiZSBncmVhdCB0byBoYXZlIHRoYXQgaW4gcGxhY2UsIGVzcGVj aWFsbHkgaWYgd2Ugd2FudCB0bwpleHBvc2UgYXN5bmMgYXRvbWljIGNvbW1pdHMgdG8gdXNlcnNw YWNlIChyaWdodCBub3cgaXQncyBvbmx5IHVzZWQgZm9yCmxlZ2FjeSBjdXJzb3IgdXBkYXRlcyku Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZl bCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbA==