From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 09/39] drm/i915: Extend CONTEXT_CREATE to set parameters upon construction Date: Wed, 13 Mar 2019 14:43:31 +0000 Message-ID: <20190313144401.17735-9-chris@chris-wilson.co.uk> References: <20190313144401.17735-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from fireflyinternet.com (mail.fireflyinternet.com [109.228.58.192]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA16F6E0F6 for ; Wed, 13 Mar 2019 14:45:08 +0000 (UTC) In-Reply-To: <20190313144401.17735-1-chris@chris-wilson.co.uk> 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 SXQgY2FuIGJlIHVzZWZ1bCB0byBoYXZlIGEgc2luZ2xlIGlvY3RsIHRvIGNyZWF0ZSBhIGNvbnRl eHQgd2l0aCBhbGwKdGhlIGluaXRpYWwgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIGEgc2VyaWVzIG9m IGNyZWF0ZSArIHNldHBhcmFtICsgc2V0cGFyYW0KaW9jdGxzLiBUaGlzIGV4dGVuc2lvbiB0byBj cmVhdGUgY29udGV4dCBhbGxvd3MgYW55IG9mIHRoZSBwYXJhbWV0ZXJzCnRvIGJlIHBhc3NlZCBp biBhcyBhIGxpbmtlZCBsaXN0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIG5ld2x5IGNvbnN0cnVjdGVk CmNvbnRleHQuCgp2MjogTWFrZSBhIGxvY2FsIGNvcHkgb2YgdXNlciBzZXRwYXJhbSAoVHZydGtv KQp2MzogVXNlIGZsYWdzIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YgZXh0ZW5zaW9uIGludGVy ZmFjZQoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAgMiArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgNDM5ICsrKysrKysrKysr KystLS0tLS0tLS0tLQogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwg MTgwICsrKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzQyIGluc2VydGlvbnMoKyksIDI3OSBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCA1ZDUzZWZjNGM1ZDkuLjkz ZTQxYzkzN2Q5NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0zMTEwLDcgKzMxMTAsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7CiAJ RFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9TRVRfU1BSSVRFX0NPTE9SS0VZLCBpbnRlbF9zcHJpdGVf c2V0X2NvbG9ya2V5X2lvY3RsLCBEUk1fTUFTVEVSKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1 X0dFVF9TUFJJVEVfQ09MT1JLRVksIGRybV9ub29wLCBEUk1fTUFTVEVSKSwKIAlEUk1fSU9DVExf REVGX0RSVihJOTE1X0dFTV9XQUlULCBpOTE1X2dlbV93YWl0X2lvY3RsLCBEUk1fQVVUSHxEUk1f UkVOREVSX0FMTE9XKSwKLQlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX0NSRUFU RSwgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAorCURS TV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFX0VYVCwgaTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJW KEk5MTVfR0VNX0NPTlRFWFRfREVTVFJPWSwgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X1JFR19SRUFELCBp OTE1X3JlZ19yZWFkX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RS VihJOTE1X0dFVF9SRVNFVF9TVEFUUywgaTkxNV9nZW1fY29udGV4dF9yZXNldF9zdGF0c19pb2N0 bCwgRFJNX1JFTkRFUl9BTExPVyksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKaW5kZXggNzE0NjRhZTkxZDYxLi4wN2MwOTdhZDgzZWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTkwLDYgKzkwLDcgQEAKICNpbmNsdWRlICJpOTE1X2Ry di5oIgogI2luY2x1ZGUgImk5MTVfZ2xvYmFscy5oIgogI2luY2x1ZGUgImk5MTVfdHJhY2UuaCIK KyNpbmNsdWRlICJpOTE1X3VzZXJfZXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUgImludGVsX2xyY19y ZWcuaCIKICNpbmNsdWRlICJpbnRlbF93b3JrYXJvdW5kcy5oIgogCkBAIC0xMDk0LDE5MiArMTA5 NSw2IEBAIHN0YXRpYyBpbnQgc2V0X3BwZ3R0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs CiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGJvb2wgY2xpZW50X2lzX2Jhbm5lZChzdHJ1Y3Qg ZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYpCi17Ci0JcmV0dXJuIGF0b21pY19yZWFk KCZmaWxlX3ByaXYtPmJhbl9zY29yZSkgPj0gSTkxNV9DTElFTlRfU0NPUkVfQkFOTkVEOwotfQot Ci1pbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKLQkJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKLXsKLQlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfY3JlYXRlICphcmdzID0gZGF0YTsKLQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKLQlzdHJ1Y3QgaTkxNV9nZW1f Y29udGV4dCAqY3R4OwotCWludCByZXQ7Ci0KLQlpZiAoIURSSVZFUl9DQVBTKGk5MTUpLT5oYXNf bG9naWNhbF9jb250ZXh0cykKLQkJcmV0dXJuIC1FTk9ERVY7Ci0KLQlpZiAoYXJncy0+cGFkICE9 IDApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JcmV0ID0gaTkxNV90ZXJtaW5hbGx5X3dlZGdlZChp OTE1KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JaWYgKGNsaWVudF9pc19iYW5uZWQo ZmlsZV9wcml2KSkgewotCQlEUk1fREVCVUcoImNsaWVudCAlc1slZF0gYmFubmVkIGZyb20gY3Jl YXRpbmcgY3R4XG4iLAotCQkJICBjdXJyZW50LT5jb21tLAotCQkJICBwaWRfbnIoZ2V0X3Rhc2tf cGlkKGN1cnJlbnQsIFBJRFRZUEVfUElEKSkpOwotCi0JCXJldHVybiAtRUlPOwotCX0KLQotCXJl dCA9IGk5MTVfbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKGRldik7Ci0JaWYgKHJldCkKLQkJcmV0 dXJuIHJldDsKLQotCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGVfcHJp dik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKElTX0VSUihjdHgp KQotCQlyZXR1cm4gUFRSX0VSUihjdHgpOwotCi0JR0VNX0JVR19PTihpOTE1X2dlbV9jb250ZXh0 X2lzX2tlcm5lbChjdHgpKTsKLQotCWFyZ3MtPmN0eF9pZCA9IGN0eC0+dXNlcl9oYW5kbGU7Ci0J RFJNX0RFQlVHKCJIVyBjb250ZXh0ICVkIGNyZWF0ZWRcbiIsIGFyZ3MtPmN0eF9pZCk7Ci0KLQly ZXR1cm4gMDsKLX0KLQotaW50IGk5MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9pb2N0bChzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJCSAgIHN0cnVjdCBkcm1fZmlsZSAqZmls ZSkKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSAqYXJncyA9IGRhdGE7 Ci0Jc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVy X3ByaXY7Ci0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKLQlpbnQgcmV0OwotCi0JaWYg KGFyZ3MtPnBhZCAhPSAwKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWlmIChhcmdzLT5jdHhfaWQg PT0gREVGQVVMVF9DT05URVhUX0hBTkRMRSkKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQljdHggPSBp OTE1X2dlbV9jb250ZXh0X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPmN0eF9pZCk7Ci0JaWYgKCFj dHgpCi0JCXJldHVybiAtRU5PRU5UOwotCi0JcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxl KCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JaWYgKHJldCkKLQkJZ290byBvdXQ7Ci0KLQlfX2Rlc3Ry b3lfaHdfY29udGV4dChjdHgsIGZpbGVfcHJpdik7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Ci0KLW91dDoKLQlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwotCXJldHVybiAw OwotfQotCi1zdGF0aWMgaW50IGdldF9zc2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgs Ci0JCSAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCi17Ci0Jc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgdXNlcl9zc2V1OwotCXN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7Ci0KLQlp ZiAoYXJncy0+c2l6ZSA9PSAwKQotCQlnb3RvIG91dDsKLQllbHNlIGlmIChhcmdzLT5zaXplIDwg c2l6ZW9mKHVzZXJfc3NldSkpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKGNvcHlfZnJvbV91 c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksCi0JCQkgICBzaXpl b2YodXNlcl9zc2V1KSkpCi0JCXJldHVybiAtRUZBVUxUOwotCi0JaWYgKHVzZXJfc3NldS5mbGFn cyB8fCB1c2VyX3NzZXUucnN2ZCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQllbmdpbmUgPSBpbnRl bF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4LT5pOTE1LAotCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVf Y2xhc3MsCi0JCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9pbnN0YW5jZSk7Ci0JaWYgKCFlbmdpbmUp Ci0JCXJldHVybiAtRUlOVkFMOwotCi0JY2UgPSBpbnRlbF9jb250ZXh0X3Bpbl9sb2NrKGN0eCwg ZW5naW5lKTsgLyogc2VyaWFsaXNlcyB3aXRoIHNldF9zc2V1ICovCi0JaWYgKElTX0VSUihjZSkp Ci0JCXJldHVybiBQVFJfRVJSKGNlKTsKLQotCXVzZXJfc3NldS5zbGljZV9tYXNrID0gY2UtPnNz ZXUuc2xpY2VfbWFzazsKLQl1c2VyX3NzZXUuc3Vic2xpY2VfbWFzayA9IGNlLT5zc2V1LnN1YnNs aWNlX21hc2s7Ci0JdXNlcl9zc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWlu X2V1c19wZXJfc3Vic2xpY2U7Ci0JdXNlcl9zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gY2Ut PnNzZXUubWF4X2V1c19wZXJfc3Vic2xpY2U7Ci0KLQlpbnRlbF9jb250ZXh0X3Bpbl91bmxvY2so Y2UpOwotCi0JaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLCAm dXNlcl9zc2V1LAotCQkJIHNpemVvZih1c2VyX3NzZXUpKSkKLQkJcmV0dXJuIC1FRkFVTFQ7Ci0K LW91dDoKLQlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7Ci0KLQlyZXR1cm4gMDsKLX0K LQotaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKLQkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQotewotCXN0 cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2 OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncyA9IGRhdGE7Ci0Jc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKLQlpbnQgcmV0ID0gMDsKLQotCWN0eCA9IGk5MTVf Z2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+Y3R4X2lkKTsKLQlpZiAoIWN0eCkK LQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQlzd2l0Y2ggKGFyZ3MtPnBhcmFtKSB7Ci0JY2FzZSBJOTE1 X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKLQkJcmV0ID0gLUVJTlZBTDsKLQkJYnJlYWs7Ci0J Y2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoKLQkJYXJncy0+c2l6ZSA9IDA7Ci0J CWFyZ3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRFWFRfTk9fWkVST01BUCwgJmN0eC0+dXNlcl9m bGFncyk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0dUVF9TSVpFOgotCQlh cmdzLT5zaXplID0gMDsKLQotCQlpZiAoY3R4LT5wcGd0dCkKLQkJCWFyZ3MtPnZhbHVlID0gY3R4 LT5wcGd0dC0+dm0udG90YWw7Ci0JCWVsc2UgaWYgKHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdf cHBndHQpCi0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQt PnZtLnRvdGFsOwotCQllbHNlCi0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52 bS50b3RhbDsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJST1JfQ0FQ VFVSRToKLQkJYXJncy0+c2l6ZSA9IDA7Ci0JCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4 dF9ub19lcnJvcl9jYXB0dXJlKGN0eCk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9DT05URVhUX1BB UkFNX0JBTk5BQkxFOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFsdWUgPSBpOTE1X2dl bV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9DT05URVhU X1BBUkFNX1JFQ09WRVJBQkxFOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFsdWUgPSBp OTE1X2dlbV9jb250ZXh0X2lzX3JlY292ZXJhYmxlKGN0eCk7Ci0JCWJyZWFrOwotCWNhc2UgSTkx NV9DT05URVhUX1BBUkFNX1BSSU9SSVRZOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFs dWUgPSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKLQkJ YnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKLQkJcmV0ID0gZ2V0X3NzZXUo Y3R4LCBhcmdzKTsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06Ci0JCXJl dCA9IGdldF9wcGd0dChjdHgsIGFyZ3MpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXQgPSAt RUlOVkFMOwotCQlicmVhazsKLQl9Ci0KLQlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwotCXJl dHVybiByZXQ7Ci19Ci0KIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBp OTE1X3JlcXVlc3QgKnJxLAogCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCQkJIHN0 cnVjdCBpbnRlbF9zc2V1IHNzZXUpCkBAIC0xNTU5LDE4ICsxMzc0LDExIEBAIHN0YXRpYyBpbnQg c2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlyZXR1cm4gMDsKIH0KIAot aW50IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKLQkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQorc3RhdGljIGlu dCBjdHhfc2V0cGFyYW0oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCXN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKLQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MgPSBkYXRhOwotCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHg7CiAJaW50IHJldCA9IDA7CiAKLQljdHggPSBpOTE1X2dlbV9jb250ZXh0X2xvb2t1 cChmaWxlX3ByaXYsIGFyZ3MtPmN0eF9pZCk7Ci0JaWYgKCFjdHgpCi0JCXJldHVybiAtRU5PRU5U OwotCiAJc3dpdGNoIChhcmdzLT5wYXJhbSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05P X1pFUk9NQVA6CiAJCWlmIChhcmdzLT5zaXplKQpAQCAtMTU4MCw2ICsxMzg4LDcgQEAgaW50IGk5 MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9p ZCAqZGF0YSwKIAkJZWxzZQogCQkJY2xlYXJfYml0KFVDT05URVhUX05PX1pFUk9NQVAsICZjdHgt PnVzZXJfZmxhZ3MpOwogCQlicmVhazsKKwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VS Uk9SX0NBUFRVUkU6CiAJCWlmIChhcmdzLT5zaXplKQogCQkJcmV0ID0gLUVJTlZBTDsKQEAgLTE1 ODgsNiArMTM5Nyw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWVsc2UKIAkJCWk5MTVfZ2VtX2NvbnRl eHRfY2xlYXJfbm9fZXJyb3JfY2FwdHVyZShjdHgpOwogCQlicmVhazsKKwogCWNhc2UgSTkxNV9D T05URVhUX1BBUkFNX0JBTk5BQkxFOgogCQlpZiAoYXJncy0+c2l6ZSkKIAkJCXJldCA9IC1FSU5W QUw7CkBAIC0xNjE0LDcgKzE0MjQsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9p b2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJCQlpZiAoYXJncy0+ c2l6ZSkKIAkJCQlyZXQgPSAtRUlOVkFMOwotCQkJZWxzZSBpZiAoISh0b19pOTE1KGRldiktPmNh cHMuc2NoZWR1bGVyICYgSTkxNV9TQ0hFRFVMRVJfQ0FQX1BSSU9SSVRZKSkKKwkJCWVsc2UgaWYg KCEoY3R4LT5pOTE1LT5jYXBzLnNjaGVkdWxlciAmIEk5MTVfU0NIRURVTEVSX0NBUF9QUklPUklU WSkpCiAJCQkJcmV0ID0gLUVOT0RFVjsKIAkJCWVsc2UgaWYgKHByaW9yaXR5ID4gSTkxNV9DT05U RVhUX01BWF9VU0VSX1BSSU9SSVRZIHx8CiAJCQkJIHByaW9yaXR5IDwgSTkxNV9DT05URVhUX01J Tl9VU0VSX1BSSU9SSVRZKQpAQCAtMTY0Miw2ICsxNDUyLDI0MyBAQCBpbnQgaTkxNV9nZW1fY29u dGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQlicmVhazsKIAl9CiAKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGNyZWF0ZV9zZXRw YXJhbShzdHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmV4dCwgdm9pZCAqZGF0YSkK K3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBsb2Nh bDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmbG9jYWwsIGV4dCwgc2l6ZW9mKGxvY2FsKSkpCisJ CXJldHVybiAtRUZBVUxUOworCisJaWYgKGxvY2FsLnNldHBhcmFtLmN0eF9pZCkKKwkJcmV0dXJu IC1FSU5WQUw7CisKKwlyZXR1cm4gY3R4X3NldHBhcmFtKGRhdGEsICZsb2NhbC5zZXRwYXJhbSk7 Cit9CisKK3N0YXRpYyBjb25zdCBpOTE1X3VzZXJfZXh0ZW5zaW9uX2ZuIGNyZWF0ZV9leHRlbnNp b25zW10gPSB7CisJW0k5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNXSA9IGNyZWF0ZV9z ZXRwYXJhbSwKK307CisKK3N0YXRpYyBib29sIGNsaWVudF9pc19iYW5uZWQoc3RydWN0IGRybV9p OTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQoreworCXJldHVybiBhdG9taWNfcmVhZCgmZmls ZV9wcml2LT5iYW5fc2NvcmUpID49IEk5MTVfQ0xJRU5UX1NDT1JFX0JBTk5FRDsKK30KKworaW50 IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZv aWQgKmRhdGEsCisJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X2NyZWF0ZV9leHQgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7CisJaW50IHJldDsKKworCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19s b2dpY2FsX2NvbnRleHRzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChhcmdzLT5mbGFncyAm IEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVU5LTk9XTikKKwkJcmV0dXJuIC1FSU5WQUw7CisK KwlyZXQgPSBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpOworCWlmIChyZXQpCisJCXJldHVy biByZXQ7CisKKwlpZiAoY2xpZW50X2lzX2Jhbm5lZChmaWxlX3ByaXYpKSB7CisJCURSTV9ERUJV RygiY2xpZW50ICVzWyVkXSBiYW5uZWQgZnJvbSBjcmVhdGluZyBjdHhcbiIsCisJCQkgIGN1cnJl bnQtPmNvbW0sCisJCQkgIHBpZF9ucihnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQp KSk7CisKKwkJcmV0dXJuIC1FSU87CisJfQorCisJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVy cnVwdGlibGUoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJY3R4ID0gaTkxNV9n ZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2KTsKKwltdXRleF91bmxvY2soJmRldi0+ c3RydWN0X211dGV4KTsKKwlpZiAoSVNfRVJSKGN0eCkpCisJCXJldHVybiBQVFJfRVJSKGN0eCk7 CisKKwlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOworCisJaWYg KGFyZ3MtPmZsYWdzICYgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUykg eworCQlyZXQgPSBpOTE1X3VzZXJfZXh0ZW5zaW9ucyh1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZXh0 ZW5zaW9ucyksCisJCQkJCSAgIGNyZWF0ZV9leHRlbnNpb25zLAorCQkJCQkgICBBUlJBWV9TSVpF KGNyZWF0ZV9leHRlbnNpb25zKSwKKwkJCQkJICAgY3R4KTsKKwkJaWYgKHJldCkgeworCQkJaWRy X3JlbW92ZSgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY3R4LT51c2VyX2hhbmRsZSk7CisJCQlj b250ZXh0X2Nsb3NlKGN0eCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJYXJncy0+Y3R4 X2lkID0gY3R4LT51c2VyX2hhbmRsZTsKKwlEUk1fREVCVUcoIkhXIGNvbnRleHQgJWQgY3JlYXRl ZFxuIiwgYXJncy0+Y3R4X2lkKTsKKworCXJldHVybiAwOworfQorCitpbnQgaTkxNV9nZW1fY29u dGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJ CQkJICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9kZXN0cm95ICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRl ICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4OworCWludCByZXQ7CisKKwlpZiAoYXJncy0+cGFkICE9IDApCisJCXJldHVybiAtRUlO VkFMOworCisJaWYgKGFyZ3MtPmN0eF9pZCA9PSBERUZBVUxUX0NPTlRFWFRfSEFORExFKQorCQly ZXR1cm4gLUVOT0VOVDsKKworCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJp diwgYXJncy0+Y3R4X2lkKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlyZXQg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAocmV0 KQorCQlnb3RvIG91dDsKKworCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZV9wcml2KTsK KwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworb3V0OgorCWk5MTVfZ2VtX2Nv bnRleHRfcHV0KGN0eCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3Ry dWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1f c3NldSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZTsKKworCWlmIChhcmdzLT5zaXplID09IDApCisJCWdvdG8gb3V0 OworCWVsc2UgaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3VzZXJfcHRy KGFyZ3MtPnZhbHVlKSwKKwkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFV TFQ7CisKKwlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQorCQlyZXR1cm4g LUVJTlZBTDsKKworCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5MTUs CisJCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKKwkJCQkJICB1c2VyX3NzZXUuZW5naW5l X2luc3RhbmNlKTsKKwlpZiAoIWVuZ2luZSkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwljZSA9IGlu dGVsX2NvbnRleHRfcGluX2xvY2soY3R4LCBlbmdpbmUpOyAvKiBzZXJpYWxpc2VzIHdpdGggc2V0 X3NzZXUgKi8KKwlpZiAoSVNfRVJSKGNlKSkKKwkJcmV0dXJuIFBUUl9FUlIoY2UpOworCisJdXNl cl9zc2V1LnNsaWNlX21hc2sgPSBjZS0+c3NldS5zbGljZV9tYXNrOworCXVzZXJfc3NldS5zdWJz bGljZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2VfbWFzazsKKwl1c2VyX3NzZXUubWluX2V1c19w ZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKKwl1c2VyX3NzZXUu bWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsKKwor CWludGVsX2NvbnRleHRfcGluX3VubG9jayhjZSk7CisKKwlpZiAoY29weV90b191c2VyKHU2NF90 b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCisJCQkgc2l6ZW9mKHVzZXJfc3Nl dSkpKQorCQlyZXR1cm4gLUVGQVVMVDsKKworb3V0OgorCWFyZ3MtPnNpemUgPSBzaXplb2YodXNl cl9zc2V1KTsKKworCXJldHVybiAwOworfQorCitpbnQgaTkxNV9nZW1fY29udGV4dF9nZXRwYXJh bV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmls ZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCWlu dCByZXQgPSAwOworCisJY3R4ID0gaTkxNV9nZW1fY29udGV4dF9sb29rdXAoZmlsZV9wcml2LCBh cmdzLT5jdHhfaWQpOworCWlmICghY3R4KQorCQlyZXR1cm4gLUVOT0VOVDsKKworCXN3aXRjaCAo YXJncy0+cGFyYW0pIHsKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19aRVJPTUFQOgorCQlh cmdzLT5zaXplID0gMDsKKwkJYXJncy0+dmFsdWUgPSB0ZXN0X2JpdChVQ09OVEVYVF9OT19aRVJP TUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKKwkJYnJlYWs7CisKKwljYXNlIEk5MTVfQ09OVEVYVF9Q QVJBTV9HVFRfU0laRToKKwkJYXJncy0+c2l6ZSA9IDA7CisJCWlmIChjdHgtPnBwZ3R0KQorCQkJ YXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsKKwkJZWxzZSBpZiAodG9faTkxNShk ZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKKwkJCWFyZ3MtPnZhbHVlID0gdG9faTkxNShkZXYpLT5t bS5hbGlhc2luZ19wcGd0dC0+dm0udG90YWw7CisJCWVsc2UKKwkJCWFyZ3MtPnZhbHVlID0gdG9f aTkxNShkZXYpLT5nZ3R0LnZtLnRvdGFsOworCQlicmVhazsKKworCWNhc2UgSTkxNV9DT05URVhU X1BBUkFNX05PX0VSUk9SX0NBUFRVUkU6CisJCWFyZ3MtPnNpemUgPSAwOworCQlhcmdzLT52YWx1 ZSA9IGk5MTVfZ2VtX2NvbnRleHRfbm9fZXJyb3JfY2FwdHVyZShjdHgpOworCQlicmVhazsKKwor CWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTk5BQkxFOgorCQlhcmdzLT5zaXplID0gMDsKKwkJ YXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7CisJCWJyZWFr OworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEU6CisJCWFyZ3MtPnNpemUg PSAwOworCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfcmVjb3ZlcmFibGUoY3R4 KTsKKwkJYnJlYWs7CisKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9QUklPUklUWToKKwkJYXJn cy0+c2l6ZSA9IDA7CisJCWFyZ3MtPnZhbHVlID0gY3R4LT5zY2hlZC5wcmlvcml0eSA+PiBJOTE1 X1VTRVJfUFJJT1JJVFlfU0hJRlQ7CisJCWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFS QU1fU1NFVToKKwkJcmV0ID0gZ2V0X3NzZXUoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CisKKwljYXNl IEk5MTVfQ09OVEVYVF9QQVJBTV9WTToKKwkJcmV0ID0gZ2V0X3BwZ3R0KGN0eCwgYXJncyk7CisJ CWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKKwlkZWZhdWx0 OgorCQlyZXQgPSAtRUlOVkFMOworCQlicmVhazsKKwl9CisKKwlpOTE1X2dlbV9jb250ZXh0X3B1 dChjdHgpOworCXJldHVybiByZXQ7Cit9CisKK2ludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFt X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJICAgIHN0cnVj dCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxl X3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf cGFyYW0gKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJaW50 IHJldDsKKworCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+ Y3R4X2lkKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlyZXQgPSBjdHhfc2V0 cGFyYW0oY3R4LCBhcmdzKTsKKwogCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7CiAJcmV0dXJu IHJldDsKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1 ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCA1MDc5ZTI1OTA5ZWYuLjQ2MTg5YThlYWVjYiAx MDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFw aS9kcm0vaTkxNV9kcm0uaApAQCAtMzk0LDYgKzM5NCw3IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1f aTkxNV9zYXJlYSB7CiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVkg RFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFVF9TUFJJVEVfQ09MT1JLRVks IHN0cnVjdCBkcm1faW50ZWxfc3ByaXRlX2NvbG9ya2V5KQogI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRU1fV0FJVAkJRFJNX0lPV1IoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9XQUlU LCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhaXQpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9D T05URVhUX0NSRUFURQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9D T05URVhUX0NSRUFURSwgc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSkKKyNkZWZp bmUgRFJNX0lPQ1RMX0k5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFX0VYVAlEUk1fSU9XUiAoRFJNX0NP TU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05URVhUX0NSRUFURSwgc3RydWN0IGRybV9pOTE1 X2dlbV9jb250ZXh0X2NyZWF0ZV9leHQpCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05U RVhUX0RFU1RST1kJRFJNX0lPVyAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X0dFTV9DT05U RVhUX0RFU1RST1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95KQogI2RlZmlu ZSBEUk1fSU9DVExfSTkxNV9SRUdfUkVBRAkJCURSTV9JT1dSIChEUk1fQ09NTUFORF9CQVNFICsg RFJNX0k5MTVfUkVHX1JFQUQsIHN0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCkKICNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfR0VUX1JFU0VUX1NUQVRTCQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSAr IERSTV9JOTE1X0dFVF9SRVNFVF9TVEFUUywgc3RydWN0IGRybV9pOTE1X3Jlc2V0X3N0YXRzKQpA QCAtMTQ0Nyw5MiArMTQ0OCwxNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3dhaXQgewogfTsKIAog c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZSB7Ci0JLyogIG91dHB1dDogaWQgb2Yg bmV3IGNvbnRleHQqLwotCV9fdTMyIGN0eF9pZDsKLQlfX3UzMiBwYWQ7Ci19OwotCi1zdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSB7Ci0JX191MzIgY3R4X2lkOwotCV9fdTMyIHBh ZDsKLX07Ci0KLS8qCi0gKiBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFIC0KLSAqCi0gKiBDcmVhdGUg YSBuZXcgdmlydHVhbCBtZW1vcnkgYWRkcmVzcyBzcGFjZSAocHBHVFQpIGZvciB1c2Ugd2l0aGlu IGEgY29udGV4dAotICogb24gdGhlIHNhbWUgZmlsZS4gRXh0ZW5zaW9ucyBjYW4gYmUgcHJvdmlk ZWQgdG8gY29uZmlndXJlIGV4YWN0bHkgaG93IHRoZQotICogYWRkcmVzcyBzcGFjZSBpcyBzZXR1 cCB1cG9uIGNyZWF0aW9uLgotICoKLSAqIFRoZSBpZCBvZiBuZXcgVk0gKGJvdW5kIHRvIHRoZSBm ZCkgZm9yIHVzZSB3aXRoIEk5MTVfQ09OVEVYVF9QQVJBTV9WTSBpcwotICogcmV0dXJuZWQgaW4g dGhlIG91dHBhcmFtIEBpZC4KLSAqCi0gKiBObyBmbGFncyBhcmUgZGVmaW5lZCwgd2l0aCBhbGwg Yml0cyByZXNlcnZlZCBhbmQgbXVzdCBiZSB6ZXJvLgotICoKLSAqIEFuIGV4dGVuc2lvbiBjaGFp biBtYXliZSBwcm92aWRlZCwgc3RhcnRpbmcgd2l0aCBAZXh0ZW5zaW9ucywgYW5kIHRlcm1pbmF0 ZWQKLSAqIGJ5IHRoZSBAbmV4dF9leHRlbnNpb24gYmVpbmcgMC4gQ3VycmVudGx5LCBubyBleHRl bnNpb25zIGFyZSBkZWZpbmVkLgotICoKLSAqIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZIC0KLSAq Ci0gKiBEZXN0cm95cyBhIHByZXZpb3VzbHkgY3JlYXRlZCBWTSBpZCwgc3BlY2lmaWVkIGluIEBp ZC4KLSAqCi0gKiBObyBleHRlbnNpb25zIG9yIGZsYWdzIGFyZSBhbGxvd2VkIGN1cnJlbnRseSwg YW5kIHNvIG11c3QgYmUgemVyby4KLSAqLwotc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9s IHsKLQlfX3U2NCBleHRlbnNpb25zOwotCV9fdTMyIGZsYWdzOwotCV9fdTMyIGlkOwotfTsKLQot c3RydWN0IGRybV9pOTE1X3JlZ19yZWFkIHsKLQkvKgotCSAqIFJlZ2lzdGVyIG9mZnNldC4KLQkg KiBGb3IgNjRiaXQgd2lkZSByZWdpc3RlcnMgd2hlcmUgdGhlIHVwcGVyIDMyYml0cyBkb24ndCBp bW1lZGlhdGVseQotCSAqIGZvbGxvdyB0aGUgbG93ZXIgMzJiaXRzLCB0aGUgb2Zmc2V0IG9mIHRo ZSBsb3dlciAzMmJpdHMgbXVzdAotCSAqIGJlIHNwZWNpZmllZAotCSAqLwotCV9fdTY0IG9mZnNl dDsKLSNkZWZpbmUgSTkxNV9SRUdfUkVBRF84Ql9XQSAoMXVsIDw8IDApCi0KLQlfX3U2NCB2YWw7 IC8qIFJldHVybiB2YWx1ZSAqLwotfTsKLS8qIEtub3duIHJlZ2lzdGVyczoKLSAqCi0gKiBSZW5k ZXIgZW5naW5lIHRpbWVzdGFtcCAtIDB4MjM1OCArIDY0Yml0IC0gZ2VuNysKLSAqIC0gTm90ZSB0 aGlzIHJlZ2lzdGVyIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZSBpZiB1c2luZyB0aGUgZGVmYXVs dAotICogICBzaW5nbGUgaW5zdHJ1Y3Rpb24gOGJ5dGUgcmVhZCwgaW4gb3JkZXIgdG8gd29ya2Fy b3VuZCB0aGF0IHBhc3MKLSAqICAgZmxhZyBJOTE1X1JFR19SRUFEXzhCX1dBIGluIG9mZnNldCBm aWVsZC4KLSAqCi0gKi8KLQotc3RydWN0IGRybV9pOTE1X3Jlc2V0X3N0YXRzIHsKLQlfX3UzMiBj dHhfaWQ7Ci0JX191MzIgZmxhZ3M7Ci0KLQkvKiBBbGwgcmVzZXRzIHNpbmNlIGJvb3QvbW9kdWxl IHJlbG9hZCwgZm9yIGFsbCBjb250ZXh0cyAqLwotCV9fdTMyIHJlc2V0X2NvdW50OwotCi0JLyog TnVtYmVyIG9mIGJhdGNoZXMgbG9zdCB3aGVuIGFjdGl2ZSBpbiBHUFUsIGZvciB0aGlzIGNvbnRl eHQgKi8KLQlfX3UzMiBiYXRjaF9hY3RpdmU7Ci0KLQkvKiBOdW1iZXIgb2YgYmF0Y2hlcyBsb3N0 IHBlbmRpbmcgZm9yIGV4ZWN1dGlvbiwgZm9yIHRoaXMgY29udGV4dCAqLwotCV9fdTMyIGJhdGNo X3BlbmRpbmc7Ci0KKwlfX3UzMiBjdHhfaWQ7IC8qIG91dHB1dDogaWQgb2YgbmV3IGNvbnRleHQq LwogCV9fdTMyIHBhZDsKIH07CiAKLXN0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB7Ci0JX191 NjQgdXNlcl9wdHI7Ci0JX191NjQgdXNlcl9zaXplOworc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV9leHQgeworCV9fdTMyIGN0eF9pZDsgLyogb3V0cHV0OiBpZCBvZiBuZXcgY29u dGV4dCovCiAJX191MzIgZmxhZ3M7Ci0jZGVmaW5lIEk5MTVfVVNFUlBUUl9SRUFEX09OTFkgMHgx Ci0jZGVmaW5lIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9OSVpFRCAweDgwMDAwMDAwCi0JLyoqCi0J ICogUmV0dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0LgotCSAqCi0JICogT2JqZWN0IGhhbmRs ZXMgYXJlIG5vbnplcm8uCi0JICovCi0JX191MzIgaGFuZGxlOworI2RlZmluZSBJOTE1X0NPTlRF WFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TCSgxdSA8PCAwKQorI2RlZmluZSBJOTE1X0NP TlRFWFRfQ1JFQVRFX0ZMQUdTX1VOS05PV04gXAorCSgtKEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxB R1NfVVNFX0VYVEVOU0lPTlMgPDwgMSkpCisJX191NjQgZXh0ZW5zaW9uczsKIH07CiAKIHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CkBAIC0xNjQ4LDYgKzE1NzQsOTYgQEAgc3Ry dWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgewogCV9fdTMyIHJzdmQ7CiB9Owog CitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSB7CisjZGVm aW5lIEk5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIDAKKwlzdHJ1Y3QgaTkxNV91c2Vy X2V4dGVuc2lvbiBiYXNlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBzZXRw YXJhbTsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95IHsKKwlfX3Uz MiBjdHhfaWQ7CisJX191MzIgcGFkOworfTsKKworLyoKKyAqIERSTV9JOTE1X0dFTV9WTV9DUkVB VEUgLQorICoKKyAqIENyZWF0ZSBhIG5ldyB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIHNwYWNlIChw cEdUVCkgZm9yIHVzZSB3aXRoaW4gYSBjb250ZXh0CisgKiBvbiB0aGUgc2FtZSBmaWxlLiBFeHRl bnNpb25zIGNhbiBiZSBwcm92aWRlZCB0byBjb25maWd1cmUgZXhhY3RseSBob3cgdGhlCisgKiBh ZGRyZXNzIHNwYWNlIGlzIHNldHVwIHVwb24gY3JlYXRpb24uCisgKgorICogVGhlIGlkIG9mIG5l dyBWTSAoYm91bmQgdG8gdGhlIGZkKSBmb3IgdXNlIHdpdGggSTkxNV9DT05URVhUX1BBUkFNX1ZN IGlzCisgKiByZXR1cm5lZCBpbiB0aGUgb3V0cGFyYW0gQGlkLgorICoKKyAqIE5vIGZsYWdzIGFy ZSBkZWZpbmVkLCB3aXRoIGFsbCBiaXRzIHJlc2VydmVkIGFuZCBtdXN0IGJlIHplcm8uCisgKgor ICogQW4gZXh0ZW5zaW9uIGNoYWluIG1heWJlIHByb3ZpZGVkLCBzdGFydGluZyB3aXRoIEBleHRl bnNpb25zLCBhbmQgdGVybWluYXRlZAorICogYnkgdGhlIEBuZXh0X2V4dGVuc2lvbiBiZWluZyAw LiBDdXJyZW50bHksIG5vIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQuCisgKgorICogRFJNX0k5MTVf R0VNX1ZNX0RFU1RST1kgLQorICoKKyAqIERlc3Ryb3lzIGEgcHJldmlvdXNseSBjcmVhdGVkIFZN IGlkLCBzcGVjaWZpZWQgaW4gQGlkLgorICoKKyAqIE5vIGV4dGVuc2lvbnMgb3IgZmxhZ3MgYXJl IGFsbG93ZWQgY3VycmVudGx5LCBhbmQgc28gbXVzdCBiZSB6ZXJvLgorICovCitzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3ZtX2NvbnRyb2wgeworCV9fdTY0IGV4dGVuc2lvbnM7CisJX191MzIgZmxhZ3M7 CisJX191MzIgaWQ7Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQgeworCS8qCisJICog UmVnaXN0ZXIgb2Zmc2V0LgorCSAqIEZvciA2NGJpdCB3aWRlIHJlZ2lzdGVycyB3aGVyZSB0aGUg dXBwZXIgMzJiaXRzIGRvbid0IGltbWVkaWF0ZWx5CisJICogZm9sbG93IHRoZSBsb3dlciAzMmJp dHMsIHRoZSBvZmZzZXQgb2YgdGhlIGxvd2VyIDMyYml0cyBtdXN0CisJICogYmUgc3BlY2lmaWVk CisJICovCisJX191NjQgb2Zmc2V0OworI2RlZmluZSBJOTE1X1JFR19SRUFEXzhCX1dBICgxdWwg PDwgMCkKKworCV9fdTY0IHZhbDsgLyogUmV0dXJuIHZhbHVlICovCit9OworCisvKiBLbm93biBy ZWdpc3RlcnM6CisgKgorICogUmVuZGVyIGVuZ2luZSB0aW1lc3RhbXAgLSAweDIzNTggKyA2NGJp dCAtIGdlbjcrCisgKiAtIE5vdGUgdGhpcyByZWdpc3RlciByZXR1cm5zIGFuIGludmFsaWQgdmFs dWUgaWYgdXNpbmcgdGhlIGRlZmF1bHQKKyAqICAgc2luZ2xlIGluc3RydWN0aW9uIDhieXRlIHJl YWQsIGluIG9yZGVyIHRvIHdvcmthcm91bmQgdGhhdCBwYXNzCisgKiAgIGZsYWcgSTkxNV9SRUdf UkVBRF84Ql9XQSBpbiBvZmZzZXQgZmllbGQuCisgKgorICovCisKK3N0cnVjdCBkcm1faTkxNV9y ZXNldF9zdGF0cyB7CisJX191MzIgY3R4X2lkOworCV9fdTMyIGZsYWdzOworCisJLyogQWxsIHJl c2V0cyBzaW5jZSBib290L21vZHVsZSByZWxvYWQsIGZvciBhbGwgY29udGV4dHMgKi8KKwlfX3Uz MiByZXNldF9jb3VudDsKKworCS8qIE51bWJlciBvZiBiYXRjaGVzIGxvc3Qgd2hlbiBhY3RpdmUg aW4gR1BVLCBmb3IgdGhpcyBjb250ZXh0ICovCisJX191MzIgYmF0Y2hfYWN0aXZlOworCisJLyog TnVtYmVyIG9mIGJhdGNoZXMgbG9zdCBwZW5kaW5nIGZvciBleGVjdXRpb24sIGZvciB0aGlzIGNv bnRleHQgKi8KKwlfX3UzMiBiYXRjaF9wZW5kaW5nOworCisJX191MzIgcGFkOworfTsKKworc3Ry dWN0IGRybV9pOTE1X2dlbV91c2VycHRyIHsKKwlfX3U2NCB1c2VyX3B0cjsKKwlfX3U2NCB1c2Vy X3NpemU7CisJX191MzIgZmxhZ3M7CisjZGVmaW5lIEk5MTVfVVNFUlBUUl9SRUFEX09OTFkgMHgx CisjZGVmaW5lIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9OSVpFRCAweDgwMDAwMDAwCisJLyoqCisJ ICogUmV0dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0LgorCSAqCisJICogT2JqZWN0IGhhbmRs ZXMgYXJlIG5vbnplcm8uCisJICovCisJX191MzIgaGFuZGxlOworfTsKKwogZW51bSBkcm1faTkx NV9vYV9mb3JtYXQgewogCUk5MTVfT0FfRk9STUFUX0ExMyA9IDEsCSAgICAvKiBIU1cgb25seSAq LwogCUk5MTVfT0FfRk9STUFUX0EyOSwJICAgIC8qIEhTVyBvbmx5ICovCi0tIAoyLjIwLjEKCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBt YWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeA==