From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [RFC PATCH 1/5] drm/i915: Always wait for flip_done Date: Mon, 4 Sep 2017 09:55:44 +0200 Message-ID: References: <20170830121752.31291-1-maarten.lankhorst@linux.intel.com> <20170830121752.31291-2-maarten.lankhorst@linux.intel.com> <20170830124348.ksdfgdm73wttlcpu@phenom.ffwll.local> <20170830134025.z23tjrexfhvloj7z@phenom.ffwll.local> <20170904073026.ba5moxsqycplgzqy@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20170904073026.ba5moxsqycplgzqy@phenom.ffwll.local> 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 Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMDQtMDktMTcgb20gMDk6MzAgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIFRodSwgQXVn IDMxLCAyMDE3IGF0IDA1OjE4OjA2UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+ PiBPcCAzMC0wOC0xNyBvbSAxNTo0MCBzY2hyZWVmIERhbmllbCBWZXR0ZXI6Cj4+PiBPbiBXZWQs IEF1ZyAzMCwgMjAxNyBhdCAwMjo1NDoyOFBNICswMjAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPj4+PiBPcCAzMC0wOC0xNyBvbSAxNDo0MyBzY2hyZWVmIERhbmllbCBWZXR0ZXI6Cj4+Pj4+ IE9uIFdlZCwgQXVnIDMwLCAyMDE3IGF0IDAyOjE3OjQ4UE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hv cnN0IHdyb3RlOgo+Pj4+Pj4gVGhlIG5leHQgY29tbWl0IHJlbW92ZXMgdGhlIHdhaXQgZm9yIGZs aXBfZG9uZSBpbiBpbgo+Pj4+Pj4gZHJtX2F0b21pY19oZWxwZXJfY29tbWl0X2NsZWFudXBfZG9u ZSwgYnV0IHdlIG5lZWQgaXQgZm9yIHRoZSB0ZXN0cwo+Pj4+Pj4gdG8gcGFzcy4gSW5zdGVhZCBv ZiB1c2luZyBjb21wbGljYXRlZCB2YmxhbmsgdHJhY2tpbmcgd2hpY2ggZW5kcwo+Pj4+Pj4gdXAg YmVpbmcgaWdub3JlZCBhbnl3YXksIGNhbGwgdGhlIGNvcnJlY3QgYXRvbWljIGhlbHBlci4gOikK Pj4+Pj4+Cj4+Pj4+PiBSRkMgYmVjYXVzZSBJJ20gbm90IGNvbXBsZXRlbHkgc3VyZSB3aGF0IHdl IHdhbnQgdG8gZG8gd2l0aCB0aGUgdmJsYW5rIHdhaXRpbmcsCj4+Pj4+PiBJIHRoaW5rIGZvciBu b3cgdGhpcyBwYXRjaCBpcyB0aGUgcmlnaHQgd2F5IHRvIGdvIHVudGlsIHdlIGRlY2lkZSBiZWNh dXNlIGl0Cj4+Pj4+PiBwcmVzZXJ2ZXMgdGhlIHN0YXR1cyBxdW8gd2hlbiBkcm1fY3J0Y19jb21t aXQgd2FzIGludHJvZHVjZWQuCj4+Pj4+Pgo+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4+Pj4+IC0tLQo+ Pj4+Pj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICB8ICAzICstCj4+Pj4+ PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgODMgKysrLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+PiAgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2Vy dGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQo+Pj4+Pj4KPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+Pj4+Pj4gaW5kZXggY2JiYWZiZmIwYTU1Li5kZTE5NjIxODY0YTkgMTAwNjQ0Cj4+Pj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+PiBAQCAtNzA3LDggKzcwNyw3IEBAIHN0 cnVjdCBkcm1faTkxNV9kaXNwbGF5X2Z1bmNzIHsKPj4+Pj4+ICAJCQkgICAgc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKm9sZF9zdGF0ZSk7Cj4+Pj4+PiAgCXZvaWQgKCpjcnRjX2Rpc2FibGUpKHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKPj4+Pj4+ICAJCQkgICAgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOwo+Pj4+Pj4gLQl2b2lkICgqdXBkYXRl X2NydGNzKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCj4+Pj4+PiAtCQkJICAgICB1 bnNpZ25lZCBpbnQgKmNydGNfdmJsYW5rX21hc2spOwo+Pj4+Pj4gKwl2b2lkICgqdXBkYXRlX2Ny dGNzKShzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwo+Pj4+Pj4gIAl2b2lkICgqYXVk aW9fY29kZWNfZW5hYmxlKShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+Pj4+Pj4g IAkJCQkgICBzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlciwKPj4+Pj4+ICAJCQkJICAgY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGUpOwo+Pj4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4+Pj4gaW5kZXggNTJjNzNiNGRhYmFhLi4zZjNj Yjk2YWExMWUgMTAwNjQ0Cj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMKPj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku Ywo+Pj4+Pj4gQEAgLTEyMTE0LDczICsxMjExNCwxMCBAQCB1MzIgaW50ZWxfY3J0Y19nZXRfdmJs YW5rX2NvdW50ZXIoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+Pj4+PiAgCXJldHVybiBkZXYt PmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyKGRldiwgY3J0Yy0+cGlwZSk7Cj4+Pj4+PiAgfQo+ Pj4+Pj4gIAo+Pj4+Pj4gLXN0YXRpYyB2b2lkIGludGVsX2F0b21pY193YWl0X2Zvcl92Ymxhbmtz KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4+PiAtCQkJCQkgIHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiwKPj4+Pj4+IC0JCQkJCSAgdW5zaWduZWQgY3J0Y19tYXNrKQo+Pj4+ Pj4gLXsKPj4+Pj4+IC0JdW5zaWduZWQgbGFzdF92YmxhbmtfY291bnRbSTkxNV9NQVhfUElQRVNd Owo+Pj4+Pj4gLQllbnVtIHBpcGUgcGlwZTsKPj4+Pj4+IC0JaW50IHJldDsKPj4+Pj4+IC0KPj4+ Pj4+IC0JaWYgKCFjcnRjX21hc2spCj4+Pj4+PiAtCQlyZXR1cm47Cj4+Pj4+PiAtCj4+Pj4+PiAt CWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPj4+Pj4+IC0JCXN0cnVjdCBpbnRlbF9j cnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2X3ByaXYsCj4+Pj4+PiAtCQkJ CQkJCQkgIHBpcGUpOwo+Pj4+Pj4gLQo+Pj4+Pj4gLQkJaWYgKCEoKDEgPDwgcGlwZSkgJiBjcnRj X21hc2spKQo+Pj4+Pj4gLQkJCWNvbnRpbnVlOwo+Pj4+Pj4gLQo+Pj4+Pj4gLQkJcmV0ID0gZHJt X2NydGNfdmJsYW5rX2dldCgmY3J0Yy0+YmFzZSk7Cj4+Pj4+PiAtCQlpZiAoV0FSTl9PTihyZXQg IT0gMCkpIHsKPj4+Pj4+IC0JCQljcnRjX21hc2sgJj0gfigxIDw8IHBpcGUpOwo+Pj4+Pj4gLQkJ CWNvbnRpbnVlOwo+Pj4+Pj4gLQkJfQo+Pj4+Pj4gLQo+Pj4+Pj4gLQkJbGFzdF92YmxhbmtfY291 bnRbcGlwZV0gPSBkcm1fY3J0Y192YmxhbmtfY291bnQoJmNydGMtPmJhc2UpOwo+Pj4+Pj4gLQl9 Cj4+Pj4+PiAtCj4+Pj4+PiAtCWZvcl9lYWNoX3BpcGUoZGV2X3ByaXYsIHBpcGUpIHsKPj4+Pj4+ IC0JCXN0cnVjdCBpbnRlbF9jcnRjICpjcnRjID0gaW50ZWxfZ2V0X2NydGNfZm9yX3BpcGUoZGV2 X3ByaXYsCj4+Pj4+PiAtCQkJCQkJCQkgIHBpcGUpOwo+Pj4+Pj4gLQkJbG9uZyBscmV0Owo+Pj4+ Pj4gLQo+Pj4+Pj4gLQkJaWYgKCEoKDEgPDwgcGlwZSkgJiBjcnRjX21hc2spKQo+Pj4+Pj4gLQkJ CWNvbnRpbnVlOwo+Pj4+Pj4gLQo+Pj4+Pj4gLQkJbHJldCA9IHdhaXRfZXZlbnRfdGltZW91dChk ZXYtPnZibGFua1twaXBlXS5xdWV1ZSwKPj4+Pj4+IC0JCQkJbGFzdF92YmxhbmtfY291bnRbcGlw ZV0gIT0KPj4+Pj4+IC0JCQkJCWRybV9jcnRjX3ZibGFua19jb3VudCgmY3J0Yy0+YmFzZSksCj4+ Pj4+PiAtCQkJCW1zZWNzX3RvX2ppZmZpZXMoNTApKTsKPj4+Pj4+IC0KPj4+Pj4+IC0JCVdBUk4o IWxyZXQsICJwaXBlICVjIHZibGFuayB3YWl0IHRpbWVkIG91dFxuIiwgcGlwZV9uYW1lKHBpcGUp KTsKPj4+Pj4+IC0KPj4+Pj4+IC0JCWRybV9jcnRjX3ZibGFua19wdXQoJmNydGMtPmJhc2UpOwo+ Pj4+Pj4gLQl9Cj4+Pj4+PiAtfQo+Pj4+Pj4gLQo+Pj4+Pj4gLXN0YXRpYyBib29sIG5lZWRzX3Zi bGFua193YWl0KHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQo+Pj4+Pj4gLXsK Pj4+Pj4+IC0JLyogZmIgdXBkYXRlZCwgbmVlZCB0byB1bnBpbiBvbGQgZmIgKi8KPj4+Pj4+IC0J aWYgKGNydGNfc3RhdGUtPmZiX2NoYW5nZWQpCj4+Pj4+PiAtCQlyZXR1cm4gdHJ1ZTsKPj4+Pj4+ IC0KPj4+Pj4+IC0JLyogd20gY2hhbmdlcywgbmVlZCB2YmxhbmsgYmVmb3JlIGZpbmFsIHdtJ3Mg Ki8KPj4+Pj4+IC0JaWYgKGNydGNfc3RhdGUtPnVwZGF0ZV93bV9wb3N0KQo+Pj4+Pj4gLQkJcmV0 dXJuIHRydWU7Cj4+Pj4+PiAtCj4+Pj4+PiAtCWlmIChjcnRjX3N0YXRlLT53bS5uZWVkX3Bvc3R2 YmxfdXBkYXRlKQo+Pj4+Pj4gLQkJcmV0dXJuIHRydWU7Cj4+Pj4+PiAtCj4+Pj4+PiAtCXJldHVy biBmYWxzZTsKPj4+Pj4+IC19Cj4+Pj4+PiAtCj4+Pj4+PiAgc3RhdGljIHZvaWQgaW50ZWxfdXBk YXRlX2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+Pj4+Pj4gIAkJCSAgICAgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4+Pj4+ICAJCQkgICAgICBzdHJ1Y3QgZHJtX2NydGNf c3RhdGUgKm9sZF9jcnRjX3N0YXRlLAo+Pj4+Pj4gLQkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19z dGF0ZSAqbmV3X2NydGNfc3RhdGUsCj4+Pj4+PiAtCQkJICAgICAgdW5zaWduZWQgaW50ICpjcnRj X3ZibGFua19tYXNrKQo+Pj4+Pj4gKwkJCSAgICAgIHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqbmV3 X2NydGNfc3RhdGUpCj4+Pj4+PiAgewo+Pj4+Pj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+ZGV2Owo+Pj4+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0 b19pOTE1KGRldik7Cj4+Pj4+PiBAQCAtMTIyMDMsMTMgKzEyMTQwLDkgQEAgc3RhdGljIHZvaWQg aW50ZWxfdXBkYXRlX2NydGMoc3RydWN0IGRybV9jcnRjICpjcnRjLAo+Pj4+Pj4gIAl9Cj4+Pj4+ PiAgCj4+Pj4+PiAgCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25fY3J0YyhvbGRf Y3J0Y19zdGF0ZSk7Cj4+Pj4+PiAtCj4+Pj4+PiAtCWlmIChuZWVkc192Ymxhbmtfd2FpdChwaXBl X2NvbmZpZykpCj4+Pj4+PiAtCQkqY3J0Y192YmxhbmtfbWFzayB8PSBkcm1fY3J0Y19tYXNrKGNy dGMpOwo+Pj4+Pj4gIH0KPj4+Pj4+ICAKPj4+Pj4+IC1zdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVf Y3J0Y3Moc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAo+Pj4+Pj4gLQkJCSAgICAgICB1 bnNpZ25lZCBpbnQgKmNydGNfdmJsYW5rX21hc2spCj4+Pj4+PiArc3RhdGljIHZvaWQgaW50ZWxf dXBkYXRlX2NydGNzKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+Pj4+ICB7Cj4+ Pj4+PiAgCXN0cnVjdCBkcm1fY3J0YyAqY3J0YzsKPj4+Pj4+ICAJc3RydWN0IGRybV9jcnRjX3N0 YXRlICpvbGRfY3J0Y19zdGF0ZSwgKm5ld19jcnRjX3N0YXRlOwo+Pj4+Pj4gQEAgLTEyMjIwLDEy ICsxMjE1MywxMSBAQCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfY3J0Y3Moc3RydWN0IGRybV9h dG9taWNfc3RhdGUgKnN0YXRlLAo+Pj4+Pj4gIAkJCWNvbnRpbnVlOwo+Pj4+Pj4gIAo+Pj4+Pj4g IAkJaW50ZWxfdXBkYXRlX2NydGMoY3J0Yywgc3RhdGUsIG9sZF9jcnRjX3N0YXRlLAo+Pj4+Pj4g LQkJCQkgIG5ld19jcnRjX3N0YXRlLCBjcnRjX3ZibGFua19tYXNrKTsKPj4+Pj4+ICsJCQkJICBu ZXdfY3J0Y19zdGF0ZSk7Cj4+Pj4+PiAgCX0KPj4+Pj4+ICB9Cj4+Pj4+PiAgCj4+Pj4+PiAtc3Rh dGljIHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUs Cj4+Pj4+PiAtCQkJICAgICB1bnNpZ25lZCBpbnQgKmNydGNfdmJsYW5rX21hc2spCj4+Pj4+PiAr c3RhdGljIHZvaWQgc2tsX3VwZGF0ZV9jcnRjcyhzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3Rh dGUpCj4+Pj4+PiAgewo+Pj4+Pj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KHN0YXRlLT5kZXYpOwo+Pj4+Pj4gIAlzdHJ1Y3QgaW50ZWxfYXRvbWljX3N0YXRl ICppbnRlbF9zdGF0ZSA9IHRvX2ludGVsX2F0b21pY19zdGF0ZShzdGF0ZSk7Cj4+Pj4+PiBAQCAt MTIyODQsNyArMTIyMTYsNyBAQCBzdGF0aWMgdm9pZCBza2xfdXBkYXRlX2NydGNzKHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKPj4+Pj4+ICAJCQkJdmJsX3dhaXQgPSB0cnVlOwo+Pj4+ Pj4gIAo+Pj4+Pj4gIAkJCWludGVsX3VwZGF0ZV9jcnRjKGNydGMsIHN0YXRlLCBvbGRfY3J0Y19z dGF0ZSwKPj4+Pj4+IC0JCQkJCSAgbmV3X2NydGNfc3RhdGUsIGNydGNfdmJsYW5rX21hc2spOwo+ Pj4+Pj4gKwkJCQkJICBuZXdfY3J0Y19zdGF0ZSk7Cj4+Pj4+PiAgCj4+Pj4+PiAgCQkJaWYgKHZi bF93YWl0KQo+Pj4+Pj4gIAkJCQlpbnRlbF93YWl0X2Zvcl92YmxhbmsoZGV2X3ByaXYsIHBpcGUp Owo+Pj4+Pj4gQEAgLTEyMzQ2LDcgKzEyMjc4LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfYXRvbWlj X2NvbW1pdF90YWlsKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKPj4+Pj4+ICAJc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKmludGVsX2NzdGF0ZTsKPj4+Pj4+ICAJYm9vbCBod19jaGVj ayA9IGludGVsX3N0YXRlLT5tb2Rlc2V0Owo+Pj4+Pj4gIAl1NjQgcHV0X2RvbWFpbnNbSTkxNV9N QVhfUElQRVNdID0ge307Cj4+Pj4+PiAtCXVuc2lnbmVkIGNydGNfdmJsYW5rX21hc2sgPSAwOwo+ Pj4+Pj4gIAlpbnQgaTsKPj4+Pj4+ICAKPj4+Pj4+ICAJaW50ZWxfYXRvbWljX2NvbW1pdF9mZW5j ZV93YWl0KGludGVsX3N0YXRlKTsKPj4+Pj4+IEBAIC0xMjQzOCw3ICsxMjM2OSw3IEBAIHN0YXRp YyB2b2lkIGludGVsX2F0b21pY19jb21taXRfdGFpbChzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCj4+Pj4+PiAgCXBtX3Fvc191cGRhdGVfcmVxdWVzdCgmZGV2X3ByaXYtPnBtX3Fvc19h dG9taWMsIDApOwo+Pj4+Pj4gIAo+Pj4+Pj4gIAkvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBs YW5lLCBwaXBlLCBhbmQgY29ubmVjdG9ycyB0aGF0IHdlIHNldCB1cC4gKi8KPj4+Pj4+IC0JZGV2 X3ByaXYtPmRpc3BsYXkudXBkYXRlX2NydGNzKHN0YXRlLCAmY3J0Y192YmxhbmtfbWFzayk7Cj4+ Pj4+PiArCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9jcnRjcyhzdGF0ZSk7Cj4+Pj4+PiAgCj4+ Pj4+PiAgCS8qIEZJWE1FOiBXZSBzaG91bGQgY2FsbCBkcm1fYXRvbWljX2hlbHBlcl9jb21taXRf aHdfZG9uZSgpIGhlcmUKPj4+Pj4+ICAJICogYWxyZWFkeSwgYnV0IHN0aWxsIG5lZWQgdGhlIHN0 YXRlIGZvciB0aGUgZGVsYXllZCBvcHRpbWl6YXRpb24uIFRvCj4+Pj4+PiBAQCAtMTI0NTAsNyAr MTIzODEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9hdG9taWNfY29tbWl0X3RhaWwoc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+Pj4+Pj4gIAkgKiAgIHdlIGRvbid0IG5lZWQgb3V0IHNw ZWNpYWwgaGFuZGxpbmcgYW55IG1vcmUuCj4+Pj4+PiAgCSAqLwo+Pj4+Pj4gIAlpZiAoIXN0YXRl LT5sZWdhY3lfY3Vyc29yX3VwZGF0ZSkKPj4+Pj4gSSB0aGluayB0aGlzIGlmIGlzIGRlYWQgY29k ZSwgc2luY2UgZWl0aGVyIHdlIHVzZSB0aGUgZmFzdHBhdGggaW4KPj4+Pj4gaW50ZWxfbGVnYWN5 X2N1cnNvcl91cGRhdGUsIHdoaWNoIG1lYW5zIG5vIGF0b21pYyBjb21taXQuIE9yIHdlIGRvbid0 LCBhbmQKPj4+Pj4gdGhlbiB3ZSBjbGVhciB0aGlzIGhhY2sgKG9uIG1vc3QgcGxhdGZvcm1zIGF0 IGxlYXN0KSBzaW5jZSBpdCBqdXN0IHdyZWFrcwo+Pj4+PiBjb21wbGV0ZSBoYXZvYy4KPj4+Pj4K Pj4+Pj4gV2Ugc2hvdWxkIHByb2JhYmx5IGRvIHRoaXMgbG9naWMgaW4gdGhlIGFzeW5jIGhlbHBl cnMsIGkuZS4gaWYgYXN5bmMKPj4+Pj4gaGVscGVycyByZWplY3QgYSBjdXJzb3IgdXBkYXRlLCBj bGVhciBzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUuCj4+Pj4+Cj4+Pj4+IFNpbmNlIEkgdGhp bmsgd2UgZG9uJ3QgbmVjZXNzYXJpbHkgbmVlZCB0aGlzIHBhdGNoIGluIHRoaXMgc2VyaWVzLCBJ IHRoaW5rCj4+Pj4+IGl0J2QgYmUgYmV0dGVyIGluIGEgc2VwYXJhdGUgc2VyaWVzIHRvIHN0cmFp Z2h0ZW4gb3V0IHRoZSBhc3luY191cGRhdGUKPj4+Pj4gc3RvcnkuIFdoaWNoIHdvdWxkIHRoZW4g aW5jbHVkZSBtb3ZpbmcgaTkxNSBvdmVyIHRvIHRoZSBjb3JlIHN1cHBvcnQuCj4+Pj4gRXJtLCBu b3Qgc3VyZSB3aGF0IHlvdSBtZWFuIGhlcmUsIGlzbid0IHN0YXRlLT5sZWdhY3lfY3Vyc29yX3Vw ZGF0ZSBtb3N0bHkgZmFsc2UsIHdoaWNoIG1lYW5zIGluIG1vc3QgY2FzZXMgd2UnbGwgd2FpdD8K Pj4+IFl1cC4gQW5kIHRoZSBmZXcgY2FzZXMgd2hlcmUgaXQncyB0cnVlIHNob3VsZCBiZSBoYW5k bGVkIGJ5IHRoZQo+Pj4gZmFzdHBhdGgvYXN5bmMgcGxhbmUgdXBkYXRlIGxvZ2ljLiBXb3VsZCBh bGxvdyB1cyB0byBkaXRjaCBhIGZldwo+Pj4gY29uZGl0aW9ucyBhbGwgb3ZlciB0aGUgY29kZS4K Pj4+IC1EYW5pZWwKPj4gSSd2ZSBkb25lIHNvbWUgbW9yZSB0ZXN0cywgYW5kIGl0IHNlZW1zIHRo aXMgcGF0Y2ggaXMgcmVxdWlyZWQuCj4+Cj4+IFdpdGhvdXQgdGhpcyB3ZSBtYXkgbm90IGFsd2F5 cyB3YWl0LCBhbmQgdGhhdCBjb3VsZCByZXN1bHQgaW4gc3B1cmlvdXMgZmFpbHVyZXMgb2YgcGFn ZSBmbGlwIHdpdGggLUVCVVNZLgo+PiBJJ2QgbG92ZSB0byBoaWRlIHRoaXMgZnJvbSB1c2Vyc3Bh Y2UsIGJ1dCBJIGRvbid0IHRoaW5rIHRoYXQncyBwb3NzaWJsZSB5ZXQuIEl0J3MgYmVzdCB0byBh bHdheXMgY2FsbAo+PiBkcm1fYXRvbWljX2hlbHBlcl93YWl0X2Zvcl9mbGlwX2RvbmUoKSBmb3Ig bm93LiBJdCdzIGEgbm9vcCBmb3IgbGVnYWN5X2N1cnNvcl91cGRhdGUgYW55d2F5Lgo+PiBjb21t aXQtPmZsaXBfZG9uZSBpcyBhbHdheXMgc2V0IGVhcmx5Lgo+IEkgdGhpbmsgd2UgaGF2ZSBhIG1p c3R1bmRlcnN0YW5kaW5nIGhlcmUsIEkgbWVhbnQgdG8gc2F5IHRoYXQgeW91IHNob3VsZAo+IGlt byByZW1vdmUgdGhlIGlmIChzdGF0ZS0+bGVnYWN5X2N1cnNvcl91cGRhdGUpIGNoZWNrIGFuZCBj YWxsIHRoZQo+IHdhaXRfZm9yX2ZsaXBzX2RvbmUgaGVscGVyIHVuY29uZGl0aW9uYWxseSwgbm90 IHJlbW92ZSB0aGUgY2FsbCB0byB0aGUKPiBmdW5jdGlvbiBpdHNlbGYuIFRoYXQgc2hvdWxkIHdv cmssIGFuZCBzaW5jZSB3ZSBoYXZlIGEgc2VwYXJhdGUgY3Vyc29yCj4gZmFzdHBhdGgsIGFsc28g bm90IGNhdXNlIHRyb3VibGVzLgpUcnVlLiBUaGUgaWYgaXMgZXZlbiBhIG5vb3AgYmVjYXVzZSBz ZXR1cF9jb21taXQgY29tcGxldGVzIGZsaXBfZG9uZSBpbW1lZGlhdGVseS4uClNob3VsZCBiZSBo YXJtbGVzcyB0byByZW1vdmUuLgoKfk1hYXJ0ZW4KX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v bGlzdGluZm8vZHJpLWRldmVsCg==