From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dave Gordon Subject: [PATCH 3/3] drm/i915: prefer INTEL_GEN(dev_priv) to INTEL_INFO(dev)->gen (part 3) Date: Mon, 12 Sep 2016 20:20:03 +0100 Message-ID: <1473708003-17327-4-git-send-email-david.s.gordon@intel.com> References: <1473708003-17327-1-git-send-email-david.s.gordon@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 BA1966E570 for ; Mon, 12 Sep 2016 19:20:21 +0000 (UTC) In-Reply-To: <1473708003-17327-1-git-send-email-david.s.gordon@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 List-Id: intel-gfx@lists.freedesktop.org TW9yZSBDb2NjaW5lbGxlcnksIGFzIGRlc2NyaWJlZCBpbiBwYXJ0IDEgb2YgdGhpcyBzZXJpZXMK CldoZXJldmVyIHdlIGZpbmQgIklOVEVMX0lORk8oZGV2KS0+Z2VuIiwgYW5kIGhhdmUgYSBzdWl0 YWJsZQoiZGV2X3ByaXYiIGluIHNjb3BlLCByZXBsYWNlIGl0IHdpdGggIklOVEVMX0dFTihkZXZf cHJpdikiLAp3aGljaCBpcyB0aGUgcHJlZmVycmVkIHdhc3kgdG8gYWNjZXNzIHRoaXMgZGV2aWNl IHByb3BlcnR5LgpPY2Nhc2lvbmFsbHkgdGhpcyBjaGFuZ2UgYWxzbyBsZXRzIHVzIHJlbW92ZSBh IGxvY2FsIHZhcmlhYmxlLgoKVGhpcyBwYXRjaCBjb3ZlcnMganVzdCBpbnRlbF9kaXNwbGF5LmMs IHdoaWNoIGdldHMgaXRzIG93biBwYXRjaCBiZWNhdXNlCml0J3MgbGFyZ2UsIGFuZCBpcyBhbHNv IGEgcGFydGljdWxhcmx5IGhlYXZ5IHVzZXIgb2YgIklOVEVMX0lORk8oKS0+Z2VuIjsKYWJvdXQg YXMgbWFueSB1c2VzIGFzIHRoZSB3aG9sZSBvZiB0aGUgcmVzdCBvZiB0aGUgZHJpdmVyIHB1dCB0 b2dldGhlci4KClNpZ25lZC1vZmYtYnk6IERhdmUgR29yZG9uIDxkYXZpZC5zLmdvcmRvbkBpbnRl bC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTA3ICsr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNTMgaW5z ZXJ0aW9ucygrKSwgNTQgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L2k5MTUvaW50ZWxfZGlzcGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxh eS5jCmluZGV4IDQ5N2Q5OWIuLjcwM2RkYzkgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rpc3BsYXkuYworKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNw bGF5LmMKQEAgLTEwNzUsNyArMTA3NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3dhaXRfZm9yX3Bp cGVfb2ZmKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCWVudW0gdHJhbnNjb2RlciBjcHVfdHJh bnNjb2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAJZW51bSBwaXBlIHBpcGUg PSBjcnRjLT5waXBlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCWk5MTVfcmVnX3QgcmVnID0gUElQRUNPTkYo Y3B1X3RyYW5zY29kZXIpOwogCiAJCS8qIFdhaXQgZm9yIHRoZSBQaXBlIFN0YXRlIHRvIGdvIG9m ZiAqLwpAQCAtMTI5NCwxMSArMTI5NCwxMCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmUoc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogc3RhdGljIHZvaWQgYXNzZXJ0X3BsYW5l c19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJCQkJICAgZW51 bSBwaXBlIHBpcGUpCiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZfcHJpdi0+ZHJt OwogCWludCBpOwogCiAJLyogUHJpbWFyeSBwbGFuZXMgYXJlIGZpeGVkIHRvIHBpcGVzIG9uIGdl bjQrICovCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA+PSA0KSB7CiAJCXUzMiB2YWwgPSBJOTE1X1JFQUQoRFNQQ05UUihwaXBlKSk7 CiAJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBESVNQTEFZX1BMQU5FX0VOQUJMRSwKIAkJICAgICAi cGxhbmUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBkaXNhYmxlZCBidXQgbm90XG4i LApAQCAtMTMyMyw3ICsxMzIyLDcgQEAgc3RhdGljIHZvaWQgYXNzZXJ0X3Nwcml0ZXNfZGlzYWJs ZWQoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSAmZGV2X3ByaXYtPmRybTsKIAlpbnQgc3ByaXRlOwogCi0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDkpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CiAJCWZv cl9lYWNoX3Nwcml0ZShkZXZfcHJpdiwgcGlwZSwgc3ByaXRlKSB7CiAJCQl1MzIgdmFsID0gSTkx NV9SRUFEKFBMQU5FX0NUTChwaXBlLCBzcHJpdGUpKTsKIAkJCUk5MTVfU1RBVEVfV0FSTih2YWwg JiBQTEFORV9DVExfRU5BQkxFLApAQCAtMTMzNywxMiArMTMzNiwxMiBAQCBzdGF0aWMgdm9pZCBh c3NlcnRfc3ByaXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CiAJCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24g cGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAogCQkJICAgICBzcHJpdGVfbmFtZShwaXBl LCBzcHJpdGUpLCBwaXBlX25hbWUocGlwZSkpOwogCQl9Ci0JfSBlbHNlIGlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA3KSB7CisJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDcp IHsKIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChTUFJDVEwocGlwZSkpOwogCQlJOTE1X1NUQVRFX1dB Uk4odmFsICYgU1BSSVRFX0VOQUJMRSwKIAkJICAgICAic3ByaXRlICVjIGFzc2VydGlvbiBmYWls dXJlLCBzaG91bGQgYmUgb2ZmIG9uIHBpcGUgJWMgYnV0IGlzIHN0aWxsIGFjdGl2ZVxuIiwKIAkJ ICAgICBwbGFuZV9uYW1lKHBpcGUpLCBwaXBlX25hbWUocGlwZSkpOwotCX0gZWxzZSBpZiAoSU5U RUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkgeworCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA1KSB7CiAJCXUzMiB2YWwgPSBJOTE1X1JFQUQoRFZTQ05UUihwaXBlKSk7CiAJCUk5MTVf U1RBVEVfV0FSTih2YWwgJiBEVlNfRU5BQkxFLAogCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9u IGZhaWx1cmUsIHNob3VsZCBiZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4i LApAQCAtMTY0OCw3ICsxNjQ3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVfcGxsKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjKQogCVBPU1RJTkdfUkVBRChyZWcpOwogCXVkZWxheSgxNTApOwog Ci0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA0KSB7CiAJCUk5MTVfV1JJVEUoRFBMTF9NRChjcnRjLT5waXBlKSwKIAkJCSAgIGNy dGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsX21kKTsKIAl9IGVsc2UgewpAQCAtMzAyMiw3 ICszMDIxLDcgQEAgc3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3Qg ZHJtX3BsYW5lICpwcmltYXJ5LAogCiAJZHNwY250ciB8PSBESVNQTEFZX1BMQU5FX0VOQUJMRTsK IAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA8IDQpIHsKIAkJaWYgKGludGVsX2NydGMtPnBpcGUgPT0gUElQRV9CKQogCQkJZHNwY250 ciB8PSBESVNQUExBTkVfU0VMX1BJUEVfQjsKIApAQCAtMzA3Niw3ICszMDc1LDcgQEAgc3RhdGlj IHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwcmltYXJ5 LAogCiAJaW50ZWxfYWRkX2ZiX29mZnNldHMoJngsICZ5LCBwbGFuZV9zdGF0ZSwgMCk7CiAKLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+ PSA0KQogCQlpbnRlbF9jcnRjLT5kc3BhZGRyX29mZnNldCA9CiAJCQlpbnRlbF9jb21wdXRlX3Rp bGVfb2Zmc2V0KCZ4LCAmeSwgcGxhbmVfc3RhdGUsIDApOwogCkBAIC0zMDk4LDcgKzMwOTcsNyBA QCBzdGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUg KnByaW1hcnksCiAJSTkxNV9XUklURShyZWcsIGRzcGNudHIpOwogCiAJSTkxNV9XUklURShEU1BT VFJJREUocGxhbmUpLCBmYi0+cGl0Y2hlc1swXSk7Ci0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCUk5MTVfV1JJVEUo RFNQU1VSRihwbGFuZSksCiAJCQkgICBpbnRlbF9mYl9ndHRfb2Zmc2V0KGZiLCByb3RhdGlvbikg KwogCQkJICAgaW50ZWxfY3J0Yy0+ZHNwYWRkcl9vZmZzZXQpOwpAQCAtMzcwNCw3ICszNzAzLDcg QEAgc3RhdGljIHZvaWQgaW50ZWxfdXBkYXRlX3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAogCQkgICAocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKSk7CiAKIAkvKiBvbiBz a3lsYWtlIHRoaXMgaXMgZG9uZSBieSBkZXRhY2hpbmcgc2NhbGVycyAqLwotCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewog CQlza2xfZGV0YWNoX3NjYWxlcnMoY3J0Yyk7CiAKIAkJaWYgKHBpcGVfY29uZmlnLT5wY2hfcGZp dC5lbmFibGVkKQpAQCAtNTQ1Niw3ICs1NDU1LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9jcnRj X2VuYWJsZShzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcsCiAJaWYgKCF0cmFu c2NvZGVyX2lzX2RzaShjcHVfdHJhbnNjb2RlcikpCiAJCWludGVsX2RkaV9lbmFibGVfcGlwZV9j bG9jayhpbnRlbF9jcnRjKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQorCWlm IChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpCiAJCXNreWxha2VfcGZpdF9lbmFibGUoaW50ZWxf Y3J0Yyk7CiAJZWxzZQogCQlpcm9ubGFrZV9wZml0X2VuYWJsZShpbnRlbF9jcnRjKTsKQEAgLTU2 MTIsNyArNTYxMSw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNhYmxlKHN0cnVjdCBp bnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKIAlpZiAoIXRyYW5zY29kZXJfaXNfZHNp KGNwdV90cmFuc2NvZGVyKSkKIAkJaW50ZWxfZGRpX2Rpc2FibGVfdHJhbnNjb2Rlcl9mdW5jKGRl dl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlza3lsYWtlX3NjYWxlcl9kaXNh YmxlKGludGVsX2NydGMpOwogCWVsc2UKIAkJaXJvbmxha2VfcGZpdF9kaXNhYmxlKGludGVsX2Ny dGMsIGZhbHNlKTsKQEAgLTcxODUsNyArNzE4NCw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19j b21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAljb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+YmFzZS5hZGp1c3Rl ZF9tb2RlOwogCWludCBjbG9ja19saW1pdCA9IGRldl9wcml2LT5tYXhfZG90Y2xrX2ZyZXE7CiAK LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPCA0KSB7CiAJCWNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNsa19mcmVxICogOSAv IDEwOwogCiAJCS8qCkBAIC03MjE5LDcgKzcyMTgsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNf Y29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJLyogQ2FudGlnYSsgY2Fu bm90IGhhbmRsZSBtb2RlcyB3aXRoIGEgaHN5bmMgZnJvbnQgcG9yY2ggb2YgMC4KIAkgKiBXYVBy dW5lTW9kZVdpdGhJbmNvcnJlY3RIc3luY09mZnNldDpjdGcsZWxrLGlsayxzbmIsaXZiLHZsdixo c3cuCiAJICovCi0JaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDQgfHwgSVNfRzRYKGRldikp ICYmCisJaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNCB8fCBJU19HNFgoZGV2X3ByaXYpKSAm JgogCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVzdGVkX21vZGUtPmNy dGNfaGRpc3BsYXkpCiAJCXJldHVybiAtRUlOVkFMOwogCkBAIC03Nzg5LDcgKzc3ODgsNyBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9zZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRj ICpjcnRjLAogCWludCBwaXBlID0gY3J0Yy0+cGlwZTsKIAllbnVtIHRyYW5zY29kZXIgdHJhbnNj b2RlciA9IGNydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAKLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gNSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKIAkJSTkx NV9XUklURShQSVBFX0RBVEFfTTEodHJhbnNjb2RlciksIFRVX1NJWkUobV9uLT50dSkgfCBtX24t PmdtY2hfbSk7CiAJCUk5MTVfV1JJVEUoUElQRV9EQVRBX04xKHRyYW5zY29kZXIpLCBtX24tPmdt Y2hfbik7CiAJCUk5MTVfV1JJVEUoUElQRV9MSU5LX00xKHRyYW5zY29kZXIpLCBtX24tPmxpbmtf bSk7CkBAIC03Nzk4LDcgKzc3OTcsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcHVfdHJhbnNjb2Rl cl9zZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCQkgKiBmb3IgZ2VuIDwgOCkgYW5k IGlmIERSUlMgaXMgc3VwcG9ydGVkICh0byBtYWtlIHN1cmUgdGhlCiAJCSAqIHJlZ2lzdGVycyBh cmUgbm90IHVubmVjZXNzYXJpbHkgYWNjZXNzZWQpLgogCQkgKi8KLQkJaWYgKG0yX24yICYmIChJ U19DSEVSUllWSUVXKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4KSAmJgorCQlpZiAo bTJfbjIgJiYgKElTX0NIRVJSWVZJRVcoZGV2X3ByaXYpIHx8IElOVEVMX0dFTihkZXZfcHJpdikg PCA4KSAmJgogCQkJY3J0Yy0+Y29uZmlnLT5oYXNfZHJycykgewogCQkJSTkxNV9XUklURShQSVBF X0RBVEFfTTIodHJhbnNjb2RlciksCiAJCQkJCVRVX1NJWkUobTJfbjItPnR1KSB8IG0yX24yLT5n bWNoX20pOwpAQCAtODE4NCw3ICs4MTgzLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jb21wdXRlX2Rw bGwoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCWRwbGwgfD0gRFBMTEJfTFZEU19QMl9DTE9D S19ESVZfMTQ7CiAJCWJyZWFrOwogCX0KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkK KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KQogCQlkcGxsIHw9ICg2IDw8IFBMTF9MT0FE X1BVTFNFX1BIQVNFX1NISUZUKTsKIAogCWlmIChjcnRjX3N0YXRlLT5zZHZvX3R2X2Nsb2NrKQpA QCAtODE5OCw3ICs4MTk3LDcgQEAgc3RhdGljIHZvaWQgaTl4eF9jb21wdXRlX2RwbGwoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCiAJZHBsbCB8PSBEUExMX1ZDT19FTkFCTEU7CiAJY3J0Y19zdGF0 ZS0+ZHBsbF9od19zdGF0ZS5kcGxsID0gZHBsbDsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdl biA+PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQl1MzIgZHBsbF9t ZCA9IChjcnRjX3N0YXRlLT5waXhlbF9tdWx0aXBsaWVyIC0gMSkKIAkJCTw8IERQTExfTURfVURJ X01VTFRJUExJRVJfU0hJRlQ7CiAJCWNydGNfc3RhdGUtPmRwbGxfaHdfc3RhdGUuZHBsbF9tZCA9 IGRwbGxfbWQ7CkBAIC04MjcxLDcgKzgyNzAsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zZXRfcGlw ZV90aW1pbmdzKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCQkJdnN5bmNzaGlmdCAr PSBhZGp1c3RlZF9tb2RlLT5jcnRjX2h0b3RhbDsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPiAzKQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMykKIAkJSTkxNV9XUklURShW U1lOQ1NISUZUKGNwdV90cmFuc2NvZGVyKSwgdnN5bmNzaGlmdCk7CiAKIAlJOTE1X1dSSVRFKEhU T1RBTChjcHVfdHJhbnNjb2RlciksCkBAIC04NDQwLDcgKzg0MzksNyBAQCBzdGF0aWMgdm9pZCBp OXh4X3NldF9waXBlY29uZihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAl9CiAKIAlp ZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuZmxhZ3MgJiBEUk1fTU9E RV9GTEFHX0lOVEVSTEFDRSkgewotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0IHx8CisJ CWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCB8fAogCQkgICAgaW50ZWxfY3J0Y19oYXNfdHlw ZShpbnRlbF9jcnRjLT5jb25maWcsIElOVEVMX09VVFBVVF9TRFZPKSkKIAkJCXBpcGVjb25mIHw9 IFBJUEVDT05GX0lOVEVSTEFDRV9XX0ZJRUxEX0lORElDQVRJT047CiAJCWVsc2UKQEAgLTg2NTIs NyArODY1MSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5 MTUoZGV2KTsKIAl1aW50MzJfdCB0bXA7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0g MyAmJiAoSVNfSTgzMChkZXYpIHx8ICFJU19NT0JJTEUoZGV2KSkpCisJaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPD0gMyAmJiAoSVNfSTgzMChkZXZfcHJpdikgfHwgIUlTX01PQklMRShkZXZfcHJp dikpKQogCQlyZXR1cm47CiAKIAl0bXAgPSBJOTE1X1JFQUQoUEZJVF9DT05UUk9MKTsKQEAgLTg2 NjAsNyArODY1OSw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAogCQlyZXR1cm47CiAKIAkvKiBDaGVjayB3aGV0aGVyIHRoZSBwZml0 IGlzIGF0dGFjaGVkIHRvIG91ciBwaXBlLiAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8 IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKIAkJaWYgKGNydGMtPnBpcGUg IT0gUElQRV9CKQogCQkJcmV0dXJuOwogCX0gZWxzZSB7CkBAIC04NzI0LDcgKzg3MjMsNyBAQCBz dGF0aWMgdm9pZCB2bHZfY3J0Y19jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAK IAlmYiA9ICZpbnRlbF9mYi0+YmFzZTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0 KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQlpZiAodmFsICYgRElTUFBM QU5FX1RJTEVEKSB7CiAJCQlwbGFuZV9jb25maWctPnRpbGluZyA9IEk5MTVfVElMSU5HX1g7CiAJ CQlmYi0+bW9kaWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9NT0RfWF9USUxFRDsKQEAgLTg3MzYsNyAr ODczNSw3IEBAIHN0YXRpYyB2b2lkIHZsdl9jcnRjX2Nsb2NrX2dldChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0YywKIAlmYi0+cGl4ZWxfZm9ybWF0ID0gZm91cmNjOwogCWZiLT5iaXRzX3Blcl9waXhl bCA9IGRybV9mb3JtYXRfcGxhbmVfY3BwKGZvdXJjYywgMCkgKiA4OwogCi0JaWYgKElOVEVMX0lO Rk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJ CWlmIChwbGFuZV9jb25maWctPnRpbGluZykKIAkJCW9mZnNldCA9IEk5MTVfUkVBRChEU1BUSUxF T0ZGKHBsYW5lKSk7CiAJCWVsc2UKQEAgLTg4NDQsNyArODg0Myw3IEBAIHN0YXRpYyBib29sIGk5 eHhfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCSAgICAodG1wICYg UElQRUNPTkZfQ09MT1JfUkFOR0VfU0VMRUNUKSkKIAkJcGlwZV9jb25maWctPmxpbWl0ZWRfY29s b3JfcmFuZ2UgPSB0cnVlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDQpCiAJCXBpcGVfY29uZmlnLT5kb3VibGVfd2lkZSA9IHRt cCAmIFBJUEVDT05GX0RPVUJMRV9XSURFOwogCiAJaW50ZWxfZ2V0X3BpcGVfdGltaW5ncyhjcnRj LCBwaXBlX2NvbmZpZyk7CkBAIC04ODUyLDcgKzg4NTEsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dl dF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCWk5eHhfZ2V0X3BmaXRf Y29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQkvKiBObyB3YXkgdG8g cmVhZCBpdCBvdXQgb24gcGlwZXMgQiBhbmQgQyAqLwogCQlpZiAoSVNfQ0hFUlJZVklFVyhkZXYp ICYmIGNydGMtPnBpcGUgIT0gUElQRV9BKQogCQkJdG1wID0gZGV2X3ByaXYtPmNodl9kcGxsX21k W2NydGMtPnBpcGVdOwpAQCAtOTYzMSw3ICs5NjMwLDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1 X3RyYW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJZW51bSBwaXBlIHBpcGUg PSBjcnRjLT5waXBlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpIHsKKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA1KSB7CiAJCW1fbi0+bGlua19tID0gSTkxNV9SRUFEKFBJ UEVfTElOS19NMSh0cmFuc2NvZGVyKSk7CiAJCW1fbi0+bGlua19uID0gSTkxNV9SRUFEKFBJUEVf TElOS19OMSh0cmFuc2NvZGVyKSk7CiAJCW1fbi0+Z21jaF9tID0gSTkxNV9SRUFEKFBJUEVfREFU QV9NMSh0cmFuc2NvZGVyKSkKQEAgLTk2NDMsNyArOTY0Miw3IEBAIHN0YXRpYyB2b2lkIGludGVs X2NwdV90cmFuc2NvZGVyX2dldF9tX24oc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCSAqIGdl biA8IDgpIGFuZCBpZiBEUlJTIGlzIHN1cHBvcnRlZCAodG8gbWFrZSBzdXJlIHRoZQogCQkgKiBy ZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5IHJlYWQpLgogCQkgKi8KLQkJaWYgKG0yX24y ICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOCAmJgorCQlpZiAobTJfbjIgJiYgSU5URUxfR0VO KGRldl9wcml2KSA8IDggJiYKIAkJCWNydGMtPmNvbmZpZy0+aGFzX2RycnMpIHsKIAkJCW0yX24y LT5saW5rX20gPSBJOTE1X1JFQUQoUElQRV9MSU5LX00yKHRyYW5zY29kZXIpKTsKIAkJCW0yX24y LT5saW5rX24gPQlJOTE1X1JFQUQoUElQRV9MSU5LX04yKHRyYW5zY29kZXIpKTsKQEAgLTk4NDUs NyArOTg0NCw3IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhzdHJ1Y3Qg aW50ZWxfY3J0YyAqY3J0YywKIAogCWZiID0gJmludGVsX2ZiLT5iYXNlOwogCi0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7 CiAJCWlmICh2YWwgJiBESVNQUExBTkVfVElMRUQpIHsKIAkJCXBsYW5lX2NvbmZpZy0+dGlsaW5n ID0gSTkxNV9USUxJTkdfWDsKIAkJCWZiLT5tb2RpZmllclswXSA9IEk5MTVfRk9STUFUX01PRF9Y X1RJTEVEOwpAQCAtMTA2NDQsNyArMTA2NDMsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2dldF9k ZGlfcG9ydF9zdGF0ZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgKiBEREkgRS4gU28ganVz dCBjaGVjayB3aGV0aGVyIHRoaXMgcGlwZSBpcyB3aXJlZCB0byBEREkgRSBhbmQgd2hldGhlcgog CSAqIHRoZSBQQ0ggdHJhbnNjb2RlciBpcyBvbi4KIAkgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA5ICYmCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5ICYmCiAJICAgIChwb3J0 ID09IFBPUlRfRSkgJiYgSTkxNV9SRUFEKExQVF9UUkFOU0NPTkYpICYgVFJBTlNfRU5BQkxFKSB7 CiAJCXBpcGVfY29uZmlnLT5oYXNfcGNoX2VuY29kZXIgPSB0cnVlOwogCkBAIC0xMDY5MywxMSAr MTA2OTIsMTEgQEAgc3RhdGljIGJvb2wgaGFzd2VsbF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGlu dGVsX2NydGMgKmNydGMsCiAJcGlwZV9jb25maWctPmdhbW1hX21vZGUgPQogCQlJOTE1X1JFQUQo R0FNTUFfTU9ERShjcnRjLT5waXBlKSkgJiBHQU1NQV9NT0RFX01PREVfTUFTSzsKIAotCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkgewogCQlza2xfaW5pdF9zY2FsZXJzKGRldiwgY3J0YywgcGlwZV9jb25maWcpOwogCX0KIAot CWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJp dikgPj0gOSkgewogCQlwaXBlX2NvbmZpZy0+c2NhbGVyX3N0YXRlLnNjYWxlcl9pZCA9IC0xOwog CQlwaXBlX2NvbmZpZy0+c2NhbGVyX3N0YXRlLnNjYWxlcl91c2VycyAmPSB+KDEgPDwgU0tMX0NS VENfSU5ERVgpOwogCX0KQEAgLTEwNzA1LDcgKzEwNzA0LDcgQEAgc3RhdGljIGJvb2wgaGFzd2Vs bF9nZXRfcGlwZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJcG93ZXJfZG9tYWlu ID0gUE9XRVJfRE9NQUlOX1BJUEVfUEFORUxfRklUVEVSKGNydGMtPnBpcGUpOwogCWlmIChpbnRl bF9kaXNwbGF5X3Bvd2VyX2dldF9pZl9lbmFibGVkKGRldl9wcml2LCBwb3dlcl9kb21haW4pKSB7 CiAJCXBvd2VyX2RvbWFpbl9tYXNrIHw9IEJJVChwb3dlcl9kb21haW4pOwotCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gOSkKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkKIAkJ CXNreWxha2VfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKIAkJZWxzZQogCQkJ aXJvbmxha2VfZ2V0X3BmaXRfY29uZmlnKGNydGMsIHBpcGVfY29uZmlnKTsKQEAgLTExNTU1LDcg KzExNTU0LDcgQEAgc3RhdGljIGJvb2wgX19wYWdlZmxpcF9maW5pc2hlZF9jcyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKIAkgKiByZWFsbHkgbmVlZGVkIHRoZXJlLiBCdXQgc2luY2UgY3RnIGhh cyB0aGUgcmVnaXN0ZXJzLAogCSAqIGluY2x1ZGUgaXQgaW4gdGhlIGNoZWNrIGFueXdheS4KIAkg Ki8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1ICYmICFJU19HNFgoZGV2KSkKKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlTX0c0WChkZXZfcHJpdikpCiAJCXJldHVybiB0 cnVlOwogCiAJLyoKQEAgLTEyMTUzLDcgKzEyMTUyLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICogVElMRU9GRi9MSU5PRkYgcmVn aXN0ZXJzIGNhbid0IGJlIGNoYW5nZWQgdmlhIE1JIGRpc3BsYXkgZmxpcHMuCiAJICogTm90ZSB0 aGF0IHBpdGNoIGNoYW5nZXMgY291bGQgYWxzbyBhZmZlY3QgdGhlc2UgcmVnaXN0ZXIuCiAJICov Ci0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4gMyAmJgorCWlmIChJTlRFTF9HRU4oZGV2X3By aXYpID4gMyAmJgogCSAgICAoZmItPm9mZnNldHNbMF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPm9m ZnNldHNbMF0gfHwKIAkgICAgIGZiLT5waXRjaGVzWzBdICE9IGNydGMtPnByaW1hcnktPmZiLT5w aXRjaGVzWzBdKSkKIAkJcmV0dXJuIC1FSU5WQUw7CkBAIC0xMjIxOCw3ICsxMjIxNyw3IEBAIHN0 YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJ YXRvbWljX2luYygmaW50ZWxfY3J0Yy0+dW5waW5fd29ya19jb3VudCk7CiAKLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNSB8fCBJU19HNFgoZGV2KSkKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikpCiAJCXdvcmstPmZsaXBfY291bnQgPSBJOTE1 X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUpKSArIDE7CiAKIAlpZiAoSVNfVkFMTEVZVklF VyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkgewpAQCAtMTIyMjgsNyArMTIyMjcsNyBAQCBz dGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJ CWVuZ2luZSA9IE5VTEw7CiAJfSBlbHNlIGlmIChJU19JVllCUklER0UoZGV2KSB8fCBJU19IQVNX RUxMKGRldikpIHsKIAkJZW5naW5lID0gJmRldl9wcml2LT5lbmdpbmVbQkNTXTsKLQl9IGVsc2Ug aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcpIHsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihk ZXZfcHJpdikgPj0gNykgewogCQllbmdpbmUgPSBpOTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgm b2JqLT5sYXN0X3dyaXRlLAogCQkJCQkJICAgICZvYmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgp OwogCQlpZiAoZW5naW5lID09IE5VTEwgfHwgZW5naW5lLT5pZCAhPSBSQ1MpCkBAIC0xMjQ5MCw3 ICsxMjQ4OSw3IEBAIGludCBpbnRlbF9wbGFuZV9hdG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBk cm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAogCS8qIFByZS1nZW45IHBsYXRmb3JtcyBuZWVk IHR3by1zdGVwIHdhdGVybWFyayB1cGRhdGVzICovCiAJaWYgKChwaXBlX2NvbmZpZy0+dXBkYXRl X3dtX3ByZSB8fCBwaXBlX2NvbmZpZy0+dXBkYXRlX3dtX3Bvc3QpICYmCi0JICAgIElOVEVMX0lO Rk8oZGV2KS0+Z2VuIDwgOSAmJiBkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtz KQorCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJiBkZXZfcHJpdi0+ZGlzcGxheS5vcHRp bWl6ZV93YXRlcm1hcmtzKQogCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGNfc3RhdGUpLT53bS5u ZWVkX3Bvc3R2YmxfdXBkYXRlID0gdHJ1ZTsKIAogCWlmICh2aXNpYmxlIHx8IHdhc192aXNpYmxl KQpAQCAtMTI2MDcsNyArMTI2MDYsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfYXRvbWljX2No ZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCXBpcGVfY29uZmlnLT53bS5pbGsuaW50ZXJt ZWRpYXRlID0gcGlwZV9jb25maWctPndtLmlsay5vcHRpbWFsOwogCX0KIAotCWlmIChJTlRFTF9J TkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewog CQlpZiAobW9kZV9jaGFuZ2VkKQogCQkJcmV0ID0gc2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBl X2NvbmZpZyk7CiAKQEAgLTEzNDIxLDcgKzEzNDIwLDcgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X3dt X3N0YXRlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAljb25zdCBlbnVtIHBpcGUgcGlwZSA9IGlu dGVsX2NydGMtPnBpcGU7CiAJaW50IHBsYW5lOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu IDwgOSB8fCAhbmV3X3N0YXRlLT5hY3RpdmUpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA5 IHx8ICFuZXdfc3RhdGUtPmFjdGl2ZSkKIAkJcmV0dXJuOwogCiAJc2tsX2RkYl9nZXRfaHdfc3Rh dGUoZGV2X3ByaXYsICZod19kZGIpOwpAQCAtMTUxNzIsNyArMTUxNzEsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgaW50IHBpcGUpCiAJY3J0 Y19zdGF0ZS0+YmFzZS5jcnRjID0gJmludGVsX2NydGMtPmJhc2U7CiAKIAkvKiBpbml0aWFsaXpl IHNoYXJlZCBzY2FsZXJzICovCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpIHsKKwlp ZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CiAJCWlmIChwaXBlID09IFBJUEVfQykKIAkJ CWludGVsX2NydGMtPm51bV9zY2FsZXJzID0gMTsKIAkJZWxzZQpAQCAtMTUyMDEsNyArMTUyMDAs NyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwg aW50IHBpcGUpCiAJICovCiAJaW50ZWxfY3J0Yy0+cGlwZSA9IHBpcGU7CiAJaW50ZWxfY3J0Yy0+ cGxhbmUgPSBwaXBlOwotCWlmIChIQVNfRkJDKGRldikgJiYgSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA0KSB7CisJaWYgKEhBU19GQkMoZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA0 KSB7CiAJCURSTV9ERUJVR19LTVMoInN3YXBwaW5nIHBpcGVzICYgcGxhbmVzIGZvciBGQkNcbiIp OwogCQlpbnRlbF9jcnRjLT5wbGFuZSA9ICFwaXBlOwogCX0KQEAgLTE1Mjk4LDcgKzE1Mjk3LDcg QEAgc3RhdGljIGJvb2wgaW50ZWxfY3J0X3ByZXNlbnQoc3RydWN0IGRybV9kZXZpY2UgKmRldikK IHsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAK LQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA+PSA5KQogCQlyZXR1cm4gZmFsc2U7CiAKIAlpZiAoSVNfSFNXX1VMVChkZXYpIHx8IElTX0JE V19VTFQoZGV2KSkKQEAgLTE1NjYxLDcgKzE1NjYwLDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFt ZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJc3dpdGNoIChtb2RlX2NtZC0+ bW9kaWZpZXJbMF0pIHsKIAljYXNlIEk5MTVfRk9STUFUX01PRF9ZX1RJTEVEOgogCWNhc2UgSTkx NV9GT1JNQVRfTU9EX1lmX1RJTEVEOgotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA5KSB7 CisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewogCQkJRFJNX0RFQlVHKCJVbnN1cHBv cnRlZCB0aWxpbmcgMHglbGx4IVxuIiwKIAkJCQkgIG1vZGVfY21kLT5tb2RpZmllclswXSk7CiAJ CQlyZXR1cm4gLUVJTlZBTDsKQEAgLTE1NzI0LDcgKzE1NzIzLDcgQEAgc3RhdGljIGludCBpbnRl bF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJY2FzZSBEUk1fRk9S TUFUX0FSR0I4ODg4OgogCQlicmVhazsKIAljYXNlIERSTV9GT1JNQVRfWFJHQjE1NTU6Ci0JCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDMpIHsKKwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikg PiAzKSB7CiAJCQlmb3JtYXRfbmFtZSA9IGRybV9nZXRfZm9ybWF0X25hbWUobW9kZV9jbWQtPnBp eGVsX2Zvcm1hdCk7CiAJCQlEUk1fREVCVUcoInVuc3VwcG9ydGVkIHBpeGVsIGZvcm1hdDogJXNc biIsIGZvcm1hdF9uYW1lKTsKIAkJCWtmcmVlKGZvcm1hdF9uYW1lKTsKQEAgLTE1NzMzLDcgKzE1 NzMyLDcgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2 aWNlICpkZXYsCiAJCWJyZWFrOwogCWNhc2UgRFJNX0ZPUk1BVF9BQkdSODg4ODoKIAkJaWYgKCFJ U19WQUxMRVlWSUVXKGRldikgJiYgIUlTX0NIRVJSWVZJRVcoZGV2KSAmJgotCQkgICAgSU5URUxf SU5GTyhkZXYpLT5nZW4gPCA5KSB7CisJCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSkgewog CQkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3Jt YXQpOwogCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLCBmb3Jt YXRfbmFtZSk7CiAJCQlrZnJlZShmb3JtYXRfbmFtZSk7CkBAIC0xNTc0Myw3ICsxNTc0Miw3IEBA IHN0YXRpYyBpbnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LAogCWNhc2UgRFJNX0ZPUk1BVF9YQkdSODg4ODoKIAljYXNlIERSTV9GT1JNQVRfWFJHQjIxMDEw MTA6CiAJY2FzZSBEUk1fRk9STUFUX1hCR1IyMTAxMDEwOgotCQlpZiAoSU5URUxfSU5GTyhkZXYp LT5nZW4gPCA0KSB7CisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewogCQkJZm9ybWF0 X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1lKG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwogCQkJ RFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhlbCBmb3JtYXQ6ICVzXG4iLCBmb3JtYXRfbmFtZSk7 CiAJCQlrZnJlZShmb3JtYXRfbmFtZSk7CkBAIC0xNTc2Miw3ICsxNTc2MSw3IEBAIHN0YXRpYyBp bnQgaW50ZWxfZnJhbWVidWZmZXJfaW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCWNhc2Ug RFJNX0ZPUk1BVF9VWVZZOgogCWNhc2UgRFJNX0ZPUk1BVF9ZVllVOgogCWNhc2UgRFJNX0ZPUk1B VF9WWVVZOgotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA1KSB7CisJCWlmIChJTlRFTF9H RU4oZGV2X3ByaXYpIDwgNSkgewogCQkJZm9ybWF0X25hbWUgPSBkcm1fZ2V0X2Zvcm1hdF9uYW1l KG1vZGVfY21kLT5waXhlbF9mb3JtYXQpOwogCQkJRFJNX0RFQlVHKCJ1bnN1cHBvcnRlZCBwaXhl bCBmb3JtYXQ6ICVzXG4iLCBmb3JtYXRfbmFtZSk7CiAJCQlrZnJlZShmb3JtYXRfbmFtZSk7CkBA IC0xNjU0NCw3ICsxNjU0Myw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3Nhbml0aXplX2NydGMoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCiAJLyogV2UgbmVlZCB0byBzYW5pdGl6ZSB0aGUgcGxhbmUg LT4gcGlwZSBtYXBwaW5nIGZpcnN0IGJlY2F1c2UgdGhpcyB3aWxsCiAJICogZGlzYWJsZSB0aGUg Y3J0YyAoYW5kIGhlbmNlIGNoYW5nZSB0aGUgc3RhdGUpIGlmIGl0IGlzIHdyb25nLiBOb3RlCiAJ ICogdGhhdCBnZW40KyBoYXMgYSBmaXhlZCBwbGFuZSAtPiBwaXBlIG1hcHBpbmcuICAqLwotCWlm IChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQgJiYgIWludGVsX2NoZWNrX3BsYW5lX21hcHBpbmco Y3J0YykpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQgJiYgIWludGVsX2NoZWNrX3Bs YW5lX21hcHBpbmcoY3J0YykpIHsKIAkJYm9vbCBwbGFuZTsKIAogCQlEUk1fREVCVUdfS01TKCJb Q1JUQzolZDolc10gd3JvbmcgcGxhbmUgY29ubmVjdGlvbiBkZXRlY3RlZCFcbiIsCkBAIC0xNzA1 OSw3ICsxNzA1OCw3IEBAIHZvaWQgaW50ZWxfY29ubmVjdG9yX2F0dGFjaF9lbmNvZGVyKHN0cnVj dCBpbnRlbF9jb25uZWN0b3IgKmNvbm5lY3RvciwKIGludCBpbnRlbF9tb2Rlc2V0X3ZnYV9zZXRf c3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBzdGF0ZSkKIHsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGRldik7Ci0JdW5zaWduZWQgcmVnID0g SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNiA/IFNOQl9HTUNIX0NUUkwgOiBJTlRFTF9HTUNIX0NU Ukw7CisJdW5zaWduZWQgcmVnID0gSU5URUxfR0VOKGRldl9wcml2KSA+PSA2ID8gU05CX0dNQ0hf Q1RSTCA6IElOVEVMX0dNQ0hfQ1RSTDsKIAl1MTYgZ21jaF9jdHJsOwogCiAJaWYgKHBjaV9yZWFk X2NvbmZpZ193b3JkKGRldl9wcml2LT5icmlkZ2VfZGV2LCByZWcsICZnbWNoX2N0cmwpKSB7CkBA IC0xNzIzNCwxMyArMTcyMzMsMTMgQEAgc3RydWN0IGludGVsX2Rpc3BsYXlfZXJyb3Jfc3RhdGUg KgogCQllcnJfcHJpbnRmKG0sICJQbGFuZSBbJWRdOlxuIiwgaSk7CiAJCWVycl9wcmludGYobSwg IiAgQ05UUjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLmNvbnRyb2wpOwogCQllcnJfcHJpbnRm KG0sICIgIFNUUklERTogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnN0cmlkZSk7Ci0JCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA8PSAzKSB7CisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9 IDMpIHsKIAkJCWVycl9wcmludGYobSwgIiAgU0laRTogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ld LnNpemUpOwogCQkJZXJyX3ByaW50ZihtLCAiICBQT1M6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtp XS5wb3MpOwogCQl9Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8PSA3ICYmICFJU19IQVNX RUxMKGRldikpCisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDcgJiYgIUlTX0hBU1dFTEwo ZGV2X3ByaXYpKQogCQkJZXJyX3ByaW50ZihtLCAiICBBRERSOiAlMDh4XG4iLCBlcnJvci0+cGxh bmVbaV0uYWRkcik7Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJCWlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJCWVycl9wcmludGYobSwgIiAgU1VSRjogJTA4 eFxuIiwgZXJyb3ItPnBsYW5lW2ldLnN1cmZhY2UpOwogCQkJZXJyX3ByaW50ZihtLCAiICBUSUxF T0ZGOiAlMDh4XG4iLCBlcnJvci0+cGxhbmVbaV0udGlsZV9vZmZzZXQpOwogCQl9Ci0tIAoxLjku MQoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwt Z2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==