From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 12/43] drm/i915: Extend CONTEXT_CREATE to set parameters upon construction Date: Wed, 6 Mar 2019 14:24:46 +0000 Message-ID: <20190306142517.22558-13-chris@chris-wilson.co.uk> References: <20190306142517.22558-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 0C54C6E0C3 for ; Wed, 6 Mar 2019 14:27:18 +0000 (UTC) In-Reply-To: <20190306142517.22558-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 Cc: matthew.auld@intel.com List-Id: intel-gfx@lists.freedesktop.org SXQgY2FuIGJlIHVzZWZ1bCB0byBoYXZlIGEgc2luZ2xlIGlvY3RsIHRvIGNyZWF0ZSBhIGNvbnRl eHQgd2l0aCBhbGwKdGhlIGluaXRpYWwgcGFyYW1ldGVycyBpbnN0ZWFkIG9mIGEgc2VyaWVzIG9m IGNyZWF0ZSArIHNldHBhcmFtICsgc2V0cGFyYW0KaW9jdGxzLiBUaGlzIGV4dGVuc2lvbiB0byBj cmVhdGUgY29udGV4dCBhbGxvd3MgYW55IG9mIHRoZSBwYXJhbWV0ZXJzCnRvIGJlIHBhc3NlZCBp biBhcyBhIGxpbmtlZCBsaXN0IHRvIGJlIGFwcGxpZWQgdG8gdGhlIG5ld2x5IGNvbnN0cnVjdGVk CmNvbnRleHQuCgp2MjogTWFrZSBhIGxvY2FsIGNvcHkgb2YgdXNlciBzZXRwYXJhbSAoVHZydGtv KQp2MzogVXNlIGZsYWdzIHRvIGRldGVjdCBhdmFpbGFiaWxpdHkgb2YgZXh0ZW5zaW9uIGludGVy ZmFjZQoKU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28u dWs+ClJldmlld2VkLWJ5OiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29t PgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAgICB8ICAgMiArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgNDQ3ICsrKysrKysrKysr KystLS0tLS0tLS0tLQogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwg MTY2ICsrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCAzMzkgaW5zZXJ0aW9ucygrKSwgMjc2IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDE0ZDliMWRkNWNjZC4uYTU0 MDMwZDYwZjg0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTI5OTcsNyArMjk5Nyw3IEBA IHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2lvY3RsX2Rlc2MgaTkxNV9pb2N0bHNbXSA9IHsKIAlE Uk1fSU9DVExfREVGX0RSVihJOTE1X1NFVF9TUFJJVEVfQ09MT1JLRVksIGludGVsX3Nwcml0ZV9z ZXRfY29sb3JrZXlfaW9jdGwsIERSTV9NQVNURVIpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVf R0VUX1NQUklURV9DT0xPUktFWSwgZHJtX25vb3AsIERSTV9NQVNURVIpLAogCURSTV9JT0NUTF9E RUZfRFJWKEk5MTVfR0VNX1dBSVQsIGk5MTVfZ2VtX3dhaXRfaW9jdGwsIERSTV9BVVRIfERSTV9S RU5ERVJfQUxMT1cpLAotCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX0NPTlRFWFRfQ1JFQVRF LCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCisJRFJN X0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEVfRVhULCBpOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCiAJRFJNX0lPQ1RMX0RFRl9EUlYo STkxNV9HRU1fQ09OVEVYVF9ERVNUUk9ZLCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGws IERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfUkVHX1JFQUQsIGk5 MTVfcmVnX3JlYWRfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJW KEk5MTVfR0VUX1JFU0VUX1NUQVRTLCBpOTE1X2dlbV9jb250ZXh0X3Jlc2V0X3N0YXRzX2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQu YwppbmRleCA1ZTU4MGU3OTE2M2UuLmJjMDQyYjBlMDA4MiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtOTAsNiArOTAsNyBAQAogI2luY2x1ZGUgImk5MTVfZHJ2 LmgiCiAjaW5jbHVkZSAiaTkxNV9nbG9iYWxzLmgiCiAjaW5jbHVkZSAiaTkxNV90cmFjZS5oIgor I2luY2x1ZGUgImk5MTVfdXNlcl9leHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiaW50ZWxfbHJjX3Jl Zy5oIgogI2luY2x1ZGUgImludGVsX3dvcmthcm91bmRzLmgiCiAKQEAgLTEwNjgsMTk2ICsxMDY5 LDYgQEAgc3RhdGljIGludCBzZXRfcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK IAlyZXR1cm4gZXJyOwogfQogCi1zdGF0aWMgYm9vbCBjbGllbnRfaXNfYmFubmVkKHN0cnVjdCBk cm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdikKLXsKLQlyZXR1cm4gYXRvbWljX3JlYWQo JmZpbGVfcHJpdi0+YmFuX3Njb3JlKSA+PSBJOTE1X0NMSUVOVF9TQ09SRV9CQU5ORUQ7Ci19Ci0K LWludCBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB2b2lkICpkYXRhLAotCQkJCSAgc3RydWN0IGRybV9maWxlICpmaWxlKQotewotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICppOTE1ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBkcm1faTkxNV9n ZW1fY29udGV4dF9jcmVhdGUgKmFyZ3MgPSBkYXRhOwotCXN0cnVjdCBkcm1faTkxNV9maWxlX3By aXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OwotCXN0cnVjdCBpOTE1X2dlbV9j b250ZXh0ICpjdHg7Ci0JaW50IHJldDsKLQotCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19s b2dpY2FsX2NvbnRleHRzKQotCQlyZXR1cm4gLUVOT0RFVjsKLQotCWlmIChhcmdzLT5wYWQgIT0g MCkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQlyZXQgPSBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5 MTUpOwotCWlmIChyZXQpCi0JCXJldHVybiByZXQ7Ci0KLQlpZiAoY2xpZW50X2lzX2Jhbm5lZChm aWxlX3ByaXYpKSB7Ci0JCURSTV9ERUJVRygiY2xpZW50ICVzWyVkXSBiYW5uZWQgZnJvbSBjcmVh dGluZyBjdHhcbiIsCi0JCQkgIGN1cnJlbnQtPmNvbW0sCi0JCQkgIHBpZF9ucihnZXRfdGFza19w aWQoY3VycmVudCwgUElEVFlQRV9QSUQpKSk7Ci0KLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JcmV0 ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVwdGlibGUoZGV2KTsKLQlpZiAocmV0KQotCQlyZXR1 cm4gcmV0OwotCi0JY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2 KTsKLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKLQlpZiAoSVNfRVJSKGN0eCkp Ci0JCXJldHVybiBQVFJfRVJSKGN0eCk7Ci0KLQlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRf aXNfa2VybmVsKGN0eCkpOwotCi0JYXJncy0+Y3R4X2lkID0gY3R4LT51c2VyX2hhbmRsZTsKLQlE Uk1fREVCVUcoIkhXIGNvbnRleHQgJWQgY3JlYXRlZFxuIiwgYXJncy0+Y3R4X2lkKTsKLQotCXJl dHVybiAwOwotfQotCi1pbnQgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCi0JCQkJICAgc3RydWN0IGRybV9maWxlICpmaWxl KQotewotCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95ICphcmdzID0gZGF0YTsK LQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJf cHJpdjsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwotCWludCByZXQ7Ci0KLQlpZiAo YXJncy0+cGFkICE9IDApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKGFyZ3MtPmN0eF9pZCA9 PSBERUZBVUxUX0NPTlRFWFRfSEFORExFKQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCWN0eCA9IGk5 MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+Y3R4X2lkKTsKLQlpZiAoIWN0 eCkKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUo JmRldi0+c3RydWN0X211dGV4KTsKLQlpZiAocmV0KQotCQlnb3RvIG91dDsKLQotCV9fZGVzdHJv eV9od19jb250ZXh0KGN0eCwgZmlsZV9wcml2KTsKLQltdXRleF91bmxvY2soJmRldi0+c3RydWN0 X211dGV4KTsKLQotb3V0OgotCWk5MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Ci0JcmV0dXJuIDA7 Ci19Ci0KLXN0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK LQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKLXsKLQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3NldSB1c2VyX3NzZXU7Ci0Jc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKLQlpbnQg cmV0OwotCi0JaWYgKGFyZ3MtPnNpemUgPT0gMCkKLQkJZ290byBvdXQ7Ci0JZWxzZSBpZiAoYXJn cy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCWlmIChj b3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLAot CQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQotCQlyZXR1cm4gLUVGQVVMVDsKLQotCWlmICh1c2Vy X3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCi0JCXJldHVybiAtRUlOVkFMOwotCi0JZW5n aW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0eC0+aTkxNSwKLQkJCQkJICB1c2VyX3Nz ZXUuZW5naW5lX2NsYXNzLAotCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfaW5zdGFuY2UpOwotCWlm ICghZW5naW5lKQotCQlyZXR1cm4gLUVJTlZBTDsKLQotCS8qIE9ubHkgdXNlIGZvciBtdXRleCBo ZXJlIGlzIHRvIHNlcmlhbGl6ZSBnZXRfcGFyYW0gYW5kIHNldF9wYXJhbS4gKi8KLQlyZXQgPSBt dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Ci0J aWYgKHJldCkKLQkJcmV0dXJuIHJldDsKLQotCWNlID0gdG9faW50ZWxfY29udGV4dChjdHgsIGVu Z2luZSk7Ci0KLQl1c2VyX3NzZXUuc2xpY2VfbWFzayA9IGNlLT5zc2V1LnNsaWNlX21hc2s7Ci0J dXNlcl9zc2V1LnN1YnNsaWNlX21hc2sgPSBjZS0+c3NldS5zdWJzbGljZV9tYXNrOwotCXVzZXJf c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNl OwotCXVzZXJfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5zc2V1Lm1heF9ldXNfcGVy X3N1YnNsaWNlOwotCi0JbXV0ZXhfdW5sb2NrKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp OwotCi0JaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLCAmdXNl cl9zc2V1LAotCQkJIHNpemVvZih1c2VyX3NzZXUpKSkKLQkJcmV0dXJuIC1FRkFVTFQ7Ci0KLW91 dDoKLQlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3NldSk7Ci0KLQlyZXR1cm4gMDsKLX0KLQot aW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRl diwgdm9pZCAqZGF0YSwKLQkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQotewotCXN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owot CXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncyA9IGRhdGE7Ci0Jc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKLQlpbnQgcmV0ID0gMDsKLQotCWN0eCA9IGk5MTVfZ2Vt X2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+Y3R4X2lkKTsKLQlpZiAoIWN0eCkKLQkJ cmV0dXJuIC1FTk9FTlQ7Ci0KLQlzd2l0Y2ggKGFyZ3MtPnBhcmFtKSB7Ci0JY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fQkFOX1BFUklPRDoKLQkJcmV0ID0gLUVJTlZBTDsKLQkJYnJlYWs7Ci0JY2Fz ZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoKLQkJYXJncy0+c2l6ZSA9IDA7Ci0JCWFy Z3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRFWFRfTk9fWkVST01BUCwgJmN0eC0+dXNlcl9mbGFn cyk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0dUVF9TSVpFOgotCQlhcmdz LT5zaXplID0gMDsKLQotCQlpZiAoY3R4LT5wcGd0dCkKLQkJCWFyZ3MtPnZhbHVlID0gY3R4LT5w cGd0dC0+dm0udG90YWw7Ci0JCWVsc2UgaWYgKHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBn dHQpCi0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQtPnZt LnRvdGFsOwotCQllbHNlCi0JCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52bS50 b3RhbDsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJST1JfQ0FQVFVS RToKLQkJYXJncy0+c2l6ZSA9IDA7Ci0JCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9u b19lcnJvcl9jYXB0dXJlKGN0eCk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9DT05URVhUX1BBUkFN X0JBTk5BQkxFOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9j b250ZXh0X2lzX2Jhbm5hYmxlKGN0eCk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9DT05URVhUX1BB UkFNX1JFQ09WRVJBQkxFOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFsdWUgPSBpOTE1 X2dlbV9jb250ZXh0X2lzX3JlY292ZXJhYmxlKGN0eCk7Ci0JCWJyZWFrOwotCWNhc2UgSTkxNV9D T05URVhUX1BBUkFNX1BSSU9SSVRZOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFsdWUg PSBjdHgtPnNjaGVkLnByaW9yaXR5ID4+IEk5MTVfVVNFUl9QUklPUklUWV9TSElGVDsKLQkJYnJl YWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKLQkJcmV0ID0gZ2V0X3NzZXUoY3R4 LCBhcmdzKTsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06Ci0JCXJldCA9 IGdldF9wcGd0dChjdHgsIGFyZ3MpOwotCQlicmVhazsKLQlkZWZhdWx0OgotCQlyZXQgPSAtRUlO VkFMOwotCQlicmVhazsKLQl9Ci0KLQlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwotCXJldHVy biByZXQ7Ci19Ci0KIHN0YXRpYyBpbnQgZ2VuOF9lbWl0X3JwY3NfY29uZmlnKHN0cnVjdCBpOTE1 X3JlcXVlc3QgKnJxLAogCQkJCSBzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsCiAJCQkJIHN0cnVj dCBpbnRlbF9zc2V1IHNzZXUpCkBAIC0xNTMzLDE4ICsxMzQ0LDExIEBAIHN0YXRpYyBpbnQgc2V0 X3NzZXUoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlyZXR1cm4gMDsKIH0KIAotaW50 IGk5MTVfZ2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg dm9pZCAqZGF0YSwKLQkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQorc3RhdGljIGludCBj dHhfc2V0cGFyYW0oc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCXN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncykKIHsKLQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9w cml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKLQlzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MgPSBkYXRhOwotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0 ICpjdHg7CiAJaW50IHJldCA9IDA7CiAKLQljdHggPSBpOTE1X2dlbV9jb250ZXh0X2xvb2t1cChm aWxlX3ByaXYsIGFyZ3MtPmN0eF9pZCk7Ci0JaWYgKCFjdHgpCi0JCXJldHVybiAtRU5PRU5UOwot CiAJc3dpdGNoIChhcmdzLT5wYXJhbSkgewogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX1pF Uk9NQVA6CiAJCWlmIChhcmdzLT5zaXplKQpAQCAtMTU1NCw2ICsxMzU4LDcgQEAgaW50IGk5MTVf Z2VtX2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAq ZGF0YSwKIAkJZWxzZQogCQkJY2xlYXJfYml0KFVDT05URVhUX05PX1pFUk9NQVAsICZjdHgtPnVz ZXJfZmxhZ3MpOwogCQlicmVhazsKKwogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX05PX0VSUk9S X0NBUFRVUkU6CiAJCWlmIChhcmdzLT5zaXplKQogCQkJcmV0ID0gLUVJTlZBTDsKQEAgLTE1NjIs NiArMTM2Nyw3IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWVsc2UKIAkJCWk5MTVfZ2VtX2NvbnRleHRf Y2xlYXJfbm9fZXJyb3JfY2FwdHVyZShjdHgpOwogCQlicmVhazsKKwogCWNhc2UgSTkxNV9DT05U RVhUX1BBUkFNX0JBTk5BQkxFOgogCQlpZiAoYXJncy0+c2l6ZSkKIAkJCXJldCA9IC1FSU5WQUw7 CkBAIC0xNTg4LDcgKzEzOTQsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCiAJCQlpZiAoYXJncy0+c2l6 ZSkKIAkJCQlyZXQgPSAtRUlOVkFMOwotCQkJZWxzZSBpZiAoISh0b19pOTE1KGRldiktPmNhcHMu c2NoZWR1bGVyICYgSTkxNV9TQ0hFRFVMRVJfQ0FQX1BSSU9SSVRZKSkKKwkJCWVsc2UgaWYgKCEo Y3R4LT5pOTE1LT5jYXBzLnNjaGVkdWxlciAmIEk5MTVfU0NIRURVTEVSX0NBUF9QUklPUklUWSkp CiAJCQkJcmV0ID0gLUVOT0RFVjsKIAkJCWVsc2UgaWYgKHByaW9yaXR5ID4gSTkxNV9DT05URVhU X01BWF9VU0VSX1BSSU9SSVRZIHx8CiAJCQkJIHByaW9yaXR5IDwgSTkxNV9DT05URVhUX01JTl9V U0VSX1BSSU9SSVRZKQpAQCAtMTYxNiw2ICsxNDIyLDI0NyBAQCBpbnQgaTkxNV9nZW1fY29udGV4 dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQli cmVhazsKIAl9CiAKKwlyZXR1cm4gcmV0OworfQorCitzdGF0aWMgaW50IGNyZWF0ZV9zZXRwYXJh bShzdHJ1Y3QgaTkxNV91c2VyX2V4dGVuc2lvbiBfX3VzZXIgKmV4dCwgdm9pZCAqZGF0YSkKK3sK KwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSBsb2NhbDsK KworCWlmIChjb3B5X2Zyb21fdXNlcigmbG9jYWwsIGV4dCwgc2l6ZW9mKGxvY2FsKSkpCisJCXJl dHVybiAtRUZBVUxUOworCisJaWYgKGxvY2FsLnNldHBhcmFtLmN0eF9pZCkKKwkJcmV0dXJuIC1F SU5WQUw7CisKKwlyZXR1cm4gY3R4X3NldHBhcmFtKGRhdGEsICZsb2NhbC5zZXRwYXJhbSk7Cit9 CisKK3N0YXRpYyBjb25zdCBpOTE1X3VzZXJfZXh0ZW5zaW9uX2ZuIGNyZWF0ZV9leHRlbnNpb25z W10gPSB7CisJW0k5MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNXSA9IGNyZWF0ZV9zZXRw YXJhbSwKK307CisKK3N0YXRpYyBib29sIGNsaWVudF9pc19iYW5uZWQoc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2KQoreworCXJldHVybiBhdG9taWNfcmVhZCgmZmlsZV9w cml2LT5iYW5fc2NvcmUpID49IEk5MTVfQ0xJRU5UX1NDT1JFX0JBTk5FRDsKK30KKworaW50IGk5 MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCisJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV9leHQgKmFyZ3MgPSBkYXRhOworCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHg7CisJaW50IHJldDsKKworCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19sb2dp Y2FsX2NvbnRleHRzKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChhcmdzLT5mbGFncyAmIEk5 MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVU5LTk9XTikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwly ZXQgPSBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpOworCWlmIChyZXQpCisJCXJldHVybiBy ZXQ7CisKKwlpZiAoY2xpZW50X2lzX2Jhbm5lZChmaWxlX3ByaXYpKSB7CisJCURSTV9ERUJVRygi Y2xpZW50ICVzWyVkXSBiYW5uZWQgZnJvbSBjcmVhdGluZyBjdHhcbiIsCisJCQkgIGN1cnJlbnQt PmNvbW0sCisJCQkgIHBpZF9ucihnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQRV9QSUQpKSk7 CisKKwkJcmV0dXJuIC1FSU87CisJfQorCisJcmV0ID0gaTkxNV9tdXRleF9sb2NrX2ludGVycnVw dGlibGUoZGV2KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJY3R4ID0gaTkxNV9nZW1f Y3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZV9wcml2KTsKKwltdXRleF91bmxvY2soJmRldi0+c3Ry dWN0X211dGV4KTsKKwlpZiAoSVNfRVJSKGN0eCkpCisJCXJldHVybiBQVFJfRVJSKGN0eCk7CisK KwlHRU1fQlVHX09OKGk5MTVfZ2VtX2NvbnRleHRfaXNfa2VybmVsKGN0eCkpOworCisJaWYgKGFy Z3MtPmZsYWdzICYgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUykgewor CQlyZXQgPSBpOTE1X3VzZXJfZXh0ZW5zaW9ucyh1NjRfdG9fdXNlcl9wdHIoYXJncy0+ZXh0ZW5z aW9ucyksCisJCQkJCSAgIGNyZWF0ZV9leHRlbnNpb25zLAorCQkJCQkgICBBUlJBWV9TSVpFKGNy ZWF0ZV9leHRlbnNpb25zKSwKKwkJCQkJICAgY3R4KTsKKwkJaWYgKHJldCkgeworCQkJaWRyX3Jl bW92ZSgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY3R4LT51c2VyX2hhbmRsZSk7CisJCQljb250 ZXh0X2Nsb3NlKGN0eCk7CisJCQlyZXR1cm4gcmV0OworCQl9CisJfQorCisJYXJncy0+Y3R4X2lk ID0gY3R4LT51c2VyX2hhbmRsZTsKKwlEUk1fREVCVUcoIkhXIGNvbnRleHQgJWQgY3JlYXRlZFxu IiwgYXJncy0+Y3R4X2lkKTsKKworCXJldHVybiAwOworfQorCitpbnQgaTkxNV9nZW1fY29udGV4 dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkJ ICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9kZXN0cm95ICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpm aWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAq Y3R4OworCWludCByZXQ7CisKKwlpZiAoYXJncy0+cGFkICE9IDApCisJCXJldHVybiAtRUlOVkFM OworCisJaWYgKGFyZ3MtPmN0eF9pZCA9PSBERUZBVUxUX0NPTlRFWFRfSEFORExFKQorCQlyZXR1 cm4gLUVOT0VOVDsKKworCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwg YXJncy0+Y3R4X2lkKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlyZXQgPSBt dXRleF9sb2NrX2ludGVycnVwdGlibGUoJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAocmV0KQor CQlnb3RvIG91dDsKKworCV9fZGVzdHJveV9od19jb250ZXh0KGN0eCwgZmlsZV9wcml2KTsKKwlt dXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKworb3V0OgorCWk5MTVfZ2VtX2NvbnRl eHRfcHV0KGN0eCk7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgZ2V0X3NzZXUoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW1fc3Nl dSB1c2VyX3NzZXU7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOworCXN0cnVjdCBp bnRlbF9jb250ZXh0ICpjZTsKKwlpbnQgcmV0OworCisJaWYgKGFyZ3MtPnNpemUgPT0gMCkKKwkJ Z290byBvdXQ7CisJZWxzZSBpZiAoYXJncy0+c2l6ZSA8IHNpemVvZih1c2VyX3NzZXUpKQorCQly ZXR1cm4gLUVJTlZBTDsKKworCWlmIChjb3B5X2Zyb21fdXNlcigmdXNlcl9zc2V1LCB1NjRfdG9f dXNlcl9wdHIoYXJncy0+dmFsdWUpLAorCQkJICAgc2l6ZW9mKHVzZXJfc3NldSkpKQorCQlyZXR1 cm4gLUVGQVVMVDsKKworCWlmICh1c2VyX3NzZXUuZmxhZ3MgfHwgdXNlcl9zc2V1LnJzdmQpCisJ CXJldHVybiAtRUlOVkFMOworCisJZW5naW5lID0gaW50ZWxfZW5naW5lX2xvb2t1cF91c2VyKGN0 eC0+aTkxNSwKKwkJCQkJICB1c2VyX3NzZXUuZW5naW5lX2NsYXNzLAorCQkJCQkgIHVzZXJfc3Nl dS5lbmdpbmVfaW5zdGFuY2UpOworCWlmICghZW5naW5lKQorCQlyZXR1cm4gLUVJTlZBTDsKKwor CS8qIE9ubHkgdXNlIGZvciBtdXRleCBoZXJlIGlzIHRvIHNlcmlhbGl6ZSBnZXRfcGFyYW0gYW5k IHNldF9wYXJhbS4gKi8KKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmN0eC0+aTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKworCWNlID0g dG9faW50ZWxfY29udGV4dChjdHgsIGVuZ2luZSk7CisKKwl1c2VyX3NzZXUuc2xpY2VfbWFzayA9 IGNlLT5zc2V1LnNsaWNlX21hc2s7CisJdXNlcl9zc2V1LnN1YnNsaWNlX21hc2sgPSBjZS0+c3Nl dS5zdWJzbGljZV9tYXNrOworCXVzZXJfc3NldS5taW5fZXVzX3Blcl9zdWJzbGljZSA9IGNlLT5z c2V1Lm1pbl9ldXNfcGVyX3N1YnNsaWNlOworCXVzZXJfc3NldS5tYXhfZXVzX3Blcl9zdWJzbGlj ZSA9IGNlLT5zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlOworCisJbXV0ZXhfdW5sb2NrKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCisJaWYgKGNvcHlfdG9fdXNlcih1NjRfdG9fdXNl cl9wdHIoYXJncy0+dmFsdWUpLCAmdXNlcl9zc2V1LAorCQkJIHNpemVvZih1c2VyX3NzZXUpKSkK KwkJcmV0dXJuIC1FRkFVTFQ7CisKK291dDoKKwlhcmdzLT5zaXplID0gc2l6ZW9mKHVzZXJfc3Nl dSk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGk5MTVfZ2VtX2NvbnRleHRfZ2V0cGFyYW1faW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgICAgc3RydWN0IGRy bV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJp diA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bSAqYXJncyA9IGRhdGE7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwlpbnQgcmV0 ID0gMDsKKworCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+ Y3R4X2lkKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlzd2l0Y2ggKGFyZ3Mt PnBhcmFtKSB7CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoKKwkJYXJncy0+ c2l6ZSA9IDA7CisJCWFyZ3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRFWFRfTk9fWkVST01BUCwg JmN0eC0+dXNlcl9mbGFncyk7CisJCWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1f R1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOworCQlpZiAoY3R4LT5wcGd0dCkKKwkJCWFyZ3Mt PnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7CisJCWVsc2UgaWYgKHRvX2k5MTUoZGV2KS0+ bW0uYWxpYXNpbmdfcHBndHQpCisJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUoZGV2KS0+bW0uYWxp YXNpbmdfcHBndHQtPnZtLnRvdGFsOworCQllbHNlCisJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUo ZGV2KS0+Z2d0dC52bS50b3RhbDsKKwkJYnJlYWs7CisKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJB TV9OT19FUlJPUl9DQVBUVVJFOgorCQlhcmdzLT5zaXplID0gMDsKKwkJYXJncy0+dmFsdWUgPSBp OTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKKwkJYnJlYWs7CisKKwljYXNl IEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5OQUJMRToKKwkJYXJncy0+c2l6ZSA9IDA7CisJCWFyZ3Mt PnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9pc19iYW5uYWJsZShjdHgpOworCQlicmVhazsKKwor CWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1JFQ09WRVJBQkxFOgorCQlhcmdzLT5zaXplID0gMDsK KwkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X2lzX3JlY292ZXJhYmxlKGN0eCk7CisJ CWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6CisJCWFyZ3MtPnNp emUgPSAwOworCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHkgPj4gSTkxNV9VU0VS X1BSSU9SSVRZX1NISUZUOworCQlicmVhazsKKworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NT RVU6CisJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOworCisJY2FzZSBJOTE1 X0NPTlRFWFRfUEFSQU1fVk06CisJCXJldCA9IGdldF9wcGd0dChjdHgsIGFyZ3MpOworCQlicmVh azsKKworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CisJZGVmYXVsdDoKKwkJ cmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJfQorCisJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4 KTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAgICBzdHJ1Y3QgZHJt X2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2 ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFt ICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCWludCByZXQ7 CisKKwljdHggPSBpOTE1X2dlbV9jb250ZXh0X2xvb2t1cChmaWxlX3ByaXYsIGFyZ3MtPmN0eF9p ZCk7CisJaWYgKCFjdHgpCisJCXJldHVybiAtRU5PRU5UOworCisJcmV0ID0gY3R4X3NldHBhcmFt KGN0eCwgYXJncyk7CisKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwogCXJldHVybiByZXQ7 CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggYi9pbmNsdWRlL3Vh cGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggNjU3NTQ3MDc1NWQwLi4wZGI5MmE0MTUzYzggMTAwNjQ0 Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNsdWRlL3VhcGkvZHJt L2k5MTVfZHJtLmgKQEAgLTM5Miw2ICszOTIsNyBAQCB0eXBlZGVmIHN0cnVjdCBfZHJtX2k5MTVf c2FyZWEgewogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfU1BSSVRFX0NPTE9SS0VZIERSTV9J T1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfU1BSSVRFX0NPTE9SS0VZLCBzdHJ1 Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VN X1dBSVQJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fV0FJVCwgc3Ry dWN0IGRybV9pOTE1X2dlbV93YWl0KQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVY VF9DUkVBVEUJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVY VF9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUpCisjZGVmaW5lIERS TV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURV9FWFQJRFJNX0lPV1IgKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9jcmVhdGVfZXh0KQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fQ09OVEVYVF9E RVNUUk9ZCURSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9E RVNUUk9ZLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSkKICNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfUkVHX1JFQUQJCQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRfQkFTRSArIERSTV9J OTE1X1JFR19SRUFELCBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQpCiAjZGVmaW5lIERSTV9JT0NU TF9JOTE1X0dFVF9SRVNFVF9TVEFUUwkJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1f STkxNV9HRVRfUkVTRVRfU1RBVFMsIHN0cnVjdCBkcm1faTkxNV9yZXNldF9zdGF0cykKQEAgLTE0 NDUsODUgKzE0NDYsMTcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV93YWl0IHsKIH07CiAKIHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUgewotCS8qICBvdXRwdXQ6IGlkIG9mIG5ldyBj b250ZXh0Ki8KLQlfX3UzMiBjdHhfaWQ7Ci0JX191MzIgcGFkOwotfTsKLQotc3RydWN0IGRybV9p OTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3kgewotCV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBjdHhfaWQ7 IC8qIG91dHB1dDogaWQgb2YgbmV3IGNvbnRleHQqLwogCV9fdTMyIHBhZDsKIH07CiAKLS8qCi0g KiBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFIC0KLSAqCi0gKiBDcmVhdGUgYSBuZXcgdmlydHVhbCBt ZW1vcnkgYWRkcmVzcyBzcGFjZSAocHBHVFQpIGZvciB1c2Ugd2l0aGluIGEgY29udGV4dAotICog b24gdGhlIHNhbWUgZmlsZS4gRXh0ZW5zaW9ucyBjYW4gYmUgcHJvdmlkZWQgdG8gY29uZmlndXJl IGV4YWN0bHkgaG93IHRoZQotICogYWRkcmVzcyBzcGFjZSBpcyBzZXR1cCB1cG9uIGNyZWF0aW9u LgotICoKLSAqIFRoZSBpZCBvZiBuZXcgVk0gKGJvdW5kIHRvIHRoZSBmZCkgZm9yIHVzZSB3aXRo IEk5MTVfQ09OVEVYVF9QQVJBTV9WTSBpcwotICogcmV0dXJuZWQuCi0gKgotICogRFJNX0k5MTVf R0VNX1ZNX0RFU1RST1kgLQotICoKLSAqIERlc3Ryb3lzIGEgcHJldmlvdXNseSBjcmVhdGVkIFZN IGlkLgotICovCi1zdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgewotCV9fdTY0IGV4dGVu c2lvbnM7CitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dCB7CisJX191MzIg Y3R4X2lkOyAvKiBvdXRwdXQ6IGlkIG9mIG5ldyBjb250ZXh0Ki8KIAlfX3UzMiBmbGFnczsKLQlf X3UzMiBpZDsKLX07Ci0KLXN0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCB7Ci0JLyoKLQkgKiBSZWdp c3RlciBvZmZzZXQuCi0JICogRm9yIDY0Yml0IHdpZGUgcmVnaXN0ZXJzIHdoZXJlIHRoZSB1cHBl ciAzMmJpdHMgZG9uJ3QgaW1tZWRpYXRlbHkKLQkgKiBmb2xsb3cgdGhlIGxvd2VyIDMyYml0cywg dGhlIG9mZnNldCBvZiB0aGUgbG93ZXIgMzJiaXRzIG11c3QKLQkgKiBiZSBzcGVjaWZpZWQKLQkg Ki8KLQlfX3U2NCBvZmZzZXQ7Ci0jZGVmaW5lIEk5MTVfUkVHX1JFQURfOEJfV0EgKDF1bCA8PCAw KQotCi0JX191NjQgdmFsOyAvKiBSZXR1cm4gdmFsdWUgKi8KLX07Ci0vKiBLbm93biByZWdpc3Rl cnM6Ci0gKgotICogUmVuZGVyIGVuZ2luZSB0aW1lc3RhbXAgLSAweDIzNTggKyA2NGJpdCAtIGdl bjcrCi0gKiAtIE5vdGUgdGhpcyByZWdpc3RlciByZXR1cm5zIGFuIGludmFsaWQgdmFsdWUgaWYg dXNpbmcgdGhlIGRlZmF1bHQKLSAqICAgc2luZ2xlIGluc3RydWN0aW9uIDhieXRlIHJlYWQsIGlu IG9yZGVyIHRvIHdvcmthcm91bmQgdGhhdCBwYXNzCi0gKiAgIGZsYWcgSTkxNV9SRUdfUkVBRF84 Ql9XQSBpbiBvZmZzZXQgZmllbGQuCi0gKgotICovCi0KLXN0cnVjdCBkcm1faTkxNV9yZXNldF9z dGF0cyB7Ci0JX191MzIgY3R4X2lkOwotCV9fdTMyIGZsYWdzOwotCi0JLyogQWxsIHJlc2V0cyBz aW5jZSBib290L21vZHVsZSByZWxvYWQsIGZvciBhbGwgY29udGV4dHMgKi8KLQlfX3UzMiByZXNl dF9jb3VudDsKLQotCS8qIE51bWJlciBvZiBiYXRjaGVzIGxvc3Qgd2hlbiBhY3RpdmUgaW4gR1BV LCBmb3IgdGhpcyBjb250ZXh0ICovCi0JX191MzIgYmF0Y2hfYWN0aXZlOwotCi0JLyogTnVtYmVy IG9mIGJhdGNoZXMgbG9zdCBwZW5kaW5nIGZvciBleGVjdXRpb24sIGZvciB0aGlzIGNvbnRleHQg Ki8KLQlfX3UzMiBiYXRjaF9wZW5kaW5nOwotCi0JX191MzIgcGFkOwotfTsKLQotc3RydWN0IGRy bV9pOTE1X2dlbV91c2VycHRyIHsKLQlfX3U2NCB1c2VyX3B0cjsKLQlfX3U2NCB1c2VyX3NpemU7 Ci0JX191MzIgZmxhZ3M7Ci0jZGVmaW5lIEk5MTVfVVNFUlBUUl9SRUFEX09OTFkgMHgxCi0jZGVm aW5lIEk5MTVfVVNFUlBUUl9VTlNZTkNIUk9OSVpFRCAweDgwMDAwMDAwCi0JLyoqCi0JICogUmV0 dXJuZWQgaGFuZGxlIGZvciB0aGUgb2JqZWN0LgotCSAqCi0JICogT2JqZWN0IGhhbmRsZXMgYXJl IG5vbnplcm8uCi0JICovCi0JX191MzIgaGFuZGxlOworI2RlZmluZSBJOTE1X0NPTlRFWFRfQ1JF QVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TCSgxdSA8PCAwKQorI2RlZmluZSBJOTE1X0NPTlRFWFRf Q1JFQVRFX0ZMQUdTX1VOS05PV04gXAorCSgtKEk5MTVfQ09OVEVYVF9DUkVBVEVfRkxBR1NfVVNF X0VYVEVOU0lPTlMgPDwgMSkpCisJX191NjQgZXh0ZW5zaW9uczsKIH07CiAKIHN0cnVjdCBkcm1f aTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CkBAIC0xNjM5LDYgKzE1NzIsODkgQEAgc3RydWN0IGRy bV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtX3NzZXUgewogCV9fdTMyIHJzdmQ7CiB9OwogCitzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2V4dF9zZXRwYXJhbSB7CisjZGVmaW5lIEk5 MTVfQ09OVEVYVF9DUkVBVEVfRVhUX1NFVFBBUkFNIDAKKwlzdHJ1Y3QgaTkxNV91c2VyX2V4dGVu c2lvbiBiYXNlOworCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSBzZXRwYXJhbTsK K307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9kZXN0cm95IHsKKwlfX3UzMiBjdHhf aWQ7CisJX191MzIgcGFkOworfTsKKworLyoKKyAqIERSTV9JOTE1X0dFTV9WTV9DUkVBVEUgLQor ICoKKyAqIENyZWF0ZSBhIG5ldyB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIHNwYWNlIChwcEdUVCkg Zm9yIHVzZSB3aXRoaW4gYSBjb250ZXh0CisgKiBvbiB0aGUgc2FtZSBmaWxlLiBFeHRlbnNpb25z IGNhbiBiZSBwcm92aWRlZCB0byBjb25maWd1cmUgZXhhY3RseSBob3cgdGhlCisgKiBhZGRyZXNz IHNwYWNlIGlzIHNldHVwIHVwb24gY3JlYXRpb24uCisgKgorICogVGhlIGlkIG9mIG5ldyBWTSAo Ym91bmQgdG8gdGhlIGZkKSBmb3IgdXNlIHdpdGggSTkxNV9DT05URVhUX1BBUkFNX1ZNIGlzCisg KiByZXR1cm5lZC4KKyAqCisgKiBEUk1fSTkxNV9HRU1fVk1fREVTVFJPWSAtCisgKgorICogRGVz dHJveXMgYSBwcmV2aW91c2x5IGNyZWF0ZWQgVk0gaWQuCisgKi8KK3N0cnVjdCBkcm1faTkxNV9n ZW1fdm1fY29udHJvbCB7CisJX191NjQgZXh0ZW5zaW9uczsKKwlfX3UzMiBmbGFnczsKKwlfX3Uz MiBpZDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCB7CisJLyoKKwkgKiBSZWdpc3Rl ciBvZmZzZXQuCisJICogRm9yIDY0Yml0IHdpZGUgcmVnaXN0ZXJzIHdoZXJlIHRoZSB1cHBlciAz MmJpdHMgZG9uJ3QgaW1tZWRpYXRlbHkKKwkgKiBmb2xsb3cgdGhlIGxvd2VyIDMyYml0cywgdGhl IG9mZnNldCBvZiB0aGUgbG93ZXIgMzJiaXRzIG11c3QKKwkgKiBiZSBzcGVjaWZpZWQKKwkgKi8K KwlfX3U2NCBvZmZzZXQ7CisjZGVmaW5lIEk5MTVfUkVHX1JFQURfOEJfV0EgKDF1bCA8PCAwKQor CisJX191NjQgdmFsOyAvKiBSZXR1cm4gdmFsdWUgKi8KK307CisKKy8qIEtub3duIHJlZ2lzdGVy czoKKyAqCisgKiBSZW5kZXIgZW5naW5lIHRpbWVzdGFtcCAtIDB4MjM1OCArIDY0Yml0IC0gZ2Vu NysKKyAqIC0gTm90ZSB0aGlzIHJlZ2lzdGVyIHJldHVybnMgYW4gaW52YWxpZCB2YWx1ZSBpZiB1 c2luZyB0aGUgZGVmYXVsdAorICogICBzaW5nbGUgaW5zdHJ1Y3Rpb24gOGJ5dGUgcmVhZCwgaW4g b3JkZXIgdG8gd29ya2Fyb3VuZCB0aGF0IHBhc3MKKyAqICAgZmxhZyBJOTE1X1JFR19SRUFEXzhC X1dBIGluIG9mZnNldCBmaWVsZC4KKyAqCisgKi8KKworc3RydWN0IGRybV9pOTE1X3Jlc2V0X3N0 YXRzIHsKKwlfX3UzMiBjdHhfaWQ7CisJX191MzIgZmxhZ3M7CisKKwkvKiBBbGwgcmVzZXRzIHNp bmNlIGJvb3QvbW9kdWxlIHJlbG9hZCwgZm9yIGFsbCBjb250ZXh0cyAqLworCV9fdTMyIHJlc2V0 X2NvdW50OworCisJLyogTnVtYmVyIG9mIGJhdGNoZXMgbG9zdCB3aGVuIGFjdGl2ZSBpbiBHUFUs IGZvciB0aGlzIGNvbnRleHQgKi8KKwlfX3UzMiBiYXRjaF9hY3RpdmU7CisKKwkvKiBOdW1iZXIg b2YgYmF0Y2hlcyBsb3N0IHBlbmRpbmcgZm9yIGV4ZWN1dGlvbiwgZm9yIHRoaXMgY29udGV4dCAq LworCV9fdTMyIGJhdGNoX3BlbmRpbmc7CisKKwlfX3UzMiBwYWQ7Cit9OworCitzdHJ1Y3QgZHJt X2k5MTVfZ2VtX3VzZXJwdHIgeworCV9fdTY0IHVzZXJfcHRyOworCV9fdTY0IHVzZXJfc2l6ZTsK KwlfX3UzMiBmbGFnczsKKyNkZWZpbmUgSTkxNV9VU0VSUFRSX1JFQURfT05MWSAweDEKKyNkZWZp bmUgSTkxNV9VU0VSUFRSX1VOU1lOQ0hST05JWkVEIDB4ODAwMDAwMDAKKwkvKioKKwkgKiBSZXR1 cm5lZCBoYW5kbGUgZm9yIHRoZSBvYmplY3QuCisJICoKKwkgKiBPYmplY3QgaGFuZGxlcyBhcmUg bm9uemVyby4KKwkgKi8KKwlfX3UzMiBoYW5kbGU7Cit9OworCiBlbnVtIGRybV9pOTE1X29hX2Zv cm1hdCB7CiAJSTkxNV9PQV9GT1JNQVRfQTEzID0gMSwJICAgIC8qIEhTVyBvbmx5ICovCiAJSTkx NV9PQV9GT1JNQVRfQTI5LAkgICAgLyogSFNXIG9ubHkgKi8KLS0gCjIuMjAuMQoKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4