From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v3 3/8] drm/i915: Add a new "remapped" gtt_view Date: Wed, 26 Sep 2018 08:50:25 +0100 Message-ID: References: <20180925193714.25280-1-ville.syrjala@linux.intel.com> <20180925193714.25280-4-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by gabe.freedesktop.org (Postfix) with ESMTPS id E092D6E3D0 for ; Wed, 26 Sep 2018 07:50:31 +0000 (UTC) In-Reply-To: <20180925193714.25280-4-ville.syrjala@linux.intel.com> Content-Language: en-GB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Ville Syrjala , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDI1LzA5LzIwMTggMjA6MzcsIFZpbGxlIFN5cmphbGEgd3JvdGU6Cj4gRnJvbTogVmlsbGUg U3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiAKPiBUbyBvdmVyY29t ZSBkaXNwbGF5IGVuZ2luZSBzdHJpZGUgbGltaXRzIHdlJ2xsIHdhbnQgdG8gcmVtYXAgdGhlCj4g cGFnZXMgaW4gdGhlIEdUVC4gVG8gdGhhdCBlbmQgd2UgbmVlZCBhIG5ldyBndHRfdmlldyB0eXBl IHdoaWNoCj4gaXMganVzdCBsaWtlIHRoZSAicm90YXRlZCIgdHlwZSBleGNlcHQgbm90IHJvdGF0 ZWQuCj4gCj4gdjI6IFVzZSBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIGJhc2UgdHlwZQo+ICAg ICAgcy91bnVzZWQvdW51c2VkX21iei8gKENocmlzKQo+ICAgICAgU2VwYXJhdGUgQlVJTERfQlVH X09OKClzIChDaHJpcykKPiAgICAgIFVzZSBJOTE1X0dUVF9QQUdFX1NJWkUgKENocmlzKQo+IAo+ IFNpZ25lZC1vZmYtYnk6IFZpbGxlIFN5cmrDpGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRl bC5jb20+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAg ICB8IDEyICsrKysKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAg IHwgOTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmggICAgICAgfCAyNSArKysrKysrLS0KPiAgIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAgICAgIHwgIDYgKy0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAgIHwgIDMgKwo+ICAgZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAxMSArKysrCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAxICsKPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X3ZtYS5jIHwgIDYgKy0KPiAgIDggZmlsZXMgY2hhbmdlZCwgMTQ3IGluc2Vy dGlvbnMoKyksIDggZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2Zz LmMKPiBpbmRleCBiNDc0NGE2OGNkODguLmVkYjlmNmYzYzBjZiAxMDA2NDQKPiAtLS0gYS9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTE5Niw2ICsxOTYsMTggQEAgZGVzY3JpYmVfb2JqKHN0 cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKPiAgIAkJ CQkJICAgdm1hLT5nZ3R0X3ZpZXcucm90YXRlZC5wbGFuZVsxXS5vZmZzZXQpOwo+ICAgCQkJCWJy ZWFrOwo+ICAgCj4gKwkJCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ6Cj4gKwkJCQlzZXFf cHJpbnRmKG0sICIsIHJlbWFwcGVkIFsoJXV4JXUsIHN0cmlkZT0ldSwgb2Zmc2V0PSV1KSwgKCV1 eCV1LCBzdHJpZGU9JXUsIG9mZnNldD0ldSldIiwKPiArCQkJCQkgICB2bWEtPmdndHRfdmlldy5y ZW1hcHBlZC5wbGFuZVswXS53aWR0aCwKPiArCQkJCQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBl ZC5wbGFuZVswXS5oZWlnaHQsCj4gKwkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQucGxh bmVbMF0uc3RyaWRlLAo+ICsJCQkJCSAgIHZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLnBsYW5lWzBd Lm9mZnNldCwKPiArCQkJCQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVsxXS53aWR0 aCwKPiArCQkJCQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVsxXS5oZWlnaHQsCj4g KwkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQucGxhbmVbMV0uc3RyaWRlLAo+ICsJCQkJ CSAgIHZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLnBsYW5lWzFdLm9mZnNldCk7Cj4gKwkJCQlicmVh azsKPiArCj4gICAJCQlkZWZhdWx0Ogo+ICAgCQkJCU1JU1NJTkdfQ0FTRSh2bWEtPmdndHRfdmll dy50eXBlKTsKPiAgIAkJCQlicmVhazsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9nZW1fZ3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+ IGluZGV4IGY2YzdhYjQxMzA4MS4uZTRkNDljMzQ1YzgxIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmMKPiBAQCAtMzc5OCw2ICszNzk4LDkyIEBAIGludGVsX3JvdGF0ZV9wYWdl cyhzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqcm90X2luZm8sCj4gICAJcmV0dXJuIEVSUl9Q VFIocmV0KTsKPiAgIH0KPiAgIAo+ICtzdGF0aWMgc3RydWN0IHNjYXR0ZXJsaXN0ICoKPiArcmVt YXBfcGFnZXMoY29uc3QgZG1hX2FkZHJfdCAqaW4sIHVuc2lnbmVkIGludCBvZmZzZXQsCj4gKwkg ICAgdW5zaWduZWQgaW50IHdpZHRoLCB1bnNpZ25lZCBpbnQgaGVpZ2h0LAo+ICsJICAgIHVuc2ln bmVkIGludCBzdHJpZGUsCj4gKwkgICAgc3RydWN0IHNnX3RhYmxlICpzdCwgc3RydWN0IHNjYXR0 ZXJsaXN0ICpzZykKPiArewo+ICsJdW5zaWduZWQgaW50IGNvbHVtbiwgcm93Owo+ICsKPiArCWZv ciAocm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3crKykgewo+ICsJCWZvciAoY29sdW1uID0gMDsg Y29sdW1uIDwgd2lkdGg7IGNvbHVtbisrKSB7Cj4gKwkJCXN0LT5uZW50cysrOwo+ICsJCQkvKiBX ZSBkb24ndCBuZWVkIHRoZSBwYWdlcywgYnV0IG5lZWQgdG8gaW5pdGlhbGl6ZQo+ICsJCQkgKiB0 aGUgZW50cmllcyBzbyB0aGUgc2cgbGlzdCBjYW4gYmUgaGFwcGlseSB0cmF2ZXJzZWQuCj4gKwkJ CSAqIFRoZSBvbmx5IHRoaW5nIHdlIG5lZWQgYXJlIERNQSBhZGRyZXNzZXMuCj4gKwkJCSAqLwo+ ICsJCQlzZ19zZXRfcGFnZShzZywgTlVMTCwgSTkxNV9HVFRfUEFHRV9TSVpFLCAwKTsKPiArCQkJ c2dfZG1hX2FkZHJlc3Moc2cpID0gaW5bb2Zmc2V0ICsgY29sdW1uXTsKPiArCQkJc2dfZG1hX2xl bihzZykgPSBJOTE1X0dUVF9QQUdFX1NJWkU7Cj4gKwkJCXNnID0gc2dfbmV4dChzZyk7CgpGb3Ig dGhpcyB0eXBlIG9mIHJlbWFwcGluZyB5b3UgY291bGQgSSB0aGluayBwb3RlbnRpYWxseSBnZXQg c29tZSAKZGVjcmVhc2VkIG1lbW9yeSB1c2UgYmVuZWZpdHMgYnkgY29hbGVzY2luZyB0aGUgY29u c2VjdXRpdmUgYWRkcmVzc2VzIAppbnRvIHNpbmdsZSBzZyBlbnRyaWVzLiBJZiBJIHVuZGVyc3Rv b2QgY29ycmVjdGx5IHdoYXQgaXQncyBkb2luZyBhdCAKbGVhc3QuLiBTaW5jZSBmcmFtZWJ1ZmZl cnMgY291bGQgaGF2ZSBhIGdvb2QgY2hhbmNlIHRvIGhhdmUgYmVlbiAKaW5pdGlhbGx5IGFsbG9j YXRlZCBpbiBsYXJnZXIgdGhhbiBwYWdlIHNpemUgY2h1bmtzLgoKSWYgeW91IGRlY2lkZSB0byBk byB0aGF0LCB0aGVuLi4uCgo+ICsJCX0KPiArCQlvZmZzZXQgKz0gc3RyaWRlOwo+ICsJfQo+ICsK PiArCXJldHVybiBzZzsKPiArfQo+ICsKPiArc3RhdGljIG5vaW5saW5lIHN0cnVjdCBzZ190YWJs ZSAqCj4gK2ludGVsX3JlbWFwX3BhZ2VzKHN0cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvICpyZW1f aW5mbywKPiArCQkgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gK3sKPiArCWNv bnN0IHVuc2lnbmVkIGxvbmcgbl9wYWdlcyA9IG9iai0+YmFzZS5zaXplIC8gSTkxNV9HVFRfUEFH RV9TSVpFOwo+ICsJdW5zaWduZWQgaW50IHNpemUgPSBpbnRlbF9yZW1hcHBlZF9pbmZvX3NpemUo cmVtX2luZm8pOwo+ICsJc3RydWN0IHNndF9pdGVyIHNndF9pdGVyOwo+ICsJZG1hX2FkZHJfdCBk bWFfYWRkcjsKPiArCXVuc2lnbmVkIGxvbmcgaTsKPiArCWRtYV9hZGRyX3QgKnBhZ2VfYWRkcl9s aXN0Owo+ICsJc3RydWN0IHNnX3RhYmxlICpzdDsKPiArCXN0cnVjdCBzY2F0dGVybGlzdCAqc2c7 Cj4gKwlpbnQgcmV0ID0gLUVOT01FTTsKPiArCj4gKwkvKiBBbGxvY2F0ZSBhIHRlbXBvcmFyeSBs aXN0IG9mIHNvdXJjZSBwYWdlcyBmb3IgcmFuZG9tIGFjY2Vzcy4gKi8KPiArCXBhZ2VfYWRkcl9s aXN0ID0ga3ZtYWxsb2NfYXJyYXkobl9wYWdlcywKPiArCQkJCQlzaXplb2YoZG1hX2FkZHJfdCks Cj4gKwkJCQkJR0ZQX0tFUk5FTCk7Cj4gKwlpZiAoIXBhZ2VfYWRkcl9saXN0KQo+ICsJCXJldHVy biBFUlJfUFRSKHJldCk7Cj4gKwo+ICsJLyogQWxsb2NhdGUgdGFyZ2V0IFNHIGxpc3QuICovCj4g KwlzdCA9IGttYWxsb2Moc2l6ZW9mKCpzdCksIEdGUF9LRVJORUwpOwo+ICsJaWYgKCFzdCkKPiAr CQlnb3RvIGVycl9zdF9hbGxvYzsKPiArCj4gKwlyZXQgPSBzZ19hbGxvY190YWJsZShzdCwgc2l6 ZSwgR0ZQX0tFUk5FTCk7Cj4gKwlpZiAocmV0KQo+ICsJCWdvdG8gZXJyX3NnX2FsbG9jOwo+ICsK PiArCS8qIFBvcHVsYXRlIHNvdXJjZSBwYWdlIGxpc3QgZnJvbSB0aGUgb2JqZWN0LiAqLwo+ICsJ aSA9IDA7Cj4gKwlmb3JfZWFjaF9zZ3RfZG1hKGRtYV9hZGRyLCBzZ3RfaXRlciwgb2JqLT5tbS5w YWdlcykKPiArCQlwYWdlX2FkZHJfbGlzdFtpKytdID0gZG1hX2FkZHI7Cj4gKwo+ICsJR0VNX0JV R19PTihpICE9IG5fcGFnZXMpOwo+ICsJc3QtPm5lbnRzID0gMDsKPiArCXNnID0gc3QtPnNnbDsK PiArCj4gKwlmb3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUocmVtX2luZm8tPnBsYW5lKTsgaSsr KSB7Cj4gKwkJc2cgPSByZW1hcF9wYWdlcyhwYWdlX2FkZHJfbGlzdCwgcmVtX2luZm8tPnBsYW5l W2ldLm9mZnNldCwKPiArCQkJCSByZW1faW5mby0+cGxhbmVbaV0ud2lkdGgsIHJlbV9pbmZvLT5w bGFuZVtpXS5oZWlnaHQsCj4gKwkJCQkgcmVtX2luZm8tPnBsYW5lW2ldLnN0cmlkZSwgc3QsIHNn KTsKPiArCX0KPiArCj4gKwlrdmZyZWUocGFnZV9hZGRyX2xpc3QpOwo+ICsKCi4uLiBwdXQgaTkx NV9zZ190cmltIGhlcmUgdG8gbG9zZSB0aGUgdHJhaWxpbmcgZW5kIG9mIHVudXNlZCBzZyBlbnRy aWVzLgoKT25lIG1vcmUgdGhpbmcsIGRvIHlvdSByZWFsbHkgbmVlZCByYW5kb20gYWNjZXNzIGZv ciB0aGlzIAp0cmFuc2Zvcm1hdGlvbj8gT3IgeW91IGNvdWxkIHdhbGsgdGhlIHNnIGxpc3QgYXMg aXQgaXM/IEp1c3QgaWYgeW91IGhpdCAKYSB0b28gbG9uZyBjaHVuayB5b3UgbmVlZCB0byBjb3B5 IGEgdHJpbW1lZCB2ZXJzaW9uIG92ZXIgYW5kIGtub3cgd2hlcmUgCnRvIGNvbnRpbnVlIGZvciB0 aGUgbmV4dCByb3cuIElmIGRvYWJsZSBpdCB3b3VsZCBiZSBiZXR0ZXIgdGhhbiBoYXZpbmcgCnRv IGt2bWFsbG9jX2FycmF5LgoKUmVnYXJkcywKClR2cnRrbwoKPiArCXJldHVybiBzdDsKPiArCj4g K2Vycl9zZ19hbGxvYzoKPiArCWtmcmVlKHN0KTsKPiArZXJyX3N0X2FsbG9jOgo+ICsJa3ZmcmVl KHBhZ2VfYWRkcl9saXN0KTsKPiArCj4gKwlEUk1fREVCVUdfRFJJVkVSKCJGYWlsZWQgdG8gY3Jl YXRlIHJlbWFwcGVkIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICV6dSEgKCV1eCV1IHRpbGVzLCAl dSBwYWdlcylcbiIsCj4gKwkJCSBvYmotPmJhc2Uuc2l6ZSwgcmVtX2luZm8tPnBsYW5lWzBdLndp ZHRoLCByZW1faW5mby0+cGxhbmVbMF0uaGVpZ2h0LCBzaXplKTsKPiArCj4gKwlyZXR1cm4gRVJS X1BUUihyZXQpOwo+ICt9Cj4gKwo+ICAgc3RhdGljIG5vaW5saW5lIHN0cnVjdCBzZ190YWJsZSAq Cj4gICBpbnRlbF9wYXJ0aWFsX3BhZ2VzKGNvbnN0IHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmll dywKPiAgIAkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4gQEAgLTM4NzQs NiArMzk2MCwxMSBAQCBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyhzdHJ1Y3QgaTkxNV92bWEgKnZt YSkKPiAgIAkJCWludGVsX3JvdGF0ZV9wYWdlcygmdm1hLT5nZ3R0X3ZpZXcucm90YXRlZCwgdm1h LT5vYmopOwo+ICAgCQlicmVhazsKPiAgIAo+ICsJY2FzZSBJOTE1X0dHVFRfVklFV19SRU1BUFBF RDoKPiArCQl2bWEtPnBhZ2VzID0KPiArCQkJaW50ZWxfcmVtYXBfcGFnZXMoJnZtYS0+Z2d0dF92 aWV3LnJlbWFwcGVkLCB2bWEtPm9iaik7Cj4gKwkJYnJlYWs7Cj4gKwo+ICAgCWNhc2UgSTkxNV9H R1RUX1ZJRVdfUEFSVElBTDoKPiAgIAkJdm1hLT5wYWdlcyA9IGludGVsX3BhcnRpYWxfcGFnZXMo JnZtYS0+Z2d0dF92aWV3LCB2bWEtPm9iaik7Cj4gICAJCWJyZWFrOwo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggN2UyYWY1ZjRmMzliLi42OWEyMmY1N2U2Y2EgMTAwNjQ0 Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC0xNjAsMTEgKzE2MCwxOCBAQCB0 eXBlZGVmIHU2NCBnZW44X3BwZ3R0X3BtbDRlX3Q7Cj4gICAKPiAgIHN0cnVjdCBzZ190YWJsZTsK PiAgIAo+ICtzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfcGxhbmVfaW5mbyB7Cj4gKwkvKiBpbiBndHQg cGFnZXMgKi8KPiArCXVuc2lnbmVkIGludCB3aWR0aCwgaGVpZ2h0LCBzdHJpZGUsIG9mZnNldDsK PiArfSBfX3BhY2tlZDsKPiArCj4gK3N0cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvIHsKPiArCXN0 cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIHBsYW5lWzJdOwo+ICsJdW5zaWduZWQgaW50 IHVudXNlZF9tYno7Cj4gK30gX19wYWNrZWQ7Cj4gKwo+ICAgc3RydWN0IGludGVsX3JvdGF0aW9u X2luZm8gewo+IC0Jc3RydWN0IGludGVsX3JvdGF0aW9uX3BsYW5lX2luZm8gewo+IC0JCS8qIHRp bGVzICovCj4gLQkJdW5zaWduZWQgaW50IHdpZHRoLCBoZWlnaHQsIHN0cmlkZSwgb2Zmc2V0Owo+ IC0JfSBwbGFuZVsyXTsKPiArCXN0cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIHBsYW5l WzJdOwo+ICAgfSBfX3BhY2tlZDsKPiAgIAo+ICAgc3RydWN0IGludGVsX3BhcnRpYWxfaW5mbyB7 Cj4gQEAgLTE3NiwxMiArMTgzLDIwIEBAIGVudW0gaTkxNV9nZ3R0X3ZpZXdfdHlwZSB7Cj4gICAJ STkxNV9HR1RUX1ZJRVdfTk9STUFMID0gMCwKPiAgIAlJOTE1X0dHVFRfVklFV19ST1RBVEVEID0g c2l6ZW9mKHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvKSwKPiAgIAlJOTE1X0dHVFRfVklFV19Q QVJUSUFMID0gc2l6ZW9mKHN0cnVjdCBpbnRlbF9wYXJ0aWFsX2luZm8pLAo+ICsJSTkxNV9HR1RU X1ZJRVdfUkVNQVBQRUQgPSBzaXplb2Yoc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8pLAo+ICAg fTsKPiAgIAo+ICAgc3RhdGljIGlubGluZSB2b2lkIGFzc2VydF9pOTE1X2dlbV9ndHRfdHlwZXMo dm9pZCkKPiAgIHsKPiAgIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBpbnRlbF9yb3RhdGlv bl9pbmZvKSAhPSA4KnNpemVvZih1bnNpZ25lZCBpbnQpKTsKPiAgIAlCVUlMRF9CVUdfT04oc2l6 ZW9mKHN0cnVjdCBpbnRlbF9wYXJ0aWFsX2luZm8pICE9IHNpemVvZih1NjQpICsgc2l6ZW9mKHVu c2lnbmVkIGludCkpOwo+ICsJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgaW50ZWxfcmVtYXBw ZWRfaW5mbykgIT0gOSpzaXplb2YodW5zaWduZWQgaW50KSk7Cj4gKwo+ICsJLyogQ2hlY2sgdGhh dCByb3RhdGlvbi9yZW1hcHBlZCBzaGFyZXMgb2Zmc2V0cyBmb3Igc2ltcGxpY2l0eSAqLwo+ICsJ QlVJTERfQlVHX09OKG9mZnNldG9mKHN0cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvLCBwbGFuZVsw XSkgIT0KPiArCQkgICAgIG9mZnNldG9mKHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvLCBwbGFu ZVswXSkpOwo+ICsJQlVJTERfQlVHX09OKG9mZnNldG9mZW5kKHN0cnVjdCBpbnRlbF9yZW1hcHBl ZF9pbmZvLCBwbGFuZVsxXSkgIT0KPiArCQkgICAgIG9mZnNldG9mZW5kKHN0cnVjdCBpbnRlbF9y b3RhdGlvbl9pbmZvLCBwbGFuZVsxXSkpOwo+ICAgCj4gICAJLyogQXMgd2UgZW5jb2RlIHRoZSBz aXplIG9mIGVhY2ggYnJhbmNoIGluc2lkZSB0aGUgdW5pb24gaW50byBpdHMgdHlwZSwKPiAgIAkg KiB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgdGhhdCBlYWNoIGJyYW5jaCBoYXMgYSB1bmlxdWUgc2l6 ZS4KPiBAQCAtMTkwLDYgKzIwNSw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhc3NlcnRfaTkxNV9n ZW1fZ3R0X3R5cGVzKHZvaWQpCj4gICAJY2FzZSBJOTE1X0dHVFRfVklFV19OT1JNQUw6Cj4gICAJ Y2FzZSBJOTE1X0dHVFRfVklFV19QQVJUSUFMOgo+ICAgCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUk9U QVRFRDoKPiArCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ6Cj4gICAJCS8qIGdjYyBjb21w bGFpbnMgaWYgdGhlc2UgYXJlIGlkZW50aWNhbCBjYXNlcyAqLwo+ICAgCQlicmVhazsKPiAgIAl9 Cj4gQEAgLTIwMSw2ICsyMTcsNyBAQCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgewo+ICAgCQkvKiBN ZW1iZXJzIG5lZWQgdG8gY29udGFpbiBubyBob2xlcy9wYWRkaW5nICovCj4gICAJCXN0cnVjdCBp bnRlbF9wYXJ0aWFsX2luZm8gcGFydGlhbDsKPiAgIAkJc3RydWN0IGludGVsX3JvdGF0aW9uX2lu Zm8gcm90YXRlZDsKPiArCQlzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyByZW1hcHBlZDsKPiAg IAl9Owo+ICAgfTsKPiAgIAo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYwo+IGluZGV4IDMxZWZjOTcx YTNhOC4uMTc5M2M3MDJhYjk0IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfdm1hLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jCj4gQEAgLTE2 NCw2ICsxNjQsOSBAQCB2bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmos Cj4gICAJCX0gZWxzZSBpZiAodmlldy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19ST1RBVEVEKSB7 Cj4gICAJCQl2bWEtPnNpemUgPSBpbnRlbF9yb3RhdGlvbl9pbmZvX3NpemUoJnZpZXctPnJvdGF0 ZWQpOwo+ICAgCQkJdm1hLT5zaXplIDw8PSBQQUdFX1NISUZUOwo+ICsJCX0gZWxzZSBpZiAodmll dy0+dHlwZSA9PSBJOTE1X0dHVFRfVklFV19SRU1BUFBFRCkgewo+ICsJCQl2bWEtPnNpemUgPSBp bnRlbF9yZW1hcHBlZF9pbmZvX3NpemUoJnZpZXctPnJlbWFwcGVkKTsKPiArCQkJdm1hLT5zaXpl IDw8PSBQQUdFX1NISUZUOwo+ICAgCQl9Cj4gICAJfQo+ICAgCj4gQEAgLTQ2NCw3ICs0NjcsOCBA QCB2b2lkIF9faTkxNV92bWFfc2V0X21hcF9hbmRfZmVuY2VhYmxlKHN0cnVjdCBpOTE1X3ZtYSAq dm1hKQo+ICAgCSAqIEV4cGxpY2l0bHkgZGlzYWJsZSBmb3Igcm90YXRlZCBWTUEgc2luY2UgdGhl IGRpc3BsYXkgZG9lcyBub3QKPiAgIAkgKiBuZWVkIHRoZSBmZW5jZSBhbmQgdGhlIFZNQSBpcyBu b3QgYWNjZXNzaWJsZSB0byBvdGhlciB1c2Vycy4KPiAgIAkgKi8KPiAtCWlmICh2bWEtPmdndHRf dmlldy50eXBlID09IEk5MTVfR0dUVF9WSUVXX1JPVEFURUQpCj4gKwlpZiAodm1hLT5nZ3R0X3Zp ZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19ST1RBVEVEIHx8Cj4gKwkgICAgdm1hLT5nZ3R0X3Zp ZXcudHlwZSA9PSBJOTE1X0dHVFRfVklFV19SRU1BUFBFRCkKPiAgIAkJcmV0dXJuOwo+ICAgCj4g ICAJZmVuY2VhYmxlID0gKHZtYS0+bm9kZS5zaXplID49IHZtYS0+ZmVuY2Vfc2l6ZSAmJgo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92bWEuaAo+IGluZGV4IDRmN2MxYzc1OTlmNC4uNjRjZjAyOWMwMjhhIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmgKPiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCj4gQEAgLTI2NSw4ICsyNjUsMTEgQEAgaTkxNV92 bWFfY29tcGFyZShzdHJ1Y3QgaTkxNV92bWEgKnZtYSwKPiAgIAkgKi8KPiAgIAlCVUlMRF9CVUdf T04oSTkxNV9HR1RUX1ZJRVdfTk9STUFMID49IEk5MTVfR0dUVF9WSUVXX1BBUlRJQUwpOwo+ICAg CUJVSUxEX0JVR19PTihJOTE1X0dHVFRfVklFV19QQVJUSUFMID49IEk5MTVfR0dUVF9WSUVXX1JP VEFURUQpOwo+ICsJQlVJTERfQlVHX09OKEk5MTVfR0dUVF9WSUVXX1JPVEFURUQgPj0gSTkxNV9H R1RUX1ZJRVdfUkVNQVBQRUQpOwo+ICAgCUJVSUxEX0JVR19PTihvZmZzZXRvZih0eXBlb2YoKnZp ZXcpLCByb3RhdGVkKSAhPQo+ICAgCQkgICAgIG9mZnNldG9mKHR5cGVvZigqdmlldyksIHBhcnRp YWwpKTsKPiArCUJVSUxEX0JVR19PTihvZmZzZXRvZih0eXBlb2YoKnZpZXcpLCByb3RhdGVkKSAh PQo+ICsJCSAgICAgb2Zmc2V0b2YodHlwZW9mKCp2aWV3KSwgcmVtYXBwZWQpKTsKPiAgIAlyZXR1 cm4gbWVtY21wKCZ2bWEtPmdndHRfdmlldy5wYXJ0aWFsLCAmdmlldy0+cGFydGlhbCwgdmlldy0+ dHlwZSk7Cj4gICB9Cj4gICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gaW5k ZXggMWZlNWNmM2VkMDYyLi40ZjlmNTE5Y2NkNDYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCj4gQEAgLTIwMDYsNiArMjAwNiwxNyBAQCB1bnNpZ25lZCBpbnQgaW50ZWxf cm90YXRpb25faW5mb19zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpyb3Rf aW5mbwo+ICAgCXJldHVybiBzaXplOwo+ICAgfQo+ICAgCj4gK3Vuc2lnbmVkIGludCBpbnRlbF9y ZW1hcHBlZF9pbmZvX3NpemUoY29uc3Qgc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8gKnJlbV9p bmZvKQo+ICt7Cj4gKwl1bnNpZ25lZCBpbnQgc2l6ZSA9IDA7Cj4gKwlpbnQgaTsKPiArCj4gKwlm b3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUocmVtX2luZm8tPnBsYW5lKTsgaSsrKQo+ICsJCXNp emUgKz0gcmVtX2luZm8tPnBsYW5lW2ldLndpZHRoICogcmVtX2luZm8tPnBsYW5lW2ldLmhlaWdo dDsKPiArCj4gKwlyZXR1cm4gc2l6ZTsKPiArfQo+ICsKPiAgIHN0YXRpYyB2b2lkCj4gICBpbnRl bF9maWxsX2ZiX2dndHRfdmlldyhzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKnZpZXcsCj4gICAJCQlj b25zdCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAo+IGluZGV4IDRmY2JhOTlkMTJjMC4uYTg4YTE2Yjc0ZjI0IDEwMDY0NAo+IC0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiBAQCAtMTUwMyw2ICsxNTAzLDcgQEAgdW5zaWduZWQgaW50IGludGVsX2Zi X3h5X3RvX2xpbmVhcihpbnQgeCwgaW50IHksCj4gICB2b2lkIGludGVsX2FkZF9mYl9vZmZzZXRz KGludCAqeCwgaW50ICp5LAo+ICAgCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUg KnN0YXRlLCBpbnQgcGxhbmUpOwo+ICAgdW5zaWduZWQgaW50IGludGVsX3JvdGF0aW9uX2luZm9f c2l6ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqcm90X2luZm8pOwo+ICt1bnNp Z25lZCBpbnQgaW50ZWxfcmVtYXBwZWRfaW5mb19zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yZW1h cHBlZF9pbmZvICpyZW1faW5mbyk7Cj4gICBib29sIGludGVsX2hhc19wZW5kaW5nX2ZiX3VucGlu KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7Cj4gICB2b2lkIGludGVsX21hcmtf YnVzeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwo+ICAgdm9pZCBpbnRlbF9t YXJrX2lkbGUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwo+IGluZGV4IGZmYTc0MjkwZTA1NC4uNGZj NDljMjdmMTNjIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9p OTE1X3ZtYS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1h LmMKPiBAQCAtMzk1LDggKzM5NSw4IEBAIGFzc2VydF9yb3RhdGVkKHN0cnVjdCBkcm1faTkxNV9n ZW1fb2JqZWN0ICpvYmosCj4gICAJcmV0dXJuIHNnOwo+ICAgfQo+ICAgCj4gLXN0YXRpYyB1bnNp Z25lZCBpbnQgcm90YXRlZF9zaXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9wbGFuZV9p bmZvICphLAo+IC0JCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9wbGFuZV9pbmZvICpi KQo+ICtzdGF0aWMgdW5zaWduZWQgaW50IHJvdGF0ZWRfc2l6ZShjb25zdCBzdHJ1Y3QgaW50ZWxf cmVtYXBwZWRfcGxhbmVfaW5mbyAqYSwKPiArCQkJCSBjb25zdCBzdHJ1Y3QgaW50ZWxfcmVtYXBw ZWRfcGxhbmVfaW5mbyAqYikKPiAgIHsKPiAgIAlyZXR1cm4gYS0+d2lkdGggKiBhLT5oZWlnaHQg KyBiLT53aWR0aCAqIGItPmhlaWdodDsKPiAgIH0KPiBAQCAtNDA2LDcgKzQwNiw3IEBAIHN0YXRp YyBpbnQgaWd0X3ZtYV9yb3RhdGUodm9pZCAqYXJnKQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICppOTE1ID0gYXJnOwo+ICAgCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmk5 MTUtPmdndHQudm07Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKPiAtCWNv bnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9wbGFuZV9pbmZvIHBsYW5lc1tdID0gewo+ICsJY29u c3Qgc3RydWN0IGludGVsX3JlbWFwcGVkX3BsYW5lX2luZm8gcGxhbmVzW10gPSB7Cj4gICAJCXsg LndpZHRoID0gMSwgLmhlaWdodCA9IDEsIC5zdHJpZGUgPSAxIH0sCj4gICAJCXsgLndpZHRoID0g MiwgLmhlaWdodCA9IDIsIC5zdHJpZGUgPSAyIH0sCj4gICAJCXsgLndpZHRoID0gNCwgLmhlaWdo dCA9IDQsIC5zdHJpZGUgPSA0IH0sCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL2ludGVsLWdmeAo=