From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 05/11] drm/i915: Reduce the pointer dance of i915_is_ggtt() Date: Thu, 17 Dec 2015 11:31:36 +0000 Message-ID: <56729D18.8030109@linux.intel.com> References: <1450093012-14955-1-git-send-email-chris@chris-wilson.co.uk> <1450093012-14955-5-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id C27166E98D for ; Thu, 17 Dec 2015 03:31:37 -0800 (PST) In-Reply-To: <1450093012-14955-5-git-send-email-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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gMTQvMTIvMTUgMTE6MzYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBUaGUgbXVsdGlw bGUgbGV2ZWxzIG9mIGluZGlyZWN0IGRvIG5vdGhpbmcgYnV0IGhpbmRlciB0aGUgY29tcGlsZXIg YW5kCj4gdGhlIHBvaW50ZXIgY2hhc2luZyB0dXJucyB0byBiZSBxdWl0ZSBwYWluZnVsIGJ1dCBw YWlubGVzcyB0byBmaXguCj4KPiBTaWduZWQtb2ZmLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KPiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jICAgICAgICB8IDEzICsrKysrKy0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICA3IC0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMgICAgICAgICAgICB8IDE4ICsrKysrKystLS0tLS0tLS0tLQo+ICAgZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDUgKystLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgICB8IDEyICsrKysrLS0tLS0t LQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgIHwgIDUgKysr KysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdHJhY2UuaCAgICAgICAgICB8IDI3ICsr KysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLQo+ICAgNyBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRp b25zKCspLCA1NCBkZWxldGlvbnMoLSkKClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZy dGtvLnVyc3VsaW5AaW50ZWwuY29tPgoKUmVnYXJkcywKClR2cnRrbwoKCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCBjMDRiYTk5ODFlOWIuLjllYzEzM2Y1YWYwMCAxMDA2 NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTExOCw3ICsxMTgsNyBAQCBz dGF0aWMgdTY0IGk5MTVfZ2VtX29ial90b3RhbF9nZ3R0X3NpemUoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaikKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPgo+ICAgCWxpc3RfZm9y X2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgb2JqX2xpbmspIHsKPiAtCQlpZiAoaTkx NV9pc19nZ3R0KHZtYS0+dm0pICYmIGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkK PiArCQlpZiAodm1hLT5pc19nZ3R0ICYmIGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2Rl KSkKPiAgIAkJCXNpemUgKz0gdm1hLT5ub2RlLnNpemU7Cj4gICAJfQo+Cj4gQEAgLTE2NSwxMiAr MTY1LDExIEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmopCj4gICAJCXNlcV9wcmludGYobSwgIiAoZmVuY2U6ICVkKSIsIG9i ai0+ZmVuY2VfcmVnKTsKPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xp c3QsIG9ial9saW5rKSB7Cj4gICAJCXNlcV9wcmludGYobSwgIiAoJXNndHQgb2Zmc2V0OiAlMDhs bHgsIHNpemU6ICUwOGxseCIsCj4gLQkJCSAgIGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSA/ICJnIiA6 ICJwcCIsCj4gKwkJCSAgIHZtYS0+aXNfZ2d0dCA/ICJnIiA6ICJwcCIsCj4gICAJCQkgICB2bWEt Pm5vZGUuc3RhcnQsIHZtYS0+bm9kZS5zaXplKTsKPiAtCQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+ dm0pKQo+IC0JCQlzZXFfcHJpbnRmKG0sICIsIHR5cGU6ICV1KSIsIHZtYS0+Z2d0dF92aWV3LnR5 cGUpOwo+IC0JCWVsc2UKPiAtCQkJc2VxX3B1dHMobSwgIikiKTsKPiArCQlpZiAodm1hLT5pc19n Z3R0KQo+ICsJCQlzZXFfcHJpbnRmKG0sICIsIHR5cGU6ICV1Iiwgdm1hLT5nZ3R0X3ZpZXcudHlw ZSk7Cj4gKwkJc2VxX3B1dHMobSwgIikiKTsKPiAgIAl9Cj4gICAJaWYgKG9iai0+c3RvbGVuKQo+ ICAgCQlzZXFfcHJpbnRmKG0sICIgKHN0b2xlbjogJTA4bGx4KSIsIG9iai0+c3RvbGVuLT5zdGFy dCk7Cj4gQEAgLTM0Niw3ICszNDUsNyBAQCBzdGF0aWMgaW50IHBlcl9maWxlX3N0YXRzKGludCBp ZCwgdm9pZCAqcHRyLCB2b2lkICpkYXRhKQo+Cj4gICAJCWJvdW5kKys7Cj4KPiAtCQlpZiAoaTkx NV9pc19nZ3R0KHZtYS0+dm0pKSB7Cj4gKwkJaWYgKHZtYS0+aXNfZ2d0dCkgewo+ICAgCQkJc3Rh dHMtPmdsb2JhbCArPSB2bWEtPm5vZGUuc2l6ZTsKPiAgIAkJfSBlbHNlIHsKPiAgIAkJCXN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGRi Y2I3NjU5YmEyYi4uNmNlMTYzYTY4MWYyIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4g QEAgLTI5MTYsMTggKzI5MTYsMTEgQEAgYm9vbCBpOTE1X2dlbV9vYmpfaXNfcGlubmVkKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+ICAgLyogU29tZSBHR1RUIFZNIGhlbHBlcnMg Ki8KPiAgICNkZWZpbmUgaTkxNV9vYmpfdG9fZ2d0dChvYmopIFwKPiAgIAkoJigoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKikob2JqKS0+YmFzZS5kZXYtPmRldl9wcml2YXRlKS0+Z3R0LmJhc2Up Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2lzX2dndHQoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0pCj4gLXsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPQo+IC0J CSYoKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICopKHZtKS0+ZGV2LT5kZXZfcHJpdmF0ZSktPmd0 dC5iYXNlOwo+IC0JcmV0dXJuIHZtID09IGdndHQ7Cj4gLX0KPgo+ICAgc3RhdGljIGlubGluZSBz dHJ1Y3QgaTkxNV9od19wcGd0dCAqCj4gICBpOTE1X3ZtX3RvX3BwZ3R0KHN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKQo+ICAgewo+ICAgCVdBUk5fT04oaTkxNV9pc19nZ3R0KHZtKSk7Cj4g LQo+ICAgCXJldHVybiBjb250YWluZXJfb2Yodm0sIHN0cnVjdCBpOTE1X2h3X3BwZ3R0LCBiYXNl KTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+IGluZGV4IGU2YWNlNzQ2MTZiMi4u MTQ0ZTkyZGY4MTM3IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gQEAgLTI2MDMsOCAr MjYwMyw3IEBAIHN0YXRpYyBpbnQgX19pOTE1X3ZtYV91bmJpbmQoc3RydWN0IGk5MTVfdm1hICp2 bWEsIGJvb2wgd2FpdCkKPiAgIAkJCXJldHVybiByZXQ7Cj4gICAJfQo+Cj4gLQlpZiAoaTkxNV9p c19nZ3R0KHZtYS0+dm0pICYmCj4gLQkgICAgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dH VFRfVklFV19OT1JNQUwpIHsKPiArCWlmICh2bWEtPmlzX2dndHQgJiYgdm1hLT5nZ3R0X3ZpZXcu dHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpIHsKPiAgIAkJaTkxNV9nZW1fb2JqZWN0X2Zp bmlzaF9ndHQob2JqKTsKPgo+ICAgCQkvKiByZWxlYXNlIHRoZSBmZW5jZSByZWcgX2FmdGVyXyBm bHVzaGluZyAqLwo+IEBAIC0yNjE5LDcgKzI2MTgsNyBAQCBzdGF0aWMgaW50IF9faTkxNV92bWFf dW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4gICAJdm1hLT5ib3VuZCA9 IDA7Cj4KPiAgIAlsaXN0X2RlbF9pbml0KCZ2bWEtPnZtX2xpbmspOwo+IC0JaWYgKGk5MTVfaXNf Z2d0dCh2bWEtPnZtKSkgewo+ICsJaWYgKHZtYS0+aXNfZ2d0dCkgewo+ICAgCQlpZiAodm1hLT5n Z3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpIHsKPiAgIAkJCW9iai0+bWFw X2FuZF9mZW5jZWFibGUgPSBmYWxzZTsKPiAgIAkJfSBlbHNlIGlmICh2bWEtPmdndHRfdmlldy5w YWdlcykgewo+IEBAIC0zODg5LDE3ICszODg4LDE0IEBAIHN0cnVjdCBpOTE1X3ZtYSAqaTkxNV9n ZW1fb2JqX3RvX2dndHRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+Cj4g ICB2b2lkIGk5MTVfZ2VtX3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAgewo+ IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0gPSBOVUxMOwo+ICAgCVdBUk5fT04odm1h LT5ub2RlLmFsbG9jYXRlZCk7Cj4KPiAgIAkvKiBLZWVwIHRoZSB2bWEgYXMgYSBwbGFjZWhvbGRl ciBpbiB0aGUgZXhlY2J1ZmZlciByZXNlcnZhdGlvbiBsaXN0cyAqLwo+ICAgCWlmICghbGlzdF9l bXB0eSgmdm1hLT5leGVjX2xpc3QpKQo+ICAgCQlyZXR1cm47Cj4KPiAtCXZtID0gdm1hLT52bTsK PiAtCj4gLQlpZiAoIWk5MTVfaXNfZ2d0dCh2bSkpCj4gLQkJaTkxNV9wcGd0dF9wdXQoaTkxNV92 bV90b19wcGd0dCh2bSkpOwo+ICsJaWYgKCF2bWEtPmlzX2dndHQpCj4gKwkJaTkxNV9wcGd0dF9w dXQoaTkxNV92bV90b19wcGd0dCh2bWEtPnZtKSk7Cj4KPiAgIAlsaXN0X2RlbCgmdm1hLT5vYmpf bGluayk7Cj4KPiBAQCAtNDQyNSw3ICs0NDIxLDcgQEAgdTY0IGk5MTVfZ2VtX29ial9vZmZzZXQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gICAJV0FSTl9PTih2bSA9PSAmZGV2X3By aXYtPm1tLmFsaWFzaW5nX3BwZ3R0LT5iYXNlKTsKPgo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnko dm1hLCAmby0+dm1hX2xpc3QsIG9ial9saW5rKSB7Cj4gLQkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEt PnZtKSAmJgo+ICsJCWlmICh2bWEtPmlzX2dndHQgJiYKPiAgIAkJICAgIHZtYS0+Z2d0dF92aWV3 LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICAgCQkJY29udGludWU7Cj4gICAJCWlm ICh2bWEtPnZtID09IHZtKQo+IEBAIC00NDU4LDcgKzQ0NTQsNyBAQCBib29sIGk5MTVfZ2VtX29i al9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAgIAlzdHJ1Y3QgaTkxNV92 bWEgKnZtYTsKPgo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIG9i al9saW5rKSB7Cj4gLQkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJCWlmICh2bWEt PmlzX2dndHQgJiYKPiAgIAkJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJ RVdfTk9STUFMKQo+ICAgCQkJY29udGludWU7Cj4gICAJCWlmICh2bWEtPnZtID09IHZtICYmIGRy bV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiBAQCAtNDUwNSw3ICs0NTAxLDcgQEAg dW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbywKPiAgIAlCVUdfT04obGlzdF9lbXB0eSgmby0+dm1hX2xpc3QpKTsKPgo+ICAgCWxpc3Rf Zm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIG9ial9saW5rKSB7Cj4gLQkJaWYgKGk5 MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJCWlmICh2bWEtPmlzX2dndHQgJiYKPiAgIAkJICAg IHZtYS0+Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICAgCQkJY29u dGludWU7Cj4gICAJCWlmICh2bWEtPnZtID09IHZtKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9leGVjYnVmZmVyLmMKPiBpbmRleCBlOTc0MTM2ODk3MmUuLjY3ODhmNzFhZDk4OSAx MDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMK PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMKPiBAQCAt NjU4LDcgKzY1OCw3IEBAIG5lZWRfcmVsb2NfbWFwcGFibGUoc3RydWN0IGk5MTVfdm1hICp2bWEp Cj4gICAJaWYgKGVudHJ5LT5yZWxvY2F0aW9uX2NvdW50ID09IDApCj4gICAJCXJldHVybiBmYWxz ZTsKPgo+IC0JaWYgKCFpOTE1X2lzX2dndHQodm1hLT52bSkpCj4gKwlpZiAoIXZtYS0+aXNfZ2d0 dCkKPiAgIAkJcmV0dXJuIGZhbHNlOwo+Cj4gICAJLyogU2VlIGFsc28gdXNlX2NwdV9yZWxvYygp ICovCj4gQEAgLTY3Nyw4ICs2NzcsNyBAQCBlYl92bWFfbWlzcGxhY2VkKHN0cnVjdCBpOTE1X3Zt YSAqdm1hKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmplY3QyICplbnRyeSA9IHZt YS0+ZXhlY19lbnRyeTsKPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gdm1h LT5vYmo7Cj4KPiAtCVdBUk5fT04oZW50cnktPmZsYWdzICYgX19FWEVDX09CSkVDVF9ORUVEU19N QVAgJiYKPiAtCSAgICAgICAhaTkxNV9pc19nZ3R0KHZtYS0+dm0pKTsKPiArCVdBUk5fT04oZW50 cnktPmZsYWdzICYgX19FWEVDX09CSkVDVF9ORUVEU19NQVAgJiYgIXZtYS0+aXNfZ2d0dCk7Cj4K PiAgIAlpZiAoZW50cnktPmFsaWdubWVudCAmJgo+ICAgCSAgICB2bWEtPm5vZGUuc3RhcnQgJiAo ZW50cnktPmFsaWdubWVudCAtIDEpKQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4g aW5kZXggMjViY2VhM2U2YWI2Li5kYTE1MGMyN2E3NmMgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+IEBAIC0zMTM0LDYgKzMxMzQsNyBAQCBpbnQgaTkxNV9nZW1fZ3R0X2lu aXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAl9Cj4KPiAgIAlndHQtPmJhc2UuZGV2ID0g ZGV2Owo+ICsJZ3R0LT5iYXNlLmlzX2dndHQgPSB0cnVlOwo+Cj4gICAJcmV0ID0gZ3R0LT5ndHRf cHJvYmUoZGV2LCAmZ3R0LT5iYXNlLnRvdGFsLCAmZ3R0LT5zdG9sZW5fc2l6ZSwKPiAgIAkJCSAg ICAgJmd0dC0+bWFwcGFibGVfYmFzZSwgJmd0dC0+bWFwcGFibGVfZW5kKTsKPiBAQCAtMzI0Miwx MyArMzI0MywxNCBAQCBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm1hLT5leGVjX2xpc3QpOwo+ICAgCXZt YS0+dm0gPSB2bTsKPiAgIAl2bWEtPm9iaiA9IG9iajsKPiArCXZtYS0+aXNfZ2d0dCA9IGk5MTVf aXNfZ2d0dCh2bSk7Cj4KPiAgIAlpZiAoaTkxNV9pc19nZ3R0KHZtKSkKPiAgIAkJdm1hLT5nZ3R0 X3ZpZXcgPSAqZ2d0dF92aWV3Owo+ICsJZWxzZQo+ICsJCWk5MTVfcHBndHRfZ2V0KGk5MTVfdm1f dG9fcHBndHQodm0pKTsKPgo+ICAgCWxpc3RfYWRkX3RhaWwoJnZtYS0+b2JqX2xpbmssICZvYmot PnZtYV9saXN0KTsKPiAtCWlmICghaTkxNV9pc19nZ3R0KHZtKSkKPiAtCQlpOTE1X3BwZ3R0X2dl dChpOTE1X3ZtX3RvX3BwZ3R0KHZtKSk7Cj4KPiAgIAlyZXR1cm4gdm1hOwo+ICAgfQo+IEBAIC0z NTIwLDEzICszNTIyLDkgQEAgaW50IGk5MTVfdm1hX2JpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEs IGVudW0gaTkxNV9jYWNoZV9sZXZlbCBjYWNoZV9sZXZlbCwKPiAgIAkJcmV0dXJuIDA7Cj4KPiAg IAlpZiAodm1hLT5ib3VuZCA9PSAwICYmIHZtYS0+dm0tPmFsbG9jYXRlX3ZhX3JhbmdlKSB7Cj4g LQkJdHJhY2VfaTkxNV92YV9hbGxvYyh2bWEtPnZtLAo+IC0JCQkJICAgIHZtYS0+bm9kZS5zdGFy dCwKPiAtCQkJCSAgICB2bWEtPm5vZGUuc2l6ZSwKPiAtCQkJCSAgICBWTV9UT19UUkFDRV9OQU1F KHZtYS0+dm0pKTsKPiAtCj4gICAJCS8qIFhYWDogaTkxNV92bWFfcGluKCkgd2lsbCBmaXggdGhp cyArLSBoYWNrICovCj4gICAJCXZtYS0+cGluX2NvdW50Kys7Cj4gKwkJdHJhY2VfaTkxNV92YV9h bGxvYyh2bWEpOwo+ICAgCQlyZXQgPSB2bWEtPnZtLT5hbGxvY2F0ZV92YV9yYW5nZSh2bWEtPnZt LAo+ICAgCQkJCQkJIHZtYS0+bm9kZS5zdGFydCwKPiAgIAkJCQkJCSB2bWEtPm5vZGUuc2l6ZSk7 Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBpbmRleCAyNDk3NjcxZDFlMWEuLmJh ZTAwNWE2MmNmYyAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gQEAgLTE4 NCw2ICsxODQsNyBAQCBzdHJ1Y3QgaTkxNV92bWEgewo+ICAgI2RlZmluZSBHTE9CQUxfQklORAko MTw8MCkKPiAgICNkZWZpbmUgTE9DQUxfQklORAkoMTw8MSkKPiAgIAl1bnNpZ25lZCBpbnQgYm91 bmQgOiA0Owo+ICsJYm9vbCBpc19nZ3R0IDogMTsKPgo+ICAgCS8qKgo+ICAgCSAqIFN1cHBvcnQg ZGlmZmVyZW50IEdHVFQgdmlld3MgaW50byB0aGUgc2FtZSBvYmplY3QuCj4gQEAgLTI3Niw2ICsy NzcsOCBAQCBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsKPiAgIAl1NjQgc3RhcnQ7CQkvKiBT dGFydCBvZmZzZXQgYWx3YXlzIDAgZm9yIGRyaTIgKi8KPiAgIAl1NjQgdG90YWw7CQkvKiBzaXpl IGFkZHIgc3BhY2UgbWFwcyAoZXguIDJHQiBmb3IgZ2d0dCkgKi8KPgo+ICsJYm9vbCBpc19nZ3R0 Owo+ICsKPiAgIAlzdHJ1Y3QgaTkxNV9wYWdlX3NjcmF0Y2ggKnNjcmF0Y2hfcGFnZTsKPiAgIAlz dHJ1Y3QgaTkxNV9wYWdlX3RhYmxlICpzY3JhdGNoX3B0Owo+ICAgCXN0cnVjdCBpOTE1X3BhZ2Vf ZGlyZWN0b3J5ICpzY3JhdGNoX3BkOwo+IEBAIC0zMzEsNiArMzM0LDggQEAgc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSB7Cj4gICAJCQl1MzIgZmxhZ3MpOwo+ICAgfTsKPgo+ICsjZGVmaW5lIGk5 MTVfaXNfZ2d0dChWKSAoKFYpLT5pc19nZ3R0KQo+ICsKPiAgIC8qIFRoZSBHcmFwaGljcyBUcmFu c2xhdGlvbiBUYWJsZSBpcyB0aGUgd2F5IGluIHdoaWNoIEdFTiBoYXJkd2FyZSB0cmFuc2xhdGVz IGEKPiAgICAqIEdyYXBoaWNzIFZpcnR1YWwgQWRkcmVzcyBpbnRvIGEgUGh5c2ljYWwgQWRkcmVz cy4gSW4gYWRkaXRpb24gdG8gdGhlIG5vcm1hbAo+ICAgICogY29sbGF0ZXJhbCBhc3NvY2lhdGVk IHdpdGggYW55IHZhLT5wYSB0cmFuc2xhdGlvbnMgR0VOIGhhcmR3YXJlIGFsc28gaGFzIGEKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gaW5kZXggODU0NjllM2M3NDBhLi5lNDg2ZGNlZjUw OGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV90cmFjZS5oCj4gQEAgLTE3NSwzNSArMTc1LDI0 IEBAIFRSQUNFX0VWRU5UKGk5MTVfdm1hX3VuYmluZCwKPiAgIAkJICAgICAgX19lbnRyeS0+b2Jq LCBfX2VudHJ5LT5vZmZzZXQsIF9fZW50cnktPnNpemUsIF9fZW50cnktPnZtKQo+ICAgKTsKPgo+ IC0jZGVmaW5lIFZNX1RPX1RSQUNFX05BTUUodm0pIFwKPiAtCShpOTE1X2lzX2dndHQodm0pID8g IkciIDogXAo+IC0JCSAgICAgICJQIikKPiAtCj4gLURFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV92 YSwKPiAtCVRQX1BST1RPKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLCB1NjQgc3RhcnQs IHU2NCBsZW5ndGgsIGNvbnN0IGNoYXIgKm5hbWUpLAo+IC0JVFBfQVJHUyh2bSwgc3RhcnQsIGxl bmd0aCwgbmFtZSksCj4gK1RSQUNFX0VWRU5UKGk5MTVfdmFfYWxsb2MsCj4gKwlUUF9QUk9UTyhz dHJ1Y3QgaTkxNV92bWEgKnZtYSksCj4gKwlUUF9BUkdTKHZtYSksCj4KPiAgIAlUUF9TVFJVQ1Rf X2VudHJ5KAo+ICAgCQlfX2ZpZWxkKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKiwgdm0pCj4g ICAJCV9fZmllbGQodTY0LCBzdGFydCkKPiAgIAkJX19maWVsZCh1NjQsIGVuZCkKPiAtCQlfX3N0 cmluZyhuYW1lLCBuYW1lKQo+ICAgCSksCj4KPiAgIAlUUF9mYXN0X2Fzc2lnbigKPiAtCQlfX2Vu dHJ5LT52bSA9IHZtOwo+IC0JCV9fZW50cnktPnN0YXJ0ID0gc3RhcnQ7Cj4gLQkJX19lbnRyeS0+ ZW5kID0gc3RhcnQgKyBsZW5ndGggLSAxOwo+IC0JCV9fYXNzaWduX3N0cihuYW1lLCBuYW1lKTsK PiArCQlfX2VudHJ5LT52bSA9IHZtYS0+dm07Cj4gKwkJX19lbnRyeS0+c3RhcnQgPSB2bWEtPm5v ZGUuc3RhcnQ7Cj4gKwkJX19lbnRyeS0+ZW5kID0gdm1hLT5ub2RlLnN0YXJ0ICsgdm1hLT5ub2Rl LnNpemUgLSAxOwo+ICAgCSksCj4KPiAtCVRQX3ByaW50aygidm09JXAgKCVzKSwgMHglbGx4LTB4 JWxseCIsCj4gLQkJICBfX2VudHJ5LT52bSwgX19nZXRfc3RyKG5hbWUpLCAgX19lbnRyeS0+c3Rh cnQsIF9fZW50cnktPmVuZCkKPiAtKTsKPiAtCj4gLURFRklORV9FVkVOVChpOTE1X3ZhLCBpOTE1 X3ZhX2FsbG9jLAo+IC0JICAgICBUUF9QUk9UTyhzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwgdTY0IHN0YXJ0LCB1NjQgbGVuZ3RoLCBjb25zdCBjaGFyICpuYW1lKSwKPiAtCSAgICAgVFBf QVJHUyh2bSwgc3RhcnQsIGxlbmd0aCwgbmFtZSkKPiArCVRQX3ByaW50aygidm09JXAgKCVjKSwg MHglbGx4LTB4JWxseCIsCj4gKwkJICBfX2VudHJ5LT52bSwgaTkxNV9pc19nZ3R0KF9fZW50cnkt PnZtKSA/ICdHJyA6ICdQJywgIF9fZW50cnktPnN0YXJ0LCBfX2VudHJ5LT5lbmQpCj4gICApOwo+ Cj4gICBERUNMQVJFX0VWRU5UX0NMQVNTKGk5MTVfcHhfZW50cnksCj4KX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJ bnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK