From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 08/39] drm/i915: Create/destroy VM (ppGTT) for use with contexts Date: Wed, 13 Mar 2019 14:43:30 +0000 Message-ID: <20190313144401.17735-8-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 26E596E0F9 for ; Wed, 13 Mar 2019 14:45:09 +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 SW4gcHJlcGFyYXRpb24gdG8gbWFraW5nIHRoZSBwcEdUVCBiaW5kaW5nIGZvciBhIGNvbnRleHQg ZXhwbGljaXQgKHRvCmZhY2lsaXRhdGUgcmV1c2luZyB0aGUgc2FtZSBwcEdUVCBiZXR3ZWVuIGRp ZmZlcmVudCBjb250ZXh0cyksIGFsbG93IHRoZQp1c2VyIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBu YW1lZCBwcEdUVC4KCnYyOiBSZXBsYWNlIGdsb2JhbCBiYXJyaWVyIGZvciBzd2FwcGluZyBvdmVy IHRoZSBwcGd0dCBhbmQgdGxicyB3aXRoIGEKbG9jYWwgY29udGV4dCBiYXJyaWVyIChUdnJ0a28p CnYzOiBzZXJpYWxpc2Ugd2l0aCBzdHJ1Y3RfbXV0ZXg7IGl0J3MgbGF6eSBidXQgcmVxdWlyZWQg ZGFtbWl0CnY0OiBSZXdyaXRlIGlndF9jdHhfc2hhcmVkX2V4ZWMgdG8gYmUgbW9yZSBkaWZmZXJl bnQgKGFpbWVkIHRvIGJlIG1vcmUKc2ltaWxhcmx5LCB0dXJuZWQgb3V0IGRpZmZlcmVudCEpCgp2 MjogRml4IHVwIHRlc3QgdW53aW5kIGZvciBhbGlhc2luZy1wcGd0dCAoc25iKQp2MzogVGlnaHRl biBsYW5ndWFnZSBmb3IgdWFwaSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wuCnY0OiBQ YXRjaCB0aGUgY29udGV4dCBpbWFnZSBmb3IgcnVudGltZSBwcGd0dCBzd2l0Y2hpbmchCgpUZXN0 Y2FzZTogaWd0L2dlbV9jdHhfcGFyYW0vdm0KU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxj aHJpc0BjaHJpcy13aWxzb24uY28udWs+CkNjOiBUdnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3Vs aW5AaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMgICAgICAg ICAgICAgICB8ICAgMiArCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAg ICAgICAgfCAgIDMgKwogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jICAg ICAgIHwgMzIyICsrKysrKysrKysrKysrKysrLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fY29udGV4dC5oICAgICAgIHwgICA1ICsKIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jICAgICAgICAgICB8ICAzMCArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmggICAgICAgICAgIHwgIDE3ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMv aHVnZV9wYWdlcy5jICAgfCAgIDEgLQogLi4uL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9n ZW1fY29udGV4dC5jIHwgMjM3ICsrKysrKysrKystLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyB8ICAgMSAtCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvbW9ja19jb250ZXh0LmMgfCAgIDggKy0KIGluY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0u aCAgICAgICAgICAgICAgICAgICB8ICA0MyArKysKIDExIGZpbGVzIGNoYW5nZWQsIDU5NCBpbnNl cnRpb25zKCspLCA3NSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwppbmRleCAw ZDc0MzkwN2U3YmMuLjVkNTNlZmM0YzVkOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaTkxNV9kcnYuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCkBAIC0z MTIxLDYgKzMxMjEsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9pb2N0bF9kZXNjIGk5MTVf aW9jdGxzW10gPSB7CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9QRVJGX0FERF9DT05GSUcsIGk5 MTVfcGVyZl9hZGRfY29uZmlnX2lvY3RsLCBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyks CiAJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9QRVJGX1JFTU9WRV9DT05GSUcsIGk5MTVfcGVyZl9y ZW1vdmVfY29uZmlnX2lvY3RsLCBEUk1fVU5MT0NLRUR8RFJNX1JFTkRFUl9BTExPVyksCiAJRFJN X0lPQ1RMX0RFRl9EUlYoSTkxNV9RVUVSWSwgaTkxNV9xdWVyeV9pb2N0bCwgRFJNX1VOTE9DS0VE fERSTV9SRU5ERVJfQUxMT1cpLAorCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfR0VNX1ZNX0NSRUFU RSwgaTkxNV9nZW1fdm1fY3JlYXRlX2lvY3RsLCBEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1fSU9D VExfREVGX0RSVihJOTE1X0dFTV9WTV9ERVNUUk9ZLCBpOTE1X2dlbV92bV9kZXN0cm95X2lvY3Rs LCBEUk1fUkVOREVSX0FMTE9XKSwKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgZHJtX2RyaXZlciBkcml2 ZXIgPSB7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAppbmRleCBkYzYzMzAzMjI1ZmMuLjQ2NzUzNTU5 MTZmZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAorKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCkBAIC0yMTgsNiArMjE4LDkgQEAgc3RydWN0 IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSB7CiAJfSBtbTsKIAlzdHJ1Y3QgaWRyIGNvbnRleHRfaWRy OwogCisJc3RydWN0IG11dGV4IHZtX2xvY2s7CisJc3RydWN0IGlkciB2bV9pZHI7CisKIAl1bnNp Z25lZCBpbnQgYnNkX2VuZ2luZTsKIAogLyoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZ2VtX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2Nv bnRleHQuYwppbmRleCA0YWY1MWI2ODljYmQuLjcxNDY0YWU5MWQ2MSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYwpAQCAtMTIwLDEyICsxMjAsMTUgQEAgc3RhdGljIHZv aWQgbHV0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJCWxpc3RfZGVsKCZs dXQtPm9ial9saW5rKTsKIAkJaTkxNV9sdXRfaGFuZGxlX2ZyZWUobHV0KTsKIAl9CisJSU5JVF9M SVNUX0hFQUQoJmN0eC0+aGFuZGxlc19saXN0KTsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlyYWRp eF90cmVlX2Zvcl9lYWNoX3Nsb3Qoc2xvdCwgJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCAwKSB7 CiAJCXN0cnVjdCBpOTE1X3ZtYSAqdm1hID0gcmN1X2RlcmVmZXJlbmNlX3Jhdygqc2xvdCk7CiAK IAkJcmFkaXhfdHJlZV9pdGVyX2RlbGV0ZSgmY3R4LT5oYW5kbGVzX3ZtYSwgJml0ZXIsIHNsb3Qp OworCisJCXZtYS0+b3Blbl9jb3VudC0tOwogCQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3Vu bGVzc19hY3RpdmUodm1hLT5vYmopOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKQEAgLTMwNiw3 ICszMDksNyBAQCBzdGF0aWMgdm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHgpCiAJICovCiAJbHV0X2Nsb3NlKGN0eCk7CiAJaWYgKGN0eC0+cHBndHQpCi0JCWk5 MTVfcHBndHRfY2xvc2UoJmN0eC0+cHBndHQtPnZtKTsKKwkJaTkxNV9wcGd0dF9jbG9zZShjdHgt PnBwZ3R0KTsKIAogCWN0eC0+ZmlsZV9wcml2ID0gRVJSX1BUUigtRUJBREYpOwogCWk5MTVfZ2Vt X2NvbnRleHRfcHV0KGN0eCk7CkBAIC00MTcsNiArNDIwLDMyIEBAIHN0YXRpYyB2b2lkIF9fZGVz dHJveV9od19jb250ZXh0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJY29udGV4dF9j bG9zZShjdHgpOwogfQogCitzdGF0aWMgc3RydWN0IGk5MTVfaHdfcHBndHQgKgorX19zZXRfcHBn dHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwgc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0KQoreworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpvbGQgPSBjdHgtPnBwZ3R0OworCisJaTkx NV9wcGd0dF9vcGVuKHBwZ3R0KTsKKwljdHgtPnBwZ3R0ID0gaTkxNV9wcGd0dF9nZXQocHBndHQp OworCisJY3R4LT5kZXNjX3RlbXBsYXRlID0gZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGN0eC0+aTkx NSwgcHBndHQpOworCisJcmV0dXJuIG9sZDsKK30KKworc3RhdGljIHZvaWQgX19hc3NpZ25fcHBn dHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJCSAgIHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCkKK3sKKwlpZiAocHBndHQgPT0gY3R4LT5wcGd0dCkKKwkJcmV0dXJuOworCisJ cHBndHQgPSBfX3NldF9wcGd0dChjdHgsIHBwZ3R0KTsKKwlpZiAocHBndHQpIHsKKwkJaTkxNV9w cGd0dF9jbG9zZShwcGd0dCk7CisJCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKKwl9Cit9CisKIHN0 YXRpYyBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCiBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmaWxlX3ByaXYpCkBAIC00NDMsOCArNDcyLDggQEAgaTkxNV9nZW1fY3JlYXRl X2NvbnRleHQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJcmV0dXJuIEVS Ul9DQVNUKHBwZ3R0KTsKIAkJfQogCi0JCWN0eC0+cHBndHQgPSBwcGd0dDsKLQkJY3R4LT5kZXNj X3RlbXBsYXRlID0gZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGRldl9wcml2LCBwcGd0dCk7CisJCV9f YXNzaWduX3BwZ3R0KGN0eCwgcHBndHQpOworCQlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7CiAJfQog CiAJdHJhY2VfaTkxNV9jb250ZXh0X2NyZWF0ZShjdHgpOwpAQCAtNjI1LDE5ICs2NTQsMjkgQEAg c3RhdGljIGludCBjb250ZXh0X2lkcl9jbGVhbnVwKGludCBpZCwgdm9pZCAqcCwgdm9pZCAqZGF0 YSkKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCB2bV9pZHJfY2xlYW51cChpbnQgaWQsIHZv aWQgKnAsIHZvaWQgKmRhdGEpCit7CisJaTkxNV9wcGd0dF9wdXQocCk7CisJcmV0dXJuIDA7Cit9 CisKIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4oc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5 MTUsCiAJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZmls ZV9wcml2YXRlICpmaWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKIAlzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4OwogCisJbXV0ZXhfaW5pdCgmZmlsZV9wcml2LT52bV9sb2NrKTsKKwog CWlkcl9pbml0KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyKTsKKwlpZHJfaW5pdF9iYXNlKCZmaWxl X3ByaXYtPnZtX2lkciwgMSk7CiAKIAltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4 KTsKIAljdHggPSBpOTE1X2dlbV9jcmVhdGVfY29udGV4dChpOTE1LCBmaWxlX3ByaXYpOwogCW11 dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CiAJaWYgKElTX0VSUihjdHgpKSB7 CiAJCWlkcl9kZXN0cm95KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyKTsKKwkJaWRyX2Rlc3Ryb3ko JmZpbGVfcHJpdi0+dm1faWRyKTsKIAkJcmV0dXJuIFBUUl9FUlIoY3R4KTsKIAl9CiAKQEAgLTY1 NCw2ICs2OTMsODkgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X2Nsb3NlKHN0cnVjdCBkcm1fZmls ZSAqZmlsZSkKIAogCWlkcl9mb3JfZWFjaCgmZmlsZV9wcml2LT5jb250ZXh0X2lkciwgY29udGV4 dF9pZHJfY2xlYW51cCwgTlVMTCk7CiAJaWRyX2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4dF9p ZHIpOworCisJaWRyX2Zvcl9lYWNoKCZmaWxlX3ByaXYtPnZtX2lkciwgdm1faWRyX2NsZWFudXAs IE5VTEwpOworCWlkcl9kZXN0cm95KCZmaWxlX3ByaXYtPnZtX2lkcik7CisKKwltdXRleF9kZXN0 cm95KCZmaWxlX3ByaXYtPnZtX2xvY2spOworfQorCitpbnQgaTkxNV9nZW1fdm1fY3JlYXRlX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSkKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IHRvX2k5 MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgKmFyZ3MgPSBkYXRhOwor CXN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9w cml2OworCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKKwlpbnQgZXJyOworCisJaWYgKCFI QVNfRlVMTF9QUEdUVChpOTE1KSkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAoYXJncy0+Zmxh Z3MpCisJCXJldHVybiAtRUlOVkFMOworCisJaWYgKGFyZ3MtPmV4dGVuc2lvbnMpCisJCXJldHVy biAtRUlOVkFMOworCisJcHBndHQgPSBpOTE1X3BwZ3R0X2NyZWF0ZShpOTE1LCBmaWxlX3ByaXYp OworCWlmIChJU19FUlIocHBndHQpKQorCQlyZXR1cm4gUFRSX0VSUihwcGd0dCk7CisKKwllcnIg PSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmZpbGVfcHJpdi0+dm1fbG9jayk7CisJaWYgKGVy cikKKwkJZ290byBlcnJfcHV0OworCisJZXJyID0gaWRyX2FsbG9jKCZmaWxlX3ByaXYtPnZtX2lk ciwgcHBndHQsIDAsIDAsIEdGUF9LRVJORUwpOworCW11dGV4X3VubG9jaygmZmlsZV9wcml2LT52 bV9sb2NrKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBlcnJfcHV0OworCisJR0VNX0JVR19PTihl cnIgPT0gMCk7IC8qIHJlc2VydmVkIGZvciBkZWZhdWx0L3VuYXNzaWduZWQgcHBndHQgKi8KKwlw cGd0dC0+dXNlcl9oYW5kbGUgPSBlcnI7CisJYXJncy0+aWQgPSBlcnI7CisJcmV0dXJuIDA7CisK K2Vycl9wdXQ6CisJaTkxNV9wcGd0dF9wdXQocHBndHQpOworCXJldHVybiBlcnI7Cit9CisKK2lu dCBpOTE1X2dlbV92bV9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9p OTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gZmlsZS0+ZHJpdmVyX3ByaXY7CisJc3RydWN0 IGRybV9pOTE1X2dlbV92bV9jb250cm9sICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgaTkxNV9od19w cGd0dCAqcHBndHQ7CisJaW50IGVycjsKKwl1MzIgaWQ7CisKKwlpZiAoYXJncy0+ZmxhZ3MpCisJ CXJldHVybiAtRUlOVkFMOworCisJaWYgKGFyZ3MtPmV4dGVuc2lvbnMpCisJCXJldHVybiAtRUlO VkFMOworCisJaWQgPSBhcmdzLT5pZDsKKwlpZiAoIWlkKQorCQlyZXR1cm4gLUVOT0VOVDsKKwor CWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZmlsZV9wcml2LT52bV9sb2NrKTsKKwlp ZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcHBndHQgPSBpZHJfcmVtb3ZlKCZmaWxlX3ByaXYt PnZtX2lkciwgaWQpOworCWlmIChwcGd0dCkgeworCQlHRU1fQlVHX09OKCFwcGd0dC0+dXNlcl9o YW5kbGUpOworCQlwcGd0dC0+dXNlcl9oYW5kbGUgPSAwOworCX0KKworCW11dGV4X3VubG9jaygm ZmlsZV9wcml2LT52bV9sb2NrKTsKKwlpZiAoIXBwZ3R0KQorCQlyZXR1cm4gLUVOT0VOVDsKKwor CWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKKwlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHN0cnVjdCBp OTE1X3JlcXVlc3QgKgpAQCAtNjk3LDEyICs4MTksMTMgQEAgc3RhdGljIHZvaWQgY2JfcmV0aXJl KHN0cnVjdCBpOTE1X2FjdGl2ZSAqYmFzZSkKIEk5MTVfU0VMRlRFU1RfREVDTEFSRShzdGF0aWMg dW5zaWduZWQgbG9uZyBjb250ZXh0X2JhcnJpZXJfaW5qZWN0X2ZhdWx0KTsKIHN0YXRpYyBpbnQg Y29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKIAkJCQl1 bnNpZ25lZCBsb25nIGVuZ2luZXMsCisJCQkJaW50ICgqZW1pdCkoc3RydWN0IGk5MTVfcmVxdWVz dCAqcnEsIHZvaWQgKmRhdGEpLAogCQkJCXZvaWQgKCp0YXNrKSh2b2lkICpkYXRhKSwKIAkJCQl2 b2lkICpkYXRhKQogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gY3R4LT5pOTE1 OwogCXN0cnVjdCBjb250ZXh0X2JhcnJpZXJfdGFzayAqY2I7Ci0Jc3RydWN0IGludGVsX2NvbnRl eHQgKmNlOworCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSwgKm5leHQ7CiAJaW50ZWxfd2FrZXJl Zl90IHdha2VyZWY7CiAJaW50IGVyciA9IDA7CiAKQEAgLTcxNywxMSArODQwLDExIEBAIHN0YXRp YyBpbnQgY29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwK IAlpOTE1X2FjdGl2ZV9hY3F1aXJlKCZjYi0+YmFzZSk7CiAKIAl3YWtlcmVmID0gaW50ZWxfcnVu dGltZV9wbV9nZXQoaTkxNSk7Ci0JbGlzdF9mb3JfZWFjaF9lbnRyeShjZSwgJmN0eC0+YWN0aXZl X2VuZ2luZXMsIGFjdGl2ZV9saW5rKSB7CisJcmJ0cmVlX3Bvc3RvcmRlcl9mb3JfZWFjaF9lbnRy eV9zYWZlKGNlLCBuZXh0LCAmY3R4LT5od19jb250ZXh0cywgbm9kZSkgewogCQlzdHJ1Y3QgaW50 ZWxfZW5naW5lX2NzICplbmdpbmUgPSBjZS0+ZW5naW5lOwogCQlzdHJ1Y3QgaTkxNV9yZXF1ZXN0 ICpycTsKIAotCQlpZiAoIShjZS0+ZW5naW5lLT5tYXNrICYgZW5naW5lcykpCisJCWlmICghKGVu Z2luZS0+bWFzayAmIGVuZ2luZXMpKQogCQkJY29udGludWU7CiAKIAkJaWYgKEk5MTVfU0VMRlRF U1RfT05MWShjb250ZXh0X2JhcnJpZXJfaW5qZWN0X2ZhdWx0ICYKQEAgLTczNiw3ICs4NTksMTIg QEAgc3RhdGljIGludCBjb250ZXh0X2JhcnJpZXJfdGFzayhzdHJ1Y3QgaTkxNV9nZW1fY29udGV4 dCAqY3R4LAogCQkJYnJlYWs7CiAJCX0KIAotCQllcnIgPSBpOTE1X2FjdGl2ZV9yZWYoJmNiLT5i YXNlLCBycS0+ZmVuY2UuY29udGV4dCwgcnEpOworCQllcnIgPSAwOworCQlpZiAoZW1pdCkKKwkJ CWVyciA9IGVtaXQocnEsIGRhdGEpOworCQlpZiAoZXJyID09IDApCisJCQllcnIgPSBpOTE1X2Fj dGl2ZV9yZWYoJmNiLT5iYXNlLCBycS0+ZmVuY2UuY29udGV4dCwgcnEpOworCiAJCWk5MTVfcmVx dWVzdF9hZGQocnEpOwogCQlpZiAoZXJyKQogCQkJYnJlYWs7CkBAIC03OTksNiArOTI3LDE3MyBA QCBpbnQgaTkxNV9nZW1fc3dpdGNoX3RvX2tlcm5lbF9jb250ZXh0KHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICppOTE1LAogCXJldHVybiAwOwogfQogCitzdGF0aWMgaW50IGdldF9wcGd0dChzdHJ1 Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4LAorCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29u dGV4dF9wYXJhbSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxl X3ByaXYgPSBjdHgtPmZpbGVfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7CisJ aW50IHJldDsKKworCWlmICghY3R4LT5wcGd0dCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwkvKiBY WFggcmN1IGFjcXVpcmU/ICovCisJcmV0ID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgt Pmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlmIChyZXQpCisJCXJldHVybiByZXQ7CisKKwlw cGd0dCA9IGk5MTVfcHBndHRfZ2V0KGN0eC0+cHBndHQpOworCW11dGV4X3VubG9jaygmY3R4LT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJs ZSgmZmlsZV9wcml2LT52bV9sb2NrKTsKKwlpZiAocmV0KQorCQlnb3RvIGVycl9wdXQ7CisKKwlp ZiAoIXBwZ3R0LT51c2VyX2hhbmRsZSkgeworCQlyZXQgPSBpZHJfYWxsb2MoJmZpbGVfcHJpdi0+ dm1faWRyLCBwcGd0dCwgMCwgMCwgR0ZQX0tFUk5FTCk7CisJCUdFTV9CVUdfT04oIXJldCk7CisJ CWlmIChyZXQgPCAwKQorCQkJZ290byBlcnJfdW5sb2NrOworCisJCXBwZ3R0LT51c2VyX2hhbmRs ZSA9IHJldDsKKwkJaTkxNV9wcGd0dF9nZXQocHBndHQpOworCX0KKworCWFyZ3MtPnNpemUgPSAw OworCWFyZ3MtPnZhbHVlID0gcHBndHQtPnVzZXJfaGFuZGxlOworCisJcmV0ID0gMDsKK2Vycl91 bmxvY2s6CisJbXV0ZXhfdW5sb2NrKCZmaWxlX3ByaXYtPnZtX2xvY2spOworZXJyX3B1dDoKKwlp OTE1X3BwZ3R0X3B1dChwcGd0dCk7CisJcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQgc2V0 X3BwZ3R0X2JhcnJpZXIodm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqb2xk ID0gZGF0YTsKKworCWlmIChJTlRFTF9HRU4ob2xkLT52bS5pOTE1KSA8IDgpCisJCWdlbjZfcHBn dHRfdW5waW5fYWxsKG9sZCk7CisKKwlpOTE1X3BwZ3R0X2Nsb3NlKG9sZCk7CisJaTkxNV9wcGd0 dF9wdXQob2xkKTsKK30KKworc3RhdGljIGludCBlbWl0X3BwZ3R0X3VwZGF0ZShzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkKK3sKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQgPSBycS0+Z2VtX2NvbnRleHQtPnBwZ3R0OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVu Z2luZSA9IHJxLT5lbmdpbmU7CisJdTMyICpjczsKKwlpbnQgaTsKKworCWlmIChpOTE1X3ZtX2lz XzQ4Yml0KCZwcGd0dC0+dm0pKSB7CisJCWNvbnN0IGRtYV9hZGRyX3QgcGRfZGFkZHIgPSBweF9k bWEoJnBwZ3R0LT5wbWw0KTsKKworCQljcyA9IGludGVsX3JpbmdfYmVnaW4ocnEsIDYpOworCQlp ZiAoSVNfRVJSKGNzKSkKKwkJCXJldHVybiBQVFJfRVJSKGNzKTsKKworCQkqY3MrKyA9IE1JX0xP QURfUkVHSVNURVJfSU1NKDIpOworCisJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VO OF9SSU5HX1BEUF9VRFcoZW5naW5lLCAwKSk7CisJCSpjcysrID0gdXBwZXJfMzJfYml0cyhwZF9k YWRkcik7CisJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFco ZW5naW5lLCAwKSk7CisJCSpjcysrID0gbG93ZXJfMzJfYml0cyhwZF9kYWRkcik7CisKKwkJKmNz KysgPSBNSV9OT09QOworCQlpbnRlbF9yaW5nX2FkdmFuY2UocnEsIGNzKTsKKwl9IGVsc2UgaWYg KEhBU19MT0dJQ0FMX1JJTkdfQ09OVEVYVFMoZW5naW5lLT5pOTE1KSkgeworCQljcyA9IGludGVs X3JpbmdfYmVnaW4ocnEsIDQgKiBHRU44XzNMVkxfUERQRVMgKyAyKTsKKwkJaWYgKElTX0VSUihj cykpCisJCQlyZXR1cm4gUFRSX0VSUihjcyk7CisKKwkJKmNzKysgPSBNSV9MT0FEX1JFR0lTVEVS X0lNTSgyICogR0VOOF8zTFZMX1BEUEVTKTsKKwkJZm9yIChpID0gR0VOOF8zTFZMX1BEUEVTOyBp LS07ICkgeworCQkJY29uc3QgZG1hX2FkZHJfdCBwZF9kYWRkciA9IGk5MTVfcGFnZV9kaXJfZG1h X2FkZHIocHBndHQsIGkpOworCisJCQkqY3MrKyA9IGk5MTVfbW1pb19yZWdfb2Zmc2V0KEdFTjhf UklOR19QRFBfVURXKGVuZ2luZSwgaSkpOworCQkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2Rh ZGRyKTsKKwkJCSpjcysrID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9MRFco ZW5naW5lLCBpKSk7CisJCQkqY3MrKyA9IGxvd2VyXzMyX2JpdHMocGRfZGFkZHIpOworCQl9CisJ CSpjcysrID0gTUlfTk9PUDsKKwkJaW50ZWxfcmluZ19hZHZhbmNlKHJxLCBjcyk7CisJfSBlbHNl IHsKKwkJLyogcHBHVFQgaXMgbm90IHBhcnQgb2YgdGhlIGxlZ2FjeSBjb250ZXh0IGltYWdlICov CisJCWdlbjZfcHBndHRfcGluKHBwZ3R0KTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworc3RhdGlj IGludCBzZXRfcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgICBzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1 X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0gY3R4LT5maWxlX3ByaXY7CisJc3RydWN0IGk5MTVf aHdfcHBndHQgKnBwZ3R0LCAqb2xkOworCWludCBlcnI7CisKKwlpZiAoYXJncy0+c2l6ZSkKKwkJ cmV0dXJuIC1FSU5WQUw7CisKKwlpZiAoIWN0eC0+cHBndHQpCisJCXJldHVybiAtRU5PREVWOwor CisJaWYgKHVwcGVyXzMyX2JpdHMoYXJncy0+dmFsdWUpKQorCQlyZXR1cm4gLUVOT0VOVDsKKwor CWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmZmlsZV9wcml2LT52bV9sb2NrKTsKKwlp ZiAoZXJyKQorCQlyZXR1cm4gZXJyOworCisJcHBndHQgPSBpZHJfZmluZCgmZmlsZV9wcml2LT52 bV9pZHIsIGFyZ3MtPnZhbHVlKTsKKwlpZiAocHBndHQpIHsKKwkJR0VNX0JVR19PTihwcGd0dC0+ dXNlcl9oYW5kbGUgIT0gYXJncy0+dmFsdWUpOworCQlpOTE1X3BwZ3R0X2dldChwcGd0dCk7CisJ fQorCW11dGV4X3VubG9jaygmZmlsZV9wcml2LT52bV9sb2NrKTsKKwlpZiAoIXBwZ3R0KQorCQly ZXR1cm4gLUVOT0VOVDsKKworCWVyciA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAoZXJyKQorCQlnb3RvIG91dDsKKworCWlmIChw cGd0dCA9PSBjdHgtPnBwZ3R0KQorCQlnb3RvIHVubG9jazsKKworCS8qIFRlYXJkb3duIHRoZSBl eGlzdGluZyBvYmo6dm1hIGNhY2hlLCBpdCB3aWxsIGhhdmUgdG8gYmUgcmVidWlsdC4gKi8KKwls dXRfY2xvc2UoY3R4KTsKKworCW9sZCA9IF9fc2V0X3BwZ3R0KGN0eCwgcHBndHQpOworCisJLyoK KwkgKiBXZSBuZWVkIHRvIGZsdXNoIGFueSByZXF1ZXN0cyB1c2luZyB0aGUgY3VycmVudCBwcGd0 dCBiZWZvcmUKKwkgKiB3ZSByZWxlYXNlIGl0IGFzIHRoZSByZXF1ZXN0cyBkbyBub3QgaG9sZCBh IHJlZmVyZW5jZSB0aGVtc2VsdmVzLAorCSAqIG9ubHkgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSBj b250ZXh0LgorCSAqLworCWVyciA9IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwgQUxMX0VOR0lO RVMsCisJCQkJICAgZW1pdF9wcGd0dF91cGRhdGUsCisJCQkJICAgc2V0X3BwZ3R0X2JhcnJpZXIs CisJCQkJICAgb2xkKTsKKwlpZiAoZXJyKSB7CisJCWN0eC0+cHBndHQgPSBvbGQ7CisJCWN0eC0+ ZGVzY190ZW1wbGF0ZSA9IGRlZmF1bHRfZGVzY190ZW1wbGF0ZShjdHgtPmk5MTUsIG9sZCk7CisK KwkJaTkxNV9wcGd0dF9jbG9zZShwcGd0dCk7CisJCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKKwl9 CisKK3VubG9jazoKKwltdXRleF91bmxvY2soJmN0eC0+aTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CisKK291dDoKKwlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7CisJcmV0dXJuIGVycjsKK30KKwogc3Rh dGljIGJvb2wgY2xpZW50X2lzX2Jhbm5lZChzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpm aWxlX3ByaXYpCiB7CiAJcmV0dXJuIGF0b21pY19yZWFkKCZmaWxlX3ByaXYtPmJhbl9zY29yZSkg Pj0gSTkxNV9DTElFTlRfU0NPUkVfQkFOTkVEOwpAQCAtOTczLDYgKzEyNjgsOSBAQCBpbnQgaTkx NV9nZW1fY29udGV4dF9nZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAogCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1NTRVU6CiAJCXJldCA9IGdldF9zc2V1 KGN0eCwgYXJncyk7CiAJCWJyZWFrOworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX1ZNOgorCQly ZXQgPSBnZXRfcHBndHQoY3R4LCBhcmdzKTsKKwkJYnJlYWs7CiAJZGVmYXVsdDoKIAkJcmV0ID0g LUVJTlZBTDsKIAkJYnJlYWs7CkBAIC0xMjc0LDkgKzE1NzIsNiBAQCBpbnQgaTkxNV9nZW1fY29u dGV4dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAog CQlyZXR1cm4gLUVOT0VOVDsKIAogCXN3aXRjaCAoYXJncy0+cGFyYW0pIHsKLQljYXNlIEk5MTVf Q09OVEVYVF9QQVJBTV9CQU5fUEVSSU9EOgotCQlyZXQgPSAtRUlOVkFMOwotCQlicmVhazsKIAlj YXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9OT19aRVJPTUFQOgogCQlpZiAoYXJncy0+c2l6ZSkKIAkJ CXJldCA9IC1FSU5WQUw7CkBAIC0xMzMyLDkgKzE2MjcsMTYgQEAgaW50IGk5MTVfZ2VtX2NvbnRl eHRfc2V0cGFyYW1faW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKIAkJ CQkJSTkxNV9VU0VSX1BSSU9SSVRZKHByaW9yaXR5KTsKIAkJfQogCQlicmVhazsKKwogCWNhc2Ug STkxNV9DT05URVhUX1BBUkFNX1NTRVU6CiAJCXJldCA9IHNldF9zc2V1KGN0eCwgYXJncyk7CiAJ CWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06CisJCXJldCA9IHNldF9wcGd0 dChjdHgsIGFyZ3MpOworCQlicmVhazsKKworCWNhc2UgSTkxNV9DT05URVhUX1BBUkFNX0JBTl9Q RVJJT0Q6CiAJZGVmYXVsdDoKIAkJcmV0ID0gLUVJTlZBTDsKIAkJYnJlYWs7CmRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmggYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKaW5kZXggNWEzMmM0YjQ4MTZmLi4xZTY3MDM3Mjg5 MmMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmgKQEAgLTE1Myw2ICsx NTMsMTEgQEAgdm9pZCBpOTE1X2dlbV9jb250ZXh0X3JlbGVhc2Uoc3RydWN0IGtyZWYgKmN0eF9y ZWYpOwogc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKgogaTkxNV9nZW1fY29udGV4dF9jcmVhdGVf Z3Z0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOwogCitpbnQgaTkxNV9nZW1fdm1fY3JlYXRlX2lv Y3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgIHN0cnVjdCBk cm1fZmlsZSAqZmlsZSk7CitpbnQgaTkxNV9nZW1fdm1fZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAorCQkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxl KTsKKwogaW50IGk5MTVfZ2VtX2NvbnRleHRfY3JlYXRlX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHZvaWQgKmRhdGEsCiAJCQkJICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpOwogaW50IGk5 MTVfZ2VtX2NvbnRleHRfZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwppbmRleCBkYWMwOGQ5YzNmYWIu LmMwOTcyY2Q5NTI4MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1f Z3R0LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKQEAgLTE5Mzks NiArMTkzOSw4IEBAIGludCBnZW42X3BwZ3R0X3BpbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFz ZSkKIAlzdHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0KGJhc2UpOwog CWludCBlcnI7CiAKKwlHRU1fQlVHX09OKHBwZ3R0LT5iYXNlLnZtLmNsb3NlZCk7CisKIAkvKgog CSAqIFdvcmthcm91bmQgdGhlIGxpbWl0ZWQgbWF4aW11bSB2bWEtPnBpbl9jb3VudCBhbmQgdGhl IGFsaWFzaW5nX3BwZ3R0CiAJICogd2hpY2ggd2lsbCBiZSBwaW5uZWQgaW50byBldmVyeSBhY3Rp dmUgY29udGV4dC4KQEAgLTE5NzcsNiArMTk3OSwxNyBAQCB2b2lkIGdlbjZfcHBndHRfdW5waW4o c3RydWN0IGk5MTVfaHdfcHBndHQgKmJhc2UpCiAJaTkxNV92bWFfdW5waW4ocHBndHQtPnZtYSk7 CiB9CiAKK3ZvaWQgZ2VuNl9wcGd0dF91bnBpbl9hbGwoc3RydWN0IGk5MTVfaHdfcHBndHQgKmJh c2UpCit7CisJc3RydWN0IGdlbjZfaHdfcHBndHQgKnBwZ3R0ID0gdG9fZ2VuNl9wcGd0dChiYXNl KTsKKworCWlmICghcHBndHQtPnBpbl9jb3VudCkKKwkJcmV0dXJuOworCisJcHBndHQtPnBpbl9j b3VudCA9IDA7CisJaTkxNV92bWFfdW5waW4ocHBndHQtPnZtYSk7Cit9CisKIHN0YXRpYyBzdHJ1 Y3QgaTkxNV9od19wcGd0dCAqZ2VuNl9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmk5MTUpCiB7CiAJc3RydWN0IGk5MTVfZ2d0dCAqIGNvbnN0IGdndHQgPSAmaTkxNS0+Z2d0 dDsKQEAgLTIwOTksMTAgKzIxMTIsMjEgQEAgaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUsCiAJcmV0dXJuIHBwZ3R0OwogfQogCi12b2lkIGk5MTVfcHBndHRf Y2xvc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAqdm0pCit2b2lkIGk5MTVfcHBndHRfb3Bl bihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiB7Ci0JR0VNX0JVR19PTih2bS0+Y2xvc2Vk KTsKLQl2bS0+Y2xvc2VkID0gdHJ1ZTsKKwlHRU1fQlVHX09OKHBwZ3R0LT52bS5jbG9zZWQpOwor CisJcHBndHQtPm9wZW5fY291bnQrKzsKK30KKwordm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKK3sKKwlHRU1fQlVHX09OKCFwcGd0dC0+b3Blbl9jb3Vu dCk7CisJaWYgKC0tcHBndHQtPm9wZW5fY291bnQpCisJCXJldHVybjsKKworCUdFTV9CVUdfT04o cHBndHQtPnZtLmNsb3NlZCk7CisJcHBndHQtPnZtLmNsb3NlZCA9IHRydWU7CiB9CiAKIHN0YXRp YyB2b2lkIHBwZ3R0X2Rlc3Ryb3lfdm1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmggYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRleCBhNDdlMTFlNmZjMWIuLjU5NzNkOTJl NDVmYyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKQEAgLTM5MSwxMSArMzkxLDE1 IEBAIHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsKIAlzdHJ1Y3Qga3JlZiByZWY7CiAKIAl1bnNpZ25l ZCBsb25nIHBkX2RpcnR5X2VuZ2luZXM7CisJdW5zaWduZWQgaW50IG9wZW5fY291bnQ7CisKIAl1 bmlvbiB7CiAJCXN0cnVjdCBpOTE1X3BtbDQgcG1sNDsJCS8qIEdFTjgrICYgNDhiIFBQR1RUICov CiAJCXN0cnVjdCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgcGRwOwkvKiBHRU44KyAqLwog CQlzdHJ1Y3QgaTkxNV9wYWdlX2RpcmVjdG9yeSBwZDsJCS8qIEdFTjYtNyAqLwogCX07CisKKwl1 MzIgdXNlcl9oYW5kbGU7CiB9OwogCiBzdHJ1Y3QgZ2VuNl9od19wcGd0dCB7CkBAIC02MDYsMTIg KzYxMCwxNiBAQCBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdik7CiB2b2lkIGk5MTVfcHBndHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqa3JlZik7 CiBzdHJ1Y3QgaTkxNV9od19wcGd0dCAqaTkxNV9wcGd0dF9jcmVhdGUoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpm cHJpdik7Ci12b2lkIGk5MTVfcHBndHRfY2xvc2Uoc3RydWN0IGk5MTVfYWRkcmVzc19zcGFjZSAq dm0pOwotc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBndHRfZ2V0KHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCkKKwordm9pZCBpOTE1X3BwZ3R0X29wZW4oc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0KTsKK3ZvaWQgaTkxNV9wcGd0dF9jbG9zZShzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQpOworCitzdGF0aWMgaW5saW5lIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICppOTE1X3BwZ3R0X2dl dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQpCiB7Ci0JaWYgKHBwZ3R0KQotCQlrcmVmX2dl dCgmcHBndHQtPnJlZik7CisJa3JlZl9nZXQoJnBwZ3R0LT5yZWYpOworCXJldHVybiBwcGd0dDsK IH0KKwogc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBndHRfcHV0KHN0cnVjdCBpOTE1X2h3X3Bw Z3R0ICpwcGd0dCkKIHsKIAlpZiAocHBndHQpCkBAIC02MjAsNiArNjI4LDcgQEAgc3RhdGljIGlu bGluZSB2b2lkIGk5MTVfcHBndHRfcHV0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIAog aW50IGdlbjZfcHBndHRfcGluKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpiYXNlKTsKIHZvaWQgZ2Vu Nl9wcGd0dF91bnBpbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFzZSk7Cit2b2lkIGdlbjZfcHBn dHRfdW5waW5fYWxsKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpiYXNlKTsKIAogdm9pZCBpOTE1X2No ZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsK IHZvaWQgaTkxNV9nZW1fc3VzcGVuZF9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9odWdlX3BhZ2VzLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdl cy5jCmluZGV4IDFlNjZjZmY5ODVmOC4uMGI3NzQwZGMxOGNiIDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9odWdlX3BhZ2VzLmMKQEAgLTE3MzQsNyArMTczNCw2IEBAIGludCBp OTE1X2dlbV9odWdlX3BhZ2VfbW9ja19zZWxmdGVzdHModm9pZCkKIAllcnIgPSBpOTE1X3N1YnRl c3RzKHRlc3RzLCBwcGd0dCk7CiAKIG91dF9jbG9zZToKLQlpOTE1X3BwZ3R0X2Nsb3NlKCZwcGd0 dC0+dm0pOwogCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKIAogb3V0X3VubG9jazoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDQz OTllZjllYmYxNS4uMWJhMzU0YTkxNmMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9jb250ZXh0LmMKQEAgLTM3Miw3ICszNzIsOCBAQCBzdGF0aWMg aW50IGNwdV9maWxsKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHUzMiB2YWx1ZSkK IAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBjcHVfY2hlY2soc3RydWN0IGRybV9pOTE1X2dl bV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1heCkKK3N0YXRpYyBub2lubGluZSBpbnQgY3B1 X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosCisJCQkgICAgICB1bnNpZ25l ZCBpbnQgaWR4LCB1bnNpZ25lZCBpbnQgbWF4KQogewogCXVuc2lnbmVkIGludCBuLCBtLCBuZWVk c19mbHVzaDsKIAlpbnQgZXJyOwpAQCAtMzkwLDggKzM5MSwxMCBAQCBzdGF0aWMgaW50IGNwdV9j aGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgbWF4KQog CiAJCWZvciAobSA9IDA7IG0gPCBtYXg7IG0rKykgewogCQkJaWYgKG1hcFttXSAhPSBtKSB7Ci0J CQkJcHJfZXJyKCJJbnZhbGlkIHZhbHVlIGF0IHBhZ2UgJWQsIG9mZnNldCAlZDogZm91bmQgJXgg ZXhwZWN0ZWQgJXhcbiIsCi0JCQkJICAgICAgIG4sIG0sIG1hcFttXSwgbSk7CisJCQkJcHJfZXJy KCIlcFM6IEludmFsaWQgdmFsdWUgYXQgb2JqZWN0ICVkIHBhZ2UgJWQvJWxkLCBvZmZzZXQgJWQv JWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAorCQkJCSAgICAgICBfX2J1aWx0aW5fcmV0dXJu X2FkZHJlc3MoMCksIGlkeCwKKwkJCQkgICAgICAgbiwgcmVhbF9wYWdlX2NvdW50KG9iaiksIG0s IG1heCwKKwkJCQkgICAgICAgbWFwW21dLCBtKTsKIAkJCQllcnIgPSAtRUlOVkFMOwogCQkJCWdv dG8gb3V0X3VubWFwOwogCQkJfQpAQCAtMzk5LDggKzQwMiw5IEBAIHN0YXRpYyBpbnQgY3B1X2No ZWNrKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBtYXgpCiAK IAkJZm9yICg7IG0gPCBEV19QRVJfUEFHRTsgbSsrKSB7CiAJCQlpZiAobWFwW21dICE9IFNUQUNL X01BR0lDKSB7Ci0JCQkJcHJfZXJyKCJJbnZhbGlkIHZhbHVlIGF0IHBhZ2UgJWQsIG9mZnNldCAl ZDogZm91bmQgJXggZXhwZWN0ZWQgJXhcbiIsCi0JCQkJICAgICAgIG4sIG0sIG1hcFttXSwgU1RB Q0tfTUFHSUMpOworCQkJCXByX2VycigiJXBTOiBJbnZhbGlkIHZhbHVlIGF0IG9iamVjdCAlZCBw YWdlICVkLCBvZmZzZXQgJWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4ICh1bmluaXRpYWxpc2VkKVxu IiwKKwkJCQkgICAgICAgX19idWlsdGluX3JldHVybl9hZGRyZXNzKDApLCBpZHgsIG4sIG0sCisJ CQkJICAgICAgIG1hcFttXSwgU1RBQ0tfTUFHSUMpOwogCQkJCWVyciA9IC1FSU5WQUw7CiAJCQkJ Z290byBvdXRfdW5tYXA7CiAJCQl9CkBAIC00NzgsMTIgKzQ4Miw4IEBAIHN0YXRpYyB1bnNpZ25l ZCBsb25nIG1heF9kd29yZHMoc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikKIHN0YXRp YyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSA9IGFyZzsKLQlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsK LQl1bnNpZ25lZCBsb25nIG5jb250ZXh0cywgbmR3b3JkcywgZHc7Ci0Jc3RydWN0IGlndF9saXZl X3Rlc3QgdDsKLQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7Ci0JSUdUX1RJTUVPVVQoZW5kX3RpbWUp OwotCUxJU1RfSEVBRChvYmplY3RzKTsKKwlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7 CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7CiAJaW50IGVyciA9IC1FTk9ERVY7CiAKIAkvKgpA QCAtNDk1LDQ0ICs0OTUsMTY5IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9leGVjKHZvaWQgKmFyZykK IAlpZiAoIURSSVZFUl9DQVBTKGk5MTUpLT5oYXNfbG9naWNhbF9jb250ZXh0cykKIAkJcmV0dXJu IDA7CiAKKwlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1LCBpZCkgeworCQlzdHJ1Y3QgZHJt X2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKKwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMs IG5kd29yZHMsIGR3OworCQlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0OworCQlzdHJ1Y3QgZHJtX2Zp bGUgKmZpbGU7CisJCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKKwkJTElTVF9IRUFEKG9iamVjdHMp OworCisJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQorCQkJY29u dGludWU7CisKKwkJaWYgKCFlbmdpbmUtPmNvbnRleHRfc2l6ZSkKKwkJCWNvbnRpbnVlOyAvKiBO byBsb2dpY2FsIGNvbnRleHQgc3VwcG9ydCBpbiBIVyAqLworCisJCWZpbGUgPSBtb2NrX2ZpbGUo aTkxNSk7CisJCWlmIChJU19FUlIoZmlsZSkpCisJCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKKwor CQltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKKworCQllcnIgPSBpZ3RfbGl2 ZV90ZXN0X2JlZ2luKCZ0LCBpOTE1LCBfX2Z1bmNfXywgZW5naW5lLT5uYW1lKTsKKwkJaWYgKGVy cikKKwkJCWdvdG8gb3V0X3VubG9jazsKKworCQluY29udGV4dHMgPSAwOworCQluZHdvcmRzID0g MDsKKwkJZHcgPSAwOworCQl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKSB7 CisJCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OworCQkJaW50ZWxfd2FrZXJlZl90IHdh a2VyZWY7CisKKwkJCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRy aXZlcl9wcml2KTsKKwkJCWlmIChJU19FUlIoY3R4KSkgeworCQkJCWVyciA9IFBUUl9FUlIoY3R4 KTsKKwkJCQlnb3RvIG91dF91bmxvY2s7CisJCQl9CisKKwkJCWlmICghb2JqKSB7CisJCQkJb2Jq ID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwgJm9iamVjdHMpOworCQkJCWlmIChJU19F UlIob2JqKSkgeworCQkJCQllcnIgPSBQVFJfRVJSKG9iaik7CisJCQkJCWdvdG8gb3V0X3VubG9j azsKKwkJCQl9CisJCQl9CisKKwkJCXdpdGhfaW50ZWxfcnVudGltZV9wbShpOTE1LCB3YWtlcmVm KQorCQkJCWVyciA9IGdwdV9maWxsKG9iaiwgY3R4LCBlbmdpbmUsIGR3KTsKKwkJCWlmIChlcnIp IHsKKwkJCQlwcl9lcnIoIkZhaWxlZCB0byBmaWxsIGR3b3JkICVsdSBbJWx1LyVsdV0gd2l0aCBn cHUgKCVzKSBpbiBjdHggJXUgW2Z1bGwtcHBndHQ/ICVzXSwgZXJyPSVkXG4iLAorCQkJCSAgICAg ICBuZHdvcmRzLCBkdywgbWF4X2R3b3JkcyhvYmopLAorCQkJCSAgICAgICBlbmdpbmUtPm5hbWUs IGN0eC0+aHdfaWQsCisJCQkJICAgICAgIHllc25vKCEhY3R4LT5wcGd0dCksIGVycik7CisJCQkJ Z290byBvdXRfdW5sb2NrOworCQkJfQorCisJCQlpZiAoKytkdyA9PSBtYXhfZHdvcmRzKG9iaikp IHsKKwkJCQlvYmogPSBOVUxMOworCQkJCWR3ID0gMDsKKwkJCX0KKworCQkJbmR3b3JkcysrOwor CQkJbmNvbnRleHRzKys7CisJCX0KKworCQlwcl9pbmZvKCJTdWJtaXR0ZWQgJWx1IGNvbnRleHRz IHRvICVzLCBmaWxsaW5nICVsdSBkd29yZHNcbiIsCisJCQluY29udGV4dHMsIGVuZ2luZS0+bmFt ZSwgbmR3b3Jkcyk7CisKKwkJbmNvbnRleHRzID0gZHcgPSAwOworCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KG9iaiwgJm9iamVjdHMsIHN0X2xpbmspIHsKKwkJCXVuc2lnbmVkIGludCByZW0gPQorCQkJ CW1pbl90KHVuc2lnbmVkIGludCwgbmR3b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOworCisJ CQllcnIgPSBjcHVfY2hlY2sob2JqLCBuY29udGV4dHMrKywgcmVtKTsKKwkJCWlmIChlcnIpCisJ CQkJYnJlYWs7CisKKwkJCWR3ICs9IHJlbTsKKwkJfQorCitvdXRfdW5sb2NrOgorCQlpZiAoaWd0 X2xpdmVfdGVzdF9lbmQoJnQpKQorCQkJZXJyID0gLUVJTzsKKwkJbXV0ZXhfdW5sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKKworCQltb2NrX2ZpbGVfZnJlZShpOTE1LCBmaWxlKTsKKwkJ aWYgKGVycikKKwkJCXJldHVybiBlcnI7CisJfQorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBp bnQgaWd0X3NoYXJlZF9jdHhfZXhlYyh2b2lkICphcmcpCit7CisJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBhcmc7CisJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKnBhcmVudDsKKwlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CisJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7 CisJc3RydWN0IGlndF9saXZlX3Rlc3QgdDsKKwlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGU7CisJaW50 IGVyciA9IDA7CisKKwkvKgorCSAqIENyZWF0ZSBhIGZldyBkaWZmZXJlbnQgY29udGV4dHMgd2l0 aCB0aGUgc2FtZSBtbSBhbmQgd3JpdGUKKwkgKiB0aHJvdWdoIGVhY2ggY3R4IHVzaW5nIHRoZSBH UFUgbWFraW5nIHN1cmUgdGhvc2Ugd3JpdGVzIGVuZAorCSAqIHVwIGluIHRoZSBleHBlY3RlZCBw YWdlcyBvZiBvdXIgb2JqLgorCSAqLworCWlmICghRFJJVkVSX0NBUFMoaTkxNSktPmhhc19sb2dp Y2FsX2NvbnRleHRzKQorCQlyZXR1cm4gMDsKKwogCWZpbGUgPSBtb2NrX2ZpbGUoaTkxNSk7CiAJ aWYgKElTX0VSUihmaWxlKSkKIAkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7CiAKIAltdXRleF9sb2Nr KCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAorCXBhcmVudCA9IGk5MTVfZ2VtX2NyZWF0ZV9j b250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9wcml2KTsKKwlpZiAoSVNfRVJSKHBhcmVudCkpIHsK KwkJZXJyID0gUFRSX0VSUihwYXJlbnQpOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCisJaWYg KCFwYXJlbnQtPnBwZ3R0KSB7IC8qIG5vdCBmdWxsLXBwZ3R0OyBub3RoaW5nIHRvIHNoYXJlICov CisJCWVyciA9IC1FTk9ERVY7CisJCWdvdG8gb3V0X3VubG9jazsKKwl9CisKIAllcnIgPSBpZ3Rf bGl2ZV90ZXN0X2JlZ2luKCZ0LCBpOTE1LCBfX2Z1bmNfXywgIiIpOwogCWlmIChlcnIpCiAJCWdv dG8gb3V0X3VubG9jazsKIAotCW5jb250ZXh0cyA9IDA7Ci0JbmR3b3JkcyA9IDA7Ci0JZHcgPSAw OwotCXdoaWxlICghdGltZV9hZnRlcihqaWZmaWVzLCBlbmRfdGltZSkpIHsKLQkJc3RydWN0IGlu dGVsX2VuZ2luZV9jcyAqZW5naW5lOwotCQlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4Owot CQl1bnNpZ25lZCBpbnQgaWQ7CisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsK KwkJdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3OworCQlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKKwkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0 eCA9IE5VTEw7CisJCUlHVF9USU1FT1VUKGVuZF90aW1lKTsKKwkJTElTVF9IRUFEKG9iamVjdHMp OwogCi0JCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5MTUsIGZpbGUtPmRyaXZlcl9w cml2KTsKLQkJaWYgKElTX0VSUihjdHgpKSB7Ci0JCQllcnIgPSBQVFJfRVJSKGN0eCk7Ci0JCQln b3RvIG91dF91bmxvY2s7Ci0JCX0KKwkJaWYgKCFpbnRlbF9lbmdpbmVfY2FuX3N0b3JlX2R3b3Jk KGVuZ2luZSkpCisJCQljb250aW51ZTsKIAotCQlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBpOTE1 LCBpZCkgeworCQlkdyA9IDA7CisJCW5kd29yZHMgPSAwOworCQluY29udGV4dHMgPSAwOworCQl3 aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKSB7CiAJCQlpbnRlbF93YWtlcmVm X3Qgd2FrZXJlZjsKIAotCQkJaWYgKCFlbmdpbmUtPmNvbnRleHRfc2l6ZSkKLQkJCQljb250aW51 ZTsgLyogTm8gbG9naWNhbCBjb250ZXh0IHN1cHBvcnQgaW4gSFcgKi8KKwkJCWlmIChjdHgpCisJ CQkJX19kZXN0cm95X2h3X2NvbnRleHQoY3R4LCBmaWxlLT5kcml2ZXJfcHJpdik7CiAKLQkJCWlm ICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQotCQkJCWNvbnRpbnVlOwor CQkJY3R4ID0gaTkxNV9nZW1fY3JlYXRlX2NvbnRleHQoaTkxNSwgZmlsZS0+ZHJpdmVyX3ByaXYp OworCQkJaWYgKElTX0VSUihjdHgpKSB7CisJCQkJZXJyID0gUFRSX0VSUihjdHgpOworCQkJCWdv dG8gb3V0X3Rlc3Q7CisJCQl9CisKKwkJCV9fYXNzaWduX3BwZ3R0KGN0eCwgcGFyZW50LT5wcGd0 dCk7CiAKIAkJCWlmICghb2JqKSB7Ci0JCQkJb2JqID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwg ZmlsZSwgJm9iamVjdHMpOworCQkJCW9iaiA9IGNyZWF0ZV90ZXN0X29iamVjdChwYXJlbnQsIGZp bGUsICZvYmplY3RzKTsKIAkJCQlpZiAoSVNfRVJSKG9iaikpIHsKIAkJCQkJZXJyID0gUFRSX0VS UihvYmopOwotCQkJCQlnb3RvIG91dF91bmxvY2s7CisJCQkJCWdvdG8gb3V0X3Rlc3Q7CiAJCQkJ fQogCQkJfQogCkBAIC01NDQsMzUgKzY2OSwzNiBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2 b2lkICphcmcpCiAJCQkJICAgICAgIG5kd29yZHMsIGR3LCBtYXhfZHdvcmRzKG9iaiksCiAJCQkJ ICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19pZCwKIAkJCQkgICAgICAgeWVzbm8oISFjdHgt PnBwZ3R0KSwgZXJyKTsKLQkJCQlnb3RvIG91dF91bmxvY2s7CisJCQkJZ290byBvdXRfdGVzdDsK IAkJCX0KIAogCQkJaWYgKCsrZHcgPT0gbWF4X2R3b3JkcyhvYmopKSB7CiAJCQkJb2JqID0gTlVM TDsKIAkJCQlkdyA9IDA7CiAJCQl9CisKIAkJCW5kd29yZHMrKzsKKwkJCW5jb250ZXh0cysrOwog CQl9Ci0JCW5jb250ZXh0cysrOwotCX0KLQlwcl9pbmZvKCJTdWJtaXR0ZWQgJWx1IGNvbnRleHRz IChhY3Jvc3MgJXUgZW5naW5lcyksIGZpbGxpbmcgJWx1IGR3b3Jkc1xuIiwKLQkJbmNvbnRleHRz LCBSVU5USU1FX0lORk8oaTkxNSktPm51bV9lbmdpbmVzLCBuZHdvcmRzKTsKKwkJcHJfaW5mbygi U3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywgZmlsbGluZyAlbHUgZHdvcmRzXG4iLAorCQkJ bmNvbnRleHRzLCBlbmdpbmUtPm5hbWUsIG5kd29yZHMpOwogCi0JZHcgPSAwOwotCWxpc3RfZm9y X2VhY2hfZW50cnkob2JqLCAmb2JqZWN0cywgc3RfbGluaykgewotCQl1bnNpZ25lZCBpbnQgcmVt ID0KLQkJCW1pbl90KHVuc2lnbmVkIGludCwgbmR3b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikp OworCQluY29udGV4dHMgPSBkdyA9IDA7CisJCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmb2Jq ZWN0cywgc3RfbGluaykgeworCQkJdW5zaWduZWQgaW50IHJlbSA9CisJCQkJbWluX3QodW5zaWdu ZWQgaW50LCBuZHdvcmRzIC0gZHcsIG1heF9kd29yZHMob2JqKSk7CiAKLQkJZXJyID0gY3B1X2No ZWNrKG9iaiwgcmVtKTsKLQkJaWYgKGVycikKLQkJCWJyZWFrOworCQkJZXJyID0gY3B1X2NoZWNr KG9iaiwgbmNvbnRleHRzKyssIHJlbSk7CisJCQlpZiAoZXJyKQorCQkJCWdvdG8gb3V0X3Rlc3Q7 CiAKLQkJZHcgKz0gcmVtOworCQkJZHcgKz0gcmVtOworCQl9CiAJfQotCi1vdXRfdW5sb2NrOgor b3V0X3Rlc3Q6CiAJaWYgKGlndF9saXZlX3Rlc3RfZW5kKCZ0KSkKIAkJZXJyID0gLUVJTzsKK291 dF91bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKIAogCW1v Y2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOwpAQCAtMTA0OCw3ICsxMTc0LDcgQEAgc3RhdGljIGlu dCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqb2JqID0gTlVMTDsKIAlzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqY3R4OwogCXN0cnVjdCBp OTE1X2h3X3BwZ3R0ICpwcGd0dDsKLQl1bnNpZ25lZCBsb25nIG5kd29yZHMsIGR3OworCXVuc2ln bmVkIGxvbmcgaWR4LCBuZHdvcmRzLCBkdzsKIAlzdHJ1Y3QgaWd0X2xpdmVfdGVzdCB0OwogCXN0 cnVjdCBkcm1fZmlsZSAqZmlsZTsKIAlJOTE1X1JORF9TVEFURShwcm5nKTsKQEAgLTExMjksNiAr MTI1NSw3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9yZWFkb25seSh2b2lkICphcmcpCiAJCW5kd29y ZHMsIFJVTlRJTUVfSU5GTyhpOTE1KS0+bnVtX2VuZ2luZXMpOwogCiAJZHcgPSAwOworCWlkeCA9 IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmplY3RzLCBzdF9saW5rKSB7CiAJCXVu c2lnbmVkIGludCByZW0gPQogCQkJbWluX3QodW5zaWduZWQgaW50LCBuZHdvcmRzIC0gZHcsIG1h eF9kd29yZHMob2JqKSk7CkBAIC0xMTM4LDcgKzEyNjUsNyBAQCBzdGF0aWMgaW50IGlndF9jdHhf cmVhZG9ubHkodm9pZCAqYXJnKQogCQlpZiAoaTkxNV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KG9i aikpCiAJCQludW1fd3JpdGVzID0gMDsKIAotCQllcnIgPSBjcHVfY2hlY2sob2JqLCBudW1fd3Jp dGVzKTsKKwkJZXJyID0gY3B1X2NoZWNrKG9iaiwgaWR4KyssIG51bV93cml0ZXMpOwogCQlpZiAo ZXJyKQogCQkJYnJlYWs7CiAKQEAgLTE2MjYsNyArMTc1Myw4IEBAIHN0YXRpYyBpbnQgbW9ja19j b250ZXh0X2JhcnJpZXIodm9pZCAqYXJnKQogCX0KIAogCWNvdW50ZXIgPSAwOwotCWVyciA9IGNv bnRleHRfYmFycmllcl90YXNrKGN0eCwgMCwgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsK KwllcnIgPSBjb250ZXh0X2JhcnJpZXJfdGFzayhjdHgsIDAsCisJCQkJICAgTlVMTCwgbW9ja19i YXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigiRmFpbGVkIGF0 IGxpbmUgJWQsIGVycj0lZFxuIiwgX19MSU5FX18sIGVycik7CiAJCWdvdG8gb3V0OwpAQCAtMTYz OCw4ICsxNzY2LDggQEAgc3RhdGljIGludCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lkICphcmcp CiAJfQogCiAJY291bnRlciA9IDA7Ci0JZXJyID0gY29udGV4dF9iYXJyaWVyX3Rhc2soY3R4LAot CQkJCSAgIEFMTF9FTkdJTkVTLCBtb2NrX2JhcnJpZXJfdGFzaywgJmNvdW50ZXIpOworCWVyciA9 IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwgQUxMX0VOR0lORVMsCisJCQkJICAgTlVMTCwgbW9j a19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKIAlpZiAoZXJyKSB7CiAJCXByX2VycigiRmFpbGVk IGF0IGxpbmUgJWQsIGVycj0lZFxuIiwgX19MSU5FX18sIGVycik7CiAJCWdvdG8gb3V0OwpAQCAt MTY2Miw4ICsxNzkwLDggQEAgc3RhdGljIGludCBtb2NrX2NvbnRleHRfYmFycmllcih2b2lkICph cmcpCiAKIAljb3VudGVyID0gMDsKIAljb250ZXh0X2JhcnJpZXJfaW5qZWN0X2ZhdWx0ID0gQklU KFJDUzApOwotCWVyciA9IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwKLQkJCQkgICBBTExfRU5H SU5FUywgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKKwllcnIgPSBjb250ZXh0X2JhcnJp ZXJfdGFzayhjdHgsIEFMTF9FTkdJTkVTLAorCQkJCSAgIE5VTEwsIG1vY2tfYmFycmllcl90YXNr LCAmY291bnRlcik7CiAJY29udGV4dF9iYXJyaWVyX2luamVjdF9mYXVsdCA9IDA7CiAJaWYgKGVy ciA9PSAtRU5YSU8pCiAJCWVyciA9IDA7CkBAIC0xNjc3LDggKzE4MDUsOCBAQCBzdGF0aWMgaW50 IG1vY2tfY29udGV4dF9iYXJyaWVyKHZvaWQgKmFyZykKIAkJZ290byBvdXQ7CiAKIAljb3VudGVy ID0gMDsKLQllcnIgPSBjb250ZXh0X2JhcnJpZXJfdGFzayhjdHgsCi0JCQkJICAgQUxMX0VOR0lO RVMsIG1vY2tfYmFycmllcl90YXNrLCAmY291bnRlcik7CisJZXJyID0gY29udGV4dF9iYXJyaWVy X3Rhc2soY3R4LCBBTExfRU5HSU5FUywKKwkJCQkgICBOVUxMLCBtb2NrX2JhcnJpZXJfdGFzaywg JmNvdW50ZXIpOwogCWlmIChlcnIpIHsKIAkJcHJfZXJyKCJGYWlsZWQgYXQgbGluZSAlZCwgZXJy PSVkXG4iLCBfX0xJTkVfXywgZXJyKTsKIAkJZ290byBvdXQ7CkBAIC0xNzI2LDYgKzE4NTQsNyBA QCBpbnQgaTkxNV9nZW1fY29udGV4dF9saXZlX3NlbGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYpCiAJCVNVQlRFU1QoaWd0X2N0eF9leGVjKSwKIAkJU1VCVEVTVChpZ3Rf Y3R4X3JlYWRvbmx5KSwKIAkJU1VCVEVTVChpZ3RfY3R4X3NzZXUpLAorCQlTVUJURVNUKGlndF9z aGFyZWRfY3R4X2V4ZWMpLAogCQlTVUJURVNUKGlndF92bV9pc29sYXRpb24pLAogCX07CiAKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwppbmRleCA4MjZm ZDUxYzMzMWUuLjU3YjNkOTg2NzA3MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv c2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0 ZXN0cy9pOTE1X2dlbV9ndHQuYwpAQCAtMTAyMCw3ICsxMDIwLDYgQEAgc3RhdGljIGludCBleGVy Y2lzZV9wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAKIAllcnIgPSBm dW5jKGRldl9wcml2LCAmcHBndHQtPnZtLCAwLCBwcGd0dC0+dm0udG90YWwsIGVuZF90aW1lKTsK IAotCWk5MTVfcHBndHRfY2xvc2UoJnBwZ3R0LT52bSk7CiAJaTkxNV9wcGd0dF9wdXQocHBndHQp Owogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4 KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRl eHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwppbmRl eCA4ZWZhNjg5MmM2Y2QuLmY5MDMyOGIyMTc2MyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwpAQCAtNTQsMTMgKzU0LDE3IEBAIG1vY2tfY29udGV4 dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSwKIAkJZ290byBlcnJfaGFuZGxlczsKIAog CWlmIChuYW1lKSB7CisJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKKwogCQljdHgtPm5h bWUgPSBrc3RyZHVwKG5hbWUsIEdGUF9LRVJORUwpOwogCQlpZiAoIWN0eC0+bmFtZSkKIAkJCWdv dG8gZXJyX3B1dDsKIAotCQljdHgtPnBwZ3R0ID0gbW9ja19wcGd0dChpOTE1LCBuYW1lKTsKLQkJ aWYgKCFjdHgtPnBwZ3R0KQorCQlwcGd0dCA9IG1vY2tfcHBndHQoaTkxNSwgbmFtZSk7CisJCWlm ICghcHBndHQpCiAJCQlnb3RvIGVycl9wdXQ7CisKKwkJX19zZXRfcHBndHQoY3R4LCBwcGd0dCk7 CiAJfQogCiAJcmV0dXJuIGN0eDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaAppbmRleCAxYzY5ZWQxNmE5MjMuLjUw NzllMjU5MDllZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBi L2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApAQCAtMzQzLDYgKzM0Myw4IEBAIHR5cGVkZWYg c3RydWN0IF9kcm1faTkxNV9zYXJlYSB7CiAjZGVmaW5lIERSTV9JOTE1X1BFUkZfQUREX0NPTkZJ RwkweDM3CiAjZGVmaW5lIERSTV9JOTE1X1BFUkZfUkVNT1ZFX0NPTkZJRwkweDM4CiAjZGVmaW5l IERSTV9JOTE1X1FVRVJZCQkJMHgzOQorI2RlZmluZSBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFCQkw eDNhCisjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9ERVNUUk9ZCQkweDNiCiAvKiBNdXN0IGJlIGtl cHQgY29tcGFjdCAtLSBubyBob2xlcyAqLwogCiAjZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJ CURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBEUk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0 X3QpCkBAIC00MDIsNiArNDA0LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsK ICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUEVSRl9BRERfQ09ORklHCURSTV9JT1coRFJNX0NPTU1B TkRfQkFTRSArIERSTV9JOTE1X1BFUkZfQUREX0NPTkZJRywgc3RydWN0IGRybV9pOTE1X3BlcmZf b2FfY29uZmlnKQogI2RlZmluZSBEUk1fSU9DVExfSTkxNV9QRVJGX1JFTU9WRV9DT05GSUcJRFJN X0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUEVSRl9SRU1PVkVfQ09ORklHLCBfX3U2 NCkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUVVFUlkJCQlEUk1fSU9XUihEUk1fQ09NTUFORF9C QVNFICsgRFJNX0k5MTVfUVVFUlksIHN0cnVjdCBkcm1faTkxNV9xdWVyeSkKKyNkZWZpbmUgRFJN X0lPQ1RMX0k5MTVfR0VNX1ZNX0NSRUFURQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJN X0k5MTVfR0VNX1ZNX0NSRUFURSwgc3RydWN0IGRybV9pOTE1X2dlbV92bV9jb250cm9sKQorI2Rl ZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fVk1fREVTVFJPWQlEUk1fSU9XIChEUk1fQ09NTUFORF9C QVNFICsgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1ksIHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29u dHJvbCkKIAogLyogQWxsb3cgZHJpdmVycyB0byBzdWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5 IHRvIGhhcmR3YXJlLCByZWx5aW5nCiAgKiBvbiB0aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92 aWRlZCBieSBoYXJkd2FyZS4KQEAgLTE0NTMsNiArMTQ1NywzMyBAQCBzdHJ1Y3QgZHJtX2k5MTVf Z2VtX2NvbnRleHRfZGVzdHJveSB7CiAJX191MzIgcGFkOwogfTsKIAorLyoKKyAqIERSTV9JOTE1 X0dFTV9WTV9DUkVBVEUgLQorICoKKyAqIENyZWF0ZSBhIG5ldyB2aXJ0dWFsIG1lbW9yeSBhZGRy ZXNzIHNwYWNlIChwcEdUVCkgZm9yIHVzZSB3aXRoaW4gYSBjb250ZXh0CisgKiBvbiB0aGUgc2Ft ZSBmaWxlLiBFeHRlbnNpb25zIGNhbiBiZSBwcm92aWRlZCB0byBjb25maWd1cmUgZXhhY3RseSBo b3cgdGhlCisgKiBhZGRyZXNzIHNwYWNlIGlzIHNldHVwIHVwb24gY3JlYXRpb24uCisgKgorICog VGhlIGlkIG9mIG5ldyBWTSAoYm91bmQgdG8gdGhlIGZkKSBmb3IgdXNlIHdpdGggSTkxNV9DT05U RVhUX1BBUkFNX1ZNIGlzCisgKiByZXR1cm5lZCBpbiB0aGUgb3V0cGFyYW0gQGlkLgorICoKKyAq IE5vIGZsYWdzIGFyZSBkZWZpbmVkLCB3aXRoIGFsbCBiaXRzIHJlc2VydmVkIGFuZCBtdXN0IGJl IHplcm8uCisgKgorICogQW4gZXh0ZW5zaW9uIGNoYWluIG1heWJlIHByb3ZpZGVkLCBzdGFydGlu ZyB3aXRoIEBleHRlbnNpb25zLCBhbmQgdGVybWluYXRlZAorICogYnkgdGhlIEBuZXh0X2V4dGVu c2lvbiBiZWluZyAwLiBDdXJyZW50bHksIG5vIGV4dGVuc2lvbnMgYXJlIGRlZmluZWQuCisgKgor ICogRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kgLQorICoKKyAqIERlc3Ryb3lzIGEgcHJldmlvdXNs eSBjcmVhdGVkIFZNIGlkLCBzcGVjaWZpZWQgaW4gQGlkLgorICoKKyAqIE5vIGV4dGVuc2lvbnMg b3IgZmxhZ3MgYXJlIGFsbG93ZWQgY3VycmVudGx5LCBhbmQgc28gbXVzdCBiZSB6ZXJvLgorICov CitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wgeworCV9fdTY0IGV4dGVuc2lvbnM7CisJ X191MzIgZmxhZ3M7CisJX191MzIgaWQ7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQg ewogCS8qCiAJICogUmVnaXN0ZXIgb2Zmc2V0LgpAQCAtMTU0Miw3ICsxNTczLDE5IEBAIHN0cnVj dCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJhbSB7CiAgKiBPbiBjcmVhdGlvbiwgYWxsIG5ldyBj b250ZXh0cyBhcmUgbWFya2VkIGFzIHJlY292ZXJhYmxlLgogICovCiAjZGVmaW5lIEk5MTVfQ09O VEVYVF9QQVJBTV9SRUNPVkVSQUJMRQkweDgKKworCS8qCisJICogVGhlIGlkIG9mIHRoZSBhc3Nv Y2lhdGVkIHZpcnR1YWwgbWVtb3J5IGFkZHJlc3Mgc3BhY2UgKHBwR1RUKSBvZgorCSAqIHRoaXMg Y29udGV4dC4gQ2FuIGJlIHJldHJpZXZlZCBhbmQgcGFzc2VkIHRvIGFub3RoZXIgY29udGV4dAor CSAqIChvbiB0aGUgc2FtZSBmZCkgZm9yIGJvdGggdG8gdXNlIHRoZSBzYW1lIHBwR1RUIGFuZCBz byBzaGFyZQorCSAqIGFkZHJlc3MgbGF5b3V0cywgYW5kIGF2b2lkIHJlbG9hZGluZyB0aGUgcGFn ZSB0YWJsZXMgb24gY29udGV4dAorCSAqIHN3aXRjaGVzIGJldHdlZW4gdGhlbXNlbHZlcy4KKwkg KgorCSAqIFNlZSBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFIGFuZCBEUk1fSTkxNV9HRU1fVk1fREVT VFJPWS4KKwkgKi8KKyNkZWZpbmUgSTkxNV9DT05URVhUX1BBUkFNX1ZNCQkweDkKIC8qIE11c3Qg YmUga2VwdCBjb21wYWN0IC0tIG5vIGhvbGVzIGFuZCB3ZWxsIGRvY3VtZW50ZWQgKi8KKwogCV9f dTY0IHZhbHVlOwogfTsKIAotLSAKMi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZng=