From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 14/22] drm/i915: Extend CONTEXT_CREATE to set parameters upon construction Date: Mon, 18 Mar 2019 09:51:56 +0000 Message-ID: <20190318095204.9913-14-chris@chris-wilson.co.uk> References: <20190318095204.9913-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 29C1389791 for ; Mon, 18 Mar 2019 09:52:24 +0000 (UTC) In-Reply-To: <20190318095204.9913-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 ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIHwgNDU0ICsrKysrKysrKysr KystLS0tLS0tLS0tLQogaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oICAgICAgICAgICAgIHwg MTgwICsrKysrLS0tLS0KIDMgZmlsZXMgY2hhbmdlZCwgMzUzIGluc2VydGlvbnMoKyksIDI4MyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCBmYTk5MTE0NGUwZjIuLjlh MGZhM2IyMWU5ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0zMTEwLDcgKzMxMTAsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVfaW9jdGxzW10gPSB7CiAJ RFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9TRVRfU1BSSVRFX0NPTE9SS0VZLCBpbnRlbF9zcHJpdGVf c2V0X2NvbG9ya2V5X2lvY3RsLCBEUk1fTUFTVEVSKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1 X0dFVF9TUFJJVEVfQ09MT1JLRVksIGRybV9ub29wLCBEUk1fTUFTVEVSKSwKIAlEUk1fSU9DVExf REVGX0RSVihJOTE1X0dFTV9XQUlULCBpOTE1X2dlbV93YWl0X2lvY3RsLCBEUk1fQVVUSHxEUk1f UkVOREVSX0FMTE9XKSwKLQlEUk1fSU9DVExfREVGX0RSVihJOTE1X0dFTV9DT05URVhUX0NSRUFU RSwgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAorCURS TV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX0NPTlRFWFRfQ1JFQVRFX0VYVCwgaTkxNV9nZW1fY29u dGV4dF9jcmVhdGVfaW9jdGwsIERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJW KEk5MTVfR0VNX0NPTlRFWFRfREVTVFJPWSwgaTkxNV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RSVihJOTE1X1JFR19SRUFELCBp OTE1X3JlZ19yZWFkX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKIAlEUk1fSU9DVExfREVGX0RS VihJOTE1X0dFVF9SRVNFVF9TVEFUUywgaTkxNV9nZW1fY29udGV4dF9yZXNldF9zdGF0c19pb2N0 bCwgRFJNX1JFTkRFUl9BTExPVyksCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbV9jb250ZXh0LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0 LmMKaW5kZXggYzM5MmY3YWY1NTQ2Li4wZDcyZTBjYWRkZTggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTExMTUsMTk2ICsxMTE1LDYgQEAgc3RhdGljIGludCBz ZXRfcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAlyZXR1cm4gZXJyOwogfQog Ci1zdGF0aWMgYm9vbCBjbGllbnRfaXNfYmFubmVkKHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZpbGVfcHJpdikKLXsKLQlyZXR1cm4gYXRvbWljX3JlYWQoJmZpbGVfcHJpdi0+YmFuX3Nj b3JlKSA+PSBJOTE1X0NMSUVOVF9TQ09SRV9CQU5ORUQ7Ci19Ci0KLWludCBpOTE1X2dlbV9jb250 ZXh0X2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJ CSAgc3RydWN0IGRybV9maWxlICpmaWxlKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpp OTE1ID0gdG9faTkxNShkZXYpOwotCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUg KmFyZ3MgPSBkYXRhOwotCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9 IGZpbGUtPmRyaXZlcl9wcml2OwotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0JaW50 IHJldDsKLQotCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19sb2dpY2FsX2NvbnRleHRzKQot CQlyZXR1cm4gLUVOT0RFVjsKLQotCWlmIChhcmdzLT5wYWQgIT0gMCkKLQkJcmV0dXJuIC1FSU5W QUw7Ci0KLQlyZXQgPSBpOTE1X3Rlcm1pbmFsbHlfd2VkZ2VkKGk5MTUpOwotCWlmIChyZXQpCi0J CXJldHVybiByZXQ7Ci0KLQlpZiAoY2xpZW50X2lzX2Jhbm5lZChmaWxlX3ByaXYpKSB7Ci0JCURS TV9ERUJVRygiY2xpZW50ICVzWyVkXSBiYW5uZWQgZnJvbSBjcmVhdGluZyBjdHhcbiIsCi0JCQkg IGN1cnJlbnQtPmNvbW0sCi0JCQkgIHBpZF9ucihnZXRfdGFza19waWQoY3VycmVudCwgUElEVFlQ RV9QSUQpKSk7Ci0KLQkJcmV0dXJuIC1FSU87Ci0JfQotCi0JcmV0ID0gaTkxNV9tdXRleF9sb2Nr X2ludGVycnVwdGlibGUoZGV2KTsKLQlpZiAocmV0KQotCQlyZXR1cm4gcmV0OwotCi0JY3R4ID0g aTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSk7Ci0JbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVj dF9tdXRleCk7Ci0JaWYgKElTX0VSUihjdHgpKQotCQlyZXR1cm4gUFRSX0VSUihjdHgpOwotCi0J cmV0ID0gZ2VtX2NvbnRleHRfcmVnaXN0ZXIoY3R4LCBmaWxlX3ByaXYpOwotCWlmIChyZXQpCi0J CWdvdG8gZXJyX2N0eDsKLQotCWFyZ3MtPmN0eF9pZCA9IGN0eC0+dXNlcl9oYW5kbGU7Ci0JRFJN X0RFQlVHKCJIVyBjb250ZXh0ICVkIGNyZWF0ZWRcbiIsIGFyZ3MtPmN0eF9pZCk7Ci0KLQlyZXR1 cm4gMDsKLQotZXJyX2N0eDoKLQltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7Ci0JY29u dGV4dF9jbG9zZShjdHgpOwotCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwotCXJl dHVybiByZXQ7Ci19Ci0KLWludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKLQkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZp bGUpCi17Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3kgKmFyZ3MgPSBkYXRh OwotCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZl cl9wcml2OwotCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Ci0KLQlpZiAoYXJncy0+cGFk ICE9IDApCi0JCXJldHVybiAtRUlOVkFMOwotCi0JaWYgKGFyZ3MtPmN0eF9pZCA9PSBERUZBVUxU X0NPTlRFWFRfSEFORExFKQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCW11dGV4X2xvY2soJmZpbGVf cHJpdi0+Y29udGV4dF9sb2NrKTsKLQljdHggPSBpZHJfcmVtb3ZlKCZmaWxlX3ByaXYtPmNvbnRl eHRfaWRyLCBhcmdzLT5jdHhfaWQpOwotCW11dGV4X2xvY2soJmZpbGVfcHJpdi0+Y29udGV4dF9s b2NrKTsKLQlpZiAoIWN0eCkKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KLQltdXRleF9sb2NrKCZkZXYt PnN0cnVjdF9tdXRleCk7Ci0JY29udGV4dF9jbG9zZShjdHgpOwotCW11dGV4X3VubG9jaygmZGV2 LT5zdHJ1Y3RfbXV0ZXgpOwotCi0JcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQgZ2V0X3NzZXUo c3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKLQkJICAgIHN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSAqYXJncykKLXsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFy YW1fc3NldSB1c2VyX3NzZXU7Ci0Jc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCXN0 cnVjdCBpbnRlbF9jb250ZXh0ICpjZTsKLQotCWlmIChhcmdzLT5zaXplID09IDApCi0JCWdvdG8g b3V0OwotCWVsc2UgaWYgKGFyZ3MtPnNpemUgPCBzaXplb2YodXNlcl9zc2V1KSkKLQkJcmV0dXJu IC1FSU5WQUw7Ci0KLQlpZiAoY29weV9mcm9tX3VzZXIoJnVzZXJfc3NldSwgdTY0X3RvX3VzZXJf cHRyKGFyZ3MtPnZhbHVlKSwKLQkJCSAgIHNpemVvZih1c2VyX3NzZXUpKSkKLQkJcmV0dXJuIC1F RkFVTFQ7Ci0KLQlpZiAodXNlcl9zc2V1LmZsYWdzIHx8IHVzZXJfc3NldS5yc3ZkKQotCQlyZXR1 cm4gLUVJTlZBTDsKLQotCWVuZ2luZSA9IGludGVsX2VuZ2luZV9sb29rdXBfdXNlcihjdHgtPmk5 MTUsCi0JCQkJCSAgdXNlcl9zc2V1LmVuZ2luZV9jbGFzcywKLQkJCQkJICB1c2VyX3NzZXUuZW5n aW5lX2luc3RhbmNlKTsKLQlpZiAoIWVuZ2luZSkKLQkJcmV0dXJuIC1FSU5WQUw7Ci0KLQljZSA9 IGludGVsX2NvbnRleHRfcGluX2xvY2soY3R4LCBlbmdpbmUpOyAvKiBzZXJpYWxpc2VzIHdpdGgg c2V0X3NzZXUgKi8KLQlpZiAoSVNfRVJSKGNlKSkKLQkJcmV0dXJuIFBUUl9FUlIoY2UpOwotCi0J dXNlcl9zc2V1LnNsaWNlX21hc2sgPSBjZS0+c3NldS5zbGljZV9tYXNrOwotCXVzZXJfc3NldS5z dWJzbGljZV9tYXNrID0gY2UtPnNzZXUuc3Vic2xpY2VfbWFzazsKLQl1c2VyX3NzZXUubWluX2V1 c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5taW5fZXVzX3Blcl9zdWJzbGljZTsKLQl1c2VyX3Nz ZXUubWF4X2V1c19wZXJfc3Vic2xpY2UgPSBjZS0+c3NldS5tYXhfZXVzX3Blcl9zdWJzbGljZTsK LQotCWludGVsX2NvbnRleHRfcGluX3VubG9jayhjZSk7Ci0KLQlpZiAoY29weV90b191c2VyKHU2 NF90b191c2VyX3B0cihhcmdzLT52YWx1ZSksICZ1c2VyX3NzZXUsCi0JCQkgc2l6ZW9mKHVzZXJf c3NldSkpKQotCQlyZXR1cm4gLUVGQVVMVDsKLQotb3V0OgotCWFyZ3MtPnNpemUgPSBzaXplb2Yo dXNlcl9zc2V1KTsKLQotCXJldHVybiAwOwotfQotCi1pbnQgaTkxNV9nZW1fY29udGV4dF9nZXRw YXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJCSAgICBz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCi17Ci0Jc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAq ZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9jb250 ZXh0X3BhcmFtICphcmdzID0gZGF0YTsKLQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owot CWludCByZXQgPSAwOwotCi0JY3R4ID0gaTkxNV9nZW1fY29udGV4dF9sb29rdXAoZmlsZV9wcml2 LCBhcmdzLT5jdHhfaWQpOwotCWlmICghY3R4KQotCQlyZXR1cm4gLUVOT0VOVDsKLQotCXN3aXRj aCAoYXJncy0+cGFyYW0pIHsKLQljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgot CQlyZXQgPSAtRUlOVkFMOwotCQlicmVhazsKLQljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19a RVJPTUFQOgotCQlhcmdzLT5zaXplID0gMDsKLQkJYXJncy0+dmFsdWUgPSB0ZXN0X2JpdChVQ09O VEVYVF9OT19aRVJPTUFQLCAmY3R4LT51c2VyX2ZsYWdzKTsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1 X0NPTlRFWFRfUEFSQU1fR1RUX1NJWkU6Ci0JCWFyZ3MtPnNpemUgPSAwOwotCi0JCWlmIChjdHgt PnBwZ3R0KQotCQkJYXJncy0+dmFsdWUgPSBjdHgtPnBwZ3R0LT52bS50b3RhbDsKLQkJZWxzZSBp ZiAodG9faTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dCkKLQkJCWFyZ3MtPnZhbHVlID0gdG9f aTkxNShkZXYpLT5tbS5hbGlhc2luZ19wcGd0dC0+dm0udG90YWw7Ci0JCWVsc2UKLQkJCWFyZ3Mt PnZhbHVlID0gdG9faTkxNShkZXYpLT5nZ3R0LnZtLnRvdGFsOwotCQlicmVhazsKLQljYXNlIEk5 MTVfQ09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJFOgotCQlhcmdzLT5zaXplID0gMDsKLQkJ YXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKLQkJ YnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6Ci0JCWFyZ3MtPnNpemUg PSAwOwotCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfYmFubmFibGUoY3R4KTsK LQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUkVDT1ZFUkFCTEU6Ci0JCWFyZ3Mt PnNpemUgPSAwOwotCQlhcmdzLT52YWx1ZSA9IGk5MTVfZ2VtX2NvbnRleHRfaXNfcmVjb3ZlcmFi bGUoY3R4KTsKLQkJYnJlYWs7Ci0JY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6Ci0J CWFyZ3MtPnNpemUgPSAwOwotCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHkgPj4g STkxNV9VU0VSX1BSSU9SSVRZX1NISUZUOwotCQlicmVhazsKLQljYXNlIEk5MTVfQ09OVEVYVF9Q QVJBTV9TU0VVOgotCQlyZXQgPSBnZXRfc3NldShjdHgsIGFyZ3MpOwotCQlicmVhazsKLQljYXNl IEk5MTVfQ09OVEVYVF9QQVJBTV9WTToKLQkJcmV0ID0gZ2V0X3BwZ3R0KGN0eCwgYXJncyk7Ci0J CWJyZWFrOwotCWRlZmF1bHQ6Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWJyZWFrOwotCX0KLQotCWk5 MTVfZ2VtX2NvbnRleHRfcHV0KGN0eCk7Ci0JcmV0dXJuIHJldDsKLX0KLQogc3RhdGljIGludCBn ZW44X2VtaXRfcnBjc19jb25maWcoc3RydWN0IGk5MTVfcmVxdWVzdCAqcnEsCiAJCQkJIHN0cnVj dCBpbnRlbF9jb250ZXh0ICpjZSwKIAkJCQkgc3RydWN0IGludGVsX3NzZXUgc3NldSkKQEAgLTE1 ODQsMTggKzEzOTQsMTEgQEAgc3RhdGljIGludCBzZXRfc3NldShzdHJ1Y3QgaTkxNV9nZW1fY29u dGV4dCAqY3R4LAogCXJldHVybiAwOwogfQogCi1pbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJh bV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAotCQkJCSAgICBzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbGUpCitzdGF0aWMgaW50IGN0eF9zZXRwYXJhbShzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAorCQkJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X3BhcmFtICph cmdzKQogewotCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUt PmRyaXZlcl9wcml2OwotCXN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSAqYXJncyA9 IGRhdGE7Ci0Jc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKIAlpbnQgcmV0ID0gMDsKIAot CWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVfcHJpdiwgYXJncy0+Y3R4X2lkKTsK LQlpZiAoIWN0eCkKLQkJcmV0dXJuIC1FTk9FTlQ7Ci0KIAlzd2l0Y2ggKGFyZ3MtPnBhcmFtKSB7 CiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01BUDoKIAkJaWYgKGFyZ3MtPnNpemUp CkBAIC0xNjA1LDYgKzE0MDgsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9zZXRwYXJhbV9pb2N0 bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQllbHNlCiAJCQljbGVhcl9i aXQoVUNPTlRFWFRfTk9fWkVST01BUCwgJmN0eC0+dXNlcl9mbGFncyk7CiAJCWJyZWFrOworCiAJ Y2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fRVJST1JfQ0FQVFVSRToKIAkJaWYgKGFyZ3MtPnNp emUpCiAJCQlyZXQgPSAtRUlOVkFMOwpAQCAtMTYxMyw2ICsxNDE3LDcgQEAgaW50IGk5MTVfZ2Vt X2NvbnRleHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKIAkJZWxzZQogCQkJaTkxNV9nZW1fY29udGV4dF9jbGVhcl9ub19lcnJvcl9jYXB0dXJlKGN0 eCk7CiAJCWJyZWFrOworCiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOTkFCTEU6CiAJCWlm IChhcmdzLT5zaXplKQogCQkJcmV0ID0gLUVJTlZBTDsKQEAgLTE2MzksNyArMTQ0NCw3IEBAIGlu dCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCiAKIAkJCWlmIChhcmdzLT5zaXplKQogCQkJCXJldCA9IC1FSU5WQUw7Ci0J CQllbHNlIGlmICghKHRvX2k5MTUoZGV2KS0+Y2Fwcy5zY2hlZHVsZXIgJiBJOTE1X1NDSEVEVUxF Ul9DQVBfUFJJT1JJVFkpKQorCQkJZWxzZSBpZiAoIShjdHgtPmk5MTUtPmNhcHMuc2NoZWR1bGVy ICYgSTkxNV9TQ0hFRFVMRVJfQ0FQX1BSSU9SSVRZKSkKIAkJCQlyZXQgPSAtRU5PREVWOwogCQkJ ZWxzZSBpZiAocHJpb3JpdHkgPiBJOTE1X0NPTlRFWFRfTUFYX1VTRVJfUFJJT1JJVFkgfHwKIAkJ CQkgcHJpb3JpdHkgPCBJOTE1X0NPTlRFWFRfTUlOX1VTRVJfUFJJT1JJVFkpCkBAIC0xNjY3LDYg KzE0NzIsMjU1IEBAIGludCBpOTE1X2dlbV9jb250ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJCWJyZWFrOwogCX0KIAorCXJldHVybiByZXQ7 Cit9CisKK3N0cnVjdCBjcmVhdGVfZXh0IHsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 OworCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZwcml2OworfTsKKworc3RhdGljIGlu dCBjcmVhdGVfc2V0cGFyYW0oc3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gX191c2VyICpleHQs IHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRf c2V0cGFyYW0gbG9jYWw7CisJY29uc3Qgc3RydWN0IGNyZWF0ZV9leHQgKmFyZyA9IGRhdGE7CisK KwlpZiAoY29weV9mcm9tX3VzZXIoJmxvY2FsLCBleHQsIHNpemVvZihsb2NhbCkpKQorCQlyZXR1 cm4gLUVGQVVMVDsKKworCWlmIChsb2NhbC5wYXJhbS5jdHhfaWQpCisJCXJldHVybiAtRUlOVkFM OworCisJcmV0dXJuIGN0eF9zZXRwYXJhbShhcmctPmN0eCwgJmxvY2FsLnBhcmFtKTsKK30KKwor c3RhdGljIGNvbnN0IGk5MTVfdXNlcl9leHRlbnNpb25fZm4gY3JlYXRlX2V4dGVuc2lvbnNbXSA9 IHsKKwlbSTkxNV9DT05URVhUX0NSRUFURV9FWFRfU0VUUEFSQU1dID0gY3JlYXRlX3NldHBhcmFt LAorfTsKKworc3RhdGljIGJvb2wgY2xpZW50X2lzX2Jhbm5lZChzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmaWxlX3ByaXYpCit7CisJcmV0dXJuIGF0b21pY19yZWFkKCZmaWxlX3ByaXYt PmJhbl9zY29yZSkgPj0gSTkxNV9DTElFTlRfU0NPUkVfQkFOTkVEOworfQorCitpbnQgaTkxNV9n ZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0 YSwKKwkJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRf Y3JlYXRlX2V4dCAqYXJncyA9IGRhdGE7CisJc3RydWN0IGNyZWF0ZV9leHQgZXh0X2RhdGE7CisJ aW50IHJldDsKKworCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19sb2dpY2FsX2NvbnRleHRz KQorCQlyZXR1cm4gLUVOT0RFVjsKKworCWlmIChhcmdzLT5mbGFncyAmIEk5MTVfQ09OVEVYVF9D UkVBVEVfRkxBR1NfVU5LTk9XTikKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlyZXQgPSBpOTE1X3Rl cm1pbmFsbHlfd2VkZ2VkKGk5MTUpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlleHRf ZGF0YS5mcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OworCWlmIChjbGllbnRfaXNfYmFubmVkKGV4 dF9kYXRhLmZwcml2KSkgeworCQlEUk1fREVCVUcoImNsaWVudCAlc1slZF0gYmFubmVkIGZyb20g Y3JlYXRpbmcgY3R4XG4iLAorCQkJICBjdXJyZW50LT5jb21tLAorCQkJICBwaWRfbnIoZ2V0X3Rh c2tfcGlkKGN1cnJlbnQsIFBJRFRZUEVfUElEKSkpOworCQlyZXR1cm4gLUVJTzsKKwl9CisKKwly ZXQgPSBpOTE1X211dGV4X2xvY2tfaW50ZXJydXB0aWJsZShkZXYpOworCWlmIChyZXQpCisJCXJl dHVybiByZXQ7CisKKwlleHRfZGF0YS5jdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1 KTsKKwltdXRleF91bmxvY2soJmRldi0+c3RydWN0X211dGV4KTsKKwlpZiAoSVNfRVJSKGV4dF9k YXRhLmN0eCkpCisJCXJldHVybiBQVFJfRVJSKGV4dF9kYXRhLmN0eCk7CisKKwlpZiAoYXJncy0+ ZmxhZ3MgJiBJOTE1X0NPTlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TKSB7CisJCXJl dCA9IGk5MTVfdXNlcl9leHRlbnNpb25zKHU2NF90b191c2VyX3B0cihhcmdzLT5leHRlbnNpb25z KSwKKwkJCQkJICAgY3JlYXRlX2V4dGVuc2lvbnMsCisJCQkJCSAgIEFSUkFZX1NJWkUoY3JlYXRl X2V4dGVuc2lvbnMpLAorCQkJCQkgICAmZXh0X2RhdGEpOworCQlpZiAocmV0KQorCQkJZ290byBl cnJfY3R4OworCX0KKworCXJldCA9IGdlbV9jb250ZXh0X3JlZ2lzdGVyKGV4dF9kYXRhLmN0eCwg ZXh0X2RhdGEuZnByaXYpOworCWlmIChyZXQpCisJCWdvdG8gZXJyX2N0eDsKKworCWFyZ3MtPmN0 eF9pZCA9IGV4dF9kYXRhLmN0eC0+dXNlcl9oYW5kbGU7CisJRFJNX0RFQlVHKCJIVyBjb250ZXh0 ICVkIGNyZWF0ZWRcbiIsIGFyZ3MtPmN0eF9pZCk7CisKKwlyZXR1cm4gMDsKKworZXJyX2N0eDoK KwltdXRleF9sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisJY29udGV4dF9jbG9zZShleHRfZGF0 YS5jdHgpOworCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOworCXJldHVybiByZXQ7 Cit9CisKK2ludCBpOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3lfaW9jdGwoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJ c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3kgKmFyZ3MgPSBkYXRhOworCXN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2Owor CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7CisJaW50IHJldDsKKworCWlmIChhcmdzLT5w YWQgIT0gMCkKKwkJcmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoYXJncy0+Y3R4X2lkID09IERFRkFV TFRfQ09OVEVYVF9IQU5ETEUpCisJCXJldHVybiAtRU5PRU5UOworCisJY3R4ID0gaTkxNV9nZW1f Y29udGV4dF9sb29rdXAoZmlsZV9wcml2LCBhcmdzLT5jdHhfaWQpOworCWlmICghY3R4KQorCQly ZXR1cm4gLUVOT0VOVDsKKworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZGV2LT5z dHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCWdvdG8gb3V0OworCisJaWRyX3JlbW92ZSgmZmls ZV9wcml2LT5jb250ZXh0X2lkciwgY3R4LT51c2VyX2hhbmRsZSk7CisJY29udGV4dF9jbG9zZShj dHgpOworCisJbXV0ZXhfdW5sb2NrKCZkZXYtPnN0cnVjdF9tdXRleCk7CisKK291dDoKKwlpOTE1 X2dlbV9jb250ZXh0X3B1dChjdHgpOworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGdldF9z c2V1KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCisJCSAgICBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0 X3BhcmFtX3NzZXUgdXNlcl9zc2V1OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK KwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2U7CisKKwlpZiAoYXJncy0+c2l6ZSA9PSAwKQorCQln b3RvIG91dDsKKwllbHNlIGlmIChhcmdzLT5zaXplIDwgc2l6ZW9mKHVzZXJfc3NldSkpCisJCXJl dHVybiAtRUlOVkFMOworCisJaWYgKGNvcHlfZnJvbV91c2VyKCZ1c2VyX3NzZXUsIHU2NF90b191 c2VyX3B0cihhcmdzLT52YWx1ZSksCisJCQkgICBzaXplb2YodXNlcl9zc2V1KSkpCisJCXJldHVy biAtRUZBVUxUOworCisJaWYgKHVzZXJfc3NldS5mbGFncyB8fCB1c2VyX3NzZXUucnN2ZCkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwllbmdpbmUgPSBpbnRlbF9lbmdpbmVfbG9va3VwX3VzZXIoY3R4 LT5pOTE1LAorCQkJCQkgIHVzZXJfc3NldS5lbmdpbmVfY2xhc3MsCisJCQkJCSAgdXNlcl9zc2V1 LmVuZ2luZV9pbnN0YW5jZSk7CisJaWYgKCFlbmdpbmUpCisJCXJldHVybiAtRUlOVkFMOworCisJ Y2UgPSBpbnRlbF9jb250ZXh0X3Bpbl9sb2NrKGN0eCwgZW5naW5lKTsgLyogc2VyaWFsaXNlcyB3 aXRoIHNldF9zc2V1ICovCisJaWYgKElTX0VSUihjZSkpCisJCXJldHVybiBQVFJfRVJSKGNlKTsK KworCXVzZXJfc3NldS5zbGljZV9tYXNrID0gY2UtPnNzZXUuc2xpY2VfbWFzazsKKwl1c2VyX3Nz ZXUuc3Vic2xpY2VfbWFzayA9IGNlLT5zc2V1LnN1YnNsaWNlX21hc2s7CisJdXNlcl9zc2V1Lm1p bl9ldXNfcGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWluX2V1c19wZXJfc3Vic2xpY2U7CisJdXNl cl9zc2V1Lm1heF9ldXNfcGVyX3N1YnNsaWNlID0gY2UtPnNzZXUubWF4X2V1c19wZXJfc3Vic2xp Y2U7CisKKwlpbnRlbF9jb250ZXh0X3Bpbl91bmxvY2soY2UpOworCisJaWYgKGNvcHlfdG9fdXNl cih1NjRfdG9fdXNlcl9wdHIoYXJncy0+dmFsdWUpLCAmdXNlcl9zc2V1LAorCQkJIHNpemVvZih1 c2VyX3NzZXUpKSkKKwkJcmV0dXJuIC1FRkFVTFQ7CisKK291dDoKKwlhcmdzLT5zaXplID0gc2l6 ZW9mKHVzZXJfc3NldSk7CisKKwlyZXR1cm4gMDsKK30KKworaW50IGk5MTVfZ2VtX2NvbnRleHRf Z2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCQkg ICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZh dGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0cnVjdCBkcm1faTkxNV9nZW1f Y29udGV4dF9wYXJhbSAqYXJncyA9IGRhdGE7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eDsKKwlpbnQgcmV0ID0gMDsKKworCWN0eCA9IGk5MTVfZ2VtX2NvbnRleHRfbG9va3VwKGZpbGVf cHJpdiwgYXJncy0+Y3R4X2lkKTsKKwlpZiAoIWN0eCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlz d2l0Y2ggKGFyZ3MtPnBhcmFtKSB7CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fTk9fWkVST01B UDoKKwkJYXJncy0+c2l6ZSA9IDA7CisJCWFyZ3MtPnZhbHVlID0gdGVzdF9iaXQoVUNPTlRFWFRf Tk9fWkVST01BUCwgJmN0eC0+dXNlcl9mbGFncyk7CisJCWJyZWFrOworCisJY2FzZSBJOTE1X0NP TlRFWFRfUEFSQU1fR1RUX1NJWkU6CisJCWFyZ3MtPnNpemUgPSAwOworCQlpZiAoY3R4LT5wcGd0 dCkKKwkJCWFyZ3MtPnZhbHVlID0gY3R4LT5wcGd0dC0+dm0udG90YWw7CisJCWVsc2UgaWYgKHRv X2k5MTUoZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQpCisJCQlhcmdzLT52YWx1ZSA9IHRvX2k5MTUo ZGV2KS0+bW0uYWxpYXNpbmdfcHBndHQtPnZtLnRvdGFsOworCQllbHNlCisJCQlhcmdzLT52YWx1 ZSA9IHRvX2k5MTUoZGV2KS0+Z2d0dC52bS50b3RhbDsKKwkJYnJlYWs7CisKKwljYXNlIEk5MTVf Q09OVEVYVF9QQVJBTV9OT19FUlJPUl9DQVBUVVJFOgorCQlhcmdzLT5zaXplID0gMDsKKwkJYXJn cy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X25vX2Vycm9yX2NhcHR1cmUoY3R4KTsKKwkJYnJl YWs7CisKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9CQU5OQUJMRToKKwkJYXJncy0+c2l6ZSA9 IDA7CisJCWFyZ3MtPnZhbHVlID0gaTkxNV9nZW1fY29udGV4dF9pc19iYW5uYWJsZShjdHgpOwor CQlicmVhazsKKworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1JFQ09WRVJBQkxFOgorCQlhcmdz LT5zaXplID0gMDsKKwkJYXJncy0+dmFsdWUgPSBpOTE1X2dlbV9jb250ZXh0X2lzX3JlY292ZXJh YmxlKGN0eCk7CisJCWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fUFJJT1JJVFk6 CisJCWFyZ3MtPnNpemUgPSAwOworCQlhcmdzLT52YWx1ZSA9IGN0eC0+c2NoZWQucHJpb3JpdHkg Pj4gSTkxNV9VU0VSX1BSSU9SSVRZX1NISUZUOworCQlicmVhazsKKworCWNhc2UgSTkxNV9DT05U RVhUX1BBUkFNX1NTRVU6CisJCXJldCA9IGdldF9zc2V1KGN0eCwgYXJncyk7CisJCWJyZWFrOwor CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06CisJCXJldCA9IGdldF9wcGd0dChjdHgsIGFy Z3MpOworCQlicmVhazsKKworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6CisJ ZGVmYXVsdDoKKwkJcmV0ID0gLUVJTlZBTDsKKwkJYnJlYWs7CisJfQorCisJaTkxNV9nZW1fY29u dGV4dF9wdXQoY3R4KTsKKwlyZXR1cm4gcmV0OworfQorCitpbnQgaTkxNV9nZW1fY29udGV4dF9z ZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJCSAg ICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0 ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0IGRybV9pOTE1X2dlbV9j b250ZXh0X3BhcmFtICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4 OworCWludCByZXQ7CisKKwljdHggPSBpOTE1X2dlbV9jb250ZXh0X2xvb2t1cChmaWxlX3ByaXYs IGFyZ3MtPmN0eF9pZCk7CisJaWYgKCFjdHgpCisJCXJldHVybiAtRU5PRU5UOworCisJcmV0ID0g Y3R4X3NldHBhcmFtKGN0eCwgYXJncyk7CisKIAlpOTE1X2dlbV9jb250ZXh0X3B1dChjdHgpOwog CXJldHVybiByZXQ7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgg Yi9pbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKaW5kZXggOWFmN2E4ZTZhNDZlLi5kNDViNzk3 NDZmYzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAorKysgYi9pbmNs dWRlL3VhcGkvZHJtL2k5MTVfZHJtLmgKQEAgLTM5NCw2ICszOTQsNyBAQCB0eXBlZGVmIHN0cnVj dCBfZHJtX2k5MTVfc2FyZWEgewogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRVRfU1BSSVRFX0NP TE9SS0VZIERSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRVRfU1BSSVRFX0NP TE9SS0VZLCBzdHJ1Y3QgZHJtX2ludGVsX3Nwcml0ZV9jb2xvcmtleSkKICNkZWZpbmUgRFJNX0lP Q1RMX0k5MTVfR0VNX1dBSVQJCURSTV9JT1dSKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9H RU1fV0FJVCwgc3RydWN0IGRybV9pOTE1X2dlbV93YWl0KQogI2RlZmluZSBEUk1fSU9DVExfSTkx NV9HRU1fQ09OVEVYVF9DUkVBVEUJRFJNX0lPV1IgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkx NV9HRU1fQ09OVEVYVF9DUkVBVEUsIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUp CisjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0dFTV9DT05URVhUX0NSRUFURV9FWFQJRFJNX0lPV1Ig KERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9HRU1fQ09OVEVYVF9DUkVBVEUsIHN0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0KQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9H RU1fQ09OVEVYVF9ERVNUUk9ZCURSTV9JT1cgKERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9H RU1fQ09OVEVYVF9ERVNUUk9ZLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSkK ICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUkVHX1JFQUQJCQlEUk1fSU9XUiAoRFJNX0NPTU1BTkRf QkFTRSArIERSTV9JOTE1X1JFR19SRUFELCBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQpCiAjZGVm aW5lIERSTV9JT0NUTF9JOTE1X0dFVF9SRVNFVF9TVEFUUwkJRFJNX0lPV1IgKERSTV9DT01NQU5E X0JBU0UgKyBEUk1fSTkxNV9HRVRfUkVTRVRfU1RBVFMsIHN0cnVjdCBkcm1faTkxNV9yZXNldF9z dGF0cykKQEAgLTE0NDcsOTIgKzE0NDgsMTcgQEAgc3RydWN0IGRybV9pOTE1X2dlbV93YWl0IHsK IH07CiAKIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGUgewotCS8qICBvdXRwdXQ6 IGlkIG9mIG5ldyBjb250ZXh0Ki8KLQlfX3UzMiBjdHhfaWQ7Ci0JX191MzIgcGFkOwotfTsKLQot c3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2Rlc3Ryb3kgewotCV9fdTMyIGN0eF9pZDsKLQlf X3UzMiBwYWQ7Ci19OwotCi0vKgotICogRFJNX0k5MTVfR0VNX1ZNX0NSRUFURSAtCi0gKgotICog Q3JlYXRlIGEgbmV3IHZpcnR1YWwgbWVtb3J5IGFkZHJlc3Mgc3BhY2UgKHBwR1RUKSBmb3IgdXNl IHdpdGhpbiBhIGNvbnRleHQKLSAqIG9uIHRoZSBzYW1lIGZpbGUuIEV4dGVuc2lvbnMgY2FuIGJl IHByb3ZpZGVkIHRvIGNvbmZpZ3VyZSBleGFjdGx5IGhvdyB0aGUKLSAqIGFkZHJlc3Mgc3BhY2Ug aXMgc2V0dXAgdXBvbiBjcmVhdGlvbi4KLSAqCi0gKiBUaGUgaWQgb2YgbmV3IFZNIChib3VuZCB0 byB0aGUgZmQpIGZvciB1c2Ugd2l0aCBJOTE1X0NPTlRFWFRfUEFSQU1fVk0gaXMKLSAqIHJldHVy bmVkIGluIHRoZSBvdXRwYXJhbSBAdm1faWQuCi0gKgotICogTm8gZmxhZ3MgYXJlIGRlZmluZWQs IHdpdGggYWxsIGJpdHMgcmVzZXJ2ZWQgYW5kIG11c3QgYmUgemVyby4KLSAqCi0gKiBBbiBleHRl bnNpb24gY2hhaW4gbWF5YmUgcHJvdmlkZWQsIHN0YXJ0aW5nIHdpdGggQGV4dGVuc2lvbnMsIGFu ZCB0ZXJtaW5hdGVkCi0gKiBieSB0aGUgQG5leHRfZXh0ZW5zaW9uIGJlaW5nIDAuIEN1cnJlbnRs eSwgbm8gZXh0ZW5zaW9ucyBhcmUgZGVmaW5lZC4KLSAqCi0gKiBEUk1fSTkxNV9HRU1fVk1fREVT VFJPWSAtCi0gKgotICogRGVzdHJveXMgYSBwcmV2aW91c2x5IGNyZWF0ZWQgVk0gaWQsIHNwZWNp ZmllZCBpbiBAdm1faWQuCi0gKgotICogTm8gZXh0ZW5zaW9ucyBvciBmbGFncyBhcmUgYWxsb3dl ZCBjdXJyZW50bHksIGFuZCBzbyBtdXN0IGJlIHplcm8uCi0gKi8KLXN0cnVjdCBkcm1faTkxNV9n ZW1fdm1fY29udHJvbCB7Ci0JX191NjQgZXh0ZW5zaW9uczsKLQlfX3UzMiBmbGFnczsKLQlfX3Uz MiB2bV9pZDsKLX07Ci0KLXN0cnVjdCBkcm1faTkxNV9yZWdfcmVhZCB7Ci0JLyoKLQkgKiBSZWdp c3RlciBvZmZzZXQuCi0JICogRm9yIDY0Yml0IHdpZGUgcmVnaXN0ZXJzIHdoZXJlIHRoZSB1cHBl ciAzMmJpdHMgZG9uJ3QgaW1tZWRpYXRlbHkKLQkgKiBmb2xsb3cgdGhlIGxvd2VyIDMyYml0cywg dGhlIG9mZnNldCBvZiB0aGUgbG93ZXIgMzJiaXRzIG11c3QKLQkgKiBiZSBzcGVjaWZpZWQKLQkg Ki8KLQlfX3U2NCBvZmZzZXQ7Ci0jZGVmaW5lIEk5MTVfUkVHX1JFQURfOEJfV0EgKDF1bCA8PCAw KQotCi0JX191NjQgdmFsOyAvKiBSZXR1cm4gdmFsdWUgKi8KLX07Ci0vKiBLbm93biByZWdpc3Rl cnM6Ci0gKgotICogUmVuZGVyIGVuZ2luZSB0aW1lc3RhbXAgLSAweDIzNTggKyA2NGJpdCAtIGdl bjcrCi0gKiAtIE5vdGUgdGhpcyByZWdpc3RlciByZXR1cm5zIGFuIGludmFsaWQgdmFsdWUgaWYg dXNpbmcgdGhlIGRlZmF1bHQKLSAqICAgc2luZ2xlIGluc3RydWN0aW9uIDhieXRlIHJlYWQsIGlu IG9yZGVyIHRvIHdvcmthcm91bmQgdGhhdCBwYXNzCi0gKiAgIGZsYWcgSTkxNV9SRUdfUkVBRF84 Ql9XQSBpbiBvZmZzZXQgZmllbGQuCi0gKgotICovCi0KLXN0cnVjdCBkcm1faTkxNV9yZXNldF9z dGF0cyB7Ci0JX191MzIgY3R4X2lkOwotCV9fdTMyIGZsYWdzOwotCi0JLyogQWxsIHJlc2V0cyBz aW5jZSBib290L21vZHVsZSByZWxvYWQsIGZvciBhbGwgY29udGV4dHMgKi8KLQlfX3UzMiByZXNl dF9jb3VudDsKLQotCS8qIE51bWJlciBvZiBiYXRjaGVzIGxvc3Qgd2hlbiBhY3RpdmUgaW4gR1BV LCBmb3IgdGhpcyBjb250ZXh0ICovCi0JX191MzIgYmF0Y2hfYWN0aXZlOwotCi0JLyogTnVtYmVy IG9mIGJhdGNoZXMgbG9zdCBwZW5kaW5nIGZvciBleGVjdXRpb24sIGZvciB0aGlzIGNvbnRleHQg Ki8KLQlfX3UzMiBiYXRjaF9wZW5kaW5nOwotCisJX191MzIgY3R4X2lkOyAvKiBvdXRwdXQ6IGlk IG9mIG5ldyBjb250ZXh0Ki8KIAlfX3UzMiBwYWQ7CiB9OwogCi1zdHJ1Y3QgZHJtX2k5MTVfZ2Vt X3VzZXJwdHIgewotCV9fdTY0IHVzZXJfcHRyOwotCV9fdTY0IHVzZXJfc2l6ZTsKK3N0cnVjdCBk cm1faTkxNV9nZW1fY29udGV4dF9jcmVhdGVfZXh0IHsKKwlfX3UzMiBjdHhfaWQ7IC8qIG91dHB1 dDogaWQgb2YgbmV3IGNvbnRleHQqLwogCV9fdTMyIGZsYWdzOwotI2RlZmluZSBJOTE1X1VTRVJQ VFJfUkVBRF9PTkxZIDB4MQotI2RlZmluZSBJOTE1X1VTRVJQVFJfVU5TWU5DSFJPTklaRUQgMHg4 MDAwMDAwMAotCS8qKgotCSAqIFJldHVybmVkIGhhbmRsZSBmb3IgdGhlIG9iamVjdC4KLQkgKgot CSAqIE9iamVjdCBoYW5kbGVzIGFyZSBub256ZXJvLgotCSAqLwotCV9fdTMyIGhhbmRsZTsKKyNk ZWZpbmUgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VU0VfRVhURU5TSU9OUwkoMXUgPDwgMCkK KyNkZWZpbmUgSTkxNV9DT05URVhUX0NSRUFURV9GTEFHU19VTktOT1dOIFwKKwkoLShJOTE1X0NP TlRFWFRfQ1JFQVRFX0ZMQUdTX1VTRV9FWFRFTlNJT05TIDw8IDEpKQorCV9fdTY0IGV4dGVuc2lv bnM7CiB9OwogCiBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gewpAQCAtMTY0OCw2 ICsxNTc0LDk2IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbV9zc2V1IHsKIAlf X3UzMiByc3ZkOwogfTsKIAorc3RydWN0IGRybV9pOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9leHRf c2V0cGFyYW0geworI2RlZmluZSBJOTE1X0NPTlRFWFRfQ1JFQVRFX0VYVF9TRVRQQVJBTSAwCisJ c3RydWN0IGk5MTVfdXNlcl9leHRlbnNpb24gYmFzZTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2Nv bnRleHRfcGFyYW0gcGFyYW07Cit9OworCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVz dHJveSB7CisJX191MzIgY3R4X2lkOworCV9fdTMyIHBhZDsKK307CisKKy8qCisgKiBEUk1fSTkx NV9HRU1fVk1fQ1JFQVRFIC0KKyAqCisgKiBDcmVhdGUgYSBuZXcgdmlydHVhbCBtZW1vcnkgYWRk cmVzcyBzcGFjZSAocHBHVFQpIGZvciB1c2Ugd2l0aGluIGEgY29udGV4dAorICogb24gdGhlIHNh bWUgZmlsZS4gRXh0ZW5zaW9ucyBjYW4gYmUgcHJvdmlkZWQgdG8gY29uZmlndXJlIGV4YWN0bHkg aG93IHRoZQorICogYWRkcmVzcyBzcGFjZSBpcyBzZXR1cCB1cG9uIGNyZWF0aW9uLgorICoKKyAq IFRoZSBpZCBvZiBuZXcgVk0gKGJvdW5kIHRvIHRoZSBmZCkgZm9yIHVzZSB3aXRoIEk5MTVfQ09O VEVYVF9QQVJBTV9WTSBpcworICogcmV0dXJuZWQgaW4gdGhlIG91dHBhcmFtIEBpZC4KKyAqCisg KiBObyBmbGFncyBhcmUgZGVmaW5lZCwgd2l0aCBhbGwgYml0cyByZXNlcnZlZCBhbmQgbXVzdCBi ZSB6ZXJvLgorICoKKyAqIEFuIGV4dGVuc2lvbiBjaGFpbiBtYXliZSBwcm92aWRlZCwgc3RhcnRp bmcgd2l0aCBAZXh0ZW5zaW9ucywgYW5kIHRlcm1pbmF0ZWQKKyAqIGJ5IHRoZSBAbmV4dF9leHRl bnNpb24gYmVpbmcgMC4gQ3VycmVudGx5LCBubyBleHRlbnNpb25zIGFyZSBkZWZpbmVkLgorICoK KyAqIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZIC0KKyAqCisgKiBEZXN0cm95cyBhIHByZXZpb3Vz bHkgY3JlYXRlZCBWTSBpZCwgc3BlY2lmaWVkIGluIEBpZC4KKyAqCisgKiBObyBleHRlbnNpb25z IG9yIGZsYWdzIGFyZSBhbGxvd2VkIGN1cnJlbnRseSwgYW5kIHNvIG11c3QgYmUgemVyby4KKyAq Lworc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sIHsKKwlfX3U2NCBleHRlbnNpb25zOwor CV9fdTMyIGZsYWdzOworCV9fdTMyIHZtX2lkOworfTsKKworc3RydWN0IGRybV9pOTE1X3JlZ19y ZWFkIHsKKwkvKgorCSAqIFJlZ2lzdGVyIG9mZnNldC4KKwkgKiBGb3IgNjRiaXQgd2lkZSByZWdp c3RlcnMgd2hlcmUgdGhlIHVwcGVyIDMyYml0cyBkb24ndCBpbW1lZGlhdGVseQorCSAqIGZvbGxv dyB0aGUgbG93ZXIgMzJiaXRzLCB0aGUgb2Zmc2V0IG9mIHRoZSBsb3dlciAzMmJpdHMgbXVzdAor CSAqIGJlIHNwZWNpZmllZAorCSAqLworCV9fdTY0IG9mZnNldDsKKyNkZWZpbmUgSTkxNV9SRUdf UkVBRF84Ql9XQSAoMXVsIDw8IDApCisKKwlfX3U2NCB2YWw7IC8qIFJldHVybiB2YWx1ZSAqLwor fTsKKworLyogS25vd24gcmVnaXN0ZXJzOgorICoKKyAqIFJlbmRlciBlbmdpbmUgdGltZXN0YW1w IC0gMHgyMzU4ICsgNjRiaXQgLSBnZW43KworICogLSBOb3RlIHRoaXMgcmVnaXN0ZXIgcmV0dXJu cyBhbiBpbnZhbGlkIHZhbHVlIGlmIHVzaW5nIHRoZSBkZWZhdWx0CisgKiAgIHNpbmdsZSBpbnN0 cnVjdGlvbiA4Ynl0ZSByZWFkLCBpbiBvcmRlciB0byB3b3JrYXJvdW5kIHRoYXQgcGFzcworICog ICBmbGFnIEk5MTVfUkVHX1JFQURfOEJfV0EgaW4gb2Zmc2V0IGZpZWxkLgorICoKKyAqLworCitz dHJ1Y3QgZHJtX2k5MTVfcmVzZXRfc3RhdHMgeworCV9fdTMyIGN0eF9pZDsKKwlfX3UzMiBmbGFn czsKKworCS8qIEFsbCByZXNldHMgc2luY2UgYm9vdC9tb2R1bGUgcmVsb2FkLCBmb3IgYWxsIGNv bnRleHRzICovCisJX191MzIgcmVzZXRfY291bnQ7CisKKwkvKiBOdW1iZXIgb2YgYmF0Y2hlcyBs b3N0IHdoZW4gYWN0aXZlIGluIEdQVSwgZm9yIHRoaXMgY29udGV4dCAqLworCV9fdTMyIGJhdGNo X2FjdGl2ZTsKKworCS8qIE51bWJlciBvZiBiYXRjaGVzIGxvc3QgcGVuZGluZyBmb3IgZXhlY3V0 aW9uLCBmb3IgdGhpcyBjb250ZXh0ICovCisJX191MzIgYmF0Y2hfcGVuZGluZzsKKworCV9fdTMy IHBhZDsKK307CisKK3N0cnVjdCBkcm1faTkxNV9nZW1fdXNlcnB0ciB7CisJX191NjQgdXNlcl9w dHI7CisJX191NjQgdXNlcl9zaXplOworCV9fdTMyIGZsYWdzOworI2RlZmluZSBJOTE1X1VTRVJQ VFJfUkVBRF9PTkxZIDB4MQorI2RlZmluZSBJOTE1X1VTRVJQVFJfVU5TWU5DSFJPTklaRUQgMHg4 MDAwMDAwMAorCS8qKgorCSAqIFJldHVybmVkIGhhbmRsZSBmb3IgdGhlIG9iamVjdC4KKwkgKgor CSAqIE9iamVjdCBoYW5kbGVzIGFyZSBub256ZXJvLgorCSAqLworCV9fdTMyIGhhbmRsZTsKK307 CisKIGVudW0gZHJtX2k5MTVfb2FfZm9ybWF0IHsKIAlJOTE1X09BX0ZPUk1BVF9BMTMgPSAxLAkg ICAgLyogSFNXIG9ubHkgKi8KIAlJOTE1X09BX0ZPUk1BVF9BMjksCSAgICAvKiBIU1cgb25seSAq LwotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1n Zng=