From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 4/4] dma-buf: nuke reservation_object seq number Date: Wed, 14 Aug 2019 19:06:26 +0200 Message-ID: <20190814170625.GK7444@phenom.ffwll.local> References: <20190807135312.1730-1-christian.koenig@amd.com> <20190807135312.1730-4-christian.koenig@amd.com> <156518744066.6198.17572013738158664135@skylake-alporthouse-com> <20190814153908.GI7444@phenom.ffwll.local> <156580096818.2714.13643616122908209617@skylake-alporthouse-com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ed1-x541.google.com (mail-ed1-x541.google.com [IPv6:2a00:1450:4864:20::541]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6B7656E781 for ; Wed, 14 Aug 2019 17:06:30 +0000 (UTC) Received: by mail-ed1-x541.google.com with SMTP id x19so104607014eda.12 for ; Wed, 14 Aug 2019 10:06:30 -0700 (PDT) Content-Disposition: inline In-Reply-To: <156580096818.2714.13643616122908209617@skylake-alporthouse-com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson Cc: Daniel Vetter , intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, christian.koenig@amd.com List-Id: intel-gfx@lists.freedesktop.org T24gV2VkLCBBdWcgMTQsIDIwMTkgYXQgMDU6NDI6NDhQTSArMDEwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFF1b3RpbmcgRGFuaWVsIFZldHRlciAoMjAxOS0wOC0xNCAxNjozOTowOCkKPiA+IFNv cnJ5IEkgYnVycmllZCBteXNlbGYgaW4gc29tZSBvdGhlciBzdHVmZiAuLi4KPiA+IAo+ID4gT24g U2F0LCBBdWcgMTAsIDIwMTkgYXQgMTI6NTE6MDBQTSArMDIwMCwgQ2hyaXN0aWFuIEvDtm5pZyB3 cm90ZToKPiA+ID4gQW0gMDcuMDguMTkgdW0gMTY6MTcgc2NocmllYiBDaHJpcyBXaWxzb246Cj4g PiA+ID4gUXVvdGluZyBDaHJpc3RpYW4gS8O2bmlnICgyMDE5LTA4LTA3IDE0OjUzOjEyKQo+ID4g PiA+ID4gVGhlIG9ubHkgcmVtYWluaW5nIHVzZSBmb3IgdGhpcyBpcyB0byBwcm90ZWN0IGFnYWlu c3Qgc2V0dGluZyBhIG5ldyBleGNsdXNpdmUKPiA+ID4gPiA+IGZlbmNlIHdoaWxlIHdlIGdyYWIg Ym90aCBleGNsdXNpdmUgYW5kIHNoYXJlZC4gVGhhdCBjYW4gYWxzbyBiZSBhcmNoaXZlZCBieQo+ ID4gPiA+ID4gbG9va2luZyBpZiB0aGUgZXhjbHVzaXZlIGZlbmNlIGhhcyBjaGFuZ2VkIG9yIG5v dCBhZnRlciBjb21wbGV0aW5nIHRoZQo+ID4gPiA+ID4gb3BlcmF0aW9uLgo+ID4gPiA+ID4gCj4g PiA+ID4gPiB2Mjogc3dpdGNoIHNldHRpbmcgZXhjbCBmZW5jZSB0byByY3VfYXNzaWduX3BvaW50 ZXIKPiA+ID4gPiA+IAo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEvDtm5pZyA8 Y2hyaXN0aWFuLmtvZW5pZ0BhbWQuY29tPgo+ID4gPiA+ID4gLS0tCj4gPiA+ID4gPiAgIGRyaXZl cnMvZG1hLWJ1Zi9yZXNlcnZhdGlvbi5jIHwgMjQgKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCj4g PiA+ID4gPiAgIGluY2x1ZGUvbGludXgvcmVzZXJ2YXRpb24uaCAgIHwgIDkgKystLS0tLS0tCj4g PiA+ID4gPiAgIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAyNiBkZWxldGlvbnMo LSkKPiA+ID4gPiA+IAo+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hLWJ1Zi9yZXNl cnZhdGlvbi5jIGIvZHJpdmVycy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMKPiA+ID4gPiA+IGluZGV4 IDkwYmM2ZWYwMzU5OC4uZjdmNGEwODU4YzJhIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvZHJpdmVy cy9kbWEtYnVmL3Jlc2VydmF0aW9uLmMKPiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9y ZXNlcnZhdGlvbi5jCj4gPiA+ID4gPiBAQCAtNDksMTIgKzQ5LDYgQEAKPiA+ID4gPiA+ICAgREVG SU5FX1dEX0NMQVNTKHJlc2VydmF0aW9uX3d3X2NsYXNzKTsKPiA+ID4gPiA+ICAgRVhQT1JUX1NZ TUJPTChyZXNlcnZhdGlvbl93d19jbGFzcyk7Cj4gPiA+ID4gPiAtc3RydWN0IGxvY2tfY2xhc3Nf a2V5IHJlc2VydmF0aW9uX3NlcWNvdW50X2NsYXNzOwo+ID4gPiA+ID4gLUVYUE9SVF9TWU1CT0wo cmVzZXJ2YXRpb25fc2VxY291bnRfY2xhc3MpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLWNvbnN0 IGNoYXIgcmVzZXJ2YXRpb25fc2VxY291bnRfc3RyaW5nW10gPSAicmVzZXJ2YXRpb25fc2VxY291 bnQiOwo+ID4gPiA+ID4gLUVYUE9SVF9TWU1CT0wocmVzZXJ2YXRpb25fc2VxY291bnRfc3RyaW5n KTsKPiA+ID4gPiA+IC0KPiA+ID4gPiA+ICAgLyoqCj4gPiA+ID4gPiAgICAqIHJlc2VydmF0aW9u X29iamVjdF9saXN0X2FsbG9jIC0gYWxsb2NhdGUgZmVuY2UgbGlzdAo+ID4gPiA+ID4gICAgKiBA c2hhcmVkX21heDogbnVtYmVyIG9mIGZlbmNlcyB3ZSBuZWVkIHNwYWNlIGZvcgo+ID4gPiA+ID4g QEAgLTEwMyw5ICs5Nyw2IEBAIHN0YXRpYyB2b2lkIHJlc2VydmF0aW9uX29iamVjdF9saXN0X2Zy ZWUoc3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0ICpsaXN0KQo+ID4gPiA+ID4gICB2b2lk IHJlc2VydmF0aW9uX29iamVjdF9pbml0KHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3QgKm9iaikK PiA+ID4gPiA+ICAgewo+ID4gPiA+ID4gICAgICAgICAgd3dfbXV0ZXhfaW5pdCgmb2JqLT5sb2Nr LCAmcmVzZXJ2YXRpb25fd3dfY2xhc3MpOwo+ID4gPiA+ID4gLQo+ID4gPiA+ID4gLSAgICAgICBf X3NlcWNvdW50X2luaXQoJm9iai0+c2VxLCByZXNlcnZhdGlvbl9zZXFjb3VudF9zdHJpbmcsCj4g PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAmcmVzZXJ2YXRpb25fc2VxY291bnRfY2xh c3MpOwo+ID4gPiA+ID4gICAgICAgICAgUkNVX0lOSVRfUE9JTlRFUihvYmotPmZlbmNlLCBOVUxM KTsKPiA+ID4gPiA+ICAgICAgICAgIFJDVV9JTklUX1BPSU5URVIob2JqLT5mZW5jZV9leGNsLCBO VUxMKTsKPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gQEAgLTI4MiwxMiArMjczLDEwIEBAIHZvaWQg cmVzZXJ2YXRpb25fb2JqZWN0X2FkZF9leGNsX2ZlbmNlKHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3QgKm9iaiwKPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgZG1hX2ZlbmNlX2dldChmZW5jZSk7 Cj4gPiA+ID4gPiAgICAgICAgICBwcmVlbXB0X2Rpc2FibGUoKTsKPiA+ID4gPiA+IC0gICAgICAg d3JpdGVfc2VxY291bnRfYmVnaW4oJm9iai0+c2VxKTsKPiA+ID4gPiA+IC0gICAgICAgLyogd3Jp dGVfc2VxY291bnRfYmVnaW4gcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBtZW1vcnkgYmFycmllciAq Lwo+ID4gPiA+ID4gLSAgICAgICBSQ1VfSU5JVF9QT0lOVEVSKG9iai0+ZmVuY2VfZXhjbCwgZmVu Y2UpOwo+ID4gPiA+ID4gKyAgICAgICByY3VfYXNzaWduX3BvaW50ZXIob2JqLT5mZW5jZV9leGNs LCBmZW5jZSk7Cj4gPiA+ID4gPiArICAgICAgIC8qIHBvaW50ZXIgdXBkYXRlIG11c3QgYmUgdmlz aWJsZSBiZWZvcmUgd2UgbW9kaWZ5IHRoZSBzaGFyZWRfY291bnQgKi8KPiA+IAo+ID4gUGxzIGFk ZCBhICJzZWUgcmVzZXJ2YXRpb25fb2JqZWN0X2ZlbmNlKCkiIGhlcmUgb3Igc2ltaWxhci4KPiA+ IAo+ID4gPiA+ID4gICAgICAgICAgaWYgKG9sZCkKPiA+ID4gPiA+IC0gICAgICAgICAgICAgICBv bGQtPnNoYXJlZF9jb3VudCA9IDA7Cj4gPiA+ID4gPiAtICAgICAgIHdyaXRlX3NlcWNvdW50X2Vu ZCgmb2JqLT5zZXEpOwo+ID4gPiA+ID4gKyAgICAgICAgICAgICAgIHNtcF9zdG9yZV9tYihvbGQt PnNoYXJlZF9jb3VudCwgMCk7Cj4gPiAKPiA+IFNvIHlvdXIgY29tbWVudCBhbmQgdGhlIGtlcm5l bGRvYyBkb24ndCBtYXRjaCB1cC4gUXVvdGluZwo+ID4gRG9jdW1lbnRhdGlvbi9tZW1vcnktYmFy cmllcnMudHh0Ogo+ID4gCj4gPiAgICAgIFRoaXMgYXNzaWducyB0aGUgdmFsdWUgdG8gdGhlIHZh cmlhYmxlIGFuZCB0aGVuIGluc2VydHMgYSBmdWxsIG1lbW9yeQo+ID4gICAgICBiYXJyaWVyIGFm dGVyIGl0LiAgSXQgaXNuJ3QgZ3VhcmFudGVlZCB0byBpbnNlcnQgYW55dGhpbmcgbW9yZSB0aGFu IGEKPiA+ICAgICAgY29tcGlsZXIgYmFycmllciBpbiBhIFVQIGNvbXBpbGF0aW9uLgo+ID4gCj4g PiBTbyBvcmRlciBpcyAxLiBzdG9yZSAyLiBmZW5jZSwgYnV0IHlvdXIgY29tbWVudCBzdWdnZXN0 cyB5b3Ugd2FudCBpdCB0aGUKPiA+IG90aGVyIHdheSByb3VuZC4KPiAKPiBXaGF0J3MgbW9yZSB3 ZWlyZCBpcyB0aGF0IGl0IGlzIGEgZnVsbHkgc2VyaWFsaXNpbmcgaW5zdHJ1Y3Rpb24gdGhhdCBp cwo+IHVzZWQgdG8gZmVuY2UgZmlyc3QgYXMgcGFydCBvZiB0aGUgdXBkYXRlLiBJZiB0aGF0J3Mg d2F5IFBldGVyWiB1c2VzCj4gaXQuLi4KCkkgaGF2ZW4ndCBsb29rZWQgYXQgdGhlIGltcGxlbWVu dGF0aW9ucyB0YmgsIGp1c3QgZ29pbmcgd2l0aCB0aGUgdGV4dC4gT3IKZG8geW91IG1lYW4gaW4g dGhlIHdyaXRlX3NlcWxvY2sgdGhhdCB3ZSdyZSByZXBsYWNpbmc/Cgo+IAo+ID4gPiA+ID4gICAg ICAgICAgcHJlZW1wdF9lbmFibGUoKTsKPiA+ID4gPiA+ICAgICAgICAgIC8qIGlucGxhY2UgdXBk YXRlLCBubyBzaGFyZWQgZmVuY2VzICovCj4gPiA+ID4gPiBAQCAtMzY4LDExICszNTcsOCBAQCBp bnQgcmVzZXJ2YXRpb25fb2JqZWN0X2NvcHlfZmVuY2VzKHN0cnVjdCByZXNlcnZhdGlvbl9vYmpl Y3QgKmRzdCwKPiA+ID4gPiA+ICAgICAgICAgIG9sZCA9IHJlc2VydmF0aW9uX29iamVjdF9nZXRf ZXhjbChkc3QpOwo+ID4gPiA+ID4gICAgICAgICAgcHJlZW1wdF9kaXNhYmxlKCk7Cj4gPiA+ID4g PiAtICAgICAgIHdyaXRlX3NlcWNvdW50X2JlZ2luKCZkc3QtPnNlcSk7Cj4gPiA+ID4gPiAtICAg ICAgIC8qIHdyaXRlX3NlcWNvdW50X2JlZ2luIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgbWVtb3J5 IGJhcnJpZXIgKi8KPiA+ID4gPiA+IC0gICAgICAgUkNVX0lOSVRfUE9JTlRFUihkc3QtPmZlbmNl X2V4Y2wsIG5ldyk7Cj4gPiA+ID4gPiAtICAgICAgIFJDVV9JTklUX1BPSU5URVIoZHN0LT5mZW5j ZSwgZHN0X2xpc3QpOwo+ID4gPiA+ID4gLSAgICAgICB3cml0ZV9zZXFjb3VudF9lbmQoJmRzdC0+ c2VxKTsKPiA+ID4gPiA+ICsgICAgICAgcmN1X2Fzc2lnbl9wb2ludGVyKGRzdC0+ZmVuY2VfZXhj bCwgbmV3KTsKPiA+ID4gPiA+ICsgICAgICAgcmN1X2Fzc2lnbl9wb2ludGVyKGRzdC0+ZmVuY2Us IGRzdF9saXN0KTsKPiA+ID4gPiA+ICAgICAgICAgIHByZWVtcHRfZW5hYmxlKCk7Cj4gPiA+ID4g PiAgICAgICAgICByZXNlcnZhdGlvbl9vYmplY3RfbGlzdF9mcmVlKHNyY19saXN0KTsKPiA+ID4g PiA+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmggYi9pbmNsdWRlL2xp bnV4L3Jlc2VydmF0aW9uLmgKPiA+ID4gPiA+IGluZGV4IDA0NGE1Y2Q0YWY1MC4uZmQyOWJhYWQw YmUzIDEwMDY0NAo+ID4gPiA+ID4gLS0tIGEvaW5jbHVkZS9saW51eC9yZXNlcnZhdGlvbi5oCj4g PiA+ID4gPiArKysgYi9pbmNsdWRlL2xpbnV4L3Jlc2VydmF0aW9uLmgKPiA+ID4gPiA+IEBAIC00 Niw4ICs0Niw2IEBACj4gPiA+ID4gPiAgICNpbmNsdWRlIDxsaW51eC9yY3VwZGF0ZS5oPgo+ID4g PiA+ID4gICBleHRlcm4gc3RydWN0IHd3X2NsYXNzIHJlc2VydmF0aW9uX3d3X2NsYXNzOwo+ID4g PiA+ID4gLWV4dGVybiBzdHJ1Y3QgbG9ja19jbGFzc19rZXkgcmVzZXJ2YXRpb25fc2VxY291bnRf Y2xhc3M7Cj4gPiA+ID4gPiAtZXh0ZXJuIGNvbnN0IGNoYXIgcmVzZXJ2YXRpb25fc2VxY291bnRf c3RyaW5nW107Cj4gPiA+ID4gPiAgIC8qKgo+ID4gPiA+ID4gICAgKiBzdHJ1Y3QgcmVzZXJ2YXRp b25fb2JqZWN0X2xpc3QgLSBhIGxpc3Qgb2Ygc2hhcmVkIGZlbmNlcwo+ID4gPiA+ID4gQEAgLTcx LDcgKzY5LDYgQEAgc3RydWN0IHJlc2VydmF0aW9uX29iamVjdF9saXN0IHsKPiA+ID4gPiA+ICAg ICovCj4gPiA+ID4gPiAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3Qgewo+ID4gPiA+ID4gICAg ICAgICAgc3RydWN0IHd3X211dGV4IGxvY2s7Cj4gPiA+ID4gPiAtICAgICAgIHNlcWNvdW50X3Qg c2VxOwo+ID4gPiA+ID4gICAgICAgICAgc3RydWN0IGRtYV9mZW5jZSBfX3JjdSAqZmVuY2VfZXhj bDsKPiA+ID4gPiA+ICAgICAgICAgIHN0cnVjdCByZXNlcnZhdGlvbl9vYmplY3RfbGlzdCBfX3Jj dSAqZmVuY2U7Cj4gPiA+ID4gPiBAQCAtMTU2LDE0ICsxNTMsMTIgQEAgcmVzZXJ2YXRpb25fb2Jq ZWN0X2ZlbmNlcyhzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0ICpvYmosCj4gPiA+ID4gPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVzZXJ2YXRpb25fb2JqZWN0X2xpc3QgKips aXN0LAo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdTMyICpzaGFyZWRfY291 bnQpCj4gPiA+ID4gPiAgIHsKPiA+ID4gPiA+IC0gICAgICAgdW5zaWduZWQgaW50IHNlcTsKPiA+ ID4gPiA+IC0KPiA+ID4gPiA+ICAgICAgICAgIGRvIHsKPiA+ID4gPiA+IC0gICAgICAgICAgICAg ICBzZXEgPSByZWFkX3NlcWNvdW50X2JlZ2luKCZvYmotPnNlcSk7Cj4gPiA+ID4gPiAgICAgICAg ICAgICAgICAgICpleGNsID0gcmN1X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2VfZXhjbCk7Cj4gPiAK PiA+IEkgdGhpbmsgeW91IG5lZWQgYSBiYXJyaWVyIGJldHdlZW4gdGhpcyBhbmQgdGhlIHJlYWQg b2Ygc2hhcmVkX2NvdW50Cj4gPiBiZWxvdy4gQnV0IHJjdV9kZXJlZmVuY2Ugb25seSBnaXZlcyB5 b3UgYSBkZXBlbmRlbnQgYmFycmllciwgaS5lLiBvbmx5Cj4gPiBzdHVmZiB0aGF0J3MgYWNjZXNz ZXMgdGhyb3VnaCB0aGlzIHBvaW50ZXIgaXMgb3JkZXJlZC4gV2hpY2ggbWVhbnMgdGhlCj4gPiBh Y2Nlc3MgdG8gLT5zaGFyZWRfY291bnQsIHdoaWNoIGdvZXMgdGhyb3VnaCBhbm90aGVyIHBvaW50 ZXIsIGlzbid0Cj4gPiBhY3R1YWxseSBvcmRlcmVkLgo+IAo+IFdlbGwsCj4gCj4gZG8gewo+IAll eGNsID0gLi4uCj4gCXNtcF9ybWIoKTsKPiAJKGxpc3QsIGNvdW50KSA9IC4uLgo+IAlzbXBfcm1i KCk7Cj4gfSB3aGlsZSAoZXhjbCAhPSAuLi4pCj4gCj4gd291bGQgYmUgdGhlIHN0cmFpZ2h0Zm9y d2FyZCBjb252ZXJzaW9uIG9mIHRoZSBzZXFsb2NrLgoKWWVhaCBJIGNoZWF0ZWQgYnkgbG9va2lu ZyB0aGVyZSwgYW5kIGNvdWxkbid0IGNvbnZpbmNlIG15c2VsZiB0aGF0IHdlCmNhbid0IGRyb3Ag dGhlIGZpcnN0IHNtcF9ybWIoKSAuLi4KCj4gCj4gPiBJIHRoaW5rIHRoZSBpbXBsZW1lbnRhdGlv biBpcyB0aGF0IGl0IGlzIGFuIHVuY29uZGl0aW9uYWwgY29tcGlsZXIgYmFycmllcgo+ID4gKGJ1 dCB0aGF0IG1pZ2h0IGNoYW5nZSksIGJ1dCB5b3UncmUgZGVmaW5pdGVseSBtaXNzaW5nIHRoZSBj cHUgYmFycmllciwgc28KPiA+IGEgY3B1ZSBtaWdodCBzcGVjdWxhdGUgdGhlIGVudGlyZSB0aGlu ZyBvdXQgb2Ygb3JkZXIuCj4gPiAKPiA+IEkgdGhpbmsgeW91IG5lZWQgYW5vdGhlciBzbWJfcm1i KCk7IGhlcmUKPiA+IAo+ID4gCj4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICpsaXN0ID0gcmN1 X2RlcmVmZXJlbmNlKG9iai0+ZmVuY2UpOwo+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAqc2hh cmVkX2NvdW50ID0gKmxpc3QgPyAoKmxpc3QpLT5zaGFyZWRfY291bnQgOiAwOwo+ID4gPiA+ID4g LSAgICAgICB9IHdoaWxlIChyZWFkX3NlcWNvdW50X3JldHJ5KCZvYmotPnNlcSwgc2VxKSk7Cj4g PiA+ID4gPiArICAgICAgICAgICAgICAgc21wX3JtYigpOyAvKiBTZWUgcmVzZXJ2YXRpb25fb2Jq ZWN0X2FkZF9leGNsX2ZlbmNlICovCj4gPiAKPiA+IFRoaXMgZmVuY2UgaGVyZSBJIHRoaW5rIHBy ZXZlbnRzIHRoZSByZS1yZWFkaW5nIG9mIC0+ZmVuY2VfZXhjbCBmcm9tCj4gPiBnZXR0aW5nIGhv aXN0ZWQgYWJvdmUgdGhlIGNyaXRpY2FsIHJlYWRzLiBTbyB0aGlzIGlzIGp1c3QgdGhlIG9wZW4t Y29kZWQKPiA+IHNlcWxvY2sgcmV0cnkgbG9vcC4KPiAKPiBXaXRob3V0IHRoZSBzZXEuCj4gCj4g VGhlIGRpbGVtbWEgZm9yIGRyb3BwaW5nIHRoZSBzZXEgd291bGQgYmUgd2hhdCBpZiB3ZSB3ZXJl IHRvIGFkZCBhbm90aGVyCj4gc3RhdGUgaGVyZSwgc3VjaCBhcyBtb2RpZmllZCBvciBldmVuIGlu dmFsaWRhdGUuCj4gCj4gPiA+ID4gPiArICAgICAgIH0gd2hpbGUgKHJjdV9hY2Nlc3NfcG9pbnRl cihvYmotPmZlbmNlX2V4Y2wpICE9ICpleGNsKTsKPiA+IAo+ID4gV2hhdCBpZiBzb21lb25lIGlz IHJlYWwgZmFzdCAobGlrZSByZWFsbHkgcmVhbCBmYXN0KSBhbmQgcmVjeWNsZXMgdGhlCj4gPiBl eGNsdXNpdmUgZmVuY2Ugc28geW91IHJlYWQgdGhlIHNhbWUgcG9pbnRlciB0d2ljZSwgYnV0IGV2 ZXJ5dGhpbmcgZWxzZQo+ID4gY2hhbmdlZD8gcmV1c2VkIGZlbmNlIHBvaW50ZXIgaXMgYSBsb3Qg bW9yZSBsaWtlbHkgdGhhbiBzZXFsb2NrIHdyYXBwaW5nCj4gPiBhcm91bmQuCj4gCj4gSXQncyBh biBleGNsdXNpdmUgZmVuY2UuIElmIGl0IGlzIHJlcGxhY2VkLCBpdCBtdXN0IGJlIGxhdGVyIHRo YW4gYWxsCj4gdGhlIHNoYXJlZCBmZW5jZXMgKGFuZCBkZXBlbmRlbnQgb24gdGhlbSBkaXJlY3Rs eSBvciBpbmRpcmVjdGx5KSwgYW5kCj4gc28gc3RpbGwgYSBjb25zaXN0ZW50IHNuYXBzaG90LgoK SSdtIG5vdCB3b3JyaWVkIGFib3V0IHRoZSBmZW5jZSwgdGhhdCBwYXJ0IGlzIGZpbmUuIEJ1dCB3 ZSdyZSBkZWZhY3RvCnVzaW5nIHRoZSBmZW5jZSBhcyBhIGZhbmN5IHNlcWxvY2stb2Ytc29ydHMu IEFuZCBpZiB0aGUgZmVuY2UgZ2V0cyByZXVzZWQKYW5kIHRoZSBwb2ludGVycyBtYXRjaCwgdGhl biBvdXIgc2VxbG9jay1vZi1zb3J0cyBicmVha3MuIEJ1dCBJIGhhdmVuJ3QKbG9va2VkIGFyb3Vu ZCB3aGV0aGVyIHRoZXJlJ3MgbW9yZSBpbiB0aGUgY29kZSB0aGF0IG1ha2VzIHRoaXMgYW4KaXJy ZWxldmFudCBpc3N1ZS4KLURhbmllbAotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVl ciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4