From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH v3] drm/i915: Do not use ggtt_view with (aliasing) PPGTT Date: Mon, 16 Mar 2015 18:50:49 +0100 Message-ID: <20150316175049.GK21993@phenom.ffwll.local> References: <1426507873.5166.1.camel@jlahtine-mobl1> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-wi0-f181.google.com (mail-wi0-f181.google.com [209.85.212.181]) by gabe.freedesktop.org (Postfix) with ESMTP id 722B66E5BE for ; Mon, 16 Mar 2015 10:49:08 -0700 (PDT) Received: by wibdy8 with SMTP id dy8so43956199wib.0 for ; Mon, 16 Mar 2015 10:49:07 -0700 (PDT) Content-Disposition: inline In-Reply-To: <1426507873.5166.1.camel@jlahtine-mobl1> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCBNYXIgMTYsIDIwMTUgYXQgMDI6MTE6MTNQTSArMDIwMCwgSm9vbmFzIExhaHRpbmVu IHdyb3RlOgo+IEdHVFQgdmlld3MgYXJlIG9ubHkgYXBwbGljYWJsZSB3aGVuIGRlYWxpbmcgd2l0 aCBHR1RULiBDaGFuZ2UgdGhlIGNvZGUgdG8KPiByZWplY3QgZ2d0dF92aWV3IHdoZXJlIGl0IHNo b3VsZCBub3QgYmUgdXNlZCBhbmQgcmVxdWlyZSBpdCB3aGVuIGl0IHNob3VsZAo+IGJlLgo+IAo+ IHYyOgo+IC0gRHJvcHBlZCBfcHBndHRfIGluZml4ZXMsIGFsbG93IGJvdGggdHlwZXMgdG8gYmUg cGFzc2VkCj4gLSBEaXNyZWdhcmQgb3RoZXIgYnV0IG5vcm1hbCB2aWV3cyB3aGVuIG5vIHZpZXcg aXMgc3BlY2lmaWVkCj4gLSBNb3JlIGNoZWNrcyB0aGF0IHZhbGlkIHBhcmFtZXRlcnMgYXJlIHBh c3NlZAo+IC0gTW9yZSByZWFkYWJsZSBlcnJvciBjaGVja2luZwo+IAo+IHYzOgo+IC0gUHJlZmVy IFdBUk5fT05DRSBvdmVyIEJVR19PTiB3aGVuIHRoZXJlIGlzIGNvZGUgcGF0aCBmb3IgZmFpbHVy ZQo+IAo+IFNpZ25lZC1vZmYtYnk6IEpvb25hcyBMYWh0aW5lbiA8am9vbmFzLmxhaHRpbmVuQGxp bnV4LmludGVsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAg ICAgfCAxMDIgKysrKysrKysrLS0tLS0tLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMgICAgIHwgMTc1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQo+ ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyB8ICA3MSArKysrKysrKysrKy0t LS0KPiAgMyBmaWxlcyBjaGFuZ2VkLCAyMjkgaW5zZXJ0aW9ucygrKSwgMTE5IGRlbGV0aW9ucygt KQo+IAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IGluZGV4IGE3NmM2ZWUuLjk5NmY2YTEgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBAQCAtMjYyMywyMCArMjYyMywxNiBAQCB2b2lk IGk5MTVfZ2VtX3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPiAgI2RlZmluZSBQ SU5fR0xPQkFMIDB4NAo+ICAjZGVmaW5lIFBJTl9PRkZTRVRfQklBUyAweDgKPiAgI2RlZmluZSBQ SU5fT0ZGU0VUX01BU0sgKH40MDk1KQo+IC1pbnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVj dF9waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+IC0JCQkJCSAgc3Ry dWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCQkJICB1aW50MzJfdCBhbGlnbm1lbnQs Cj4gLQkJCQkJICB1aW50NjRfdCBmbGFncywKPiAtCQkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dn dHRfdmlldyAqdmlldyk7Cj4gLXN0YXRpYyBpbmxpbmUKPiAtaW50IF9fbXVzdF9jaGVjayBpOTE1 X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkg ICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkJICAgICB1aW50MzJfdCBh bGlnbm1lbnQsCj4gLQkJCQkgICAgIHVpbnQ2NF90IGZsYWdzKQo+IC17Cj4gLQlyZXR1cm4gaTkx NV9nZW1fb2JqZWN0X3Bpbl92aWV3KG9iaiwgdm0sIGFsaWdubWVudCwgZmxhZ3MsCj4gLQkJCQkJ CSZpOTE1X2dndHRfdmlld19ub3JtYWwpOwo+IC19Cj4gK2ludCBfX211c3RfY2hlY2sKPiAraTkx NV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCSAg ICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkgICAgdWludDMyX3QgYWxpZ25t ZW50LAo+ICsJCSAgICB1aW50NjRfdCBmbGFncyk7Cj4gK2ludCBfX211c3RfY2hlY2sKPiAraTkx NV9nZW1fb2JqZWN0X2dndHRfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g KwkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcsCj4gKwkJCSB1aW50MzJfdCBh bGlnbm1lbnQsCj4gKwkJCSB1aW50NjRfdCBmbGFncyk7Cj4gIAo+ICBpbnQgaTkxNV92bWFfYmlu ZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgZW51bSBpOTE1X2NhY2hlX2xldmVsIGNhY2hlX2xldmVs LAo+ICAJCSAgdTMyIGZsYWdzKTsKPiBAQCAtMjgwMCw2MCArMjc5Niw0OCBAQCBzdHJ1Y3QgZG1h X2J1ZiAqaTkxNV9nZW1fcHJpbWVfZXhwb3J0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4gIAo+ ICB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+ ICAKPiAtdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zmc2V0X3ZpZXcoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm8sCj4gLQkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0sCj4gLQkJCQkgICAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpOwo+IC1z dGF0aWMgaW5saW5lCj4gLXVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29mZnNldChzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAtCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCj4gK3N0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2lzX2dndHQoc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0pOwoKVGhpcyBmb3J3YXJkIGRlY2wgc2VlbXMgdW5uZWVkZWQgbGVmdG92 ZXIgZnJvbSBlYXJsaWVyIHBhdGNoIGl0ZXJhdGlvbnMuCkkndmUgcmVtb3ZlZCBpdCBhbmQgbWVy Z2VkIHRoZSBwYXRjaC4KClRoYW5rcywgRGFuaWVsCgo+ICsKPiArdW5zaWduZWQgbG9uZwo+ICtp OTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq bywKPiArCQkJICAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpOwo+ICt1bnNpZ25l ZCBsb25nCj4gK2k5MTVfZ2VtX29ial9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km8sCj4gKwkJICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKPiArc3RhdGljIGlu bGluZSB1bnNpZ25lZCBsb25nCj4gK2k5MTVfZ2VtX29ial9nZ3R0X29mZnNldChzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqbykKPiAgewo+IC0JcmV0dXJuIGk5MTVfZ2VtX29ial9vZmZzZXRf dmlldyhvLCB2bSwgSTkxNV9HR1RUX1ZJRVdfTk9STUFMKTsKPiArCXJldHVybiBpOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXRfdmlldyhvLCBJOTE1X0dHVFRfVklFV19OT1JNQUwpOwo+ICB9Cj4gKwo+ ICBib29sIGk5MTVfZ2VtX29ial9ib3VuZF9hbnkoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km8pOwo+IC1ib29sIGk5MTVfZ2VtX29ial9ib3VuZF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvLAo+IC0JCQkgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0J CQkgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KTsKPiAtc3RhdGljIGlubGluZQo+ ICtib29sIGk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm8sCj4gKwkJCQkgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KTsKPiAgYm9v bCBpOTE1X2dlbV9vYmpfYm91bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gLQkJ CXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+IC17Cj4gLQlyZXR1cm4gaTkxNV9nZW1f b2JqX2JvdW5kX3ZpZXcobywgdm0sIEk5MTVfR0dUVF9WSUVXX05PUk1BTCk7Cj4gLX0KPiArCQkJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOwo+ICAKPiAgdW5zaWduZWQgbG9uZyBpOTE1 X2dlbV9vYmpfc2l6ZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAgCQkJCXN0cnVj dCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKPiAtc3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9v YmpfdG9fdm1hX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCQkg IHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkJCSAgY29uc3Qgc3RydWN0IGk5 MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiAtc3RhdGljIGlubGluZQo+IC1zdHJ1Y3QgaTkxNV92bWEg Kmk5MTVfZ2VtX29ial90b192bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAt CQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gLXsKPiAtCXJldHVybiBp OTE1X2dlbV9vYmpfdG9fdm1hX3ZpZXcob2JqLCB2bSwgJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7 Cj4gLX0KPiAtCj4gIHN0cnVjdCBpOTE1X3ZtYSAqCj4gLWk5MTVfZ2VtX29ial9sb29rdXBfb3Jf Y3JlYXRlX3ZtYV92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkg ICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCQkgICAgICAgY29uc3Qg c3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiAraTkxNV9nZW1fb2JqX3RvX3ZtYShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCSAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSk7Cj4gK3N0cnVjdCBpOTE1X3ZtYSAqCj4gK2k5MTVfZ2VtX29ial90b19nZ3R0 X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJICBjb25zdCBzdHJ1 Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+ICAKPiAtc3RhdGljIGlubGluZQo+ICBzdHJ1Y3Qg aTkxNV92bWEgKgo+ICBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFj ZSAqdm0pCj4gLXsKPiAtCXJldHVybiBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWFf dmlldyhvYmosIHZtLAo+IC0JCQkJCQkmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKPiAtfQo+ICsJ CQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4gK3N0cnVjdCBpOTE1X3ZtYSAq Cj4gK2k5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX2dndHRfdm1hKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92 aWV3ICp2aWV3KTsKPiAgCj4gLXN0cnVjdCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX2dndHQo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Cj4gLXN0YXRpYyBpbmxpbmUgYm9vbCBp OTE1X2dlbV9vYmpfaXNfcGlubmVkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopIHsK PiAtCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZv YmotPnZtYV9saXN0LCB2bWFfbGluaykKPiAtCQlpZiAodm1hLT5waW5fY291bnQgPiAwKQo+IC0J CQlyZXR1cm4gdHJ1ZTsKPiAtCXJldHVybiBmYWxzZTsKPiArc3RhdGljIGlubGluZSBzdHJ1Y3Qg aTkxNV92bWEgKgo+ICtpOTE1X2dlbV9vYmpfdG9fZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+ICt7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fb2JqX3RvX2dndHRfdmlldyhvYmos ICZpOTE1X2dndHRfdmlld19ub3JtYWwpOwo+ICB9Cj4gK2Jvb2wgaTkxNV9nZW1fb2JqX2lzX3Bp bm5lZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKTsKPiAgCj4gIC8qIFNvbWUgR0dU VCBWTSBoZWxwZXJzICovCj4gICNkZWZpbmUgaTkxNV9vYmpfdG9fZ2d0dChvYmopIFwKPiBAQCAt Mjg3NiwxMyArMjg2MCw3IEBAIGk5MTVfdm1fdG9fcHBndHQoc3RydWN0IGk5MTVfYWRkcmVzc19z cGFjZSAqdm0pCj4gIAo+ICBzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9nZW1fb2JqX2dndHRfYm91 bmQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgewo+IC0JcmV0dXJuIGk5MTVf Z2VtX29ial9ib3VuZChvYmosIGk5MTVfb2JqX3RvX2dndHQob2JqKSk7Cj4gLX0KPiAtCj4gLXN0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+IC1pOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAtewo+IC0JcmV0dXJuIGk5MTVfZ2VtX29i al9vZmZzZXQob2JqLCBpOTE1X29ial90b19nZ3R0KG9iaikpOwo+ICsJcmV0dXJuIGk5MTVfZ2Vt X29ial9nZ3R0X2JvdW5kX3ZpZXcob2JqLCBJOTE1X0dHVFRfVklFV19OT1JNQUwpOwo+ICB9Cj4g IAo+ICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMK PiBpbmRleCAwZmUzMTNkLi5lMjg3NmJmIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4g QEAgLTM1MTgsOSArMzUxOCw5IEBAIHN0YXRpYyBib29sIGk5MTVfZ2VtX3ZhbGlkX2d0dF9zcGFj ZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqCj4gIGk5 MTVfZ2VtX29iamVjdF9iaW5kX3RvX3ZtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gIAkJCSAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJCQkgICBjb25zdCBz dHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldywKPiAgCQkJICAgdW5zaWduZWQgYWxpZ25t ZW50LAo+IC0JCQkgICB1aW50NjRfdCBmbGFncywKPiAtCQkJICAgY29uc3Qgc3RydWN0IGk5MTVf Z2d0dF92aWV3ICp2aWV3KQo+ICsJCQkgICB1aW50NjRfdCBmbGFncykKPiAgewo+ICAJc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IEBAIC0zNTMyLDYgKzM1MzIsOSBA QCBpOTE1X2dlbV9vYmplY3RfYmluZF90b192bShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gIAlpbnQgcmV0Owo+ICAKPiArCWlmKFdB Uk5fT04oaTkxNV9pc19nZ3R0KHZtKSAhPSAhIWdndHRfdmlldykpCj4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7Cj4gKwo+ICAJZmVuY2Vfc2l6ZSA9IGk5MTVfZ2VtX2dldF9ndHRfc2l6ZShk ZXYsCj4gIAkJCQkJICAgb2JqLT5iYXNlLnNpemUsCj4gIAkJCQkJICAgb2JqLT50aWxpbmdfbW9k ZSk7Cj4gQEAgLTM1NzAsNyArMzU3Myw5IEBAIGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX3ZtKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAo+ICAJaTkxNV9nZW1fb2JqZWN0X3Bp bl9wYWdlcyhvYmopOwo+ICAKPiAtCXZtYSA9IGk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRl X3ZtYV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICsJdm1hID0gZ2d0dF92aWV3ID8gaTkxNV9nZW1f b2JqX2xvb2t1cF9vcl9jcmVhdGVfZ2d0dF92bWEob2JqLCBnZ3R0X3ZpZXcpIDoKPiArCQkJICBp OTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEob2JqLCB2bSk7Cj4gKwo+ICAJaWYgKElT X0VSUih2bWEpKQo+ICAJCWdvdG8gZXJyX3VucGluOwo+ICAKPiBAQCAtNDE2NywxMiArNDE3Miwx MiBAQCBpOTE1X3ZtYV9taXNwbGFjZWQoc3RydWN0IGk5MTVfdm1hICp2bWEsIHVpbnQzMl90IGFs aWdubWVudCwgdWludDY0X3QgZmxhZ3MpCj4gIAlyZXR1cm4gZmFsc2U7Cj4gIH0KPiAgCj4gLWlu dAo+IC1pOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiwKPiAtCQkJIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkgdWludDMy X3QgYWxpZ25tZW50LAo+IC0JCQkgdWludDY0X3QgZmxhZ3MsCj4gLQkJCSBjb25zdCBzdHJ1Y3Qg aTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gK3N0YXRpYyBpbnQKPiAraTkxNV9nZW1fb2JqZWN0X2Rv X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCSAgICAgICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0 dF92aWV3ICpnZ3R0X3ZpZXcsCj4gKwkJICAgICAgIHVpbnQzMl90IGFsaWdubWVudCwKPiArCQkg ICAgICAgdWludDY0X3QgZmxhZ3MpCj4gIHsKPiAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4gQEAgLTQxODgsMTcgKzQxOTMsMjkgQEAgaTkxNV9nZW1fb2JqZWN0X3Bpbl92aWV3 KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAlpZiAoV0FSTl9PTigoZmxhZ3Mg JiAoUElOX01BUFBBQkxFIHwgUElOX0dMT0JBTCkpID09IFBJTl9NQVBQQUJMRSkpCj4gIAkJcmV0 dXJuIC1FSU5WQUw7Cj4gIAo+IC0Jdm1hID0gaTkxNV9nZW1fb2JqX3RvX3ZtYV92aWV3KG9iaiwg dm0sIHZpZXcpOwo+ICsJaWYgKFdBUk5fT04oaTkxNV9pc19nZ3R0KHZtKSAhPSAhIWdndHRfdmll dykpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJdm1hID0gZ2d0dF92aWV3ID8gaTkxNV9n ZW1fb2JqX3RvX2dndHRfdmlldyhvYmosIGdndHRfdmlldykgOgo+ICsJCQkgIGk5MTVfZ2VtX29i al90b192bWEob2JqLCB2bSk7Cj4gKwo+ICsJaWYgKElTX0VSUih2bWEpKQo+ICsJCXJldHVybiBQ VFJfRVJSKHZtYSk7Cj4gKwo+ICAJaWYgKHZtYSkgewo+ICAJCWlmIChXQVJOX09OKHZtYS0+cGlu X2NvdW50ID09IERSTV9JOTE1X0dFTV9PQkpFQ1RfTUFYX1BJTl9DT1VOVCkpCj4gIAkJCXJldHVy biAtRUJVU1k7Cj4gIAo+ICAJCWlmIChpOTE1X3ZtYV9taXNwbGFjZWQodm1hLCBhbGlnbm1lbnQs IGZsYWdzKSkgewo+ICsJCQl1bnNpZ25lZCBsb25nIG9mZnNldDsKPiArCQkJb2Zmc2V0ID0gZ2d0 dF92aWV3ID8gaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0X3ZpZXcob2JqLCBnZ3R0X3ZpZXctPnR5 cGUpIDoKPiArCQkJCQkgICAgIGk5MTVfZ2VtX29ial9vZmZzZXQob2JqLCB2bSk7Cj4gIAkJCVdB Uk4odm1hLT5waW5fY291bnQsCj4gLQkJCSAgICAgImJvIGlzIGFscmVhZHkgcGlubmVkIHdpdGgg aW5jb3JyZWN0IGFsaWdubWVudDoiCj4gKwkJCSAgICAgImJvIGlzIGFscmVhZHkgcGlubmVkIGlu ICVzIHdpdGggaW5jb3JyZWN0IGFsaWdubWVudDoiCj4gIAkJCSAgICAgIiBvZmZzZXQ9JWx4LCBy ZXEuYWxpZ25tZW50PSV4LCByZXEubWFwX2FuZF9mZW5jZWFibGU9JWQsIgo+ICAJCQkgICAgICIg b2JqLT5tYXBfYW5kX2ZlbmNlYWJsZT0lZFxuIiwKPiAtCQkJICAgICBpOTE1X2dlbV9vYmpfb2Zm c2V0X3ZpZXcob2JqLCB2bSwgdmlldy0+dHlwZSksCj4gKwkJCSAgICAgZ2d0dF92aWV3ID8gImdn dHQiIDogInBwZ3R0IiwKPiArCQkJICAgICBvZmZzZXQsCj4gIAkJCSAgICAgYWxpZ25tZW50LAo+ ICAJCQkgICAgICEhKGZsYWdzICYgUElOX01BUFBBQkxFKSwKPiAgCQkJICAgICBvYmotPm1hcF9h bmRfZmVuY2VhYmxlKTsKPiBAQCAtNDIxMiw4ICs0MjI5LDggQEAgaTkxNV9nZW1fb2JqZWN0X3Bp bl92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAo+ICAJYm91bmQgPSB2 bWEgPyB2bWEtPmJvdW5kIDogMDsKPiAgCWlmICh2bWEgPT0gTlVMTCB8fCAhZHJtX21tX25vZGVf YWxsb2NhdGVkKCZ2bWEtPm5vZGUpKSB7Cj4gLQkJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2JpbmRf dG9fdm0ob2JqLCB2bSwgYWxpZ25tZW50LAo+IC0JCQkJCQkgZmxhZ3MsIHZpZXcpOwo+ICsJCXZt YSA9IGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX3ZtKG9iaiwgdm0sIGdndHRfdmlldywgYWxpZ25t ZW50LAo+ICsJCQkJCQkgZmxhZ3MpOwo+ICAJCWlmIChJU19FUlIodm1hKSkKPiAgCQkJcmV0dXJu IFBUUl9FUlIodm1hKTsKPiAgCX0KPiBAQCAtNDI1NCw2ICs0MjcxLDMwIEBAIGk5MTVfZ2VtX29i amVjdF9waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJcmV0dXJu IDA7Cj4gIH0KPiAgCj4gK2ludAo+ICtpOTE1X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt LAo+ICsJCSAgICB1aW50MzJfdCBhbGlnbm1lbnQsCj4gKwkJICAgIHVpbnQ2NF90IGZsYWdzKQo+ ICt7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2RvX3BpbihvYmosIHZtLAo+ICsJCQkJICAg ICAgaTkxNV9pc19nZ3R0KHZtKSA/ICZpOTE1X2dndHRfdmlld19ub3JtYWwgOiBOVUxMLAo+ICsJ CQkJICAgICAgYWxpZ25tZW50LCBmbGFncyk7Cj4gK30KPiArCj4gK2ludAo+ICtpOTE1X2dlbV9v YmplY3RfZ2d0dF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJIGNv bnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywKPiArCQkJIHVpbnQzMl90IGFsaWdubWVu dCwKPiArCQkJIHVpbnQ2NF90IGZsYWdzKQo+ICt7Cj4gKwlpZiAoV0FSTl9PTkNFKCF2aWV3LCAi bm8gdmlldyBzcGVjaWZpZWQiKSkKPiArCQlyZXR1cm4gLUVJTlZBTDsKPiArCj4gKwlyZXR1cm4g aTkxNV9nZW1fb2JqZWN0X2RvX3BpbihvYmosIGk5MTVfb2JqX3RvX2dndHQob2JqKSwgdmlldywK PiArCQkJCSAgICAgIGFsaWdubWVudCwgZmxhZ3MpOwo+ICt9Cj4gKwo+ICB2b2lkCj4gIGk5MTVf Z2VtX29iamVjdF9nZ3R0X3VucGluKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4g IHsKPiBAQCAtNDU1OSwxNSArNDYwMCwzMiBAQCB2b2lkIGk5MTVfZ2VtX2ZyZWVfb2JqZWN0KHN0 cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaikKPiAgCWludGVsX3J1bnRpbWVfcG1fcHV0KGRl dl9wcml2KTsKPiAgfQo+ICAKPiAtc3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fdm1h X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCQkgIHN0cnVjdCBp OTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkJCSAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92 aWV3ICp2aWV3KQo+ICtzdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b192bWEoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0pCj4gIHsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IC0JbGlzdF9mb3Jf ZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKPiAtCQlpZiAodm1hLT52 bSA9PSB2bSAmJiB2bWEtPmdndHRfdmlldy50eXBlID09IHZpZXctPnR5cGUpCj4gKwlsaXN0X2Zv cl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4gKwkJaWYgKGk5 MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJCSAgICB2bWEtPmdndHRfdmlldy50eXBlICE9IEk5 MTVfR0dUVF9WSUVXX05PUk1BTCkKPiArCQkJY29udGludWU7Cj4gKwkJaWYgKHZtYS0+dm0gPT0g dm0pCj4gIAkJCXJldHVybiB2bWE7Cj4gKwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICAKPiAr c3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fZ2d0dF92aWV3KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3 ICp2aWV3KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpnZ3R0ID0gaTkxNV9v YmpfdG9fZ2d0dChvYmopOwo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwo+ICsJaWYgKFdB Uk5fT05DRSghdmlldywgIm5vIHZpZXcgc3BlY2lmaWVkIikpCj4gKwkJcmV0dXJuIEVSUl9QVFIo LUVJTlZBTCk7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0 LCB2bWFfbGluaykKPiArCQlpZiAodm1hLT52bSA9PSBnZ3R0ICYmIHZtYS0+Z2d0dF92aWV3LnR5 cGUgPT0gdmlldy0+dHlwZSkKPiArCQkJcmV0dXJuIHZtYTsKPiAgCXJldHVybiBOVUxMOwo+ICB9 Cj4gIAo+IEBAIC01MTc2LDkgKzUyMzQsOSBAQCBpOTE1X2dlbV9zaHJpbmtlcl9jb3VudChzdHJ1 Y3Qgc2hyaW5rZXIgKnNocmlua2VyLCBzdHJ1Y3Qgc2hyaW5rX2NvbnRyb2wgKnNjKQo+ICB9Cj4g IAo+ICAvKiBBbGwgdGhlIG5ldyBWTSBzdHVmZiAqLwo+IC11bnNpZ25lZCBsb25nIGk5MTVfZ2Vt X29ial9vZmZzZXRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAtCQkJCSAg ICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJCSAgICAgICBlbnVtIGk5 MTVfZ2d0dF92aWV3X3R5cGUgdmlldykKPiArdW5zaWduZWQgbG9uZwo+ICtpOTE1X2dlbV9vYmpf b2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJCSAgICBzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSkKPiAgewo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gby0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICAJc3RydWN0IGk5MTVfdm1hICp2 bWE7Cj4gQEAgLTUxODYsMjMgKzUyNDQsNTggQEAgdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpf b2Zmc2V0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gIAlXQVJOX09OKHZt ID09ICZkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQtPmJhc2UpOwo+ICAKPiAgCWxpc3RfZm9y X2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4gLQkJaWYgKHZtYS0+ dm0gPT0gdm0gJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSB2aWV3KQo+ICsJCWlmIChpOTE1X2lz X2dndHQodm1hLT52bSkgJiYKPiArCQkgICAgdm1hLT5nZ3R0X3ZpZXcudHlwZSAhPSBJOTE1X0dH VFRfVklFV19OT1JNQUwpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmICh2bWEtPnZtID09IHZtKQo+ ICAJCQlyZXR1cm4gdm1hLT5ub2RlLnN0YXJ0Owo+IC0KPiAgCX0KPiArCj4gIAlXQVJOKDEsICIl cyB2bWEgZm9yIHRoaXMgb2JqZWN0IG5vdCBmb3VuZC5cbiIsCj4gIAkgICAgIGk5MTVfaXNfZ2d0 dCh2bSkgPyAiZ2xvYmFsIiA6ICJwcGd0dCIpOwo+ICAJcmV0dXJuIC0xOwo+ICB9Cj4gIAo+IC1i b29sIGk5MTVfZ2VtX29ial9ib3VuZF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv LAo+IC0JCQkgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkgICAgIGVu dW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KQo+ICt1bnNpZ25lZCBsb25nCj4gK2k5MTVfZ2Vt X29ial9nZ3R0X29mZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJ CQkgICAgICBlbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgdmlldykKPiAgewo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gby0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9IGk5MTVfb2JqX3RvX2dndHQobyk7Cj4g IAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgCj4gIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm8tPnZtYV9saXN0LCB2bWFfbGluaykKPiAtCQlpZiAodm1hLT52bSA9PSB2bSAmJgo+ICsJCWlm ICh2bWEtPnZtID09IGdndHQgJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSB2aWV3KQo+ICsJCQly ZXR1cm4gdm1hLT5ub2RlLnN0YXJ0Owo+ICsKPiArCVdBUk4oMSwgImdsb2JhbCB2bWEgZm9yIHRo aXMgb2JqZWN0IG5vdCBmb3VuZC5cbiIpOwo+ICsJcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICtib29s IGk5MTVfZ2VtX29ial9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiArCQkJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gK3sKPiArCXN0cnVjdCBpOTE1X3ZtYSAq dm1hOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9s aW5rKSB7Cj4gKwkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJCSAgICB2bWEtPmdn dHRfdmlldy50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiArCQkJY29udGludWU7Cj4g KwkJaWYgKHZtYS0+dm0gPT0gdm0gJiYgZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUp KQo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30KPiAr Cj4gK2Jvb2wgaTkxNV9nZW1fb2JqX2dndHRfYm91bmRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqbywKPiArCQkJCSAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpCj4gK3sK PiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSBpOTE1X29ial90b19nZ3R0KG8p Owo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2 bWEsICZvLT52bWFfbGlzdCwgdm1hX2xpbmspCj4gKwkJaWYgKHZtYS0+dm0gPT0gZ2d0dCAmJgo+ ICAJCSAgICB2bWEtPmdndHRfdmlldy50eXBlID09IHZpZXcgJiYKPiAgCQkgICAgZHJtX21tX25v ZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQo+ICAJCQlyZXR1cm4gdHJ1ZTsKPiBAQCAtNTIzMSwx MCArNTMyNCwxMyBAQCB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX29ial9zaXplKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvLAo+ICAKPiAgCUJVR19PTihsaXN0X2VtcHR5KCZvLT52bWFfbGlz dCkpOwo+ICAKPiAtCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9s aW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvLT52bWFfbGlzdCwgdm1hX2xpbmsp IHsKPiArCQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pICYmCj4gKwkJICAgIHZtYS0+Z2d0dF92 aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICsJCQljb250aW51ZTsKPiAgCQlp ZiAodm1hLT52bSA9PSB2bSkKPiAgCQkJcmV0dXJuIHZtYS0+bm9kZS5zaXplOwo+IC0KPiArCX0K PiAgCXJldHVybiAwOwo+ICB9Cj4gIAo+IEBAIC01MzM0LDE1ICs1NDMwLDE2IEBAIGk5MTVfZ2Vt X3Nocmlua2VyX29vbShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGV2 ZW50LCB2b2lkICpwdHIpCj4gIAlyZXR1cm4gTk9USUZZX0RPTkU7Cj4gIH0KPiAgCj4gLXN0cnVj dCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX2dndHQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPiArYm9vbCBpOTE1X2dlbV9vYmpfaXNfcGlubmVkKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmopCj4gIHsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQg PSBpOTE1X29ial90b19nZ3R0KG9iaik7Cj4gIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAtCj4g LQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKQo+IC0J CWlmICh2bWEtPnZtID09IGdndHQgJiYKPiAtCQkgICAgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSBJ OTE1X0dHVFRfVklFV19OT1JNQUwpCj4gLQkJCXJldHVybiB2bWE7Cj4gLQo+IC0JcmV0dXJuIE5V TEw7Cj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5r KSB7Cj4gKwkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJCSAgICB2bWEtPmdndHRf dmlldy50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiArCQkJY29udGludWU7Cj4gKwkJ aWYgKHZtYS0+cGluX2NvdW50ID4gMCkKPiArCQkJcmV0dXJuIHRydWU7Cj4gKwl9Cj4gKwlyZXR1 cm4gZmFsc2U7Cj4gIH0KPiArCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRl eCAyMDM0ZjdjLi5mMWI5ZWE2IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK PiBAQCAtNjcsOCArNjcsOSBAQAo+ICAgKiBpOTE1X2dndHRfdmlld190eXBlIGFuZCBzdHJ1Y3Qg aTkxNV9nZ3R0X3ZpZXcuCj4gICAqCj4gICAqIEEgbmV3IGZsYXZvdXIgb2YgY29yZSBHRU0gZnVu Y3Rpb25zIHdoaWNoIHdvcmsgd2l0aCBHR1RUIGJvdW5kIG9iamVjdHMgd2VyZQo+IC0gKiBhZGRl ZCB3aXRoIHRoZSBfdmlldyBzdWZmaXguIFRoZXkgdGFrZSB0aGUgc3RydWN0IGk5MTVfZ2d0dF92 aWV3IHBhcmFtZXRlcgo+IC0gKiBlbmNhcHN1bGF0aW5nIGFsbCBtZXRhZGF0YSByZXF1aXJlZCB0 byBpbXBsZW1lbnQgYSB2aWV3Lgo+ICsgKiBhZGRlZCB3aXRoIHRoZSBfZ2d0dF8gaW5maXgsIGFu ZCBzb21ldGltZXMgd2l0aCBfdmlldyBwb3N0Zml4IHRvIGF2b2lkCj4gKyAqIHJlbmFtaW5nICBp biBsYXJnZSBhbW91bnRzIG9mIGNvZGUuIFRoZXkgdGFrZSB0aGUgc3RydWN0IGk5MTVfZ2d0dF92 aWV3Cj4gKyAqIHBhcmFtZXRlciBlbmNhcHN1bGF0aW5nIGFsbCBtZXRhZGF0YSByZXF1aXJlZCB0 byBpbXBsZW1lbnQgYSB2aWV3Lgo+ICAgKgo+ICAgKiBBcyBhIGhlbHBlciBmb3IgY2FsbGVycyB3 aGljaCBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBub3JtYWwgdmlldywKPiAgICogZ2xvYmFs bHkgY29uc3QgaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsIHNpbmdsZXRvbiBpbnN0YW5jZSBleGlzdHMu IEFsbCBvbGQgY29yZQo+IEBAIC0xNzI2LDExICsxNzI3LDE1IEBAIHN0YXRpYyB2b2lkIGdndHRf YmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gdm1hLT52bS0+ZGV2Owo+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKPiAgCXN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmogPSB2 bWEtPm9iajsKPiArCXN0cnVjdCBzZ190YWJsZSAqcGFnZXMgPSBvYmotPnBhZ2VzOwo+ICAKPiAg CS8qIEN1cnJlbnRseSBhcHBsaWNhYmxlIG9ubHkgdG8gVkxWICovCj4gIAlpZiAob2JqLT5ndF9y bykKPiAgCQlmbGFncyB8PSBQVEVfUkVBRF9PTkxZOwo+ICAKPiArCWlmIChpOTE1X2lzX2dndHQo dm1hLT52bSkpCj4gKwkJcGFnZXMgPSB2bWEtPmdndHRfdmlldy5wYWdlczsKPiArCj4gIAkvKiBJ ZiB0aGVyZSBpcyBubyBhbGlhc2luZyBQUEdUVCwgb3IgdGhlIGNhbGxlciBuZWVkcyBhIGdsb2Jh bCBtYXBwaW5nLAo+ICAJICogb3Igd2UgaGF2ZSBhIGdsb2JhbCBtYXBwaW5nIGFscmVhZHkgYnV0 IHRoZSBjYWNoZWFiaWxpdHkgZmxhZ3MgaGF2ZQo+ICAJICogY2hhbmdlZCwgc2V0IHRoZSBnbG9i YWwgUFRFcy4KPiBAQCAtMTc0NSw3ICsxNzUwLDcgQEAgc3RhdGljIHZvaWQgZ2d0dF9iaW5kX3Zt YShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgCWlmICghZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3Bw Z3R0IHx8IGZsYWdzICYgR0xPQkFMX0JJTkQpIHsKPiAgCQlpZiAoISh2bWEtPmJvdW5kICYgR0xP QkFMX0JJTkQpIHx8Cj4gIAkJICAgIChjYWNoZV9sZXZlbCAhPSBvYmotPmNhY2hlX2xldmVsKSkg ewo+IC0JCQl2bWEtPnZtLT5pbnNlcnRfZW50cmllcyh2bWEtPnZtLCB2bWEtPmdndHRfdmlldy5w YWdlcywKPiArCQkJdm1hLT52bS0+aW5zZXJ0X2VudHJpZXModm1hLT52bSwgcGFnZXMsCj4gIAkJ CQkJCXZtYS0+bm9kZS5zdGFydCwKPiAgCQkJCQkJY2FjaGVfbGV2ZWwsIGZsYWdzKTsKPiAgCQkJ dm1hLT5ib3VuZCB8PSBHTE9CQUxfQklORDsKPiBAQCAtMTc1Niw4ICsxNzYxLDcgQEAgc3RhdGlj IHZvaWQgZ2d0dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgCSAgICAoISh2bWEt PmJvdW5kICYgTE9DQUxfQklORCkgfHwKPiAgCSAgICAgKGNhY2hlX2xldmVsICE9IG9iai0+Y2Fj aGVfbGV2ZWwpKSkgewo+ICAJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICphcHBndHQgPSBkZXZfcHJp di0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gLQkJYXBwZ3R0LT5iYXNlLmluc2VydF9lbnRyaWVzKCZh cHBndHQtPmJhc2UsCj4gLQkJCQkJICAgIHZtYS0+Z2d0dF92aWV3LnBhZ2VzLAo+ICsJCWFwcGd0 dC0+YmFzZS5pbnNlcnRfZW50cmllcygmYXBwZ3R0LT5iYXNlLCBwYWdlcywKPiAgCQkJCQkgICAg dm1hLT5ub2RlLnN0YXJ0LAo+ICAJCQkJCSAgICBjYWNoZV9sZXZlbCwgZmxhZ3MpOwo+ICAJCXZt YS0+Ym91bmQgfD0gTE9DQUxfQklORDsKPiBAQCAtMjMzMSwyMyArMjMzNSwyOCBAQCBpbnQgaTkx NV9nZW1fZ3R0X2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgCXJldHVybiAwOwo+ICB9 Cj4gIAo+IC1zdGF0aWMgc3RydWN0IGk5MTVfdm1hICpfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCQkgICAgICBzdHJ1Y3QgaTkxNV9h ZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3Zp ZXcgKnZpZXcpCj4gK3N0YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKgo+ICtfX2k5MTVfZ2VtX3ZtYV9j cmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkgICAgICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0 X3ZpZXcgKmdndHRfdmlldykKPiAgewo+ICAJc3RydWN0IGk5MTVfdm1hICp2bWEgPSBremFsbG9j KHNpemVvZigqdm1hKSwgR0ZQX0tFUk5FTCk7Cj4gIAlpZiAodm1hID09IE5VTEwpCj4gIAkJcmV0 dXJuIEVSUl9QVFIoLUVOT01FTSk7Cj4gIAo+ICsJaWYgKFdBUk5fT04oaTkxNV9pc19nZ3R0KHZt KSAhPSAhIWdndHRfdmlldykpCj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICAJ SU5JVF9MSVNUX0hFQUQoJnZtYS0+dm1hX2xpbmspOwo+ICAJSU5JVF9MSVNUX0hFQUQoJnZtYS0+ bW1fbGlzdCk7Cj4gIAlJTklUX0xJU1RfSEVBRCgmdm1hLT5leGVjX2xpc3QpOwo+ICAJdm1hLT52 bSA9IHZtOwo+ICAJdm1hLT5vYmogPSBvYmo7Cj4gLQl2bWEtPmdndHRfdmlldyA9ICp2aWV3Owo+ ICAKPiAgCWlmIChJTlRFTF9JTkZPKHZtLT5kZXYpLT5nZW4gPj0gNikgewo+ICAJCWlmIChpOTE1 X2lzX2dndHQodm0pKSB7Cj4gKwkJCXZtYS0+Z2d0dF92aWV3ID0gKmdndHRfdmlldzsKPiArCj4g IAkJCXZtYS0+dW5iaW5kX3ZtYSA9IGdndHRfdW5iaW5kX3ZtYTsKPiAgCQkJdm1hLT5iaW5kX3Zt YSA9IGdndHRfYmluZF92bWE7Cj4gIAkJfSBlbHNlIHsKPiBAQCAtMjM1Niw2ICsyMzY1LDcgQEAg c3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gIAkJfQo+ICAJfSBlbHNlIHsKPiAgCQlCVUdfT04oIWk5 MTVfaXNfZ2d0dCh2bSkpOwo+ICsJCXZtYS0+Z2d0dF92aWV3ID0gKmdndHRfdmlldzsKPiAgCQl2 bWEtPnVuYmluZF92bWEgPSBpOTE1X2dndHRfdW5iaW5kX3ZtYTsKPiAgCQl2bWEtPmJpbmRfdm1h ID0gaTkxNV9nZ3R0X2JpbmRfdm1hOwo+ICAJfQo+IEBAIC0yMzY4LDIxICsyMzc4LDQ0IEBAIHN0 YXRpYyBzdHJ1Y3QgaTkxNV92bWEgKl9faTkxNV9nZW1fdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAo+ICB9Cj4gIAo+ICBzdHJ1Y3QgaTkxNV92bWEgKgo+IC1pOTE1 X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWFfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAo+IC0JCQkJICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ ICtpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiArCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gK3sK PiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsKPiArCXZtYSA9IGk5MTVfZ2VtX29ial90b192 bWEob2JqLCB2bSk7Cj4gKwlpZiAoIXZtYSkKPiArCQl2bWEgPSBfX2k5MTVfZ2VtX3ZtYV9jcmVh dGUob2JqLCB2bSwKPiArCQkJCQkgICAgaTkxNV9pc19nZ3R0KHZtKSA/ICZpOTE1X2dndHRfdmll d19ub3JtYWwgOiBOVUxMKTsKPiArCj4gKwlyZXR1cm4gdm1hOwo+ICt9Cj4gKwo+ICtzdHJ1Y3Qg aTkxNV92bWEgKgo+ICtpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV9nZ3R0X3ZtYShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBp OTE1X2dndHRfdmlldyAqdmlldykKPiAgewo+ICsJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq Z2d0dCA9IGk5MTVfb2JqX3RvX2dndHQob2JqKTsKPiAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ ICAKPiAtCXZtYSA9IGk5MTVfZ2VtX29ial90b192bWFfdmlldyhvYmosIHZtLCB2aWV3KTsKPiAr CWlmIChXQVJOX09OKCF2aWV3KSkKPiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiArCj4g Kwl2bWEgPSBpOTE1X2dlbV9vYmpfdG9fZ2d0dF92aWV3KG9iaiwgdmlldyk7Cj4gKwo+ICsJaWYg KElTX0VSUih2bWEpKQo+ICsJCXJldHVybiB2bWE7Cj4gKwo+ICAJaWYgKCF2bWEpCj4gLQkJdm1h ID0gX19pOTE1X2dlbV92bWFfY3JlYXRlKG9iaiwgdm0sIHZpZXcpOwo+ICsJCXZtYSA9IF9faTkx NV9nZW1fdm1hX2NyZWF0ZShvYmosIGdndHQsIHZpZXcpOwo+ICAKPiAgCXJldHVybiB2bWE7Cj4g Kwo+ICB9Cj4gIAo+ICsKPiAgc3RhdGljIGlubGluZQo+IC1pbnQgaTkxNV9nZXRfdm1hX3BhZ2Vz KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKQo+ICtpbnQgaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXMoc3Ry dWN0IGk5MTVfdm1hICp2bWEpCj4gIHsKPiAgCWlmICh2bWEtPmdndHRfdmlldy5wYWdlcykKPiAg CQlyZXR1cm4gMDsKPiBAQCAtMjM5NCw3ICsyNDI3LDcgQEAgaW50IGk5MTVfZ2V0X3ZtYV9wYWdl cyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgCQkJICB2bWEtPmdndHRfdmlldy50eXBlKTsKPiAg Cj4gIAlpZiAoIXZtYS0+Z2d0dF92aWV3LnBhZ2VzKSB7Cj4gLQkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gZ2V0IHBhZ2VzIGZvciBWTUEgdmlldyB0eXBlICV1IVxuIiwKPiArCQlEUk1fRVJST1IoIkZh aWxlZCB0byBnZXQgcGFnZXMgZm9yIEdHVFQgdmlldyB0eXBlICV1IVxuIiwKPiAgCQkJICB2bWEt PmdndHRfdmlldy50eXBlKTsKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCX0KPiBAQCAtMjQxNSwx MCArMjQ0OCwxMiBAQCBpbnQgaTkxNV9nZXRfdm1hX3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+ICBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgZW51bSBpOTE1X2Nh Y2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ICAJCSAgdTMyIGZsYWdzKQo+ICB7Cj4gLQlpbnQgcmV0 ID0gaTkxNV9nZXRfdm1hX3BhZ2VzKHZtYSk7Cj4gKwlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0p KSB7Cj4gKwkJaW50IHJldCA9IGk5MTVfZ2V0X2dndHRfdm1hX3BhZ2VzKHZtYSk7Cj4gIAo+IC0J aWYgKHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7 Cj4gKwl9Cj4gIAo+ICAJdm1hLT5iaW5kX3ZtYSh2bWEsIGNhY2hlX2xldmVsLCBmbGFncyk7Cj4g IAo+IC0tIAo+IDEuOS4zCj4gCj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZnggbWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1h bi9saXN0aW5mby9pbnRlbC1nZngKCi0tIApEYW5pZWwgVmV0dGVyClNvZnR3YXJlIEVuZ2luZWVy LCBJbnRlbCBDb3Jwb3JhdGlvbgpodHRwOi8vYmxvZy5mZndsbC5jaApfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9y Zy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=