From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v4] drm/i915: Clean up associated VMAs on context destruction Date: Thu, 8 Oct 2015 16:45:59 +0300 Message-ID: <20151008134559.GY26517@intel.com> References: <1444047996-10142-1-git-send-email-tvrtko.ursulin@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTP id 623CA6ECDB for ; Thu, 8 Oct 2015 06:46:03 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1444047996-10142-1-git-send-email-tvrtko.ursulin@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Tvrtko Ursulin Cc: Daniel Vetter , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBPY3QgMDUsIDIwMTUgYXQgMDE6MjY6MzZQTSArMDEwMCwgVHZydGtvIFVyc3VsaW4g d3JvdGU6Cj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4K PiAKPiBQcmV2ZW50IGxlYWtpbmcgVk1BcyBhbmQgUFBHVFQgVk1zIHdoZW4gb2JqZWN0cyBhcmUg aW1wb3J0ZWQKPiB2aWEgZmxpbmsuCj4gCj4gU2NlbmFyaW8gaXMgdGhhdCBhbnkgVk1BcyBjcmVh dGVkIGJ5IHRoZSBpbXBvcnRlciB3aWxsIGJlIGxlZnQKPiBkYW5nbGluZyBhZnRlciB0aGUgaW1w b3J0ZXIgZXhpdHMsIG9yIGRlc3Ryb3lzIHRoZSBQUEdUVCBjb250ZXh0Cj4gd2l0aCB3aGljaCB0 aGV5IGFyZSBhc3NvY2lhdGVkLgo+IAo+IFRoaXMgaXMgY2F1c2VkIGJ5IG9iamVjdCBkZXN0cnVj dGlvbiBub3QgcnVubmluZyB3aGVuIHRoZQo+IGltcG9ydGVyIGNsb3NlcyB0aGUgYnVmZmVyIG9i amVjdCBoYW5kbGUgZHVlIHRoZSByZWZlcmVuY2UgaGVsZAo+IGJ5IHRoZSBleHBvcnRlci4gVGhp cyBhbHNvIGxlYWtzIHRoZSBWTSBzaW5jZSB0aGUgVk1BIGhhcyBhCj4gcmVmZXJlbmNlIG9uIGl0 Lgo+IAo+IEluIHByYWN0aWNlIHRoZXNlIGxlYWtzIGNhbiBiZSBvYnNlcnZlZCBieSBzdG9wcGlu ZyBhbmQgc3RhcnRpbmcKPiB0aGUgWCBzZXJ2ZXIgb24gYSBrZXJuZWwgd2l0aCBmYmNvbiBjb21w aWxlZCBpbi4gRXZlcnkgdGltZQo+IFggc2VydmVyIGV4aXRzIGFub3RoZXIgVk1BIHdpbGwgYmUg bGVha2VkIGFnYWluc3QgdGhlIGZiY29uJ3MKPiBmcmFtZSBidWZmZXIgb2JqZWN0Lgo+IAo+IEFs c28gb24gc3lzdGVtcyB3aGVyZSBmbGluayBidWZmZXIgc2hhcmluZyBpcyB1c2VkIGV4dGVuc2l2 ZWx5LAo+IGxpa2UgQW5kcm9pZCwgdGhpcyBsZWFrIGhhcyBldmVuIG1vcmUgc2VyaW91cyBjb25z ZXF1ZW5jZXMuCj4gCj4gVGhpcyB2ZXJzaW9uIGlzIHRha2VzIGEgZ2VuZXJhbCBhcHByb2FjaCBm cm9tIHRoZSAgZWFybGllciB3b3JrCj4gYnkgUmFmYWVsIEJhcmJhbGhvIChkcm0vaTkxNTogQ2xl YW4tdXAgUFBHVFQgb24gY29udGV4dAo+IGRlc3RydWN0aW9uKSBhbmQgdHJpZXMgdG8gaW5jb3Jw b3JhdGUgdGhlIHN1YnNlcXVlbnQgZGlzY3Vzc2lvbgo+IGJldHdlZW4gQ2hyaXMgV2lsc29uIGFu ZCBEYW5pZWwgVmV0dGVyLgo+IAo+IHYyOgo+IAo+IFJlbW92ZWQgaW1tZWRpYXRlIGNsZWFudXAg b24gb2JqZWN0IHJldGlyZSAtIGl0IHdhcyBjYXVzaW5nIGEKPiByZWN1cnNpdmUgVk1BIHVuYmlu ZCB2aWEgaTkxNV9nZW1fb2JqZWN0X3dhaXRfcmVuZGVyaW5nLiBBbmQKPiBpdCBpcyBpbiBmYWN0 IG5vdCBldmVuIG5lZWRlZCBzaW5jZSBieSBkZWZpbml0aW9uIGNvbnRleHQKPiBjbGVhbnVwIHdv cmtlciBydW5zIG9ubHkgYWZ0ZXIgdGhlIGxhc3QgY29udGV4dCByZWZlcmVuY2UgaGFzCj4gYmVl biBkcm9wcGVkLCBoZW5jZSBhbGwgVk1BcyBhZ2FpbnN0IHRoZSBWTSBiZWxvbmdpbmcgdG8gdGhl Cj4gY29udGV4dCBhcmUgYWxyZWFkeSBvbiB0aGUgaW5hY3RpdmUgbGlzdC4KPiAKPiB2MzoKPiAK PiBQcmV2aW91cyB2ZXJzaW9uIGNvdWxkIGRlYWRsb2NrIHNpbmNlIFZNQSB1bmJpbmQgd2FpdHMg b24gYW55Cj4gcmVuZGVyaW5nIG9uIGFuIG9iamVjdCB0byBjb21wbGV0ZS4gT2JqZWN0cyBjYW4g YmUgYnVzeSBpbiBhCj4gZGlmZmVyZW50IFZNIHdoaWNoIHdvdWxkIG1lYW4gdGhhdCB0aGUgY2xl YW51cCBsb29wIHdvdWxkIGRvCj4gdGhlIHdhaXQgd2l0aCB0aGUgc3RydWN0IG11dGV4IGhlbGQu Cj4gCj4gVGhpcyBpcyBhbiBldmVuIHNpbXBsZXIgYXBwcm9hY2ggd2hlcmUgd2UganVzdCB1bmJp bmQgVk1Bcwo+IHdpdGhvdXQgd2FpdGluZyBzaW5jZSB3ZSBrbm93IGFsbCBWTUFzIGJlbG9uZ2lu ZyB0byB0aGlzIFZNCj4gYXJlIGlkbGUsIGFuZCB0aGVyZSBpcyBub3RoaW5nIGluIGZsaWdodCwg YXQgdGhlIHBvaW50Cj4gY29udGV4dCBkZXN0cnVjdG9yIHJ1bnMuCj4gCj4gdjQ6Cj4gCj4gRG91 YmxlIHVuZGVyc2NvcmUgcHJlZml4IGZvciBfXzkxNV92bWFfdW5iaW5kX25vX3dhaXQgYW5kIGEK PiBjb21taXQgbWVzc2FnZSB0eXBvIGZpeC4gKE1pY2hlbCBUaGllcnJ5KQo+IAo+IFNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4gVGVzdGNh c2U6IGlndC9nZW1fcHBndHQuYy9mbGluay1hbmQtZXhpdC12bWEtbGVhawo+IFJldmlld2VkLWJ5 OiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwuY29tPgo+IENjOiBEYW5pZWwg VmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+IENjOiBDaHJpcyBXaWxzb24gPGNocmlz QGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogUmFmYWVsIEJhcmJhbGhvIDxyYWZhZWwuYmFyYmFs aG9AaW50ZWwuY29tPgo+IENjOiBNaWNoZWwgVGhpZXJyeSA8bWljaGVsLnRoaWVycnlAaW50ZWwu Y29tPgoKPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgIHwg IDUgKysrKysKPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgIHwgMjAg KysrKysrKysrKysrKysrKy0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29u dGV4dC5jIHwgMjQgKysrKysrKysrKysrKysrKysrKysrKysrCj4gIDMgZmlsZXMgY2hhbmdlZCwg NDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPiBpbmRleCA4MjRlNzI0NTA0NGQuLjU4YWZhMWJiMjk1NyAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kcnYuaAo+IEBAIC0yODQwLDYgKzI4NDAsMTEgQEAgaTkxNV9nZW1fb2JqZWN0X2dndHRf cGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIGludCBpOTE1X3ZtYV9iaW5k KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWws Cj4gIAkJICB1MzIgZmxhZ3MpOwo+ICBpbnQgX19tdXN0X2NoZWNrIGk5MTVfdm1hX3VuYmluZChz dHJ1Y3QgaTkxNV92bWEgKnZtYSk7Cj4gKy8qCj4gKyAqIEJFV0FSRTogRG8gbm90IHVzZSB0aGUg ZnVuY3Rpb24gYmVsb3cgdW5sZXNzIHlvdSBjYW4gX2Fic29sdXRlbHlfCj4gKyAqIF9ndWFyYW50 ZWVfIFZNQSBpbiBxdWVzdGlvbiBpcyBfbm90IGluIHVzZV8gYW55d2hlcmUuCj4gKyAqLwo+ICtp bnQgX19tdXN0X2NoZWNrIF9faTkxNV92bWFfdW5iaW5kX25vX3dhaXQoc3RydWN0IGk5MTVfdm1h ICp2bWEpOwo+ICBpbnQgaTkxNV9nZW1fb2JqZWN0X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqKTsKPiAgdm9pZCBpOTE1X2dlbV9yZWxlYXNlX2FsbF9tbWFwcyhzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICB2b2lkIGk5MTVfZ2VtX3JlbGVhc2Vf bW1hcChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtLmMKPiBpbmRleCBmMGNmYmI5ZWUxMmMuLjUyNjQyYWZmMWRhYiAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+IEBAIC0zMjA4LDcgKzMyMDgsNyBAQCBzdGF0aWMgdm9pZCBpOTE1X2dl bV9vYmplY3RfZmluaXNoX2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJ CQkJCSAgICBvbGRfd3JpdGVfZG9tYWluKTsKPiAgfQo+ICAKPiAtaW50IGk5MTVfdm1hX3VuYmlu ZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiArc3RhdGljIGludCBfX2k5MTVfdm1hX3VuYmluZChz dHJ1Y3QgaTkxNV92bWEgKnZtYSwgYm9vbCB3YWl0KQo+ICB7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqID0gdm1hLT5vYmo7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSBvYmotPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKPiBAQCAtMzIyNyw5ICszMjI3 LDExIEBAIGludCBpOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIAo+ICAJ QlVHX09OKG9iai0+cGFnZXMgPT0gTlVMTCk7Cj4gIAo+IC0JcmV0ID0gaTkxNV9nZW1fb2JqZWN0 X3dhaXRfcmVuZGVyaW5nKG9iaiwgZmFsc2UpOwo+IC0JaWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0 Owo+ICsJaWYgKHdhaXQpIHsKPiArCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJp bmcob2JqLCBmYWxzZSk7Cj4gKwkJaWYgKHJldCkKPiArCQkJcmV0dXJuIHJldDsKPiArCX0KPiAg Cj4gIAlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pICYmCj4gIAkgICAgdm1hLT5nZ3R0X3ZpZXcu dHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpIHsKPiBAQCAtMzI3NCw2ICszMjc2LDE2IEBA IGludCBpOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIAlyZXR1cm4gMDsK PiAgfQo+ICAKPiAraW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAr ewo+ICsJcmV0dXJuIF9faTkxNV92bWFfdW5iaW5kKHZtYSwgdHJ1ZSk7Cj4gK30KPiArCj4gK2lu dCBfX2k5MTVfdm1hX3VuYmluZF9ub193YWl0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICt7Cj4g KwlyZXR1cm4gX19pOTE1X3ZtYV91bmJpbmQodm1hLCBmYWxzZSk7Cj4gK30KPiArCj4gIGludCBp OTE1X2dwdV9pZGxlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gIHsKPiAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IGluZGV4IDc0YWEwYzk5MjliYS4uNjgwYjRjOWY2 YjczIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu Ywo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwo+IEBAIC0x MzMsNiArMTMzLDIzIEBAIHN0YXRpYyBpbnQgZ2V0X2NvbnRleHRfc2l6ZShzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2KQo+ICAJcmV0dXJuIHJldDsKPiAgfQo+ICAKPiArc3RhdGljIHZvaWQgaTkxNV9n ZW1fY29udGV4dF9jbGVhbihzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY3R4KQo+ICt7Cj4gKwlzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBjdHgtPnBwZ3R0Owo+ICsJc3RydWN0IGk5MTVfdm1h ICp2bWEsICpuZXh0Owo+ICsKPiArCWlmIChXQVJOX09OX09OQ0UoIXBwZ3R0KSkKPiArCQlyZXR1 cm47CgpbICAgODAuMjQyODkyXSBbZHJtOmk5MTVfZ2VtX29wZW5dIApbICAgODAuMjUwNDg1XSAt LS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KWyAgIDgwLjI1ODkzOF0gV0FSTklO RzogQ1BVOiAxIFBJRDogMjc3IGF0IC4uL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYzoxNDEgaTkxNV9nZW1fY29udGV4dF9mcmVlKzB4ZWYvMHgyN2IgW2k5MTVdKCkKWyAg IDgwLjI3NTM0NF0gV0FSTl9PTl9PTkNFKCFwcGd0dCkKWyAgIDgwLjI3ODgxNl0gTW9kdWxlcyBs aW5rZWQgaW46IGk5MTUgaTJjX2FsZ29fYml0IGRybV9rbXNfaGVscGVyIHN5c2NvcHlhcmVhIHN5 c2ZpbGxyZWN0IHN5c2ltZ2JsdCBmYl9zeXNfZm9wcyBkcm0gaW50ZWxfZ3R0IGFncGdhcnQgbmV0 Y29uc29sZSBwc21vdXNlIGlUQ09fd2R0IGF0a2JkIGxpYnBzMiBtbWNfYmxvY2sgY29yZXRlbXAg aHdtb24gaW50ZWxfcmFwbCBwdW5pdF9hdG9tX2RlYnVnIGVmaXZhcnMgcGNzcGtyIHI4MTY5IGxw Y19pY2ggbWlpIGkyY19pODAxIHByb2Nlc3Nvcl90aGVybWFsX2RldmljZSBpbnRlbF9zb2NfZHRz X2lvc2YgaW9zZl9tYmkgaTgwNDIgc2VyaW8gc25kX3NvY19ydDU2NzAgc25kX3NvY19ybDYyMzEg c25kX2ludGVsX3NzdF9hY3BpIHNuZF9pbnRlbF9zc3RfY29yZSBzbmRfc29jX3NzdF9tZmxkX3Bs YXRmb3JtIHNuZF9zb2NfY29yZSBpMmNfaGlkIHNuZF9jb21wcmVzcyBzbmRfcGNtIHNuZF90aW1l ciBzbmQgaTJjX2Rlc2lnbndhcmVfcGxhdGZvcm0gaTJjX2Rlc2lnbndhcmVfY29yZSBzb3VuZGNv cmUgc3BpX3B4YTJ4eF9wbGF0Zm9ybSBtb3VzZWRldiBwd21fbHBzc19wbGF0Zm9ybSBwd21fbHBz cyBzZGhjaV9hY3BpIHNkaGNpIG1tY19jb3JlIGV2ZGV2IGludDM0MDNfdGhlcm1hbCBpbnQzNDAw X3RoZXJtYWwgYWNwaV90aGVybWFsX3JlbCBpbnQzNDB4X3RoZXJtYWxfem9uZSBoaWRfZ2VuZXJp YyB1c2JoaWQgaGlkIHNjaF9mcV9jb2RlbCBpcF90YWJsZXMgeF90YWJsZXMgaXB2NiBhdXRvZnM0 ClsgICA4MC4zNzUzMjddIENQVTogMCBQSUQ6IDI3NyBDb21tOiBYb3JnIFRhaW50ZWQ6IEcgICAg IFUgICAgICAgICAgNC4zLjAtcmM0LWJzdysgIzI0OTAKWyAgIDgwLjM4Nzk0Nl0gSGFyZHdhcmUg bmFtZTogSW50ZWwgQ29ycG9yYXRpb24gQ0hFUlJZVklFVyBDMCBQTEFURk9STS9CcmFzd2VsbCBD UkIsIEJJT1MgQlJBUy5YNjQuQjA4NS5SMDAuMTUwOTExMDU1MyAwOS8xMS8yMDE1ClsgICA4MC40 MDU4NDVdICAwMDAwMDAwMDAwMDAwMDAwIGZmZmY4ODAxNzZmYTNiZjAgZmZmZmZmZmY4MTI4ZDU5 ZSBmZmZmODgwMTc2ZmEzYzM4ClsgICA4MC40MTgzNjVdICBmZmZmODgwMTc2ZmEzYzI4IGZmZmZm ZmZmODEwNjgwY2IgZmZmZmZmZmZhMDM3NDM5NSBmZmZmODgwMDdhOGNkNTAwClsgICA4MC40MzEw NTVdICAwMDAwMDAwMDAwMDAwMDAwIDAwMDAwMDAwMDAwMDAwMDAgZmZmZjg4MDE3NmZhM2NmOCBm ZmZmODgwMTc2ZmEzYzkwClsgICA4MC40NDM4MzhdIENhbGwgVHJhY2U6ClsgICA4MC40NTA3MjVd ICBbPGZmZmZmZmZmODEyOGQ1OWU+XSBkdW1wX3N0YWNrKzB4NGUvMHg3OQpbICAgODAuNDYwNjEy XSAgWzxmZmZmZmZmZjgxMDY4MGNiPl0gd2Fybl9zbG93cGF0aF9jb21tb24rMHg5Zi8weGI4Clsg ICA4MC40NzE0ODFdICBbPGZmZmZmZmZmYTAzNzQzOTU+XSA/IGk5MTVfZ2VtX2NvbnRleHRfZnJl ZSsweGVmLzB4MjdiIFtpOTE1XQpbICAgODAuNDgzNDk4XSAgWzxmZmZmZmZmZjgxMDY4MTJkPl0g d2Fybl9zbG93cGF0aF9mbXQrMHg0OS8weDUyClsgICA4MC40OTQwOTBdICBbPGZmZmZmZmZmYTAz NzQ1MjE+XSA/IGk5MTVfZ2VtX2NvbnRleHRfZnJlZSsweDI3Yi8weDI3YiBbaTkxNV0KWyAgIDgw LjUwNjE2NV0gIFs8ZmZmZmZmZmZhMDM3NDM5NT5dIGk5MTVfZ2VtX2NvbnRleHRfZnJlZSsweGVm LzB4MjdiIFtpOTE1XQpbICAgODAuNTE3OTM3XSAgWzxmZmZmZmZmZmEwMzc0NTIxPl0gPyBpOTE1 X2dlbV9jb250ZXh0X2ZyZWUrMHgyN2IvMHgyN2IgW2k5MTVdClsgICA4MC41MzAxMjldICBbPGZm ZmZmZmZmYTAzNzQ1M2I+XSBjb250ZXh0X2lkcl9jbGVhbnVwKzB4MWEvMHgxZSBbaTkxNV0KWyAg IDgwLjU0MTUyMF0gIFs8ZmZmZmZmZmY4MTI4ZTIzNT5dIGlkcl9mb3JfZWFjaCsweGJhLzB4ZTEK WyAgIDgwLjU1MTQ4OV0gIFs8ZmZmZmZmZmY4MTRlMDM5Yz5dID8gX19tdXRleF91bmxvY2tfc2xv d3BhdGgrMHgxMTgvMHgxMzIKWyAgIDgwLjU2MjkyNV0gIFs8ZmZmZmZmZmZhMDM3NGQ4Nz5dIGk5 MTVfZ2VtX2NvbnRleHRfY2xvc2UrMHgyNi8weDMxIFtpOTE1XQpbICAgODAuNTc0NjE0XSAgWzxm ZmZmZmZmZmEwM2Y1MGM0Pl0gaTkxNV9kcml2ZXJfcHJlY2xvc2UrMHgyZC8weDUyIFtpOTE1XQpb ICAgODAuNTg2MDMyXSAgWzxmZmZmZmZmZmEwMmFiNjU3Pl0gZHJtX3JlbGVhc2UrMHhjYS8weDQ5 YiBbZHJtXQpbICAgODAuNTk2NTU4XSAgWzxmZmZmZmZmZjgxMTg1NzdjPl0gX19mcHV0KzB4MTAw LzB4MWIzClsgICA4MC42MDYwNzFdICBbPGZmZmZmZmZmODExODU4NjU+XSBfX19fZnB1dCsweGUv MHgxMApbICAgODAuNjE1NDM1XSAgWzxmZmZmZmZmZjgxMDg0NTQwPl0gdGFza193b3JrX3J1bisw eDZhLzB4OTMKWyAgIDgwLjYyNTQyN10gIFs8ZmZmZmZmZmY4MTAwMTVkNj5dIHByZXBhcmVfZXhp dF90b191c2VybW9kZSsweDllLzB4YWYKWyAgIDgwLjYzNjQ1NV0gIFs8ZmZmZmZmZmY4MTAwMTdk Nj5dIHN5c2NhbGxfcmV0dXJuX3Nsb3dwYXRoKzB4MWVmLzB4MjY0ClsgICA4MC42NDc1NzddICBb PGZmZmZmZmZmODEwODQ0NjI+XSA/IHRhc2tfd29ya19hZGQrMHg0NC8weDUzClsgICA4MC42NTc2 ODNdICBbPGZmZmZmZmZmODExODU4ZTM+XSA/IGZwdXQrMHg3Yy8weDgzClsgICA4MC42NjY5MzVd ICBbPGZmZmZmZmZmODEwYTZlNTI+XSA/IHRyYWNlX2hhcmRpcnFzX29uX2NhbGxlcisweDE2LzB4 MTk2ClsgICA4MC42NzgyMTNdICBbPGZmZmZmZmZmODEwMDBjODc+XSA/IHRyYWNlX2hhcmRpcnFz X29uX3RodW5rKzB4MTcvMHgxOQpbICAgODAuNjg5MjczXSAgWzxmZmZmZmZmZjgxNGUyYWIxPl0g aW50X3JldF9mcm9tX3N5c19jYWxsKzB4MjUvMHg5ZgoKPiArCj4gKwlXQVJOX09OKCFsaXN0X2Vt cHR5KCZwcGd0dC0+YmFzZS5hY3RpdmVfbGlzdCkpOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50 cnlfc2FmZSh2bWEsIG5leHQsICZwcGd0dC0+YmFzZS5pbmFjdGl2ZV9saXN0LAo+ICsJCQkJIG1t X2xpc3QpIHsKPiArCQlpZiAoV0FSTl9PTihfX2k5MTVfdm1hX3VuYmluZF9ub193YWl0KHZtYSkp KQo+ICsJCQlicmVhazsKPiArCX0KPiArfQo+ICsKPiAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2Zy ZWUoc3RydWN0IGtyZWYgKmN0eF9yZWYpCj4gIHsKPiAgCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpj dHggPSBjb250YWluZXJfb2YoY3R4X3JlZiwgdHlwZW9mKCpjdHgpLCByZWYpOwo+IEBAIC0xNDIs NiArMTU5LDEzIEBAIHZvaWQgaTkxNV9nZW1fY29udGV4dF9mcmVlKHN0cnVjdCBrcmVmICpjdHhf cmVmKQo+ICAJaWYgKGk5MTUuZW5hYmxlX2V4ZWNsaXN0cykKPiAgCQlpbnRlbF9scl9jb250ZXh0 X2ZyZWUoY3R4KTsKPiAgCj4gKwkvKgo+ICsJICogVGhpcyBjb250ZXh0IGlzIGdvaW5nIGF3YXkg YW5kIHdlIG5lZWQgdG8gcmVtb3ZlIGFsbCBWTUFzIHN0aWxsCj4gKwkgKiBhcm91bmQuIFRoaXMg aXMgdG8gaGFuZGxlIGltcG9ydGVkIHNoYXJlZCBvYmplY3RzIGZvciB3aGljaAo+ICsJICogZGVz dHJ1Y3RvciBkaWQgbm90IHJ1biB3aGVuIHRoZWlyIGhhbmRsZXMgd2VyZSBjbG9zZWQuCj4gKwkg Ki8KPiArCWk5MTVfZ2VtX2NvbnRleHRfY2xlYW4oY3R4KTsKPiArCj4gIAlpOTE1X3BwZ3R0X3B1 dChjdHgtPnBwZ3R0KTsKPiAgCj4gIAlpZiAoY3R4LT5sZWdhY3lfaHdfY3R4LnJjc19zdGF0ZSkK PiAtLSAKPiAxLjkuMQo+IAo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCj4gSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVl ZGVza3RvcC5vcmcKPiBodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4CgotLSAKVmlsbGUgU3lyasOkbMOkCkludGVsIE9UQwpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0 CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=