From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v4 01/38] drm/i915: Use the MRU stack search after evicting Date: Tue, 27 Dec 2016 12:30:29 +0100 Message-ID: <20161227113029.GF19172@dvetter-linux.ger.corp.intel.com> References: <20161222083641.2691-1-chris@chris-wilson.co.uk> <20161222083641.2691-2-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wj0-x244.google.com (mail-wj0-x244.google.com [IPv6:2a00:1450:400c:c01::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 62B75899B0 for ; Tue, 27 Dec 2016 11:30:34 +0000 (UTC) Received: by mail-wj0-x244.google.com with SMTP id j10so51225500wjb.3 for ; Tue, 27 Dec 2016 03:30:34 -0800 (PST) Content-Disposition: inline In-Reply-To: <20161222083641.2691-2-chris@chris-wilson.co.uk> 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: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVGh1LCBEZWMgMjIsIDIwMTYgYXQgMDg6MzY6MDRBTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFdoZW4gd2UgZXZpY3QgZnJvbSB0aGUgR1RUIHRvIG1ha2Ugcm9vbSBmb3IgYW4gb2Jq ZWN0LCB0aGUgaG9sZSB3ZQo+IGNyZWF0ZSBpcyBwdXQgb250byB0aGUgTVJVIHN0YWNrIGluc2lk ZSB0aGUgZHJtX21tIHJhbmdlIG1hbmFnZXIuIE9uIHRoZQo+IG5leHQgc2VhcmNoIHBhc3MsIHdl IGNhbiBzcGVlZCB1cCBhIFBJTl9ISUdIIGFsbG9jYXRpb24gYnkgcmVmZXJlbmNpbmcKPiB0aGF0 IHN0YWNrIGZvciB0aGUgbmV3IGhvbGUuCj4gCj4gdjI6IFB1bGwgdG9nZXRoZXIgdGhlIDMgaWRl bnRpY2FsIGltcGxlbWVudHMgKGFoZW0sIGEgY291cGxlIHdlcmUKPiBvdXRkYXRlZCkgaW50byBh IGNvbW1vbiByb3V0aW5lIGZvciBhbGxvY2F0aW5nIGEgbm9kZSBhbmQgZXZpY3RpbmcgYXMKPiBu ZWNlc3NhcnkuCj4gCj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13 aWxzb24uY28udWs+Cj4gUmV2aWV3ZWQtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRp bmVuQGxpbnV4LmludGVsLmNvbT4KClNpbmNlIGl0IGRvZXNuJ3QgYXBwbHkgZGlyZWN0bHkgdG8g ZHJtLW1pc2MgSSdtIGxlYXZpbmcgdGhpcyBvbmUgb3V0IGZvcgpub3cuIEkgZ3Vlc3MgYmVzdCB0 byBtZXJnZSB0aHJvdWdoIGRybS1pbnRlbD8KLURhbmllbAoKPiAtLS0KPiAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvZ3Z0L2FwZXJ0dXJlX2dtLmMgfCAzMyArKysrKy0tLS0tLS0tLS0tCj4gIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgIHwgNzIgKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCAg ICB8ICA1ICsrKwo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jICAgICAgICB8IDQw ICsrLS0tLS0tLS0tLS0tLS0tLS0KPiAgNCBmaWxlcyBjaGFuZ2VkLCA3MCBpbnNlcnRpb25zKCsp LCA4MCBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv Z3Z0L2FwZXJ0dXJlX2dtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9ndnQvYXBlcnR1cmVfZ20u Ywo+IGluZGV4IDdkMzNiNjA3YmM4OS4uMWJiN2E1YjgwZDQ3IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2d2dC9hcGVydHVyZV9nbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvZ3Z0L2FwZXJ0dXJlX2dtLmMKPiBAQCAtNDgsNDcgKzQ4LDM0IEBAIHN0YXRpYyBpbnQg YWxsb2NfZ20oc3RydWN0IGludGVsX3ZncHUgKnZncHUsIGJvb2wgaGlnaF9nbSkKPiAgewo+ICAJ c3RydWN0IGludGVsX2d2dCAqZ3Z0ID0gdmdwdS0+Z3Z0Owo+ICAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZ3Z0LT5kZXZfcHJpdjsKPiAtCXUzMiBhbGxvY19mbGFnLCBzZWFy Y2hfZmxhZzsKPiArCXVuc2lnbmVkIGludCBmbGFnczsKPiAgCXU2NCBzdGFydCwgZW5kLCBzaXpl Owo+ICAJc3RydWN0IGRybV9tbV9ub2RlICpub2RlOwo+IC0JaW50IHJldHJpZWQgPSAwOwo+ICAJ aW50IHJldDsKPiAgCj4gIAlpZiAoaGlnaF9nbSkgewo+IC0JCXNlYXJjaF9mbGFnID0gRFJNX01N X1NFQVJDSF9CRUxPVzsKPiAtCQlhbGxvY19mbGFnID0gRFJNX01NX0NSRUFURV9UT1A7Cj4gIAkJ bm9kZSA9ICZ2Z3B1LT5nbS5oaWdoX2dtX25vZGU7Cj4gIAkJc2l6ZSA9IHZncHVfaGlkZGVuX3N6 KHZncHUpOwo+ICAJCXN0YXJ0ID0gZ3Z0X2hpZGRlbl9nbWFkcl9iYXNlKGd2dCk7Cj4gIAkJZW5k ID0gZ3Z0X2hpZGRlbl9nbWFkcl9lbmQoZ3Z0KTsKPiArCQlmbGFncyA9IFBJTl9ISUdIOwo+ICAJ fSBlbHNlIHsKPiAtCQlzZWFyY2hfZmxhZyA9IERSTV9NTV9TRUFSQ0hfREVGQVVMVDsKPiAtCQlh bGxvY19mbGFnID0gRFJNX01NX0NSRUFURV9ERUZBVUxUOwo+ICAJCW5vZGUgPSAmdmdwdS0+Z20u bG93X2dtX25vZGU7Cj4gIAkJc2l6ZSA9IHZncHVfYXBlcnR1cmVfc3oodmdwdSk7Cj4gIAkJc3Rh cnQgPSBndnRfYXBlcnR1cmVfZ21hZHJfYmFzZShndnQpOwo+ICAJCWVuZCA9IGd2dF9hcGVydHVy ZV9nbWFkcl9lbmQoZ3Z0KTsKPiArCQlmbGFncyA9IFBJTl9NQVBQQUJMRTsKPiAgCX0KPiAgCj4g IAltdXRleF9sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gLXNlYXJjaF9hZ2Fp bjoKPiAtCXJldCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCZkZXZfcHJp di0+Z2d0dC5iYXNlLm1tLAo+IC0JCQkJCQkgIG5vZGUsIHNpemUsIDQwOTYsCj4gLQkJCQkJCSAg STkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiAtCQkJCQkJICBzdGFydCwgZW5kLCBzZWFyY2hfZmxh ZywKPiAtCQkJCQkJICBhbGxvY19mbGFnKTsKPiAtCWlmIChyZXQpIHsKPiAtCQlyZXQgPSBpOTE1 X2dlbV9ldmljdF9zb21ldGhpbmcoJmRldl9wcml2LT5nZ3R0LmJhc2UsCj4gLQkJCQkJICAgICAg IHNpemUsIDQwOTYsCj4gLQkJCQkJICAgICAgIEk5MTVfQ09MT1JfVU5FVklDVEFCTEUsCj4gLQkJ CQkJICAgICAgIHN0YXJ0LCBlbmQsIDApOwo+IC0JCWlmIChyZXQgPT0gMCAmJiArK3JldHJpZWQg PCAzKQo+IC0JCQlnb3RvIHNlYXJjaF9hZ2FpbjsKPiAtCj4gLQkJZ3Z0X2VycigiZmFpbCB0byBh bGxvYyAlcyBnbSBzcGFjZSBmcm9tIGhvc3QsIHJldHJpZWQgJWRcbiIsCj4gLQkJCQloaWdoX2dt ID8gImhpZ2giIDogImxvdyIsIHJldHJpZWQpOwo+IC0JfQo+ICsJcmV0ID0gaTkxNV9nZW1fZ3R0 X2luc2VydCgmZGV2X3ByaXYtPmdndHQuYmFzZSwgbm9kZSwKPiArCQkJCSAgc2l6ZSwgNDA5Niwg STkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiArCQkJCSAgc3RhcnQsIGVuZCwgZmxhZ3MpOwo+ICAJ bXV0ZXhfdW5sb2NrKCZkZXZfcHJpdi0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAocmV0KQo+ ICsJCWd2dF9lcnIoImZhaWwgdG8gYWxsb2MgJXMgZ20gc3BhY2UgZnJvbSBob3N0XG4iLAo+ICsJ CQloaWdoX2dtID8gImhpZ2giIDogImxvdyIpOwo+ICsKPiAgCXJldHVybiByZXQ7Cj4gIH0KPiAg Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRleCA2YWY5MzExZjcyZjUuLmM4 ZjE2NzU4NTJhNyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gQEAgLTIw NDQsNyArMjA0NCw2IEBAIHN0YXRpYyBpbnQgZ2VuNl9wcGd0dF9hbGxvY2F0ZV9wYWdlX2RpcmVj dG9yaWVzKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKPiAgCXN0cnVjdCBpOTE1X2FkZHJl c3Nfc3BhY2UgKnZtID0gJnBwZ3R0LT5iYXNlOwo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gcHBndHQtPmJhc2UuaTkxNTsKPiAgCXN0cnVjdCBpOTE1X2dndHQgKmdndHQg PSAmZGV2X3ByaXYtPmdndHQ7Cj4gLQlib29sIHJldHJpZWQgPSBmYWxzZTsKPiAgCWludCByZXQ7 Cj4gIAo+ICAJLyogUFBHVFQgUERFcyByZXNpZGUgaW4gdGhlIEdHVFQgYW5kIGNvbnNpc3RzIG9m IDUxMiBlbnRyaWVzLiBUaGUKPiBAQCAtMjA1NywyOSArMjA1NiwxNCBAQCBzdGF0aWMgaW50IGdl bjZfcHBndHRfYWxsb2NhdGVfcGFnZV9kaXJlY3RvcmllcyhzdHJ1Y3QgaTkxNV9od19wcGd0dCAq cHBndHQpCj4gIAlpZiAocmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+IC1hbGxvYzoKPiAtCXJl dCA9IGRybV9tbV9pbnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCZnZ3R0LT5iYXNlLm1tLCAm cHBndHQtPm5vZGUsCj4gLQkJCQkJCSAgR0VONl9QRF9TSVpFLCBHRU42X1BEX0FMSUdOLAo+IC0J CQkJCQkgIEk5MTVfQ09MT1JfVU5FVklDVEFCTEUsCj4gLQkJCQkJCSAgMCwgZ2d0dC0+YmFzZS50 b3RhbCwKPiAtCQkJCQkJICBEUk1fTU1fVE9QRE9XTik7Cj4gLQlpZiAocmV0ID09IC1FTk9TUEMg JiYgIXJldHJpZWQpIHsKPiAtCQlyZXQgPSBpOTE1X2dlbV9ldmljdF9zb21ldGhpbmcoJmdndHQt PmJhc2UsCj4gLQkJCQkJICAgICAgIEdFTjZfUERfU0laRSwgR0VONl9QRF9BTElHTiwKPiAtCQkJ CQkgICAgICAgSTkxNV9DT0xPUl9VTkVWSUNUQUJMRSwKPiAtCQkJCQkgICAgICAgMCwgZ2d0dC0+ YmFzZS50b3RhbCwKPiAtCQkJCQkgICAgICAgMCk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJZ290byBl cnJfb3V0Owo+IC0KPiAtCQlyZXRyaWVkID0gdHJ1ZTsKPiAtCQlnb3RvIGFsbG9jOwo+IC0JfQo+ IC0KPiArCXJldCA9IGk5MTVfZ2VtX2d0dF9pbnNlcnQoJmdndHQtPmJhc2UsICZwcGd0dC0+bm9k ZSwKPiArCQkJCSAgR0VONl9QRF9TSVpFLCBHRU42X1BEX0FMSUdOLAo+ICsJCQkJICBJOTE1X0NP TE9SX1VORVZJQ1RBQkxFLAo+ICsJCQkJICAwLCBnZ3R0LT5iYXNlLnRvdGFsLAo+ICsJCQkJICBQ SU5fSElHSCk7Cj4gIAlpZiAocmV0KQo+ICAJCWdvdG8gZXJyX291dDsKPiAgCj4gLQo+ICAJaWYg KHBwZ3R0LT5ub2RlLnN0YXJ0IDwgZ2d0dC0+bWFwcGFibGVfZW5kKQo+ICAJCURSTV9ERUJVRygi Rm9yY2VkIHRvIHVzZSBhcGVydHVyZSBmb3IgUERFc1xuIik7Cj4gIAo+IEBAIC0zNTUzLDMgKzM1 MzcsNDkgQEAgaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4g IAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+ICtpbnQgaTkxNV9nZW1fZ3R0X2luc2VydChzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkJc3RydWN0IGRybV9tbV9ub2RlICpub2RlLAo+ ICsJCQl1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdW5zaWduZWQgbG9uZyBjb2xvciwKPiArCQkJ dTY0IHN0YXJ0LCB1NjQgZW5kLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCj4gK3sKPiArCXUzMiBzZWFy Y2hfZmxhZywgYWxsb2NfZmxhZzsKPiArCWludCBlcnI7Cj4gKwo+ICsJbG9ja2RlcF9hc3NlcnRf aGVsZCgmdm0tPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsKPiArCWlmIChmbGFncyAmIFBJ Tl9ISUdIKSB7Cj4gKwkJc2VhcmNoX2ZsYWcgPSBEUk1fTU1fU0VBUkNIX0JFTE9XOwo+ICsJCWFs bG9jX2ZsYWcgPSBEUk1fTU1fQ1JFQVRFX1RPUDsKPiArCX0gZWxzZSB7Cj4gKwkJc2VhcmNoX2Zs YWcgPSBEUk1fTU1fU0VBUkNIX0RFRkFVTFQ7Cj4gKwkJYWxsb2NfZmxhZyA9IERSTV9NTV9DUkVB VEVfREVGQVVMVDsKPiArCX0KPiArCj4gKwkvKiBXZSBvbmx5IGFsbG9jYXRlIGluIFBBR0VfU0la RS9HVFRfUEFHRV9TSVpFICg0MDk2KSBjaHVua3MsCj4gKwkgKiBzbyB3ZSBrbm93IHRoYXQgd2Ug YWx3YXlzIGhhdmUgYSBtaW5pbXVtIGFsaWdubWVudCBvZiA0MDk2Lgo+ICsJICogVGhlIGRybV9t bSByYW5nZSBtYW5hZ2VyIGlzIG9wdGltaXNlZCB0byByZXR1cm4gcmVzdWx0cwo+ICsJICogd2l0 aCB6ZXJvIGFsaWdubWVudCwgc28gd2hlcmUgcG9zc2libGUgdXNlIHRoZSBvcHRpbWFsCj4gKwkg KiBwYXRoLgo+ICsJICovCj4gKwlHRU1fQlVHX09OKHNpemUgJiA0MDk1KTsKPiArCWlmIChhbGln bm1lbnQgPD0gNDA5NikKPiArCQlhbGlnbm1lbnQgPSAwOwo+ICsKPiArCWVyciA9IGRybV9tbV9p bnNlcnRfbm9kZV9pbl9yYW5nZV9nZW5lcmljKCZ2bS0+bW0sIG5vZGUsCj4gKwkJCQkJCSAgc2l6 ZSwgYWxpZ25tZW50LCBjb2xvciwKPiArCQkJCQkJICBzdGFydCwgZW5kLAo+ICsJCQkJCQkgIHNl YXJjaF9mbGFnLCBhbGxvY19mbGFnKTsKPiArCWlmIChlcnIgIT0gLUVOT1NQQykKPiArCQlyZXR1 cm4gZXJyOwo+ICsKPiArCWVyciA9IGk5MTVfZ2VtX2V2aWN0X3NvbWV0aGluZyh2bSwgc2l6ZSwg YWxpZ25tZW50LCBjb2xvciwKPiArCQkJCSAgICAgICBzdGFydCwgZW5kLCBmbGFncyk7Cj4gKwlp ZiAoZXJyKQo+ICsJCXJldHVybiBlcnI7Cj4gKwo+ICsJc2VhcmNoX2ZsYWcgPSBEUk1fTU1fU0VB UkNIX0RFRkFVTFQ7Cj4gKwlyZXR1cm4gZHJtX21tX2luc2VydF9ub2RlX2luX3JhbmdlX2dlbmVy aWMoJnZtLT5tbSwgbm9kZSwKPiArCQkJCQkJICAgc2l6ZSwgYWxpZ25tZW50LCBjb2xvciwKPiAr CQkJCQkJICAgc3RhcnQsIGVuZCwKPiArCQkJCQkJICAgc2VhcmNoX2ZsYWcsIGFsbG9jX2ZsYWcp Owo+ICt9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5o IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCAwMDU1Yjg1Njdh NDMuLjRjN2JlZjA3ZTM4YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2dlbV9ndHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4g QEAgLTUyOCw2ICs1MjgsMTEgQEAgaW50IF9fbXVzdF9jaGVjayBpOTE1X2dlbV9ndHRfcHJlcGFy ZV9wYWdlcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICB2b2lkIGk5MTVfZ2Vt X2d0dF9maW5pc2hfcGFnZXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCQkJ ICAgICAgIHN0cnVjdCBzZ190YWJsZSAqcGFnZXMpOwo+ICAKPiAraW50IGk5MTVfZ2VtX2d0dF9p bnNlcnQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJCXN0cnVjdCBkcm1fbW1f bm9kZSAqbm9kZSwKPiArCQkJdTY0IHNpemUsIHU2NCBhbGlnbm1lbnQsIHVuc2lnbmVkIGxvbmcg Y29sb3IsCj4gKwkJCXU2NCBzdGFydCwgdTY0IGVuZCwgdW5zaWduZWQgaW50IGZsYWdzKTsKPiAr Cj4gIC8qIEZsYWdzIHVzZWQgYnkgcGluL2JpbmQmZnJpZW5kcy4gKi8KPiAgI2RlZmluZSBQSU5f Tk9OQkxPQ0sJCUJJVCgwKQo+ICAjZGVmaW5lIFBJTl9NQVBQQUJMRQkJQklUKDEpCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X3ZtYS5jCj4gaW5kZXggZmQ3NWQ1NzA0Mjg3Li42MDgwMDhkMmQ5OTkgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfdm1hLmMKPiBAQCAtNDE1LDQzICs0MTUsMTEgQEAgaTkxNV92bWFf aW5zZXJ0KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1NjQgc2l6ZSwgdTY0IGFsaWdubWVudCwgdTY0 IGZsYWdzKQo+ICAJCQkJZ290byBlcnJfdW5waW47Cj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAtCQl1 MzIgc2VhcmNoX2ZsYWcsIGFsbG9jX2ZsYWc7Cj4gLQo+IC0JCWlmIChmbGFncyAmIFBJTl9ISUdI KSB7Cj4gLQkJCXNlYXJjaF9mbGFnID0gRFJNX01NX1NFQVJDSF9CRUxPVzsKPiAtCQkJYWxsb2Nf ZmxhZyA9IERSTV9NTV9DUkVBVEVfVE9QOwo+IC0JCX0gZWxzZSB7Cj4gLQkJCXNlYXJjaF9mbGFn ID0gRFJNX01NX1NFQVJDSF9ERUZBVUxUOwo+IC0JCQlhbGxvY19mbGFnID0gRFJNX01NX0NSRUFU RV9ERUZBVUxUOwo+IC0JCX0KPiAtCj4gLQkJLyogV2Ugb25seSBhbGxvY2F0ZSBpbiBQQUdFX1NJ WkUvR1RUX1BBR0VfU0laRSAoNDA5NikgY2h1bmtzLAo+IC0JCSAqIHNvIHdlIGtub3cgdGhhdCB3 ZSBhbHdheXMgaGF2ZSBhIG1pbmltdW0gYWxpZ25tZW50IG9mIDQwOTYuCj4gLQkJICogVGhlIGRy bV9tbSByYW5nZSBtYW5hZ2VyIGlzIG9wdGltaXNlZCB0byByZXR1cm4gcmVzdWx0cwo+IC0JCSAq IHdpdGggemVybyBhbGlnbm1lbnQsIHNvIHdoZXJlIHBvc3NpYmxlIHVzZSB0aGUgb3B0aW1hbAo+ IC0JCSAqIHBhdGguCj4gLQkJICovCj4gLQkJaWYgKGFsaWdubWVudCA8PSA0MDk2KQo+IC0JCQlh bGlnbm1lbnQgPSAwOwo+IC0KPiAtc2VhcmNoX2ZyZWU6Cj4gLQkJcmV0ID0gZHJtX21tX2luc2Vy dF9ub2RlX2luX3JhbmdlX2dlbmVyaWMoJnZtYS0+dm0tPm1tLAo+IC0JCQkJCQkJICAmdm1hLT5u b2RlLAo+IC0JCQkJCQkJICBzaXplLCBhbGlnbm1lbnQsCj4gLQkJCQkJCQkgIG9iai0+Y2FjaGVf bGV2ZWwsCj4gLQkJCQkJCQkgIHN0YXJ0LCBlbmQsCj4gLQkJCQkJCQkgIHNlYXJjaF9mbGFnLAo+ IC0JCQkJCQkJICBhbGxvY19mbGFnKTsKPiAtCQlpZiAocmV0KSB7Cj4gLQkJCXJldCA9IGk5MTVf Z2VtX2V2aWN0X3NvbWV0aGluZyh2bWEtPnZtLCBzaXplLCBhbGlnbm1lbnQsCj4gLQkJCQkJCSAg ICAgICBvYmotPmNhY2hlX2xldmVsLAo+IC0JCQkJCQkgICAgICAgc3RhcnQsIGVuZCwKPiAtCQkJ CQkJICAgICAgIGZsYWdzKTsKPiAtCQkJaWYgKHJldCA9PSAwKQo+IC0JCQkJZ290byBzZWFyY2hf ZnJlZTsKPiAtCj4gKwkJcmV0ID0gaTkxNV9nZW1fZ3R0X2luc2VydCh2bWEtPnZtLCAmdm1hLT5u b2RlLAo+ICsJCQkJCSAgc2l6ZSwgYWxpZ25tZW50LCBvYmotPmNhY2hlX2xldmVsLAo+ICsJCQkJ CSAgc3RhcnQsIGVuZCwgZmxhZ3MpOwo+ICsJCWlmIChyZXQpCj4gIAkJCWdvdG8gZXJyX3VucGlu Owo+IC0JCX0KPiAgCj4gIAkJR0VNX0JVR19PTih2bWEtPm5vZGUuc3RhcnQgPCBzdGFydCk7Cj4g IAkJR0VNX0JVR19PTih2bWEtPm5vZGUuc3RhcnQgKyB2bWEtPm5vZGUuc2l6ZSA+IGVuZCk7Cj4g LS0gCj4gMi4xMS4wCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVk ZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGlu Zm8vaW50ZWwtZ2Z4CgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwg Q29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhA bGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxt YW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==