From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v2] drm/i915: Do not use ggtt_view with (aliasing) PPGTT Date: Thu, 12 Mar 2015 12:21:23 +0000 Message-ID: <550184C3.6050704@linux.intel.com> References: <1426158633.19885.4.camel@jlahtine-mobl1> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 5DDCA6E975 for ; Thu, 12 Mar 2015 05:21:25 -0700 (PDT) In-Reply-To: <1426158633.19885.4.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 , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org CkhpLAoKTXVjaCBtb3JlIGxpa2VhYmxlIGluIGdlbmVyYWwsIHNvbWUgY29tbWVudHMgaW5saW5l OgoKT24gMDMvMTIvMjAxNSAxMToxMCBBTSwgSm9vbmFzIExhaHRpbmVuIHdyb3RlOgo+IEdHVFQg dmlld3MgYXJlIG9ubHkgYXBwbGljYWJsZSB3aGVuIGRlYWxpbmcgd2l0aCBHR1RULiBDaGFuZ2Ug dGhlIGNvZGUgdG8KPiByZWplY3QgZ2d0dF92aWV3IHdoZXJlIGl0IHNob3VsZCBub3QgYmUgdXNl ZCBhbmQgcmVxdWlyZSBpdCB3aGVuIGl0IHNob3VsZAo+IGJlLgo+Cj4gdjI6Cj4gLSBEcm9wcGVk IF9wcGd0dF8gaW5maXhlcywgYWxsb3cgYm90aCB0eXBlcyB0byBiZSBwYXNzZWQKPiAtIERpc3Jl Z2FyZCBvdGhlciBidXQgbm9ybWFsIHZpZXdzIHdoZW4gbm8gdmlldyBpcyBzcGVjaWZpZWQKPiAt IE1vcmUgY2hlY2tzIHRoYXQgdmFsaWQgcGFyYW1ldGVycyBhcmUgcGFzc2VkCj4gLSBNb3JlIHJl YWRhYmxlIGVycm9yIGNoZWNraW5nCj4KPiBTaWduZWQtb2ZmLWJ5OiBKb29uYXMgTGFodGluZW4g PGpvb25hcy5sYWh0aW5lbkBsaW51eC5pbnRlbC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oICAgICB8IDEwMiArKysrKysrKystLS0tLS0tLS0tLS0tCj4gICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICB8IDE2OSArKysrKysrKysrKysrKysr KysrKysrKysrKystLS0tLS0tLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0 dC5jIHwgIDY3ICsrKysrKysrKystLS0tCj4gICAzIGZpbGVzIGNoYW5nZWQsIDIxOSBpbnNlcnRp b25zKCspLCAxMTkgZGVsZXRpb25zKC0pCj4KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPiBpbmRl eCBhODBiMTVmLi44YjdkNGY5IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4gQEAgLTI2 MjAsMjAgKzI2MjAsMTYgQEAgdm9pZCBpOTE1X2dlbV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSk7Cj4gICAjZGVmaW5lIFBJTl9HTE9CQUwgMHg0Cj4gICAjZGVmaW5lIFBJTl9PRkZT RVRfQklBUyAweDgKPiAgICNkZWZpbmUgUElOX09GRlNFVF9NQVNLICh+NDA5NSkKPiAtaW50IF9f bXVzdF9jaGVjayBpOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm9iaiwKPiAtCQkJCQkgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0J CQkJCSAgdWludDMyX3QgYWxpZ25tZW50LAo+IC0JCQkJCSAgdWludDY0X3QgZmxhZ3MsCj4gLQkJ CQkJICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+IC1zdGF0aWMgaW5saW5l Cj4gLWludCBfX211c3RfY2hlY2sgaTkxNV9nZW1fb2JqZWN0X3BpbihzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqb2JqLAo+IC0JCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPiAtCQkJCSAgICAgdWludDMyX3QgYWxpZ25tZW50LAo+IC0JCQkJICAgICB1aW50NjRfdCBm bGFncykKPiAtewo+IC0JcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9waW5fdmlldyhvYmosIHZtLCBh bGlnbm1lbnQsIGZsYWdzLAo+IC0JCQkJCQkmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKPiAtfQo+ ICtpbnQgX19tdXN0X2NoZWNrCj4gK2k5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPiArCQkgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4gKwkJICAgIHVpbnQzMl90IGFsaWdubWVudCwKPiArCQkgICAgdWludDY0X3QgZmxhZ3MpOwo+ ICtpbnQgX19tdXN0X2NoZWNrCj4gK2k5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3 ICp2aWV3LAo+ICsJCQkgdWludDMyX3QgYWxpZ25tZW50LAo+ICsJCQkgdWludDY0X3QgZmxhZ3Mp Owo+Cj4gICBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgZW51bSBpOTE1 X2NhY2hlX2xldmVsIGNhY2hlX2xldmVsLAo+ICAgCQkgIHUzMiBmbGFncyk7Cj4gQEAgLTI3OTcs NjAgKzI3OTMsNDggQEAgc3RydWN0IGRtYV9idWYgKmk5MTVfZ2VtX3ByaW1lX2V4cG9ydChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAo+Cj4gICB2b2lkIGk5MTVfZ2VtX3Jlc3RvcmVfZmVuY2VzKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYpOwo+Cj4gLXVuc2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29m ZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+IC0JCQkJICAgICAgIHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+IC0JCQkJICAgICAgIGVudW0gaTkxNV9nZ3R0 X3ZpZXdfdHlwZSB2aWV3KTsKPiAtc3RhdGljIGlubGluZQo+IC11bnNpZ25lZCBsb25nIGk5MTVf Z2VtX29ial9vZmZzZXQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gLQkJCQkgIHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaTkxNV9p c19nZ3R0KHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKPiArCj4gK3Vuc2lnbmVkIGxv bmcKPiAraTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9v YmplY3QgKm8sCj4gKwkJCSAgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB2aWV3KTsKPiAr dW5zaWduZWQgbG9uZwo+ICtpOTE1X2dlbV9vYmpfb2Zmc2V0KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvLAo+ICsJCSAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4gK3N0 YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+ICtpOTE1X2dlbV9vYmpfZ2d0dF9vZmZzZXQoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8pCj4gICB7Cj4gLQlyZXR1cm4gaTkxNV9nZW1fb2Jq X29mZnNldF92aWV3KG8sIHZtLCBJOTE1X0dHVFRfVklFV19OT1JNQUwpOwo+ICsJcmV0dXJuIGk5 MTVfZ2VtX29ial9nZ3R0X29mZnNldF92aWV3KG8sIEk5MTVfR0dUVF9WSUVXX05PUk1BTCk7Cj4g ICB9Cj4gKwo+ICAgYm9vbCBpOTE1X2dlbV9vYmpfYm91bmRfYW55KHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvKTsKPiAtYm9vbCBpOTE1X2dlbV9vYmpfYm91bmRfdmlldyhzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqbywKPiAtCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNl ICp2bSwKPiAtCQkJICAgICBlbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgdmlldyk7Cj4gLXN0YXRp YyBpbmxpbmUKPiArYm9vbCBpOTE1X2dlbV9vYmpfZ2d0dF9ib3VuZF92aWV3KHN0cnVjdCBkcm1f aTkxNV9nZW1fb2JqZWN0ICpvLAo+ICsJCQkJICBlbnVtIGk5MTVfZ2d0dF92aWV3X3R5cGUgdmll dyk7Cj4gICBib29sIGk5MTVfZ2VtX29ial9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqbywKPiAtCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gLXsKPiAtCXJldHVy biBpOTE1X2dlbV9vYmpfYm91bmRfdmlldyhvLCB2bSwgSTkxNV9HR1RUX1ZJRVdfTk9STUFMKTsK PiAtfQo+ICsJCQlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4KPiAgIHVuc2lnbmVk IGxvbmcgaTkxNV9nZW1fb2JqX3NpemUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4g ICAJCQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pOwo+IC1zdHJ1Y3QgaTkxNV92bWEg Kmk5MTVfZ2VtX29ial90b192bWFfdmlldyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq LAo+IC0JCQkJCSAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCQkJICBjb25z dCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+IC1zdGF0aWMgaW5saW5lCj4gLXN0cnVj dCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqLAo+IC0JCQkJICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiAtewo+ IC0JcmV0dXJuIGk5MTVfZ2VtX29ial90b192bWFfdmlldyhvYmosIHZtLCAmaTkxNV9nZ3R0X3Zp ZXdfbm9ybWFsKTsKPiAtfQo+IC0KPiAgIHN0cnVjdCBpOTE1X3ZtYSAqCj4gLWk5MTVfZ2VtX29i al9sb29rdXBfb3JfY3JlYXRlX3ZtYV92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpv YmosCj4gLQkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCQkg ICAgICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPiAraTkxNV9nZW1fb2Jq X3RvX3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCSAgICBzdHJ1Y3Qg aTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4gK3N0cnVjdCBpOTE1X3ZtYSAqCj4gK2k5MTVfZ2Vt X29ial90b19nZ3R0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiArCQkJ ICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpOwo+Cj4gLXN0YXRpYyBpbmxpbmUK PiAgIHN0cnVjdCBpOTE1X3ZtYSAqCj4gICBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92 bWEoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJCSAgc3RydWN0IGk5MTVf YWRkcmVzc19zcGFjZSAqdm0pCj4gLXsKPiAtCXJldHVybiBpOTE1X2dlbV9vYmpfbG9va3VwX29y X2NyZWF0ZV92bWFfdmlldyhvYmosIHZtLAo+IC0JCQkJCQkmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFs KTsKPiAtfQo+ICsJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSk7Cj4gK3N0cnVj dCBpOTE1X3ZtYSAqCj4gK2k5MTVfZ2VtX29ial9sb29rdXBfb3JfY3JlYXRlX2dndHRfdm1hKHN0 cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkgICAgICAgY29uc3Qgc3RydWN0 IGk5MTVfZ2d0dF92aWV3ICp2aWV3KTsKPgo+IC1zdHJ1Y3QgaTkxNV92bWEgKmk5MTVfZ2VtX29i al90b19nZ3R0KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+IC1zdGF0aWMgaW5s aW5lIGJvb2wgaTkxNV9nZW1fb2JqX2lzX3Bpbm5lZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqKSB7Cj4gLQlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiAtCWxpc3RfZm9yX2VhY2hfZW50 cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspCj4gLQkJaWYgKHZtYS0+cGluX2NvdW50 ID4gMCkKPiAtCQkJcmV0dXJuIHRydWU7Cj4gLQlyZXR1cm4gZmFsc2U7Cj4gK3N0YXRpYyBpbmxp bmUgc3RydWN0IGk5MTVfdm1hICoKPiAraTkxNV9nZW1fb2JqX3RvX2dndHQoc3RydWN0IGRybV9p OTE1X2dlbV9vYmplY3QgKm9iaikKPiArewo+ICsJcmV0dXJuIGk5MTVfZ2VtX29ial90b19nZ3R0 X3ZpZXcob2JqLCAmaTkxNV9nZ3R0X3ZpZXdfbm9ybWFsKTsKPiAgIH0KPiArYm9vbCBpOTE1X2dl bV9vYmpfaXNfcGlubmVkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopOwo+Cj4gICAv KiBTb21lIEdHVFQgVk0gaGVscGVycyAqLwo+ICAgI2RlZmluZSBpOTE1X29ial90b19nZ3R0KG9i aikgXAo+IEBAIC0yODczLDEzICsyODU3LDcgQEAgaTkxNV92bV90b19wcGd0dChzdHJ1Y3QgaTkx NV9hZGRyZXNzX3NwYWNlICp2bSkKPgo+ICAgc3RhdGljIGlubGluZSBib29sIGk5MTVfZ2VtX29i al9nZ3R0X2JvdW5kKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICB7Cj4gLQly ZXR1cm4gaTkxNV9nZW1fb2JqX2JvdW5kKG9iaiwgaTkxNV9vYmpfdG9fZ2d0dChvYmopKTsKPiAt fQo+IC0KPiAtc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCj4gLWk5MTVfZ2VtX29ial9nZ3R0 X29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+IC17Cj4gLQlyZXR1cm4g aTkxNV9nZW1fb2JqX29mZnNldChvYmosIGk5MTVfb2JqX3RvX2dndHQob2JqKSk7Cj4gKwlyZXR1 cm4gaTkxNV9nZW1fb2JqX2dndHRfYm91bmRfdmlldyhvYmosIEk5MTVfR0dUVF9WSUVXX05PUk1B TCk7Cj4gICB9Cj4KPiAgIHN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW0uYwo+IGluZGV4IDBmZTMxM2QuLmI2YzNiOWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtLmMKPiBAQCAtMzUxOCw5ICszNTE4LDkgQEAgc3RhdGljIGJvb2wgaTkxNV9nZW1fdmFs aWRfZ3R0X3NwYWNlKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgc3RhdGljIHN0cnVjdCBpOTE1 X3ZtYSAqCj4gICBpOTE1X2dlbV9vYmplY3RfYmluZF90b192bShzdHJ1Y3QgZHJtX2k5MTVfZ2Vt X29iamVjdCAqb2JqLAo+ICAgCQkJICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4g KwkJCSAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqZ2d0dF92aWV3LAo+ICAgCQkJICAg dW5zaWduZWQgYWxpZ25tZW50LAo+IC0JCQkgICB1aW50NjRfdCBmbGFncywKPiAtCQkJICAgY29u c3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+ICsJCQkgICB1aW50NjRfdCBmbGFncykK PiAgIHsKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gb2JqLT5iYXNlLmRldjsKPiAgIAlz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwo+IEBA IC0zNTMyLDYgKzM1MzIsOSBAQCBpOTE1X2dlbV9vYmplY3RfYmluZF90b192bShzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICAgCWlu dCByZXQ7Cj4KPiArCWlmKFdBUk5fT04oaTkxNV9pc19nZ3R0KHZtKSAhPSAhIWdndHRfdmlldykp Cj4gKwkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7Cj4gKwo+ICAgCWZlbmNlX3NpemUgPSBpOTE1 X2dlbV9nZXRfZ3R0X3NpemUoZGV2LAo+ICAgCQkJCQkgICBvYmotPmJhc2Uuc2l6ZSwKPiAgIAkJ CQkJICAgb2JqLT50aWxpbmdfbW9kZSk7Cj4gQEAgLTM1NzAsNyArMzU3Myw5IEBAIGk5MTVfZ2Vt X29iamVjdF9iaW5kX3RvX3ZtKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4KPiAg IAlpOTE1X2dlbV9vYmplY3RfcGluX3BhZ2VzKG9iaik7Cj4KPiAtCXZtYSA9IGk5MTVfZ2VtX29i al9sb29rdXBfb3JfY3JlYXRlX3ZtYV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICsJdm1hID0gZ2d0 dF92aWV3ID8gaTkxNV9nZW1fb2JqX2xvb2t1cF9vcl9jcmVhdGVfZ2d0dF92bWEob2JqLCBnZ3R0 X3ZpZXcpIDoKPiArCQkJICBpOTE1X2dlbV9vYmpfbG9va3VwX29yX2NyZWF0ZV92bWEob2JqLCB2 bSk7Cj4gKwo+ICAgCWlmIChJU19FUlIodm1hKSkKPiAgIAkJZ290byBlcnJfdW5waW47Cj4KPiBA QCAtNDE2NywxMiArNDE3MiwxMiBAQCBpOTE1X3ZtYV9taXNwbGFjZWQoc3RydWN0IGk5MTVfdm1h ICp2bWEsIHVpbnQzMl90IGFsaWdubWVudCwgdWludDY0X3QgZmxhZ3MpCj4gICAJcmV0dXJuIGZh bHNlOwo+ICAgfQo+Cj4gLWludAo+IC1pOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcoc3RydWN0IGRy bV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAtCQkJIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtLAo+IC0JCQkgdWludDMyX3QgYWxpZ25tZW50LAo+IC0JCQkgdWludDY0X3QgZmxhZ3MsCj4g LQkJCSBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcpCj4gK3N0YXRpYyBpbnQKPiAr aTkxNV9nZW1fb2JqZWN0X2RvX3BpbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ ICsJCSAgICAgICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSwKPiArCQkgICAgICAgY29u c3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICpnZ3R0X3ZpZXcsCj4gKwkJICAgICAgIHVpbnQzMl90 IGFsaWdubWVudCwKPiArCQkgICAgICAgdWludDY0X3QgZmxhZ3MpCj4gICB7Cj4gICAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gb2JqLT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7 Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gQEAgLTQxODgsMTcgKzQxOTMsMjYgQEAgaTkx NV9nZW1fb2JqZWN0X3Bpbl92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g ICAJaWYgKFdBUk5fT04oKGZsYWdzICYgKFBJTl9NQVBQQUJMRSB8IFBJTl9HTE9CQUwpKSA9PSBQ SU5fTUFQUEFCTEUpKQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsKPgo+IC0Jdm1hID0gaTkxNV9nZW1f b2JqX3RvX3ZtYV92aWV3KG9iaiwgdm0sIHZpZXcpOwo+ICsJaWYgKFdBUk5fT04oaTkxNV9pc19n Z3R0KHZtKSAhPSAhIWdndHRfdmlldykpCj4gKwkJcmV0dXJuIC1FSU5WQUw7Cj4gKwo+ICsJdm1h ID0gZ2d0dF92aWV3ID8gaTkxNV9nZW1fb2JqX3RvX2dndHRfdmlldyhvYmosIGdndHRfdmlldykg Ogo+ICsJCQkgIGk5MTVfZ2VtX29ial90b192bWEob2JqLCB2bSk7Cj4gKwo+ICAgCWlmICh2bWEp IHsKPiAgIAkJaWYgKFdBUk5fT04odm1hLT5waW5fY291bnQgPT0gRFJNX0k5MTVfR0VNX09CSkVD VF9NQVhfUElOX0NPVU5UKSkKPiAgIAkJCXJldHVybiAtRUJVU1k7Cj4KPiAgIAkJaWYgKGk5MTVf dm1hX21pc3BsYWNlZCh2bWEsIGFsaWdubWVudCwgZmxhZ3MpKSB7Cj4gKwkJCXVuc2lnbmVkIGxv bmcgb2Zmc2V0Owo+ICsJCQlvZmZzZXQgPSBnZ3R0X3ZpZXcgPyBpOTE1X2dlbV9vYmpfZ2d0dF9v ZmZzZXRfdmlldyhvYmosIGdndHRfdmlldy0+dHlwZSkgOgo+ICsJCQkJCSAgICAgaTkxNV9nZW1f b2JqX29mZnNldChvYmosIHZtKTsKPiAgIAkJCVdBUk4odm1hLT5waW5fY291bnQsCj4gLQkJCSAg ICAgImJvIGlzIGFscmVhZHkgcGlubmVkIHdpdGggaW5jb3JyZWN0IGFsaWdubWVudDoiCj4gKwkJ CSAgICAgImJvIGlzIGFscmVhZHkgcGlubmVkIGluICVzIHdpdGggaW5jb3JyZWN0IGFsaWdubWVu dDoiCj4gICAJCQkgICAgICIgb2Zmc2V0PSVseCwgcmVxLmFsaWdubWVudD0leCwgcmVxLm1hcF9h bmRfZmVuY2VhYmxlPSVkLCIKPiAgIAkJCSAgICAgIiBvYmotPm1hcF9hbmRfZmVuY2VhYmxlPSVk XG4iLAo+IC0JCQkgICAgIGk5MTVfZ2VtX29ial9vZmZzZXRfdmlldyhvYmosIHZtLCB2aWV3LT50 eXBlKSwKPiArCQkJICAgICBnZ3R0X3ZpZXcgPyAiZ2d0dCIgOiAicHBndHQiLAo+ICsJCQkgICAg IG9mZnNldCwKPiAgIAkJCSAgICAgYWxpZ25tZW50LAo+ICAgCQkJICAgICAhIShmbGFncyAmIFBJ Tl9NQVBQQUJMRSksCj4gICAJCQkgICAgIG9iai0+bWFwX2FuZF9mZW5jZWFibGUpOwo+IEBAIC00 MjEyLDggKzQyMjYsOCBAQCBpOTE1X2dlbV9vYmplY3RfcGluX3ZpZXcoc3RydWN0IGRybV9pOTE1 X2dlbV9vYmplY3QgKm9iaiwKPgo+ICAgCWJvdW5kID0gdm1hID8gdm1hLT5ib3VuZCA6IDA7Cj4g ICAJaWYgKHZtYSA9PSBOVUxMIHx8ICFkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkp IHsKPiAtCQl2bWEgPSBpOTE1X2dlbV9vYmplY3RfYmluZF90b192bShvYmosIHZtLCBhbGlnbm1l bnQsCj4gLQkJCQkJCSBmbGFncywgdmlldyk7Cj4gKwkJdm1hID0gaTkxNV9nZW1fb2JqZWN0X2Jp bmRfdG9fdm0ob2JqLCB2bSwgZ2d0dF92aWV3LCBhbGlnbm1lbnQsCj4gKwkJCQkJCSBmbGFncyk7 Cj4gICAJCWlmIChJU19FUlIodm1hKSkKPiAgIAkJCXJldHVybiBQVFJfRVJSKHZtYSk7Cj4gICAJ fQo+IEBAIC00MjU0LDYgKzQyNjgsMjggQEAgaTkxNV9nZW1fb2JqZWN0X3Bpbl92aWV3KHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4KPiAraW50 Cj4gK2k5MTVfZ2VtX29iamVjdF9waW4oc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwK PiArCQkgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJICAgIHVpbnQzMl90 IGFsaWdubWVudCwKPiArCQkgICAgdWludDY0X3QgZmxhZ3MpCj4gK3sKPiArCXJldHVybiBpOTE1 X2dlbV9vYmplY3RfZG9fcGluKG9iaiwgdm0sCj4gKwkJCQkgICAgICBpOTE1X2lzX2dndHQodm0p ID8gJmk5MTVfZ2d0dF92aWV3X25vcm1hbCA6IE5VTEwsCj4gKwkJCQkgICAgICBhbGlnbm1lbnQs IGZsYWdzKTsKPiArfQo+ICsKPiAraW50Cj4gK2k5MTVfZ2VtX29iamVjdF9nZ3R0X3BpbihzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkgY29uc3Qgc3RydWN0IGk5MTVfZ2d0 dF92aWV3ICp2aWV3LAo+ICsJCQkgdWludDMyX3QgYWxpZ25tZW50LAo+ICsJCQkgdWludDY0X3Qg ZmxhZ3MpCj4gK3sKPiArCUJVR19PTighdmlldyk7CgpJIHdvdWxkbid0IGNyYXNoIHRoZSBzeXN0 ZW0gaGVyZSBidXQganVzdCBXQVJOX09OQ0UgYW5kIGZhaWwgdG8gcGluIApzaW5jZSB0aGF0IGlz IGhhbmRsZWQgd2VsbCBhbnl3YXkuCgo+ICsJcmV0dXJuIGk5MTVfZ2VtX29iamVjdF9kb19waW4o b2JqLCBpOTE1X29ial90b19nZ3R0KG9iaiksIHZpZXcsCj4gKwkJCQkgICAgICBhbGlnbm1lbnQs IGZsYWdzKTsKPiArfQo+ICsKPiAgIHZvaWQKPiAgIGk5MTVfZ2VtX29iamVjdF9nZ3R0X3VucGlu KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gICB7Cj4gQEAgLTQ1NTksMTUgKzQ1 OTUsMzEgQEAgdm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg KmdlbV9vYmopCj4gICAJaW50ZWxfcnVudGltZV9wbV9wdXQoZGV2X3ByaXYpOwo+ICAgfQo+Cj4g LXN0cnVjdCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX3ZtYV92aWV3KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkJICBzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2 bSwKPiAtCQkJCQkgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykKPiArc3RydWN0 IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4gKwkJCQkgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQo+ICAgewo+ ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IC0JbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZv YmotPnZtYV9saXN0LCB2bWFfbGluaykKPiAtCQlpZiAodm1hLT52bSA9PSB2bSAmJiB2bWEtPmdn dHRfdmlldy50eXBlID09IHZpZXctPnR5cGUpCj4gKwlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwg Jm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4gKwkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZt KSAmJgo+ICsJCSAgICB2bWEtPmdndHRfdmlldy50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1B TCkKPiArCQkJY29udGludWU7CgpNaWNybyBvcHRpbWlzYXRpb24gdGVycml0b3J5IGJ1dCB2aWV3 IHR5cGUgb3RoZXIgdGhhdCBub3JtYWwgaW1wbGllcyAKR0dUVCBzbyBtYXliZSBubyBuZWVkIGZv ciBpOTE1X2lzX2dndHQ/IFNpbmNlIHZtYSBvYmplY3RzIGFyZSB6ZXJvZWQgb24gCmFsbG9jYXRp b24gYW5kIGRvIEkgaGF2ZSwgb3IgZGlkIEkgaGF2ZSwgCkJVSUxEX0JVR19PTihJOTE1X0dHVFRf VklFV19OT1JNQUwgIT0gMCkgc29tZXdoZXJlLgoKVGhlcmUgYXJlIG1vcmUgaW5zdGFuY2VzIG9m IHRoaXMgcGF0dGVybiwgYnV0IGl0J3MgeW91ciBjYWxsLgoKPiArCQlpZiAodm1hLT52bSA9PSB2 bSkKPiAgIAkJCXJldHVybiB2bWE7Cj4gKwl9Cj4gKwlyZXR1cm4gTlVMTDsKPiArfQo+ICsKPiAr c3RydWN0IGk5MTVfdm1hICppOTE1X2dlbV9vYmpfdG9fZ2d0dF92aWV3KHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosCj4gKwkJCQkJICAgY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3 ICp2aWV3KQo+ICt7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpnZ3R0ID0gaTkxNV9v YmpfdG9fZ2d0dChvYmopOwo+ICsJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gKwo+ICsJQlVHX09O KCF2aWV3KTsKClRoaXMgQlVHX09OIGlzIGtpbmQgb2YgY29ycmVjdCwgYnV0IHN0aWxsIGl0IGlz IG5pY2VyIG5vdCB0byBjcmFzaCB0aGUgCmJveCBvbiBwcm9ncmFtbWluZyBlcnJvcnMgaWYgdGhl eSBjYW4gYmUgYXZvaWRlZC4gSW4gdGhpcyBjYXNlIGl0IGxvb2tzIAppdCB3b3VsZCBiZSBlYXN5 IHRvIHJldHVybiBFUlJfUFRSIGhlcmUgYW5kIGFkZCBoYW5kbGluZyB0byB0aGUgCmNhbGxlcihz KS4gQW5kIFdBUk5fT05DRSBoZXJlIG9mIGNvdXJzZS4KCj4KPiArCWxpc3RfZm9yX2VhY2hfZW50 cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspCj4gKwkJaWYgKHZtYS0+dm0gPT0gZ2d0 dCAmJiB2bWEtPmdndHRfdmlldy50eXBlID09IHZpZXctPnR5cGUpCj4gKwkJCXJldHVybiB2bWE7 Cj4gICAJcmV0dXJuIE5VTEw7Cj4gICB9Cj4KPiBAQCAtNTE3Niw5ICs1MjI4LDkgQEAgaTkxNV9n ZW1fc2hyaW5rZXJfY291bnQoc3RydWN0IHNocmlua2VyICpzaHJpbmtlciwgc3RydWN0IHNocmlu a19jb250cm9sICpzYykKPiAgIH0KPgo+ICAgLyogQWxsIHRoZSBuZXcgVk0gc3R1ZmYgKi8KPiAt dW5zaWduZWQgbG9uZyBpOTE1X2dlbV9vYmpfb2Zmc2V0X3ZpZXcoc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm8sCj4gLQkJCQkgICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0s Cj4gLQkJCQkgICAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpCj4gK3Vuc2lnbmVk IGxvbmcKPiAraTkxNV9nZW1fb2JqX29mZnNldChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq bywKPiArCQkgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gICB7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gby0+YmFzZS5kZXYtPmRldl9wcml2YXRl Owo+ICAgCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+IEBAIC01MTg2LDIzICs1MjM4LDU4IEBAIHVu c2lnbmVkIGxvbmcgaTkxNV9nZW1fb2JqX29mZnNldF92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvLAo+ICAgCVdBUk5fT04odm0gPT0gJmRldl9wcml2LT5tbS5hbGlhc2luZ19wcGd0 dC0+YmFzZSk7Cj4KPiAgIAlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm8tPnZtYV9saXN0LCB2 bWFfbGluaykgewo+IC0JCWlmICh2bWEtPnZtID09IHZtICYmIHZtYS0+Z2d0dF92aWV3LnR5cGUg PT0gdmlldykKPiArCQlpZiAoaTkxNV9pc19nZ3R0KHZtYS0+dm0pICYmCj4gKwkJICAgIHZtYS0+ Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdfTk9STUFMKQo+ICsJCQljb250aW51ZTsK PiArCQlpZiAodm1hLT52bSA9PSB2bSkKPiAgIAkJCXJldHVybiB2bWEtPm5vZGUuc3RhcnQ7Cj4g LQo+ICAgCX0KPiArCj4gICAJV0FSTigxLCAiJXMgdm1hIGZvciB0aGlzIG9iamVjdCBub3QgZm91 bmQuXG4iLAo+ICAgCSAgICAgaTkxNV9pc19nZ3R0KHZtKSA/ICJnbG9iYWwiIDogInBwZ3R0Iik7 Cj4gICAJcmV0dXJuIC0xOwo+ICAgfQo+Cj4gLWJvb2wgaTkxNV9nZW1fb2JqX2JvdW5kX3ZpZXco c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gLQkJCSAgICAgc3RydWN0IGk5MTVfYWRk cmVzc19zcGFjZSAqdm0sCj4gLQkJCSAgICAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcp Cj4gK3Vuc2lnbmVkIGxvbmcKPiAraTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0X3ZpZXcoc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm8sCj4gKwkJCSAgICAgIGVudW0gaTkxNV9nZ3R0X3ZpZXdf dHlwZSB2aWV3KQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBv LT5iYXNlLmRldi0+ZGV2X3ByaXZhdGU7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpn Z3R0ID0gaTkxNV9vYmpfdG9fZ2d0dChvKTsKPiArCXN0cnVjdCBpOTE1X3ZtYSAqdm1hOwo+ICsK PiArCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9saW5rKQo+ICsJ CWlmICh2bWEtPnZtID09IGdndHQgJiYgdm1hLT5nZ3R0X3ZpZXcudHlwZSA9PSB2aWV3KQo+ICsJ CQlyZXR1cm4gdm1hLT5ub2RlLnN0YXJ0Owo+ICsKPiArCVdBUk4oMSwgImdsb2JhbCB2bWEgZm9y IHRoaXMgb2JqZWN0IG5vdCBmb3VuZC5cbiIpOwo+ICsJcmV0dXJuIC0xOwo+ICt9Cj4gKwo+ICti b29sIGk5MTVfZ2VtX29ial9ib3VuZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqbywKPiAr CQkJc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCj4gK3sKPiArCXN0cnVjdCBpOTE1X3Zt YSAqdm1hOwo+ICsKPiArCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZt YV9saW5rKSB7Cj4gKwkJaWYgKGk5MTVfaXNfZ2d0dCh2bWEtPnZtKSAmJgo+ICsJCSAgICB2bWEt PmdndHRfdmlldy50eXBlICE9IEk5MTVfR0dUVF9WSUVXX05PUk1BTCkKPiArCQkJY29udGludWU7 Cj4gKwkJaWYgKHZtYS0+dm0gPT0gdm0gJiYgZHJtX21tX25vZGVfYWxsb2NhdGVkKCZ2bWEtPm5v ZGUpKQo+ICsJCQlyZXR1cm4gdHJ1ZTsKPiArCX0KPiArCj4gKwlyZXR1cm4gZmFsc2U7Cj4gK30K PiArCj4gK2Jvb2wgaTkxNV9nZW1fb2JqX2dndHRfYm91bmRfdmlldyhzdHJ1Y3QgZHJtX2k5MTVf Z2VtX29iamVjdCAqbywKPiArCQkJCSAgZW51bSBpOTE1X2dndHRfdmlld190eXBlIHZpZXcpCj4g ICB7Cj4gKwlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICpnZ3R0ID0gaTkxNV9vYmpfdG9fZ2d0 dChvKTsKPiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPgo+ICAgCWxpc3RfZm9yX2VhY2hfZW50 cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9saW5rKQo+IC0JCWlmICh2bWEtPnZtID09IHZtICYm Cj4gKwkJaWYgKHZtYS0+dm0gPT0gZ2d0dCAmJgo+ICAgCQkgICAgdm1hLT5nZ3R0X3ZpZXcudHlw ZSA9PSB2aWV3ICYmCj4gICAJCSAgICBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkp Cj4gICAJCQlyZXR1cm4gdHJ1ZTsKPiBAQCAtNTIzMSwxMCArNTMxOCwxMyBAQCB1bnNpZ25lZCBs b25nIGk5MTVfZ2VtX29ial9zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvLAo+Cj4g ICAJQlVHX09OKGxpc3RfZW1wdHkoJm8tPnZtYV9saXN0KSk7Cj4KPiAtCWxpc3RfZm9yX2VhY2hf ZW50cnkodm1hLCAmby0+dm1hX2xpc3QsIHZtYV9saW5rKQo+ICsJbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZvLT52bWFfbGlzdCwgdm1hX2xpbmspIHsKPiArCQlpZiAoaTkxNV9pc19nZ3R0KHZt YS0+dm0pICYmCj4gKwkJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUgIT0gSTkxNV9HR1RUX1ZJRVdf Tk9STUFMKQo+ICsJCQljb250aW51ZTsKPiAgIAkJaWYgKHZtYS0+dm0gPT0gdm0pCj4gICAJCQly ZXR1cm4gdm1hLT5ub2RlLnNpemU7Cj4gLQo+ICsJfQo+ICAgCXJldHVybiAwOwo+ICAgfQoKT2gg d293IEkganVzdCByZWFsaXNlZCB0aGlzIGZ1bmN0aW9uIGlzIGFjdHVhbGx5IHZlcnkgbWlzbGVh ZGluZyBhbmQgCmhhdmUgYSBidWcgaW4gbXkgcm90YXRpb24gY29kZSBiZWNhdXNlIG9mIHRoYXQu CgpJdCBhY3R1YWxseSBvbmx5IGhhcyBhIHNpbmdsZSB1c2VyIC0gaTkxNV9nZW1fb2JqX2dndHRf c2l6ZSAtIHdoaWNoIApraW5kcyBvZiB0ZWxscyB5b3Ugd2hhdCBpdCBkb2VzIC0gZ2V0cyBhIHNp emUgb2YgYSBvYmplY3QgaW4gZ2d0dCBzcGFjZS4KCmk5MTVfZ2VtX29ial9zaXplIG9uIHRoZSBv dGhlciBoYW5kIGxpZXMgYW5kIHNob3VsZCBiZSBjYWxsZWQgCmk5MTVfZ2VtX29ial9ndHRfc2l6 ZSBpbnN0ZWFkLgoKQmVyY2F1c2Ugb2YgdGhlIHNpbmdsZSB1c2VyLCBJIHdvdWxkIHZvdGUgeW91 IHNpbXBseSByZW1vdmUgaXQsIG9yIGluIApvdGhlciB3b3JkcyByZW5hbWUgdG8gaTkxNV9nZW1f b2JqX2dndHRfc2l6ZS4KCj4gQEAgLTUzMzQsMTUgKzU0MjQsMTYgQEAgaTkxNV9nZW1fc2hyaW5r ZXJfb29tKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgZXZlbnQsIHZv aWQgKnB0cikKPiAgIAlyZXR1cm4gTk9USUZZX0RPTkU7Cj4gICB9Cj4KPiAtc3RydWN0IGk5MTVf dm1hICppOTE1X2dlbV9vYmpfdG9fZ2d0dChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq KQo+ICtib29sIGk5MTVfZ2VtX29ial9pc19waW5uZWQoc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKPiAgIHsKPiAtCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSBpOTE1 X29ial90b19nZ3R0KG9iaik7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4gLQo+IC0JbGlz dF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykKPiAtCQlpZiAo dm1hLT52bSA9PSBnZ3R0ICYmCj4gLQkJICAgIHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkxNV9H R1RUX1ZJRVdfTk9STUFMKQo+IC0JCQlyZXR1cm4gdm1hOwo+IC0KPiAtCXJldHVybiBOVUxMOwo+ ICsJbGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgewo+ ICsJCWlmIChpOTE1X2lzX2dndHQodm1hLT52bSkgJiYKPiArCQkgICAgdm1hLT5nZ3R0X3ZpZXcu dHlwZSAhPSBJOTE1X0dHVFRfVklFV19OT1JNQUwpCj4gKwkJCWNvbnRpbnVlOwo+ICsJCWlmICh2 bWEtPnBpbl9jb3VudCA+IDApCj4gKwkJCXJldHVybiB0cnVlOwo+ICsJfQo+ICsJcmV0dXJuIGZh bHNlOwo+ICAgfQo+ICsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IGluZGV4IDIw MzRmN2MuLmQyZjkwNDEgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBA IC02Nyw4ICs2Nyw5IEBACj4gICAgKiBpOTE1X2dndHRfdmlld190eXBlIGFuZCBzdHJ1Y3QgaTkx NV9nZ3R0X3ZpZXcuCj4gICAgKgo+ICAgICogQSBuZXcgZmxhdm91ciBvZiBjb3JlIEdFTSBmdW5j dGlvbnMgd2hpY2ggd29yayB3aXRoIEdHVFQgYm91bmQgb2JqZWN0cyB3ZXJlCj4gLSAqIGFkZGVk IHdpdGggdGhlIF92aWV3IHN1ZmZpeC4gVGhleSB0YWtlIHRoZSBzdHJ1Y3QgaTkxNV9nZ3R0X3Zp ZXcgcGFyYW1ldGVyCj4gLSAqIGVuY2Fwc3VsYXRpbmcgYWxsIG1ldGFkYXRhIHJlcXVpcmVkIHRv IGltcGxlbWVudCBhIHZpZXcuCj4gKyAqIGFkZGVkIHdpdGggdGhlIF9nZ3R0XyBpbmZpeCwgYW5k IHNvbWV0aW1lcyB3aXRoIF92aWV3IHBvc3RmaXggdG8gYXZvaWQKPiArICogcmVuYW1pbmcgIGlu IGxhcmdlIGFtb3VudHMgb2YgY29kZS4gVGhleSB0YWtlIHRoZSBzdHJ1Y3QgaTkxNV9nZ3R0X3Zp ZXcKPiArICogcGFyYW1ldGVyIGVuY2Fwc3VsYXRpbmcgYWxsIG1ldGFkYXRhIHJlcXVpcmVkIHRv IGltcGxlbWVudCBhIHZpZXcuCj4gICAgKgo+ICAgICogQXMgYSBoZWxwZXIgZm9yIGNhbGxlcnMg d2hpY2ggYXJlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgbm9ybWFsIHZpZXcsCj4gICAgKiBnbG9i YWxseSBjb25zdCBpOTE1X2dndHRfdmlld19ub3JtYWwgc2luZ2xldG9uIGluc3RhbmNlIGV4aXN0 cy4gQWxsIG9sZCBjb3JlCj4gQEAgLTE3MjYsMTEgKzE3MjcsMTUgQEAgc3RhdGljIHZvaWQgZ2d0 dF9iaW5kX3ZtYShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgIAlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gdm1hLT52bS0+ZGV2Owo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiA9IHZtYS0+b2JqOwo+ICsJc3RydWN0IHNnX3RhYmxlICpwYWdlcyA9IG9iai0+cGFnZXM7Cj4K PiAgIAkvKiBDdXJyZW50bHkgYXBwbGljYWJsZSBvbmx5IHRvIFZMViAqLwo+ICAgCWlmIChvYmot Pmd0X3JvKQo+ICAgCQlmbGFncyB8PSBQVEVfUkVBRF9PTkxZOwo+Cj4gKwlpZiAoaTkxNV9pc19n Z3R0KHZtYS0+dm0pKQo+ICsJCXBhZ2VzID0gdm1hLT5nZ3R0X3ZpZXcucGFnZXM7Cj4gKwo+ICAg CS8qIElmIHRoZXJlIGlzIG5vIGFsaWFzaW5nIFBQR1RULCBvciB0aGUgY2FsbGVyIG5lZWRzIGEg Z2xvYmFsIG1hcHBpbmcsCj4gICAJICogb3Igd2UgaGF2ZSBhIGdsb2JhbCBtYXBwaW5nIGFscmVh ZHkgYnV0IHRoZSBjYWNoZWFiaWxpdHkgZmxhZ3MgaGF2ZQo+ICAgCSAqIGNoYW5nZWQsIHNldCB0 aGUgZ2xvYmFsIFBURXMuCj4gQEAgLTE3NDUsNyArMTc1MCw3IEBAIHN0YXRpYyB2b2lkIGdndHRf YmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4gICAJaWYgKCFkZXZfcHJpdi0+bW0uYWxp YXNpbmdfcHBndHQgfHwgZmxhZ3MgJiBHTE9CQUxfQklORCkgewo+ICAgCQlpZiAoISh2bWEtPmJv dW5kICYgR0xPQkFMX0JJTkQpIHx8Cj4gICAJCSAgICAoY2FjaGVfbGV2ZWwgIT0gb2JqLT5jYWNo ZV9sZXZlbCkpIHsKPiAtCQkJdm1hLT52bS0+aW5zZXJ0X2VudHJpZXModm1hLT52bSwgdm1hLT5n Z3R0X3ZpZXcucGFnZXMsCj4gKwkJCXZtYS0+dm0tPmluc2VydF9lbnRyaWVzKHZtYS0+dm0sIHBh Z2VzLAo+ICAgCQkJCQkJdm1hLT5ub2RlLnN0YXJ0LAo+ICAgCQkJCQkJY2FjaGVfbGV2ZWwsIGZs YWdzKTsKPiAgIAkJCXZtYS0+Ym91bmQgfD0gR0xPQkFMX0JJTkQ7Cj4gQEAgLTE3NTYsOCArMTc2 MSw3IEBAIHN0YXRpYyB2b2lkIGdndHRfYmluZF92bWEoc3RydWN0IGk5MTVfdm1hICp2bWEsCj4g ICAJICAgICghKHZtYS0+Ym91bmQgJiBMT0NBTF9CSU5EKSB8fAo+ICAgCSAgICAgKGNhY2hlX2xl dmVsICE9IG9iai0+Y2FjaGVfbGV2ZWwpKSkgewo+ICAgCQlzdHJ1Y3QgaTkxNV9od19wcGd0dCAq YXBwZ3R0ID0gZGV2X3ByaXYtPm1tLmFsaWFzaW5nX3BwZ3R0Owo+IC0JCWFwcGd0dC0+YmFzZS5p bnNlcnRfZW50cmllcygmYXBwZ3R0LT5iYXNlLAo+IC0JCQkJCSAgICB2bWEtPmdndHRfdmlldy5w YWdlcywKPiArCQlhcHBndHQtPmJhc2UuaW5zZXJ0X2VudHJpZXMoJmFwcGd0dC0+YmFzZSwgcGFn ZXMsCj4gICAJCQkJCSAgICB2bWEtPm5vZGUuc3RhcnQsCj4gICAJCQkJCSAgICBjYWNoZV9sZXZl bCwgZmxhZ3MpOwo+ICAgCQl2bWEtPmJvdW5kIHw9IExPQ0FMX0JJTkQ7Cj4gQEAgLTIzMzEsMjMg KzIzMzUsMjggQEAgaW50IGk5MTVfZ2VtX2d0dF9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4KPiAtc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAqX19pOTE1 X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkJ ICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gLQkJCQkJICAgICAgY29uc3Qg c3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3KQo+ICtzdGF0aWMgc3RydWN0IGk5MTVfdm1hICoK PiArX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gKwkJICAgICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gKwkJICAgICAgY29u c3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICpnZ3R0X3ZpZXcpCj4gICB7Cj4gICAJc3RydWN0IGk5 MTVfdm1hICp2bWEgPSBremFsbG9jKHNpemVvZigqdm1hKSwgR0ZQX0tFUk5FTCk7Cj4gICAJaWYg KHZtYSA9PSBOVUxMKQo+ICAgCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKPgo+ICsJaWYgKFdB Uk5fT04oaTkxNV9pc19nZ3R0KHZtKSAhPSAhIWdndHRfdmlldykpCj4gKwkJcmV0dXJuIEVSUl9Q VFIoLUVJTlZBTCk7Cj4gKwo+ICAgCUlOSVRfTElTVF9IRUFEKCZ2bWEtPnZtYV9saW5rKTsKPiAg IAlJTklUX0xJU1RfSEVBRCgmdm1hLT5tbV9saXN0KTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm1h LT5leGVjX2xpc3QpOwo+ICAgCXZtYS0+dm0gPSB2bTsKPiAgIAl2bWEtPm9iaiA9IG9iajsKPiAt CXZtYS0+Z2d0dF92aWV3ID0gKnZpZXc7Cj4KPiAgIAlpZiAoSU5URUxfSU5GTyh2bS0+ZGV2KS0+ Z2VuID49IDYpIHsKPiAgIAkJaWYgKGk5MTVfaXNfZ2d0dCh2bSkpIHsKPiArCQkJdm1hLT5nZ3R0 X3ZpZXcgPSAqZ2d0dF92aWV3Owo+ICsKPiAgIAkJCXZtYS0+dW5iaW5kX3ZtYSA9IGdndHRfdW5i aW5kX3ZtYTsKPiAgIAkJCXZtYS0+YmluZF92bWEgPSBnZ3R0X2JpbmRfdm1hOwo+ICAgCQl9IGVs c2Ugewo+IEBAIC0yMzU2LDYgKzIzNjUsNyBAQCBzdGF0aWMgc3RydWN0IGk5MTVfdm1hICpfX2k5 MTVfZ2VtX3ZtYV9jcmVhdGUoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAkJ fQo+ICAgCX0gZWxzZSB7Cj4gICAJCUJVR19PTighaTkxNV9pc19nZ3R0KHZtKSk7Cj4gKwkJdm1h LT5nZ3R0X3ZpZXcgPSAqZ2d0dF92aWV3Owo+ICAgCQl2bWEtPnVuYmluZF92bWEgPSBpOTE1X2dn dHRfdW5iaW5kX3ZtYTsKPiAgIAkJdm1hLT5iaW5kX3ZtYSA9IGk5MTVfZ2d0dF9iaW5kX3ZtYTsK PiAgIAl9Cj4gQEAgLTIzNjgsMjEgKzIzNzgsNDAgQEAgc3RhdGljIHN0cnVjdCBpOTE1X3ZtYSAq X19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4g ICB9Cj4KPiAgIHN0cnVjdCBpOTE1X3ZtYSAqCj4gLWk5MTVfZ2VtX29ial9sb29rdXBfb3JfY3Jl YXRlX3ZtYV92aWV3KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCj4gLQkJCQkgICAg ICAgc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0sCj4gK2k5MTVfZ2VtX29ial9sb29rdXBf b3JfY3JlYXRlX3ZtYShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICsJCQkJICBz dHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSkKPiArewo+ICsJc3RydWN0IGk5MTVfdm1hICp2 bWE7Cj4gKwo+ICsJdm1hID0gaTkxNV9nZW1fb2JqX3RvX3ZtYShvYmosIHZtKTsKPiArCWlmICgh dm1hKQo+ICsJCXZtYSA9IF9faTkxNV9nZW1fdm1hX2NyZWF0ZShvYmosIHZtLAo+ICsJCQkJCSAg ICBpOTE1X2lzX2dndHQodm0pID8gJmk5MTVfZ2d0dF92aWV3X25vcm1hbCA6IE5VTEwpOwo+ICsK PiArCXJldHVybiB2bWE7Cj4gK30KPiArCj4gK3N0cnVjdCBpOTE1X3ZtYSAqCj4gK2k5MTVfZ2Vt X29ial9sb29rdXBfb3JfY3JlYXRlX2dndHRfdm1hKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0 ICpvYmosCj4gICAJCQkJICAgICAgIGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldykK PiAgIHsKPiArCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKmdndHQgPSBpOTE1X29ial90b19n Z3R0KG9iaik7Cj4gICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4KPiAtCXZtYSA9IGk5MTVfZ2Vt X29ial90b192bWFfdmlldyhvYmosIHZtLCB2aWV3KTsKPiArCWlmIChXQVJOX09OKCF2aWV3KSkK PiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiArCj4gKwl2bWEgPSBpOTE1X2dlbV9vYmpf dG9fZ2d0dF92aWV3KG9iaiwgdmlldyk7Cj4gICAJaWYgKCF2bWEpCj4gLQkJdm1hID0gX19pOTE1 X2dlbV92bWFfY3JlYXRlKG9iaiwgdm0sIHZpZXcpOwo+ICsJCXZtYSA9IF9faTkxNV9nZW1fdm1h X2NyZWF0ZShvYmosIGdndHQsIHZpZXcpOwo+Cj4gICAJcmV0dXJuIHZtYTsKPiArCj4gICB9Cj4K PiArCj4gICBzdGF0aWMgaW5saW5lCj4gLWludCBpOTE1X2dldF92bWFfcGFnZXMoc3RydWN0IGk5 MTVfdm1hICp2bWEpCj4gK2ludCBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyhzdHJ1Y3QgaTkxNV92 bWEgKnZtYSkKPiAgIHsKPiAgIAlpZiAodm1hLT5nZ3R0X3ZpZXcucGFnZXMpCj4gICAJCXJldHVy biAwOwo+IEBAIC0yMzk0LDcgKzI0MjMsNyBAQCBpbnQgaTkxNV9nZXRfdm1hX3BhZ2VzKHN0cnVj dCBpOTE1X3ZtYSAqdm1hKQo+ICAgCQkJICB2bWEtPmdndHRfdmlldy50eXBlKTsKPgo+ICAgCWlm ICghdm1hLT5nZ3R0X3ZpZXcucGFnZXMpIHsKPiAtCQlEUk1fRVJST1IoIkZhaWxlZCB0byBnZXQg cGFnZXMgZm9yIFZNQSB2aWV3IHR5cGUgJXUhXG4iLAo+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRv IGdldCBwYWdlcyBmb3IgR0dUVCB2aWV3IHR5cGUgJXUhXG4iLAo+ICAgCQkJICB2bWEtPmdndHRf dmlldy50eXBlKTsKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAJfQo+IEBAIC0yNDE1LDEwICsy NDQ0LDEyIEBAIGludCBpOTE1X2dldF92bWFfcGFnZXMoc3RydWN0IGk5MTVfdm1hICp2bWEpCj4g ICBpbnQgaTkxNV92bWFfYmluZChzdHJ1Y3QgaTkxNV92bWEgKnZtYSwgZW51bSBpOTE1X2NhY2hl X2xldmVsIGNhY2hlX2xldmVsLAo+ICAgCQkgIHUzMiBmbGFncykKPiAgIHsKPiAtCWludCByZXQg PSBpOTE1X2dldF92bWFfcGFnZXModm1hKTsKPiArCWlmIChpOTE1X2lzX2dndHQodm1hLT52bSkp IHsKPiArCQlpbnQgcmV0ID0gaTkxNV9nZXRfZ2d0dF92bWFfcGFnZXModm1hKTsKPgo+IC0JaWYg KHJldCkKPiAtCQlyZXR1cm4gcmV0Owo+ICsJCWlmIChyZXQpCj4gKwkJCXJldHVybiByZXQ7Cj4g Kwl9Cj4KPiAgIAl2bWEtPmJpbmRfdm1hKHZtYSwgY2FjaGVfbGV2ZWwsIGZsYWdzKTsKPgo+CgoK UmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=