From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH] drm/i915: Do not use ggtt_view with (aliasing) PPGTT Date: Tue, 10 Mar 2015 16:43:40 +0000 Message-ID: <54FF1F3C.1090507@linux.intel.com> References: <1425911673.6840.2.camel@jlahtine-mobl1.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 45E206E70F for ; Tue, 10 Mar 2015 09:44:08 -0700 (PDT) In-Reply-To: <1425911673.6840.2.camel@jlahtine-mobl1.ger.corp.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Joonas Lahtinen , intel-gfx@lists.freedesktop.org Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKT24gdGhlIGhpZ2ggbGV2ZWwgSSBkb24ndCBsaWtlIHRoZSBleHBsb3Npb24gb2YgX3Bw Z3R0XyBmdW5jdGlvbnMgYW5kIAp0aGUgbmFtZSBpbiB0aGUgZmlyc3QgcGxhY2UuIEFzIERhbmll bCBjb21tZW50ZWQgYSBsb3Qgb2YgdGhvc2UgKGlmIG5vdCAKYWxsKSBzaG91bGQgbm90IGNhcmUg YmV0d2VlbiBwcGd0dCBhbmQgZ2d0dC4KCkkgZG8gbGlrZSB0aGUgZ29hbCBvZiBoYXZpbmcgX2dn dHRfIHZlcnNpb25zIHdoaWNoIHRha2UgdGhlIHZpZXcsIGFuZCAKbm9ybWFsL25vbi1zdWZmaXhl ZC9sZWdhY3kgb25lcyB3aGljaCB3b3JrIHdpdGggYW55IFZNQSAocHBndHQvZ2d0dCkgYW5kIAph c3N1bWUgbm9ybWFsIHZpZXcgaW4gdGhlIGdndHQgY2FzZS4KCklmIHRoYXQgYmFzaWNhbGx5IG1l YW5zIGp1c3QgcmVuYW1pbmcgX3ZpZXcgdG8gX2dndHQgKG1vcmUgb3IgbGVzcykgdGhlbiAKaXQg aXMgbm90IHRoYXQgZ3JlYXQsIGJ1dCBpZiB5b3UgY2FuIGdldCBzb21lIG1vcmUgCnVuaWZpY2F0 aW9uL2NsYXJpZmljYXRpb24vY29uc2lzdGVuY3kgaW4gdGhlIHByb2Nlc3MgdGhlbiBpdCBpcyBn b29kLgoKQW5kIEkgYW0gbm90IHN1cmUgdGhhdCB0aGVyZSBpcyBwbGFjZSBmb3IgYm90aCBfZ2d0 dF8gYW5kIF92aWV3IHByZWZpeCAKaW4gdGhlIGZpbmFsIGdvYWwgLSB0aGF0IGxvb2tzIGV2ZW4g bW9yZSBtZXNzeS4KCkhvdyBtYW55IHBsYWNlcyB3b3VsZCB5b3UgaGF2ZSB0byBjaGFuZ2UgZm9y IHBhcnRpYWwgdmlld3MgaWYgeW91IGRpZG4ndCAKZG8gdGhpcyBjbGVhbnVwIGZpcnN0PyBJZiBu b3QgdG9vIG11Y2ggbWF5YmUgZG8gdGhhdCBmaXJzdCBhbmQgdGhlbiBzZWUgCmlmIHRoZXJlIGlz IHNjb3BlIGZvciBhIGNsZWFudXA/CgpSZWdhcmRzLAoKVHZydGtvCgpPbiAwMy8wOS8yMDE1IDAy OjM0IFBNLCBKb29uYXMgTGFodGluZW4gd3JvdGU6Cj4gR0dUVCB2aWV3cyBhcmUgb25seSBhcHBs aWNhYmxlIHdoZW4gZGVhbGluZyB3aXRoIEdHVFQuIENoYW5nZSB0aGUgY29kZSB0bwo+IHJlamVj dCBnZ3R0X3ZpZXcgd2hlcmUgaXQgc2hvdWxkIG5vdCBiZSB1c2VkIGFuZCByZXF1aXJlIGl0IHdo ZW4gaXQgc2hvdWxkCj4gYmUuCj4KPiBTaWduZWQtb2ZmLWJ5OiBKb29uYXMgTGFodGluZW4gPGpv b25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oICAgICB8ICA5MSArKysrKysrKysrKystLS0tLS0tLS0tLS0KPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgIHwgMTM0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgfCAgNDEgKysrKysrKystLS0KPiAgIDMgZmlsZXMgY2hhbmdlZCwgMTg0IGluc2VydGlvbnMo KyksIDgyIGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gaW5kZXggZGQ3 NjUxYi4uNmJjNjdmYiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Ry di5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+IEBAIC0yNjA4LDIw ICsyNjA4LDE2IEBAIHZvaWQgaTkxNV9nZW1fdm1hX2Rlc3Ryb3koc3RydWN0IGk5MTVfdm1hICp2 bWEpOwo+ICAgI2RlZmluZSBQSU5fR0xPQkFMIDB4NAo+ICAgI2RlZmluZSBQSU5fT0ZGU0VUX0JJ QVMgMHg4Cj4gICAjZGVmaW5lIFBJTl9PRkZTRVRfTUFTSyAofjQwOTUpCj4gLWludCBfX211c3Rf Y2hlY2sgaTkxNV9nZW1fb2JqZWN0X3Bpbl92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4gLQkJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJCQkg IHVpbnQzMl90IGFsaWdubWVudCwKPiAtCQkJCQkgIHVpbnQ2NF90IGZsYWdzLAo+IC0JCQkJCSAg Y29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiAtc3RhdGljIGlubGluZQo+IC1p bnQgX19tdXN0X2NoZWNrIGk5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAtCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4g LQkJCQkgICAgIHVpbnQzMl90IGFsaWdubWVudCwKPiAtCQkJCSAgICAgdWludDY0X3QgZmxhZ3Mp Cj4gLXsKPiAtCXJldHVybiBpOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcob2JqLCB2bSwgYWxpZ25t ZW50LCBmbGFncywKPiAtCQkJCQkJJmk5MTVfZ2d0dF92aWV3X25vcm1hbCk7Cj4gLX0KPiAraW50 IF9fbXVzdF9jaGVjawo+ICtpOTE1X2dlbV9vYmplY3RfcGluKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gKwkJICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ICsJ CSAgICB1aW50MzJfdCBhbGlnbm1lbnQsCj4gKwkJICAgIHVpbnQ2NF90IGZsYWdzKTsKPiAraW50 IF9fbXVzdF9jaGVjawo+ICtpOTE1X2dlbV9vYmplY3RfZ2d0dF9waW4oc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmll dywKPiArCQkJIHVpbnQzMl90IGFsaWdubWVudCwKPiArCQkJIHVpbnQ2NF90IGZsYWdzKTsKPgo+ ICAgaW50IGk5MTVfdm1hX2JpbmQoc3RydWN0IGk5MTVfdm1hICp2bWEsIGVudW0gaTkxNV9jYWNo ZV9sZXZlbCBjYWNoZV9sZXZlbCwKPiAgIAkJICB1MzIgZmxhZ3MpOwo+IEBAIC0yNzg1LDQxICsy NzgxLDU1IEBAIHN0cnVjdCBkbWFfYnVmICppOTE1X2dlbV9wcmltZV9leHBvcnQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKPgo+ICAgdm9pZCBpOTE1X2dlbV9yZXN0b3JlX2ZlbmNlcyhzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2KTsKPgo+IC11bnNpZ25lZCBsb25nIGk5MTVfZ2VtX29ial9vZmZzZXRf dmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAtCQkJCSAgICAgICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJCSAgICAgICBlbnVtIGk5MTVfZ2d0dF92aWV3 X3R5cGUgdmlldyk7Cj4gLXN0YXRpYyBpbmxpbmUKPiAtdW5zaWduZWQgbG9uZyBpOTE1X2dlbV9v Ympfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+IC0JCQkJICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArc3RhdGljIGlubGluZSBib29sIGk5MTVfaXNfZ2d0 dChzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4gKwo+ICt1bnNpZ25lZCBsb25nCj4g K2k5MTVfZ2VtX29ial9wcGd0dF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8s Cj4gKwkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOwo+ICt1bnNpZ25lZCBsb25n Cj4gK2k5MTVfZ2VtX29ial9nZ3R0X29mZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0ICpvLAo+ICsJCQkgICAgICBlbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgdmlldyk7Cj4gK3N0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+ICtpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8pCj4gICB7Cj4gLQlyZXR1cm4gaTkxNV9nZW1fb2Jq X29mZnNldF92aWV3KG8sIHZtLCBJOTE1X0dHVFRfVklFV19OT1JNQUwpOwo+ICsJcmV0dXJuIGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldF92aWV3KG8sIEk5MTVfR0dUVF9WSUVXX05PUk1BTCk7Cj4g ICB9Cj4gLWJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kX2FueShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqbyk7Cj4gLWJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kX3ZpZXcoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm8sCj4gLQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4gLQkJCSAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpOwo+IC1zdGF0aWMgaW5s aW5lCj4gLWJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvLAo+IC0JCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArCj4gK3N0YXRpYyBp bmxpbmUgdW5zaWduZWQgbG9uZwo+ICtpOTE1X2dlbV9vYmpfb2Zmc2V0KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvLAo+ICsJCSAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkK PiAgIHsKPiAtCXJldHVybiBpOTE1X2dlbV9vYmpfYm91bmRfdmlldyhvLCB2bSwgSTkxNV9HR1RU X1ZJRVdfTk9STUFMKTsKPiArCWlmIChpOTE1X2lzX2dndHQodm0pKQo+ICsJCXJldHVybiBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXQobyk7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fb2JqX3BwZ3R0X29m ZnNldChvLCB2bSk7Cj4gICB9Cj4KPiArYm9vbCBpOTE1X2dlbV9vYmpfYm91bmRfYW55KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvKTsKPiArYm9vbCBpOTE1X2dlbV9vYmpfYm91bmQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gKwkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtKTsKPiArYm9vbCBpOTE1X2dlbV9vYmpfZ2d0dF9ib3VuZF92aWV3KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJCQkgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2 aWV3KTsKPiArCj4gICB1bnNpZ25lZCBsb25nIGk5MTVfZ2VtX29ial9zaXplKHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvLAo+ICAgCQkJCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZt KTsKPiAtc3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fdm1hX3ZpZXcoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtLAo+ICtzdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29ial90b19wcGd0dF92bWEoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJCQkgICBzdHJ1Y3QgaTkxNV9hZGRy ZXNzX3NwYWNlICp2bSk7Cj4gK3N0cnVjdCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX2dndHRf dm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJCQkJCSAgY29uc3Qgc3Ry dWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiAgIHN0YXRpYyBpbmxpbmUKPiAgIHN0cnVjdCBp OTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+ICAgCQkJCSAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4g LQlyZXR1cm4gaTkxNV9nZW1fb2JqX3RvX3ZtYV92aWV3KG9iaiwgdm0sICZpOTE1X2dndHRfdmll d19ub3JtYWwpOwo+ICsJaWYgKGk5MTVfaXNfZ2d0dCh2bSkpCj4gKwkJcmV0dXJuIGk5MTVfZ2Vt X29ial90b19nZ3R0X3ZtYShvYmosICZpOTE1X2dndHRfdmlld19ub3JtYWwpOwo+ICsJcmV0dXJu IGk5MTVfZ2VtX29ial90b19wcGd0dF92bWEob2JqLCB2bSk7Cj4gICB9Cj4KPiAgIHN0cnVjdCBp OTE1X3ZtYSAqCj4gLWk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX3ZtYV92aWV3KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gK2k5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX3BwZ3R0X3Zt YShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkJCXN0cnVjdCBpOTE1X2Fk ZHJlc3Nfc3BhY2UgKnZtKTsKPiArc3RydWN0IGk5MTVfdm1hICoKPiAraTkxNV9nZW1fb2JqX2xv b2t1cF9vcl9jcmVhdGVfZ2d0dF92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiAgIAkJCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPgo+ICAg c3RhdGljIGlubGluZQo+IEBAIC0yODI3LDggKzI4MzcsOSBAQCBzdHJ1Y3QgaTkxNV92bWEgKgo+ ICAgaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gICAJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAg IHsKPiAtCXJldHVybiBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWFfdmlldyhvYmos IHZtLAo+IC0JCQkJCQkmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKPiArCWlmIChpOTE1X2lzX2dn dHQodm0pKQo+ICsJCXJldHVybiBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV9nZ3R0X3Zt YShvYmosICZpOTE1X2dndHRfdmlld19ub3JtYWwpOwo+ICsJcmV0dXJuIGk5MTVfZ2VtX29ial9s b29rdXBfb3JfY3JlYXRlX3BwZ3R0X3ZtYShvYmosIHZtKTsKPiAgIH0KPgo+ICAgc3RydWN0IGk5 MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqKTsKPiBAQCAtMjg2MSwxMyArMjg3Miw3IEBAIGk5MTVfdm1fdG9fcHBndHQoc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4KPiAgIHN0YXRpYyBpbmxpbmUgYm9vbCBpOTE1X2dlbV9v YmpfZ2d0dF9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgewo+IC0J cmV0dXJuIGk5MTVfZ2VtX29ial9ib3VuZChvYmosIGk5MTVfb2JqX3RvX2dndHQob2JqKSk7Cj4g LX0KPiAtCj4gLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+IC1pOTE1X2dlbV9vYmpfZ2d0 dF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAtewo+IC0JcmV0dXJu IGk5MTVfZ2VtX29ial9vZmZzZXQob2JqLCBpOTE1X29ial90b19nZ3R0KG9iaikpOwo+ICsJcmV0 dXJuIGk5MTVfZ2VtX29ial9nZ3R0X2JvdW5kX3ZpZXcob2JqLCBJOTE1X0dHVFRfVklFV19OT1JN QUwpOwo+ICAgfQo+Cj4gICBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGxvbmcKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtLmMKPiBpbmRleCAzODMxY2MwLi5kNmVkYmVmIDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gQEAgLTM1MTcsOSArMzUxNyw5IEBAIHN0YXRpYyBib29sIGk5MTVfZ2VtX3Zh bGlkX2d0dF9zcGFjZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgIHN0YXRpYyBzdHJ1Y3QgaTkx NV92bWEgKgo+ICAgaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwKPiAgIAkJCSAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ ICsJCQkgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldywKPiAgIAkJCSAg IHVuc2lnbmVkIGFsaWdubWVudCwKPiAtCQkJICAgdWludDY0X3QgZmxhZ3MsCj4gLQkJCSAgIGNv bnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKPiArCQkJICAgdWludDY0X3QgZmxhZ3Mp Cj4gICB7Cj4gICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IG9iai0+YmFzZS5kZXY7Cj4gICAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPiBA QCAtMzUzMSw2ICszNTMxLDkgQEAgaTkxNV9nZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAlp bnQgcmV0Owo+Cj4gKwlpZihXQVJOX09OKCFpOTE1X2lzX2dndHQodm0pIF4gISFnZ3R0X3ZpZXcp KQo+ICsJCXJldHVybiBFUlJfUFRSKC1FSU5WQUwpOwo+ICsKPiAgIAlmZW5jZV9zaXplID0gaTkx NV9nZW1fZ2V0X2d0dF9zaXplKGRldiwKPiAgIAkJCQkJICAgb2JqLT5iYXNlLnNpemUsCj4gICAJ CQkJCSAgIG9iai0+dGlsaW5nX21vZGUpOwo+IEBAIC0zNTY5LDcgKzM1NzIsMTEgQEAgaTkxNV9n ZW1fb2JqZWN0X2JpbmRfdG9fdm0oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPgo+ ICAgCWk5MTVfZ2VtX29iamVjdF9waW5fcGFnZXMob2JqKTsKPgo+IC0Jdm1hID0gaTkxNV9nZW1f b2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hX3ZpZXcob2JqLCB2bSwgdmlldyk7Cj4gKwlpZiAoaTkx NV9pc19nZ3R0KHZtKSkKPiArCQl2bWEgPSBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV9n Z3R0X3ZtYShvYmosIGdndHRfdmlldyk7Cj4gKwllbHNlCj4gKwkJdm1hID0gaTkxNV9nZW1fb2Jq X2xvb2t1cF9vcl9jcmVhdGVfcHBndHRfdm1hKG9iaiwgdm0pOwo+ICsKPiAgIAlpZiAoSVNfRVJS KHZtYSkpCj4gICAJCWdvdG8gZXJyX3VucGluOwo+Cj4gQEAgLTQxNjYsMTQgKzQxNzMsMTUgQEAg aTkxNV92bWFfbWlzcGxhY2VkKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCB1aW50MzJfdCBhbGlnbm1l bnQsIHVpbnQ2NF90IGZsYWdzKQo+ICAgCXJldHVybiBmYWxzZTsKPiAgIH0KPgo+IC1pbnQKPiAt aTkxNV9nZW1fb2JqZWN0X3Bpbl92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gLQkJCSBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJIHVpbnQzMl90IGFs aWdubWVudCwKPiAtCQkJIHVpbnQ2NF90IGZsYWdzLAo+IC0JCQkgY29uc3Qgc3RydWN0IGk5MTVf Z2d0dF92aWV3ICp2aWV3KQo+ICtzdGF0aWMgaW50Cj4gK2k5MTVfZ2VtX29iamVjdF9kb19waW4o c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkgICAgICAgc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmll dyAqZ2d0dF92aWV3LAo+ICsJCSAgICAgICB1aW50MzJfdCBhbGlnbm1lbnQsCj4gKwkJICAgICAg IHVpbnQ2NF90IGZsYWdzKQo+ICAgewo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJY29uc3QgYm9vbCBpc19nZ3R0 ID0gaTkxNV9pc19nZ3R0KHZtKTsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAgIAl1bnNp Z25lZCBib3VuZDsKPiAgIAlpbnQgcmV0Owo+IEBAIC00MTgxLDIzICs0MTg5LDMyIEBAIGk5MTVf Z2VtX29iamVjdF9waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAg CWlmIChXQVJOX09OKHZtID09ICZkZXZfcHJpdi0+bW0uYWxpYXNpbmdfcHBndHQtPmJhc2UpKQo+ ICAgCQlyZXR1cm4gLUVOT0RFVjsKPgo+IC0JaWYgKFdBUk5fT04oZmxhZ3MgJiAoUElOX0dMT0JB TCB8IFBJTl9NQVBQQUJMRSkgJiYgIWk5MTVfaXNfZ2d0dCh2bSkpKQo+ICsJaWYgKFdBUk5fT04o ZmxhZ3MgJiAoUElOX0dMT0JBTCB8IFBJTl9NQVBQQUJMRSkpKQo+ICAgCQlyZXR1cm4gLUVJTlZB TDsKPgo+ICAgCWlmIChXQVJOX09OKChmbGFncyAmIChQSU5fTUFQUEFCTEUgfCBQSU5fR0xPQkFM KSkgPT0gUElOX01BUFBBQkxFKSkKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4KPiAtCXZtYSA9IGk5 MTVfZ2VtX29ial90b192bWFfdmlldyhvYmosIHZtLCB2aWV3KTsKPiArCWlmIChXQVJOX09OKCFp c19nZ3R0IF4gISFnZ3R0X3ZpZXcpKQo+ICsJCXJldHVybiAtRUlOVkFMOwo+ICsKPiArCXZtYSA9 IGlzX2dndHQgPyBpOTE1X2dlbV9vYmpfdG9fZ2d0dF92bWEob2JqLCBnZ3R0X3ZpZXcpIDoKPiAr CQkJaTkxNV9nZW1fb2JqX3RvX3BwZ3R0X3ZtYShvYmosIHZtKTsKPiArCj4gICAJaWYgKHZtYSkg ewo+ICAgCQlpZiAoV0FSTl9PTih2bWEtPnBpbl9jb3VudCA9PSBEUk1fSTkxNV9HRU1fT0JKRUNU X01BWF9QSU5fQ09VTlQpKQo+ICAgCQkJcmV0dXJuIC1FQlVTWTsKPgo+ICAgCQlpZiAoaTkxNV92 bWFfbWlzcGxhY2VkKHZtYSwgYWxpZ25tZW50LCBmbGFncykpIHsKPiArCQkJdW5zaWduZWQgbG9u ZyBvZmZzZXQ7Cj4gKwkJCW9mZnNldCA9IGlzX2dndHQgPyBpOTE1X2dlbV9vYmpfZ2d0dF9vZmZz ZXRfdmlldyhvYmosIGdndHRfdmlldy0+dHlwZSkgOgo+ICsJCQkJCSAgIGk5MTVfZ2VtX29ial9w cGd0dF9vZmZzZXQob2JqLCB2bSk7Cj4gICAJCQlXQVJOKHZtYS0+cGluX2NvdW50LAo+IC0JCQkg ICAgICJibyBpcyBhbHJlYWR5IHBpbm5lZCB3aXRoIGluY29ycmVjdCBhbGlnbm1lbnQ6Igo+ICsJ CQkgICAgICJibyBpcyBhbHJlYWR5IHBpbm5lZCBpbiAlcyB3aXRoIGluY29ycmVjdCBhbGlnbm1l bnQ6Igo+ICAgCQkJICAgICAiIG9mZnNldD0lbHgsIHJlcS5hbGlnbm1lbnQ9JXgsIHJlcS5tYXBf YW5kX2ZlbmNlYWJsZT0lZCwiCj4gICAJCQkgICAgICIgb2JqLT5tYXBfYW5kX2ZlbmNlYWJsZT0l ZFxuIiwKPiAtCQkJICAgICBpOTE1X2dlbV9vYmpfb2Zmc2V0X3ZpZXcob2JqLCB2bSwgdmlldy0+ dHlwZSksCj4gKwkJCSAgICAgaXNfZ2d0dCA/ICJnZ3R0IiA6ICJwcGd0dCIsCj4gKwkJCSAgICAg b2Zmc2V0LAo+ICAgCQkJICAgICBhbGlnbm1lbnQsCj4gICAJCQkgICAgICEhKGZsYWdzICYgUElO X01BUFBBQkxFKSwKPiAgIAkJCSAgICAgb2JqLT5tYXBfYW5kX2ZlbmNlYWJsZSk7Cj4gQEAgLTQy MTEsOCArNDIyOCw4IEBAIGk5MTVfZ2VtX29iamVjdF9waW5fdmlldyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+Cj4gICAJYm91bmQgPSB2bWEgPyB2bWEtPmJvdW5kIDogMDsKPiAg IAlpZiAodm1hID09IE5VTEwgfHwgIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkg ewo+IC0JCXZtYSA9IGk5MTVfZ2VtX29iamVjdF9iaW5kX3RvX3ZtKG9iaiwgdm0sIGFsaWdubWVu dCwKPiAtCQkJCQkJIGZsYWdzLCB2aWV3KTsKPiArCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfYmlu ZF90b192bShvYmosIHZtLCBnZ3R0X3ZpZXcsIGFsaWdubWVudCwKPiArCQkJCQkJIGZsYWdzKTsK PiAgIAkJaWYgKElTX0VSUih2bWEpKQo+ICAgCQkJcmV0dXJuIFBUUl9FUlIodm1hKTsKPiAgIAl9 Cj4gQEAgLTQyNTMsNiArNDI3MCwyNyBAQCBpOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+ICtpbnQK PiAraTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ICsJCSAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkgICAgdWludDMyX3Qg YWxpZ25tZW50LAo+ICsJCSAgICB1aW50NjRfdCBmbGFncykKPiArewo+ICsJY29uc3Qgc3RydWN0 IGk5MTVfZ2d0dF92aWV3ICpnZ3R0X3ZpZXc7Cj4gKwlnZ3R0X3ZpZXcgPSBpOTE1X2lzX2dndHQo dm0pID8gJmk5MTVfZ2d0dF92aWV3X25vcm1hbCA6IE5VTEw7Cj4gKwlyZXR1cm4gaTkxNV9nZW1f b2JqZWN0X2RvX3BpbihvYmosIHZtLCBnZ3R0X3ZpZXcsIGFsaWdubWVudCwgZmxhZ3MpOwo+ICt9 Cj4gKwo+ICtpbnQKPiAraTkxNV9nZW1fb2JqZWN0X2dndHRfcGluKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCj4gKwkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRf dmlldywKPiArCQkJIHVpbnQzMl90IGFsaWdubWVudCwKPiArCQkJIHVpbnQ2NF90IGZsYWdzKQo+ ICt7Cj4gKwlyZXR1cm4gaTkxNV9nZW1fb2JqZWN0X2RvX3BpbihvYmosIGk5MTVfb2JqX3RvX2dn dHQob2JqKSwgZ2d0dF92aWV3LAo+ICsJCQkJICAgICAgYWxpZ25tZW50LCBmbGFncyk7Cj4gK30K PiArCj4gICB2b2lkCj4gICBpOTE1X2dlbV9vYmplY3RfZ2d0dF91bnBpbihzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqKQo+ICAgewo+IEBAIC00NTU4LDE1ICs0NTk2LDI0IEBAIHZvaWQg aTkxNV9nZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW1fb2JqKQo+ICAg CWludGVsX3J1bnRpbWVfcG1fcHV0KGRldl9wcml2KTsKPiAgIH0KPgo+IC1zdHJ1Y3QgaTkxNV92 bWEgKmk5MTVfZ2VtX29ial90b192bWFfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqLAo+IC0JCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCQkJICBj b25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gK3N0cnVjdCBpOTE1X3ZtYSAqaTkx NV9nZW1fb2JqX3RvX3BwZ3R0X3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ICsJCQkJCSAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgewo+ICAgCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFf bGlzdCwgdm1hX2xpbmspCj4gLQkJaWYgKHZtYS0+dm0gPT0gdm0gJiYgdm1hLT5nZ3R0X3ZpZXcu dHlwZSA9PSB2aWV3LT50eXBlKQo+ICsJCWlmICh2bWEtPnZtID09IHZtKQo+ICAgCQkJcmV0dXJu IHZtYTsKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4KPiArc3RydWN0IGk5MTVfdm1hICppOTE1X2dl bV9vYmpfdG9fZ2d0dF92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJ CQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKPiArewo+ICsJc3RydWN0IGk5 MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9IGk5MTVfb2JqX3RvX2dndHQob2JqKTsKPiArCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9s aXN0LCB2bWFfbGluaykKPiArCQlpZiAodm1hLT52bSA9PSBnZ3R0ICYmIHZtYS0+Z2d0dF92aWV3 LnR5cGUgPT0gdmlldy0+dHlwZSkKPiArCQkJcmV0dXJuIHZtYTsKPiAgIAlyZXR1cm4gTlVMTDsK PiAgIH0KPgo+IEBAIC01MTYxLDMzICs1MjA4LDYyIEBAIGk5MTVfZ2VtX3Nocmlua2VyX2NvdW50 KHN0cnVjdCBzaHJpbmtlciAqc2hyaW5rZXIsIHN0cnVjdCBzaHJpbmtfY29udHJvbCAqc2MpCj4g ICB9Cj4KPiAgIC8qIEFsbCB0aGUgbmV3IFZNIHN0dWZmICovCj4gLXVuc2lnbmVkIGxvbmcgaTkx NV9nZW1fb2JqX29mZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+IC0J CQkJICAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkJICAgICAgIGVu dW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KQo+ICt1bnNpZ25lZCBsb25nCj4gK2k5MTVfZ2Vt X29ial9wcGd0dF9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gKwkJCSAg c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gICAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gby0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICAgCXN0cnVj dCBpOTE1X3ZtYSAqdm1hOwo+Cj4gKwlCVUdfT04odm0gPT0gaTkxNV9vYmpfdG9fZ2d0dChvKSk7 Cj4gICAJV0FSTl9PTih2bSA9PSAmZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0LT5iYXNlKTsK Pgo+ICAgCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9saW5rKSB7 Cj4gLQkJaWYgKHZtYS0+dm0gPT0gdm0gJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSB2aWV3KQo+ ICsJCWlmICh2bWEtPnZtID09IHZtKQo+ICAgCQkJcmV0dXJuIHZtYS0+bm9kZS5zdGFydDsKPiAr CX0KPiArCj4gKwlXQVJOKDEsICJwcGd0dCB2bWEgZm9yIHRoaXMgb2JqZWN0IG5vdCBmb3VuZC5c biIpOwo+ICsJcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICt1bnNpZ25lZCBsb25nCj4gK2k5MTVfZ2Vt X29ial9nZ3R0X29mZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJ CQkgICAgICBlbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgdmlldykKPiArewo+ICsJc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gby0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+ICsJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9IGk5MTVfb2JqX3RvX2dndHQobyk7Cj4g KwlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPgo+ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZv LT52bWFfbGlzdCwgdm1hX2xpbmspIHsKPiArCQlpZiAodm1hLT52bSA9PSBnZ3R0ICYmIHZtYS0+ Z2d0dF92aWV3LnR5cGUgPT0gdmlldykKPiArCQkJcmV0dXJuIHZtYS0+bm9kZS5zdGFydDsKPiAg IAl9Cj4gLQlXQVJOKDEsICIlcyB2bWEgZm9yIHRoaXMgb2JqZWN0IG5vdCBmb3VuZC5cbiIsCj4g LQkgICAgIGk5MTVfaXNfZ2d0dCh2bSkgPyAiZ2xvYmFsIiA6ICJwcGd0dCIpOwo+ICsKPiArCVdB Uk4oMSwgImdsb2JhbCB2bWEgZm9yIHRoaXMgb2JqZWN0IG5vdCBmb3VuZC5cbiIpOwo+ICAgCXJl dHVybiAtMTsKPiAgIH0KPgo+IC1ib29sIGk5MTVfZ2VtX29ial9ib3VuZF92aWV3KHN0cnVjdCBk cm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+IC0JCQkgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3Bh Y2UgKnZtLAo+IC0JCQkgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KQo+ICtib29s IGk5MTVfZ2VtX29ial9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiArCQkJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gICAJc3RydWN0IGk5MTVfdm1h ICp2bWE7Cj4KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm8tPnZtYV9saXN0LCB2bWFf bGluaykKPiAtCQlpZiAodm1hLT52bSA9PSB2bSAmJgo+ICsJCWlmICh2bWEtPnZtID09IHZtICYm IGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPiArCQkJcmV0dXJuIHRydWU7Cj4g Kwo+ICsJcmV0dXJuIGZhbHNlOwo+ICt9Cj4gKwo+ICtib29sIGk5MTVfZ2VtX29ial9nZ3R0X2Jv dW5kX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gKwkJCQkgIGVudW0gaTkx NV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICpnZ3R0ID0gaTkxNV9vYmpfdG9fZ2d0dChvKTsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9saW5rKQo+ ICsJCWlmICh2bWEtPnZtID09IGdndHQgJiYKPiAgIAkJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUg PT0gdmlldyAmJgo+ICAgCQkgICAgZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5vZGUpKQo+ ICAgCQkJcmV0dXJuIHRydWU7Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiBpbmRl eCAyMDM0ZjdjLi5lYjQ2ODA0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMK PiBAQCAtMTc1Nyw3ICsxNzU3LDcgQEAgc3RhdGljIHZvaWQgZ2d0dF9iaW5kX3ZtYShzdHJ1Y3Qg aTkxNV92bWEgKnZtYSwKPiAgIAkgICAgIChjYWNoZV9sZXZlbCAhPSBvYmotPmNhY2hlX2xldmVs KSkpIHsKPiAgIAkJc3RydWN0IGk5MTVfaHdfcHBndHQgKmFwcGd0dCA9IGRldl9wcml2LT5tbS5h bGlhc2luZ19wcGd0dDsKPiAgIAkJYXBwZ3R0LT5iYXNlLmluc2VydF9lbnRyaWVzKCZhcHBndHQt PmJhc2UsCj4gLQkJCQkJICAgIHZtYS0+Z2d0dF92aWV3LnBhZ2VzLAo+ICsJCQkJCSAgICB2bWEt Pm9iai0+cGFnZXMsCj4gICAJCQkJCSAgICB2bWEtPm5vZGUuc3RhcnQsCj4gICAJCQkJCSAgICBj YWNoZV9sZXZlbCwgZmxhZ3MpOwo+ICAgCQl2bWEtPmJvdW5kIHw9IExPQ0FMX0JJTkQ7Cj4gQEAg LTIzMzEsOSArMjMzMSwxMCBAQCBpbnQgaTkxNV9nZW1fZ3R0X2luaXQoc3RydWN0IGRybV9kZXZp Y2UgKmRldikKPiAgIAlyZXR1cm4gMDsKPiAgIH0KPgo+IC1zdGF0aWMgc3RydWN0IGk5MTVfdm1h ICpfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiAtCQkJCQkgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiAtCQkJCQkgICAg ICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gK3N0YXRpYyBzdHJ1Y3QgaTkx NV92bWEgKgo+ICtfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaiwKPiArCQkgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkg ICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldykKPiAgIHsKPiAgIAlz dHJ1Y3QgaTkxNV92bWEgKnZtYSA9IGt6YWxsb2Moc2l6ZW9mKCp2bWEpLCBHRlBfS0VSTkVMKTsK PiAgIAlpZiAodm1hID09IE5VTEwpCj4gQEAgLTIzNDQsMTggKzIzNDUsMjMgQEAgc3RhdGljIHN0 cnVjdCBpOTE1X3ZtYSAqX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gICAJSU5JVF9MSVNUX0hFQUQoJnZtYS0+ZXhlY19saXN0KTsKPiAgIAl2 bWEtPnZtID0gdm07Cj4gICAJdm1hLT5vYmogPSBvYmo7Cj4gLQl2bWEtPmdndHRfdmlldyA9ICp2 aWV3Owo+Cj4gICAJaWYgKElOVEVMX0lORk8odm0tPmRldiktPmdlbiA+PSA2KSB7Cj4gICAJCWlm IChpOTE1X2lzX2dndHQodm0pKSB7Cj4gKwkJCUJVR19PTighZ2d0dF92aWV3KTsKPiArCQkJdm1h LT5nZ3R0X3ZpZXcgPSAqZ2d0dF92aWV3Owo+ICsKPiAgIAkJCXZtYS0+dW5iaW5kX3ZtYSA9IGdn dHRfdW5iaW5kX3ZtYTsKPiAgIAkJCXZtYS0+YmluZF92bWEgPSBnZ3R0X2JpbmRfdm1hOwo+ICAg CQl9IGVsc2Ugewo+ICsJCQlCVUdfT04oZ2d0dF92aWV3KTsKPiAgIAkJCXZtYS0+dW5iaW5kX3Zt YSA9IHBwZ3R0X3VuYmluZF92bWE7Cj4gICAJCQl2bWEtPmJpbmRfdm1hID0gcHBndHRfYmluZF92 bWE7Cj4gICAJCX0KPiAgIAl9IGVsc2Ugewo+ICAgCQlCVUdfT04oIWk5MTVfaXNfZ2d0dCh2bSkp Owo+ICsJCUJVR19PTighZ2d0dF92aWV3KTsKPiArCQl2bWEtPmdndHRfdmlldyA9ICpnZ3R0X3Zp ZXc7Cj4gICAJCXZtYS0+dW5iaW5kX3ZtYSA9IGk5MTVfZ2d0dF91bmJpbmRfdm1hOwo+ICAgCQl2 bWEtPmJpbmRfdm1hID0gaTkxNV9nZ3R0X2JpbmRfdm1hOwo+ICAgCX0KPiBAQCAtMjM2OCwyMyAr MjM3NCwzOCBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUo c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIH0KPgo+ICAgc3RydWN0IGk5MTVf dm1hICoKPiAtaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfdm1hX3ZpZXcoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNz X3NwYWNlICp2bSwKPiAraTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfcHBndHRfdm1hKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkJc3RydWN0IGk5MTVfYWRkcmVz c19zcGFjZSAqdm0pCj4gK3sKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsKPiArCXZtYSA9 IGk5MTVfZ2VtX29ial90b19wcGd0dF92bWEob2JqLCB2bSk7Cj4gKwlpZiAoIXZtYSkKPiArCQl2 bWEgPSBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUob2JqLCB2bSwgTlVMTCk7Cj4gKwo+ICsJcmV0dXJu IHZtYTsKPiArfQo+ICsKPiArc3RydWN0IGk5MTVfdm1hICoKPiAraTkxNV9nZW1fb2JqX2xvb2t1 cF9vcl9jcmVhdGVfZ2d0dF92bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAg IAkJCQkgICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+ICAgewo+ICsJ c3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqZ2d0dCA9IGk5MTVfb2JqX3RvX2dndHQob2JqKTsK PiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPgo+IC0Jdm1hID0gaTkxNV9nZW1fb2JqX3RvX3Zt YV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqX3RvX2dndHRfdm1h KG9iaiwgdmlldyk7Cj4gICAJaWYgKCF2bWEpCj4gLQkJdm1hID0gX19pOTE1X2dlbV92bWFfY3Jl YXRlKG9iaiwgdm0sIHZpZXcpOwo+ICsJCXZtYSA9IF9faTkxNV9nZW1fdm1hX2NyZWF0ZShvYmos IGdndHQsIHZpZXcpOwo+Cj4gICAJcmV0dXJuIHZtYTsKPiArCj4gICB9Cj4KPiArCj4gICBzdGF0 aWMgaW5saW5lCj4gICBpbnQgaTkxNV9nZXRfdm1hX3BhZ2VzKHN0cnVjdCBpOTE1X3ZtYSAqdm1h KQo+ICAgewo+IC0JaWYgKHZtYS0+Z2d0dF92aWV3LnBhZ2VzKQo+ICsJaWYgKCFpOTE1X2lzX2dn dHQodm1hLT52bSkgfHwgdm1hLT5nZ3R0X3ZpZXcucGFnZXMpCj4gICAJCXJldHVybiAwOwo+Cj4g ICAJaWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+Cl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==