From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 10/12] drm/i915: Reduce the pointer dance of i915_is_ggtt() Date: Tue, 24 Nov 2015 16:08:06 +0100 Message-ID: <20151124150806.GQ17050@phenom.ffwll.local> References: <1448023432-10726-1-git-send-email-chris@chris-wilson.co.uk> <1448023432-10726-10-git-send-email-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-wm0-f47.google.com (mail-wm0-f47.google.com [74.125.82.47]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6E45B6E958 for ; Tue, 24 Nov 2015 07:08:10 -0800 (PST) Received: by wmec201 with SMTP id c201so30775979wme.1 for ; Tue, 24 Nov 2015 07:08:09 -0800 (PST) Content-Disposition: inline In-Reply-To: <1448023432-10726-10-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 Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBOb3YgMjAsIDIwMTUgYXQgMTI6NDM6NTBQTSArMDAwMCwgQ2hyaXMgV2lsc29uIHdy b3RlOgo+IFRoZSBtdWx0aXBsZSBsZXZlbHMgb2YgaW5kaXJlY3QgZG8gbm90aGluZyBidXQgaGlu ZGVyIHRoZSBjb21waWxlciBhbmQKPiB0aGUgcG9pbnRlciBjaGFzaW5nIHR1cm5zIHRvIGJlIHF1 aXRlIHBhaW5mdWwgYnV0IHBhaW5sZXNzIHRvIGZpeC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KCnZtYS0+aXNfZ2d0dCA9IHZtLT5p c19nZ3R0IGlzIHJvYnVzdCBlbm91Z2ggZm9yIG1lIHRvIGNhcnJ5IGl0IHR3aWNlLgoKUmV2aWV3 ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cgo+IC0tLQo+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICAgfCAxNCArKysrKystLS0t LS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggICAgICAgICAgICB8ICA5ICst LS0tLS0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAgICAgICAgfCAz MiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZXhlY2J1ZmZlci5jIHwgIDUgKystLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgMjEgKysrKysrKysrLS0tLS0tLS0tLS0KPiAgZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgIHwgIDMgKysrCj4gIGRyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ3B1X2Vycm9yLmMgICAgICB8ICAyICstCj4gIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdHJhY2UuaCAgICAgICAgICB8IDI3ICsrKysrKysrLS0tLS0tLS0tLS0t LS0tLS0KPiAgOCBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA2OSBkZWxldGlvbnMo LSkKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+IGluZGV4IDYzMDcxN2ZlYzY4 OC4uZDgzZjM1YzhkZjM0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZGVidWdmcy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBA QCAtMTIzLDggKzEyMyw3IEBAIHN0YXRpYyB1NjQgaTkxNV9nZW1fb2JqX3RvdGFsX2dndHRfc2l6 ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAJc3RydWN0IGk5MTVfdm1hICp2 bWE7Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFf bGluaykgewo+IC0JCWlmIChpOTE1X2lzX2dndHQodm1hLT52bSkgJiYKPiAtCQkgICAgZHJtX21t X25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQo+ICsJCWlmICh2bWEtPmlzX2dndHQgJiYgZHJt X21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQo+ICAJCQlzaXplICs9IHZtYS0+bm9kZS5z aXplOwo+ICAJfQo+ICAKPiBAQCAtMTcxLDEyICsxNzAsMTEgQEAgZGVzY3JpYmVfb2JqKHN0cnVj dCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgCQlzZXFf cHJpbnRmKG0sICIgKGZlbmNlOiAlZCkiLCBvYmotPmZlbmNlX3JlZyk7Cj4gIAlsaXN0X2Zvcl9l YWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4gIAkJc2VxX3ByaW50 ZihtLCAiICglc2d0dCBvZmZzZXQ6ICUwOGxseCwgc2l6ZTogJTA4bGx4IiwKPiAtCQkJICAgaTkx NV9pc19nZ3R0KHZtYS0+dm0pID8gImciIDogInBwIiwKPiArCQkJICAgdm1hLT5pc19nZ3R0ID8g ImciIDogInBwIiwKPiAgCQkJICAgdm1hLT5ub2RlLnN0YXJ0LCB2bWEtPm5vZGUuc2l6ZSk7Cj4g LQkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSkKPiAtCQkJc2VxX3ByaW50ZihtLCAiLCB0eXBl OiAldSkiLCB2bWEtPmdndHRfdmlldy50eXBlKTsKPiAtCQllbHNlCj4gLQkJCXNlcV9wdXRzKG0s ICIpIik7Cj4gKwkJaWYgKHZtYS0+aXNfZ2d0dCkKPiArCQkJc2VxX3ByaW50ZihtLCAiLCB0eXBl OiAldSIsIHZtYS0+Z2d0dF92aWV3LnR5cGUpOwo+ICsJCXNlcV9wdXRzKG0sICIpIik7Cj4gIAl9 Cj4gIAlpZiAob2JqLT5zdG9sZW4pCj4gIAkJc2VxX3ByaW50ZihtLCAiIChzdG9sZW46ICUwOGxs eCkiLCBvYmotPnN0b2xlbi0+c3RhcnQpOwo+IEBAIC0zNDgsNyArMzQ2LDcgQEAgc3RhdGljIGlu dCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPiAgCQkJaWYg KCFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4gIAkJCQljb250aW51ZTsKPiAg Cj4gLQkJCWlmIChpOTE1X2lzX2dndHQodm1hLT52bSkpIHsKPiArCQkJaWYgKHZtYS0+aXNfZ2d0 dCkgewo+ICAJCQkJc3RhdHMtPmdsb2JhbCArPSBvYmotPmJhc2Uuc2l6ZTsKPiAgCQkJCWNvbnRp bnVlOwo+ICAJCQl9Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZDhiZDU4Y2JiNzI3 Li5lODZlMTE4OGRlYjAgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMzAyMywx OCArMzAyMywxMSBAQCBib29sIGk5MTVfZ2VtX29ial9pc19waW5uZWQoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaik7Cj4gIC8qIFNvbWUgR0dUVCBWTSBoZWxwZXJzICovCj4gICNkZWZp bmUgaTkxNV9vYmpfdG9fZ2d0dChvYmopIFwKPiAgCSgmKChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqKShvYmopLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGUpLT5ndHQuYmFzZSkKPiAtc3RhdGljIGlu bGluZSBib29sIGk5MTVfaXNfZ2d0dChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAt ewo+IC0Jc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9Cj4gLQkJJigoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKikodm0pLT5kZXYtPmRldl9wcml2YXRlKS0+Z3R0LmJhc2U7Cj4gLQly ZXR1cm4gdm0gPT0gZ2d0dDsKPiAtfQo+ICAKPiAgc3RhdGljIGlubGluZSBzdHJ1Y3QgaTkxNV9o d19wcGd0dCAqCj4gIGk5MTVfdm1fdG9fcHBndHQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pCj4gIHsKPiAtCVdBUk5fT04oaTkxNV9pc19nZ3R0KHZtKSk7Cj4gLQo+ICsJV0FSTl9PTih2 bS0+aXNfZ2d0dCk7Cj4gIAlyZXR1cm4gY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19w cGd0dCwgYmFzZSk7Cj4gIH0KPiAgCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gaW5kZXggZDY3 MDZkZDQxMTdjLi4zOTBjYjljMTViYWQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBA QCAtMzMwMCw4ICszMzAwLDcgQEAgaW50IGk5MTVfdm1hX3VuYmluZChzdHJ1Y3QgaTkxNV92bWEg KnZtYSkKPiAgCSAqIGNhdXNlIG1lbW9yeSBjb3JydXB0aW9uIHRocm91Z2ggdXNlLWFmdGVyLWZy ZWUuCj4gIAkgKi8KPiAgCj4gLQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pICYmCj4gLQkgICAg dm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpIHsKPiArCWlmICh2 bWEtPmlzX2dndHQgJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JN QUwpIHsKPiAgCQlpOTE1X2dlbV9vYmplY3RfZmluaXNoX2d0dChvYmopOwo+ICAKPiAgCQkvKiBy ZWxlYXNlIHRoZSBmZW5jZSByZWcgX2FmdGVyXyBmbHVzaGluZyAqLwo+IEBAIC0zMzE2LDcgKzMz MTUsNyBAQCBpbnQgaTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICAJdm1h LT5ib3VuZCA9IDA7Cj4gIAo+ICAJbGlzdF9kZWxfaW5pdCgmdm1hLT5tbV9saXN0KTsKPiAtCWlm IChpOTE1X2lzX2dndHQodm1hLT52bSkpIHsKPiArCWlmICh2bWEtPmlzX2dndHQpIHsKPiAgCQlp ZiAodm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19OT1JNQUwpIHsKPiAgCQkJ b2JqLT5tYXBfYW5kX2ZlbmNlYWJsZSA9IGZhbHNlOwo+ICAJCX0gZWxzZSBpZiAodm1hLT5nZ3R0 X3ZpZXcucGFnZXMpIHsKPiBAQCAtMzQyNyw3ICszNDI2LDcgQEAgaTkxNV9nZW1fb2JqZWN0X2Jp bmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgCXN0cnVjdCBpOTE1 X3ZtYSAqdm1hOwo+ICAJaW50IHJldDsKPiAgCj4gLQlpZiAoaTkxNV9pc19nZ3R0KHZtKSkgewo+ ICsJaWYgKHZtLT5pc19nZ3R0KSB7Cj4gIAkJdTMyIGZlbmNlX3NpemUsIGZlbmNlX2FsaWdubWVu dCwgdW5mZW5jZWRfYWxpZ25tZW50Owo+ICAJCXU2NCB2aWV3X3NpemU7Cj4gIAo+IEBAIC00MTc3 LDEzICs0MTc2LDEzIEBAIGk5MTVfZ2VtX29iamVjdF9kb19waW4oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAgCWlmIChXQVJOX09OKHZtID09ICZkZXZfcHJpdi0+bW0uYWxpYXNp bmdfcHBndHQtPmJhc2UpKQo+ICAJCXJldHVybiAtRU5PREVWOwo+ICAKPiAtCWlmIChXQVJOX09O KGZsYWdzICYgKFBJTl9HTE9CQUwgfCBQSU5fTUFQUEFCTEUpICYmICFpOTE1X2lzX2dndHQodm0p KSkKPiArCWlmIChXQVJOX09OKGZsYWdzICYgKFBJTl9HTE9CQUwgfCBQSU5fTUFQUEFCTEUpICYm ICF2bS0+aXNfZ2d0dCkpCj4gIAkJcmV0dXJuIC1FSU5WQUw7Cj4gIAo+ICAJaWYgKFdBUk5fT04o KGZsYWdzICYgKFBJTl9NQVBQQUJMRSB8IFBJTl9HTE9CQUwpKSA9PSBQSU5fTUFQUEFCTEUpKQo+ ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAtCWlmIChXQVJOX09OKGk5MTVfaXNfZ2d0dCh2bSkg IT0gISFnZ3R0X3ZpZXcpKQo+ICsJaWYgKFdBUk5fT04odm0tPmlzX2dndHQgIT0gISFnZ3R0X3Zp ZXcpKQo+ICAJCXJldHVybiAtRUlOVkFMOwo+ICAKPiAgCXZtYSA9IGdndHRfdmlldyA/IGk5MTVf Z2VtX29ial90b19nZ3R0X3ZpZXcob2JqLCBnZ3R0X3ZpZXcpIDoKPiBAQCAtNDI0NSw3ICs0MjQ0 LDcgQEAgaTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+ICAJCSAgICB1aW50NjRfdCBmbGFncykKPiAgewo+ICAJcmV0dXJuIGk5MTVfZ2VtX29iamVj dF9kb19waW4ob2JqLCB2bSwKPiAtCQkJCSAgICAgIGk5MTVfaXNfZ2d0dCh2bSkgPyAmaTkxNV9n Z3R0X3ZpZXdfbm9ybWFsIDogTlVMTCwKPiArCQkJCSAgICAgIHZtLT5pc19nZ3R0ID8gJmk5MTVf Z2d0dF92aWV3X25vcm1hbCA6IE5VTEwsCj4gIAkJCQkgICAgICBzaXplLCBhbGlnbm1lbnQsIGZs YWdzKTsKPiAgfQo+ICAKPiBAQCAtNDU1MCw3ICs0NTQ5LDcgQEAgc3RydWN0IGk5MTVfdm1hICpp OTE1X2dlbV9vYmpfdG9fdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIHsK PiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZv YmotPnZtYV9saXN0LCB2bWFfbGluaykgewo+IC0JCWlmIChpOTE1X2lzX2dndHQodm1hLT52bSkg JiYKPiArCQlpZiAodm1hLT5pc19nZ3R0ICYmCj4gIAkJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUg IT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAodm1hLT52 bSA9PSB2bSkKPiBAQCAtNDU3NywxNyArNDU3NiwxNCBAQCBzdHJ1Y3QgaTkxNV92bWEgKmk5MTVf Z2VtX29ial90b19nZ3R0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAg Cj4gIHZvaWQgaTkxNV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1hICp2bWEpCj4gIHsK PiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gTlVMTDsKPiAgCVdBUk5fT04odm1h LT5ub2RlLmFsbG9jYXRlZCk7Cj4gIAo+ICAJLyogS2VlcCB0aGUgdm1hIGFzIGEgcGxhY2Vob2xk ZXIgaW4gdGhlIGV4ZWNidWZmZXIgcmVzZXJ2YXRpb24gbGlzdHMgKi8KPiAgCWlmICghbGlzdF9l bXB0eSgmdm1hLT5leGVjX2xpc3QpKQo+ICAJCXJldHVybjsKPiAgCj4gLQl2bSA9IHZtYS0+dm07 Cj4gLQo+IC0JaWYgKCFpOTE1X2lzX2dndHQodm0pKQo+IC0JCWk5MTVfcHBndHRfcHV0KGk5MTVf dm1fdG9fcHBndHQodm0pKTsKPiArCWlmICghdm1hLT5pc19nZ3R0KQo+ICsJCWk5MTVfcHBndHRf cHV0KGk5MTVfdm1fdG9fcHBndHQodm1hLT52bSkpOwo+ICAKPiAgCWxpc3RfZGVsKCZ2bWEtPnZt YV9saW5rKTsKPiAgCj4gQEAgLTQ5ODQsNyArNDk4MCw3IEBAIGluaXRfcmluZ19saXN0cyhzdHJ1 Y3QgaW50ZWxfZW5naW5lX2NzICpyaW5nKQo+ICB2b2lkIGk5MTVfaW5pdF92bShzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCj4gIAkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSkKPiAgewo+IC0JaWYgKCFpOTE1X2lzX2dndHQodm0pKQo+ICsJaWYgKCF2bS0+aXNfZ2d0 dCkKPiAgCQlkcm1fbW1faW5pdCgmdm0tPm1tLCB2bS0+c3RhcnQsIHZtLT50b3RhbCk7Cj4gIAl2 bS0+ZGV2ID0gZGV2X3ByaXYtPmRldjsKPiAgCUlOSVRfTElTVF9IRUFEKCZ2bS0+YWN0aXZlX2xp c3QpOwo+IEBAIC01MTQ4LDcgKzUxNDQsNyBAQCB1NjQgaTkxNV9nZW1fb2JqX29mZnNldChzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAgCVdBUk5fT04odm0gPT0gJmRldl9wcml2LT5t bS5hbGlhc2luZ19wcGd0dC0+YmFzZSk7Cj4gIAo+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEs ICZvLT52bWFfbGlzdCwgdm1hX2xpbmspIHsKPiAtCQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0p ICYmCj4gKwkJaWYgKHZtYS0+aXNfZ2d0dCAmJgo+ICAJCSAgICB2bWEtPmdndHRfdmlldy50eXBl ICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiAgCQkJY29udGludWU7Cj4gIAkJaWYgKHZtYS0+ dm0gPT0gdm0pCj4gQEAgLTUxNTYsNyArNTE1Miw3IEBAIHU2NCBpOTE1X2dlbV9vYmpfb2Zmc2V0 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+ICAJfQo+ICAKPiAgCVdBUk4oMSwgIiVz IHZtYSBmb3IgdGhpcyBvYmplY3Qgbm90IGZvdW5kLlxuIiwKPiAtCSAgICAgaTkxNV9pc19nZ3R0 KHZtKSA/ICJnbG9iYWwiIDogInBwZ3R0Iik7Cj4gKwkgICAgIHZtLT5pc19nZ3R0ID8gImdsb2Jh bCIgOiAicHBndHQiKTsKPiAgCXJldHVybiAtMTsKPiAgfQo+ICAKPiBAQCAtNTE4MSw3ICs1MTc3 LDcgQEAgYm9vbCBpOTE1X2dlbV9vYmpfYm91bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km8sCj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5 KHZtYSwgJm8tPnZtYV9saXN0LCB2bWFfbGluaykgewo+IC0JCWlmIChpOTE1X2lzX2dndHQodm1h LT52bSkgJiYKPiArCQlpZiAodm1hLT5pc19nZ3R0ICYmCj4gIAkJICAgIHZtYS0+Z2d0dF92aWV3 LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAo dm1hLT52bSA9PSB2bSAmJiBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4gQEAg LTUyMjgsNyArNTIyNCw3IEBAIHVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX3NpemUoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gIAlCVUdfT04obGlzdF9lbXB0eSgmby0+dm1hX2xp c3QpKTsKPiAgCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm8tPnZtYV9saXN0LCB2bWFf bGluaykgewo+IC0JCWlmIChpOTE1X2lzX2dndHQodm1hLT52bSkgJiYKPiArCQlpZiAodm1hLT5p c19nZ3R0ICYmCj4gIAkJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdf Tk9STUFMKQo+ICAJCQljb250aW51ZTsKPiAgCQlpZiAodm1hLT52bSA9PSB2bSkKPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCj4gaW5kZXggYWZhOTMwZGFiNjMy Li40NjkwN2Y1ZGE0ZjIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZXhl Y2J1ZmZlci5jCj4gQEAgLTY1Miw3ICs2NTIsNyBAQCBuZWVkX3JlbG9jX21hcHBhYmxlKHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQo+ICAJaWYgKGVudHJ5LT5yZWxvY2F0aW9uX2NvdW50ID09IDApCj4g IAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCWlmICghaTkxNV9pc19nZ3R0KHZtYS0+dm0pKQo+ICsJ aWYgKCF2bWEtPmlzX2dndHQpCj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAKPiAgCS8qIFNlZSBhbHNv IHVzZV9jcHVfcmVsb2MoKSAqLwo+IEBAIC02NzEsOCArNjcxLDcgQEAgZWJfdm1hX21pc3BsYWNl ZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmpl Y3QyICplbnRyeSA9IHZtYS0+ZXhlY19lbnRyeTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvYmogPSB2bWEtPm9iajsKPiAgCj4gLQlXQVJOX09OKGVudHJ5LT5mbGFncyAmIF9fRVhF Q19PQkpFQ1RfTkVFRFNfTUFQICYmCj4gLQkgICAgICAgIWk5MTVfaXNfZ2d0dCh2bWEtPnZtKSk7 Cj4gKwlXQVJOX09OKGVudHJ5LT5mbGFncyAmIF9fRVhFQ19PQkpFQ1RfTkVFRFNfTUFQICYmICF2 bWEtPmlzX2dndHQpOwo+ICAKPiAgCWlmIChlbnRyeS0+YWxpZ25tZW50ICYmCj4gIAkgICAgdm1h LT5ub2RlLnN0YXJ0ICYgKGVudHJ5LT5hbGlnbm1lbnQgLSAxKSkKPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9ndHQuYwo+IGluZGV4IGIxZWU2Zjg5ZTcwYi4uOGJiMTEwMjYwOGZkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBAQCAtMjQ1Niw3ICsyNDU2LDYgQEAgc3Rh dGljIGludCBnZ3R0X2JpbmRfdm1hKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAJaWYgKG9iai0+ Z3Rfcm8pCj4gIAkJcHRlX2ZsYWdzIHw9IFBURV9SRUFEX09OTFk7Cj4gIAo+IC0KPiAgCWlmICgh ZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0IHx8IGZsYWdzICYgR0xPQkFMX0JJTkQpIHsKPiAg CQl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCBwYWdlcywKPiAgCQkJCQl2bWEtPm5v ZGUuc3RhcnQsCj4gQEAgLTMwMjcsNiArMzAyNiw3IEBAIGludCBpOTE1X2dlbV9ndHRfaW5pdChz dHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+ICAJfQo+ICAKPiAgCWd0dC0+YmFzZS5kZXYgPSBkZXY7 Cj4gKwlndHQtPmJhc2UuaXNfZ2d0dCA9IHRydWU7Cj4gIAo+ICAJcmV0ID0gZ3R0LT5ndHRfcHJv YmUoZGV2LCAmZ3R0LT5iYXNlLnRvdGFsLCAmZ3R0LT5zdG9sZW5fc2l6ZSwKPiAgCQkJICAgICAm Z3R0LT5tYXBwYWJsZV9iYXNlLCAmZ3R0LT5tYXBwYWJsZV9lbmQpOwo+IEBAIC0zMTA1LDcgKzMx MDUsNyBAQCB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYpCj4gIAkJCQkJY29udGFpbmVyX29mKHZtLCBzdHJ1Y3QgaTkxNV9od19wcGd0dCwK PiAgCQkJCQkJICAgICBiYXNlKTsKPiAgCj4gLQkJCWlmIChpOTE1X2lzX2dndHQodm0pKQo+ICsJ CQlpZiAodm0tPmlzX2dndHQpCj4gIAkJCQlwcGd0dCA9IGRldl9wcml2LT5tbS5hbGlhc2luZ19w cGd0dDsKPiAgCj4gIAkJCWdlbjZfd3JpdGVfcGFnZV9yYW5nZShkZXZfcHJpdiwgJnBwZ3R0LT5w ZCwKPiBAQCAtMzEyMyw3ICszMTIzLDcgQEAgX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ ICAKPiAtCWlmIChXQVJOX09OKGk5MTVfaXNfZ2d0dCh2bSkgIT0gISFnZ3R0X3ZpZXcpKQo+ICsJ aWYgKFdBUk5fT04odm0tPmlzX2dndHQgIT0gISFnZ3R0X3ZpZXcpKQo+ICAJCXJldHVybiBFUlJf UFRSKC1FSU5WQUwpOwo+ICAKPiAgCXZtYSA9IGttZW1fY2FjaGVfemFsbG9jKHRvX2k5MTUob2Jq LT5iYXNlLmRldiktPnZtYXMsIEdGUF9LRVJORUwpOwo+IEBAIC0zMTM1LDEzICszMTM1LDE0IEBA IF9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ICAJSU5JVF9MSVNUX0hFQUQoJnZtYS0+ZXhlY19saXN0KTsKPiAgCXZtYS0+dm0gPSB2bTsKPiAg CXZtYS0+b2JqID0gb2JqOwo+ICsJdm1hLT5pc19nZ3R0ID0gdm0tPmlzX2dndHQ7Cj4gIAo+IC0J aWYgKGk5MTVfaXNfZ2d0dCh2bSkpCj4gKwlpZiAodm0tPmlzX2dndHQpCj4gIAkJdm1hLT5nZ3R0 X3ZpZXcgPSAqZ2d0dF92aWV3Owo+ICsJZWxzZQo+ICsJCWk5MTVfcHBndHRfZ2V0KGk5MTVfdm1f dG9fcHBndHQodm0pKTsKPiAgCj4gIAlsaXN0X2FkZF90YWlsKCZ2bWEtPnZtYV9saW5rLCAmb2Jq LT52bWFfbGlzdCk7Cj4gLQlpZiAoIWk5MTVfaXNfZ2d0dCh2bSkpCj4gLQkJaTkxNV9wcGd0dF9n ZXQoaTkxNV92bV90b19wcGd0dCh2bSkpOwo+ICAKPiAgCXJldHVybiB2bWE7Cj4gIH0KPiBAQCAt MzE1NSw3ICszMTU2LDcgQEAgaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fdm1h KG9iaiwgdm0pOwo+ICAJaWYgKCF2bWEpCj4gIAkJdm1hID0gX19pOTE1X2dlbV92bWFfY3JlYXRl KG9iaiwgdm0sCj4gLQkJCQkJICAgIGk5MTVfaXNfZ2d0dCh2bSkgPyAmaTkxNV9nZ3R0X3ZpZXdf bm9ybWFsIDogTlVMTCk7Cj4gKwkJCQkJICAgIHZtLT5pc19nZ3R0ID8gJmk5MTVfZ2d0dF92aWV3 X25vcm1hbCA6IE5VTEwpOwo+ICAKPiAgCXJldHVybiB2bWE7Cj4gIH0KPiBAQCAtMzM4MSwxMyAr MzM4Miw5IEBAIGludCBpOTE1X3ZtYV9iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBlbnVtIGk5 MTVfY2FjaGVfbGV2ZWwgY2FjaGVfbGV2ZWwsCj4gIAkJcmV0dXJuIDA7Cj4gIAo+ICAJaWYgKHZt YS0+Ym91bmQgPT0gMCAmJiB2bWEtPnZtLT5hbGxvY2F0ZV92YV9yYW5nZSkgewo+IC0JCXRyYWNl X2k5MTVfdmFfYWxsb2Modm1hLT52bSwKPiAtCQkJCSAgICB2bWEtPm5vZGUuc3RhcnQsCj4gLQkJ CQkgICAgdm1hLT5ub2RlLnNpemUsCj4gLQkJCQkgICAgVk1fVE9fVFJBQ0VfTkFNRSh2bWEtPnZt KSk7Cj4gLQo+ICAJCS8qIFhYWDogaTkxNV92bWFfcGluKCkgd2lsbCBmaXggdGhpcyArLSBoYWNr ICovCj4gIAkJdm1hLT5waW5fY291bnQrKzsKPiArCQl0cmFjZV9pOTE1X3ZhX2FsbG9jKHZtYSk7 Cj4gIAkJcmV0ID0gdm1hLT52bS0+YWxsb2NhdGVfdmFfcmFuZ2Uodm1hLT52bSwKPiAgCQkJCQkJ IHZtYS0+bm9kZS5zdGFydCwKPiAgCQkJCQkJIHZtYS0+bm9kZS5zaXplKTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2dlbV9ndHQuaAo+IGluZGV4IDgyNzUwMDczZDViMy4uOWI1MDZlYzZiOTBjIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiBAQCAtMTgzLDYgKzE4Myw3IEBA IHN0cnVjdCBpOTE1X3ZtYSB7Cj4gICNkZWZpbmUgR0xPQkFMX0JJTkQJKDE8PDApCj4gICNkZWZp bmUgTE9DQUxfQklORAkoMTw8MSkKPiAgCXVuc2lnbmVkIGludCBib3VuZCA6IDQ7Cj4gKwl1bnNp Z25lZCBpc19nZ3R0IDogMTsKPiAgCj4gIAkvKioKPiAgCSAqIFN1cHBvcnQgZGlmZmVyZW50IEdH VFQgdmlld3MgaW50byB0aGUgc2FtZSBvYmplY3QuCj4gQEAgLTI3NSw2ICsyNzYsOCBAQCBzdHJ1 Y3QgaTkxNV9hZGRyZXNzX3NwYWNlIHsKPiAgCXU2NCBzdGFydDsJCS8qIFN0YXJ0IG9mZnNldCBh bHdheXMgMCBmb3IgZHJpMiAqLwo+ICAJdTY0IHRvdGFsOwkJLyogc2l6ZSBhZGRyIHNwYWNlIG1h cHMgKGV4LiAyR0IgZm9yIGdndHQpICovCj4gIAo+ICsJYm9vbCBpc19nZ3R0Owo+ICsKPiAgCXN0 cnVjdCBpOTE1X3BhZ2Vfc2NyYXRjaCAqc2NyYXRjaF9wYWdlOwo+ICAJc3RydWN0IGk5MTVfcGFn ZV90YWJsZSAqc2NyYXRjaF9wdDsKPiAgCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5ICpzY3Jh dGNoX3BkOwo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9lcnJv ci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYwo+IGluZGV4IDhiMzdm NzJiZDkxZi4uOGFmYzQ5NjAwODM1IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ3B1X2Vycm9yLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dwdV9l cnJvci5jCj4gQEAgLTYxMiw3ICs2MTIsNyBAQCBpOTE1X2Vycm9yX29iamVjdF9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAo+ICAJCWRzdC0+Z3R0X29mZnNldCA9IC0x Owo+ICAKPiAgCXJlbG9jX29mZnNldCA9IGRzdC0+Z3R0X29mZnNldDsKPiAtCWlmIChpOTE1X2lz X2dndHQodm0pKQo+ICsJaWYgKHZtLT5pc19nZ3R0KQo+ICAJCXZtYSA9IGk5MTVfZ2VtX29ial90 b19nZ3R0KHNyYyk7Cj4gIAl1c2VfZ2d0dCA9IChzcmMtPmNhY2hlX2xldmVsID09IEk5MTVfQ0FD SEVfTk9ORSAmJgo+ICAJCSAgIHZtYSAmJiAodm1hLT5ib3VuZCAmIEdMT0JBTF9CSU5EKSAmJgo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBpbmRleCA1MzNiNmE4N2ZkMWQuLjU4ZWY0ZTBj Y2VhMSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3RyYWNlLmgKPiBAQCAtMTc1LDM1ICsxNzUs MjQgQEAgVFJBQ0VfRVZFTlQoaTkxNV92bWFfdW5iaW5kLAo+ICAJCSAgICAgIF9fZW50cnktPm9i aiwgX19lbnRyeS0+b2Zmc2V0LCBfX2VudHJ5LT5zaXplLCBfX2VudHJ5LT52bSkKPiAgKTsKPiAg Cj4gLSNkZWZpbmUgVk1fVE9fVFJBQ0VfTkFNRSh2bSkgXAo+IC0JKGk5MTVfaXNfZ2d0dCh2bSkg PyAiRyIgOiBcCj4gLQkJICAgICAgIlAiKQo+IC0KPiAtREVDTEFSRV9FVkVOVF9DTEFTUyhpOTE1 X3ZhLAo+IC0JVFBfUFJPVE8oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sIHU2NCBzdGFy dCwgdTY0IGxlbmd0aCwgY29uc3QgY2hhciAqbmFtZSksCj4gLQlUUF9BUkdTKHZtLCBzdGFydCwg bGVuZ3RoLCBuYW1lKSwKPiArVFJBQ0VfRVZFTlQoaTkxNV92YV9hbGxvYywKPiArCVRQX1BST1RP KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKSwKPiArCVRQX0FSR1Modm1hKSwKPiAgCj4gIAlUUF9TVFJV Q1RfX2VudHJ5KAo+ICAJCV9fZmllbGQoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqLCB2bSkK PiAgCQlfX2ZpZWxkKHU2NCwgc3RhcnQpCj4gIAkJX19maWVsZCh1NjQsIGVuZCkKPiAtCQlfX3N0 cmluZyhuYW1lLCBuYW1lKQo+ICAJKSwKPiAgCj4gIAlUUF9mYXN0X2Fzc2lnbigKPiAtCQlfX2Vu dHJ5LT52bSA9IHZtOwo+IC0JCV9fZW50cnktPnN0YXJ0ID0gc3RhcnQ7Cj4gLQkJX19lbnRyeS0+ ZW5kID0gc3RhcnQgKyBsZW5ndGggLSAxOwo+IC0JCV9fYXNzaWduX3N0cihuYW1lLCBuYW1lKTsK PiArCQlfX2VudHJ5LT52bSA9IHZtYS0+dm07Cj4gKwkJX19lbnRyeS0+c3RhcnQgPSB2bWEtPm5v ZGUuc3RhcnQ7Cj4gKwkJX19lbnRyeS0+ZW5kID0gdm1hLT5ub2RlLnN0YXJ0ICsgdm1hLT5ub2Rl LnNpemUgLSAxOwo+ICAJKSwKPiAgCj4gLQlUUF9wcmludGsoInZtPSVwICglcyksIDB4JWxseC0w eCVsbHgiLAo+IC0JCSAgX19lbnRyeS0+dm0sIF9fZ2V0X3N0cihuYW1lKSwgIF9fZW50cnktPnN0 YXJ0LCBfX2VudHJ5LT5lbmQpCj4gLSk7Cj4gLQo+IC1ERUZJTkVfRVZFTlQoaTkxNV92YSwgaTkx NV92YV9hbGxvYywKPiAtCSAgICAgVFBfUFJPVE8oc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0sIHU2NCBzdGFydCwgdTY0IGxlbmd0aCwgY29uc3QgY2hhciAqbmFtZSksCj4gLQkgICAgIFRQ X0FSR1Modm0sIHN0YXJ0LCBsZW5ndGgsIG5hbWUpCj4gKwlUUF9wcmludGsoInZtPSVwICglYyks IDB4JWxseC0weCVsbHgiLAo+ICsJCSAgX19lbnRyeS0+dm0sIF9fZW50cnktPnZtLT5pc19nZ3R0 ID8gJ0cnIDogJ1AnLCAgX19lbnRyeS0+c3RhcnQsIF9fZW50cnktPmVuZCkKPiAgKTsKPiAgCj4g IERFQ0xBUkVfRVZFTlRfQ0xBU1MoaTkxNV9weF9lbnRyeSwKPiAtLSAKPiAyLjYuMgo+IAo+IF9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdAo+IEludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPiBodHRwOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4CgotLSAKRGFu aWVsIFZldHRlcgpTb2Z0d2FyZSBFbmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Js b2cuZmZ3bGwuY2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK