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: Thu, 19 Nov 2015 09:42:17 +0000 Message-ID: <564D9979.1020905@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> <564CB2E6.3070709@linux.intel.com> <20151119091719.GO20799@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 449D27A0EB for ; Thu, 19 Nov 2015 01:42:20 -0800 (PST) In-Reply-To: <20151119091719.GO20799@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 Ck9uIDE5LzExLzE1IDA5OjE3LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIFdlZCwgTm92IDE4 LCAyMDE1IGF0IDA1OjE4OjMwUE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pgo+PiBP biAxNy8xMS8xNSAxNzo1NiwgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+IE9uIFR1ZSwgTm92IDE3 LCAyMDE1IGF0IDA1OjI0OjAxUE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+Cj4+ Pj4gT24gMTcvMTEvMTUgMTc6MDgsIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+Pj4+IE9uIFR1ZSwg Tm92IDE3LCAyMDE1IGF0IDA0OjU0OjUwUE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+ Pj4+Pj4KPj4+Pj4+IE9uIDE3LzExLzE1IDE2OjM5LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+Pj4+ Pj4+IE9uIFR1ZSwgTm92IDE3LCAyMDE1IGF0IDA0OjI3OjEyUE0gKzAwMDAsIFR2cnRrbyBVcnN1 bGluIHdyb3RlOgo+Pj4+Pj4+PiBGcm9tOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5A aW50ZWwuY29tPgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBJbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKPj4+ Pj4+Pj4KPj4+Pj4+Pj4gICAgICAgY29tbWl0IGU5ZjI0ZDVmYjdjZjM2MjhiMTk1YjE4ZmYzYWM0 ZTM3OTM3Y2VlYWUKPj4+Pj4+Pj4gICAgICAgQXV0aG9yOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtv LnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4+Pj4+PiAgICAgICBEYXRlOiAgIE1vbiBPY3QgNSAxMzoy NjozNiAyMDE1ICswMTAwCj4+Pj4+Pj4+Cj4+Pj4+Pj4+ICAgICAgICAgICBkcm0vaTkxNTogQ2xl YW4gdXAgYXNzb2NpYXRlZCBWTUFzIG9uIGNvbnRleHQgZGVzdHJ1Y3Rpb24KPj4+Pj4+Pj4KPj4+ Pj4+Pj4gSSBhZGRlZCBhIFdBUk5fT04gYXNzZXJ0aW9uIHRoYXQgVk0ncyBhY3RpdmUgbGlzdCBt dXN0IGJlIGVtcHR5Cj4+Pj4+Pj4+IGF0IHRoZSB0aW1lIG9mIG93bmluZyBjb250ZXh0IGlzIGdl dHRpbmcgZnJlZWQsIGJ1dCB0aGF0IHR1cm5lZAo+Pj4+Pj4+PiBvdXQgdG8gYmUgYSB3cm9uZyBh c3N1bXB0aW9uLgo+Pj4+Pj4+Pgo+Pj4+Pj4+PiBEdWUgb3JkZXJpbmcgb2Ygb3BlcmF0aW9ucyBp biBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFkLCB3aGVyZQo+Pj4+Pj4+PiBjb250ZXh0cyBh cmUgdW5yZWZlcmVuY2VkIGJlZm9yZSBWTUFzIGFyZSBtb3ZlZCB0byB0aGUgaW5hY3RpdmUKPj4+ Pj4+Pj4gbGlzdCwgdGhlIGRlc2NyaWJlZCBzaXR1YXRpb24gY2FuIGluIGZhY3QgaGFwcGVuLgo+ Pj4+Pj4+Pgo+Pj4+Pj4+PiBJdCBmZWVscyB3cm9uZyB0byBkbyB0aGluZ3MgaW4gc3VjaCBvcmRl ciBzbyB0aGlzIGZpeCBtYWtlcyBzdXJlCj4+Pj4+Pj4+IGEgcmVmZXJlbmNlIHRvIGNvbnRleHQg aXMgaGVsZCB1bnRpbCB0aGUgbW92ZSB0byBpbmFjdGl2ZSBsaXN0Cj4+Pj4+Pj4+IGlzIGNvbXBs ZXRlZC4KPj4+Pj4+Pj4KPj4+Pj4+Pj4gdjI6IFJhdGhlciB0aGFuIGhvbGQgYSB0ZW1wb3Jhcnkg Y29udGV4dCByZWZlcmVuY2UgbW92ZSB0aGUKPj4+Pj4+Pj4gICAgICAgcmVxdWVzdCB1bnJlZmVy ZW5jZSB0byBiZSB0aGUgbGFzdCBvcGVyYXRpb24uIChEYW5pZWwgVmV0dGVyKQo+Pj4+Pj4+Pgo+ Pj4+Pj4+PiB2MzogRml4IHVzZSBhZnRlciBmcmVlLiAoQ2hyaXMgV2lsc29uKQo+Pj4+Pj4+Pgo+ Pj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50 ZWwuY29tPgo+Pj4+Pj4+PiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9OTI2MzgKPj4+Pj4+Pj4gQ2M6IE1pY2hlbCBUaGllcnJ5IDxtaWNoZWwu dGhpZXJyeUBpbnRlbC5jb20+Cj4+Pj4+Pj4+IENjOiBDaHJpcyBXaWxzb24gPGNocmlzQGNocmlz LXdpbHNvbi5jby51az4KPj4+Pj4+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJA ZmZ3bGwuY2g+Cj4+Pj4+Pj4+IC0tLQo+Pj4+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jIHwgMzMgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCj4+Pj4+Pj4+ ICAgIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKPj4+ Pj4+Pj4KPj4+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4+Pj4+Pj4+IGluZGV4IDk4Yzgz Mjg2YWI2OC4uMDk0YWMxN2E3MTJkIDEwMDY0NAo+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbS5jCj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPj4+Pj4+Pj4gQEAgLTI0MDQsMjkgKzI0MDQsMzIgQEAgaTkxNV9nZW1fb2JqZWN0 X3JldGlyZV9fcmVhZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBpbnQgcmluZykK Pj4+Pj4+Pj4gICAgCVJRX0JVR19PTighKG9iai0+YWN0aXZlICYgKDEgPDwgcmluZykpKTsKPj4+ Pj4+Pj4KPj4+Pj4+Pj4gICAgCWxpc3RfZGVsX2luaXQoJm9iai0+cmluZ19saXN0W3JpbmddKTsK Pj4+Pj4+Pj4gLQlpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3JlYWRfcmVxW3Jp bmddLCBOVUxMKTsKPj4+Pj4+Pj4KPj4+Pj4+Pj4gICAgCWlmIChvYmotPmxhc3Rfd3JpdGVfcmVx ICYmIG9iai0+bGFzdF93cml0ZV9yZXEtPnJpbmctPmlkID09IHJpbmcpCj4+Pj4+Pj4+ICAgIAkJ aTkxNV9nZW1fb2JqZWN0X3JldGlyZV9fd3JpdGUob2JqKTsKPj4+Pj4+Pj4KPj4+Pj4+Pj4gICAg CW9iai0+YWN0aXZlICY9IH4oMSA8PCByaW5nKTsKPj4+Pj4+Pj4gLQlpZiAob2JqLT5hY3RpdmUp Cj4+Pj4+Pj4+IC0JCXJldHVybjsKPj4+Pj4+Pgo+Pj4+Pj4+IAlpZiAob2JqLT5hY3RpdmUpIHsK Pj4+Pj4+PiAJCWk5MTVfZ2VtX3JlcXVlc3RfYXNzaWduKCZvYmotPmxhc3RfcmVhZF9yZXFbcmlu Z10sIE5VTEwpOwo+Pj4+Pj4+IAkJcmV0dXJuOwo+Pj4+Pj4+IAl9Cj4+Pj4+Pj4KPj4+Pj4+PiBX b3VsZCByZXN1bHQgaW4gbGVzcyBjaHVybiBpbiB0aGUgY29kZSBhbmQgZHJvcCB0aGUgdW5lY2Vz c2FyeSBpbmRlbnQKPj4+Pj4+PiBsZXZlbC4gQWxzbyBjb21tZW50IGlzIG1pc3NpbmcgYXMgdG8g d2h5IHdlIG5lZWQgdG8gZG8gdGhpbmdzIGluIGEKPj4+Pj4+PiBzcGVjaWZpYyBvcmRlci4KPj4+ Pj4+Cj4+Pj4+PiBBY3R1YWxseSBJIHRoaW5rIEkgY2hhbmdlZCBteSBtaW5kIGFuZCB0aGF0IHYx IGlzIHRoZSB3YXkgdG8gZ28uCj4+Pj4+Pgo+Pj4+Pj4gSnVzdCByZS1vcmRlcmluZyB0aGUgY29k ZSBoZXJlIHN0aWxsIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgY29udGV4dAo+Pj4+Pj4gZGVz dHJ1Y3RvciB0byBydW4gd2l0aCBWTUFzIG9uIHRoZSBhY3RpdmUgbGlzdCBJIHRoaW5rLgo+Pj4+ Pj4KPj4+Pj4+IElmIHdlIGhvbGQgdGhlIGNvbnRleHQgdGhlbiBpdCBpcyAxMDAlIGNsZWFyIGl0 IGlzIG5vdCBwb3NzaWJsZS4KPj4+Pj4KPj4+Pj4gcmVxdWVzdF9hc3NpZ24gX2lzXyB0aGUgZnVu Y3Rpb24gd2hpY2ggYWRqdXN0IHRoZSByZWZjb3VudHMgZm9yIHVzLCB3aGljaAo+Pj4+PiBtZWFu cyBpZiB3ZSBkcm9wIHRoYXQgcmVmZXJlbmNlIHRvbyBlYXJseSB0aGVuIGdyYWJiaW5nIGEgdGVt cCByZWZlcmVuY2UKPj4+Pj4gaXMganVzdCBwYXBlcmluZyBvdmVyIHRoZSByZWFsIGJ1Zy4KPj4+ Pj4KPj4+Pj4gV3JpdHRlbiBvdXQgeW91ciBwYXRjaCBsb29rcyBzb21ldGhpbmcgbGlrZQo+Pj4+ Pgo+Pj4+PiAJYV9yZWZlcmVuY2UoYSk7Cj4+Pj4+IAlhX3VucmVmZXJlbmNlKGEpOwo+Pj4+Pgo+ Pj4+PiAJLyogbW9yZSBjbGVhbnVwIGNvZGUgdGhhdCBzaG91bGQgZ2V0IHJ1biBiZWZvcmUgYV91 bnJlZmVyZW5jZSBidXQgaXNuJ3QgKi8KPj4+Pj4KPj4+Pj4gCWFfdW5yZWZlcm5jZShhKTsgLyog Zm9yIHJlYWwgdGhpcyB0aW1lICovCj4+Pj4+Cj4+Pj4+IFVuZm9ydHVuYXRlbHkgZm9vX2Fzc2ln biBpcyBhIG5ldyBwYXR0ZXJuIGFuZCBub3Qgd2VsbC1lc3RhYmxpc2hlZCwgc28KPj4+Pj4gdGhh dCBjb25uZWN0aW9uIGlzbid0IGNsZWFyLiBNYXliZSB3ZSBzaG91bGQgcmVuYW1lIGl0IHRvCj4+ Pj4+IGZvb19yZWZlcmVuY2VfYXNzaWduIHRvIG1ha2UgaXQgbW9yZSBvYnZpb3VzLiBPciBqdXN0 IGRyb3AgdGhlIHByZXRlbnNlCj4+Pj4+IGFuZCBvcGVuLWNvZGUgaXQgc2luY2Ugd2UgdW5jb25k aXRpb25hbGx5IGFzc2lnbiBOVUxMIGFzIHRoZSBuZXcgcG9pbnRlcgo+Pj4+PiB2YWx1ZSwgYW5k IHdlIGtub3cgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIHBvaW50ZXIgaXMgbm9uLU5VTEwuIFNv Cj4+Pj4+IHRoZXJlJ3MgcmVhbGx5IG5vIGJlbmVmaXQgdG8gdGhlIGhlbHBlciBoZXJlLCBpdCBv bmx5IG9iZnVzY2F0ZXMuIEFuZAo+Pj4+PiBzaW5jZSB0aGF0IG9iZnVzY2F0aW9uIHRyaXBwZWQg eW91IHVwIGl0J3MgdGltZSB0byByZW1vdmUgaXQgOy0pCj4+Pj4KPj4+PiBUaGVuIGZvb19yZWZl cmVuY2VfdW5yZWZlcmVuY2VfYXNzaWduLiA6KQo+Pj4+Cj4+Pj4gQnV0IHNlcmlvdXNseSwgSSB0 aGluayBpdCBpcyBtb3JlIGNvbXBsaWNhdGVkIHRoYXQuLgo+Pj4+Cj4+Pj4gVGhlIHRoaW5nIGl0 IHRyaXBzIG92ZXIgaXMgdGhhdCBtb3ZpbmcgVk1BcyB0byBpbmFjdGl2ZSBkb2VzIG5vdCBjb3Jy ZXNwb25kCj4+Pj4gaW4gdGltZSB0byByZXF1ZXN0IHJldGlyZW1lbnQuIEJ1dCBpbiBmYWN0IFZN QXMgYXJlIG1vdmVkIHRvIGluYWN0aXZlIG9ubHkKPj4+PiB3aGVuIGFsbCByZXF1ZXN0cyBhc3Nv Y2lhdGVkIHdpdGggYW4gb2JqZWN0IGFyZSBkb25lLgo+Pj4+Cj4+Pj4gVGhpcyBpcyB0aGUgdW5p bnR1aXRpdmUgdGhpbmcgSSB3YXMgd29ya2luZyBhcm91bmQuIFRvIG1ha2Ugc3VyZSB3aGVuCj4+ Pj4gY29udGV4dCBkZXN0cnVjdG9yIHJ1bnMgdGhlcmUgYXJlIG5vdCBhY3RpdmUgVk1BcyBmb3Ig dGhhdCBWTS4KPj4+Pgo+Pj4+IEkgZG9uJ3Qga25vdyBob3cgdG8gZ3VhcmFudGVlIHRoYXQgd2l0 aCB3aGF0IHlvdSBwcm9wb3NlLiBQZXJoYXBzIEkgYW0KPj4+PiBtaXNzaW5nIHNvbWV0aGluZz8K Pj4+Cj4+PiBPaywgbXkgZXhhbXBsZSB3YXMgc2xpZ2h0bHkgb2ZmLCBzaW5jZSB3ZSBoYXZlIDIg b2JqZWN0czoKPj4+Cj4+PiAJYl9yZWZlcmVuY2UoYS0+Yik7Cj4+PiAJYV91bnJlZmVyZW5jZShh KTsgLyogbWlnaHQgdW5yZWYgYS0+YiBpZiBpdCdzIHRoZSBsYXN0IHJlZmVyZW5jZSAqLwo+Pj4K Pj4+IAkvKiBtb3JlIGNsZWFudXAgY29kZSB0aGF0IHNob3VsZCBnZXQgcnVuIGJlZm9yZSBhX3Vu cmVmZXJlbmNlIGJ1dCBpc24ndCAqLwo+Pj4KPj4+IAliX3VucmVmZXJuY2UoYS0+Yik7IC8qIGZv ciByZWFsIHRoaXMgdGltZSAqLwo+Pj4KPj4+IEhvbGRpbmcgdGhlIHJlZiB0byBhIG1ha2VzIHN1 cmUgdGhhdCBiIGRvZXNuJ3QgZGlzYXBwZWFyLiBXZSByZWx5IG9uIHRoYXQKPj4+IGluIGEgZnVu ZGFtZW50YWwgd2F5IChhIHJlcXVlc3QgcmVhbGx5IG5lZWRzIHRoZSBjdHggdG8gc3RpY2sgYXJv dW5kKSwgYW5kCj4+PiB0aGUgYnVnIHJlYWxseSBpcyB0aGF0IHdlIGRyb3AgdGhlIHJlZiB0byBh IHRvbyBlYXJseS4gVGhhdCBpdCdzIHRoZQo+Pj4gcmVsZWFzaW5nIG9mIGEtPmIgd2hpY2ggaXMg ZXZlbnR1YWxseSBibG93aW5nIHRoaW5ncyB1cCBkb2Vzbid0IHJlYWxseQo+Pj4gbWF0dGVyLgo+ Pj4KPj4+IEJ0dyB3b3VsZCBpdCBiZSBwb3NzaWJsZSB0byBoYXZlIGFuIGlndCBmb3IgdGhpcz8g SSBzaG91bGQgYmUgcG9zc2libGUgdG8KPj4+IGhpdCB0aGlzIHdpdGggc29tZSB2YXJpYW4gb2Yg Z2VtX3VucmVmX2FjdGl2ZV9idWZmZXJzLgo+Pgo+PiBJIHdhcyB0cnlpbmcgdG8gZG8gdGhhdCB0 b2RheSBhbmQgaXQgaXMgcHJvdmluZyB0byBiZSBhIGJpdCB0cmlja3kuCj4+Cj4+IEkgbmVlZCBh IGJsaXR0ZXIgd29ya2xvYWQgd2hpY2ggd2lsbCBydW4gZm9yIGxvbmcgZW5vdWdoIGZvciB0aGUg cmV0aXJlCj4+IHdvcmtlciB0byBydW4uIFNvIEknbGwgdHJ5IGFuZCBidWlsZCBhIGJpdCBiYiB0 b21vcnJvdyB3aGljaCB3aWxsIGRvIHRoYXQuCj4+Cj4+IEFsdGVybmF0aXZlbHkgSSBkaWQgdGhp czoKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNi dWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBp bmRleCA2ZWQ3ZDYzYTA2ODguLmRiNTFlNGI0MmEyMCAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+PiBAQCAtNjk5LDYgKzY5OSw4IEBAIGk5MTVf Z2VtX2V4ZWNidWZmZXJfcmVzZXJ2ZShzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nLAo+PiAg ICAgICAgICBpbnQgcmV0cnk7Cj4+Cj4+ICAgICAgICAgIGk5MTVfZ2VtX3JldGlyZV9yZXF1ZXN0 c19yaW5nKHJpbmcpOwo+PiArICAgICAgIGlmIChpOTE1LmVuYWJsZV9leGVjbGlzdHMpCj4+ICsg ICAgICAgICAgICAgICBpbnRlbF9leGVjbGlzdHNfcmV0aXJlX3JlcXVlc3RzKHJpbmcpOwo+Pgo+ PiAgICAgICAgICB2bSA9IGxpc3RfZmlyc3RfZW50cnkodm1hcywgc3RydWN0IGk5MTVfdm1hLCBl eGVjX2xpc3QpLT52bTsKPj4KPj4gQW5kIHRoYXQgZW5hYmxlcyBtZSB0byB0cmlnZ2VyIHRoZSBX QVJOIGZyb20gbXkgaWd0IGV2ZW4gd2l0aCB0aGUgY3VycmVudAo+PiBzaG9ydGVyIGJsaXR0ZXIg d29ya2xvYWQgKGNvcHkgNjRNYikuCj4+Cj4+IEdvaW5nIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHBy b2JsZW0sIGhvdyBhYm91dCBzb21ldGhpbmcgbGlrZSB0aGlzIGh1bmsgZm9yIGEgZml4Pwo+Pgo+ PiBAQCAtMjQxMywxOSArMjQxNiwzNiBAQCBzdGF0aWMgdm9pZAo+PiAgIGk5MTVfZ2VtX29iamVj dF9yZXRpcmVfX3JlYWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IHJpbmcp Cj4+ICAgewo+PiAgICAgICAgICBzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPj4gKyAgICAgICBzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7Cj4+Cj4+ICAgICAgICAgIFJRX0JVR19PTihvYmotPmxh c3RfcmVhZF9yZXFbcmluZ10gPT0gTlVMTCk7Cj4+ICAgICAgICAgIFJRX0JVR19PTighKG9iai0+ YWN0aXZlICYgKDEgPDwgcmluZykpKTsKPj4KPj4gICAgICAgICAgbGlzdF9kZWxfaW5pdCgmb2Jq LT5yaW5nX2xpc3RbcmluZ10pOwo+PiArCj4+ICsgICAgICAgcHBndHQgPSBvYmotPmxhc3RfcmVh ZF9yZXFbcmluZ10tPmN0eC0+cHBndHQ7Cj4+ICsgICAgICAgaWYgKHBwZ3R0KSB7Cj4+ICsgICAg ICAgICAgICAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9s aW5rKSB7Cj4+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmICh2bWEtPnZtID09ICZwcGd0dC0+ YmFzZSAmJgo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIWxpc3RfZW1wdHkoJnZtYS0+ bW1fbGlzdCkpIHsKPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0X21vdmVf dGFpbCgmdm1hLT5tbV9saXN0LAo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICZ2bWEtPnZtLT5pbmFjdGl2ZV9saXN0KTsKPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgfQo+PiArICAgICAgICAgICAgICAgfQo+PiArICAgICAgIH0KPj4gKwo+PiAgICAg ICAgICBpOTE1X2dlbV9yZXF1ZXN0X2Fzc2lnbigmb2JqLT5sYXN0X3JlYWRfcmVxW3JpbmddLCBO VUxMKTsKPj4KPj4gVGhpcyBtb3ZlcyBWTUFzIGltbWVkaWF0ZWx5IHRvIGluYWN0aXZlIGFzIHJl cXVlc3RzIGFyZSByZXRpcmVkIGFuZCBhdm9pZHMKPj4gdGhlIHByb2JsZW0gd2l0aCB0aGVtIHN0 YXlpbmcgb24gYWN0aXZlIGZvciB1bmRlZmluZWQgYW1vdW50IG9mIHRpbWUuCj4KPiBZb3UgY2Fu J3QgcHV0IGFjdGl2ZSBvYmplY3RzIG9udG8gdGhlIGluYWN0aXZlIGxpc3QsIGkuZS4gdGhlIG9i ai0+YWN0aXZlCgpIbSBpdCBpcyBpbmFjdGl2ZSBpbiB0aGlzIFZNIHNvIHdobyB3b3VsZCBjYXJl PwoKUGVyaGFwcyB0aGVuIHRoZSBmaXggaXMgc2ltcGx5IHRvIHJlbW92ZSB0aGUgCldBUk5fT04o IWxpc3RfZW1wdHkoJnBwZ3R0LT5iYXNlLmFjdGl2ZV9saXN0KSkgZnJvbSB0aGUgY29udGV4dCBk ZXN0cnVjdG9yLgoKSWYgdGhlcmUgYXJlIGFjdGl2ZSBWTUFzIGF0IHRoYXQgcG9pbnQsIHRoZXkn bGwgZ2V0IGNsZWFuZWQgdXAgd2hlbiB0aGV5IAphcmUgcmV0aXJlZCBhbmQgdGhlcmUgaXMgbm8g bGVhay4KCj4gY2hlY2sgaXMgbm9uLW9wdGlvbmFsLiBBbmQgdGhlIGlmIChwcGd0dCkgY2FzZSBp cyBhYnN0cmFjdGlvbiB2aW9sYXRpb24uCj4gSSByZWFsbHkgZG9uJ3QgZ2V0IHdoeSB3ZSBjYW4n dCBqdXN0IG1vdmUgdGhlIHVucmVmIHRvIHRoZSByaWdodCBwbGFjZSAuLi4KCkkgZG9uJ3Qgc2Vl IHdoZXJlLgoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=