From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v4 3/8] drm/i915: Add a new "remapped" gtt_view Date: Tue, 23 Oct 2018 19:02:36 +0300 Message-ID: <20181023160236.9975-1-ville.syrjala@linux.intel.com> References: <20180925193714.25280-4-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by gabe.freedesktop.org (Postfix) with ESMTPS id 02F126E1DA for ; Tue, 23 Oct 2018 16:02:40 +0000 (UTC) In-Reply-To: <20180925193714.25280-4-ville.syrjala@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRv IG92ZXJjb21lIGRpc3BsYXkgZW5naW5lIHN0cmlkZSBsaW1pdHMgd2UnbGwgd2FudCB0byByZW1h cCB0aGUKcGFnZXMgaW4gdGhlIEdUVC4gVG8gdGhhdCBlbmQgd2UgbmVlZCBhIG5ldyBndHRfdmll dyB0eXBlIHdoaWNoCmlzIGp1c3QgbGlrZSB0aGUgInJvdGF0ZWQiIHR5cGUgZXhjZXB0IG5vdCBy b3RhdGVkLgoKdjI6IFVzZSBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIGJhc2UgdHlwZQogICAg cy91bnVzZWQvdW51c2VkX21iei8gKENocmlzKQogICAgU2VwYXJhdGUgQlVJTERfQlVHX09OKClz IChDaHJpcykKICAgIFVzZSBJOTE1X0dUVF9QQUdFX1NJWkUgKENocmlzKQp2MzogVXNlIGk5MTVf Z2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3MoKSAoQ2hyaXMpCiAgICBUcmltIHRoZSBzZyAoVHZy dGtvKQoKQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVHZy dGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KU2lnbmVkLW9mZi1i eTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgICB8IDEyICsrKysKIGRyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgIHwgNzQgKysrKysrKysrKysrKysr KysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgIHwgMjUg KysrKysrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmMgICAgICAgICAgIHwgIDYg Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfdm1hLmggICAgICAgICAgIHwgIDMgKwogZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jICAgICAgfCAxMSArKysrCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaCAgICAgICAgICB8ICAxICsKIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X3ZtYS5jIHwgIDYgKy0KIDggZmlsZXMgY2hhbmdlZCwgMTMw IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVn ZnMuYwppbmRleCA1YjM3ZDVmOGUxMzIuLmNlMDE5MTI2MzA0ZCAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKQEAgLTE5Niw2ICsxOTYsMTggQEAgZGVzY3JpYmVfb2JqKHN0cnVjdCBz ZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIAkJCQkJICAgdm1h LT5nZ3R0X3ZpZXcucm90YXRlZC5wbGFuZVsxXS5vZmZzZXQpOwogCQkJCWJyZWFrOwogCisJCQlj YXNlIEk5MTVfR0dUVF9WSUVXX1JFTUFQUEVEOgorCQkJCXNlcV9wcmludGYobSwgIiwgcmVtYXBw ZWQgWygldXgldSwgc3RyaWRlPSV1LCBvZmZzZXQ9JXUpLCAoJXV4JXUsIHN0cmlkZT0ldSwgb2Zm c2V0PSV1KV0iLAorCQkJCQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVswXS53aWR0 aCwKKwkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQucGxhbmVbMF0uaGVpZ2h0LAorCQkJ CQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVswXS5zdHJpZGUsCisJCQkJCSAgIHZt YS0+Z2d0dF92aWV3LnJlbWFwcGVkLnBsYW5lWzBdLm9mZnNldCwKKwkJCQkJICAgdm1hLT5nZ3R0 X3ZpZXcucmVtYXBwZWQucGxhbmVbMV0ud2lkdGgsCisJCQkJCSAgIHZtYS0+Z2d0dF92aWV3LnJl bWFwcGVkLnBsYW5lWzFdLmhlaWdodCwKKwkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQu cGxhbmVbMV0uc3RyaWRlLAorCQkJCQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVsx XS5vZmZzZXQpOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0OgogCQkJCU1JU1NJTkdfQ0FTRSh2 bWEtPmdndHRfdmlldy50eXBlKTsKIAkJCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKaW5kZXggOThkOWExZWIxZWQyLi5kMGU1MGI1ODRlYmQgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2d0dC5jCkBAIC0zNzA1LDYgKzM3MDUsNzUgQEAgaW50ZWxfcm90YXRlX3BhZ2Vz KHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbywKIAlyZXR1cm4gRVJSX1BUUihy ZXQpOwogfQogCitzdGF0aWMgc3RydWN0IHNjYXR0ZXJsaXN0ICoKK3JlbWFwX3BhZ2VzKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBvZmZzZXQsCisJICAgIHVu c2lnbmVkIGludCB3aWR0aCwgdW5zaWduZWQgaW50IGhlaWdodCwKKwkgICAgdW5zaWduZWQgaW50 IHN0cmlkZSwKKwkgICAgc3RydWN0IHNnX3RhYmxlICpzdCwgc3RydWN0IHNjYXR0ZXJsaXN0ICpz ZykKK3sKKwl1bnNpZ25lZCBpbnQgY29sdW1uLCByb3c7CisKKwlmb3IgKHJvdyA9IDA7IHJvdyA8 IGhlaWdodDsgcm93KyspIHsKKwkJZm9yIChjb2x1bW4gPSAwOyBjb2x1bW4gPCB3aWR0aDsgY29s dW1uKyspIHsKKwkJCXN0LT5uZW50cysrOworCQkJLyogV2UgZG9uJ3QgbmVlZCB0aGUgcGFnZXMs IGJ1dCBuZWVkIHRvIGluaXRpYWxpemUKKwkJCSAqIHRoZSBlbnRyaWVzIHNvIHRoZSBzZyBsaXN0 IGNhbiBiZSBoYXBwaWx5IHRyYXZlcnNlZC4KKwkJCSAqIFRoZSBvbmx5IHRoaW5nIHdlIG5lZWQg YXJlIERNQSBhZGRyZXNzZXMuCisJCQkgKi8KKwkJCXNnX3NldF9wYWdlKHNnLCBOVUxMLCBJOTE1 X0dUVF9QQUdFX1NJWkUsIDApOworCQkJc2dfZG1hX2FkZHJlc3Moc2cpID0KKwkJCQlpOTE1X2dl bV9vYmplY3RfZ2V0X2RtYV9hZGRyZXNzKG9iaiwgb2Zmc2V0ICsgY29sdW1uKTsKKwkJCXNnX2Rt YV9sZW4oc2cpID0gSTkxNV9HVFRfUEFHRV9TSVpFOworCQkJc2cgPSBzZ19uZXh0KHNnKTsKKwkJ fQorCQlvZmZzZXQgKz0gc3RyaWRlOworCX0KKworCXJldHVybiBzZzsKK30KKworc3RhdGljIG5v aW5saW5lIHN0cnVjdCBzZ190YWJsZSAqCitpbnRlbF9yZW1hcF9wYWdlcyhzdHJ1Y3QgaW50ZWxf cmVtYXBwZWRfaW5mbyAqcmVtX2luZm8sCisJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaikKK3sKKwl1bnNpZ25lZCBpbnQgc2l6ZSA9IGludGVsX3JlbWFwcGVkX2luZm9fc2l6ZShy ZW1faW5mbyk7CisJc3RydWN0IHNnX3RhYmxlICpzdDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNn OworCWludCByZXQgPSAtRU5PTUVNOworCWludCBpOworCisJLyogQWxsb2NhdGUgdGFyZ2V0IFNH IGxpc3QuICovCisJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKKwlpZiAo IXN0KQorCQlnb3RvIGVycl9zdF9hbGxvYzsKKworCXJldCA9IHNnX2FsbG9jX3RhYmxlKHN0LCBz aXplLCBHRlBfS0VSTkVMKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9zZ19hbGxvYzsKKworCXN0 LT5uZW50cyA9IDA7CisJc2cgPSBzdC0+c2dsOworCisJZm9yIChpID0gMCA7IGkgPCBBUlJBWV9T SVpFKHJlbV9pbmZvLT5wbGFuZSk7IGkrKykgeworCQlzZyA9IHJlbWFwX3BhZ2VzKG9iaiwgcmVt X2luZm8tPnBsYW5lW2ldLm9mZnNldCwKKwkJCQkgcmVtX2luZm8tPnBsYW5lW2ldLndpZHRoLCBy ZW1faW5mby0+cGxhbmVbaV0uaGVpZ2h0LAorCQkJCSByZW1faW5mby0+cGxhbmVbaV0uc3RyaWRl LCBzdCwgc2cpOworCX0KKworCWk5MTVfc2dfdHJpbShzdCk7CisKKwlyZXR1cm4gc3Q7CisKK2Vy cl9zZ19hbGxvYzoKKwlrZnJlZShzdCk7CitlcnJfc3RfYWxsb2M6CisKKwlEUk1fREVCVUdfRFJJ VkVSKCJGYWlsZWQgdG8gY3JlYXRlIHJlbWFwcGVkIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICV6 dSEgKCV1eCV1IHRpbGVzLCAldSBwYWdlcylcbiIsCisJCQkgb2JqLT5iYXNlLnNpemUsIHJlbV9p bmZvLT5wbGFuZVswXS53aWR0aCwgcmVtX2luZm8tPnBsYW5lWzBdLmhlaWdodCwgc2l6ZSk7CisK KwlyZXR1cm4gRVJSX1BUUihyZXQpOworfQorCiBzdGF0aWMgbm9pbmxpbmUgc3RydWN0IHNnX3Rh YmxlICoKIGludGVsX3BhcnRpYWxfcGFnZXMoY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2 aWV3LAogCQkgICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKQEAgLTM3ODMsNiAr Mzg1MiwxMSBAQCBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkK IAkJCWludGVsX3JvdGF0ZV9wYWdlcygmdm1hLT5nZ3R0X3ZpZXcucm90YXRlZCwgdm1hLT5vYmop OwogCQlicmVhazsKIAorCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ6CisJCXZtYS0+cGFn ZXMgPQorCQkJaW50ZWxfcmVtYXBfcGFnZXMoJnZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLCB2bWEt Pm9iaik7CisJCWJyZWFrOworCiAJY2FzZSBJOTE1X0dHVFRfVklFV19QQVJUSUFMOgogCQl2bWEt PnBhZ2VzID0gaW50ZWxfcGFydGlhbF9wYWdlcygmdm1hLT5nZ3R0X3ZpZXcsIHZtYS0+b2JqKTsK IAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQu aCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDdlMmFmNWY0ZjM5 Yi4uNjlhMjJmNTdlNmNhIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMTYw LDExICsxNjAsMTggQEAgdHlwZWRlZiB1NjQgZ2VuOF9wcGd0dF9wbWw0ZV90OwogCiBzdHJ1Y3Qg c2dfdGFibGU7CiAKK3N0cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIHsKKwkvKiBpbiBn dHQgcGFnZXMgKi8KKwl1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodCwgc3RyaWRlLCBvZmZzZXQ7 Cit9IF9fcGFja2VkOworCitzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyB7CisJc3RydWN0IGlu dGVsX3JlbWFwcGVkX3BsYW5lX2luZm8gcGxhbmVbMl07CisJdW5zaWduZWQgaW50IHVudXNlZF9t Yno7Cit9IF9fcGFja2VkOworCiBzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyB7Ci0Jc3RydWN0 IGludGVsX3JvdGF0aW9uX3BsYW5lX2luZm8gewotCQkvKiB0aWxlcyAqLwotCQl1bnNpZ25lZCBp bnQgd2lkdGgsIGhlaWdodCwgc3RyaWRlLCBvZmZzZXQ7Ci0JfSBwbGFuZVsyXTsKKwlzdHJ1Y3Qg aW50ZWxfcmVtYXBwZWRfcGxhbmVfaW5mbyBwbGFuZVsyXTsKIH0gX19wYWNrZWQ7CiAKIHN0cnVj dCBpbnRlbF9wYXJ0aWFsX2luZm8gewpAQCAtMTc2LDEyICsxODMsMjAgQEAgZW51bSBpOTE1X2dn dHRfdmlld190eXBlIHsKIAlJOTE1X0dHVFRfVklFV19OT1JNQUwgPSAwLAogCUk5MTVfR0dUVF9W SUVXX1JPVEFURUQgPSBzaXplb2Yoc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8pLAogCUk5MTVf R0dUVF9WSUVXX1BBUlRJQUwgPSBzaXplb2Yoc3RydWN0IGludGVsX3BhcnRpYWxfaW5mbyksCisJ STkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQgPSBzaXplb2Yoc3RydWN0IGludGVsX3JlbWFwcGVkX2lu Zm8pLAogfTsKIAogc3RhdGljIGlubGluZSB2b2lkIGFzc2VydF9pOTE1X2dlbV9ndHRfdHlwZXMo dm9pZCkKIHsKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZv KSAhPSA4KnNpemVvZih1bnNpZ25lZCBpbnQpKTsKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVj dCBpbnRlbF9wYXJ0aWFsX2luZm8pICE9IHNpemVvZih1NjQpICsgc2l6ZW9mKHVuc2lnbmVkIGlu dCkpOworCUJVSUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8pICE9 IDkqc2l6ZW9mKHVuc2lnbmVkIGludCkpOworCisJLyogQ2hlY2sgdGhhdCByb3RhdGlvbi9yZW1h cHBlZCBzaGFyZXMgb2Zmc2V0cyBmb3Igc2ltcGxpY2l0eSAqLworCUJVSUxEX0JVR19PTihvZmZz ZXRvZihzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbywgcGxhbmVbMF0pICE9CisJCSAgICAgb2Zm c2V0b2Yoc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8sIHBsYW5lWzBdKSk7CisJQlVJTERfQlVH X09OKG9mZnNldG9mZW5kKHN0cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvLCBwbGFuZVsxXSkgIT0K KwkJICAgICBvZmZzZXRvZmVuZChzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbywgcGxhbmVbMV0p KTsKIAogCS8qIEFzIHdlIGVuY29kZSB0aGUgc2l6ZSBvZiBlYWNoIGJyYW5jaCBpbnNpZGUgdGhl IHVuaW9uIGludG8gaXRzIHR5cGUsCiAJICogd2UgaGF2ZSB0byBiZSBjYXJlZnVsIHRoYXQgZWFj aCBicmFuY2ggaGFzIGEgdW5pcXVlIHNpemUuCkBAIC0xOTAsNiArMjA1LDcgQEAgc3RhdGljIGlu bGluZSB2b2lkIGFzc2VydF9pOTE1X2dlbV9ndHRfdHlwZXModm9pZCkKIAljYXNlIEk5MTVfR0dU VF9WSUVXX05PUk1BTDoKIAljYXNlIEk5MTVfR0dUVF9WSUVXX1BBUlRJQUw6CiAJY2FzZSBJOTE1 X0dHVFRfVklFV19ST1RBVEVEOgorCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ6CiAJCS8q IGdjYyBjb21wbGFpbnMgaWYgdGhlc2UgYXJlIGlkZW50aWNhbCBjYXNlcyAqLwogCQlicmVhazsK IAl9CkBAIC0yMDEsNiArMjE3LDcgQEAgc3RydWN0IGk5MTVfZ2d0dF92aWV3IHsKIAkJLyogTWVt YmVycyBuZWVkIHRvIGNvbnRhaW4gbm8gaG9sZXMvcGFkZGluZyAqLwogCQlzdHJ1Y3QgaW50ZWxf cGFydGlhbF9pbmZvIHBhcnRpYWw7CiAJCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvIHJvdGF0 ZWQ7CisJCXN0cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvIHJlbWFwcGVkOwogCX07CiB9OwogCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV92bWEuYwppbmRleCA4MjY1MmMzZDFiZWQuLjIwNzBlNDRlYWEwMyAxMDA2 NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X3ZtYS5jCkBAIC0xNjQsNiArMTY0LDkgQEAgdm1hX2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCQl9IGVsc2UgaWYgKHZpZXctPnR5cGUgPT0g STkxNV9HR1RUX1ZJRVdfUk9UQVRFRCkgewogCQkJdm1hLT5zaXplID0gaW50ZWxfcm90YXRpb25f aW5mb19zaXplKCZ2aWV3LT5yb3RhdGVkKTsKIAkJCXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsK KwkJfSBlbHNlIGlmICh2aWV3LT50eXBlID09IEk5MTVfR0dUVF9WSUVXX1JFTUFQUEVEKSB7CisJ CQl2bWEtPnNpemUgPSBpbnRlbF9yZW1hcHBlZF9pbmZvX3NpemUoJnZpZXctPnJlbWFwcGVkKTsK KwkJCXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsKIAkJfQogCX0KIApAQCAtNDY0LDcgKzQ2Nyw4 IEBAIHZvaWQgX19pOTE1X3ZtYV9zZXRfbWFwX2FuZF9mZW5jZWFibGUoc3RydWN0IGk5MTVfdm1h ICp2bWEpCiAJICogRXhwbGljaXRseSBkaXNhYmxlIGZvciByb3RhdGVkIFZNQSBzaW5jZSB0aGUg ZGlzcGxheSBkb2VzIG5vdAogCSAqIG5lZWQgdGhlIGZlbmNlIGFuZCB0aGUgVk1BIGlzIG5vdCBh Y2Nlc3NpYmxlIHRvIG90aGVyIHVzZXJzLgogCSAqLwotCWlmICh2bWEtPmdndHRfdmlldy50eXBl ID09IEk5MTVfR0dUVF9WSUVXX1JPVEFURUQpCisJaWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0g STkxNV9HR1RUX1ZJRVdfUk9UQVRFRCB8fAorCSAgICB2bWEtPmdndHRfdmlldy50eXBlID09IEk5 MTVfR0dUVF9WSUVXX1JFTUFQUEVEKQogCQlyZXR1cm47CiAKIAlmZW5jZWFibGUgPSAodm1hLT5u b2RlLnNpemUgPj0gdm1hLT5mZW5jZV9zaXplICYmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAppbmRl eCA0ZjdjMWM3NTk5ZjQuLjY0Y2YwMjljMDI4YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV92bWEuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCkBA IC0yNjUsOCArMjY1LDExIEBAIGk5MTVfdm1hX2NvbXBhcmUoc3RydWN0IGk5MTVfdm1hICp2bWEs CiAJICovCiAJQlVJTERfQlVHX09OKEk5MTVfR0dUVF9WSUVXX05PUk1BTCA+PSBJOTE1X0dHVFRf VklFV19QQVJUSUFMKTsKIAlCVUlMRF9CVUdfT04oSTkxNV9HR1RUX1ZJRVdfUEFSVElBTCA+PSBJ OTE1X0dHVFRfVklFV19ST1RBVEVEKTsKKwlCVUlMRF9CVUdfT04oSTkxNV9HR1RUX1ZJRVdfUk9U QVRFRCA+PSBJOTE1X0dHVFRfVklFV19SRU1BUFBFRCk7CiAJQlVJTERfQlVHX09OKG9mZnNldG9m KHR5cGVvZigqdmlldyksIHJvdGF0ZWQpICE9CiAJCSAgICAgb2Zmc2V0b2YodHlwZW9mKCp2aWV3 KSwgcGFydGlhbCkpOworCUJVSUxEX0JVR19PTihvZmZzZXRvZih0eXBlb2YoKnZpZXcpLCByb3Rh dGVkKSAhPQorCQkgICAgIG9mZnNldG9mKHR5cGVvZigqdmlldyksIHJlbWFwcGVkKSk7CiAJcmV0 dXJuIG1lbWNtcCgmdm1hLT5nZ3R0X3ZpZXcucGFydGlhbCwgJnZpZXctPnBhcnRpYWwsIHZpZXct PnR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggOGEwYjQ3 N2E2OWQzLi40MWY3ZTA3OTViMTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK QEAgLTE5NTcsNiArMTk1NywxNyBAQCB1bnNpZ25lZCBpbnQgaW50ZWxfcm90YXRpb25faW5mb19z aXplKGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbwogCXJldHVybiBz aXplOwogfQogCit1bnNpZ25lZCBpbnQgaW50ZWxfcmVtYXBwZWRfaW5mb19zaXplKGNvbnN0IHN0 cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvICpyZW1faW5mbykKK3sKKwl1bnNpZ25lZCBpbnQgc2l6 ZSA9IDA7CisJaW50IGk7CisKKwlmb3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUocmVtX2luZm8t PnBsYW5lKTsgaSsrKQorCQlzaXplICs9IHJlbV9pbmZvLT5wbGFuZVtpXS53aWR0aCAqIHJlbV9p bmZvLT5wbGFuZVtpXS5oZWlnaHQ7CisKKwlyZXR1cm4gc2l6ZTsKK30KKwogc3RhdGljIHZvaWQK IGludGVsX2ZpbGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywKIAkJ CWNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYu aAppbmRleCAwZTlhOTI2ZmNhMDQuLjY5OTNlZmY1ZGZhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZHJ2LmgKQEAgLTE1MjMsNiArMTUyMyw3IEBAIHVuc2lnbmVkIGludCBpbnRlbF9mYl94eV90b19s aW5lYXIoaW50IHgsIGludCB5LAogdm9pZCBpbnRlbF9hZGRfZmJfb2Zmc2V0cyhpbnQgKngsIGlu dCAqeSwKIAkJCSAgY29uc3Qgc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpzdGF0ZSwgaW50IHBs YW5lKTsKIHVuc2lnbmVkIGludCBpbnRlbF9yb3RhdGlvbl9pbmZvX3NpemUoY29uc3Qgc3RydWN0 IGludGVsX3JvdGF0aW9uX2luZm8gKnJvdF9pbmZvKTsKK3Vuc2lnbmVkIGludCBpbnRlbF9yZW1h cHBlZF9pbmZvX3NpemUoY29uc3Qgc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8gKnJlbV9pbmZv KTsKIGJvb2wgaW50ZWxfaGFzX3BlbmRpbmdfZmJfdW5waW4oc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfbWFya19idXN5KHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX21hcmtfaWRsZShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRl c3RzL2k5MTVfdm1hLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEu YwppbmRleCBmZmE3NDI5MGUwNTQuLjRmYzQ5YzI3ZjEzYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvc2VsZnRlc3RzL2k5MTVfdm1hLmMKQEAgLTM5NSw4ICszOTUsOCBAQCBhc3NlcnRfcm90YXRl ZChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAogCXJldHVybiBzZzsKIH0KIAotc3Rh dGljIHVuc2lnbmVkIGludCByb3RhdGVkX3NpemUoY29uc3Qgc3RydWN0IGludGVsX3JvdGF0aW9u X3BsYW5lX2luZm8gKmEsCi0JCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9wbGFuZV9p bmZvICpiKQorc3RhdGljIHVuc2lnbmVkIGludCByb3RhdGVkX3NpemUoY29uc3Qgc3RydWN0IGlu dGVsX3JlbWFwcGVkX3BsYW5lX2luZm8gKmEsCisJCQkJIGNvbnN0IHN0cnVjdCBpbnRlbF9yZW1h cHBlZF9wbGFuZV9pbmZvICpiKQogewogCXJldHVybiBhLT53aWR0aCAqIGEtPmhlaWdodCArIGIt PndpZHRoICogYi0+aGVpZ2h0OwogfQpAQCAtNDA2LDcgKzQwNiw3IEBAIHN0YXRpYyBpbnQgaWd0 X3ZtYV9yb3RhdGUodm9pZCAqYXJnKQogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0g YXJnOwogCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtID0gJmk5MTUtPmdndHQudm07CiAJ c3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iajsKLQljb25zdCBzdHJ1Y3QgaW50ZWxfcm90 YXRpb25fcGxhbmVfaW5mbyBwbGFuZXNbXSA9IHsKKwljb25zdCBzdHJ1Y3QgaW50ZWxfcmVtYXBw ZWRfcGxhbmVfaW5mbyBwbGFuZXNbXSA9IHsKIAkJeyAud2lkdGggPSAxLCAuaGVpZ2h0ID0gMSwg LnN0cmlkZSA9IDEgfSwKIAkJeyAud2lkdGggPSAyLCAuaGVpZ2h0ID0gMiwgLnN0cmlkZSA9IDIg fSwKIAkJeyAud2lkdGggPSA0LCAuaGVpZ2h0ID0gNCwgLnN0cmlkZSA9IDQgfSwKLS0gCjIuMTgu MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==