From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3] drm/i915: Ensure associated VMAs are inactive when contexts are destroyed Date: Wed, 18 Nov 2015 17:18:30 +0000 Message-ID: <564CB2E6.3070709@linux.intel.com> References: <20151117160440.GB14177@nuc-i3427.alporthouse.com> <1447777632-32099-1-git-send-email-tvrtko.ursulin@linux.intel.com> <20151117163957.GM16848@phenom.ffwll.local> <564B5BDA.1000904@linux.intel.com> <20151117170801.GP16848@phenom.ffwll.local> <564B62B1.7090809@linux.intel.com> <20151117175602.GT16848@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id CD9016E60A for ; Wed, 18 Nov 2015 09:18:32 -0800 (PST) In-Reply-To: <20151117175602.GT16848@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDE3LzExLzE1IDE3OjU2LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIFR1ZSwgTm92IDE3 LCAyMDE1IGF0IDA1OjI0OjAxUE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pgo+PiBP biAxNy8xMS8xNSAxNzowOCwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+IE9uIFR1ZSwgTm92IDE3 LCAyMDE1IGF0IDA0OjU0OjUwUE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+Cj4+ Pj4gT24gMTcvMTEvMTUgMTY6MzksIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+IE9uIFR1ZSwg Tm92IDE3LCAyMDE1IGF0IDA0OjI3OjEyUE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+ Pj4+Pj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4+ Pj4+Cj4+Pj4+PiBJbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKPj4+Pj4+Cj4+Pj4+PiAgICAgIGNv bW1pdCBlOWYyNGQ1ZmI3Y2YzNjI4YjE5NWIxOGZmM2FjNGUzNzkzN2NlZWFlCj4+Pj4+PiAgICAg IEF1dGhvcjogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4+Pj4+ ICAgICAgRGF0ZTogICBNb24gT2N0IDUgMTM6MjY6MzYgMjAxNSArMDEwMAo+Pj4+Pj4KPj4+Pj4+ ICAgICAgICAgIGRybS9pOTE1OiBDbGVhbiB1cCBhc3NvY2lhdGVkIFZNQXMgb24gY29udGV4dCBk ZXN0cnVjdGlvbgo+Pj4+Pj4KPj4+Pj4+IEkgYWRkZWQgYSBXQVJOX09OIGFzc2VydGlvbiB0aGF0 IFZNJ3MgYWN0aXZlIGxpc3QgbXVzdCBiZSBlbXB0eQo+Pj4+Pj4gYXQgdGhlIHRpbWUgb2Ygb3du aW5nIGNvbnRleHQgaXMgZ2V0dGluZyBmcmVlZCwgYnV0IHRoYXQgdHVybmVkCj4+Pj4+PiBvdXQg dG8gYmUgYSB3cm9uZyBhc3N1bXB0aW9uLgo+Pj4+Pj4KPj4+Pj4+IER1ZSBvcmRlcmluZyBvZiBv cGVyYXRpb25zIGluIGk5MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQsIHdoZXJlCj4+Pj4+PiBj b250ZXh0cyBhcmUgdW5yZWZlcmVuY2VkIGJlZm9yZSBWTUFzIGFyZSBtb3ZlZCB0byB0aGUgaW5h Y3RpdmUKPj4+Pj4+IGxpc3QsIHRoZSBkZXNjcmliZWQgc2l0dWF0aW9uIGNhbiBpbiBmYWN0IGhh cHBlbi4KPj4+Pj4+Cj4+Pj4+PiBJdCBmZWVscyB3cm9uZyB0byBkbyB0aGluZ3MgaW4gc3VjaCBv cmRlciBzbyB0aGlzIGZpeCBtYWtlcyBzdXJlCj4+Pj4+PiBhIHJlZmVyZW5jZSB0byBjb250ZXh0 IGlzIGhlbGQgdW50aWwgdGhlIG1vdmUgdG8gaW5hY3RpdmUgbGlzdAo+Pj4+Pj4gaXMgY29tcGxl dGVkLgo+Pj4+Pj4KPj4+Pj4+IHYyOiBSYXRoZXIgdGhhbiBob2xkIGEgdGVtcG9yYXJ5IGNvbnRl eHQgcmVmZXJlbmNlIG1vdmUgdGhlCj4+Pj4+PiAgICAgIHJlcXVlc3QgdW5yZWZlcmVuY2UgdG8g YmUgdGhlIGxhc3Qgb3BlcmF0aW9uLiAoRGFuaWVsIFZldHRlcikKPj4+Pj4+Cj4+Pj4+PiB2Mzog Rml4IHVzZSBhZnRlciBmcmVlLiAoQ2hyaXMgV2lsc29uKQo+Pj4+Pj4KPj4+Pj4+IFNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+Pj4+PiBC dWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTI2 MzgKPj4+Pj4+IENjOiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+ Pj4+Pj4gQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgo+Pj4+Pj4g Q2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4+Pj4+PiAtLS0KPj4+ Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyB8IDMzICsrKysrKysrKysrKysr KysrKy0tLS0tLS0tLS0tLS0tLQo+Pj4+Pj4gICAxIGZpbGUgY2hhbmdlZCwgMTggaW5zZXJ0aW9u cygrKSwgMTUgZGVsZXRpb25zKC0pCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j Cj4+Pj4+PiBpbmRleCA5OGM4MzI4NmFiNjguLjA5NGFjMTdhNzEyZCAxMDA2NDQKPj4+Pj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPj4+Pj4+IEBAIC0yNDA0LDI5ICsyNDA0LDMyIEBAIGk5 MTVfZ2VtX29iamVjdF9yZXRpcmVfX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwgaW50IHJpbmcpCj4+Pj4+PiAgIAlSUV9CVUdfT04oIShvYmotPmFjdGl2ZSAmICgxIDw8IHJp bmcpKSk7Cj4+Pj4+Pgo+Pj4+Pj4gICAJbGlzdF9kZWxfaW5pdCgmb2JqLT5yaW5nX2xpc3Rbcmlu Z10pOwo+Pj4+Pj4gLQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3JlYWRfcmVx W3JpbmddLCBOVUxMKTsKPj4+Pj4+Cj4+Pj4+PiAgIAlpZiAob2JqLT5sYXN0X3dyaXRlX3JlcSAm JiBvYmotPmxhc3Rfd3JpdGVfcmVxLT5yaW5nLT5pZCA9PSByaW5nKQo+Pj4+Pj4gICAJCWk5MTVf Z2VtX29iamVjdF9yZXRpcmVfX3dyaXRlKG9iaik7Cj4+Pj4+Pgo+Pj4+Pj4gICAJb2JqLT5hY3Rp dmUgJj0gfigxIDw8IHJpbmcpOwo+Pj4+Pj4gLQlpZiAob2JqLT5hY3RpdmUpCj4+Pj4+PiAtCQly ZXR1cm47Cj4+Pj4+Cj4+Pj4+IAlpZiAob2JqLT5hY3RpdmUpIHsKPj4+Pj4gCQlpOTE1X2dlbV9y ZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3JlYWRfcmVxW3JpbmddLCBOVUxMKTsKPj4+Pj4gCQly ZXR1cm47Cj4+Pj4+IAl9Cj4+Pj4+Cj4+Pj4+IFdvdWxkIHJlc3VsdCBpbiBsZXNzIGNodXJuIGlu IHRoZSBjb2RlIGFuZCBkcm9wIHRoZSB1bmVjZXNzYXJ5IGluZGVudAo+Pj4+PiBsZXZlbC4gQWxz byBjb21tZW50IGlzIG1pc3NpbmcgYXMgdG8gd2h5IHdlIG5lZWQgdG8gZG8gdGhpbmdzIGluIGEK Pj4+Pj4gc3BlY2lmaWMgb3JkZXIuCj4+Pj4KPj4+PiBBY3R1YWxseSBJIHRoaW5rIEkgY2hhbmdl ZCBteSBtaW5kIGFuZCB0aGF0IHYxIGlzIHRoZSB3YXkgdG8gZ28uCj4+Pj4KPj4+PiBKdXN0IHJl LW9yZGVyaW5nIHRoZSBjb2RlIGhlcmUgc3RpbGwgbWFrZXMgaXQgcG9zc2libGUgZm9yIHRoZSBj b250ZXh0Cj4+Pj4gZGVzdHJ1Y3RvciB0byBydW4gd2l0aCBWTUFzIG9uIHRoZSBhY3RpdmUgbGlz dCBJIHRoaW5rLgo+Pj4+Cj4+Pj4gSWYgd2UgaG9sZCB0aGUgY29udGV4dCB0aGVuIGl0IGlzIDEw MCUgY2xlYXIgaXQgaXMgbm90IHBvc3NpYmxlLgo+Pj4KPj4+IHJlcXVlc3RfYXNzaWduIF9pc18g dGhlIGZ1bmN0aW9uIHdoaWNoIGFkanVzdCB0aGUgcmVmY291bnRzIGZvciB1cywgd2hpY2gKPj4+ IG1lYW5zIGlmIHdlIGRyb3AgdGhhdCByZWZlcmVuY2UgdG9vIGVhcmx5IHRoZW4gZ3JhYmJpbmcg YSB0ZW1wIHJlZmVyZW5jZQo+Pj4gaXMganVzdCBwYXBlcmluZyBvdmVyIHRoZSByZWFsIGJ1Zy4K Pj4+Cj4+PiBXcml0dGVuIG91dCB5b3VyIHBhdGNoIGxvb2tzIHNvbWV0aGluZyBsaWtlCj4+Pgo+ Pj4gCWFfcmVmZXJlbmNlKGEpOwo+Pj4gCWFfdW5yZWZlcmVuY2UoYSk7Cj4+Pgo+Pj4gCS8qIG1v cmUgY2xlYW51cCBjb2RlIHRoYXQgc2hvdWxkIGdldCBydW4gYmVmb3JlIGFfdW5yZWZlcmVuY2Ug YnV0IGlzbid0ICovCj4+Pgo+Pj4gCWFfdW5yZWZlcm5jZShhKTsgLyogZm9yIHJlYWwgdGhpcyB0 aW1lICovCj4+Pgo+Pj4gVW5mb3J0dW5hdGVseSBmb29fYXNzaWduIGlzIGEgbmV3IHBhdHRlcm4g YW5kIG5vdCB3ZWxsLWVzdGFibGlzaGVkLCBzbwo+Pj4gdGhhdCBjb25uZWN0aW9uIGlzbid0IGNs ZWFyLiBNYXliZSB3ZSBzaG91bGQgcmVuYW1lIGl0IHRvCj4+PiBmb29fcmVmZXJlbmNlX2Fzc2ln biB0byBtYWtlIGl0IG1vcmUgb2J2aW91cy4gT3IganVzdCBkcm9wIHRoZSBwcmV0ZW5zZQo+Pj4g YW5kIG9wZW4tY29kZSBpdCBzaW5jZSB3ZSB1bmNvbmRpdGlvbmFsbHkgYXNzaWduIE5VTEwgYXMg dGhlIG5ldyBwb2ludGVyCj4+PiB2YWx1ZSwgYW5kIHdlIGtub3cgdGhlIGN1cnJlbnQgdmFsdWUg b2YgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuIFNvCj4+PiB0aGVyZSdzIHJlYWxseSBubyBiZW5l Zml0IHRvIHRoZSBoZWxwZXIgaGVyZSwgaXQgb25seSBvYmZ1c2NhdGVzLiBBbmQKPj4+IHNpbmNl IHRoYXQgb2JmdXNjYXRpb24gdHJpcHBlZCB5b3UgdXAgaXQncyB0aW1lIHRvIHJlbW92ZSBpdCA7 LSkKPj4KPj4gVGhlbiBmb29fcmVmZXJlbmNlX3VucmVmZXJlbmNlX2Fzc2lnbi4gOikKPj4KPj4g QnV0IHNlcmlvdXNseSwgSSB0aGluayBpdCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYXQuLgo+Pgo+ PiBUaGUgdGhpbmcgaXQgdHJpcHMgb3ZlciBpcyB0aGF0IG1vdmluZyBWTUFzIHRvIGluYWN0aXZl IGRvZXMgbm90IGNvcnJlc3BvbmQKPj4gaW4gdGltZSB0byByZXF1ZXN0IHJldGlyZW1lbnQuIEJ1 dCBpbiBmYWN0IFZNQXMgYXJlIG1vdmVkIHRvIGluYWN0aXZlIG9ubHkKPj4gd2hlbiBhbGwgcmVx dWVzdHMgYXNzb2NpYXRlZCB3aXRoIGFuIG9iamVjdCBhcmUgZG9uZS4KPj4KPj4gVGhpcyBpcyB0 aGUgdW5pbnR1aXRpdmUgdGhpbmcgSSB3YXMgd29ya2luZyBhcm91bmQuIFRvIG1ha2Ugc3VyZSB3 aGVuCj4+IGNvbnRleHQgZGVzdHJ1Y3RvciBydW5zIHRoZXJlIGFyZSBub3QgYWN0aXZlIFZNQXMg Zm9yIHRoYXQgVk0uCj4+Cj4+IEkgZG9uJ3Qga25vdyBob3cgdG8gZ3VhcmFudGVlIHRoYXQgd2l0 aCB3aGF0IHlvdSBwcm9wb3NlLiBQZXJoYXBzIEkgYW0KPj4gbWlzc2luZyBzb21ldGhpbmc/Cj4g Cj4gT2ssIG15IGV4YW1wbGUgd2FzIHNsaWdodGx5IG9mZiwgc2luY2Ugd2UgaGF2ZSAyIG9iamVj dHM6Cj4gCj4gCWJfcmVmZXJlbmNlKGEtPmIpOwo+IAlhX3VucmVmZXJlbmNlKGEpOyAvKiBtaWdo dCB1bnJlZiBhLT5iIGlmIGl0J3MgdGhlIGxhc3QgcmVmZXJlbmNlICovCj4gCj4gCS8qIG1vcmUg Y2xlYW51cCBjb2RlIHRoYXQgc2hvdWxkIGdldCBydW4gYmVmb3JlIGFfdW5yZWZlcmVuY2UgYnV0 IGlzbid0ICovCj4gCj4gCWJfdW5yZWZlcm5jZShhLT5iKTsgLyogZm9yIHJlYWwgdGhpcyB0aW1l ICovCj4gCj4gSG9sZGluZyB0aGUgcmVmIHRvIGEgbWFrZXMgc3VyZSB0aGF0IGIgZG9lc24ndCBk aXNhcHBlYXIuIFdlIHJlbHkgb24gdGhhdAo+IGluIGEgZnVuZGFtZW50YWwgd2F5IChhIHJlcXVl c3QgcmVhbGx5IG5lZWRzIHRoZSBjdHggdG8gc3RpY2sgYXJvdW5kKSwgYW5kCj4gdGhlIGJ1ZyBy ZWFsbHkgaXMgdGhhdCB3ZSBkcm9wIHRoZSByZWYgdG8gYSB0b28gZWFybHkuIFRoYXQgaXQncyB0 aGUKPiByZWxlYXNpbmcgb2YgYS0+YiB3aGljaCBpcyBldmVudHVhbGx5IGJsb3dpbmcgdGhpbmdz IHVwIGRvZXNuJ3QgcmVhbGx5Cj4gbWF0dGVyLgo+IAo+IEJ0dyB3b3VsZCBpdCBiZSBwb3NzaWJs ZSB0byBoYXZlIGFuIGlndCBmb3IgdGhpcz8gSSBzaG91bGQgYmUgcG9zc2libGUgdG8KPiBoaXQg dGhpcyB3aXRoIHNvbWUgdmFyaWFuIG9mIGdlbV91bnJlZl9hY3RpdmVfYnVmZmVycy4KCkkgd2Fz IHRyeWluZyB0byBkbyB0aGF0IHRvZGF5IGFuZCBpdCBpcyBwcm92aW5nIHRvIGJlIGEgYml0IHRy aWNreS4KCkkgbmVlZCBhIGJsaXR0ZXIgd29ya2xvYWQgd2hpY2ggd2lsbCBydW4gZm9yIGxvbmcg ZW5vdWdoIGZvciB0aGUgcmV0aXJlCndvcmtlciB0byBydW4uIFNvIEknbGwgdHJ5IGFuZCBidWls ZCBhIGJpdCBiYiB0b21vcnJvdyB3aGljaCB3aWxsIGRvIHRoYXQuCgpBbHRlcm5hdGl2ZWx5IEkg ZGlkIHRoaXM6CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCmlu ZGV4IDZlZDdkNjNhMDY4OC4uZGI1MWU0YjQyYTIwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jCkBAIC02OTksNiArNjk5LDggQEAgaTkxNV9nZW1fZXhlY2J1 ZmZlcl9yZXNlcnZlKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKnJpbmcsCiAgICAgICAgaW50IHJl dHJ5OwogCiAgICAgICAgaTkxNV9nZW1fcmV0aXJlX3JlcXVlc3RzX3JpbmcocmluZyk7CisgICAg ICAgaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKKyAgICAgICAgICAgICAgIGludGVsX2V4ZWNs aXN0c19yZXRpcmVfcmVxdWVzdHMocmluZyk7CiAKICAgICAgICB2bSA9IGxpc3RfZmlyc3RfZW50 cnkodm1hcywgc3RydWN0IGk5MTVfdm1hLCBleGVjX2xpc3QpLT52bTsKCkFuZCB0aGF0IGVuYWJs ZXMgbWUgdG8gdHJpZ2dlciB0aGUgV0FSTiBmcm9tIG15IGlndCBldmVuIHdpdGggdGhlIGN1cnJl bnQKc2hvcnRlciBibGl0dGVyIHdvcmtsb2FkIChjb3B5IDY0TWIpLgoKR29pbmcgYmFjayB0byB0 aGUgb3JpZ2luYWwgcHJvYmxlbSwgaG93IGFib3V0IHNvbWV0aGluZyBsaWtlIHRoaXMgaHVuayBm b3IgYSBmaXg/CgpAQCAtMjQxMywxOSArMjQxNiwzNiBAQCBzdGF0aWMgdm9pZAogaTkxNV9nZW1f b2JqZWN0X3JldGlyZV9fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQg cmluZykKIHsKICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKKyAgICAgICBzdHJ1Y3QgaTkx NV9od19wcGd0dCAqcHBndHQ7CiAKICAgICAgICBSUV9CVUdfT04ob2JqLT5sYXN0X3JlYWRfcmVx W3JpbmddID09IE5VTEwpOwogICAgICAgIFJRX0JVR19PTighKG9iai0+YWN0aXZlICYgKDEgPDwg cmluZykpKTsKIAogICAgICAgIGxpc3RfZGVsX2luaXQoJm9iai0+cmluZ19saXN0W3JpbmddKTsK KworICAgICAgIHBwZ3R0ID0gb2JqLT5sYXN0X3JlYWRfcmVxW3JpbmddLT5jdHgtPnBwZ3R0Owor ICAgICAgIGlmIChwcGd0dCkgeworICAgICAgICAgICAgICAgbGlzdF9mb3JfZWFjaF9lbnRyeSh2 bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgeworICAgICAgICAgICAgICAgICAgICAgICBp ZiAodm1hLT52bSA9PSAmcHBndHQtPmJhc2UgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICFsaXN0X2VtcHR5KCZ2bWEtPm1tX2xpc3QpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbGlzdF9tb3ZlX3RhaWwoJnZtYS0+bW1fbGlzdCwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAmdm1hLT52bS0+aW5hY3RpdmVfbGlzdCk7CisgICAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgIH0KKyAgICAgICB9CisKICAgICAg ICBpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3JlYWRfcmVxW3JpbmddLCBOVUxM KTsKClRoaXMgbW92ZXMgVk1BcyBpbW1lZGlhdGVseSB0byBpbmFjdGl2ZSBhcyByZXF1ZXN0cyBh cmUgcmV0aXJlZCBhbmQgYXZvaWRzCnRoZSBwcm9ibGVtIHdpdGggdGhlbSBzdGF5aW5nIG9uIGFj dGl2ZSBmb3IgdW5kZWZpbmVkIGFtb3VudCBvZiB0aW1lLgoKUmVnYXJkcywKClR2cnRrbwpfX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFp bGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=