From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 35/42] drm/i915: get rid of crtc->config in intel_display.c, part 2 Date: Mon, 11 May 2015 16:25:11 +0200 Message-ID: <1431354318-11995-36-git-send-email-maarten.lankhorst@linux.intel.com> References: <1431354318-11995-1-git-send-email-maarten.lankhorst@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTP id ABBF36E425 for ; Mon, 11 May 2015 07:25:45 -0700 (PDT) In-Reply-To: <1431354318-11995-1-git-send-email-maarten.lankhorst@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: Ander Conselvan de Oliveira List-Id: intel-gfx@lists.freedesktop.org Q29udmVydCB0aGUgcmVzdCBvZiB0aGUgZmlsZSwgYnV0IHJlbW92ZSBjcnRjLT5jb25maWcgaW4g YSBzZXBhcmF0ZQpjb21taXQgdG8gaG9wZWZ1bGx5IGFsbG93IGVhc2llciBiaXNlY3RpbmcuCgpT aWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRlbi5sYW5raG9yc3RAbGludXgu aW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDM1 MSArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy9ncHUvZHJtL2k5 MTUvaW50ZWxfZHAuYyAgICAgIHwgICA0ICstCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k cnYuaCAgICAgfCAgIDQgKy0KIDMgZmlsZXMgY2hhbmdlZCwgMTg2IGluc2VydGlvbnMoKyksIDE3 MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9k aXNwbGF5LmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKaW5kZXggZmIy ZWNiNjVhYWFhLi4yYzQ2N2NkYTc0YTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5 LmMKQEAgLTg4LDE0ICs4OCwyMCBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQo c3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAq aWZiLAogCQkJCSAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLAogCQkJCSAgc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaik7Ci1zdGF0aWMgdm9pZCBpOXh4X3NldF9waXBl Y29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0Yyk7Ci1zdGF0aWMgdm9pZCBpbnRlbF9z ZXRfcGlwZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKTsKK3N0YXRpYyB2 b2lkIGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAorCQkJ ICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKK3N0YXRpYyB2b2lk IGludGVsX3NldF9waXBlX3RpbWluZ3Moc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMsCisJ CQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIHN0YXRpYyB2b2lk IGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCisJ CQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCQkJCSBzdHJ1Y3Qg aW50ZWxfbGlua19tX24gKm1fbiwKIAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbTJfbjIp Owotc3RhdGljIHZvaWQgaXJvbmxha2Vfc2V0X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7Ci1zdGF0aWMgdm9pZCBoYXN3ZWxsX3NldF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpOwotc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0 Yyk7CitzdGF0aWMgdm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpj cnRjLAorCQkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKK3N0YXRp YyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKKwkJCQkg c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKK3N0YXRpYyB2b2lkIGludGVs X3NldF9waXBlX2NzYyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkgICAgICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIHN0YXRpYyB2b2lkIHZsdl9wcmVwYXJlX3Bs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCSAgICBjb25zdCBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpOwogc3RhdGljIHZvaWQgY2h2X3ByZXBhcmVfcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLApAQCAtMzAyMSw3ICszMDI3LDcgQEAgc3RhdGljIHZvaWQgc2t5 bGFrZV91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJdW5zaWdu ZWQgaW50IHJvdGF0aW9uOwogCWludCB4X29mZnNldCwgeV9vZmZzZXQ7CiAJdW5zaWduZWQgbG9u ZyBzdXJmX2FkZHI7Ci0Jc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSBpbnRl bF9jcnRjLT5jb25maWc7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUgPSB0 b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKIAlzdHJ1Y3QgaW50ZWxfcGxhbmVfc3Rh dGUgKnBsYW5lX3N0YXRlOwogCWludCBzcmNfeCA9IDAsIHNyY195ID0gMCwgc3JjX3cgPSAwLCBz cmNfaCA9IDA7CiAJaW50IGRzdF94ID0gMCwgZHN0X3kgPSAwLCBkc3RfdyA9IDAsIGRzdF9oID0g MDsKQEAgLTMwNTIsMjcgKzMwNTgsMTcgQEAgc3RhdGljIHZvaWQgc2t5bGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCSAgICAgICBmYi0+cGl4ZWxf Zm9ybWF0KTsKIAlzdXJmX2FkZHIgPSBpbnRlbF9wbGFuZV9vYmpfb2Zmc2V0KHRvX2ludGVsX3Bs YW5lKHBsYW5lKSwgb2JqKTsKIAotCS8qCi0JICogRklYTUU6IGludGVsX3BsYW5lX3N0YXRlLT5z cmMsIGRzdCBhcmVuJ3Qgc2V0IHdoZW4gdHJhbnNpdGlvbmFsCi0JICogdXBkYXRlX3BsYW5lIGhl bHBlcnMgYXJlIGNhbGxlZCBmcm9tIGxlZ2FjeSBwYXRocy4KLQkgKiBPbmNlIGZ1bGwgYXRvbWlj IGNydGMgaXMgYXZhaWxhYmxlLCBiZWxvdyBjaGVjayBjYW4gYmUgYXZvaWRlZC4KLQkgKi8KLQlp ZiAoZHJtX3JlY3Rfd2lkdGgoJnBsYW5lX3N0YXRlLT5zcmMpKSB7Ci0JCXNjYWxlcl9pZCA9IHBs YW5lX3N0YXRlLT5zY2FsZXJfaWQ7Ci0JCXNyY194ID0gcGxhbmVfc3RhdGUtPnNyYy54MSA+PiAx NjsKLQkJc3JjX3kgPSBwbGFuZV9zdGF0ZS0+c3JjLnkxID4+IDE2OwotCQlzcmNfdyA9IGRybV9y ZWN0X3dpZHRoKCZwbGFuZV9zdGF0ZS0+c3JjKSA+PiAxNjsKLQkJc3JjX2ggPSBkcm1fcmVjdF9o ZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+IDE2OwotCQlkc3RfeCA9IHBsYW5lX3N0YXRlLT5k c3QueDE7Ci0JCWRzdF95ID0gcGxhbmVfc3RhdGUtPmRzdC55MTsKLQkJZHN0X3cgPSBkcm1fcmVj dF93aWR0aCgmcGxhbmVfc3RhdGUtPmRzdCk7Ci0JCWRzdF9oID0gZHJtX3JlY3RfaGVpZ2h0KCZw bGFuZV9zdGF0ZS0+ZHN0KTsKKwlzY2FsZXJfaWQgPSBwbGFuZV9zdGF0ZS0+c2NhbGVyX2lkOwor CXNyY194ID0gcGxhbmVfc3RhdGUtPnNyYy54MSA+PiAxNjsKKwlzcmNfeSA9IHBsYW5lX3N0YXRl LT5zcmMueTEgPj4gMTY7CisJc3JjX3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPnNy YykgPj4gMTY7CisJc3JjX2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5zcmMpID4+ IDE2OworCWRzdF94ID0gcGxhbmVfc3RhdGUtPmRzdC54MTsKKwlkc3RfeSA9IHBsYW5lX3N0YXRl LT5kc3QueTE7CisJZHN0X3cgPSBkcm1fcmVjdF93aWR0aCgmcGxhbmVfc3RhdGUtPmRzdCk7CisJ ZHN0X2ggPSBkcm1fcmVjdF9oZWlnaHQoJnBsYW5lX3N0YXRlLT5kc3QpOwogCi0JCVdBUk5fT04o eCAhPSBzcmNfeCB8fCB5ICE9IHNyY195KTsKLQl9IGVsc2UgewotCQlzcmNfdyA9IGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfdzsKLQkJc3JjX2ggPSBpbnRlbF9jcnRjLT5jb25maWctPnBp cGVfc3JjX2g7Ci0JfQorCVdBUk5fT04oeCAhPSBzcmNfeCB8fCB5ICE9IHNyY195KTsKIAogCWlm IChpbnRlbF9yb3RhdGlvbl85MF9vcl8yNzAocm90YXRpb24pKSB7CiAJCS8qIHN0cmlkZSA9IFN1 cmZhY2UgaGVpZ2h0IGluIHRpbGVzICovCkBAIC00NDg5LDI3ICs0NDg1LDI5IEBAIHNrbF91cGRh dGVfc2NhbGVyX3VzZXJzKAogCXJldHVybiAwOwogfQogCi1zdGF0aWMgdm9pZCBza3lsYWtlX3Bm aXRfdXBkYXRlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBpbnQgZW5hYmxlKQorc3RhdGljIHZv aWQgc2t5bGFrZV9wZml0X3VwZGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCQlzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCisJCQkJaW50IGVuYWJsZSkKIHsKIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlpbnQgcGlwZSA9IGNydGMt PnBpcGU7CiAJc3RydWN0IGludGVsX2NydGNfc2NhbGVyX3N0YXRlICpzY2FsZXJfc3RhdGUgPQot CQkmY3J0Yy0+Y29uZmlnLT5zY2FsZXJfc3RhdGU7CisJCSZwaXBlX2NvbmZpZy0+c2NhbGVyX3N0 YXRlOwogCi0JRFJNX0RFQlVHX0tNUygiZm9yIGNydGNfc3RhdGUgPSAlcFxuIiwgY3J0Yy0+Y29u ZmlnKTsKKwlEUk1fREVCVUdfS01TKCJmb3IgY3J0Y19zdGF0ZSA9ICVwXG4iLCBwaXBlX2NvbmZp Zyk7CiAKIAkvKiBUbyB1cGRhdGUgcGZpdCwgZmlyc3QgdXBkYXRlIHNjYWxlciBzdGF0ZSAqLwot CXNrbF91cGRhdGVfc2NhbGVyX3VzZXJzKGNydGMsIGNydGMtPmNvbmZpZywgTlVMTCwgTlVMTCwg IWVuYWJsZSk7Ci0JaW50ZWxfYXRvbWljX3NldHVwX3NjYWxlcnMoY3J0Yy0+YmFzZS5kZXYsIGNy dGMsIGNydGMtPmNvbmZpZyk7CisJc2tsX3VwZGF0ZV9zY2FsZXJfdXNlcnMoY3J0YywgcGlwZV9j b25maWcsIE5VTEwsIE5VTEwsICFlbmFibGUpOworCWludGVsX2F0b21pY19zZXR1cF9zY2FsZXJz KGNydGMtPmJhc2UuZGV2LCBjcnRjLCBwaXBlX2NvbmZpZyk7CiAJc2tsX2RldGFjaF9zY2FsZXJz KGNydGMpOwogCWlmICghZW5hYmxlKQogCQlyZXR1cm47CiAKLQlpZiAoY3J0Yy0+Y29uZmlnLT5w Y2hfcGZpdC5lbmFibGVkKSB7CisJaWYgKHBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkKSB7 CiAJCWludCBpZDsKIAotCQlpZiAoV0FSTl9PTihjcnRjLT5jb25maWctPnNjYWxlcl9zdGF0ZS5z Y2FsZXJfaWQgPCAwKSkgeworCQlpZiAoV0FSTl9PTihwaXBlX2NvbmZpZy0+c2NhbGVyX3N0YXRl LnNjYWxlcl9pZCA8IDApKSB7CiAJCQlEUk1fRVJST1IoIlJlcXVlc3RpbmcgcGZpdCB3aXRob3V0 IGdldHRpbmcgYSBzY2FsZXIgZmlyc3RcbiIpOwogCQkJcmV0dXJuOwogCQl9CkBAIC00NTE3LDIw ICs0NTE1LDIxIEBAIHN0YXRpYyB2b2lkIHNreWxha2VfcGZpdF91cGRhdGUoc3RydWN0IGludGVs X2NydGMgKmNydGMsIGludCBlbmFibGUpCiAJCWlkID0gc2NhbGVyX3N0YXRlLT5zY2FsZXJfaWQ7 CiAJCUk5MTVfV1JJVEUoU0tMX1BTX0NUUkwocGlwZSwgaWQpLCBQU19TQ0FMRVJfRU4gfAogCQkJ UFNfRklMVEVSX01FRElVTSB8IHNjYWxlcl9zdGF0ZS0+c2NhbGVyc1tpZF0ubW9kZSk7Ci0JCUk5 MTVfV1JJVEUoU0tMX1BTX1dJTl9QT1MocGlwZSwgaWQpLCBjcnRjLT5jb25maWctPnBjaF9wZml0 LnBvcyk7Ci0JCUk5MTVfV1JJVEUoU0tMX1BTX1dJTl9TWihwaXBlLCBpZCksIGNydGMtPmNvbmZp Zy0+cGNoX3BmaXQuc2l6ZSk7CisJCUk5MTVfV1JJVEUoU0tMX1BTX1dJTl9QT1MocGlwZSwgaWQp LCBwaXBlX2NvbmZpZy0+cGNoX3BmaXQucG9zKTsKKwkJSTkxNV9XUklURShTS0xfUFNfV0lOX1Na KHBpcGUsIGlkKSwgcGlwZV9jb25maWctPnBjaF9wZml0LnNpemUpOwogCi0JCURSTV9ERUJVR19L TVMoImZvciBjcnRjX3N0YXRlID0gJXAgc2NhbGVyX2lkID0gJWRcbiIsIGNydGMtPmNvbmZpZywg aWQpOworCQlEUk1fREVCVUdfS01TKCJmb3IgY3J0Y19zdGF0ZSA9ICVwIHNjYWxlcl9pZCA9ICVk XG4iLCBwaXBlX2NvbmZpZywgaWQpOwogCX0KIH0KIAotc3RhdGljIHZvaWQgaXJvbmxha2VfcGZp dF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCitzdGF0aWMgdm9pZCBpcm9ubGFrZV9w Zml0X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJCQkgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRl dl9wcml2YXRlOwogCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKIAotCWlmIChjcnRjLT5jb25maWct PnBjaF9wZml0LmVuYWJsZWQpIHsKKwlpZiAocGlwZV9jb25maWctPnBjaF9wZml0LmVuYWJsZWQp IHsKIAkJLyogRm9yY2UgdXNlIG9mIGhhcmQtY29kZWQgZmlsdGVyIGNvZWZmaWNpZW50cwogCQkg KiBhcyBzb21lIHByZS1wcm9ncmFtbWVkIHZhbHVlcyBhcmUgYnJva2VuLAogCQkgKiBlLmcuIHgy MDEuCkBAIC00NTQwLDggKzQ1MzksOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0X2VuYWJs ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJCQkJCSBQRl9QSVBFX1NFTF9JVkIocGlwZSkp OwogCQllbHNlCiAJCQlJOTE1X1dSSVRFKFBGX0NUTChwaXBlKSwgUEZfRU5BQkxFIHwgUEZfRklM VEVSX01FRF8zeDMpOwotCQlJOTE1X1dSSVRFKFBGX1dJTl9QT1MocGlwZSksIGNydGMtPmNvbmZp Zy0+cGNoX3BmaXQucG9zKTsKLQkJSTkxNV9XUklURShQRl9XSU5fU1oocGlwZSksIGNydGMtPmNv bmZpZy0+cGNoX3BmaXQuc2l6ZSk7CisJCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhwaXBlKSwgcGlw ZV9jb25maWctPnBjaF9wZml0LnBvcyk7CisJCUk5MTVfV1JJVEUoUEZfV0lOX1NaKHBpcGUpLCBw aXBlX2NvbmZpZy0+cGNoX3BmaXQuc2l6ZSk7CiAJfQogfQogCkBAIC00NTUwLDcgKzQ1NDksNyBA QCB2b2lkIGhzd19lbmFibGVfaXBzKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCi0JaWYgKCFjcnRjLT5jb25maWctPmlw c19lbmFibGVkKQorCWlmICghdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKS0+ aXBzX2VuYWJsZWQpCiAJCXJldHVybjsKIAogCS8qIFdlIGNhbiBvbmx5IGVuYWJsZSBJUFMgYWZ0 ZXIgd2UgZW5hYmxlIGEgcGxhbmUgYW5kIHdhaXQgZm9yIGEgdmJsYW5rICovCkBAIC00NTgzLDcg KzQ1ODIsNyBAQCB2b2lkIGhzd19kaXNhYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykK IAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7CiAJc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAotCWlmICghY3J0Yy0+ Y29uZmlnLT5pcHNfZW5hYmxlZCkKKwlpZiAoIXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+YmFz ZS5zdGF0ZSktPmlwc19lbmFibGVkKQogCQlyZXR1cm47CiAKIAlhc3NlcnRfcGxhbmVfZW5hYmxl ZChkZXZfcHJpdiwgY3J0Yy0+cGxhbmUpOwpAQCAtNDYzMiw3ICs0NjMxLDcgQEAgc3RhdGljIHZv aWQgaW50ZWxfY3J0Y19sb2FkX2x1dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJLyogV29ya2Fy b3VuZCA6IERvIG5vdCByZWFkIG9yIHdyaXRlIHRoZSBwaXBlIHBhbGV0dGUvZ2FtbWEgZGF0YSB3 aGlsZQogCSAqIEdBTU1BX01PREUgaXMgY29uZmlndXJlZCBmb3Igc3BsaXQgZ2FtbWEgYW5kIElQ U19DVEwgaGFzIElQUyBlbmFibGVkLgogCSAqLwotCWlmIChJU19IQVNXRUxMKGRldikgJiYgaW50 ZWxfY3J0Yy0+Y29uZmlnLT5pcHNfZW5hYmxlZCAmJgorCWlmIChJU19IQVNXRUxMKGRldikgJiYg dG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSktPmlwc19lbmFibGVkICYmCiAJICAgICgo STkxNV9SRUFEKEdBTU1BX01PREUocGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0spID09CiAJ ICAgICBHQU1NQV9NT0RFX01PREVfU1BMSVQpKSB7CiAJCWhzd19kaXNhYmxlX2lwcyhpbnRlbF9j cnRjKTsKQEAgLTQ3ODMsMTYgKzQ3ODIsMTYgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJCQkgIHBpcGVfY29uZmlnLT5zaGFyZWRf ZHBsbCk7CiAKIAlpZiAocGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyKQotCQlpbnRlbF9kcF9z ZXRfbV9uKGludGVsX2NydGMsIE0xX04xKTsKKwkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRj LCBwaXBlX2NvbmZpZywgTTFfTjEpOwogCi0JaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhpbnRlbF9j cnRjKTsKKwlpbnRlbF9zZXRfcGlwZV90aW1pbmdzKGludGVsX2NydGMsIHBpcGVfY29uZmlnKTsK IAogCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Ci0JCWludGVsX2NwdV90cmFu c2NvZGVyX3NldF9tX24oaW50ZWxfY3J0YywKKwkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21f bihpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywKIAkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZmRpX21f biwgTlVMTCk7CiAJfQogCi0JaXJvbmxha2Vfc2V0X3BpcGVjb25mKGNydGMpOworCWlyb25sYWtl X3NldF9waXBlY29uZihjcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAlpbnRlbF9zZXRfY3B1X2ZpZm9f dW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKIAlpbnRlbF9zZXRfcGNo X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKQEAgLTQ4MTEs NyArNDgxMCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAkJYXNzZXJ0X2ZkaV9yeF9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZSk7CiAJ fQogCi0JaXJvbmxha2VfcGZpdF9lbmFibGUoaW50ZWxfY3J0Yyk7CisJaXJvbmxha2VfcGZpdF9l bmFibGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwogCiAJLyoKIAkgKiBPbiBJTEsrIExVVCBt dXN0IGJlIGxvYWRlZCBiZWZvcmUgdGhlIHBpcGUgaXMgcnVubmluZyBidXQgd2l0aApAQCAtNDgy Miw3ICs0ODIxLDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfY3J0Y19lbmFibGUoc3RydWN0IGRy bV9jcnRjICpjcnRjKQogCWludGVsX3VwZGF0ZV93YXRlcm1hcmtzKGNydGMpOwogCWludGVsX2Vu YWJsZV9waXBlKGludGVsX2NydGMpOwogCi0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3Bj aF9lbmNvZGVyKQorCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQogCQlpcm9ubGFr ZV9wY2hfZW5hYmxlKGNydGMsIHBpcGVfY29uZmlnKTsKIAogCWFzc2VydF92YmxhbmtfZGlzYWJs ZWQoY3J0Yyk7CkBAIC00ODU3LDkgKzQ4NTYsOSBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNf ZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxs KGRldl9wcml2LCBwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwpOwogCiAJaWYgKHBpcGVfY29uZmln LT5oYXNfZHBfZW5jb2RlcikKLQkJaW50ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9OMSk7 CisJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIE0xX04xKTsKIAot CWludGVsX3NldF9waXBlX3RpbWluZ3MoaW50ZWxfY3J0Yyk7CisJaW50ZWxfc2V0X3BpcGVfdGlt aW5ncyhpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAlpZiAocGlwZV9jb25maWctPmNwdV90 cmFuc2NvZGVyICE9IFRSQU5TQ09ERVJfRURQKSB7CiAJCUk5MTVfV1JJVEUoUElQRV9NVUxUKHBp cGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciksCkBAIC00ODY3LDEzICs0ODY2LDEzIEBAIHN0YXRp YyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCX0KIAog CWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7Ci0JCWludGVsX2NwdV90cmFuc2Nv ZGVyX3NldF9tX24oaW50ZWxfY3J0YywKKwkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihp bnRlbF9jcnRjLCBwaXBlX2NvbmZpZywKIAkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwg TlVMTCk7CiAJfQogCi0JaGFzd2VsbF9zZXRfcGlwZWNvbmYoY3J0Yyk7CisJaGFzd2VsbF9zZXRf cGlwZWNvbmYoY3J0YywgcGlwZV9jb25maWcpOwogCi0JaW50ZWxfc2V0X3BpcGVfY3NjKGNydGMp OworCWludGVsX3NldF9waXBlX2NzYyhjcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAlpbnRlbF9zZXRf Y3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5nKGRldl9wcml2LCBwaXBlLCB0cnVlKTsKIAlmb3Jf ZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBlbmNvZGVyKQpAQCAtNDg5MCw5ICs0ODg5 LDkgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNy dGMpCiAJaW50ZWxfZGRpX2VuYWJsZV9waXBlX2Nsb2NrKGludGVsX2NydGMpOwogCiAJaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID09IDkpCi0JCXNreWxha2VfcGZpdF91cGRhdGUoaW50ZWxfY3J0 YywgMSk7CisJCXNreWxha2VfcGZpdF91cGRhdGUoaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIDEp OwogCWVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSkKLQkJaXJvbmxha2VfcGZpdF9l bmFibGUoaW50ZWxfY3J0Yyk7CisJCWlyb25sYWtlX3BmaXRfZW5hYmxlKGludGVsX2NydGMsIHBp cGVfY29uZmlnKTsKIAllbHNlCiAJCU1JU1NJTkdfQ0FTRShJTlRFTF9JTkZPKGRldiktPmdlbik7 CiAKQEAgLTQ5MDgsMTAgKzQ5MDcsMTAgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJs ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJaW50ZWxfdXBkYXRlX3dhdGVybWFya3MoY3J0Yyk7 CiAJaW50ZWxfZW5hYmxlX3BpcGUoaW50ZWxfY3J0Yyk7CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29u ZmlnLT5oYXNfcGNoX2VuY29kZXIpCisJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIp CiAJCWxwdF9wY2hfZW5hYmxlKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CiAKLQlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKKwlpZiAocGlwZV9jb25maWctPmRwX2Vu Y29kZXJfaXNfbXN0KQogCQlpbnRlbF9kZGlfc2V0X3ZjX3BheWxvYWRfYWxsb2MoY3J0YywKIAkJ CQkJICAgICAgIHBpcGVfY29uZmlnLT5jcHVfdHJhbnNjb2RlciwKIAkJCQkJICAgICAgIHRydWUp OwpAQCAtNDkzMiw3ICs0OTMxLDggQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRjX2VuYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJfQogfQogCi1zdGF0aWMgdm9pZCBpcm9ubGFrZV9wZml0 X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCitzdGF0aWMgdm9pZCBpcm9ubGFrZV9w Zml0X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCQkJICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNy dGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ ZGV2X3ByaXZhdGU7CkBAIC00OTQwLDcgKzQ5NDAsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9w Zml0X2Rpc2FibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAKIAkvKiBUbyBhdm9pZCB1cHNl dHRpbmcgdGhlIHBvd2VyIHdlbGwgb24gaGFzd2VsbCBvbmx5IGRpc2FibGUgdGhlIHBmaXQgaWYK IAkgKiBpdCdzIGluIHVzZS4gVGhlIGh3IHN0YXRlIGNvZGUgd2lsbCBtYWtlIHN1cmUgd2UgZ2V0 IHRoaXMgcmlnaHQuICovCi0JaWYgKGNydGMtPmNvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkgewor CWlmIChwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZW5hYmxlZCkgewogCQlJOTE1X1dSSVRFKFBGX0NU TChwaXBlKSwgMCk7CiAJCUk5MTVfV1JJVEUoUEZfV0lOX1BPUyhwaXBlKSwgMCk7CiAJCUk5MTVf V1JJVEUoUEZfV0lOX1NaKHBpcGUpLCAwKTsKQEAgLTQ5NjgsNyArNDk2OCw3IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpbnRl bF9kaXNhYmxlX3BpcGUoaW50ZWxfY3J0Yywgb2xkX3N0YXRlKTsKIAotCWlyb25sYWtlX3BmaXRf ZGlzYWJsZShpbnRlbF9jcnRjKTsKKwlpcm9ubGFrZV9wZml0X2Rpc2FibGUoaW50ZWxfY3J0Yywg b2xkX3N0YXRlKTsKIAogCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGVuY29k ZXIpCiAJCWlmIChlbmNvZGVyLT5wb3N0X2Rpc2FibGUpCkBAIC01MDA1LDcgKzUwMDUsNyBAQCBz dGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlz dHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CiAJc3Ry dWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7Ci0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2Nv ZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKKwllbnVtIHRyYW5zY29k ZXIgY3B1X3RyYW5zY29kZXIgPSBvbGRfc3RhdGUtPmNwdV90cmFuc2NvZGVyOwogCiAJZm9yX2Vh Y2hfZW5jb2Rlcl9vbl9jcnRjKGRldiwgY3J0YywgZW5jb2RlcikgewogCQlpbnRlbF9vcHJlZ2lv bl9ub3RpZnlfZW5jb2RlcihlbmNvZGVyLCBmYWxzZSk7CkBAIC01MDE1LDEyICs1MDE1LDEyIEBA IHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK IAlkcm1fY3J0Y192Ymxhbmtfb2ZmKGNydGMpOwogCWFzc2VydF92YmxhbmtfZGlzYWJsZWQoY3J0 Yyk7CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCisJaWYgKG9s ZF9zdGF0ZS0+aGFzX3BjaF9lbmNvZGVyKQogCQlpbnRlbF9zZXRfcGNoX2ZpZm9fdW5kZXJydW5f cmVwb3J0aW5nKGRldl9wcml2LCBUUkFOU0NPREVSX0EsCiAJCQkJCQkgICAgICBmYWxzZSk7CiAJ aW50ZWxfZGlzYWJsZV9waXBlKGludGVsX2NydGMsIG9sZF9zdGF0ZSk7CiAKLQlpZiAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5kcF9lbmNvZGVyX2lzX21zdCkKKwlpZiAob2xkX3N0YXRlLT5kcF9lbmNv ZGVyX2lzX21zdCkKIAkJaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNydGMsCiAJCQkJ CSAgICAgICBvbGRfc3RhdGUtPmNwdV90cmFuc2NvZGVyLAogCQkJCQkgICAgICAgZmFsc2UpOwpA QCAtNTAyOCwxNSArNTAyOCwxNSBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShz dHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJaW50ZWxfZGRpX2Rpc2FibGVfdHJhbnNjb2Rlcl9mdW5j KGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7CiAKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PT0gOSkKLQkJc2t5bGFrZV9wZml0X3VwZGF0ZShpbnRlbF9jcnRjLCAwKTsKKwkJc2t5bGFrZV9w Zml0X3VwZGF0ZShpbnRlbF9jcnRjLCBvbGRfc3RhdGUsIDApOwogCWVsc2UgaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgOSkKLQkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKGludGVsX2NydGMpOwor CQlpcm9ubGFrZV9wZml0X2Rpc2FibGUoaW50ZWxfY3J0Yywgb2xkX3N0YXRlKTsKIAllbHNlCiAJ CU1JU1NJTkdfQ0FTRShJTlRFTF9JTkZPKGRldiktPmdlbik7CiAKIAlpbnRlbF9kZGlfZGlzYWJs ZV9waXBlX2Nsb2NrKGludGVsX2NydGMsIG9sZF9zdGF0ZS0+Y3B1X3RyYW5zY29kZXIpOwogCi0J aWYgKGludGVsX2NydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKSB7CisJaWYgKG9sZF9zdGF0 ZS0+aGFzX3BjaF9lbmNvZGVyKSB7CiAJCWxwdF9kaXNhYmxlX3BjaF90cmFuc2NvZGVyKGRldl9w cml2KTsKIAkJaW50ZWxfZGRpX2ZkaV9kaXNhYmxlKGNydGMsIG9sZF9zdGF0ZSk7CiAJfQpAQCAt NTEyNiwxMyArNTEyNiwxNSBAQCBzdGF0aWMgdW5zaWduZWQgbG9uZyBnZXRfY3J0Y19wb3dlcl9k b21haW5zKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAllbnVtIHBpcGUgcGlwZSA9IGludGVsX2Ny dGMtPnBpcGU7CiAJdW5zaWduZWQgbG9uZyBtYXNrOwogCWVudW0gdHJhbnNjb2RlciB0cmFuc2Nv ZGVyOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9CisJCXRvX2ludGVs X2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCi0JdHJhbnNjb2RlciA9IHRvX2ludGVsX2NydGNf c3RhdGUoY3J0Yy0+c3RhdGUpLT5jcHVfdHJhbnNjb2RlcjsKKwl0cmFuc2NvZGVyID0gcGlwZV9j b25maWctPmNwdV90cmFuc2NvZGVyOwogCiAJbWFzayA9IEJJVChQT1dFUl9ET01BSU5fUElQRShw aXBlKSk7CiAJbWFzayB8PSBCSVQoUE9XRVJfRE9NQUlOX1RSQU5TQ09ERVIodHJhbnNjb2Rlcikp OwotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPnBjaF9wZml0LmVuYWJsZWQgfHwKLQkgICAgaW50 ZWxfY3J0Yy0+Y29uZmlnLT5wY2hfcGZpdC5mb3JjZV90aHJ1KQorCWlmIChwaXBlX2NvbmZpZy0+ cGNoX3BmaXQuZW5hYmxlZCB8fAorCSAgICBwaXBlX2NvbmZpZy0+cGNoX3BmaXQuZm9yY2VfdGhy dSkKIAkJbWFzayB8PSBCSVQoUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKHBpcGUpKTsK IAogCWZvcl9lYWNoX2VuY29kZXJfb25fY3J0YyhkZXYsIGNydGMsIGludGVsX2VuY29kZXIpCkBA IC01NTk1LDcgKzU1OTcsOCBAQCBzdGF0aWMgaW50IGludGVsX21vZGVfbWF4X3BpeGNsayhzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCQkJY3J0Y19zdGF0ZSA9CiAJCQkJaW50ZWxfYXRvbWljX2dl dF9jcnRjX3N0YXRlKHN0YXRlLCBpbnRlbF9jcnRjKTsKIAkJZWxzZQotCQkJY3J0Y19zdGF0ZSA9 IGludGVsX2NydGMtPmNvbmZpZzsKKwkJCWNydGNfc3RhdGUgPSB0b19pbnRlbF9jcnRjX3N0YXRl KGludGVsX2NydGMtPmJhc2Uuc3RhdGUpOworCiAJCWlmIChJU19FUlIoY3J0Y19zdGF0ZSkpCiAJ CQlyZXR1cm4gUFRSX0VSUihjcnRjX3N0YXRlKTsKIApAQCAtNTc0Myw5ICs1NzQ2LDkgQEAgc3Rh dGljIHZvaWQgdmFsbGV5dmlld19jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJ fQogCiAJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlcikKLQkJaW50ZWxfZHBfc2V0X21f bihpbnRlbF9jcnRjLCBNMV9OMSk7CisJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgcGlw ZV9jb25maWcsIE0xX04xKTsKIAotCWludGVsX3NldF9waXBlX3RpbWluZ3MoaW50ZWxfY3J0Yyk7 CisJaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZyk7CiAKIAlp ZiAoSVNfQ0hFUlJZVklFVyhkZXYpICYmIHBpcGUgPT0gUElQRV9CKSB7CiAJCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CkBAIC01NzU0LDcgKzU3 NTcsNyBAQCBzdGF0aWMgdm9pZCB2YWxsZXl2aWV3X2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YykKIAkJSTkxNV9XUklURShDSFZfQ0FOVkFTKHBpcGUpLCAwKTsKIAl9CiAKLQlpOXh4 X3NldF9waXBlY29uZihpbnRlbF9jcnRjKTsKKwlpOXh4X3NldF9waXBlY29uZihpbnRlbF9jcnRj LCBwaXBlX2NvbmZpZyk7CiAKIAlpbnRlbF9zZXRfY3B1X2ZpZm9fdW5kZXJydW5fcmVwb3J0aW5n KGRldl9wcml2LCBwaXBlLCB0cnVlKTsKIApAQCAtNTc4NywxNSArNTc5MCw2IEBAIHN0YXRpYyB2 b2lkIHZhbGxleXZpZXdfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQllbmNv ZGVyLT5lbmFibGUoZW5jb2Rlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGk5eHhfc2V0X3BsbF9kaXZp ZGVycyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKLXsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0g ZGV2LT5kZXZfcHJpdmF0ZTsKLQotCUk5MTVfV1JJVEUoRlAwKGNydGMtPnBpcGUpLCBjcnRjLT5j b25maWctPmRwbGxfaHdfc3RhdGUuZnAwKTsKLQlJOTE1X1dSSVRFKEZQMShjcnRjLT5waXBlKSwg Y3J0Yy0+Y29uZmlnLT5kcGxsX2h3X3N0YXRlLmZwMSk7Ci19Ci0KIHN0YXRpYyB2b2lkIGk5eHhf Y3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogewogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7CkBAIC01ODA4LDE0ICs1ODAyLDE1IEBAIHN0YXRpYyB2b2lkIGk5 eHhfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCXBpcGVfY29uZmlnID0gdG9f aW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CiAJV0FSTl9PTighcGlwZV9jb25maWctPmJh c2UuYWN0aXZlKTsKIAotCWk5eHhfc2V0X3BsbF9kaXZpZGVycyhpbnRlbF9jcnRjKTsKKwlJOTE1 X1dSSVRFKEZQMChwaXBlKSwgcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZnAwKTsKKwlJOTE1 X1dSSVRFKEZQMShwaXBlKSwgcGlwZV9jb25maWctPmRwbGxfaHdfc3RhdGUuZnAxKTsKIAotCWlm IChpbnRlbF9jcnRjLT5jb25maWctPmhhc19kcF9lbmNvZGVyKQotCQlpbnRlbF9kcF9zZXRfbV9u KGludGVsX2NydGMsIE0xX04xKTsKKwlpZiAocGlwZV9jb25maWctPmhhc19kcF9lbmNvZGVyKQor CQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIHBpcGVfY29uZmlnLCBNMV9OMSk7CiAKLQlp bnRlbF9zZXRfcGlwZV90aW1pbmdzKGludGVsX2NydGMpOworCWludGVsX3NldF9waXBlX3RpbWlu Z3MoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwogCi0JaTl4eF9zZXRfcGlwZWNvbmYoaW50ZWxf Y3J0Yyk7CisJaTl4eF9zZXRfcGlwZWNvbmYoaW50ZWxfY3J0YywgcGlwZV9jb25maWcpOwogCiAJ aWYgKCFJU19HRU4yKGRldikpCiAJCWludGVsX3NldF9jcHVfZmlmb191bmRlcnJ1bl9yZXBvcnRp bmcoZGV2X3ByaXYsIHBpcGUsIHRydWUpOwpAQCAtNTg0MCwxNCArNTgzNSw4IEBAIHN0YXRpYyB2 b2lkIGk5eHhfY3J0Y19lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQllbmNvZGVyLT5l bmFibGUoZW5jb2Rlcik7CiB9CiAKLXN0YXRpYyB2b2lkIGk5eHhfcGZpdF9kaXNhYmxlKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaTl4eF9wZml0X2Rpc2FibGUoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBk ZXYtPmRldl9wcml2YXRlOwotCi0JaWYgKCFjcnRjLT5jb25maWctPmdtY2hfcGZpdC5jb250cm9s KQotCQlyZXR1cm47Ci0KIAlEUk1fREVCVUdfRFJJVkVSKCJkaXNhYmxpbmcgcGZpdCwgY3VycmVu dDogMHglMDh4XG4iLAogCQkJIEk5MTVfUkVBRChQRklUX0NPTlRST0wpKTsKIAlJOTE1X1dSSVRF KFBGSVRfQ09OVFJPTCwgMCk7CkBAIC01ODc4LDcgKzU4NjcsOCBAQCBzdGF0aWMgdm9pZCBpOXh4 X2NydGNfZGlzYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpbnRlbF9kaXNhYmxlX3Bp cGUoaW50ZWxfY3J0Yywgb2xkX3N0YXRlKTsKIAotCWk5eHhfcGZpdF9kaXNhYmxlKGludGVsX2Ny dGMpOworCWlmIChvbGRfc3RhdGUtPmdtY2hfcGZpdC5jb250cm9sKQorCQlpOXh4X3BmaXRfZGlz YWJsZShkZXZfcHJpdik7CiAKIAlmb3JfZWFjaF9lbmNvZGVyX29uX2NydGMoZGV2LCBjcnRjLCBl bmNvZGVyKQogCQlpZiAoZW5jb2Rlci0+cG9zdF9kaXNhYmxlKQpAQCAtNjYzOCwxMyArNjYyOCwx NCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9wY2hfdHJhbnNjb2Rlcl9zZXRfbV9uKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRf bV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAorCQkJCQkgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKnBpcGVfY29uZmlnLAogCQkJCQkgc3RydWN0IGludGVsX2xpbmtfbV9uICptX24sCiAJCQkJ CSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm0yX24yKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSBkZXYtPmRldl9wcml2YXRlOwogCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKLQllbnVtIHRyYW5z Y29kZXIgdHJhbnNjb2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CisJZW51bSB0 cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAKIAlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgewogCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9N MSh0cmFuc2NvZGVyKSwgVFVfU0laRShtX24tPnR1KSB8IG1fbi0+Z21jaF9tKTsKQEAgLTY2NTYs NyArNjY0Nyw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJCSAqIHJlZ2lzdGVycyBhcmUgbm90IHVubmVjZXNzYXJp bHkgYWNjZXNzZWQpLgogCQkgKi8KIAkJaWYgKG0yX24yICYmIChJU19DSEVSUllWSUVXKGRldikg fHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4KSAmJgotCQkJY3J0Yy0+Y29uZmlnLT5oYXNfZHJy cykgeworCQkJcGlwZV9jb25maWctPmhhc19kcnJzKSB7CiAJCQlJOTE1X1dSSVRFKFBJUEVfREFU QV9NMih0cmFuc2NvZGVyKSwKIAkJCQkJVFVfU0laRShtMl9uMi0+dHUpIHwgbTJfbjItPmdtY2hf bSk7CiAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMih0cmFuc2NvZGVyKSwgbTJfbjItPmdtY2hf bik7CkBAIC02NjcxLDI5ICs2NjYyLDMxIEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2Nv ZGVyX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJfQogfQogCi12b2lkIGludGVs X2RwX3NldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsIGVudW0gbGlua19tX25fc2V0IG1f bikKK3ZvaWQgaW50ZWxfZHBfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKKwkJICAg ICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAorCQkgICAgICBlbnVtIGxp bmtfbV9uX3NldCBtX24pCiB7CiAJc3RydWN0IGludGVsX2xpbmtfbV9uICpkcF9tX24sICpkcF9t Ml9uMiA9IE5VTEw7CiAKIAlpZiAobV9uID09IE0xX04xKSB7Ci0JCWRwX21fbiA9ICZjcnRjLT5j b25maWctPmRwX21fbjsKLQkJZHBfbTJfbjIgPSAmY3J0Yy0+Y29uZmlnLT5kcF9tMl9uMjsKKwkJ ZHBfbV9uID0gJnBpcGVfY29uZmlnLT5kcF9tX247CisJCWRwX20yX24yID0gJnBpcGVfY29uZmln LT5kcF9tMl9uMjsKIAl9IGVsc2UgaWYgKG1fbiA9PSBNMl9OMikgewogCiAJCS8qCiAJCSAqIE0y X04yIHJlZ2lzdGVycyBhcmUgbm90IHN1cHBvcnRlZC4gSGVuY2UgbTJfbjIgZGl2aWRlciB2YWx1 ZQogCQkgKiBuZWVkcyB0byBiZSBwcm9ncmFtbWVkIGludG8gTTFfTjEuCiAJCSAqLwotCQlkcF9t X24gPSAmY3J0Yy0+Y29uZmlnLT5kcF9tMl9uMjsKKwkJZHBfbV9uID0gJnBpcGVfY29uZmlnLT5k cF9tMl9uMjsKIAl9IGVsc2UgewogCQlEUk1fRVJST1IoIlVuc3VwcG9ydGVkIGRpdmlkZXIgdmFs dWVcbiIpOwogCQlyZXR1cm47CiAJfQogCi0JaWYgKGNydGMtPmNvbmZpZy0+aGFzX3BjaF9lbmNv ZGVyKQotCQlpbnRlbF9wY2hfdHJhbnNjb2Rlcl9zZXRfbV9uKGNydGMsICZjcnRjLT5jb25maWct PmRwX21fbik7CisJaWYgKHBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIpCisJCWludGVsX3Bj aF90cmFuc2NvZGVyX3NldF9tX24oY3J0YywgJnBpcGVfY29uZmlnLT5kcF9tX24pOwogCWVsc2UK LQkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihjcnRjLCBkcF9tX24sIGRwX20yX24yKTsK KwkJaW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihjcnRjLCBwaXBlX2NvbmZpZywgZHBfbV9u LCBkcF9tMl9uMik7CiB9CiAKIHN0YXRpYyB2b2lkIHZsdl91cGRhdGVfcGxsKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLApAQCAtNjk3Niw5ICs2OTY5LDYgQEAgdm9pZCB2bHZfZm9yY2VfcGxsX29m ZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBlbnVtIHBpcGUgcGlwZSkKIAlzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBpbnRlbF9nZXRfY3J0Y19mb3JfcGlwZShkZXYsIHBpcGUpOwogCXN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpzdGF0ZSA9IHRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUp OwogCi0JLyogSXMgc3RhdGUtPmNwdV90cmFuc2NvZGVyIGNvcnJlY3QgdG8gdXNlPyAqLwotCVdB Uk5fT04oY3J0Yy0+c3RhdGUgIT0gJnRvX2ludGVsX2NydGMoY3J0YyktPmNvbmZpZy0+YmFzZSk7 Ci0KIAkvKiBNYWtlIHN1cmUgdGhlIHBpcGUgaXNuJ3Qgc3RpbGwgcmVseWluZyBvbiB1cyAqLwog CWFzc2VydF9waXBlX2Rpc2FibGVkKGRldl9wcml2LCBzdGF0ZS0+Y3B1X3RyYW5zY29kZXIsIHBp cGUpOwogCkBAIC03MTAzLDE0ICs3MDkzLDE1IEBAIHN0YXRpYyB2b2lkIGk4eHhfdXBkYXRlX3Bs bChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAljcnRjX3N0YXRlLT5kcGxsX2h3X3N0YXRlLmRw bGwgPSBkcGxsOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV90aW1pbmdzKHN0cnVj dCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQorc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGlt aW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKKwkJCQkgICBzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGlu dGVsX2NydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9 IGRldi0+ZGV2X3ByaXZhdGU7CiAJZW51bSBwaXBlIHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwot CWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1 X3RyYW5zY29kZXI7CisJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gcGlwZV9jb25m aWctPmNwdV90cmFuc2NvZGVyOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICphZGp1c3RlZF9t b2RlID0KLQkJJmludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlOworCQkmcGlw ZV9jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZTsKIAl1aW50MzJfdCBjcnRjX3Z0b3RhbCwgY3J0 Y192YmxhbmtfZW5kOwogCWludCB2c3luY3NoaWZ0ID0gMDsKIApAQCAtNzE2OCw4ICs3MTU5LDgg QEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfdGltaW5ncyhzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YykKIAkgKiBhbHdheXMgYmUgdGhlIHVzZXIncyByZXF1ZXN0ZWQgc2l6ZS4KIAkg Ki8KIAlJOTE1X1dSSVRFKFBJUEVTUkMocGlwZSksCi0JCSAgICgoaW50ZWxfY3J0Yy0+Y29uZmln LT5waXBlX3NyY193IC0gMSkgPDwgMTYpIHwKLQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlw ZV9zcmNfaCAtIDEpKTsKKwkJICAgKChwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEpIDw8IDE2 KSB8CisJCSAgICAocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKSk7CiB9CiAKIHN0YXRpYyB2 b2lkIGludGVsX2dldF9waXBlX3RpbWluZ3Moc3RydWN0IGludGVsX2NydGMgKmNydGMsCkBAIC03 MjMzLDcgKzcyMjQsOCBAQCB2b2lkIGludGVsX21vZGVfZnJvbV9waXBlX2NvbmZpZyhzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKIAltb2RlLT5mbGFncyB8PSBwaXBlX2NvbmZpZy0+YmFz ZS5hZGp1c3RlZF9tb2RlLmZsYWdzOwogfQogCi1zdGF0aWMgdm9pZCBpOXh4X3NldF9waXBlY29u ZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKK3N0YXRpYyB2b2lkIGk5eHhfc2V0X3Bp cGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjLAorCQkJICAgICAgc3RydWN0IGlu dGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYg PSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3By aXYgPSBkZXYtPmRldl9wcml2YXRlOwpAQCAtNzI0NSwxNyArNzIzNywxNyBAQCBzdGF0aWMgdm9p ZCBpOXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAkgICAg KGludGVsX2NydGMtPnBpcGUgPT0gUElQRV9CICYmIGRldl9wcml2LT5xdWlya3MgJiBRVUlSS19Q SVBFQl9GT1JDRSkpCiAJCXBpcGVjb25mIHw9IEk5MTVfUkVBRChQSVBFQ09ORihpbnRlbF9jcnRj LT5waXBlKSkgJiBQSVBFQ09ORl9FTkFCTEU7CiAKLQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5k b3VibGVfd2lkZSkKKwlpZiAocGlwZV9jb25maWctPmRvdWJsZV93aWRlKQogCQlwaXBlY29uZiB8 PSBQSVBFQ09ORl9ET1VCTEVfV0lERTsKIAogCS8qIG9ubHkgZzR4IGFuZCBsYXRlciBoYXZlIGZh bmN5IGJwYy9kaXRoZXIgY29udHJvbHMgKi8KIAlpZiAoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZ VklFVyhkZXYpKSB7CiAJCS8qIEJzcGVjIGNsYWltcyB0aGF0IHdlIGNhbid0IHVzZSBkaXRoZXJp bmcgZm9yIDMwYnBwIHBpcGVzLiAqLwotCQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRoZXIg JiYgaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCAhPSAzMCkKKwkJaWYgKHBpcGVfY29uZmln LT5kaXRoZXIgJiYgcGlwZV9jb25maWctPnBpcGVfYnBwICE9IDMwKQogCQkJcGlwZWNvbmYgfD0g UElQRUNPTkZfRElUSEVSX0VOIHwKIAkJCQkgICAgUElQRUNPTkZfRElUSEVSX1RZUEVfU1A7CiAK LQkJc3dpdGNoIChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfYnBwKSB7CisJCXN3aXRjaCAocGlw ZV9jb25maWctPnBpcGVfYnBwKSB7CiAJCWNhc2UgMTg6CiAJCQlwaXBlY29uZiB8PSBQSVBFQ09O Rl82QlBDOwogCQkJYnJlYWs7CkBAIC03MjgwLDcgKzcyNzIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4 X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAkJfQogCX0KIAot CWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKSB7CisJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21v ZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkgewogCQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPCA0IHx8CiAJCSAgICBpbnRlbF9waXBlX2hhc190eXBlKGludGVsX2NydGMsIElO VEVMX09VVFBVVF9TRFZPKSkKIAkJCXBpcGVjb25mIHw9IFBJUEVDT05GX0lOVEVSTEFDRV9XX0ZJ RUxEX0lORElDQVRJT047CkBAIC03Mjg5LDcgKzcyODEsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Nl dF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAl9IGVsc2UKIAkJcGlw ZWNvbmYgfD0gUElQRUNPTkZfUFJPR1JFU1NJVkU7CiAKLQlpZiAoSVNfVkFMTEVZVklFVyhkZXYp ICYmIGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKKwlpZiAoSVNfVkFM TEVZVklFVyhkZXYpICYmIHBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQogCQlwaXBl Y29uZiB8PSBQSVBFQ09ORl9DT0xPUl9SQU5HRV9TRUxFQ1Q7CiAKIAlJOTE1X1dSSVRFKFBJUEVD T05GKGludGVsX2NydGMtPnBpcGUpLCBwaXBlY29uZik7CkBAIC04MDI3LDcgKzgwMTksOCBAQCBz dGF0aWMgaW50IGlyb25sYWtlX2dldF9yZWZjbGsoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNy dGNfc3RhdGUpCiAJcmV0dXJuIDEyMDAwMDsKIH0KIAotc3RhdGljIHZvaWQgaXJvbmxha2Vfc2V0 X3BpcGVjb25mKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3N0YXRpYyB2b2lkIGlyb25sYWtlX3Nl dF9waXBlY29uZihzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCisJCQkJICBzdHJ1Y3QgaW50ZWxfY3J0 Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9w cml2ID0gY3J0Yy0+ZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CkBAIC04MDM2LDcgKzgwMjksNyBAQCBzdGF0aWMg dm9pZCBpcm9ubGFrZV9zZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCiAJdmFs ID0gMDsKIAotCXN3aXRjaCAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX2JwcCkgeworCXN3aXRj aCAocGlwZV9jb25maWctPnBpcGVfYnBwKSB7CiAJY2FzZSAxODoKIAkJdmFsIHw9IFBJUEVDT05G XzZCUEM7CiAJCWJyZWFrOwpAQCAtODA1NCwxNSArODA0NywxNSBAQCBzdGF0aWMgdm9pZCBpcm9u bGFrZV9zZXRfcGlwZWNvbmYoc3RydWN0IGRybV9jcnRjICpjcnRjKQogCQlCVUcoKTsKIAl9CiAK LQlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kaXRoZXIpCisJaWYgKHBpcGVfY29uZmlnLT5kaXRo ZXIpCiAJCXZhbCB8PSAoUElQRUNPTkZfRElUSEVSX0VOIHwgUElQRUNPTkZfRElUSEVSX1RZUEVf U1ApOwogCi0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+YmFzZS5hZGp1c3RlZF9tb2RlLmZsYWdz ICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCisJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFkanVz dGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9ERV9GTEFHX0lOVEVSTEFDRSkKIAkJdmFsIHw9IFBJUEVD T05GX0lOVEVSTEFDRURfSUxLOwogCWVsc2UKIAkJdmFsIHw9IFBJUEVDT05GX1BST0dSRVNTSVZF OwogCi0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5nZSkKKwlpZiAo cGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCiAJCXZhbCB8PSBQSVBFQ09ORl9DT0xP Ul9SQU5HRV9TRUxFQ1Q7CiAKIAlJOTE1X1dSSVRFKFBJUEVDT05GKHBpcGUpLCB2YWwpOwpAQCAt ODA3Niw3ICs4MDY5LDggQEAgc3RhdGljIHZvaWQgaXJvbmxha2Vfc2V0X3BpcGVjb25mKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKICAqIGlzIHN1cHBvcnRlZCwgYnV0IGV2ZW50dWFsbHkgdGhpcyBz aG91bGQgaGFuZGxlIHZhcmlvdXMKICAqIFJHQjwtPllDYkNyIHNjZW5hcmlvcyBhcyB3ZWxsLgog ICovCi1zdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlwZV9jc2Moc3RydWN0IGRybV9jcnRjICpjcnRj KQorc3RhdGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywK KwkJCSAgICAgICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwpAQCAtODA5MSw3ICs4MDg1LDcgQEAgc3Rh dGljIHZvaWQgaW50ZWxfc2V0X3BpcGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAkgKiBj b25zaWRlcmF0aW9uLgogCSAqLwogCi0JaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9j b2xvcl9yYW5nZSkKKwlpZiAocGlwZV9jb25maWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCiAJCWNv ZWZmID0gKCgyMzUgLSAxNikgKiAoMSA8PCAxMikgLyAyNTUpICYgMHhmZjg7IC8qIDAueHh4Li4u ICovCiAKIAkvKgpAQCAtODExNSw3ICs4MTA5LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2V0X3Bp cGVfY3NjKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PiA2KSB7CiAJCXVpbnQxNl90IHBvc3RvZmYgPSAwOwogCi0JCWlmIChpbnRlbF9jcnRjLT5jb25m aWctPmxpbWl0ZWRfY29sb3JfcmFuZ2UpCisJCWlmIChwaXBlX2NvbmZpZy0+bGltaXRlZF9jb2xv cl9yYW5nZSkKIAkJCXBvc3RvZmYgPSAoMTYgKiAoMSA8PCAxMikgLyAyNTUpICYgMHgxZmZmOwog CiAJCUk5MTVfV1JJVEUoUElQRV9DU0NfUE9TVE9GRl9ISShwaXBlKSwgcG9zdG9mZik7CkBAIC04 MTI2LDI4ICs4MTIwLDI5IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9waXBlX2NzYyhzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJfSBlbHNlIHsKIAkJdWludDMyX3QgbW9kZSA9IENTQ19NT0RFX1lV Vl9UT19SR0I7CiAKLQkJaWYgKGludGVsX2NydGMtPmNvbmZpZy0+bGltaXRlZF9jb2xvcl9yYW5n ZSkKKwkJaWYgKHBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3JhbmdlKQogCQkJbW9kZSB8PSBD U0NfQkxBQ0tfU0NSRUVOX09GRlNFVDsKIAogCQlJOTE1X1dSSVRFKFBJUEVfQ1NDX01PREUocGlw ZSksIG1vZGUpOwogCX0KIH0KIAotc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAorCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9j b25maWcpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAllbnVtIHBpcGUg cGlwZSA9IGludGVsX2NydGMtPnBpcGU7Ci0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVy ID0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKKwllbnVtIHRyYW5zY29kZXIg Y3B1X3RyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAJdWludDMyX3Qg dmFsOwogCiAJdmFsID0gMDsKIAotCWlmIChJU19IQVNXRUxMKGRldikgJiYgaW50ZWxfY3J0Yy0+ Y29uZmlnLT5kaXRoZXIpCisJaWYgKElTX0hBU1dFTEwoZGV2KSAmJiBwaXBlX2NvbmZpZy0+ZGl0 aGVyKQogCQl2YWwgfD0gKFBJUEVDT05GX0RJVEhFUl9FTiB8IFBJUEVDT05GX0RJVEhFUl9UWVBF X1NQKTsKIAotCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFn cyAmIERSTV9NT0RFX0ZMQUdfSU5URVJMQUNFKQorCWlmIChwaXBlX2NvbmZpZy0+YmFzZS5hZGp1 c3RlZF9tb2RlLmZsYWdzICYgRFJNX01PREVfRkxBR19JTlRFUkxBQ0UpCiAJCXZhbCB8PSBQSVBF Q09ORl9JTlRFUkxBQ0VEX0lMSzsKIAllbHNlCiAJCXZhbCB8PSBQSVBFQ09ORl9QUk9HUkVTU0lW RTsKQEAgLTgxNjEsNyArODE1Niw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfc2V0X3BpcGVjb25m KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpZiAoSVNfQlJPQURXRUxMKGRldikgfHwgSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gOSkgewogCQl2YWwgPSAwOwogCi0JCXN3aXRjaCAoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5waXBlX2JwcCkgeworCQlzd2l0Y2ggKHBpcGVfY29uZmlnLT5waXBlX2JwcCkg ewogCQljYXNlIDE4OgogCQkJdmFsIHw9IFBJUEVNSVNDX0RJVEhFUl82X0JQQzsKIAkJCWJyZWFr OwpAQCAtODE3OSw3ICs4MTc0LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9zZXRfcGlwZWNvbmYo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCQkJQlVHKCk7CiAJCX0KIAotCQlpZiAoaW50ZWxfY3J0 Yy0+Y29uZmlnLT5kaXRoZXIpCisJCWlmIChwaXBlX2NvbmZpZy0+ZGl0aGVyKQogCQkJdmFsIHw9 IFBJUEVNSVNDX0RJVEhFUl9FTkFCTEUgfCBQSVBFTUlTQ19ESVRIRVJfVFlQRV9TUDsKIAogCQlJ OTE1X1dSSVRFKFBJUEVNSVNDKHBpcGUpLCB2YWwpOwpAQCAtODQyMywxMiArODQxOCwxMyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9wY2hfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0 cnVjdCBpbnRlbF9jcnRjICpjcnRjLAotCQkJCQkgZW51bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIs CisJCQkJCSBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJCQkJCSBzdHJ1 Y3QgaW50ZWxfbGlua19tX24gKm1fbiwKIAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbTJf bjIpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CisJZW51bSB0 cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwogCiAJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDUpIHsKQEAgLTg0NDQsNyArODQ0MCw3IEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2Nv ZGVyX2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCSAqIHJlZ2lzdGVycyBhcmUg bm90IHVubmVjZXNzYXJpbHkgcmVhZCkuCiAJCSAqLwogCQlpZiAobTJfbjIgJiYgSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA4ICYmCi0JCQljcnRjLT5jb25maWctPmhhc19kcnJzKSB7CisJCQlwaXBl X2NvbmZpZy0+aGFzX2RycnMpIHsKIAkJCW0yX24yLT5saW5rX20gPSBJOTE1X1JFQUQoUElQRV9M SU5LX00yKHRyYW5zY29kZXIpKTsKIAkJCW0yX24yLT5saW5rX24gPQlJOTE1X1JFQUQoUElQRV9M SU5LX04yKHRyYW5zY29kZXIpKTsKIAkJCW0yX24yLT5nbWNoX20gPQlJOTE1X1JFQUQoUElQRV9E QVRBX00yKHRyYW5zY29kZXIpKQpAQCAtODQ3MCw3ICs4NDY2LDcgQEAgdm9pZCBpbnRlbF9kcF9n ZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCWlmIChwaXBlX2NvbmZpZy0+aGFzX3Bj aF9lbmNvZGVyKQogCQlpbnRlbF9wY2hfdHJhbnNjb2Rlcl9nZXRfbV9uKGNydGMsICZwaXBlX2Nv bmZpZy0+ZHBfbV9uKTsKIAllbHNlCi0JCWludGVsX2NwdV90cmFuc2NvZGVyX2dldF9tX24oY3J0 YywgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLAorCQlpbnRlbF9jcHVfdHJhbnNjb2Rlcl9n ZXRfbV9uKGNydGMsIHBpcGVfY29uZmlnLAogCQkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZHBfbV9u LAogCQkJCQkgICAgICZwaXBlX2NvbmZpZy0+ZHBfbTJfbjIpOwogfQpAQCAtODQ3OCw3ICs4NDc0 LDcgQEAgdm9pZCBpbnRlbF9kcF9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogc3Rh dGljIHZvaWQgaXJvbmxha2VfZ2V0X2ZkaV9tX25fY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjLAogCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7Ci0JaW50 ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihjcnRjLCBwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29k ZXIsCisJaW50ZWxfY3B1X3RyYW5zY29kZXJfZ2V0X21fbihjcnRjLCBwaXBlX2NvbmZpZywKIAkJ CQkgICAgICZwaXBlX2NvbmZpZy0+ZmRpX21fbiwgTlVMTCk7CiB9CiAKQEAgLTkzMzEsNiArOTMy Nyw4IEBAIHN0YXRpYyB2b2lkIGludGVsX2NydGNfdXBkYXRlX2N1cnNvcihzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQorCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PnN0YXRlKTsKIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJaW50IHggPSBjcnRjLT5j dXJzb3JfeDsKIAlpbnQgeSA9IGNydGMtPmN1cnNvcl95OwpAQCAtOTMzOSwxMCArOTMzNywxMCBA QCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX3VwZGF0ZV9jdXJzb3Ioc3RydWN0IGRybV9jcnRjICpj cnRjLAogCWlmIChvbikKIAkJYmFzZSA9IGludGVsX2NydGMtPmN1cnNvcl9hZGRyOwogCi0JaWYg KHggPj0gaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193KQorCWlmICh4ID49IHBpcGVfY29u ZmlnLT5waXBlX3NyY193KQogCQliYXNlID0gMDsKIAotCWlmICh5ID49IGludGVsX2NydGMtPmNv bmZpZy0+cGlwZV9zcmNfaCkKKwlpZiAoeSA+PSBwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCkKIAkJ YmFzZSA9IDA7CiAKIAlpZiAoeCA8IDApIHsKQEAgLTk5NjYsOSArOTk2NCwxMSBAQCBzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqaW50ZWxfY3J0Y19tb2RlX2dldChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAogewogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3By aXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwotCWVudW0gdHJhbnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZp Zy0+Y3B1X3RyYW5zY29kZXI7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmln ID0KKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5zdGF0ZSk7CisJZW51bSB0cmFuc2NvZGVy IGNwdV90cmFuc2NvZGVyID0gcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyOwogCXN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlOwotCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIHBpcGVfY29u ZmlnOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlIGZha2VfY29uZmlnOwogCWludCBodG90ID0g STkxNV9SRUFEKEhUT1RBTChjcHVfdHJhbnNjb2RlcikpOwogCWludCBoc3luYyA9IEk5MTVfUkVB RChIU1lOQyhjcHVfdHJhbnNjb2RlcikpOwogCWludCB2dG90ID0gSTkxNV9SRUFEKFZUT1RBTChj cHVfdHJhbnNjb2RlcikpOwpAQCAtOTk4NiwxNCArOTk4NiwxNCBAQCBzdHJ1Y3QgZHJtX2Rpc3Bs YXlfbW9kZSAqaW50ZWxfY3J0Y19tb2RlX2dldChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCSAq IE5vdGUsIGlmIExWRFMgZXZlciB1c2VzIGEgbm9uLTEgcGl4ZWwgbXVsdGlwbGllciwgd2UnbGwg bmVlZAogCSAqIHRvIHVzZSBhIHJlYWwgdmFsdWUgaGVyZSBpbnN0ZWFkLgogCSAqLwotCXBpcGVf Y29uZmlnLmNwdV90cmFuc2NvZGVyID0gKGVudW0gdHJhbnNjb2RlcikgcGlwZTsKLQlwaXBlX2Nv bmZpZy5waXhlbF9tdWx0aXBsaWVyID0gMTsKLQlwaXBlX2NvbmZpZy5kcGxsX2h3X3N0YXRlLmRw bGwgPSBJOTE1X1JFQUQoRFBMTChwaXBlKSk7Ci0JcGlwZV9jb25maWcuZHBsbF9od19zdGF0ZS5m cDAgPSBJOTE1X1JFQUQoRlAwKHBpcGUpKTsKLQlwaXBlX2NvbmZpZy5kcGxsX2h3X3N0YXRlLmZw MSA9IEk5MTVfUkVBRChGUDEocGlwZSkpOwotCWk5eHhfY3J0Y19jbG9ja19nZXQoaW50ZWxfY3J0 YywgJnBpcGVfY29uZmlnKTsKLQotCW1vZGUtPmNsb2NrID0gcGlwZV9jb25maWcucG9ydF9jbG9j ayAvIHBpcGVfY29uZmlnLnBpeGVsX211bHRpcGxpZXI7CisJZmFrZV9jb25maWcuY3B1X3RyYW5z Y29kZXIgPSAoZW51bSB0cmFuc2NvZGVyKSBwaXBlOworCWZha2VfY29uZmlnLnBpeGVsX211bHRp cGxpZXIgPSAxOworCWZha2VfY29uZmlnLmRwbGxfaHdfc3RhdGUuZHBsbCA9IEk5MTVfUkVBRChE UExMKHBpcGUpKTsKKwlmYWtlX2NvbmZpZy5kcGxsX2h3X3N0YXRlLmZwMCA9IEk5MTVfUkVBRChG UDAocGlwZSkpOworCWZha2VfY29uZmlnLmRwbGxfaHdfc3RhdGUuZnAxID0gSTkxNV9SRUFEKEZQ MShwaXBlKSk7CisJaTl4eF9jcnRjX2Nsb2NrX2dldChpbnRlbF9jcnRjLCAmZmFrZV9jb25maWcp OworCisJbW9kZS0+Y2xvY2sgPSBmYWtlX2NvbmZpZy5wb3J0X2Nsb2NrIC8gZmFrZV9jb25maWcu cGl4ZWxfbXVsdGlwbGllcjsKIAltb2RlLT5oZGlzcGxheSA9IChodG90ICYgMHhmZmZmKSArIDE7 CiAJbW9kZS0+aHRvdGFsID0gKChodG90ICYgMHhmZmZmMDAwMCkgPj4gMTYpICsgMTsKIAltb2Rl LT5oc3luY19zdGFydCA9IChoc3luYyAmIDB4ZmZmZikgKyAxOwpAQCAtMTE4MzksMTIgKzExODM5 LDEzIEBAIGNoZWNrX2NydGNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBp bnRlbF9jcnRjICpjcnRjOwogCXN0cnVjdCBpbnRlbF9lbmNvZGVyICplbmNvZGVyOwotCXN0cnVj dCBpbnRlbF9jcnRjX3N0YXRlIHBpcGVfY29uZmlnOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRl IHBpcGVfY29uZmlnLCAqc3dfY29uZmlnOwogCiAJZm9yX2VhY2hfaW50ZWxfY3J0YyhkZXYsIGNy dGMpIHsKIAkJYm9vbCBlbmFibGVkID0gZmFsc2U7CiAJCWJvb2wgYWN0aXZlID0gZmFsc2U7CiAK KwkJc3dfY29uZmlnID0gdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsKIAkJ bWVtc2V0KCZwaXBlX2NvbmZpZywgMCwgc2l6ZW9mKHBpcGVfY29uZmlnKSk7CiAKIAkJRFJNX0RF QlVHX0tNUygiW0NSVEM6JWRdXG4iLApAQCAtMTE4ODcsMTEgKzExODg4LDExIEBAIGNoZWNrX2Ny dGNfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAkJICAgICAiKGV4cGVjdGVkICVpLCBm b3VuZCAlaSlcbiIsIGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSwgYWN0aXZlKTsKIAogCQlpZiAo YWN0aXZlICYmCi0JCSAgICAhaW50ZWxfcGlwZV9jb25maWdfY29tcGFyZShkZXYsIGNydGMtPmNv bmZpZywgJnBpcGVfY29uZmlnKSkgeworCQkgICAgIWludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUo ZGV2LCBzd19jb25maWcsICZwaXBlX2NvbmZpZykpIHsKIAkJCUk5MTVfU1RBVEVfV0FSTigxLCAi cGlwZSBzdGF0ZSBkb2Vzbid0IG1hdGNoIVxuIik7CiAJCQlpbnRlbF9kdW1wX3BpcGVfY29uZmln KGNydGMsICZwaXBlX2NvbmZpZywKIAkJCQkJICAgICAgICJbaHcgc3RhdGVdIik7Ci0JCQlpbnRl bF9kdW1wX3BpcGVfY29uZmlnKGNydGMsIGNydGMtPmNvbmZpZywKKwkJCWludGVsX2R1bXBfcGlw ZV9jb25maWcoY3J0Yywgc3dfY29uZmlnLAogCQkJCQkgICAgICAgIltzdyBzdGF0ZV0iKTsKIAkJ fQogCX0KQEAgLTExOTkwLDcgKzExOTkxLDggQEAgc3RhdGljIHZvaWQgdXBkYXRlX3NjYW5saW5l X29mZnNldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkgKiBvbmUgdG8gdGhlIHZhbHVlLgog CSAqLwogCWlmIChJU19HRU4yKGRldikpIHsKLQkJY29uc3Qgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUgPSAmY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGU7CisJCWNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlID0KKwkJCSZjcnRjLT5iYXNlLnN0YXRlLT5hZGp1 c3RlZF9tb2RlOwogCQlpbnQgdnRvdGFsOwogCiAJCXZ0b3RhbCA9IG1vZGUtPmNydGNfdnRvdGFs OwpAQCAtMTM1MzIsNiArMTM1MzQsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCiAJY3J0Y19zdGF0ZSA9IGt6YWxsb2Moc2l6 ZW9mKCpjcnRjX3N0YXRlKSwgR0ZQX0tFUk5FTCk7CiAJaWYgKCFjcnRjX3N0YXRlKQogCQlnb3Rv IGZhaWw7CisKIAlpbnRlbF9jcnRjLT5jb25maWcgPSBjcnRjX3N0YXRlOwogCWludGVsX2NydGMt PmJhc2Uuc3RhdGUgPSAmY3J0Y19zdGF0ZS0+YmFzZTsKIAljcnRjX3N0YXRlLT5iYXNlLmNydGMg PSAmaW50ZWxfY3J0Yy0+YmFzZTsKQEAgLTE0NTc0LDE5ICsxNDU3NywyMCBAQCBpbnRlbF9jaGVj a19wbGFuZV9tYXBwaW5nKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCXJldHVybiB0cnVlOwog fQogCi1zdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQorc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRpemVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKKwkJCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcpCiB7CiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdTMyIHJlZzsKIAogCS8qIENs ZWFyIGFueSBmcmFtZSBzdGFydCBkZWxheXMgdXNlZCBmb3IgZGVidWdnaW5nIGxlZnQgYnkgdGhl IEJJT1MgKi8KLQlyZWcgPSBQSVBFQ09ORihjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyKTsK KwlyZWcgPSBQSVBFQ09ORihwaXBlX2NvbmZpZy0+Y3B1X3RyYW5zY29kZXIpOwogCUk5MTVfV1JJ VEUocmVnLCBJOTE1X1JFQUQocmVnKSAmIH5QSVBFQ09ORl9GUkFNRV9TVEFSVF9ERUxBWV9NQVNL KTsKIAogCS8qIHJlc3RvcmUgdmJsYW5rIGludGVycnVwdHMgdG8gY29ycmVjdCBzdGF0ZSAqLwog CWRybV9jcnRjX3ZibGFua19yZXNldCgmY3J0Yy0+YmFzZSk7Ci0JaWYgKGNydGMtPmJhc2Uuc3Rh dGUtPmFjdGl2ZSkgeworCWlmIChwaXBlX2NvbmZpZy0+YmFzZS5hY3RpdmUpIHsKIAkJdXBkYXRl X3NjYW5saW5lX29mZnNldChjcnRjKTsKIAkJZHJtX2NydGNfdmJsYW5rX29uKCZjcnRjLT5iYXNl KTsKIAl9CkBAIC0xNDYyNiwxNCArMTQ2MzAsMTQgQEAgc3RhdGljIHZvaWQgaW50ZWxfc2FuaXRp emVfY3J0YyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKIAkJCQljb25uZWN0b3ItPmVuY29kZXIt PmNvbm5lY3RvcnNfYWN0aXZlID0gZmFsc2U7CiAJCQl9CiAKLQkJV0FSTl9PTihjcnRjLT5iYXNl LnN0YXRlLT5hY3RpdmUpOwotCQljcnRjLT5iYXNlLnN0YXRlLT5lbmFibGUgPSBmYWxzZTsKLQkJ Y3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlID0gZmFsc2U7CisJCVdBUk5fT04ocGlwZV9jb25maWct PmJhc2UuYWN0aXZlKTsKKwkJcGlwZV9jb25maWctPmJhc2UuZW5hYmxlID0gZmFsc2U7CisJCXBp cGVfY29uZmlnLT5iYXNlLmFjdGl2ZSA9IGZhbHNlOwogCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBm YWxzZTsKIAl9CiAKIAlpZiAoZGV2X3ByaXYtPnF1aXJrcyAmIFFVSVJLX1BJUEVBX0ZPUkNFICYm Ci0JICAgIGNydGMtPnBpcGUgPT0gUElQRV9BICYmICFjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUp IHsKKwkgICAgY3J0Yy0+cGlwZSA9PSBQSVBFX0EgJiYgIXBpcGVfY29uZmlnLT5iYXNlLmFjdGl2 ZSkgewogCQkvKiBCSU9TIGZvcmdvdCB0byBlbmFibGUgcGlwZSBBLCB0aGlzIG1vc3RseSBoYXBw ZW5zIGFmdGVyCiAJCSAqIHJlc3VtZS4gRm9yY2UtZW5hYmxlIHRoZSBwaXBlIHRvIGZpeCB0aGlz LCB0aGUgdXBkYXRlX2RwbXMKIAkJICogY2FsbCBiZWxvdyB3ZSByZXN0b3JlIHRoZSBwaXBlIHRv IHRoZSByaWdodCBzdGF0ZSwgYnV0IGxlYXZlCkBAIC0xNDY0NSw3ICsxNDY0OSw3IEBAIHN0YXRp YyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJICog aGF2ZSBhY3RpdmUgY29ubmVjdG9ycy9lbmNvZGVycy4gKi8KIAlpbnRlbF9jcnRjX3VwZGF0ZV9k cG1zKCZjcnRjLT5iYXNlKTsKIAotCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgfHwgSEFT X0dNQ0hfRElTUExBWShkZXYpKSB7CisJaWYgKHBpcGVfY29uZmlnLT5iYXNlLmFjdGl2ZSB8fCBI QVNfR01DSF9ESVNQTEFZKGRldikpIHsKIAkJLyoKIAkJICogV2Ugc3RhcnQgb3V0IHdpdGggdW5k ZXJydW4gcmVwb3J0aW5nIGRpc2FibGVkIHRvIGF2b2lkIHJhY2VzLgogCQkgKiBGb3IgY29ycmVj dCBib29ra2VlcGluZyBtYXJrIHRoaXMgb24gYWN0aXZlIGNydGNzLgpAQCAtMTQ3NjMsMTcgKzE0 NzY3LDE5IEBAIHN0YXRpYyB2b2lkIGludGVsX21vZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LAogCWZvcl9lYWNoX2ludGVsX2NydGMoZGV2LCBjcnRjKSB7CiAJ CXN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnkgPSBjcnRjLT5iYXNlLnByaW1hcnk7CiAJCXN0cnVj dCBpbnRlbF9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGU7CisJCXN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZyA9CisJCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3Rh dGUpOwogCi0JCW1lbXNldChjcnRjLT5jb25maWcsIDAsIHNpemVvZigqY3J0Yy0+Y29uZmlnKSk7 CisJCW1lbXNldChwaXBlX2NvbmZpZywgMCwgc2l6ZW9mKCpwaXBlX2NvbmZpZykpOwogCi0JCWNy dGMtPmNvbmZpZy0+cXVpcmtzIHw9IFBJUEVfQ09ORklHX1FVSVJLX0lOSEVSSVRFRF9NT0RFOwor CQlwaXBlX2NvbmZpZy0+cXVpcmtzIHw9IFBJUEVfQ09ORklHX1FVSVJLX0lOSEVSSVRFRF9NT0RF OwogCiAJCWlmIChjcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUpCiAJCQkqY3J0Y19tYXNrIHw9IGRy bV9jcnRjX2luZGV4KCZjcnRjLT5iYXNlKTsKIAotCQljcnRjLT5iYXNlLmVuYWJsZWQgPSBjcnRj LT5iYXNlLnN0YXRlLT5lbmFibGUgPQotCQljcnRjLT5iYXNlLnN0YXRlLT5hY3RpdmUgPQotCQkJ ZGV2X3ByaXYtPmRpc3BsYXkuZ2V0X3BpcGVfY29uZmlnKGNydGMsIGNydGMtPmNvbmZpZyk7CisJ CWNydGMtPmJhc2UuZW5hYmxlZCA9IHBpcGVfY29uZmlnLT5iYXNlLmVuYWJsZSA9CisJCXBpcGVf Y29uZmlnLT5iYXNlLmFjdGl2ZSA9CisJCQlkZXZfcHJpdi0+ZGlzcGxheS5nZXRfcGlwZV9jb25m aWcoY3J0YywgcGlwZV9jb25maWcpOwogCiAJCXBsYW5lX3N0YXRlID0gdG9faW50ZWxfcGxhbmVf c3RhdGUocHJpbWFyeS0+c3RhdGUpOwogCQlwbGFuZV9zdGF0ZS0+aHdfZW5hYmxlZCA9IHBsYW5l X3N0YXRlLT52aXNpYmxlID0KQEAgLTE0ODE4LDcgKzE0ODI0LDggQEAgc3RhdGljIHZvaWQgaW50 ZWxfbW9kZXNldF9yZWFkb3V0X2h3X3N0YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCWlm IChlbmNvZGVyLT5nZXRfaHdfc3RhdGUoZW5jb2RlciwgJnBpcGUpKSB7CiAJCQljcnRjID0gdG9f aW50ZWxfY3J0YyhkZXZfcHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV0pOwogCQkJZW5j b2Rlci0+YmFzZS5jcnRjID0gJmNydGMtPmJhc2U7Ci0JCQllbmNvZGVyLT5nZXRfY29uZmlnKGVu Y29kZXIsIGNydGMtPmNvbmZpZyk7CisJCQllbmNvZGVyLT5nZXRfY29uZmlnKGVuY29kZXIsCisJ CQkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKSk7CiAJCX0gZWxzZSB7CiAJ CQllbmNvZGVyLT5iYXNlLmNydGMgPSBOVUxMOwogCQl9CkBAIC0xNDg4Myw5ICsxNDg5MCwxMyBA QCB2b2lkIGludGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRl diwKIAl9CiAKIAlmb3JfZWFjaF9waXBlKGRldl9wcml2LCBwaXBlKSB7CisJCXN0cnVjdCBpbnRl bF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZzsKKwogCQljcnRjID0gdG9faW50ZWxfY3J0YyhkZXZf cHJpdi0+cGlwZV90b19jcnRjX21hcHBpbmdbcGlwZV0pOwotCQlpbnRlbF9zYW5pdGl6ZV9jcnRj KGNydGMpOwotCQlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKGNydGMsIGNydGMtPmNvbmZpZywKKwkJ cGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uuc3RhdGUpOworCisJ CWludGVsX3Nhbml0aXplX2NydGMoY3J0YywgcGlwZV9jb25maWcpOworCQlpbnRlbF9kdW1wX3Bp cGVfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnLAogCQkJCSAgICAgICAiW3NldHVwX2h3X3N0YXRl XSIpOwogCX0KIApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKaW5kZXggZTY4NzZmYWNhN2YwLi5hYmY4 MDgyYmU0MGMgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RwLmMKKysr IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHAuYwpAQCAtNTMwOSwxMCArNTMwOSwxMCBA QCBzdGF0aWMgdm9pZCBpbnRlbF9kcF9zZXRfZHJyc19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCBpbnQgcmVmcmVzaF9yYXRlKQogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA4ICYm ICFJU19DSEVSUllWSUVXKGRldikpIHsKIAkJc3dpdGNoIChpbmRleCkgewogCQljYXNlIERSUlNf SElHSF9SUjoKLQkJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgTTFfTjEpOworCQkJaW50 ZWxfZHBfc2V0X21fbihpbnRlbF9jcnRjLCBwaXBlX2NvbmZpZywgTTFfTjEpOwogCQkJYnJlYWs7 CiAJCWNhc2UgRFJSU19MT1dfUlI6Ci0JCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0y X04yKTsKKwkJCWludGVsX2RwX3NldF9tX24oaW50ZWxfY3J0YywgcGlwZV9jb25maWcsIE0yX04y KTsKIAkJCWJyZWFrOwogCQljYXNlIERSUlNfTUFYX1JSOgogCQlkZWZhdWx0OgpkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9kcnYuaAppbmRleCA3OTc5YTJmNjgzOGMuLjY3NjdlZDkxZmFhZiAxMDA2NDQKLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmgKKysrIGIvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZHJ2LmgKQEAgLTExMDIsNyArMTEwMiw5IEBAIHZvaWQgYnh0X2VuYWJsZV9k Yzkoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2KTsKIHZvaWQgYnh0X2Rpc2FibGVf ZGM5KHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdik7CiB2b2lkIGludGVsX2RwX2dl dF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZyk7Ci12b2lkIGludGVsX2RwX3NldF9tX24oc3RydWN0IGludGVs X2NydGMgKmNydGMsIGVudW0gbGlua19tX25fc2V0IG1fbik7Cit2b2lkIGludGVsX2RwX3NldF9t X24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCisJCSAgICAgIHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpwaXBlX2NvbmZpZywKKwkJICAgICAgZW51bSBsaW5rX21fbl9zZXQgbV9uKTsKIGludCBp bnRlbF9kb3RjbG9ja19jYWxjdWxhdGUoaW50IGxpbmtfZnJlcSwgY29uc3Qgc3RydWN0IGludGVs X2xpbmtfbV9uICptX24pOwogdm9pZAogaXJvbmxha2VfY2hlY2tfZW5jb2Rlcl9kb3RjbG9jayhj b25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCi0tIAoyLjEuMAoKX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5m cmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK