From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville Syrjala Subject: [PATCH v4 1/8] drm/i915: Add a new "remapped" gtt_view Date: Thu, 9 May 2019 15:21:52 +0300 Message-ID: <20190509122159.24376-2-ville.syrjala@linux.intel.com> References: <20190509122159.24376-1-ville.syrjala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 68C5789BFD for ; Thu, 9 May 2019 12:22:05 +0000 (UTC) In-Reply-To: <20190509122159.24376-1-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 Cc: Daniel Vetter List-Id: intel-gfx@lists.freedesktop.org RnJvbTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KClRv IG92ZXJjb21lIGRpc3BsYXkgZW5naW5lIHN0cmlkZSBsaW1pdHMgd2UnbGwgd2FudCB0byByZW1h cCB0aGUKcGFnZXMgaW4gdGhlIEdUVC4gVG8gdGhhdCBlbmQgd2UgbmVlZCBhIG5ldyBndHRfdmll dyB0eXBlIHdoaWNoCmlzIGp1c3QgbGlrZSB0aGUgInJvdGF0ZWQiIHR5cGUgZXhjZXB0IG5vdCBy b3RhdGVkLgoKdjI6IFVzZSBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIGJhc2UgdHlwZQogICAg cy91bnVzZWQvdW51c2VkX21iei8gKENocmlzKQogICAgU2VwYXJhdGUgQlVJTERfQlVHX09OKClz IChDaHJpcykKICAgIFVzZSBJOTE1X0dUVF9QQUdFX1NJWkUgKENocmlzKQp2MzogVXNlIGk5MTVf Z2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3MoKSAoQ2hyaXMpCiAgICBUcmltIHRoZSBzZyAoVHZy dGtvKQp2NDogQWN0dWFsbHkgdHJpbSB0aGlzIHRpbWUuIExpbWl0IHRoZSBtYXggbGVuZ3RoCiAg ICB0byBvbmUgcm93IG9mIHBhZ2VzIHRvIGtlZXAgdGhpbmdzIHNpbXBsZQoKQ2M6IENocmlzIFdp bHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpDYzogVHZydGtvIFVyc3VsaW4gPHR2cnRr by51cnN1bGluQGxpbnV4LmludGVsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBWZXR0ZXIgPGRh bmllbC52ZXR0ZXJAZmZ3bGwuY2g+ClJldmlld2VkLWJ5OiBDaHJpcyBXaWxzb24gPGNocmlzQGNo cmlzLXdpbHNvbi5jby51az4KU2lnbmVkLW9mZi1ieTogVmlsbGUgU3lyasOkbMOkIDx2aWxsZS5z eXJqYWxhQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rl YnVnZnMuYyAgICAgICB8IDEyICsrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2Lmgg ICAgICAgICAgIHwgIDQgKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgICAgICAg ICAgIHwgMTcgKysrKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAg IHwgODggKysrKysrKysrKysrKysrKysrKysrKysKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf Z2VtX2d0dC5oICAgICAgIHwgMjUgKysrKystLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92 bWEuYyAgICAgICAgICAgfCAgNiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaCAg ICAgICAgICAgfCAgMyArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAg ICB8IDExICsrKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgICAgICAgfCAg MSArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYyB8ICA2ICstCiAx MCBmaWxlcyBjaGFuZ2VkLCAxNjMgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwppbmRleCAwNzI0NjRhMTgwNTAuLjYzM2EwOGMwZjkw NyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKQEAgLTIxMiw2ICsyMTIsMTggQEAg ZGVzY3JpYmVfb2JqKHN0cnVjdCBzZXFfZmlsZSAqbSwgc3RydWN0IGRybV9pOTE1X2dlbV9vYmpl Y3QgKm9iaikKIAkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucm90YXRlZC5wbGFuZVsxXS5vZmZzZXQp OwogCQkJCWJyZWFrOwogCisJCQljYXNlIEk5MTVfR0dUVF9WSUVXX1JFTUFQUEVEOgorCQkJCXNl cV9wcmludGYobSwgIiwgcmVtYXBwZWQgWygldXgldSwgc3RyaWRlPSV1LCBvZmZzZXQ9JXUpLCAo JXV4JXUsIHN0cmlkZT0ldSwgb2Zmc2V0PSV1KV0iLAorCQkJCQkgICB2bWEtPmdndHRfdmlldy5y ZW1hcHBlZC5wbGFuZVswXS53aWR0aCwKKwkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQu cGxhbmVbMF0uaGVpZ2h0LAorCQkJCQkgICB2bWEtPmdndHRfdmlldy5yZW1hcHBlZC5wbGFuZVsw XS5zdHJpZGUsCisJCQkJCSAgIHZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLnBsYW5lWzBdLm9mZnNl dCwKKwkJCQkJICAgdm1hLT5nZ3R0X3ZpZXcucmVtYXBwZWQucGxhbmVbMV0ud2lkdGgsCisJCQkJ CSAgIHZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLnBsYW5lWzFdLmhlaWdodCwKKwkJCQkJICAgdm1h LT5nZ3R0X3ZpZXcucmVtYXBwZWQucGxhbmVbMV0uc3RyaWRlLAorCQkJCQkgICB2bWEtPmdndHRf dmlldy5yZW1hcHBlZC5wbGFuZVsxXS5vZmZzZXQpOworCQkJCWJyZWFrOworCiAJCQlkZWZhdWx0 OgogCQkJCU1JU1NJTkdfQ0FTRSh2bWEtPmdndHRfdmlldy50eXBlKTsKIAkJCQlicmVhazsKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2Rydi5oCmluZGV4IGQwMjU3ODA4NzM0Yy4uYzZkNTE5ZTY3ZWQwIDEwMDY0 NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZHJ2LmgKQEAgLTI4NTksNiArMjg1OSwxMCBAQCBpOTE1X2dlbV9vYmpl Y3RfZ2V0X2RpcnR5X3BhZ2Uoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKIAkJCSAg ICAgICB1bnNpZ25lZCBpbnQgbik7CiAKIGRtYV9hZGRyX3QKK2k5MTVfZ2VtX29iamVjdF9nZXRf ZG1hX2FkZHJlc3NfbGVuKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkJICAg IHVuc2lnbmVkIGxvbmcgbiwKKwkJCQkgICAgdW5zaWduZWQgaW50ICpsZW4pOworZG1hX2FkZHJf dAogaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzcyhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqLAogCQkJCXVuc2lnbmVkIGxvbmcgbik7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j CmluZGV4IDJmY2VjMWJmYjAzOC4uNGU0NzRiY2Y0YzIyIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt LmMKQEAgLTUwODEsMTYgKzUwODEsMjkgQEAgaTkxNV9nZW1fb2JqZWN0X2dldF9kaXJ0eV9wYWdl KHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiB9CiAKIGRtYV9hZGRyX3QKLWk5MTVf Z2VtX29iamVjdF9nZXRfZG1hX2FkZHJlc3Moc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i aiwKLQkJCQl1bnNpZ25lZCBsb25nIG4pCitpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9hZGRyZXNz X2xlbihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJCSAgICB1bnNpZ25lZCBs b25nIG4sCisJCQkJICAgIHVuc2lnbmVkIGludCAqbGVuKQogewogCXN0cnVjdCBzY2F0dGVybGlz dCAqc2c7CiAJdW5zaWduZWQgaW50IG9mZnNldDsKIAogCXNnID0gaTkxNV9nZW1fb2JqZWN0X2dl dF9zZyhvYmosIG4sICZvZmZzZXQpOworCisJaWYgKGxlbikKKwkJKmxlbiA9IHNnX2RtYV9sZW4o c2cpIC0gKG9mZnNldCA8PCBQQUdFX1NISUZUKTsKKwogCXJldHVybiBzZ19kbWFfYWRkcmVzcyhz ZykgKyAob2Zmc2V0IDw8IFBBR0VfU0hJRlQpOwogfQogCitkbWFfYWRkcl90CitpOTE1X2dlbV9v YmplY3RfZ2V0X2RtYV9hZGRyZXNzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJ CQkJdW5zaWduZWQgbG9uZyBuKQoreworCXJldHVybiBpOTE1X2dlbV9vYmplY3RfZ2V0X2RtYV9h ZGRyZXNzX2xlbihvYmosIG4sIE5VTEwpOworfQorCisKIGludCBpOTE1X2dlbV9vYmplY3RfYXR0 YWNoX3BoeXMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgaW50IGFsaWduKQogewog CXN0cnVjdCBzZ190YWJsZSAqcGFnZXM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmlu ZGV4IDhmNWRiNzg3YjdmMi4uOWVkNDFhZWZiNDU2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9ndHQuYwpAQCAtMzYwOCw2ICszNjA4LDg5IEBAIGludGVsX3JvdGF0ZV9wYWdlcyhzdHJ1Y3Qg aW50ZWxfcm90YXRpb25faW5mbyAqcm90X2luZm8sCiAJcmV0dXJuIEVSUl9QVFIocmV0KTsKIH0K IAorc3RhdGljIHN0cnVjdCBzY2F0dGVybGlzdCAqCityZW1hcF9wYWdlcyhzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAorCSAgICB1bnNpZ25lZCBp bnQgd2lkdGgsIHVuc2lnbmVkIGludCBoZWlnaHQsCisJICAgIHVuc2lnbmVkIGludCBzdHJpZGUs CisJICAgIHN0cnVjdCBzZ190YWJsZSAqc3QsIHN0cnVjdCBzY2F0dGVybGlzdCAqc2cpCit7CisJ dW5zaWduZWQgaW50IHJvdzsKKworCWZvciAocm93ID0gMDsgcm93IDwgaGVpZ2h0OyByb3crKykg eworCQl1bnNpZ25lZCBpbnQgbGVmdCA9IHdpZHRoICogSTkxNV9HVFRfUEFHRV9TSVpFOworCisJ CXdoaWxlIChsZWZ0KSB7CisJCQlkbWFfYWRkcl90IGFkZHI7CisJCQl1bnNpZ25lZCBpbnQgbGVu Z3RoOworCisJCQkvKiBXZSBkb24ndCBuZWVkIHRoZSBwYWdlcywgYnV0IG5lZWQgdG8gaW5pdGlh bGl6ZQorCQkJICogdGhlIGVudHJpZXMgc28gdGhlIHNnIGxpc3QgY2FuIGJlIGhhcHBpbHkgdHJh dmVyc2VkLgorCQkJICogVGhlIG9ubHkgdGhpbmcgd2UgbmVlZCBhcmUgRE1BIGFkZHJlc3Nlcy4K KwkJCSAqLworCisJCQlhZGRyID0gaTkxNV9nZW1fb2JqZWN0X2dldF9kbWFfYWRkcmVzc19sZW4o b2JqLCBvZmZzZXQsICZsZW5ndGgpOworCisJCQlsZW5ndGggPSBtaW4obGVmdCwgbGVuZ3RoKTsK KworCQkJc3QtPm5lbnRzKys7CisKKwkJCXNnX3NldF9wYWdlKHNnLCBOVUxMLCBsZW5ndGgsIDAp OworCQkJc2dfZG1hX2FkZHJlc3Moc2cpID0gYWRkcjsKKwkJCXNnX2RtYV9sZW4oc2cpID0gbGVu Z3RoOworCQkJc2cgPSBzZ19uZXh0KHNnKTsKKworCQkJb2Zmc2V0ICs9IGxlbmd0aCAvIEk5MTVf R1RUX1BBR0VfU0laRTsKKwkJCWxlZnQgLT0gbGVuZ3RoOworCQl9CisKKwkJb2Zmc2V0ICs9IHN0 cmlkZSAtIHdpZHRoOworCX0KKworCXJldHVybiBzZzsKK30KKworc3RhdGljIG5vaW5saW5lIHN0 cnVjdCBzZ190YWJsZSAqCitpbnRlbF9yZW1hcF9wYWdlcyhzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRf aW5mbyAqcmVtX2luZm8sCisJCSAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKK3sK Kwl1bnNpZ25lZCBpbnQgc2l6ZSA9IGludGVsX3JlbWFwcGVkX2luZm9fc2l6ZShyZW1faW5mbyk7 CisJc3RydWN0IHNnX3RhYmxlICpzdDsKKwlzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOworCWludCBy ZXQgPSAtRU5PTUVNOworCWludCBpOworCisJLyogQWxsb2NhdGUgdGFyZ2V0IFNHIGxpc3QuICov CisJc3QgPSBrbWFsbG9jKHNpemVvZigqc3QpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIXN0KQorCQln b3RvIGVycl9zdF9hbGxvYzsKKworCXJldCA9IHNnX2FsbG9jX3RhYmxlKHN0LCBzaXplLCBHRlBf S0VSTkVMKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9zZ19hbGxvYzsKKworCXN0LT5uZW50cyA9 IDA7CisJc2cgPSBzdC0+c2dsOworCisJZm9yIChpID0gMCA7IGkgPCBBUlJBWV9TSVpFKHJlbV9p bmZvLT5wbGFuZSk7IGkrKykgeworCQlzZyA9IHJlbWFwX3BhZ2VzKG9iaiwgcmVtX2luZm8tPnBs YW5lW2ldLm9mZnNldCwKKwkJCQkgcmVtX2luZm8tPnBsYW5lW2ldLndpZHRoLCByZW1faW5mby0+ cGxhbmVbaV0uaGVpZ2h0LAorCQkJCSByZW1faW5mby0+cGxhbmVbaV0uc3RyaWRlLCBzdCwgc2cp OworCX0KKworCWk5MTVfc2dfdHJpbShzdCk7CisKKwlyZXR1cm4gc3Q7CisKK2Vycl9zZ19hbGxv YzoKKwlrZnJlZShzdCk7CitlcnJfc3RfYWxsb2M6CisKKwlEUk1fREVCVUdfRFJJVkVSKCJGYWls ZWQgdG8gY3JlYXRlIHJlbWFwcGVkIG1hcHBpbmcgZm9yIG9iamVjdCBzaXplICV6dSEgKCV1eCV1 IHRpbGVzLCAldSBwYWdlcylcbiIsCisJCQkgb2JqLT5iYXNlLnNpemUsIHJlbV9pbmZvLT5wbGFu ZVswXS53aWR0aCwgcmVtX2luZm8tPnBsYW5lWzBdLmhlaWdodCwgc2l6ZSk7CisKKwlyZXR1cm4g RVJSX1BUUihyZXQpOworfQorCiBzdGF0aWMgbm9pbmxpbmUgc3RydWN0IHNnX3RhYmxlICoKIGlu dGVsX3BhcnRpYWxfcGFnZXMoY29uc3Qgc3RydWN0IGk5MTVfZ2d0dF92aWV3ICp2aWV3LAogCQkg ICAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKQEAgLTM2ODYsNiArMzc2OSwxMSBA QCBpOTE1X2dldF9nZ3R0X3ZtYV9wYWdlcyhzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKIAkJCWludGVs X3JvdGF0ZV9wYWdlcygmdm1hLT5nZ3R0X3ZpZXcucm90YXRlZCwgdm1hLT5vYmopOwogCQlicmVh azsKIAorCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ6CisJCXZtYS0+cGFnZXMgPQorCQkJ aW50ZWxfcmVtYXBfcGFnZXMoJnZtYS0+Z2d0dF92aWV3LnJlbWFwcGVkLCB2bWEtPm9iaik7CisJ CWJyZWFrOworCiAJY2FzZSBJOTE1X0dHVFRfVklFV19QQVJUSUFMOgogCQl2bWEtPnBhZ2VzID0g aW50ZWxfcGFydGlhbF9wYWdlcygmdm1hLT5nZ3R0X3ZpZXcsIHZtYS0+b2JqKTsKIAkJYnJlYWs7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCmluZGV4IDJmYWZhMDRjNDVlYy4uOThmYzcx MDUzZjdjIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaApAQCAtMTYzLDExICsxNjMs MTggQEAgdHlwZWRlZiB1NjQgZ2VuOF9wcGd0dF9wbWw0ZV90OwogCiBzdHJ1Y3Qgc2dfdGFibGU7 CiAKK3N0cnVjdCBpbnRlbF9yZW1hcHBlZF9wbGFuZV9pbmZvIHsKKwkvKiBpbiBndHQgcGFnZXMg Ki8KKwl1bnNpZ25lZCBpbnQgd2lkdGgsIGhlaWdodCwgc3RyaWRlLCBvZmZzZXQ7Cit9IF9fcGFj a2VkOworCitzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbyB7CisJc3RydWN0IGludGVsX3JlbWFw cGVkX3BsYW5lX2luZm8gcGxhbmVbMl07CisJdW5zaWduZWQgaW50IHVudXNlZF9tYno7Cit9IF9f cGFja2VkOworCiBzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyB7Ci0Jc3RydWN0IGludGVsX3Jv dGF0aW9uX3BsYW5lX2luZm8gewotCQkvKiB0aWxlcyAqLwotCQl1bnNpZ25lZCBpbnQgd2lkdGgs IGhlaWdodCwgc3RyaWRlLCBvZmZzZXQ7Ci0JfSBwbGFuZVsyXTsKKwlzdHJ1Y3QgaW50ZWxfcmVt YXBwZWRfcGxhbmVfaW5mbyBwbGFuZVsyXTsKIH0gX19wYWNrZWQ7CiAKIHN0cnVjdCBpbnRlbF9w YXJ0aWFsX2luZm8gewpAQCAtMTc5LDEyICsxODYsMjAgQEAgZW51bSBpOTE1X2dndHRfdmlld190 eXBlIHsKIAlJOTE1X0dHVFRfVklFV19OT1JNQUwgPSAwLAogCUk5MTVfR0dUVF9WSUVXX1JPVEFU RUQgPSBzaXplb2Yoc3RydWN0IGludGVsX3JvdGF0aW9uX2luZm8pLAogCUk5MTVfR0dUVF9WSUVX X1BBUlRJQUwgPSBzaXplb2Yoc3RydWN0IGludGVsX3BhcnRpYWxfaW5mbyksCisJSTkxNV9HR1RU X1ZJRVdfUkVNQVBQRUQgPSBzaXplb2Yoc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8pLAogfTsK IAogc3RhdGljIGlubGluZSB2b2lkIGFzc2VydF9pOTE1X2dlbV9ndHRfdHlwZXModm9pZCkKIHsK IAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvKSAhPSA4KnNp emVvZih1bnNpZ25lZCBpbnQpKTsKIAlCVUlMRF9CVUdfT04oc2l6ZW9mKHN0cnVjdCBpbnRlbF9w YXJ0aWFsX2luZm8pICE9IHNpemVvZih1NjQpICsgc2l6ZW9mKHVuc2lnbmVkIGludCkpOworCUJV SUxEX0JVR19PTihzaXplb2Yoc3RydWN0IGludGVsX3JlbWFwcGVkX2luZm8pICE9IDkqc2l6ZW9m KHVuc2lnbmVkIGludCkpOworCisJLyogQ2hlY2sgdGhhdCByb3RhdGlvbi9yZW1hcHBlZCBzaGFy ZXMgb2Zmc2V0cyBmb3Igc2ltcGxpY2l0eSAqLworCUJVSUxEX0JVR19PTihvZmZzZXRvZihzdHJ1 Y3QgaW50ZWxfcmVtYXBwZWRfaW5mbywgcGxhbmVbMF0pICE9CisJCSAgICAgb2Zmc2V0b2Yoc3Ry dWN0IGludGVsX3JvdGF0aW9uX2luZm8sIHBsYW5lWzBdKSk7CisJQlVJTERfQlVHX09OKG9mZnNl dG9mZW5kKHN0cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvLCBwbGFuZVsxXSkgIT0KKwkJICAgICBv ZmZzZXRvZmVuZChzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbywgcGxhbmVbMV0pKTsKIAogCS8q IEFzIHdlIGVuY29kZSB0aGUgc2l6ZSBvZiBlYWNoIGJyYW5jaCBpbnNpZGUgdGhlIHVuaW9uIGlu dG8gaXRzIHR5cGUsCiAJICogd2UgaGF2ZSB0byBiZSBjYXJlZnVsIHRoYXQgZWFjaCBicmFuY2gg aGFzIGEgdW5pcXVlIHNpemUuCkBAIC0xOTMsNiArMjA4LDcgQEAgc3RhdGljIGlubGluZSB2b2lk IGFzc2VydF9pOTE1X2dlbV9ndHRfdHlwZXModm9pZCkKIAljYXNlIEk5MTVfR0dUVF9WSUVXX05P Uk1BTDoKIAljYXNlIEk5MTVfR0dUVF9WSUVXX1BBUlRJQUw6CiAJY2FzZSBJOTE1X0dHVFRfVklF V19ST1RBVEVEOgorCWNhc2UgSTkxNV9HR1RUX1ZJRVdfUkVNQVBQRUQ6CiAJCS8qIGdjYyBjb21w bGFpbnMgaWYgdGhlc2UgYXJlIGlkZW50aWNhbCBjYXNlcyAqLwogCQlicmVhazsKIAl9CkBAIC0y MDQsNiArMjIwLDcgQEAgc3RydWN0IGk5MTVfZ2d0dF92aWV3IHsKIAkJLyogTWVtYmVycyBuZWVk IHRvIGNvbnRhaW4gbm8gaG9sZXMvcGFkZGluZyAqLwogCQlzdHJ1Y3QgaW50ZWxfcGFydGlhbF9p bmZvIHBhcnRpYWw7CiAJCXN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvIHJvdGF0ZWQ7CisJCXN0 cnVjdCBpbnRlbF9yZW1hcHBlZF9pbmZvIHJlbWFwcGVkOwogCX07CiB9OwogCmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV92bWEuYwppbmRleCBkNGQzMDhiNmQxZDguLmM2OGI0MzVkNDA2NCAxMDA2NDQKLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X3ZtYS5jCkBAIC0xNTksNiArMTU5LDkgQEAgdm1hX2NyZWF0ZShzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqLAogCQl9IGVsc2UgaWYgKHZpZXctPnR5cGUgPT0gSTkxNV9HR1RU X1ZJRVdfUk9UQVRFRCkgewogCQkJdm1hLT5zaXplID0gaW50ZWxfcm90YXRpb25faW5mb19zaXpl KCZ2aWV3LT5yb3RhdGVkKTsKIAkJCXZtYS0+c2l6ZSA8PD0gUEFHRV9TSElGVDsKKwkJfSBlbHNl IGlmICh2aWV3LT50eXBlID09IEk5MTVfR0dUVF9WSUVXX1JFTUFQUEVEKSB7CisJCQl2bWEtPnNp emUgPSBpbnRlbF9yZW1hcHBlZF9pbmZvX3NpemUoJnZpZXctPnJlbWFwcGVkKTsKKwkJCXZtYS0+ c2l6ZSA8PD0gUEFHRV9TSElGVDsKIAkJfQogCX0KIApAQCAtNDg0LDcgKzQ4Nyw4IEBAIHZvaWQg X19pOTE1X3ZtYV9zZXRfbWFwX2FuZF9mZW5jZWFibGUoc3RydWN0IGk5MTVfdm1hICp2bWEpCiAJ ICogRXhwbGljaXRseSBkaXNhYmxlIGZvciByb3RhdGVkIFZNQSBzaW5jZSB0aGUgZGlzcGxheSBk b2VzIG5vdAogCSAqIG5lZWQgdGhlIGZlbmNlIGFuZCB0aGUgVk1BIGlzIG5vdCBhY2Nlc3NpYmxl IHRvIG90aGVyIHVzZXJzLgogCSAqLwotCWlmICh2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVf R0dUVF9WSUVXX1JPVEFURUQpCisJaWYgKHZtYS0+Z2d0dF92aWV3LnR5cGUgPT0gSTkxNV9HR1RU X1ZJRVdfUk9UQVRFRCB8fAorCSAgICB2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dUVF9W SUVXX1JFTUFQUEVEKQogCQlyZXR1cm47CiAKIAlmZW5jZWFibGUgPSAodm1hLT5ub2RlLnNpemUg Pj0gdm1hLT5mZW5jZV9zaXplICYmCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X3ZtYS5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV92bWEuaAppbmRleCA2ZWFiNzA5 NTNhNTcuLjg1NDNkMjk1M2NkMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV92bWEuaAorKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3ZtYS5oCkBAIC0yNzcsOCAr Mjc3LDExIEBAIGk5MTVfdm1hX2NvbXBhcmUoc3RydWN0IGk5MTVfdm1hICp2bWEsCiAJICovCiAJ QlVJTERfQlVHX09OKEk5MTVfR0dUVF9WSUVXX05PUk1BTCA+PSBJOTE1X0dHVFRfVklFV19QQVJU SUFMKTsKIAlCVUlMRF9CVUdfT04oSTkxNV9HR1RUX1ZJRVdfUEFSVElBTCA+PSBJOTE1X0dHVFRf VklFV19ST1RBVEVEKTsKKwlCVUlMRF9CVUdfT04oSTkxNV9HR1RUX1ZJRVdfUk9UQVRFRCA+PSBJ OTE1X0dHVFRfVklFV19SRU1BUFBFRCk7CiAJQlVJTERfQlVHX09OKG9mZnNldG9mKHR5cGVvZigq dmlldyksIHJvdGF0ZWQpICE9CiAJCSAgICAgb2Zmc2V0b2YodHlwZW9mKCp2aWV3KSwgcGFydGlh bCkpOworCUJVSUxEX0JVR19PTihvZmZzZXRvZih0eXBlb2YoKnZpZXcpLCByb3RhdGVkKSAhPQor CQkgICAgIG9mZnNldG9mKHR5cGVvZigqdmlldyksIHJlbWFwcGVkKSk7CiAJcmV0dXJuIG1lbWNt cCgmdm1hLT5nZ3R0X3ZpZXcucGFydGlhbCwgJnZpZXctPnBhcnRpYWwsIHZpZXctPnR5cGUpOwog fQogCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggYTM1MWM4ZTIxOWJhLi4w OTMxZmU2MjEwNzcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3Bs YXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAgLTE5OTcs NiArMTk5NywxNyBAQCB1bnNpZ25lZCBpbnQgaW50ZWxfcm90YXRpb25faW5mb19zaXplKGNvbnN0 IHN0cnVjdCBpbnRlbF9yb3RhdGlvbl9pbmZvICpyb3RfaW5mbwogCXJldHVybiBzaXplOwogfQog Cit1bnNpZ25lZCBpbnQgaW50ZWxfcmVtYXBwZWRfaW5mb19zaXplKGNvbnN0IHN0cnVjdCBpbnRl bF9yZW1hcHBlZF9pbmZvICpyZW1faW5mbykKK3sKKwl1bnNpZ25lZCBpbnQgc2l6ZSA9IDA7CisJ aW50IGk7CisKKwlmb3IgKGkgPSAwIDsgaSA8IEFSUkFZX1NJWkUocmVtX2luZm8tPnBsYW5lKTsg aSsrKQorCQlzaXplICs9IHJlbV9pbmZvLT5wbGFuZVtpXS53aWR0aCAqIHJlbV9pbmZvLT5wbGFu ZVtpXS5oZWlnaHQ7CisKKwlyZXR1cm4gc2l6ZTsKK30KKwogc3RhdGljIHZvaWQKIGludGVsX2Zp bGxfZmJfZ2d0dF92aWV3KHN0cnVjdCBpOTE1X2dndHRfdmlldyAqdmlldywKIAkJCWNvbnN0IHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAppbmRleCAy NDc4OTNlZDE1NDMuLjVkMjhiZDNhNGE0MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKQEAg LTE0NjEsNiArMTQ2MSw3IEBAIHVuc2lnbmVkIGludCBpbnRlbF9mYl9hbGlnbl9oZWlnaHQoY29u c3Qgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCiB2b2lkIGludGVsX2FkZF9mYl9vZmZzZXRz KGludCAqeCwgaW50ICp5LAogCQkJICBjb25zdCBzdHJ1Y3QgaW50ZWxfcGxhbmVfc3RhdGUgKnN0 YXRlLCBpbnQgcGxhbmUpOwogdW5zaWduZWQgaW50IGludGVsX3JvdGF0aW9uX2luZm9fc2l6ZShj b25zdCBzdHJ1Y3QgaW50ZWxfcm90YXRpb25faW5mbyAqcm90X2luZm8pOwordW5zaWduZWQgaW50 IGludGVsX3JlbWFwcGVkX2luZm9fc2l6ZShjb25zdCBzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfaW5m byAqcmVtX2luZm8pOwogYm9vbCBpbnRlbF9oYXNfcGVuZGluZ19mYl91bnBpbihzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwogdm9pZCBpbnRlbF9tYXJrX2J1c3koc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgaW50ZWxfbWFya19pZGxlKHN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X3ZtYS5jCmluZGV4IGZjNTk0YjAzMGY1YS4uMThkYzIyMWNiMjJiIDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYworKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV92bWEuYwpAQCAtMzk3LDggKzM5Nyw4IEBAIGFz c2VydF9yb3RhdGVkKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCiAJcmV0dXJuIHNn OwogfQogCi1zdGF0aWMgdW5zaWduZWQgaW50IHJvdGF0ZWRfc2l6ZShjb25zdCBzdHJ1Y3QgaW50 ZWxfcm90YXRpb25fcGxhbmVfaW5mbyAqYSwKLQkJCQkgY29uc3Qgc3RydWN0IGludGVsX3JvdGF0 aW9uX3BsYW5lX2luZm8gKmIpCitzdGF0aWMgdW5zaWduZWQgaW50IHJvdGF0ZWRfc2l6ZShjb25z dCBzdHJ1Y3QgaW50ZWxfcmVtYXBwZWRfcGxhbmVfaW5mbyAqYSwKKwkJCQkgY29uc3Qgc3RydWN0 IGludGVsX3JlbWFwcGVkX3BsYW5lX2luZm8gKmIpCiB7CiAJcmV0dXJuIGEtPndpZHRoICogYS0+ aGVpZ2h0ICsgYi0+d2lkdGggKiBiLT5oZWlnaHQ7CiB9CkBAIC00MDgsNyArNDA4LDcgQEAgc3Rh dGljIGludCBpZ3Rfdm1hX3JvdGF0ZSh2b2lkICphcmcpCiAJc3RydWN0IGk5MTVfZ2d0dCAqZ2d0 dCA9IGFyZzsKIAlzdHJ1Y3QgaTkxNV9hZGRyZXNzX3NwYWNlICp2bSA9ICZnZ3R0LT52bTsKIAlz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwotCWNvbnN0IHN0cnVjdCBpbnRlbF9yb3Rh dGlvbl9wbGFuZV9pbmZvIHBsYW5lc1tdID0geworCWNvbnN0IHN0cnVjdCBpbnRlbF9yZW1hcHBl ZF9wbGFuZV9pbmZvIHBsYW5lc1tdID0gewogCQl7IC53aWR0aCA9IDEsIC5oZWlnaHQgPSAxLCAu c3RyaWRlID0gMSB9LAogCQl7IC53aWR0aCA9IDIsIC5oZWlnaHQgPSAyLCAuc3RyaWRlID0gMiB9 LAogCQl7IC53aWR0aCA9IDQsIC5oZWlnaHQgPSA0LCAuc3RyaWRlID0gNCB9LAotLSAKMi4yMS4w CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=