From mboxrd@z Thu Jan 1 00:00:00 1970 From: Chris Wilson Subject: [PATCH 13/22] drm/i915: Create/destroy VM (ppGTT) for use with contexts Date: Mon, 18 Mar 2019 09:51:55 +0000 Message-ID: <20190318095204.9913-13-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 E8F9C89654 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 SW4gcHJlcGFyYXRpb24gdG8gbWFraW5nIHRoZSBwcEdUVCBiaW5kaW5nIGZvciBhIGNvbnRleHQg ZXhwbGljaXQgKHRvCmZhY2lsaXRhdGUgcmV1c2luZyB0aGUgc2FtZSBwcEdUVCBiZXR3ZWVuIGRp ZmZlcmVudCBjb250ZXh0cyksIGFsbG93IHRoZQp1c2VyIHRvIGNyZWF0ZSBhbmQgZGVzdHJveSBu YW1lZCBwcEdUVC4KCnYyOiBSZXBsYWNlIGdsb2JhbCBiYXJyaWVyIGZvciBzd2FwcGluZyBvdmVy IHRoZSBwcGd0dCBhbmQgdGxicyB3aXRoIGEKbG9jYWwgY29udGV4dCBiYXJyaWVyIChUdnJ0a28p CnYzOiBzZXJpYWxpc2Ugd2l0aCBzdHJ1Y3RfbXV0ZXg7IGl0J3MgbGF6eSBidXQgcmVxdWlyZWQg ZGFtbWl0CnY0OiBSZXdyaXRlIGlndF9jdHhfc2hhcmVkX2V4ZWMgdG8gYmUgbW9yZSBkaWZmZXJl bnQgKGFpbWVkIHRvIGJlIG1vcmUKc2ltaWxhcmx5LCB0dXJuZWQgb3V0IGRpZmZlcmVudCEpCgp2 NTogRml4IHVwIHRlc3QgdW53aW5kIGZvciBhbGlhc2luZy1wcGd0dCAoc25iKQp2NjogVGlnaHRl biBsYW5ndWFnZSBmb3IgdWFwaSBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3ZtX2NvbnRyb2wuCnY3OiBQ YXRjaCB0aGUgY29udGV4dCBpbWFnZSBmb3IgcnVudGltZSBwcGd0dCBzd2l0Y2hpbmchCgpUZXN0 Y2FzZTogaWd0L2dlbV92bV9jcmVhdGUKVGVzdGNhc2U6IGlndC9nZW1fY3R4X3BhcmFtL3ZtClRl c3RjYXNlOiBpZ3QvZ2VtX2N0eF9jbG9uZS92bQpUZXN0Y2FzZTogaWd0L2dlbV9jdHhfc2hhcmVk ClNpZ25lZC1vZmYtYnk6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVrPgpD YzogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jICAgICAgICAgICAgICAgfCAgIDIgKwogZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICAgICAgIHwgICAzICsKIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuYyAgICAgICB8IDMzMSArKysrKysrKysrKysrKysr Ky0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCAgICAgICB8ICAgNSAr CiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyAgICAgICAgICAgfCAgMTkgKy0K IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICAgICB8ICAxMSArLQog ZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYyAgIHwgICAxIC0KIC4u Li9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYyB8IDI0MyArKysrKysr KysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fZ3R0LmMgfCAg IDEgLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5jIHwgICA4 ICstCiBpbmNsdWRlL3VhcGkvZHJtL2k5MTVfZHJtLmggICAgICAgICAgICAgICAgICAgfCAgNDMg KysrCiAxMSBmaWxlcyBjaGFuZ2VkLCA1ODYgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKaW5kZXggYTNiMDBlY2M1OGM5Li5mYTk5MTE0NGUwZjIg MTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuYwpAQCAtMzEyMSw2ICszMTIxLDggQEAgc3RhdGljIGNv bnN0IHN0cnVjdCBkcm1faW9jdGxfZGVzYyBpOTE1X2lvY3Rsc1tdID0gewogCURSTV9JT0NUTF9E RUZfRFJWKEk5MTVfUEVSRl9BRERfQ09ORklHLCBpOTE1X3BlcmZfYWRkX2NvbmZpZ19pb2N0bCwg RFJNX1VOTE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVf UEVSRl9SRU1PVkVfQ09ORklHLCBpOTE1X3BlcmZfcmVtb3ZlX2NvbmZpZ19pb2N0bCwgRFJNX1VO TE9DS0VEfERSTV9SRU5ERVJfQUxMT1cpLAogCURSTV9JT0NUTF9ERUZfRFJWKEk5MTVfUVVFUlks IGk5MTVfcXVlcnlfaW9jdGwsIERSTV9VTkxPQ0tFRHxEUk1fUkVOREVSX0FMTE9XKSwKKwlEUk1f SU9DVExfREVGX0RSVihJOTE1X0dFTV9WTV9DUkVBVEUsIGk5MTVfZ2VtX3ZtX2NyZWF0ZV9pb2N0 bCwgRFJNX1JFTkRFUl9BTExPVyksCisJRFJNX0lPQ1RMX0RFRl9EUlYoSTkxNV9HRU1fVk1fREVT VFJPWSwgaTkxNV9nZW1fdm1fZGVzdHJveV9pb2N0bCwgRFJNX1JFTkRFUl9BTExPVyksCiB9Owog CiBzdGF0aWMgc3RydWN0IGRybV9kcml2ZXIgZHJpdmVyID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKaW5kZXggOTAzODkzMzNkZDQ3Li4yNjNhNjRkZGQ2ZDIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9k cnYuaApAQCAtMjIwLDYgKzIyMCw5IEBAIHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgewog CXN0cnVjdCBpZHIgY29udGV4dF9pZHI7CiAJc3RydWN0IG11dGV4IGNvbnRleHRfbG9jazsgLyog Z3VhcmRzIGNvbnRleHRfaWRyICovCiAKKwlzdHJ1Y3QgbXV0ZXggdm1fbG9jazsKKwlzdHJ1Y3Qg aWRyIHZtX2lkcjsKKwogCXVuc2lnbmVkIGludCBic2RfZW5naW5lOwogCiAvKgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCmluZGV4IDk0YzQ2NmQ0YjI5ZS4uYzM5MmY3YWY1 NTQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9jb250ZXh0LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5jCkBAIC05MCw2ICs5 MCw3IEBACiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X2dsb2JhbHMuaCIK ICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVkZSAiaTkxNV91c2VyX2V4dGVuc2lvbnMu aCIKICNpbmNsdWRlICJpbnRlbF9scmNfcmVnLmgiCiAjaW5jbHVkZSAiaW50ZWxfd29ya2Fyb3Vu ZHMuaCIKIApAQCAtMTIwLDEyICsxMjEsMTUgQEAgc3RhdGljIHZvaWQgbHV0X2Nsb3NlKHN0cnVj dCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJCWxpc3RfZGVsKCZsdXQtPm9ial9saW5rKTsKIAkJ aTkxNV9sdXRfaGFuZGxlX2ZyZWUobHV0KTsKIAl9CisJSU5JVF9MSVNUX0hFQUQoJmN0eC0+aGFu ZGxlc19saXN0KTsKIAogCXJjdV9yZWFkX2xvY2soKTsKIAlyYWRpeF90cmVlX2Zvcl9lYWNoX3Ns b3Qoc2xvdCwgJmN0eC0+aGFuZGxlc192bWEsICZpdGVyLCAwKSB7CiAJCXN0cnVjdCBpOTE1X3Zt YSAqdm1hID0gcmN1X2RlcmVmZXJlbmNlX3Jhdygqc2xvdCk7CiAKIAkJcmFkaXhfdHJlZV9pdGVy X2RlbGV0ZSgmY3R4LT5oYW5kbGVzX3ZtYSwgJml0ZXIsIHNsb3QpOworCisJCXZtYS0+b3Blbl9j b3VudC0tOwogCQlfX2k5MTVfZ2VtX29iamVjdF9yZWxlYXNlX3VubGVzc19hY3RpdmUodm1hLT5v YmopOwogCX0KIAlyY3VfcmVhZF91bmxvY2soKTsKQEAgLTMwNSw4ICszMDksNiBAQCBzdGF0aWMg dm9pZCBjb250ZXh0X2Nsb3NlKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgpCiAJICogdGhl IHBwZ3R0KS4KIAkgKi8KIAlsdXRfY2xvc2UoY3R4KTsKLQlpZiAoY3R4LT5wcGd0dCkKLQkJaTkx NV9wcGd0dF9jbG9zZSgmY3R4LT5wcGd0dC0+dm0pOwogCiAJY3R4LT5maWxlX3ByaXYgPSBFUlJf UFRSKC1FQkFERik7CiAJaTkxNV9nZW1fY29udGV4dF9wdXQoY3R4KTsKQEAgLTM3OCw2ICszODAs MjggQEAgX19jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJcmV0dXJuIGN0eDsKIH0KIAorc3RhdGljIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICoKK19fc2V0 X3BwZ3R0KHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsIHN0cnVjdCBpOTE1X2h3X3BwZ3R0 ICpwcGd0dCkKK3sKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqb2xkID0gY3R4LT5wcGd0dDsKKwor CWN0eC0+cHBndHQgPSBpOTE1X3BwZ3R0X2dldChwcGd0dCk7CisJY3R4LT5kZXNjX3RlbXBsYXRl ID0gZGVmYXVsdF9kZXNjX3RlbXBsYXRlKGN0eC0+aTkxNSwgcHBndHQpOworCisJcmV0dXJuIG9s ZDsKK30KKworc3RhdGljIHZvaWQgX19hc3NpZ25fcHBndHQoc3RydWN0IGk5MTVfZ2VtX2NvbnRl eHQgKmN0eCwKKwkJCSAgIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKK3sKKwlpZiAocHBn dHQgPT0gY3R4LT5wcGd0dCkKKwkJcmV0dXJuOworCisJcHBndHQgPSBfX3NldF9wcGd0dChjdHgs IHBwZ3R0KTsKKwlpZiAocHBndHQpCisJCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKK30KKwogc3Rh dGljIHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICoKIGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKQEAgLTQwMyw4ICs0MjcsOCBAQCBp OTE1X2dlbV9jcmVhdGVfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJCQlyZXR1cm4gRVJSX0NBU1QocHBndHQpOwogCQl9CiAKLQkJY3R4LT5wcGd0dCA9IHBwZ3R0 OwotCQljdHgtPmRlc2NfdGVtcGxhdGUgPSBkZWZhdWx0X2Rlc2NfdGVtcGxhdGUoZGV2X3ByaXYs IHBwZ3R0KTsKKwkJX19hc3NpZ25fcHBndHQoY3R4LCBwcGd0dCk7CisJCWk5MTVfcHBndHRfcHV0 KHBwZ3R0KTsKIAl9CiAKIAl0cmFjZV9pOTE1X2NvbnRleHRfY3JlYXRlKGN0eCk7CkBAIC01ODMs NiArNjA3LDEyIEBAIHN0YXRpYyBpbnQgY29udGV4dF9pZHJfY2xlYW51cChpbnQgaWQsIHZvaWQg KnAsIHZvaWQgKmRhdGEpCiAJcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgdm1faWRyX2NsZWFu dXAoaW50IGlkLCB2b2lkICpwLCB2b2lkICpkYXRhKQoreworCWk5MTVfcHBndHRfcHV0KHApOwor CXJldHVybiAwOworfQorCiBzdGF0aWMgaW50IGdlbV9jb250ZXh0X3JlZ2lzdGVyKHN0cnVjdCBp OTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCQkJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAq ZnByaXYpCiB7CkBAIC02MzMsOCArNjYzLDExIEBAIGludCBpOTE1X2dlbV9jb250ZXh0X29wZW4o c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsCiAJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKIAlpbnQgZXJyOwogCi0JaWRyX2luaXQoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwog CW11dGV4X2luaXQoJmZpbGVfcHJpdi0+Y29udGV4dF9sb2NrKTsKKwltdXRleF9pbml0KCZmaWxl X3ByaXYtPnZtX2xvY2spOworCisJaWRyX2luaXQoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIpOwor CWlkcl9pbml0X2Jhc2UoJmZpbGVfcHJpdi0+dm1faWRyLCAxKTsKIAogCW11dGV4X2xvY2soJmk5 MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCWN0eCA9IGk5MTVfZ2VtX2NyZWF0ZV9jb250ZXh0KGk5 MTUpOwpAQCAtNjU4LDggKzY5MSwxMCBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9vcGVuKHN0cnVj dCBkcm1faTkxNV9wcml2YXRlICppOTE1LAogCWNvbnRleHRfY2xvc2UoY3R4KTsKIAltdXRleF91 bmxvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogZXJyOgotCW11dGV4X2Rlc3Ryb3koJmZp bGVfcHJpdi0+Y29udGV4dF9sb2NrKTsKKwlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT52bV9pZHIp OwogCWlkcl9kZXN0cm95KCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyKTsKKwltdXRleF9kZXN0cm95 KCZmaWxlX3ByaXYtPnZtX2xvY2spOworCW11dGV4X2Rlc3Ryb3koJmZpbGVfcHJpdi0+Y29udGV4 dF9sb2NrKTsKIAlyZXR1cm4gUFRSX0VSUihjdHgpOwogfQogCkBAIC02NzIsNiArNzA3LDk5IEBA IHZvaWQgaTkxNV9nZW1fY29udGV4dF9jbG9zZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCiAJaWRy X2Zvcl9lYWNoKCZmaWxlX3ByaXYtPmNvbnRleHRfaWRyLCBjb250ZXh0X2lkcl9jbGVhbnVwLCBO VUxMKTsKIAlpZHJfZGVzdHJveSgmZmlsZV9wcml2LT5jb250ZXh0X2lkcik7CiAJbXV0ZXhfZGVz dHJveSgmZmlsZV9wcml2LT5jb250ZXh0X2xvY2spOworCisJaWRyX2Zvcl9lYWNoKCZmaWxlX3By aXYtPnZtX2lkciwgdm1faWRyX2NsZWFudXAsIE5VTEwpOworCWlkcl9kZXN0cm95KCZmaWxlX3By aXYtPnZtX2lkcik7CisJbXV0ZXhfZGVzdHJveSgmZmlsZV9wcml2LT52bV9sb2NrKTsKK30KKwor aW50IGk5MTVfZ2VtX3ZtX2NyZWF0ZV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lk ICpkYXRhLAorCQkJICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUpCit7CisJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X2dlbV92 bV9jb250cm9sICphcmdzID0gZGF0YTsKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpm aWxlX3ByaXYgPSBmaWxlLT5kcml2ZXJfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBn dHQ7CisJaW50IGVycjsKKworCWlmICghSEFTX0ZVTExfUFBHVFQoaTkxNSkpCisJCXJldHVybiAt RU5PREVWOworCisJaWYgKGFyZ3MtPmZsYWdzKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXBwZ3R0 ID0gaTkxNV9wcGd0dF9jcmVhdGUoaTkxNSk7CisJaWYgKElTX0VSUihwcGd0dCkpCisJCXJldHVy biBQVFJfRVJSKHBwZ3R0KTsKKworCXBwZ3R0LT52bS5maWxlID0gZmlsZV9wcml2OworCisJaWYg KGFyZ3MtPmV4dGVuc2lvbnMpIHsKKwkJZXJyID0gaTkxNV91c2VyX2V4dGVuc2lvbnModTY0X3Rv X3VzZXJfcHRyKGFyZ3MtPmV4dGVuc2lvbnMpLAorCQkJCQkgICBOVUxMLCAwLAorCQkJCQkgICBw cGd0dCk7CisJCWlmIChlcnIpCisJCQlnb3RvIGVycl9wdXQ7CisJfQorCisJZXJyID0gbXV0ZXhf bG9ja19pbnRlcnJ1cHRpYmxlKCZmaWxlX3ByaXYtPnZtX2xvY2spOworCWlmIChlcnIpCisJCWdv dG8gZXJyX3B1dDsKKworCWVyciA9IGlkcl9hbGxvYygmZmlsZV9wcml2LT52bV9pZHIsIHBwZ3R0 LCAwLCAwLCBHRlBfS0VSTkVMKTsKKwlpZiAoZXJyIDwgMCkKKwkJZ290byBlcnJfdW5sb2NrOwor CisJR0VNX0JVR19PTihlcnIgPT0gMCk7IC8qIHJlc2VydmVkIGZvciBkZWZhdWx0L3VuYXNzaWdu ZWQgcHBndHQgKi8KKwlwcGd0dC0+dXNlcl9oYW5kbGUgPSBlcnI7CisKKwltdXRleF91bmxvY2so JmZpbGVfcHJpdi0+dm1fbG9jayk7CisKKwlhcmdzLT52bV9pZCA9IGVycjsKKwlyZXR1cm4gMDsK KworZXJyX3VubG9jazoKKwltdXRleF91bmxvY2soJmZpbGVfcHJpdi0+dm1fbG9jayk7CitlcnJf cHV0OgorCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKKwlyZXR1cm4gZXJyOworfQorCitpbnQgaTkx NV9nZW1fdm1fZGVzdHJveV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRh LAorCQkJICAgICAgc3RydWN0IGRybV9maWxlICpmaWxlKQoreworCXN0cnVjdCBkcm1faTkxNV9m aWxlX3ByaXZhdGUgKmZpbGVfcHJpdiA9IGZpbGUtPmRyaXZlcl9wcml2OworCXN0cnVjdCBkcm1f aTkxNV9nZW1fdm1fY29udHJvbCAqYXJncyA9IGRhdGE7CisJc3RydWN0IGk5MTVfaHdfcHBndHQg KnBwZ3R0OworCWludCBlcnI7CisJdTMyIGlkOworCisJaWYgKGFyZ3MtPmZsYWdzKQorCQlyZXR1 cm4gLUVJTlZBTDsKKworCWlmIChhcmdzLT5leHRlbnNpb25zKQorCQlyZXR1cm4gLUVJTlZBTDsK KworCWlkID0gYXJncy0+dm1faWQ7CisJaWYgKCFpZCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwll cnIgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJmZpbGVfcHJpdi0+dm1fbG9jayk7CisJaWYg KGVycikKKwkJcmV0dXJuIGVycjsKKworCXBwZ3R0ID0gaWRyX3JlbW92ZSgmZmlsZV9wcml2LT52 bV9pZHIsIGlkKTsKKwlpZiAocHBndHQpIHsKKwkJR0VNX0JVR19PTighcHBndHQtPnVzZXJfaGFu ZGxlKTsKKwkJcHBndHQtPnVzZXJfaGFuZGxlID0gMDsKKwl9CisKKwltdXRleF91bmxvY2soJmZp bGVfcHJpdi0+dm1fbG9jayk7CisJaWYgKCFwcGd0dCkKKwkJcmV0dXJuIC1FTk9FTlQ7CisKKwlp OTE1X3BwZ3R0X3B1dChwcGd0dCk7CisJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgaTkx NV9yZXF1ZXN0ICoKQEAgLTcxNSwxMiArODQzLDEzIEBAIHN0YXRpYyB2b2lkIGNiX3JldGlyZShz dHJ1Y3QgaTkxNV9hY3RpdmUgKmJhc2UpCiBJOTE1X1NFTEZURVNUX0RFQ0xBUkUoc3RhdGljIHVu c2lnbmVkIGxvbmcgY29udGV4dF9iYXJyaWVyX2luamVjdF9mYXVsdCk7CiBzdGF0aWMgaW50IGNv bnRleHRfYmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJCQkJdW5z aWduZWQgbG9uZyBlbmdpbmVzLAorCQkJCWludCAoKmVtaXQpKHN0cnVjdCBpOTE1X3JlcXVlc3Qg KnJxLCB2b2lkICpkYXRhKSwKIAkJCQl2b2lkICgqdGFzaykodm9pZCAqZGF0YSksCiAJCQkJdm9p ZCAqZGF0YSkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGN0eC0+aTkxNTsK IAlzdHJ1Y3QgY29udGV4dF9iYXJyaWVyX3Rhc2sgKmNiOwotCXN0cnVjdCBpbnRlbF9jb250ZXh0 ICpjZTsKKwlzdHJ1Y3QgaW50ZWxfY29udGV4dCAqY2UsICpuZXh0OwogCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOwogCWludCBlcnIgPSAwOwogCkBAIC03MzUsMTEgKzg2NCwxMSBAQCBzdGF0aWMg aW50IGNvbnRleHRfYmFycmllcl90YXNrKHN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHgsCiAJ aTkxNV9hY3RpdmVfYWNxdWlyZSgmY2ItPmJhc2UpOwogCiAJd2FrZXJlZiA9IGludGVsX3J1bnRp bWVfcG1fZ2V0KGk5MTUpOwotCWxpc3RfZm9yX2VhY2hfZW50cnkoY2UsICZjdHgtPmFjdGl2ZV9l bmdpbmVzLCBhY3RpdmVfbGluaykgeworCXJidHJlZV9wb3N0b3JkZXJfZm9yX2VhY2hfZW50cnlf c2FmZShjZSwgbmV4dCwgJmN0eC0+aHdfY29udGV4dHMsIG5vZGUpIHsKIAkJc3RydWN0IGludGVs X2VuZ2luZV9jcyAqZW5naW5lID0gY2UtPmVuZ2luZTsKIAkJc3RydWN0IGk5MTVfcmVxdWVzdCAq cnE7CiAKLQkJaWYgKCEoY2UtPmVuZ2luZS0+bWFzayAmIGVuZ2luZXMpKQorCQlpZiAoIShlbmdp bmUtPm1hc2sgJiBlbmdpbmVzKSkKIAkJCWNvbnRpbnVlOwogCiAJCWlmIChJOTE1X1NFTEZURVNU X09OTFkoY29udGV4dF9iYXJyaWVyX2luamVjdF9mYXVsdCAmCkBAIC03NTQsNyArODgzLDEyIEBA IHN0YXRpYyBpbnQgY29udGV4dF9iYXJyaWVyX3Rhc2soc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eCwKIAkJCWJyZWFrOwogCQl9CiAKLQkJZXJyID0gaTkxNV9hY3RpdmVfcmVmKCZjYi0+YmFz ZSwgcnEtPmZlbmNlLmNvbnRleHQsIHJxKTsKKwkJZXJyID0gMDsKKwkJaWYgKGVtaXQpCisJCQll cnIgPSBlbWl0KHJxLCBkYXRhKTsKKwkJaWYgKGVyciA9PSAwKQorCQkJZXJyID0gaTkxNV9hY3Rp dmVfcmVmKCZjYi0+YmFzZSwgcnEtPmZlbmNlLmNvbnRleHQsIHJxKTsKKwogCQlpOTE1X3JlcXVl c3RfYWRkKHJxKTsKIAkJaWYgKGVycikKIAkJCWJyZWFrOwpAQCAtODE3LDYgKzk1MSwxNzAgQEAg aW50IGk5MTVfZ2VtX3N3aXRjaF90b19rZXJuZWxfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSwKIAlyZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBnZXRfcHBndHQoc3RydWN0 IGk5MTVfZ2VtX2NvbnRleHQgKmN0eCwKKwkJICAgICBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRl eHRfcGFyYW0gKmFyZ3MpCit7CisJc3RydWN0IGRybV9pOTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9w cml2ID0gY3R4LT5maWxlX3ByaXY7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0OworCWlu dCByZXQ7CisKKwlpZiAoIWN0eC0+cHBndHQpCisJCXJldHVybiAtRU5PREVWOworCisJLyogWFhY IHJjdSBhY3F1aXJlPyAqLworCXJldCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmY3R4LT5p OTE1LT5kcm0uc3RydWN0X211dGV4KTsKKwlpZiAocmV0KQorCQlyZXR1cm4gcmV0OworCisJcHBn dHQgPSBpOTE1X3BwZ3R0X2dldChjdHgtPnBwZ3R0KTsKKwltdXRleF91bmxvY2soJmN0eC0+aTkx NS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUo JmZpbGVfcHJpdi0+dm1fbG9jayk7CisJaWYgKHJldCkKKwkJZ290byBlcnJfcHV0OworCisJaWYg KCFwcGd0dC0+dXNlcl9oYW5kbGUpIHsKKwkJcmV0ID0gaWRyX2FsbG9jKCZmaWxlX3ByaXYtPnZt X2lkciwgcHBndHQsIDAsIDAsIEdGUF9LRVJORUwpOworCQlHRU1fQlVHX09OKCFyZXQpOworCQlp ZiAocmV0IDwgMCkKKwkJCWdvdG8gZXJyX3VubG9jazsKKworCQlwcGd0dC0+dXNlcl9oYW5kbGUg PSByZXQ7CisJCWk5MTVfcHBndHRfZ2V0KHBwZ3R0KTsKKwl9CisKKwlhcmdzLT5zaXplID0gMDsK KwlhcmdzLT52YWx1ZSA9IHBwZ3R0LT51c2VyX2hhbmRsZTsKKworCXJldCA9IDA7CitlcnJfdW5s b2NrOgorCW11dGV4X3VubG9jaygmZmlsZV9wcml2LT52bV9sb2NrKTsKK2Vycl9wdXQ6CisJaTkx NV9wcGd0dF9wdXQocHBndHQpOworCXJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9w cGd0dF9iYXJyaWVyKHZvaWQgKmRhdGEpCit7CisJc3RydWN0IGk5MTVfaHdfcHBndHQgKm9sZCA9 IGRhdGE7CisKKwlpZiAoSU5URUxfR0VOKG9sZC0+dm0uaTkxNSkgPCA4KQorCQlnZW42X3BwZ3R0 X3VucGluX2FsbChvbGQpOworCisJaTkxNV9wcGd0dF9wdXQob2xkKTsKK30KKworc3RhdGljIGlu dCBlbWl0X3BwZ3R0X3VwZGF0ZShzdHJ1Y3QgaTkxNV9yZXF1ZXN0ICpycSwgdm9pZCAqZGF0YSkK K3sKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQgPSBycS0+Z2VtX2NvbnRleHQtPnBwZ3R0 OworCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSA9IHJxLT5lbmdpbmU7CisJdTMyICpj czsKKwlpbnQgaTsKKworCWlmIChpOTE1X3ZtX2lzXzRsdmwoJnBwZ3R0LT52bSkpIHsKKwkJY29u c3QgZG1hX2FkZHJfdCBwZF9kYWRkciA9IHB4X2RtYSgmcHBndHQtPnBtbDQpOworCisJCWNzID0g aW50ZWxfcmluZ19iZWdpbihycSwgNik7CisJCWlmIChJU19FUlIoY3MpKQorCQkJcmV0dXJuIFBU Ul9FUlIoY3MpOworCisJCSpjcysrID0gTUlfTE9BRF9SRUdJU1RFUl9JTU0oMik7CisKKwkJKmNz KysgPSBpOTE1X21taW9fcmVnX29mZnNldChHRU44X1JJTkdfUERQX1VEVyhlbmdpbmUsIDApKTsK KwkJKmNzKysgPSB1cHBlcl8zMl9iaXRzKHBkX2RhZGRyKTsKKwkJKmNzKysgPSBpOTE1X21taW9f cmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIDApKTsKKwkJKmNzKysgPSBsb3dl cl8zMl9iaXRzKHBkX2RhZGRyKTsKKworCQkqY3MrKyA9IE1JX05PT1A7CisJCWludGVsX3Jpbmdf YWR2YW5jZShycSwgY3MpOworCX0gZWxzZSBpZiAoSEFTX0xPR0lDQUxfUklOR19DT05URVhUUyhl bmdpbmUtPmk5MTUpKSB7CisJCWNzID0gaW50ZWxfcmluZ19iZWdpbihycSwgNCAqIEdFTjhfM0xW TF9QRFBFUyArIDIpOworCQlpZiAoSVNfRVJSKGNzKSkKKwkJCXJldHVybiBQVFJfRVJSKGNzKTsK KworCQkqY3MrKyA9IE1JX0xPQURfUkVHSVNURVJfSU1NKDIgKiBHRU44XzNMVkxfUERQRVMpOwor CQlmb3IgKGkgPSBHRU44XzNMVkxfUERQRVM7IGktLTsgKSB7CisJCQljb25zdCBkbWFfYWRkcl90 IHBkX2RhZGRyID0gaTkxNV9wYWdlX2Rpcl9kbWFfYWRkcihwcGd0dCwgaSk7CisKKwkJCSpjcysr ID0gaTkxNV9tbWlvX3JlZ19vZmZzZXQoR0VOOF9SSU5HX1BEUF9VRFcoZW5naW5lLCBpKSk7CisJ CQkqY3MrKyA9IHVwcGVyXzMyX2JpdHMocGRfZGFkZHIpOworCQkJKmNzKysgPSBpOTE1X21taW9f cmVnX29mZnNldChHRU44X1JJTkdfUERQX0xEVyhlbmdpbmUsIGkpKTsKKwkJCSpjcysrID0gbG93 ZXJfMzJfYml0cyhwZF9kYWRkcik7CisJCX0KKwkJKmNzKysgPSBNSV9OT09QOworCQlpbnRlbF9y aW5nX2FkdmFuY2UocnEsIGNzKTsKKwl9IGVsc2UgeworCQkvKiBwcEdUVCBpcyBub3QgcGFydCBv ZiB0aGUgbGVnYWN5IGNvbnRleHQgaW1hZ2UgKi8KKwkJZ2VuNl9wcGd0dF9waW4ocHBndHQpOwor CX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IHNldF9wcGd0dChzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4LAorCQkgICAgIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4dF9wYXJh bSAqYXJncykKK3sKKwlzdHJ1Y3QgZHJtX2k5MTVfZmlsZV9wcml2YXRlICpmaWxlX3ByaXYgPSBj dHgtPmZpbGVfcHJpdjsKKwlzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQsICpvbGQ7CisJaW50 IGVycjsKKworCWlmIChhcmdzLT5zaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCWlmICghY3R4 LT5wcGd0dCkKKwkJcmV0dXJuIC1FTk9ERVY7CisKKwlpZiAodXBwZXJfMzJfYml0cyhhcmdzLT52 YWx1ZSkpCisJCXJldHVybiAtRU5PRU5UOworCisJZXJyID0gbXV0ZXhfbG9ja19pbnRlcnJ1cHRp YmxlKCZmaWxlX3ByaXYtPnZtX2xvY2spOworCWlmIChlcnIpCisJCXJldHVybiBlcnI7CisKKwlw cGd0dCA9IGlkcl9maW5kKCZmaWxlX3ByaXYtPnZtX2lkciwgYXJncy0+dmFsdWUpOworCWlmIChw cGd0dCkgeworCQlHRU1fQlVHX09OKHBwZ3R0LT51c2VyX2hhbmRsZSAhPSBhcmdzLT52YWx1ZSk7 CisJCWk5MTVfcHBndHRfZ2V0KHBwZ3R0KTsKKwl9CisJbXV0ZXhfdW5sb2NrKCZmaWxlX3ByaXYt PnZtX2xvY2spOworCWlmICghcHBndHQpCisJCXJldHVybiAtRU5PRU5UOworCisJZXJyID0gbXV0 ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZjdHgtPmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOworCWlm IChlcnIpCisJCWdvdG8gb3V0OworCisJaWYgKHBwZ3R0ID09IGN0eC0+cHBndHQpCisJCWdvdG8g dW5sb2NrOworCisJLyogVGVhcmRvd24gdGhlIGV4aXN0aW5nIG9iajp2bWEgY2FjaGUsIGl0IHdp bGwgaGF2ZSB0byBiZSByZWJ1aWx0LiAqLworCWx1dF9jbG9zZShjdHgpOworCisJb2xkID0gX19z ZXRfcHBndHQoY3R4LCBwcGd0dCk7CisKKwkvKgorCSAqIFdlIG5lZWQgdG8gZmx1c2ggYW55IHJl cXVlc3RzIHVzaW5nIHRoZSBjdXJyZW50IHBwZ3R0IGJlZm9yZQorCSAqIHdlIHJlbGVhc2UgaXQg YXMgdGhlIHJlcXVlc3RzIGRvIG5vdCBob2xkIGEgcmVmZXJlbmNlIHRoZW1zZWx2ZXMsCisJICog b25seSBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIGNvbnRleHQuCisJICovCisJZXJyID0gY29udGV4 dF9iYXJyaWVyX3Rhc2soY3R4LCBBTExfRU5HSU5FUywKKwkJCQkgICBlbWl0X3BwZ3R0X3VwZGF0 ZSwKKwkJCQkgICBzZXRfcHBndHRfYmFycmllciwKKwkJCQkgICBvbGQpOworCWlmIChlcnIpIHsK KwkJY3R4LT5wcGd0dCA9IG9sZDsKKwkJY3R4LT5kZXNjX3RlbXBsYXRlID0gZGVmYXVsdF9kZXNj X3RlbXBsYXRlKGN0eC0+aTkxNSwgb2xkKTsKKwkJaTkxNV9wcGd0dF9wdXQocHBndHQpOworCX0K KwordW5sb2NrOgorCW11dGV4X3VubG9jaygmY3R4LT5pOTE1LT5kcm0uc3RydWN0X211dGV4KTsK Kworb3V0OgorCWk5MTVfcHBndHRfcHV0KHBwZ3R0KTsKKwlyZXR1cm4gZXJyOworfQorCiBzdGF0 aWMgYm9vbCBjbGllbnRfaXNfYmFubmVkKHN0cnVjdCBkcm1faTkxNV9maWxlX3ByaXZhdGUgKmZp bGVfcHJpdikKIHsKIAlyZXR1cm4gYXRvbWljX3JlYWQoJmZpbGVfcHJpdi0+YmFuX3Njb3JlKSA+ PSBJOTE1X0NMSUVOVF9TQ09SRV9CQU5ORUQ7CkBAIC05OTUsNiArMTI5Myw5IEBAIGludCBpOTE1 X2dlbV9jb250ZXh0X2dldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCiAJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKIAkJcmV0ID0gZ2V0X3NzZXUo Y3R4LCBhcmdzKTsKIAkJYnJlYWs7CisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fVk06CisJCXJl dCA9IGdldF9wcGd0dChjdHgsIGFyZ3MpOworCQlicmVhazsKIAlkZWZhdWx0OgogCQlyZXQgPSAt RUlOVkFMOwogCQlicmVhazsKQEAgLTEyOTYsOSArMTU5Nyw2IEBAIGludCBpOTE1X2dlbV9jb250 ZXh0X3NldHBhcmFtX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCiAJ CXJldHVybiAtRU5PRU5UOwogCiAJc3dpdGNoIChhcmdzLT5wYXJhbSkgewotCWNhc2UgSTkxNV9D T05URVhUX1BBUkFNX0JBTl9QRVJJT0Q6Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWJyZWFrOwogCWNh c2UgSTkxNV9DT05URVhUX1BBUkFNX05PX1pFUk9NQVA6CiAJCWlmIChhcmdzLT5zaXplKQogCQkJ cmV0ID0gLUVJTlZBTDsKQEAgLTEzNTQsOSArMTY1MiwxNiBAQCBpbnQgaTkxNV9nZW1fY29udGV4 dF9zZXRwYXJhbV9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAogCQkJ CQlJOTE1X1VTRVJfUFJJT1JJVFkocHJpb3JpdHkpOwogCQl9CiAJCWJyZWFrOworCiAJY2FzZSBJ OTE1X0NPTlRFWFRfUEFSQU1fU1NFVToKIAkJcmV0ID0gc2V0X3NzZXUoY3R4LCBhcmdzKTsKIAkJ YnJlYWs7CisKKwljYXNlIEk5MTVfQ09OVEVYVF9QQVJBTV9WTToKKwkJcmV0ID0gc2V0X3BwZ3R0 KGN0eCwgYXJncyk7CisJCWJyZWFrOworCisJY2FzZSBJOTE1X0NPTlRFWFRfUEFSQU1fQkFOX1BF UklPRDoKIAlkZWZhdWx0OgogCQlyZXQgPSAtRUlOVkFMOwogCQlicmVhazsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaCBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaAppbmRleCA1YTMyYzRiNDgxNmYuLjFlNjcwMzcyODky YyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fY29udGV4dC5oCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2NvbnRleHQuaApAQCAtMTUzLDYgKzE1 MywxMSBAQCB2b2lkIGk5MTVfZ2VtX2NvbnRleHRfcmVsZWFzZShzdHJ1Y3Qga3JlZiAqY3R4X3Jl Zik7CiBzdHJ1Y3QgaTkxNV9nZW1fY29udGV4dCAqCiBpOTE1X2dlbV9jb250ZXh0X2NyZWF0ZV9n dnQoc3RydWN0IGRybV9kZXZpY2UgKmRldik7CiAKK2ludCBpOTE1X2dlbV92bV9jcmVhdGVfaW9j dGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKKwkJCSAgICAgc3RydWN0IGRy bV9maWxlICpmaWxlKTsKK2ludCBpOTE1X2dlbV92bV9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsCisJCQkgICAgICBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUp OworCiBpbnQgaTkxNV9nZW1fY29udGV4dF9jcmVhdGVfaW9jdGwoc3RydWN0IGRybV9kZXZpY2Ug KmRldiwgdm9pZCAqZGF0YSwKIAkJCQkgIHN0cnVjdCBkcm1fZmlsZSAqZmlsZSk7CiBpbnQgaTkx NV9nZW1fY29udGV4dF9kZXN0cm95X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQg KmRhdGEsCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IGI5ZTBlM2EwMDIyMy4u NzM2Yzg0NWViNzdmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9n dHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMTkzNyw2 ICsxOTM3LDggQEAgaW50IGdlbjZfcHBndHRfcGluKHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpiYXNl KQogCXN0cnVjdCBnZW42X2h3X3BwZ3R0ICpwcGd0dCA9IHRvX2dlbjZfcHBndHQoYmFzZSk7CiAJ aW50IGVycjsKIAorCUdFTV9CVUdfT04ocHBndHQtPmJhc2Uudm0uY2xvc2VkKTsKKwogCS8qCiAJ ICogV29ya2Fyb3VuZCB0aGUgbGltaXRlZCBtYXhpbXVtIHZtYS0+cGluX2NvdW50IGFuZCB0aGUg YWxpYXNpbmdfcHBndHQKIAkgKiB3aGljaCB3aWxsIGJlIHBpbm5lZCBpbnRvIGV2ZXJ5IGFjdGl2 ZSBjb250ZXh0LgpAQCAtMTk3NSw2ICsxOTc3LDE3IEBAIHZvaWQgZ2VuNl9wcGd0dF91bnBpbihz dHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFzZSkKIAlpOTE1X3ZtYV91bnBpbihwcGd0dC0+dm1hKTsK IH0KIAordm9pZCBnZW42X3BwZ3R0X3VucGluX2FsbChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFz ZSkKK3sKKwlzdHJ1Y3QgZ2VuNl9od19wcGd0dCAqcHBndHQgPSB0b19nZW42X3BwZ3R0KGJhc2Up OworCisJaWYgKCFwcGd0dC0+cGluX2NvdW50KQorCQlyZXR1cm47CisKKwlwcGd0dC0+cGluX2Nv dW50ID0gMDsKKwlpOTE1X3ZtYV91bnBpbihwcGd0dC0+dm1hKTsKK30KKwogc3RhdGljIHN0cnVj dCBpOTE1X2h3X3BwZ3R0ICpnZW42X3BwZ3R0X2NyZWF0ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqaTkxNSkKIHsKIAlzdHJ1Y3QgaTkxNV9nZ3R0ICogY29uc3QgZ2d0dCA9ICZpOTE1LT5nZ3R0 OwpAQCAtMjA4MiwxMiArMjA5NSw2IEBAIGk5MTVfcHBndHRfY3JlYXRlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICppOTE1KQogCXJldHVybiBwcGd0dDsKIH0KIAotdm9pZCBpOTE1X3BwZ3R0X2Ns b3NlKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQotewotCUdFTV9CVUdfT04odm0tPmNs b3NlZCk7Ci0Jdm0tPmNsb3NlZCA9IHRydWU7Ci19Ci0KIHN0YXRpYyB2b2lkIHBwZ3R0X2Rlc3Ry b3lfdm1hKHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKQogewogCXN0cnVjdCBsaXN0X2hl YWQgKnBoYXNlc1tdID0gewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZ3R0LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAppbmRleCBiNzZh YjRjMmEwZTYuLjE0OTgzZmI2M2MzZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9nZW1fZ3R0LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgK QEAgLTM5MSwxMSArMzkxLDE0IEBAIHN0cnVjdCBpOTE1X2h3X3BwZ3R0IHsKIAlzdHJ1Y3Qga3Jl ZiByZWY7CiAKIAl1bnNpZ25lZCBsb25nIHBkX2RpcnR5X2VuZ2luZXM7CisKIAl1bmlvbiB7CiAJ CXN0cnVjdCBpOTE1X3BtbDQgcG1sNDsJCS8qIEdFTjgrICYgNDhiIFBQR1RUICovCiAJCXN0cnVj dCBpOTE1X3BhZ2VfZGlyZWN0b3J5X3BvaW50ZXIgcGRwOwkvKiBHRU44KyAqLwogCQlzdHJ1Y3Qg aTkxNV9wYWdlX2RpcmVjdG9yeSBwZDsJCS8qIEdFTjYtNyAqLwogCX07CisKKwl1MzIgdXNlcl9o YW5kbGU7CiB9OwogCiBzdHJ1Y3QgZ2VuNl9od19wcGd0dCB7CkBAIC02MDUsMTMgKzYwOCwxMiBA QCB2b2lkIGk5MTVfZ2d0dF9jbGVhbnVwX2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdik7CiBpbnQgaTkxNV9wcGd0dF9pbml0X2h3KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdik7CiAKIHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICppOTE1X3BwZ3R0X2NyZWF0ZShzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpOwotdm9pZCBpOTE1X3BwZ3R0X2Nsb3NlKHN0 cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtKTsKIHZvaWQgaTkxNV9wcGd0dF9yZWxlYXNlKHN0 cnVjdCBrcmVmICprcmVmKTsKIAotc3RhdGljIGlubGluZSB2b2lkIGk5MTVfcHBndHRfZ2V0KHN0 cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKK3N0YXRpYyBpbmxpbmUgc3RydWN0IGk5MTVfaHdf cHBndHQgKmk5MTVfcHBndHRfZ2V0KHN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dCkKIHsKLQlp ZiAocHBndHQpCi0JCWtyZWZfZ2V0KCZwcGd0dC0+cmVmKTsKKwlrcmVmX2dldCgmcHBndHQtPnJl Zik7CisJcmV0dXJuIHBwZ3R0OwogfQogCiBzdGF0aWMgaW5saW5lIHZvaWQgaTkxNV9wcGd0dF9w dXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBwZ3R0KQpAQCAtNjIyLDYgKzYyNCw3IEBAIHN0YXRp YyBpbmxpbmUgdm9pZCBpOTE1X3BwZ3R0X3B1dChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQp CiAKIGludCBnZW42X3BwZ3R0X3BpbihzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFzZSk7CiB2b2lk IGdlbjZfcHBndHRfdW5waW4oc3RydWN0IGk5MTVfaHdfcHBndHQgKmJhc2UpOwordm9pZCBnZW42 X3BwZ3R0X3VucGluX2FsbChzdHJ1Y3QgaTkxNV9od19wcGd0dCAqYmFzZSk7CiAKIHZvaWQgaTkx NV9jaGVja19hbmRfY2xlYXJfZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp dik7CiB2b2lkIGk5MTVfZ2VtX3N1c3BlbmRfZ3R0X21hcHBpbmdzKHN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxm dGVzdHMvaHVnZV9wYWdlcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2Vf cGFnZXMuYwppbmRleCBjNWM4YmE2YzA1OWYuLjkwNzIxYjU0ZTdhZSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2h1Z2VfcGFnZXMuYworKysgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9zZWxmdGVzdHMvaHVnZV9wYWdlcy5jCkBAIC0xNzMyLDcgKzE3MzIsNiBAQCBp bnQgaTkxNV9nZW1faHVnZV9wYWdlX21vY2tfc2VsZnRlc3RzKHZvaWQpCiAJZXJyID0gaTkxNV9z dWJ0ZXN0cyh0ZXN0cywgcHBndHQpOwogCiBvdXRfY2xvc2U6Ci0JaTkxNV9wcGd0dF9jbG9zZSgm cHBndHQtPnZtKTsKIAlpOTE1X3BwZ3R0X3B1dChwcGd0dCk7CiAKIG91dF91bmxvY2s6CmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5j IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYwppbmRl eCA0ZGM5NmUyOGQ4OWYuLjI4YzIzMzRhYmNhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2NvbnRleHQuYworKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9zZWxmdGVzdHMvaTkxNV9nZW1fY29udGV4dC5jCkBAIC0zNzMsNyArMzczLDggQEAgc3Rh dGljIGludCBjcHVfZmlsbChzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1MzIgdmFs dWUpCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgY3B1X2NoZWNrKHN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmosIHVuc2lnbmVkIGludCBtYXgpCitzdGF0aWMgbm9pbmxpbmUgaW50 IGNwdV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAorCQkJICAgICAgdW5z aWduZWQgaW50IGlkeCwgdW5zaWduZWQgaW50IG1heCkKIHsKIAl1bnNpZ25lZCBpbnQgbiwgbSwg bmVlZHNfZmx1c2g7CiAJaW50IGVycjsKQEAgLTM5MSw4ICszOTIsMTAgQEAgc3RhdGljIGludCBj cHVfY2hlY2soc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwgdW5zaWduZWQgaW50IG1h eCkKIAogCQlmb3IgKG0gPSAwOyBtIDwgbWF4OyBtKyspIHsKIAkJCWlmIChtYXBbbV0gIT0gbSkg ewotCQkJCXByX2VycigiSW52YWxpZCB2YWx1ZSBhdCBwYWdlICVkLCBvZmZzZXQgJWQ6IGZvdW5k ICV4IGV4cGVjdGVkICV4XG4iLAotCQkJCSAgICAgICBuLCBtLCBtYXBbbV0sIG0pOworCQkJCXBy X2VycigiJXBTOiBJbnZhbGlkIHZhbHVlIGF0IG9iamVjdCAlZCBwYWdlICVkLyVsZCwgb2Zmc2V0 ICVkLyVkOiBmb3VuZCAleCBleHBlY3RlZCAleFxuIiwKKwkJCQkgICAgICAgX19idWlsdGluX3Jl dHVybl9hZGRyZXNzKDApLCBpZHgsCisJCQkJICAgICAgIG4sIHJlYWxfcGFnZV9jb3VudChvYmop LCBtLCBtYXgsCisJCQkJICAgICAgIG1hcFttXSwgbSk7CiAJCQkJZXJyID0gLUVJTlZBTDsKIAkJ CQlnb3RvIG91dF91bm1hcDsKIAkJCX0KQEAgLTQwMCw4ICs0MDMsOSBAQCBzdGF0aWMgaW50IGNw dV9jaGVjayhzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCB1bnNpZ25lZCBpbnQgbWF4 KQogCiAJCWZvciAoOyBtIDwgRFdfUEVSX1BBR0U7IG0rKykgewogCQkJaWYgKG1hcFttXSAhPSBT VEFDS19NQUdJQykgewotCQkJCXByX2VycigiSW52YWxpZCB2YWx1ZSBhdCBwYWdlICVkLCBvZmZz ZXQgJWQ6IGZvdW5kICV4IGV4cGVjdGVkICV4XG4iLAotCQkJCSAgICAgICBuLCBtLCBtYXBbbV0s IFNUQUNLX01BR0lDKTsKKwkJCQlwcl9lcnIoIiVwUzogSW52YWxpZCB2YWx1ZSBhdCBvYmplY3Qg JWQgcGFnZSAlZCwgb2Zmc2V0ICVkOiBmb3VuZCAleCBleHBlY3RlZCAleCAodW5pbml0aWFsaXNl ZClcbiIsCisJCQkJICAgICAgIF9fYnVpbHRpbl9yZXR1cm5fYWRkcmVzcygwKSwgaWR4LCBuLCBt LAorCQkJCSAgICAgICBtYXBbbV0sIFNUQUNLX01BR0lDKTsKIAkJCQllcnIgPSAtRUlOVkFMOwog CQkJCWdvdG8gb3V0X3VubWFwOwogCQkJfQpAQCAtNDc5LDEyICs0ODMsOCBAQCBzdGF0aWMgdW5z aWduZWQgbG9uZyBtYXhfZHdvcmRzKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCiBz dGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCiB7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmk5MTUgPSBhcmc7Ci0Jc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5V TEw7Ci0JdW5zaWduZWQgbG9uZyBuY29udGV4dHMsIG5kd29yZHMsIGR3OwotCXN0cnVjdCBpZ3Rf bGl2ZV90ZXN0IHQ7Ci0Jc3RydWN0IGRybV9maWxlICpmaWxlOwotCUlHVF9USU1FT1VUKGVuZF90 aW1lKTsKLQlMSVNUX0hFQUQob2JqZWN0cyk7CisJc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5n aW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOwogCWludCBlcnIgPSAtRU5PREVWOwogCiAJ LyoKQEAgLTQ5Niw0NCArNDk2LDE3NSBAQCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICph cmcpCiAJaWYgKCFEUklWRVJfQ0FQUyhpOTE1KS0+aGFzX2xvZ2ljYWxfY29udGV4dHMpCiAJCXJl dHVybiAwOwogCisJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7CisJCXVuc2lnbmVkIGxvbmcgbmNvbnRl eHRzLCBuZHdvcmRzLCBkdzsKKwkJc3RydWN0IGlndF9saXZlX3Rlc3QgdDsKKwkJc3RydWN0IGRy bV9maWxlICpmaWxlOworCQlJR1RfVElNRU9VVChlbmRfdGltZSk7CisJCUxJU1RfSEVBRChvYmpl Y3RzKTsKKworCQlpZiAoIWludGVsX2VuZ2luZV9jYW5fc3RvcmVfZHdvcmQoZW5naW5lKSkKKwkJ CWNvbnRpbnVlOworCisJCWlmICghZW5naW5lLT5jb250ZXh0X3NpemUpCisJCQljb250aW51ZTsg LyogTm8gbG9naWNhbCBjb250ZXh0IHN1cHBvcnQgaW4gSFcgKi8KKworCQlmaWxlID0gbW9ja19m aWxlKGk5MTUpOworCQlpZiAoSVNfRVJSKGZpbGUpKQorCQkJcmV0dXJuIFBUUl9FUlIoZmlsZSk7 CisKKwkJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7CisKKwkJZXJyID0gaWd0 X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sIGVuZ2luZS0+bmFtZSk7CisJCWlm IChlcnIpCisJCQlnb3RvIG91dF91bmxvY2s7CisKKwkJbmNvbnRleHRzID0gMDsKKwkJbmR3b3Jk cyA9IDA7CisJCWR3ID0gMDsKKwkJd2hpbGUgKCF0aW1lX2FmdGVyKGppZmZpZXMsIGVuZF90aW1l KSkgeworCQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQgKmN0eDsKKwkJCWludGVsX3dha2VyZWZf dCB3YWtlcmVmOworCisJCQljdHggPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7CisJCQlpZiAo SVNfRVJSKGN0eCkpIHsKKwkJCQllcnIgPSBQVFJfRVJSKGN0eCk7CisJCQkJZ290byBvdXRfdW5s b2NrOworCQkJfQorCisJCQlpZiAoIW9iaikgeworCQkJCW9iaiA9IGNyZWF0ZV90ZXN0X29iamVj dChjdHgsIGZpbGUsICZvYmplY3RzKTsKKwkJCQlpZiAoSVNfRVJSKG9iaikpIHsKKwkJCQkJZXJy ID0gUFRSX0VSUihvYmopOworCQkJCQlnb3RvIG91dF91bmxvY2s7CisJCQkJfQorCQkJfQorCisJ CQl3aXRoX2ludGVsX3J1bnRpbWVfcG0oaTkxNSwgd2FrZXJlZikKKwkJCQllcnIgPSBncHVfZmls bChvYmosIGN0eCwgZW5naW5lLCBkdyk7CisJCQlpZiAoZXJyKSB7CisJCQkJcHJfZXJyKCJGYWls ZWQgdG8gZmlsbCBkd29yZCAlbHUgWyVsdS8lbHVdIHdpdGggZ3B1ICglcykgaW4gY3R4ICV1IFtm dWxsLXBwZ3R0PyAlc10sIGVycj0lZFxuIiwKKwkJCQkgICAgICAgbmR3b3JkcywgZHcsIG1heF9k d29yZHMob2JqKSwKKwkJCQkgICAgICAgZW5naW5lLT5uYW1lLCBjdHgtPmh3X2lkLAorCQkJCSAg ICAgICB5ZXNubyghIWN0eC0+cHBndHQpLCBlcnIpOworCQkJCWdvdG8gb3V0X3VubG9jazsKKwkJ CX0KKworCQkJaWYgKCsrZHcgPT0gbWF4X2R3b3JkcyhvYmopKSB7CisJCQkJb2JqID0gTlVMTDsK KwkJCQlkdyA9IDA7CisJCQl9CisKKwkJCW5kd29yZHMrKzsKKwkJCW5jb250ZXh0cysrOworCQl9 CisKKwkJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywgZmlsbGluZyAlbHUg ZHdvcmRzXG4iLAorCQkJbmNvbnRleHRzLCBlbmdpbmUtPm5hbWUsIG5kd29yZHMpOworCisJCW5j b250ZXh0cyA9IGR3ID0gMDsKKwkJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmosICZvYmplY3RzLCBz dF9saW5rKSB7CisJCQl1bnNpZ25lZCBpbnQgcmVtID0KKwkJCQltaW5fdCh1bnNpZ25lZCBpbnQs IG5kd29yZHMgLSBkdywgbWF4X2R3b3JkcyhvYmopKTsKKworCQkJZXJyID0gY3B1X2NoZWNrKG9i aiwgbmNvbnRleHRzKyssIHJlbSk7CisJCQlpZiAoZXJyKQorCQkJCWJyZWFrOworCisJCQlkdyAr PSByZW07CisJCX0KKworb3V0X3VubG9jazoKKwkJaWYgKGlndF9saXZlX3Rlc3RfZW5kKCZ0KSkK KwkJCWVyciA9IC1FSU87CisJCW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7 CisKKwkJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmlsZSk7CisJCWlmIChlcnIpCisJCQlyZXR1cm4g ZXJyOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0aWMgaW50IGlndF9zaGFyZWRfY3R4X2V4 ZWModm9pZCAqYXJnKQoreworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICppOTE1ID0gYXJnOwor CXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpwYXJlbnQ7CisJc3RydWN0IGludGVsX2VuZ2luZV9j cyAqZW5naW5lOworCWVudW0gaW50ZWxfZW5naW5lX2lkIGlkOworCXN0cnVjdCBpZ3RfbGl2ZV90 ZXN0IHQ7CisJc3RydWN0IGRybV9maWxlICpmaWxlOworCWludCBlcnIgPSAwOworCisJLyoKKwkg KiBDcmVhdGUgYSBmZXcgZGlmZmVyZW50IGNvbnRleHRzIHdpdGggdGhlIHNhbWUgbW0gYW5kIHdy aXRlCisJICogdGhyb3VnaCBlYWNoIGN0eCB1c2luZyB0aGUgR1BVIG1ha2luZyBzdXJlIHRob3Nl IHdyaXRlcyBlbmQKKwkgKiB1cCBpbiB0aGUgZXhwZWN0ZWQgcGFnZXMgb2Ygb3VyIG9iai4KKwkg Ki8KKwlpZiAoIURSSVZFUl9DQVBTKGk5MTUpLT5oYXNfbG9naWNhbF9jb250ZXh0cykKKwkJcmV0 dXJuIDA7CisKIAlmaWxlID0gbW9ja19maWxlKGk5MTUpOwogCWlmIChJU19FUlIoZmlsZSkpCiAJ CXJldHVybiBQVFJfRVJSKGZpbGUpOwogCiAJbXV0ZXhfbG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9t dXRleCk7CiAKKwlwYXJlbnQgPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7CisJaWYgKElTX0VS UihwYXJlbnQpKSB7CisJCWVyciA9IFBUUl9FUlIocGFyZW50KTsKKwkJZ290byBvdXRfdW5sb2Nr OworCX0KKworCWlmICghcGFyZW50LT5wcGd0dCkgeyAvKiBub3QgZnVsbC1wcGd0dDsgbm90aGlu ZyB0byBzaGFyZSAqLworCQllcnIgPSAwOworCQlnb3RvIG91dF91bmxvY2s7CisJfQorCiAJZXJy ID0gaWd0X2xpdmVfdGVzdF9iZWdpbigmdCwgaTkxNSwgX19mdW5jX18sICIiKTsKIAlpZiAoZXJy KQogCQlnb3RvIG91dF91bmxvY2s7CiAKLQluY29udGV4dHMgPSAwOwotCW5kd29yZHMgPSAwOwot CWR3ID0gMDsKLQl3aGlsZSAoIXRpbWVfYWZ0ZXIoamlmZmllcywgZW5kX3RpbWUpKSB7Ci0JCXN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsKLQkJc3RydWN0IGk5MTVfZ2VtX2NvbnRleHQg KmN0eDsKLQkJdW5zaWduZWQgaW50IGlkOworCWZvcl9lYWNoX2VuZ2luZShlbmdpbmUsIGk5MTUs IGlkKSB7CisJCXVuc2lnbmVkIGxvbmcgbmNvbnRleHRzLCBuZHdvcmRzLCBkdzsKKwkJc3RydWN0 IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IE5VTEw7CisJCXN0cnVjdCBpOTE1X2dlbV9jb250 ZXh0ICpjdHggPSBOVUxMOworCQlJR1RfVElNRU9VVChlbmRfdGltZSk7CisJCUxJU1RfSEVBRChv YmplY3RzKTsKIAotCQljdHggPSBsaXZlX2NvbnRleHQoaTkxNSwgZmlsZSk7Ci0JCWlmIChJU19F UlIoY3R4KSkgewotCQkJZXJyID0gUFRSX0VSUihjdHgpOwotCQkJZ290byBvdXRfdW5sb2NrOwot CQl9CisJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQorCQkJY29u dGludWU7CiAKLQkJZm9yX2VhY2hfZW5naW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKKwkJZHcgPSAw OworCQluZHdvcmRzID0gMDsKKwkJbmNvbnRleHRzID0gMDsKKwkJd2hpbGUgKCF0aW1lX2FmdGVy KGppZmZpZXMsIGVuZF90aW1lKSkgewogCQkJaW50ZWxfd2FrZXJlZl90IHdha2VyZWY7CiAKLQkJ CWlmICghZW5naW5lLT5jb250ZXh0X3NpemUpCi0JCQkJY29udGludWU7IC8qIE5vIGxvZ2ljYWwg Y29udGV4dCBzdXBwb3J0IGluIEhXICovCisJCQlpZiAoY3R4KSB7CisJCQkJc3RydWN0IGRybV9p OTE1X2ZpbGVfcHJpdmF0ZSAqZmlsZV9wcml2ID0KKwkJCQkJZmlsZS0+ZHJpdmVyX3ByaXY7CiAK LQkJCWlmICghaW50ZWxfZW5naW5lX2Nhbl9zdG9yZV9kd29yZChlbmdpbmUpKQotCQkJCWNvbnRp bnVlOworCQkJCWlkcl9yZW1vdmUoJmZpbGVfcHJpdi0+Y29udGV4dF9pZHIsCisJCQkJCSAgIGN0 eC0+dXNlcl9oYW5kbGUpOworCQkJCWNvbnRleHRfY2xvc2UoY3R4KTsKKwkJCX0KKworCQkJY3R4 ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUpOworCQkJaWYgKElTX0VSUihjdHgpKSB7CisJCQkJ ZXJyID0gUFRSX0VSUihjdHgpOworCQkJCWdvdG8gb3V0X3Rlc3Q7CisJCQl9CisKKwkJCV9fYXNz aWduX3BwZ3R0KGN0eCwgcGFyZW50LT5wcGd0dCk7CiAKIAkJCWlmICghb2JqKSB7Ci0JCQkJb2Jq ID0gY3JlYXRlX3Rlc3Rfb2JqZWN0KGN0eCwgZmlsZSwgJm9iamVjdHMpOworCQkJCW9iaiA9IGNy ZWF0ZV90ZXN0X29iamVjdChwYXJlbnQsIGZpbGUsICZvYmplY3RzKTsKIAkJCQlpZiAoSVNfRVJS KG9iaikpIHsKIAkJCQkJZXJyID0gUFRSX0VSUihvYmopOwotCQkJCQlnb3RvIG91dF91bmxvY2s7 CisJCQkJCWdvdG8gb3V0X3Rlc3Q7CiAJCQkJfQogCQkJfQogCkBAIC01NDUsMzUgKzY3NiwzNiBA QCBzdGF0aWMgaW50IGlndF9jdHhfZXhlYyh2b2lkICphcmcpCiAJCQkJICAgICAgIG5kd29yZHMs IGR3LCBtYXhfZHdvcmRzKG9iaiksCiAJCQkJICAgICAgIGVuZ2luZS0+bmFtZSwgY3R4LT5od19p ZCwKIAkJCQkgICAgICAgeWVzbm8oISFjdHgtPnBwZ3R0KSwgZXJyKTsKLQkJCQlnb3RvIG91dF91 bmxvY2s7CisJCQkJZ290byBvdXRfdGVzdDsKIAkJCX0KIAogCQkJaWYgKCsrZHcgPT0gbWF4X2R3 b3JkcyhvYmopKSB7CiAJCQkJb2JqID0gTlVMTDsKIAkJCQlkdyA9IDA7CiAJCQl9CisKIAkJCW5k d29yZHMrKzsKKwkJCW5jb250ZXh0cysrOwogCQl9Ci0JCW5jb250ZXh0cysrOwotCX0KLQlwcl9p bmZvKCJTdWJtaXR0ZWQgJWx1IGNvbnRleHRzIChhY3Jvc3MgJXUgZW5naW5lcyksIGZpbGxpbmcg JWx1IGR3b3Jkc1xuIiwKLQkJbmNvbnRleHRzLCBSVU5USU1FX0lORk8oaTkxNSktPm51bV9lbmdp bmVzLCBuZHdvcmRzKTsKKwkJcHJfaW5mbygiU3VibWl0dGVkICVsdSBjb250ZXh0cyB0byAlcywg ZmlsbGluZyAlbHUgZHdvcmRzXG4iLAorCQkJbmNvbnRleHRzLCBlbmdpbmUtPm5hbWUsIG5kd29y ZHMpOwogCi0JZHcgPSAwOwotCWxpc3RfZm9yX2VhY2hfZW50cnkob2JqLCAmb2JqZWN0cywgc3Rf bGluaykgewotCQl1bnNpZ25lZCBpbnQgcmVtID0KLQkJCW1pbl90KHVuc2lnbmVkIGludCwgbmR3 b3JkcyAtIGR3LCBtYXhfZHdvcmRzKG9iaikpOworCQluY29udGV4dHMgPSBkdyA9IDA7CisJCWxp c3RfZm9yX2VhY2hfZW50cnkob2JqLCAmb2JqZWN0cywgc3RfbGluaykgeworCQkJdW5zaWduZWQg aW50IHJlbSA9CisJCQkJbWluX3QodW5zaWduZWQgaW50LCBuZHdvcmRzIC0gZHcsIG1heF9kd29y ZHMob2JqKSk7CiAKLQkJZXJyID0gY3B1X2NoZWNrKG9iaiwgcmVtKTsKLQkJaWYgKGVycikKLQkJ CWJyZWFrOworCQkJZXJyID0gY3B1X2NoZWNrKG9iaiwgbmNvbnRleHRzKyssIHJlbSk7CisJCQlp ZiAoZXJyKQorCQkJCWdvdG8gb3V0X3Rlc3Q7CiAKLQkJZHcgKz0gcmVtOworCQkJZHcgKz0gcmVt OworCQl9CiAJfQotCi1vdXRfdW5sb2NrOgorb3V0X3Rlc3Q6CiAJaWYgKGlndF9saXZlX3Rlc3Rf ZW5kKCZ0KSkKIAkJZXJyID0gLUVJTzsKK291dF91bmxvY2s6CiAJbXV0ZXhfdW5sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKIAogCW1vY2tfZmlsZV9mcmVlKGk5MTUsIGZpbGUpOwpAQCAt MTA0Niw3ICsxMTc4LDcgQEAgc3RhdGljIGludCBpZ3RfY3R4X3JlYWRvbmx5KHZvaWQgKmFyZykK IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gTlVMTDsKIAlzdHJ1Y3QgaTkxNV9n ZW1fY29udGV4dCAqY3R4OwogCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKLQl1bnNpZ25l ZCBsb25nIG5kd29yZHMsIGR3OworCXVuc2lnbmVkIGxvbmcgaWR4LCBuZHdvcmRzLCBkdzsKIAlz dHJ1Y3QgaWd0X2xpdmVfdGVzdCB0OwogCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKIAlJOTE1X1JO RF9TVEFURShwcm5nKTsKQEAgLTExMjcsNiArMTI1OSw3IEBAIHN0YXRpYyBpbnQgaWd0X2N0eF9y ZWFkb25seSh2b2lkICphcmcpCiAJCW5kd29yZHMsIFJVTlRJTUVfSU5GTyhpOTE1KS0+bnVtX2Vu Z2luZXMpOwogCiAJZHcgPSAwOworCWlkeCA9IDA7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeShvYmos ICZvYmplY3RzLCBzdF9saW5rKSB7CiAJCXVuc2lnbmVkIGludCByZW0gPQogCQkJbWluX3QodW5z aWduZWQgaW50LCBuZHdvcmRzIC0gZHcsIG1heF9kd29yZHMob2JqKSk7CkBAIC0xMTM2LDcgKzEy NjksNyBAQCBzdGF0aWMgaW50IGlndF9jdHhfcmVhZG9ubHkodm9pZCAqYXJnKQogCQlpZiAoaTkx NV9nZW1fb2JqZWN0X2lzX3JlYWRvbmx5KG9iaikpCiAJCQludW1fd3JpdGVzID0gMDsKIAotCQll cnIgPSBjcHVfY2hlY2sob2JqLCBudW1fd3JpdGVzKTsKKwkJZXJyID0gY3B1X2NoZWNrKG9iaiwg aWR4KyssIG51bV93cml0ZXMpOwogCQlpZiAoZXJyKQogCQkJYnJlYWs7CiAKQEAgLTE2MTksNyAr MTc1Miw4IEBAIHN0YXRpYyBpbnQgbW9ja19jb250ZXh0X2JhcnJpZXIodm9pZCAqYXJnKQogCX0K IAogCWNvdW50ZXIgPSAwOwotCWVyciA9IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwgMCwgbW9j a19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKKwllcnIgPSBjb250ZXh0X2JhcnJpZXJfdGFzayhj dHgsIDAsCisJCQkJICAgTlVMTCwgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKIAlpZiAo ZXJyKSB7CiAJCXByX2VycigiRmFpbGVkIGF0IGxpbmUgJWQsIGVycj0lZFxuIiwgX19MSU5FX18s IGVycik7CiAJCWdvdG8gb3V0OwpAQCAtMTYzMSw4ICsxNzY1LDggQEAgc3RhdGljIGludCBtb2Nr X2NvbnRleHRfYmFycmllcih2b2lkICphcmcpCiAJfQogCiAJY291bnRlciA9IDA7Ci0JZXJyID0g Y29udGV4dF9iYXJyaWVyX3Rhc2soY3R4LAotCQkJCSAgIEFMTF9FTkdJTkVTLCBtb2NrX2JhcnJp ZXJfdGFzaywgJmNvdW50ZXIpOworCWVyciA9IGNvbnRleHRfYmFycmllcl90YXNrKGN0eCwgQUxM X0VOR0lORVMsCisJCQkJICAgTlVMTCwgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3VudGVyKTsKIAlp ZiAoZXJyKSB7CiAJCXByX2VycigiRmFpbGVkIGF0IGxpbmUgJWQsIGVycj0lZFxuIiwgX19MSU5F X18sIGVycik7CiAJCWdvdG8gb3V0OwpAQCAtMTY1NSw4ICsxNzg5LDggQEAgc3RhdGljIGludCBt b2NrX2NvbnRleHRfYmFycmllcih2b2lkICphcmcpCiAKIAljb3VudGVyID0gMDsKIAljb250ZXh0 X2JhcnJpZXJfaW5qZWN0X2ZhdWx0ID0gQklUKFJDUzApOwotCWVyciA9IGNvbnRleHRfYmFycmll cl90YXNrKGN0eCwKLQkJCQkgICBBTExfRU5HSU5FUywgbW9ja19iYXJyaWVyX3Rhc2ssICZjb3Vu dGVyKTsKKwllcnIgPSBjb250ZXh0X2JhcnJpZXJfdGFzayhjdHgsIEFMTF9FTkdJTkVTLAorCQkJ CSAgIE5VTEwsIG1vY2tfYmFycmllcl90YXNrLCAmY291bnRlcik7CiAJY29udGV4dF9iYXJyaWVy X2luamVjdF9mYXVsdCA9IDA7CiAJaWYgKGVyciA9PSAtRU5YSU8pCiAJCWVyciA9IDA7CkBAIC0x NjcwLDggKzE4MDQsOCBAQCBzdGF0aWMgaW50IG1vY2tfY29udGV4dF9iYXJyaWVyKHZvaWQgKmFy ZykKIAkJZ290byBvdXQ7CiAKIAljb3VudGVyID0gMDsKLQllcnIgPSBjb250ZXh0X2JhcnJpZXJf dGFzayhjdHgsCi0JCQkJICAgQUxMX0VOR0lORVMsIG1vY2tfYmFycmllcl90YXNrLCAmY291bnRl cik7CisJZXJyID0gY29udGV4dF9iYXJyaWVyX3Rhc2soY3R4LCBBTExfRU5HSU5FUywKKwkJCQkg ICBOVUxMLCBtb2NrX2JhcnJpZXJfdGFzaywgJmNvdW50ZXIpOwogCWlmIChlcnIpIHsKIAkJcHJf ZXJyKCJGYWlsZWQgYXQgbGluZSAlZCwgZXJyPSVkXG4iLCBfX0xJTkVfXywgZXJyKTsKIAkJZ290 byBvdXQ7CkBAIC0xNzE5LDYgKzE4NTMsNyBAQCBpbnQgaTkxNV9nZW1fY29udGV4dF9saXZlX3Nl bGZ0ZXN0cyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCVNVQlRFU1QoaWd0 X2N0eF9leGVjKSwKIAkJU1VCVEVTVChpZ3RfY3R4X3JlYWRvbmx5KSwKIAkJU1VCVEVTVChpZ3Rf Y3R4X3NzZXUpLAorCQlTVUJURVNUKGlndF9zaGFyZWRfY3R4X2V4ZWMpLAogCQlTVUJURVNUKGln dF92bV9pc29sYXRpb24pLAogCX07CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pOTE1X2dlbV9ndHQuYwppbmRleCAwMTA4NGY2YjRmYjcuLjljY2E2NmU0NDIwYSAxMDA2NDQK LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL2k5MTVfZ2VtX2d0dC5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pOTE1X2dlbV9ndHQuYwpAQCAtMTAyMCw3 ICsxMDIwLDYgQEAgc3RhdGljIGludCBleGVyY2lzZV9wcGd0dChzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsCiAKIAllcnIgPSBmdW5jKGRldl9wcml2LCAmcHBndHQtPnZtLCAwLCBw cGd0dC0+dm0udG90YWwsIGVuZF90aW1lKTsKIAotCWk5MTVfcHBndHRfY2xvc2UoJnBwZ3R0LT52 bSk7CiAJaTkxNV9wcGd0dF9wdXQocHBndHQpOwogb3V0X3VubG9jazoKIAltdXRleF91bmxvY2so JmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3Nl bGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwppbmRleCAxY2M4YmU3MzI0MzUuLmNmYzkwMTJjOGU0OSAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvc2VsZnRlc3RzL21vY2tfY29udGV4dC5j CisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9tb2NrX2NvbnRleHQuYwpAQCAt NTQsMTMgKzU0LDE3IEBAIG1vY2tfY29udGV4dChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkx NSwKIAkJZ290byBlcnJfaGFuZGxlczsKIAogCWlmIChuYW1lKSB7CisJCXN0cnVjdCBpOTE1X2h3 X3BwZ3R0ICpwcGd0dDsKKwogCQljdHgtPm5hbWUgPSBrc3RyZHVwKG5hbWUsIEdGUF9LRVJORUwp OwogCQlpZiAoIWN0eC0+bmFtZSkKIAkJCWdvdG8gZXJyX3B1dDsKIAotCQljdHgtPnBwZ3R0ID0g bW9ja19wcGd0dChpOTE1LCBuYW1lKTsKLQkJaWYgKCFjdHgtPnBwZ3R0KQorCQlwcGd0dCA9IG1v Y2tfcHBndHQoaTkxNSwgbmFtZSk7CisJCWlmICghcHBndHQpCiAJCQlnb3RvIGVycl9wdXQ7CisK KwkJX19zZXRfcHBndHQoY3R4LCBwcGd0dCk7CiAJfQogCiAJcmV0dXJuIGN0eDsKZGlmZiAtLWdp dCBhL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaCBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9k cm0uaAppbmRleCAxYzY5ZWQxNmE5MjMuLjlhZjdhOGU2YTQ2ZSAxMDA2NDQKLS0tIGEvaW5jbHVk ZS91YXBpL2RybS9pOTE1X2RybS5oCisrKyBiL2luY2x1ZGUvdWFwaS9kcm0vaTkxNV9kcm0uaApA QCAtMzQzLDYgKzM0Myw4IEBAIHR5cGVkZWYgc3RydWN0IF9kcm1faTkxNV9zYXJlYSB7CiAjZGVm aW5lIERSTV9JOTE1X1BFUkZfQUREX0NPTkZJRwkweDM3CiAjZGVmaW5lIERSTV9JOTE1X1BFUkZf UkVNT1ZFX0NPTkZJRwkweDM4CiAjZGVmaW5lIERSTV9JOTE1X1FVRVJZCQkJMHgzOQorI2RlZmlu ZSBEUk1fSTkxNV9HRU1fVk1fQ1JFQVRFCQkweDNhCisjZGVmaW5lIERSTV9JOTE1X0dFTV9WTV9E RVNUUk9ZCQkweDNiCiAvKiBNdXN0IGJlIGtlcHQgY29tcGFjdCAtLSBubyBob2xlcyAqLwogCiAj ZGVmaW5lIERSTV9JT0NUTF9JOTE1X0lOSVQJCURSTV9JT1coIERSTV9DT01NQU5EX0JBU0UgKyBE Uk1fSTkxNV9JTklULCBkcm1faTkxNV9pbml0X3QpCkBAIC00MDIsNiArNDA0LDggQEAgdHlwZWRl ZiBzdHJ1Y3QgX2RybV9pOTE1X3NhcmVhIHsKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUEVSRl9B RERfQ09ORklHCURSTV9JT1coRFJNX0NPTU1BTkRfQkFTRSArIERSTV9JOTE1X1BFUkZfQUREX0NP TkZJRywgc3RydWN0IGRybV9pOTE1X3BlcmZfb2FfY29uZmlnKQogI2RlZmluZSBEUk1fSU9DVExf STkxNV9QRVJGX1JFTU9WRV9DT05GSUcJRFJNX0lPVyhEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5 MTVfUEVSRl9SRU1PVkVfQ09ORklHLCBfX3U2NCkKICNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfUVVF UlkJCQlEUk1fSU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfUVVFUlksIHN0cnVjdCBk cm1faTkxNV9xdWVyeSkKKyNkZWZpbmUgRFJNX0lPQ1RMX0k5MTVfR0VNX1ZNX0NSRUFURQlEUk1f SU9XUihEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1ZNX0NSRUFURSwgc3RydWN0IGRy bV9pOTE1X2dlbV92bV9jb250cm9sKQorI2RlZmluZSBEUk1fSU9DVExfSTkxNV9HRU1fVk1fREVT VFJPWQlEUk1fSU9XIChEUk1fQ09NTUFORF9CQVNFICsgRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1ks IHN0cnVjdCBkcm1faTkxNV9nZW1fdm1fY29udHJvbCkKIAogLyogQWxsb3cgZHJpdmVycyB0byBz dWJtaXQgYmF0Y2hidWZmZXJzIGRpcmVjdGx5IHRvIGhhcmR3YXJlLCByZWx5aW5nCiAgKiBvbiB0 aGUgc2VjdXJpdHkgbWVjaGFuaXNtcyBwcm92aWRlZCBieSBoYXJkd2FyZS4KQEAgLTE0NTMsNiAr MTQ1NywzMyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2NvbnRleHRfZGVzdHJveSB7CiAJX191MzIg cGFkOwogfTsKIAorLyoKKyAqIERSTV9JOTE1X0dFTV9WTV9DUkVBVEUgLQorICoKKyAqIENyZWF0 ZSBhIG5ldyB2aXJ0dWFsIG1lbW9yeSBhZGRyZXNzIHNwYWNlIChwcEdUVCkgZm9yIHVzZSB3aXRo aW4gYSBjb250ZXh0CisgKiBvbiB0aGUgc2FtZSBmaWxlLiBFeHRlbnNpb25zIGNhbiBiZSBwcm92 aWRlZCB0byBjb25maWd1cmUgZXhhY3RseSBob3cgdGhlCisgKiBhZGRyZXNzIHNwYWNlIGlzIHNl dHVwIHVwb24gY3JlYXRpb24uCisgKgorICogVGhlIGlkIG9mIG5ldyBWTSAoYm91bmQgdG8gdGhl IGZkKSBmb3IgdXNlIHdpdGggSTkxNV9DT05URVhUX1BBUkFNX1ZNIGlzCisgKiByZXR1cm5lZCBp biB0aGUgb3V0cGFyYW0gQHZtX2lkLgorICoKKyAqIE5vIGZsYWdzIGFyZSBkZWZpbmVkLCB3aXRo IGFsbCBiaXRzIHJlc2VydmVkIGFuZCBtdXN0IGJlIHplcm8uCisgKgorICogQW4gZXh0ZW5zaW9u IGNoYWluIG1heWJlIHByb3ZpZGVkLCBzdGFydGluZyB3aXRoIEBleHRlbnNpb25zLCBhbmQgdGVy bWluYXRlZAorICogYnkgdGhlIEBuZXh0X2V4dGVuc2lvbiBiZWluZyAwLiBDdXJyZW50bHksIG5v IGV4dGVuc2lvbnMgYXJlIGRlZmluZWQuCisgKgorICogRFJNX0k5MTVfR0VNX1ZNX0RFU1RST1kg LQorICoKKyAqIERlc3Ryb3lzIGEgcHJldmlvdXNseSBjcmVhdGVkIFZNIGlkLCBzcGVjaWZpZWQg aW4gQHZtX2lkLgorICoKKyAqIE5vIGV4dGVuc2lvbnMgb3IgZmxhZ3MgYXJlIGFsbG93ZWQgY3Vy cmVudGx5LCBhbmQgc28gbXVzdCBiZSB6ZXJvLgorICovCitzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3Zt X2NvbnRyb2wgeworCV9fdTY0IGV4dGVuc2lvbnM7CisJX191MzIgZmxhZ3M7CisJX191MzIgdm1f aWQ7Cit9OworCiBzdHJ1Y3QgZHJtX2k5MTVfcmVnX3JlYWQgewogCS8qCiAJICogUmVnaXN0ZXIg b2Zmc2V0LgpAQCAtMTU0Miw3ICsxNTczLDE5IEBAIHN0cnVjdCBkcm1faTkxNV9nZW1fY29udGV4 dF9wYXJhbSB7CiAgKiBPbiBjcmVhdGlvbiwgYWxsIG5ldyBjb250ZXh0cyBhcmUgbWFya2VkIGFz IHJlY292ZXJhYmxlLgogICovCiAjZGVmaW5lIEk5MTVfQ09OVEVYVF9QQVJBTV9SRUNPVkVSQUJM RQkweDgKKworCS8qCisJICogVGhlIGlkIG9mIHRoZSBhc3NvY2lhdGVkIHZpcnR1YWwgbWVtb3J5 IGFkZHJlc3Mgc3BhY2UgKHBwR1RUKSBvZgorCSAqIHRoaXMgY29udGV4dC4gQ2FuIGJlIHJldHJp ZXZlZCBhbmQgcGFzc2VkIHRvIGFub3RoZXIgY29udGV4dAorCSAqIChvbiB0aGUgc2FtZSBmZCkg Zm9yIGJvdGggdG8gdXNlIHRoZSBzYW1lIHBwR1RUIGFuZCBzbyBzaGFyZQorCSAqIGFkZHJlc3Mg bGF5b3V0cywgYW5kIGF2b2lkIHJlbG9hZGluZyB0aGUgcGFnZSB0YWJsZXMgb24gY29udGV4dAor CSAqIHN3aXRjaGVzIGJldHdlZW4gdGhlbXNlbHZlcy4KKwkgKgorCSAqIFNlZSBEUk1fSTkxNV9H RU1fVk1fQ1JFQVRFIGFuZCBEUk1fSTkxNV9HRU1fVk1fREVTVFJPWS4KKwkgKi8KKyNkZWZpbmUg STkxNV9DT05URVhUX1BBUkFNX1ZNCQkweDkKIC8qIE11c3QgYmUga2VwdCBjb21wYWN0IC0tIG5v IGhvbGVzIGFuZCB3ZWxsIGRvY3VtZW50ZWQgKi8KKwogCV9fdTY0IHZhbHVlOwogfTsKIAotLSAK Mi4yMC4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJ bnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=