From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Weinehall Subject: [PATCH 05/12] drm/i915: INTEL_GEN() fixes, part 2 Date: Mon, 29 Aug 2016 13:31:45 +0300 Message-ID: <20160829103152.31282-6-david.weinehall@linux.intel.com> References: <20160829103152.31282-1-david.weinehall@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id 80E676E50D for ; Mon, 29 Aug 2016 10:32:08 +0000 (UTC) In-Reply-To: <20160829103152.31282-1-david.weinehall@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: intel-gfx@lists.freedesktop.org Cc: --dry-run@freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q29udmVydCBhbGwgaW5zdGFuY2VzIG9mIElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gdG8gSU5U RUxfR0VOKGRldl9wcml2KS4KClNpZ25lZC1vZmYtYnk6IERhdmlkIFdlaW5laGFsbCA8ZGF2aWQu d2VpbmVoYWxsQGxpbnV4LmludGVsLmNvbT4KLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5jICAgICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0u YyAgICAgICAgICAgIHwgMTAgKysrKystLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW1fZXhlY2J1ZmZlci5jIHwgIDYgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9mZW5jZS5jICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0 LmMgICAgICAgIHwgIDYgKysrLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9zdG9s ZW4uYyAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9pcnEuYyAgICAgICAg ICAgIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9hdWRpby5jICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf Ymlvcy5jICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5j ICAgICAgICAgICB8ICA0ICsrLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RldmljZV9p bmZvLmMgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgICAg ICAgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcC5jICAgICAgICAgICAgfCAgNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9m YmMuYyAgICAgICAgICAgfCAyOCArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCiBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9ndWNfbG9hZGVyLmMgICAgfCAgMiArLQogZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfaGRtaS5jICAgICAgICAgIHwgIDQgKystLQogZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfbHZkcy5jICAgICAgICAgIHwgIDIgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX21vY3MuYyAgICAgICAgICB8ICAyICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wYW5lbC5jICAgICAgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0u YyAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9wc3IuYyAgICAgICAgICAgfCAgNCArKy0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9y aW5nYnVmZmVyLmMgICAgfCAgMiArLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfdW5jb3Jl LmMgICAgICAgIHwgMTQgKysrKysrKy0tLS0tLS0KIDIzIGZpbGVzIGNoYW5nZWQsIDgwIGluc2Vy dGlvbnMoKyksIDgwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2k5MTVfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5jCmluZGV4IDlm YjMyZDlkNWJiOC4uYTdlMWRmZDNmNGMwIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pOTE1X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmMKQEAgLTE1 MzEsNyArMTUzMSw3IEBAIHN0YXRpYyBpbnQgaTkxNV9kcm1fc3VzcGVuZF9sYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIGJvb2wgaGliZXJuYXRpb24pCiAJICogRnVqaXRzdSBGU0MgUzcxMTAK IAkgKiBBY2VyIEFzcGlyZSAxODMwVAogCSAqLwotCWlmICghKGhpYmVybmF0aW9uICYmIElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPCA2KSkKKwlpZiAoIShoaWJlcm5hdGlvbiAmJiBJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNikpCiAJCXBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QzaG90 KTsKIAogCWRldl9wcml2LT5zdXNwZW5kZWRfdG9faWRsZSA9IHN1c3BlbmRfdG9faWRsZShkZXZf cHJpdik7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwppbmRleCBkMzdiNDQxMjY5NDIuLjJlYjhhZmQ4 NWRhMSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYworKysgYi9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jCkBAIC00NDU5LDcgKzQ0NTksNyBAQCBvdXQ6 CiAKIGJvb2wgaW50ZWxfc2FuaXRpemVfc2VtYXBob3JlcyhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsIGludCB2YWx1ZSkKIHsKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdl biA8IDYpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQogCQlyZXR1cm4gZmFsc2U7CiAK IAkvKiBUT0RPOiBtYWtlIHNlbWFwaG9yZXMgYW5kIEV4ZWNsaXN0cyBwbGF5IG5pY2VseSB0b2dl dGhlciAqLwpAQCAtNDQ3MSw3ICs0NDcxLDcgQEAgYm9vbCBpbnRlbF9zYW5pdGl6ZV9zZW1hcGhv cmVzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgaW50IHZhbHVlKQogCiAjaWZk ZWYgQ09ORklHX0lOVEVMX0lPTU1VCiAJLyogRW5hYmxlIHNlbWFwaG9yZXMgb24gU05CIHdoZW4g SU8gcmVtYXBwaW5nIGlzIG9mZiAqLwotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID09 IDYgJiYgaW50ZWxfaW9tbXVfZ2Z4X21hcHBlZCkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA9 PSA2ICYmIGludGVsX2lvbW11X2dmeF9tYXBwZWQpCiAJCXJldHVybiBmYWxzZTsKICNlbmRpZgog CkBAIC00NTUzLDEwICs0NTUzLDEwIEBAIGk5MTVfZ2VtX2xvYWRfaW5pdF9mZW5jZXMoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAm ZGV2X3ByaXYtPmRybTsKIAlpbnQgaTsKIAotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu ID49IDcgJiYgIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmCi0JICAgICFJU19DSEVSUllWSUVX KGRldl9wcml2KSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA3ICYmCisJICAgICFJU19W QUxMRVlWSUVXKGRldl9wcml2KSAmJiAhSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCWRldl9w cml2LT5udW1fZmVuY2VfcmVncyA9IDMyOwotCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPj0gNCB8fCBJU19JOTQ1RyhkZXZfcHJpdikgfHwKKwllbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDQgfHwgSVNfSTk0NUcoZGV2X3ByaXYpIHx8CiAJCSBJU19JOTQ1R00oZGV2 X3ByaXYpIHx8IElTX0czMyhkZXZfcHJpdikpCiAJCWRldl9wcml2LT5udW1fZmVuY2VfcmVncyA9 IDE2OwogCWVsc2UKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpp bmRleCA1N2QwOTZhZWY1NDguLjhjYmUwYTgwN2EzNSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW1fZXhlY2J1ZmZlci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwpAQCAtMTQ2MCwxOSArMTQ2MCwxOSBAQCBleGVjYnVmX3N1 Ym1pdChzdHJ1Y3QgaTkxNV9leGVjYnVmZmVyX3BhcmFtcyAqcGFyYW1zLAogCQl9CiAKIAkJaWYg KGluc3RwX21vZGUgIT0gZGV2X3ByaXYtPnJlbGF0aXZlX2NvbnN0YW50c19tb2RlKSB7Ci0JCQlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQpIHsKKwkJCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpIDwgNCkgewogCQkJCURSTV9ERUJVRygibm8gcmVsIGNvbnN0YW50cyBvbiBwcmUtZ2Vu NFxuIik7CiAJCQkJcmV0dXJuIC1FSU5WQUw7CiAJCQl9CiAKLQkJCWlmIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuID4gNSAmJgorCQkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiA1ICYmCiAJ CQkgICAgaW5zdHBfbW9kZSA9PSBJOTE1X0VYRUNfQ09OU1RBTlRTX1JFTF9TVVJGQUNFKSB7CiAJ CQkJRFJNX0RFQlVHKCJyZWwgc3VyZmFjZSBjb25zdGFudHMgbW9kZSBpbnZhbGlkIG9uIGdlbjUr XG4iKTsKIAkJCQlyZXR1cm4gLUVJTlZBTDsKIAkJCX0KIAogCQkJLyogVGhlIEhXIGNoYW5nZWQg dGhlIG1lYW5pbmcgb24gdGhpcyBiaXQgb24gZ2VuNiAqLwotCQkJaWYgKElOVEVMX0lORk8oZGV2 X3ByaXYpLT5nZW4gPj0gNikKKwkJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDYpCiAJCQkJ aW5zdHBfbWFzayAmPSB+STkxNV9FWEVDX0NPTlNUQU5UU19SRUxfU1VSRkFDRTsKIAkJfQogCQli cmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9mZW5jZS5jCmluZGV4IDM1OWRhNmIyY2Mx ZS4uNzkzODczNTBmNjA1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dl bV9mZW5jZS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2ZlbmNlLmMKQEAg LTY0LDcgKzY0LDcgQEAgc3RhdGljIHZvaWQgaTk2NV93cml0ZV9mZW5jZV9yZWcoc3RydWN0IGRy bV9pOTE1X2ZlbmNlX3JlZyAqZmVuY2UsCiAJaW50IGZlbmNlX3BpdGNoX3NoaWZ0OwogCXU2NCB2 YWw7CiAKLQlpZiAoSU5URUxfSU5GTyhmZW5jZS0+aTkxNSktPmdlbiA+PSA2KSB7CisJaWYgKElO VEVMX0dFTihmZW5jZS0+aTkxNSkgPj0gNikgewogCQlmZW5jZV9yZWdfbG8gPSBGRU5DRV9SRUdf R0VONl9MTyhmZW5jZS0+aWQpOwogCQlmZW5jZV9yZWdfaGkgPSBGRU5DRV9SRUdfR0VONl9ISShm ZW5jZS0+aWQpOwogCQlmZW5jZV9waXRjaF9zaGlmdCA9IEdFTjZfRkVOQ0VfUElUQ0hfU0hJRlQ7 CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5jCmluZGV4IDU3MGU3MzExYTQxOS4uNTlmM2U4 YTk4YTk4IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwor KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYwpAQCAtMjEwMSw3ICsyMTAx LDcgQEAgc3RhdGljIGludCBfX2h3X3BwZ3R0X2luaXQoc3RydWN0IGk5MTVfaHdfcHBndHQgKnBw Z3R0LAogewogCXBwZ3R0LT5iYXNlLmRldiA9ICZkZXZfcHJpdi0+ZHJtOwogCi0JaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPCA4KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCkK IAkJcmV0dXJuIGdlbjZfcHBndHRfaW5pdChwcGd0dCk7CiAJZWxzZQogCQlyZXR1cm4gZ2VuOF9w cGd0dF9pbml0KHBwZ3R0KTsKQEAgLTIyMzcsNyArMjIzNyw3IEBAIHZvaWQgaTkxNV9jaGVja19h bmRfY2xlYXJfZmF1bHRzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAlz dHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA8IDYpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA2KQogCQlyZXR1cm47CiAK IAlmb3JfZWFjaF9lbmdpbmUoZW5naW5lLCBkZXZfcHJpdikgewpAQCAtMjI2Miw3ICsyMjYyLDcg QEAgdm9pZCBpOTE1X2NoZWNrX2FuZF9jbGVhcl9mYXVsdHMoc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2KQogCiBzdGF0aWMgdm9pZCBpOTE1X2dndHRfZmx1c2goc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu IDwgNikgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikgewogCQlpbnRlbF9ndHRfY2hp cHNldF9mbHVzaCgpOwogCX0gZWxzZSB7CiAJCUk5MTVfV1JJVEUoR0ZYX0ZMU0hfQ05UTF9HRU42 LCBHRlhfRkxTSF9DTlRMX0VOKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3N0b2xlbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fc3RvbGVuLmMK aW5kZXggNTk5ODllOGVlNWRjLi5jMjM0ZWNmNjRkODggMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX3N0b2xlbi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3N0b2xlbi5jCkBAIC00MzIsNyArNDMyLDcgQEAgaW50IGk5MTVfZ2VtX2luaXRfc3Rv bGVuKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiAKIAlzdG9sZW5fdG9wID0gZGV2X3ByaXYtPm1t LnN0b2xlbl9iYXNlICsgZ2d0dC0+c3RvbGVuX3NpemU7CiAKLQlzd2l0Y2ggKElOVEVMX0lORk8o ZGV2X3ByaXYpLT5nZW4pIHsKKwlzd2l0Y2ggKElOVEVMX0dFTihkZXZfcHJpdikpIHsKIAljYXNl IDI6CiAJY2FzZSAzOgogCQlicmVhazsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfaXJxLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2lycS5jCmluZGV4IDgyMzU4 ZDRlMGNjMi4uYmIwNTgxZTQzMjZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2lycS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfaXJxLmMKQEAgLTI3NCwx NyArMjc0LDE3IEBAIHZvaWQgZ2VuNV9kaXNhYmxlX2d0X2lycShzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqZGV2X3ByaXYsIHVpbnQzMl90IG1hc2spCiAKIHN0YXRpYyBpOTE1X3JlZ190IGdlbjZf cG1faWlyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlyZXR1cm4gSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4ID8gR0VOOF9HVF9JSVIoMikgOiBHRU42X1BNSUlS OworCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDggPyBHRU44X0dUX0lJUigyKSA6IEdF TjZfUE1JSVI7CiB9CiAKIHN0YXRpYyBpOTE1X3JlZ190IGdlbjZfcG1faW1yKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlyZXR1cm4gSU5URUxfSU5GTyhkZXZfcHJpdikt PmdlbiA+PSA4ID8gR0VOOF9HVF9JTVIoMikgOiBHRU42X1BNSU1SOworCXJldHVybiBJTlRFTF9H RU4oZGV2X3ByaXYpID49IDggPyBHRU44X0dUX0lNUigyKSA6IEdFTjZfUE1JTVI7CiB9CiAKIHN0 YXRpYyBpOTE1X3JlZ190IGdlbjZfcG1faWVyKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlyZXR1cm4gSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4ID8gR0VOOF9H VF9JRVIoMikgOiBHRU42X1BNSUVSOworCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgg PyBHRU44X0dUX0lFUigyKSA6IEdFTjZfUE1JRVI7CiB9CiAKIC8qKgpAQCAtMTU4Nyw3ICsxNTg3 LDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9ycHNfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgcG1faWlyKQogCQlzcGluX3VubG9jaygmZGV2X3ByaXYtPmly cV9sb2NrKTsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KQorCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCiAJCXJldHVybjsKIAogCWlmIChIQVNfVkVCT1go ZGV2X3ByaXYpKSB7CkBAIC0yMzIyLDcgKzIzMjIsNyBAQCBnZW44X2RlX2lycV9oYW5kbGVyKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwgdTMyIG1hc3Rlcl9jdGwpCiAJCQlyZXQg PSBJUlFfSEFORExFRDsKIAogCQkJdG1wX21hc2sgPSBHRU44X0FVWF9DSEFOTkVMX0E7Ci0JCQlp ZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA5KQorCQkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPj0gOSkKIAkJCQl0bXBfbWFzayB8PSBHRU45X0FVWF9DSEFOTkVMX0IgfAogCQkJCQkg ICAgR0VOOV9BVVhfQ0hBTk5FTF9DIHwKIAkJCQkJICAgIEdFTjlfQVVYX0NIQU5ORUxfRDsKQEAg LTIzODAsNyArMjM4MCw3IEBAIGdlbjhfZGVfaXJxX2hhbmRsZXIoc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2LCB1MzIgbWFzdGVyX2N0bCkKIAkJCWludGVsX2NoZWNrX3BhZ2VfZmxp cChkZXZfcHJpdiwgcGlwZSk7CiAKIAkJZmxpcF9kb25lID0gaWlyOwotCQlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA+PSA5KQorCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQog CQkJZmxpcF9kb25lICY9IEdFTjlfUElQRV9QTEFORTFfRkxJUF9ET05FOwogCQllbHNlCiAJCQlm bGlwX2RvbmUgJj0gR0VOOF9QSVBFX1BSSU1BUllfRkxJUF9ET05FOwpAQCAtMjM5NSw3ICsyMzk1 LDcgQEAgZ2VuOF9kZV9pcnFfaGFuZGxlcihzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYsIHUzMiBtYXN0ZXJfY3RsKQogCQkJaW50ZWxfY3B1X2ZpZm9fdW5kZXJydW5faXJxX2hhbmRs ZXIoZGV2X3ByaXYsIHBpcGUpOwogCiAJCWZhdWx0X2Vycm9ycyA9IGlpcjsKLQkJaWYgKElOVEVM X0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkKIAkJCWZhdWx0X2Vycm9ycyAmPSBHRU45X0RFX1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKIAkJ ZWxzZQogCQkJZmF1bHRfZXJyb3JzICY9IEdFTjhfREVfUElQRV9JUlFfRkFVTFRfRVJST1JTOwpA QCAtMzcxNSw3ICszNzE1LDcgQEAgc3RhdGljIHZvaWQgZ2VuOF9kZV9pcnFfcG9zdGluc3RhbGwo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCXUzMiBkZV9taXNjX21hc2tlZCA9 IEdFTjhfREVfTUlTQ19HU0U7CiAJZW51bSBwaXBlIHBpcGU7CiAKLQlpZiAoSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewog CQlkZV9waXBlX21hc2tlZCB8PSBHRU45X1BJUEVfUExBTkUxX0ZMSVBfRE9ORSB8CiAJCQkJICBH RU45X0RFX1BJUEVfSVJRX0ZBVUxUX0VSUk9SUzsKIAkJZGVfcG9ydF9tYXNrZWQgfD0gR0VOOV9B VVhfQ0hBTk5FTF9CIHwgR0VOOV9BVVhfQ0hBTk5FTF9DIHwKQEAgLTQ1MDEsMTAgKzQ1MDEsMTAg QEAgdm9pZCBpbnRlbF9pcnFfaW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYp CiAJICoKIAkgKiBUT0RPOiB2ZXJpZnkgaWYgdGhpcyBjYW4gYmUgcmVwcm9kdWNlZCBvbiBWTFYs Q0hWLgogCSAqLwotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDcgJiYgIUlTX0hB U1dFTEwoZGV2X3ByaXYpKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDcgJiYgIUlTX0hB U1dFTEwoZGV2X3ByaXYpKQogCQlkZXZfcHJpdi0+cnBzLnBtX2ludHJfa2VlcCB8PSBHRU42X1BN X1JQX1VQX0VJX0VYUElSRUQ7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4 KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpCiAJCWRldl9wcml2LT5ycHMucG1faW50 cl9rZWVwIHw9IEdFTjhfUE1JTlRSX1JFRElSRUNUX1RPX05PTl9ESVNQOwogCiAJSU5JVF9ERUxB WUVEX1dPUksoJmRldl9wcml2LT5ncHVfZXJyb3IuaGFuZ2NoZWNrX3dvcmssCkBAIC00NTE0LDcg KzQ1MTQsNyBAQCB2b2lkIGludGVsX2lycV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIAkJLyogR2VuMiBkb2Vzbid0IGhhdmUgYSBoYXJkd2FyZSBmcmFtZSBjb3VudGVy ICovCiAJCWRldi0+bWF4X3ZibGFua19jb3VudCA9IDA7CiAJCWRldi0+ZHJpdmVyLT5nZXRfdmJs YW5rX2NvdW50ZXIgPSBkcm1fdmJsYW5rX25vX2h3X2NvdW50ZXI7Ci0JfSBlbHNlIGlmIChJU19H NFgoZGV2X3ByaXYpIHx8IElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkgeworCX0gZWxz ZSBpZiAoSVNfRzRYKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKIAkJ ZGV2LT5tYXhfdmJsYW5rX2NvdW50ID0gMHhmZmZmZmZmZjsgLyogZnVsbCAzMiBiaXQgY291bnRl ciAqLwogCQlkZXYtPmRyaXZlci0+Z2V0X3ZibGFua19jb3VudGVyID0gZzR4X2dldF92Ymxhbmtf Y291bnRlcjsKIAl9IGVsc2UgewpAQCAtNDU0OSw3ICs0NTQ5LDcgQEAgdm9pZCBpbnRlbF9pcnFf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCWRldi0+ZHJpdmVyLT5l bmFibGVfdmJsYW5rID0gdmFsbGV5dmlld19lbmFibGVfdmJsYW5rOwogCQlkZXYtPmRyaXZlci0+ ZGlzYWJsZV92YmxhbmsgPSB2YWxsZXl2aWV3X2Rpc2FibGVfdmJsYW5rOwogCQlkZXZfcHJpdi0+ ZGlzcGxheS5ocGRfaXJxX3NldHVwID0gaTkxNV9ocGRfaXJxX3NldHVwOwotCX0gZWxzZSBpZiAo SU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KSB7CisJfSBlbHNlIGlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDgpIHsKIAkJZGV2LT5kcml2ZXItPmlycV9oYW5kbGVyID0gZ2VuOF9pcnFf aGFuZGxlcjsKIAkJZGV2LT5kcml2ZXItPmlycV9wcmVpbnN0YWxsID0gZ2VuOF9pcnFfcmVzZXQ7 CiAJCWRldi0+ZHJpdmVyLT5pcnFfcG9zdGluc3RhbGwgPSBnZW44X2lycV9wb3N0aW5zdGFsbDsK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCmluZGV4IDZjNzBhNWJmZDdkOC4uNTkwOTIyZTQ5 ODA0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9hdWRpby5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2F1ZGlvLmMKQEAgLTU2Nyw3ICs1NjcsNyBAQCB2 b2lkIGludGVsX2luaXRfYXVkaW9faG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogCX0gZWxzZSBpZiAoSVNfVkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklF VyhkZXZfcHJpdikpIHsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5hYmxlID0g aWxrX2F1ZGlvX2NvZGVjX2VuYWJsZTsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNf ZGlzYWJsZSA9IGlsa19hdWRpb19jb2RlY19kaXNhYmxlOwotCX0gZWxzZSBpZiAoSVNfSEFTV0VM TChkZXZfcHJpdikgfHwgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KSB7CisJfSBlbHNl IGlmIChJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDgpIHsK IAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZW5hYmxlID0gaHN3X2F1ZGlvX2NvZGVj X2VuYWJsZTsKIAkJZGV2X3ByaXYtPmRpc3BsYXkuYXVkaW9fY29kZWNfZGlzYWJsZSA9IGhzd19h dWRpb19jb2RlY19kaXNhYmxlOwogCX0gZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikp IHsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwppbmRleCBjNmU2OWU0Y2ZhODMuLmMwNTM1NjIw OTQ5YiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfYmlvcy5jCisrKyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Jpb3MuYwpAQCAtMzg3LDcgKzM4Nyw3IEBAIHBh cnNlX3Nkdm9fcGFuZWxfZGF0YShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiBz dGF0aWMgaW50IGludGVsX2Jpb3Nfc3NjX2ZyZXF1ZW5jeShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCiAJCQkJICAgIGJvb2wgYWx0ZXJuYXRlKQogewotCXN3aXRjaCAoSU5URUxf SU5GTyhkZXZfcHJpdiktPmdlbikgeworCXN3aXRjaCAoSU5URUxfR0VOKGRldl9wcml2KSkgewog CWNhc2UgMjoKIAkJcmV0dXJuIGFsdGVybmF0ZSA/IDY2NjY3IDogNDgwMDA7CiAJY2FzZSAzOgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgYi9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kZGkuYwppbmRleCBjZTM2OWMyZTk2YTAuLjU2YzZiNWU1NGNhZCAx MDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKKysrIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKQEAgLTE2MDUsNyArMTYwNSw3IEBAIHZvaWQgaW50 ZWxfZGRpX2Nsa19zZWxlY3Qoc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXIsCiAKIAkJSTkx NV9XUklURShEUExMX0NUUkwyLCB2YWwpOwogCi0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldl9w cml2KS0+Z2VuIDwgOSkgeworCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsK IAkJV0FSTl9PTihwaXBlX2NvbmZpZy0+ZGRpX3BsbF9zZWwgPT0gUE9SVF9DTEtfU0VMX05PTkUp OwogCQlJOTE1X1dSSVRFKFBPUlRfQ0xLX1NFTChwb3J0KSwgcGlwZV9jb25maWctPmRkaV9wbGxf c2VsKTsKIAl9CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9kZGlfcHJl X2VuYWJsZShzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqaW50ZWxfZW5jb2RlciwKIAogCQlpbnRlbF9k cF9zaW5rX2RwbXMoaW50ZWxfZHAsIERSTV9NT0RFX0RQTVNfT04pOwogCQlpbnRlbF9kcF9zdGFy dF9saW5rX3RyYWluKGludGVsX2RwKTsKLQkJaWYgKHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkKKwkJaWYgKHBvcnQgIT0gUE9SVF9BIHx8IElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSkKIAkJCWludGVsX2RwX3N0b3BfbGlua190cmFpbihpbnRlbF9kcCk7 CiAJfSBlbHNlIGlmICh0eXBlID09IElOVEVMX09VVFBVVF9IRE1JKSB7CiAJCXN0cnVjdCBpbnRl bF9oZG1pICppbnRlbF9oZG1pID0gZW5jX3RvX2ludGVsX2hkbWkoZW5jb2Rlcik7CmRpZmYgLS1n aXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2luZm8uYwppbmRleCBjYmExMzdmOWFkM2UuLjlkNjg3 MzdjMzM1OSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGV2aWNlX2lu Zm8uYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZXZpY2VfaW5mby5jCkBAIC0z NjUsNyArMzY1LDcgQEAgdm9pZCBpbnRlbF9kZXZpY2VfaW5mb19ydW50aW1lX2luaXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQljaGVycnl2aWV3X3NzZXVfaW5mb19pbml0 KGRldl9wcml2KTsKIAllbHNlIGlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpKQogCQlicm9hZHdl bGxfc3NldV9pbmZvX2luaXQoZGV2X3ByaXYpOwotCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3By aXYpLT5nZW4gPj0gOSkKKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCWdl bjlfc3NldV9pbmZvX2luaXQoZGV2X3ByaXYpOwogCiAJaW5mby0+aGFzX3Nub29wID0gIWluZm8t Pmhhc19sbGM7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggOGZkN2QzZDlh MWU5Li5jYzY5YWE1YmZiOTYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKQEAg LTIxNDksMTIgKzIxNDksMTIgQEAgaW50ZWxfZmlsbF9mYl9nZ3R0X3ZpZXcoc3RydWN0IGk5MTVf Z2d0dF92aWV3ICp2aWV3LAogCiBzdGF0aWMgdW5zaWduZWQgaW50IGludGVsX2xpbmVhcl9hbGln bm1lbnQoY29uc3Qgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlmIChJ TlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg Pj0gOSkKIAkJcmV0dXJuIDI1NiAqIDEwMjQ7CiAJZWxzZSBpZiAoSVNfQlJPQURXQVRFUihkZXZf cHJpdikgfHwgSVNfQ1JFU1RMSU5FKGRldl9wcml2KSB8fAogCQkgSVNfVkFMTEVZVklFVyhkZXZf cHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCXJldHVybiAxMjggKiAxMDI0Owot CWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNCkKKwllbHNlIGlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDQpCiAJCXJldHVybiA0ICogMTAyNDsKIAllbHNlCiAJCXJldHVy biAwOwpAQCAtMjE2Nyw3ICsyMTY3LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBpbnRlbF9zdXJm X2FsaWdubWVudChjb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYKIAljYXNl IERSTV9GT1JNQVRfTU9EX05PTkU6CiAJCXJldHVybiBpbnRlbF9saW5lYXJfYWxpZ25tZW50KGRl dl9wcml2KTsKIAljYXNlIEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOgotCQlpZiAoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbiA+PSA5KQorCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQog CQkJcmV0dXJuIDI1NiAqIDEwMjQ7CiAJCXJldHVybiAwOwogCWNhc2UgSTkxNV9GT1JNQVRfTU9E X1lfVElMRUQ6CkBAIC0zMTE4LDcgKzMxMTgsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2Rpc2FibGVf cHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5LAogCWludCBwbGFuZSA9IGlu dGVsX2NydGMtPnBsYW5lOwogCiAJSTkxNV9XUklURShEU1BDTlRSKHBsYW5lKSwgMCk7Ci0JaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNCkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA0KQogCQlJOTE1X1dSSVRFKERTUFNVUkYocGxhbmUpLCAwKTsKIAllbHNlCiAJCUk5MTVf V1JJVEUoRFNQQUREUihwbGFuZSksIDApOwpAQCAtNTc5OCwxMiArNTc5OCwxMiBAQCBzdGF0aWMg aW50IGludGVsX2NvbXB1dGVfbWF4X2RvdGNsayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYpCiB7CiAJaW50IG1heF9jZGNsa19mcmVxID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVx OwogCi0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSB8fAorCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpID49IDkgfHwKIAkgICAgSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSVNfQlJP QURXRUxMKGRldl9wcml2KSkKIAkJcmV0dXJuIG1heF9jZGNsa19mcmVxOwogCWVsc2UgaWYgKElT X0NIRVJSWVZJRVcoZGV2X3ByaXYpKQogCQlyZXR1cm4gbWF4X2NkY2xrX2ZyZXEqOTUvMTAwOwot CWVsc2UgaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0KQorCWVsc2UgaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA0KQogCQlyZXR1cm4gMiptYXhfY2RjbGtfZnJlcSo5MC8xMDA7CiAJ ZWxzZQogCQlyZXR1cm4gbWF4X2NkY2xrX2ZyZXEqOTAvMTAwOwpAQCAtNzE1OSw3ICs3MTU5LDcg QEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0Y19zdXBwb3J0c19kb3VibGVfd2lkZShjb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAljb25zdCBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAogCS8qIEdERyBkb3VibGUgd2lkZSBv biBlaXRoZXIgcGlwZSwgb3RoZXJ3aXNlIHBpcGUgQSBvbmx5ICovCi0JcmV0dXJuIElOVEVMX0lO Rk8oZGV2X3ByaXYpLT5nZW4gPCA0ICYmCisJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikgPCA0 ICYmCiAJCShjcnRjLT5waXBlID09IFBJUEVfQSB8fCBJU19JOTE1RyhkZXZfcHJpdikpOwogfQog CkBAIC05Mzk5LDcgKzkzOTksNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBlbWlzYyhz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5kZXYpOwogCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0g dG9faW50ZWxfY3J0YyhjcnRjKTsKIAotCWlmIChJU19CUk9BRFdFTEwoZGV2X3ByaXYpIHx8IElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkgeworCWlmIChJU19CUk9BRFdFTEwoZGV2X3By aXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewogCQl1MzIgdmFsID0gMDsKIAogCQlz d2l0Y2ggKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9icHApIHsKQEAgLTE1Njk1LDcgKzE1Njk1 LDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCiAJICogZ2VuMi8zIGRpc3BsYXkgZW5naW5lIHVzZXMgdGhlIGZlbmNlIGlmIHByZXNl bnQsCiAJICogc28gdGhlIHRpbGluZyBtb2RlIG11c3QgbWF0Y2ggdGhlIGZiIG1vZGlmaWVyIGV4 YWN0bHkuCiAJICovCi0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0ICYmCisJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA0ICYmCiAJICAgIHRpbGluZyAhPSBpbnRlbF9mYl9tb2Rp Zmllcl90b190aWxpbmcobW9kZV9jbWQtPm1vZGlmaWVyWzBdKSkgewogCQlEUk1fREVCVUcoInRp bGluZ19tb2RlIG11c3QgbWF0Y2ggZmIgbW9kaWZpZXIgZXhhY3RseSBvbiBnZW4yLzNcbiIpOwog CQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE1ODU1LDcgKzE1ODU1LDcgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgaW50ZWxfbW9kZV9mdW5jcyA9IHsKICAqLwogdm9p ZCBpbnRlbF9pbml0X2Rpc3BsYXlfaG9va3Moc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2KQogewotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpIHsKKwlpZiAoSU5U RUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CiAJCWRldl9wcml2LT5kaXNwbGF5LmdldF9waXBlX2Nv bmZpZyA9IGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnOwogCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRf aW5pdGlhbF9wbGFuZV9jb25maWcgPQogCQkJc2t5bGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25m aWc7CkBAIC0xNjAxNyw3ICsxNjAxNyw3IEBAIHZvaWQgaW50ZWxfaW5pdF9kaXNwbGF5X2hvb2tz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAllbHNlCiAJCWRldl9wcml2LT5k aXNwbGF5LnVwZGF0ZV9jcnRjcyA9IGludGVsX3VwZGF0ZV9jcnRjczsKIAotCXN3aXRjaCAoSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbikgeworCXN3aXRjaCAoSU5URUxfR0VOKGRldl9wcml2KSkg ewogCWNhc2UgMjoKIAkJZGV2X3ByaXYtPmRpc3BsYXkucXVldWVfZmxpcCA9IGludGVsX2dlbjJf cXVldWVfZmxpcDsKIAkJYnJlYWs7CmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kcC5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwppbmRleCBhM2M3ZGQ4 ZmQ0MDYuLjY4NjdiNzRmYjcyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZHAuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcC5jCkBAIC0xMjA2LDcg KzEyMDYsNyBAQCBzdGF0aWMgaTkxNV9yZWdfdCBza2xfYXV4X2RhdGFfcmVnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBpOTE1X3JlZ190IGludGVsX2F1eF9jdGxf cmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJIGVudW0gcG9ydCBw b3J0KQogewotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCisJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKIAkJcmV0dXJuIHNrbF9hdXhfY3RsX3JlZyhkZXZfcHJpdiwg cG9ydCk7CiAJZWxzZSBpZiAoSEFTX1BDSF9TUExJVChkZXZfcHJpdikpCiAJCXJldHVybiBpbGtf YXV4X2N0bF9yZWcoZGV2X3ByaXYsIHBvcnQpOwpAQCAtMTIxNyw3ICsxMjE3LDcgQEAgc3RhdGlj IGk5MTVfcmVnX3QgaW50ZWxfYXV4X2N0bF9yZWcoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2LAogc3RhdGljIGk5MTVfcmVnX3QgaW50ZWxfYXV4X2RhdGFfcmVnKHN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkJICBlbnVtIHBvcnQgcG9ydCwgaW50IGluZGV4 KQogewotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gOSkKIAkJcmV0dXJuIHNrbF9hdXhfZGF0YV9yZWcoZGV2X3ByaXYsIHBv cnQsIGluZGV4KTsKIAllbHNlIGlmIChIQVNfUENIX1NQTElUKGRldl9wcml2KSkKIAkJcmV0dXJu IGlsa19hdXhfZGF0YV9yZWcoZGV2X3ByaXYsIHBvcnQsIGluZGV4KTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZmJjLmMKaW5kZXggZmFhNjc2MjRlMWVkLi5jYjNhZTg2Y2NjNWYgMTAwNjQ0Ci0tLSBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2ZiYy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2ZiYy5jCkBAIC00OCwxNyArNDgsMTcgQEAgc3RhdGljIGlubGluZSBib29sIGZiY19z dXBwb3J0ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiBzdGF0aWMgaW5s aW5lIGJvb2wgZmJjX29uX3BpcGVfYV9vbmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlyZXR1cm4gSVNfSEFTV0VMTChkZXZfcHJpdikgfHwgSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbiA+PSA4OworCXJldHVybiBJU19IQVNXRUxMKGRldl9wcml2KSB8fCBJTlRFTF9H RU4oZGV2X3ByaXYpID49IDg7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBmYmNfb25fcGxhbmVf YV9vbmx5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlyZXR1cm4gSU5U RUxfSU5GTyhkZXZfcHJpdiktPmdlbiA8IDQ7CisJcmV0dXJuIElOVEVMX0dFTihkZXZfcHJpdikg PCA0OwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgbm9fZmJjX29uX211bHRpcGxlX3BpcGVzKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKLQlyZXR1cm4gSU5URUxfSU5GTyhk ZXZfcHJpdiktPmdlbiA8PSAzOworCXJldHVybiBJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDM7CiB9 CiAKIC8qCkBAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIGludCBpbnRlbF9mYmNfY2FsY3VsYXRl X2NmYl9zaXplKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAlpbnQgbGluZXM7 CiAKIAlpbnRlbF9mYmNfZ2V0X3BsYW5lX3NvdXJjZV9zaXplKGNhY2hlLCBOVUxMLCAmbGluZXMp OwotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDcpCisJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNykKIAkJbGluZXMgPSBtaW4obGluZXMsIDIwNDgpOwogCiAJLyogSGFyZHdh cmUgbmVlZHMgdGhlIGZ1bGwgYnVmZmVyIHN0cmlkZSwgbm90IGp1c3QgdGhlIGFjdGl2ZSBhcmVh LiAqLwpAQCAtMzQ5LDcgKzM0OSw3IEBAIHN0YXRpYyB2b2lkIGdlbjdfZmJjX2FjdGl2YXRlKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGljIGJvb2wgaW50ZWxfZmJj X2h3X2lzX2FjdGl2ZShzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7Ci0JaWYg KElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA1KQogCQlyZXR1cm4gaWxrX2ZiY19pc19hY3RpdmUoZGV2X3ByaXYpOwogCWVsc2UgaWYg KElTX0dNNDUoZGV2X3ByaXYpKQogCQlyZXR1cm4gZzR4X2ZiY19pc19hY3RpdmUoZGV2X3ByaXYp OwpAQCAtMzYzLDkgKzM2Myw5IEBAIHN0YXRpYyB2b2lkIGludGVsX2ZiY19od19hY3RpdmF0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAKIAlmYmMtPmFjdGl2ZSA9IHRydWU7 CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA3KQorCWlmIChJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDcpCiAJCWdlbjdfZmJjX2FjdGl2YXRlKGRldl9wcml2KTsKLQllbHNlIGlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpCisJZWxzZSBpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA+PSA1KQogCQlpbGtfZmJjX2FjdGl2YXRlKGRldl9wcml2KTsKIAllbHNlIGlmIChJ U19HTTQ1KGRldl9wcml2KSkKIAkJZzR4X2ZiY19hY3RpdmF0ZShkZXZfcHJpdik7CkBAIC0zNzks NyArMzc5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfZmJjX2h3X2RlYWN0aXZhdGUoc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCiAJZmJjLT5hY3RpdmUgPSBmYWxzZTsKIAotCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpCisJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNSkKIAkJaWxrX2ZiY19kZWFjdGl2YXRlKGRldl9wcml2KTsKIAllbHNlIGlmIChJU19H TTQ1KGRldl9wcml2KSkKIAkJZzR4X2ZiY19kZWFjdGl2YXRlKGRldl9wcml2KTsKQEAgLTU1OSw3 ICs1NTksNyBAQCBhZ2FpbjoKIAogCXJldCA9IGk5MTVfZ2VtX3N0b2xlbl9pbnNlcnRfbm9kZV9p bl9yYW5nZShkZXZfcHJpdiwgbm9kZSwgc2l6ZSA+Pj0gMSwKIAkJCQkJCSAgIDQwOTYsIDAsIGVu ZCk7Ci0JaWYgKHJldCAmJiBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDQpIHsKKwlpZiAo cmV0ICYmIElOVEVMX0dFTihkZXZfcHJpdikgPD0gNCkgewogCQlyZXR1cm4gMDsKIAl9IGVsc2Ug aWYgKHJldCkgewogCQljb21wcmVzc2lvbl90aHJlc2hvbGQgPDw9IDE7CkBAIC01OTIsNyArNTky LDcgQEAgc3RhdGljIGludCBpbnRlbF9mYmNfYWxsb2NfY2ZiKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQogCiAJZmJjLT50aHJlc2hvbGQgPSByZXQ7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA1KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCiAJCUk5MTVfV1JJ VEUoSUxLX0RQRkNfQ0JfQkFTRSwgZmJjLT5jb21wcmVzc2VkX2ZiLnN0YXJ0KTsKIAllbHNlIGlm IChJU19HTTQ1KGRldl9wcml2KSkgewogCQlJOTE1X1dSSVRFKERQRkNfQ0JfQkFTRSwgZmJjLT5j b21wcmVzc2VkX2ZiLnN0YXJ0KTsKQEAgLTcwNiwxMCArNzA2LDEwIEBAIHN0YXRpYyBib29sIGlu dGVsX2ZiY19od190cmFja2luZ19jb3ZlcnNfc2NyZWVuKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRj KQogCXN0cnVjdCBpbnRlbF9mYmMgKmZiYyA9ICZkZXZfcHJpdi0+ZmJjOwogCXVuc2lnbmVkIGlu dCBlZmZlY3RpdmVfdywgZWZmZWN0aXZlX2gsIG1heF93LCBtYXhfaDsKIAotCWlmIChJTlRFTF9J TkZPKGRldl9wcml2KS0+Z2VuID49IDggfHwgSVNfSEFTV0VMTChkZXZfcHJpdikpIHsKKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA4IHx8IElTX0hBU1dFTEwoZGV2X3ByaXYpKSB7CiAJCW1h eF93ID0gNDA5NjsKIAkJbWF4X2ggPSA0MDk2OwotCX0gZWxzZSBpZiAoSVNfRzRYKGRldl9wcml2 KSB8fCBJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDUpIHsKKwl9IGVsc2UgaWYgKElTX0c0 WChkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7CiAJCW1heF93ID0gNDA5 NjsKIAkJbWF4X2ggPSAyMDQ4OwogCX0gZWxzZSB7CkBAIC04MDIsNyArODAyLDcgQEAgc3RhdGlj IGJvb2wgaW50ZWxfZmJjX2Nhbl9hY3RpdmF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJ ZmJjLT5ub19mYmNfcmVhc29uID0gImZyYW1lYnVmZmVyIG5vdCB0aWxlZCBvciBmZW5jZWQiOwog CQlyZXR1cm4gZmFsc2U7CiAJfQotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9IDQg JiYgIUlTX0c0WChkZXZfcHJpdikgJiYKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYm ICFJU19HNFgoZGV2X3ByaXYpICYmCiAJICAgIGNhY2hlLT5wbGFuZS5yb3RhdGlvbiAhPSBEUk1f Uk9UQVRFXzApIHsKIAkJZmJjLT5ub19mYmNfcmVhc29uID0gInJvdGF0aW9uIHVuc3VwcG9ydGVk IjsKIAkJcmV0dXJuIGZhbHNlOwpAQCAtMTMxNyw3ICsxMzE3LDcgQEAgdm9pZCBpbnRlbF9mYmNf aW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJfQogCiAJLyogVGhpcyB2 YWx1ZSB3YXMgcHVsbGVkIG91dCBvZiBzb21lb25lJ3MgaGF0ICovCi0JaWYgKElOVEVMX0lORk8o ZGV2X3ByaXYpLT5nZW4gPD0gNCAmJiAhSVNfR000NShkZXZfcHJpdikpCisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPD0gNCAmJiAhSVNfR000NShkZXZfcHJpdikpCiAJCUk5MTVfV1JJVEUoRkJD X0NPTlRST0wsIDUwMCA8PCBGQkNfQ1RMX0lOVEVSVkFMX1NISUZUKTsKIAogCS8qIFdlIHN0aWxs IGRvbid0IGhhdmUgYW55IHNvcnQgb2YgaGFyZHdhcmUgc3RhdGUgcmVhZG91dCBmb3IgRkJDLCBz bwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5jCmluZGV4IGU2N2Q4ZGU0Mjdk MC4uYTljNGVhMzdkNmQ5IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9n dWNfbG9hZGVyLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZ3VjX2xvYWRlci5j CkBAIC0xNTIsNyArMTUyLDcgQEAgc3RhdGljIHUzMiBnZXRfZ3R0eXBlKHN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdikKIAogc3RhdGljIHUzMiBnZXRfY29yZV9mYW1pbHkoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN3aXRjaCAoSU5URUxfSU5GTyhkZXZf cHJpdiktPmdlbikgeworCXN3aXRjaCAoSU5URUxfR0VOKGRldl9wcml2KSkgewogCWNhc2UgOToK IAkJcmV0dXJuIEdGWENPUkVfRkFNSUxZX0dFTjk7CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2hkbWkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2hkbWku YwppbmRleCAxYTExNmE2YTE4MTcuLjcxNTVjMjY0OTEwNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfaGRtaS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2hkbWkuYwpAQCAtMTIwNyw3ICsxMjA3LDcgQEAgc3RhdGljIGludCBpbnRlbF9oZG1pX3NvdXJj ZV9tYXhfdG1kc19jbG9jayhzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJ aWYgKElTX0c0WChkZXZfcHJpdikpCiAJCXJldHVybiAxNjUwMDA7Ci0JZWxzZSBpZiAoSVNfSEFT V0VMTChkZXZfcHJpdikgfHwgSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KQorCWVsc2Ug aWYgKElTX0hBU1dFTEwoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikgPj0gOCkKIAkJ cmV0dXJuIDMwMDAwMDsKIAllbHNlCiAJCXJldHVybiAyMjUwMDA7CkBAIC0xNTA2LDcgKzE1MDYs NyBAQCBpbnRlbF9oZG1pX2RldGVjdChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLCBi b29sIGZvcmNlKQogCQkgKiBTbyBjb25zaWRlciBsaXZlX3N0YXR1cyBvbmx5IGZvciBjZXJ0YWlu IHBsYXRmb3JtcywgZm9yCiAJCSAqIG90aGVycywgcmVhZCBFRElEIHRvIGRldGVybWluZSBwcmVz ZW5jZSBvZiBzaW5rLgogCQkgKi8KLQkJaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA3 IHx8IElTX0lWWUJSSURHRShkZXZfcHJpdikpCisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NyB8fCBJU19JVllCUklER0UoZGV2X3ByaXYpKQogCQkJbGl2ZV9zdGF0dXMgPSB0cnVlOwogCX0K IApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jIGIvZHJpdmVy cy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCmluZGV4IGE2NjY5MmQ2NzlkYi4uYzllZTAwYjUw Nzg1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sdmRzLmMKKysrIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCkBAIC0xODksNyArMTg5LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfbHZkc19wcHNfZ2V0X2h3X3N0YXRlKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIAkvKiBDb252ZXJ0IGZyb20gMTAwbXMgdG8gMTAwdXMgdW5pdHMgKi8K IAlwcHMtPnQ0ID0gdmFsICogMTAwMDsKIAotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2Vu IDw9IDQgJiYKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSA0ICYmCiAJICAgIHBwcy0+dDFf dDIgPT0gMCAmJiBwcHMtPnQ1ID09IDAgJiYgcHBzLT50MyA9PSAwICYmIHBwcy0+dHggPT0gMCkg ewogCQlEUk1fREVCVUdfS01TKCJQYW5lbCBwb3dlciB0aW1pbmdzIHVuaW5pdGlhbGl6ZWQsICIK IAkJCSAgICAgICJzZXR0aW5nIGRlZmF1bHRzXG4iKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX21vY3MuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX21vY3Mu YwppbmRleCA4MGJiOTI0N2NlNjYuLmI5MWZjMGU5MTJkZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfbW9jcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X21vY3MuYwpAQCAtMTg3LDcgKzE4Nyw3IEBAIHN0YXRpYyBib29sIGdldF9tb2NzX3NldHRpbmdz KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJdGFibGUtPnRhYmxlID0gYnJv eHRvbl9tb2NzX3RhYmxlOwogCQlyZXN1bHQgPSB0cnVlOwogCX0gZWxzZSB7Ci0JCVdBUk5fT05D RShJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDksCisJCVdBUk5fT05DRShJTlRFTF9HRU4o ZGV2X3ByaXYpID49IDksCiAJCQkgICJQbGF0Zm9ybSB0aGF0IHNob3VsZCBoYXZlIGEgTU9DUyB0 YWJsZSBkb2VzIG5vdC5cbiIpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfcGFuZWwuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BhbmVsLmMKaW5k ZXggOTZjNjVkNzdlODg2Li43NjBlZmIyZWM1ZWYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3BhbmVsLmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcGFu ZWwuYwpAQCAtNDk4LDcgKzQ5OCw3IEBAIHN0YXRpYyB1MzIgaTl4eF9nZXRfYmFja2xpZ2h0KHN0 cnVjdCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvcikKIAl1MzIgdmFsOwogCiAJdmFsID0gSTkx NV9SRUFEKEJMQ19QV01fQ1RMKSAmIEJBQ0tMSUdIVF9EVVRZX0NZQ0xFX01BU0s7Ci0JaWYgKElO VEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPCA0KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwg NCkKIAkJdmFsID4+PSAxOwogCiAJaWYgKHBhbmVsLT5iYWNrbGlnaHQuY29tYmluYXRpb25fbW9k ZSkgewpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKaW5kZXggMGM5MTIzNWJjZWY3Li5mOWM3NzA4MzI1 ZTMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3BtLmMKKysrIGIvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcG0uYwpAQCAtNTE3MSw3ICs1MTcxLDcgQEAgc3RhdGlj IGJvb2wgYnh0X2NoZWNrX2Jpb3NfcmM2X3NldHVwKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpk ZXZfcHJpdikKIGludCBzYW5pdGl6ZV9yYzZfb3B0aW9uKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwgaW50IGVuYWJsZV9yYzYpCiB7CiAJLyogTm8gUkM2IGJlZm9yZSBJcm9ubGFr ZSBhbmQgY29kZSBpcyBnb25lIGZvciBpbGsuICovCi0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYp LT5nZW4gPCA2KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNikKIAkJcmV0dXJuIDA7CiAK IAlpZiAoIWVuYWJsZV9yYzYpCkBAIC01NTk2LDcgKzU1OTYsNyBAQCBzdGF0aWMgdm9pZCBnZW42 X3VwZGF0ZV9yaW5nX2ZyZXEoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCQkJ ICogTm8gZmxvb3IgcmVxdWlyZWQgZm9yIHJpbmcgZnJlcXVlbmN5IG9uIFNLTC4KIAkJCSAqLwog CQkJcmluZ19mcmVxID0gZ3B1X2ZyZXE7Ci0JCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJp diktPmdlbiA+PSA4KSB7CisJCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA4KSB7 CiAJCQkvKiBtYXgoMiAqIEdULCBERFIpLiBOQjogR1QgaXMgNTBNSHogdW5pdHMgKi8KIAkJCXJp bmdfZnJlcSA9IG1heChtaW5fcmluZ19mcmVxLCBncHVfZnJlcSk7CiAJCX0gZWxzZSBpZiAoSVNf SEFTV0VMTChkZXZfcHJpdikpIHsKQEAgLTYxODMsNyArNjE4Myw3IEBAIHVuc2lnbmVkIGxvbmcg aTkxNV9jaGlwc2V0X3ZhbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiB7CiAJ dW5zaWduZWQgbG9uZyB2YWw7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiAhPSA1 KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpICE9IDUpCiAJCXJldHVybiAwOwogCiAJc3Bpbl9s b2NrX2lycSgmbWNoZGV2X2xvY2spOwpAQCAtNjI2Nyw3ICs2MjY3LDcgQEAgc3RhdGljIHZvaWQg X19pOTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikK IAogdm9pZCBpOTE1X3VwZGF0ZV9nZnhfdmFsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdikKIHsKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiAhPSA1KQorCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpICE9IDUpCiAJCXJldHVybjsKIAogCXNwaW5fbG9ja19pcnEoJm1jaGRl dl9sb2NrKTsKQEAgLTYzMTgsNyArNjMxOCw3IEBAIHVuc2lnbmVkIGxvbmcgaTkxNV9nZnhfdmFs KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIHsKIAl1bnNpZ25lZCBsb25nIHZh bDsKIAotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuICE9IDUpCisJaWYgKElOVEVMX0dF TihkZXZfcHJpdikgIT0gNSkKIAkJcmV0dXJuIDA7CiAKIAlzcGluX2xvY2tfaXJxKCZtY2hkZXZf bG9jayk7CkBAIC02Nzc2LDcgKzY3NzYsNyBAQCB2b2lkIGludGVsX2F1dG9lbmFibGVfZ3RfcG93 ZXJzYXZlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAkJbXV0ZXhfbG9jaygm ZGV2X3ByaXYtPmRybS5zdHJ1Y3RfbXV0ZXgpOwogCQlpbnRlbF9pbml0X2Vtb24oZGV2X3ByaXYp OwogCQltdXRleF91bmxvY2soJmRldl9wcml2LT5kcm0uc3RydWN0X211dGV4KTsKLQl9IGVsc2Ug aWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gNikgeworCX0gZWxzZSBpZiAoSU5URUxf R0VOKGRldl9wcml2KSA+PSA2KSB7CiAJCS8qCiAJCSAqIFBDVSBjb21tdW5pY2F0aW9uIGlzIHNs b3cgYW5kIHRoaXMgZG9lc24ndCBuZWVkIHRvIGJlCiAJCSAqIGRvbmUgYXQgYW55IHNwZWNpZmlj IHRpbWUsIHNvIGRvIHRoaXMgb3V0IG9mIG91ciBmYXN0IHBhdGgKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf cHNyLmMKaW5kZXggNTlhMjFjOWQyZTQzLi42YmIwZDg5MzJjMzEgMTAwNjQ0Ci0tLSBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX3Bzci5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX3Bzci5jCkBAIC0xNTQsNyArMTU0LDcgQEAgc3RhdGljIHZvaWQgdmx2X3Bzcl9lbmFibGVf c2luayhzdHJ1Y3QgaW50ZWxfZHAgKmludGVsX2RwKQogc3RhdGljIGk5MTVfcmVnX3QgcHNyX2F1 eF9jdGxfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICAgICAg ZW51bSBwb3J0IHBvcnQpCiB7Ci0JaWYgKElOVEVMX0lORk8oZGV2X3ByaXYpLT5nZW4gPj0gOSkK KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlyZXR1cm4gRFBfQVVYX0NIX0NUTChw b3J0KTsKIAllbHNlCiAJCXJldHVybiBFRFBfUFNSX0FVWF9DVEw7CkBAIC0xNjMsNyArMTYzLDcg QEAgc3RhdGljIGk5MTVfcmVnX3QgcHNyX2F1eF9jdGxfcmVnKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKIHN0YXRpYyBpOTE1X3JlZ190IHBzcl9hdXhfZGF0YV9yZWcoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCQkJCQllbnVtIHBvcnQgcG9ydCwgaW50IGlu ZGV4KQogewotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDkpCisJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPj0gOSkKIAkJcmV0dXJuIERQX0FVWF9DSF9EQVRBKHBvcnQsIGluZGV4 KTsKIAllbHNlCiAJCXJldHVybiBFRFBfUFNSX0FVWF9EQVRBKGluZGV4KTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwppbmRleCBjYzViY2QxNGI2ZGYuLjRkOTBmODk4ZmIx YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZmZXIuYwpAQCAtMTI0OCw3ICsx MjQ4LDcgQEAgc3RhdGljIGludCBpbml0X3JlbmRlcl9yaW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZSkKIAlpZiAoSVNfR0VOKGRldl9wcml2LCA2LCA3KSkKIAkJSTkxNV9XUklURShJ TlNUUE0sIF9NQVNLRURfQklUX0VOQUJMRShJTlNUUE1fRk9SQ0VfT1JERVJJTkcpKTsKIAotCWlm IChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDYpCisJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gNikKIAkJSTkxNV9XUklURV9JTVIoZW5naW5lLCB+ZW5naW5lLT5pcnFfa2VlcF9tYXNr KTsKIAogCXJldHVybiBpbml0X3dvcmthcm91bmRzX3JpbmcoZW5naW5lKTsKZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfdW5jb3JlLmMKaW5kZXggZTlmNjhjZDU2ZTMyLi5iNzg0NjY3MmE1ZjYgMTAwNjQ0 Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX3VuY29yZS5jCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBzdGF0aWMg dm9pZCBmd19kb21haW5faW5pdChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAK IHN0YXRpYyB2b2lkIGludGVsX3VuY29yZV9md19kb21haW5zX2luaXQoc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2KQogewotCWlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuIDw9 IDUpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPD0gNSkKIAkJcmV0dXJuOwogCiAJaWYgKElT X0dFTjkoZGV2X3ByaXYpKSB7CkBAIC0xMzM0LDcgKzEzMzQsNyBAQCB2b2lkIGludGVsX3VuY29y ZV9pbml0KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdikKIAogCWRldl9wcml2LT51 bmNvcmUudW5jbGFpbWVkX21taW9fY2hlY2sgPSAxOwogCi0Jc3dpdGNoIChJTlRFTF9JTkZPKGRl dl9wcml2KS0+Z2VuKSB7CisJc3dpdGNoIChJTlRFTF9HRU4oZGV2X3ByaXYpKSB7CiAJZGVmYXVs dDoKIAljYXNlIDk6CiAJCUFTU0lHTl9XUklURV9NTUlPX1ZGVU5DUyhnZW45KTsKQEAgLTE3Mzgs OSArMTczOCw5IEBAIHN0YXRpYyByZXNldF9mdW5jIGludGVsX2dldF9ncHVfcmVzZXQoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogCWlmICghaTkxNS5yZXNldCkKIAkJcmV0dXJu IE5VTEw7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA4KQorCWlmIChJTlRF TF9HRU4oZGV2X3ByaXYpID49IDgpCiAJCXJldHVybiBnZW44X3Jlc2V0X2VuZ2luZXM7Ci0JZWxz ZSBpZiAoSU5URUxfSU5GTyhkZXZfcHJpdiktPmdlbiA+PSA2KQorCWVsc2UgaWYgKElOVEVMX0dF TihkZXZfcHJpdikgPj0gNikKIAkJcmV0dXJuIGdlbjZfcmVzZXRfZW5naW5lczsKIAllbHNlIGlm IChJU19HRU41KGRldl9wcml2KSkKIAkJcmV0dXJuIGlyb25sYWtlX2RvX3Jlc2V0OwpAQCAtMTc0 OCw3ICsxNzQ4LDcgQEAgc3RhdGljIHJlc2V0X2Z1bmMgaW50ZWxfZ2V0X2dwdV9yZXNldChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCiAJCXJldHVybiBnNHhfZG9fcmVzZXQ7CiAJ ZWxzZSBpZiAoSVNfRzMzKGRldl9wcml2KSkKIAkJcmV0dXJuIGczM19kb19yZXNldDsKLQllbHNl IGlmIChJTlRFTF9JTkZPKGRldl9wcml2KS0+Z2VuID49IDMpCisJZWxzZSBpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSAzKQogCQlyZXR1cm4gaTkxNV9kb19yZXNldDsKIAllbHNlCiAJCXJldHVy biBOVUxMOwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgaW50ZWxfdW5jb3JlX2ZvcmNld2FrZV9mb3Jf cmVhZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQlmd19kb21haW5zID0g X19nZW42X3JlZ19yZWFkX2Z3X2RvbWFpbnMoaTkxNV9tbWlvX3JlZ19vZmZzZXQocmVnKSk7CiAJ CWJyZWFrOwogCWRlZmF1bHQ6Ci0JCU1JU1NJTkdfQ0FTRShJTlRFTF9JTkZPKGRldl9wcml2KS0+ Z2VuKTsKKwkJTUlTU0lOR19DQVNFKElOVEVMX0dFTihkZXZfcHJpdikpOwogCWNhc2UgNTogLyog Zm9yY2V3YWtlIHdhcyBpbnRyb2R1Y2VkIHdpdGggZ2VuNiAqLwogCWNhc2UgNDoKIAljYXNlIDM6 CkBAIC0xODg1LDcgKzE4ODUsNyBAQCBpbnRlbF91bmNvcmVfZm9yY2V3YWtlX2Zvcl93cml0ZShz dHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCWZ3X2RvbWFpbnMgPSBGT1JDRVdB S0VfUkVOREVSOwogCQlicmVhazsKIAlkZWZhdWx0OgotCQlNSVNTSU5HX0NBU0UoSU5URUxfSU5G TyhkZXZfcHJpdiktPmdlbik7CisJCU1JU1NJTkdfQ0FTRShJTlRFTF9HRU4oZGV2X3ByaXYpKTsK IAljYXNlIDU6CiAJY2FzZSA0OgogCWNhc2UgMzoKLS0gCjIuOS4zCgpfX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0Cklu dGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK