From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Weinehall Subject: [PATCH 06/12] drm/i915: INTEL_GEN() fixes, part 3 Date: Mon, 29 Aug 2016 13:31:46 +0300 Message-ID: <20160829103152.31282-7-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 450E66E511 for ; Mon, 29 Aug 2016 10:32:10 +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 Q29udmVydCBhbGwgaW5zdGFuY2VzIG9mIElOVEVMX0lORk8oZGV2KS0+Z2VuIGluIGludGVsX2Rp c3BsYXkuYwp0byBJTlRFTF9HRU4oZGV2X3ByaXYpLgoKU2lnbmVkLW9mZi1ieTogRGF2aWQgV2Vp bmVoYWxsIDxkYXZpZC53ZWluZWhhbGxAbGludXguaW50ZWwuY29tPgotLS0KIGRyaXZlcnMvZ3B1 L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyB8IDE3NiArKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDg5IGluc2VydGlvbnMoKyksIDg3IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBi L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCBjYzY5YWE1YmZiOTYu LmU1ZTYyN2IwNGU1MSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAtMTA3 NSw3ICsxMDc1LDcgQEAgc3RhdGljIHZvaWQgaW50ZWxfd2FpdF9mb3JfcGlwZV9vZmYoc3RydWN0 IGludGVsX2NydGMgKmNydGMpCiAJZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gY3J0 Yy0+Y29uZmlnLT5jcHVfdHJhbnNjb2RlcjsKIAllbnVtIHBpcGUgcGlwZSA9IGNydGMtPnBpcGU7 CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDQpIHsKIAkJaTkxNV9yZWdfdCByZWcgPSBQSVBFQ09ORihjcHVfdHJhbnNjb2Rl cik7CiAKIAkJLyogV2FpdCBmb3IgdGhlIFBpcGUgU3RhdGUgdG8gZ28gb2ZmICovCkBAIC0xMjk0 LDExICsxMjk0LDEwIEBAIHN0YXRpYyB2b2lkIGFzc2VydF9wbGFuZShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiBzdGF0aWMgdm9pZCBhc3NlcnRfcGxhbmVzX2Rpc2FibGVkKHN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCQkgICBlbnVtIHBpcGUgcGlwZSkK IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmRldl9wcml2LT5kcm07CiAJaW50IGk7CiAK IAkvKiBQcmltYXJ5IHBsYW5lcyBhcmUgZml4ZWQgdG8gcGlwZXMgb24gZ2VuNCsgKi8KLQlpZiAo SU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49 IDQpIHsKIAkJdTMyIHZhbCA9IEk5MTVfUkVBRChEU1BDTlRSKHBpcGUpKTsKIAkJSTkxNV9TVEFU RV9XQVJOKHZhbCAmIERJU1BMQVlfUExBTkVfRU5BQkxFLAogCQkgICAgICJwbGFuZSAlYyBhc3Nl cnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIGRpc2FibGVkIGJ1dCBub3RcbiIsCkBAIC0xMzIzLDcg KzEzMjIsNyBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfc3ByaXRlc19kaXNhYmxlZChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZkZXZf cHJpdi0+ZHJtOwogCWludCBzcHJpdGU7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0g OSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJZm9yX2VhY2hfc3ByaXRl KGRldl9wcml2LCBwaXBlLCBzcHJpdGUpIHsKIAkJCXUzMiB2YWwgPSBJOTE1X1JFQUQoUExBTkVf Q1RMKHBpcGUsIHNwcml0ZSkpOwogCQkJSTkxNV9TVEFURV9XQVJOKHZhbCAmIFBMQU5FX0NUTF9F TkFCTEUsCkBAIC0xMzM3LDEyICsxMzM2LDEyIEBAIHN0YXRpYyB2b2lkIGFzc2VydF9zcHJpdGVz X2Rpc2FibGVkKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAkJCSAgICAgInNw cml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hvdWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBp cyBzdGlsbCBhY3RpdmVcbiIsCiAJCQkgICAgIHNwcml0ZV9uYW1lKHBpcGUsIHNwcml0ZSksIHBp cGVfbmFtZShwaXBlKSk7CiAJCX0KLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49 IDcpIHsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewogCQl1MzIgdmFs ID0gSTkxNV9SRUFEKFNQUkNUTChwaXBlKSk7CiAJCUk5MTVfU1RBVEVfV0FSTih2YWwgJiBTUFJJ VEVfRU5BQkxFLAogCQkgICAgICJzcHJpdGUgJWMgYXNzZXJ0aW9uIGZhaWx1cmUsIHNob3VsZCBi ZSBvZmYgb24gcGlwZSAlYyBidXQgaXMgc3RpbGwgYWN0aXZlXG4iLAogCQkgICAgIHBsYW5lX25h bWUocGlwZSksIHBpcGVfbmFtZShwaXBlKSk7Ci0JfSBlbHNlIGlmIChJTlRFTF9JTkZPKGRldikt PmdlbiA+PSA1KSB7CisJfSBlbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpIHsKIAkJ dTMyIHZhbCA9IEk5MTVfUkVBRChEVlNDTlRSKHBpcGUpKTsKIAkJSTkxNV9TVEFURV9XQVJOKHZh bCAmIERWU19FTkFCTEUsCiAJCSAgICAgInNwcml0ZSAlYyBhc3NlcnRpb24gZmFpbHVyZSwgc2hv dWxkIGJlIG9mZiBvbiBwaXBlICVjIGJ1dCBpcyBzdGlsbCBhY3RpdmVcbiIsCkBAIC0xNjQ4LDcg KzE2NDcsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2VuYWJsZV9wbGwoc3RydWN0IGludGVsX2NydGMg KmNydGMpCiAJUE9TVElOR19SRUFEKHJlZyk7CiAJdWRlbGF5KDE1MCk7CiAKLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsK IAkJSTkxNV9XUklURShEUExMX01EKGNydGMtPnBpcGUpLAogCQkJICAgY3J0Yy0+Y29uZmlnLT5k cGxsX2h3X3N0YXRlLmRwbGxfbWQpOwogCX0gZWxzZSB7CkBAIC0zMDIyLDcgKzMwMjEsNyBAQCBz dGF0aWMgdm9pZCBpOXh4X3VwZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBy aW1hcnksCiAKIAlkc3BjbnRyIHw9IERJU1BMQVlfUExBTkVfRU5BQkxFOwogCi0JaWYgKElOVEVM X0lORk8oZGV2KS0+Z2VuIDwgNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewog CQlpZiAoaW50ZWxfY3J0Yy0+cGlwZSA9PSBQSVBFX0IpCiAJCQlkc3BjbnRyIHw9IERJU1BQTEFO RV9TRUxfUElQRV9COwogCkBAIC0zMDc2LDcgKzMwNzUsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X3Vw ZGF0ZV9wcmltYXJ5X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnByaW1hcnksCiAKIAlpbnRlbF9h ZGRfZmJfb2Zmc2V0cygmeCwgJnksIHBsYW5lX3N0YXRlLCAwKTsKIAotCWlmIChJTlRFTF9JTkZP KGRldiktPmdlbiA+PSA0KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCiAJCWludGVs X2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0KIAkJCWludGVsX2NvbXB1dGVfdGlsZV9vZmZzZXQoJngs ICZ5LCBwbGFuZV9zdGF0ZSwgMCk7CiAKQEAgLTMwODksNyArMzA4OCw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwKIAog CWxpbmVhcl9vZmZzZXQgPSBpbnRlbF9mYl94eV90b19saW5lYXIoeCwgeSwgcGxhbmVfc3RhdGUs IDApOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkKKwlpZiAoSU5URUxfR0VOKGRl dl9wcml2KSA8IDQpCiAJCWludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0ID0gbGluZWFyX29mZnNl dDsKIAogCWludGVsX2NydGMtPmFkanVzdGVkX3ggPSB4OwpAQCAtMzA5OCw3ICszMDk3LDcgQEAg c3RhdGljIHZvaWQgaTl4eF91cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw cmltYXJ5LAogCUk5MTVfV1JJVEUocmVnLCBkc3BjbnRyKTsKIAogCUk5MTVfV1JJVEUoRFNQU1RS SURFKHBsYW5lKSwgZmItPnBpdGNoZXNbMF0pOwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+ PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQlJOTE1X1dSSVRFKERT UFNVUkYocGxhbmUpLAogCQkJICAgaW50ZWxfZmJfZ3R0X29mZnNldChmYiwgcm90YXRpb24pICsK IAkJCSAgIGludGVsX2NydGMtPmRzcGFkZHJfb2Zmc2V0KTsKQEAgLTM2OTAsNyArMzY4OSw3IEBA IHN0YXRpYyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAq Y3J0YywKIAkJICAgKHBpcGVfY29uZmlnLT5waXBlX3NyY19oIC0gMSkpOwogCiAJLyogb24gc2t5 bGFrZSB0aGlzIGlzIGRvbmUgYnkgZGV0YWNoaW5nIHNjYWxlcnMgKi8KLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gOSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsKIAkJ c2tsX2RldGFjaF9zY2FsZXJzKGNydGMpOwogCiAJCWlmIChwaXBlX2NvbmZpZy0+cGNoX3BmaXQu ZW5hYmxlZCkKQEAgLTU0NDIsNyArNTQ0MSw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19l bmFibGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnLAogCWlmICghdHJhbnNj b2Rlcl9pc19kc2koY3B1X3RyYW5zY29kZXIpKQogCQlpbnRlbF9kZGlfZW5hYmxlX3BpcGVfY2xv Y2soaW50ZWxfY3J0Yyk7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkKKwlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlza3lsYWtlX3BmaXRfZW5hYmxlKGludGVsX2Ny dGMpOwogCWVsc2UKIAkJaXJvbmxha2VfcGZpdF9lbmFibGUoaW50ZWxfY3J0Yyk7CkBAIC01NTc0 LDggKzU1NzMsNyBAQCBzdGF0aWMgdm9pZCBoYXN3ZWxsX2NydGNfZGlzYWJsZShzdHJ1Y3QgaW50 ZWxfY3J0Y19zdGF0ZSAqb2xkX2NydGNfc3RhdGUsCiAJCQkJIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpvbGRfc3RhdGUpCiB7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gb2xkX2NydGNfc3Rh dGUtPmJhc2UuY3J0YzsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwotCXN0 cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3Qg ZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSB0b19pOTE1KGNydGMtPmRldik7CiAJc3RydWN0 IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwogCWVudW0gdHJh bnNjb2RlciBjcHVfdHJhbnNjb2RlciA9IGludGVsX2NydGMtPmNvbmZpZy0+Y3B1X3RyYW5zY29k ZXI7CiAKQEAgLTU1OTgsNyArNTU5Niw3IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19kaXNh YmxlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpvbGRfY3J0Y19zdGF0ZSwKIAlpZiAoIXRyYW5z Y29kZXJfaXNfZHNpKGNwdV90cmFuc2NvZGVyKSkKIAkJaW50ZWxfZGRpX2Rpc2FibGVfdHJhbnNj b2Rlcl9mdW5jKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7CiAKLQlpZiAoSU5URUxfSU5GTyhk ZXYpLT5nZW4gPj0gOSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlza3lsYWtl X3NjYWxlcl9kaXNhYmxlKGludGVsX2NydGMpOwogCWVsc2UKIAkJaXJvbmxha2VfcGZpdF9kaXNh YmxlKGludGVsX2NydGMsIGZhbHNlKTsKQEAgLTcxNzEsNyArNzE2OSw3IEBAIHN0YXRpYyBpbnQg aW50ZWxfY3J0Y19jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAljb25z dCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqYWRqdXN0ZWRfbW9kZSA9ICZwaXBlX2NvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlOwogCWludCBjbG9ja19saW1pdCA9IGRldl9wcml2LT5tYXhfZG90 Y2xrX2ZyZXE7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA0KSB7CisJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA0KSB7CiAJCWNsb2NrX2xpbWl0ID0gZGV2X3ByaXYtPm1heF9jZGNs a19mcmVxICogOSAvIDEwOwogCiAJCS8qCkBAIC03MjA1LDcgKzcyMDMsNyBAQCBzdGF0aWMgaW50 IGludGVsX2NydGNfY29tcHV0ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJLyog Q2FudGlnYSsgY2Fubm90IGhhbmRsZSBtb2RlcyB3aXRoIGEgaHN5bmMgZnJvbnQgcG9yY2ggb2Yg MC4KIAkgKiBXYVBydW5lTW9kZVdpdGhJbmNvcnJlY3RIc3luY09mZnNldDpjdGcsZWxrLGlsayxz bmIsaXZiLHZsdixoc3cuCiAJICovCi0JaWYgKChJTlRFTF9JTkZPKGRldiktPmdlbiA+IDQgfHwg SVNfRzRYKGRldikpICYmCisJaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpID4gNCB8fCBJU19HNFgo ZGV2X3ByaXYpKSAmJgogCQlhZGp1c3RlZF9tb2RlLT5jcnRjX2hzeW5jX3N0YXJ0ID09IGFkanVz dGVkX21vZGUtPmNydGNfaGRpc3BsYXkpCiAJCXJldHVybiAtRUlOVkFMOwogCkBAIC03NzcwLDEy ICs3NzY4LDExIEBAIHN0YXRpYyB2b2lkIGludGVsX2NwdV90cmFuc2NvZGVyX3NldF9tX24oc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJCSBzdHJ1Y3QgaW50ZWxfbGlua19tX24gKm1fbiwK IAkJCQkJIHN0cnVjdCBpbnRlbF9saW5rX21fbiAqbTJfbjIpCiB7Ci0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYg PSB0b19pOTE1KGNydGMtPmJhc2UuZGV2KTsKIAlpbnQgcGlwZSA9IGNydGMtPnBpcGU7CiAJZW51 bSB0cmFuc2NvZGVyIHRyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwog Ci0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDUpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA1KSB7CiAJCUk5MTVfV1JJVEUoUElQRV9EQVRBX00xKHRyYW5zY29kZXIpLCBUVV9T SVpFKG1fbi0+dHUpIHwgbV9uLT5nbWNoX20pOwogCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMSh0 cmFuc2NvZGVyKSwgbV9uLT5nbWNoX24pOwogCQlJOTE1X1dSSVRFKFBJUEVfTElOS19NMSh0cmFu c2NvZGVyKSwgbV9uLT5saW5rX20pOwpAQCAtNzc4NCw4ICs3NzgxLDkgQEAgc3RhdGljIHZvaWQg aW50ZWxfY3B1X3RyYW5zY29kZXJfc2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJ ICogZm9yIGdlbiA8IDgpIGFuZCBpZiBEUlJTIGlzIHN1cHBvcnRlZCAodG8gbWFrZSBzdXJlIHRo ZQogCQkgKiByZWdpc3RlcnMgYXJlIG5vdCB1bm5lY2Vzc2FyaWx5IGFjY2Vzc2VkKS4KIAkJICov Ci0JCWlmIChtMl9uMiAmJiAoSVNfQ0hFUlJZVklFVyhkZXYpIHx8IElOVEVMX0lORk8oZGV2KS0+ Z2VuIDwgOCkgJiYKLQkJCWNydGMtPmNvbmZpZy0+aGFzX2RycnMpIHsKKwkJaWYgKG0yX24yICYm CisJCSAgICAoSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikgfHwgSU5URUxfR0VOKGRldl9wcml2KSA8 IDgpICYmCisJCSAgICBjcnRjLT5jb25maWctPmhhc19kcnJzKSB7CiAJCQlJOTE1X1dSSVRFKFBJ UEVfREFUQV9NMih0cmFuc2NvZGVyKSwKIAkJCQkJVFVfU0laRShtMl9uMi0+dHUpIHwgbTJfbjIt PmdtY2hfbSk7CiAJCQlJOTE1X1dSSVRFKFBJUEVfREFUQV9OMih0cmFuc2NvZGVyKSwgbTJfbjIt PmdtY2hfbik7CkBAIC04MTcwLDcgKzgxNjgsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NvbXB1dGVf ZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJZHBsbCB8PSBEUExMQl9MVkRTX1AyX0NM T0NLX0RJVl8xNDsKIAkJYnJlYWs7CiAJfQotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0 KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpCiAJCWRwbGwgfD0gKDYgPDwgUExMX0xP QURfUFVMU0VfUEhBU0VfU0hJRlQpOwogCiAJaWYgKGNydGNfc3RhdGUtPnNkdm9fdHZfY2xvY2sp CkBAIC04MTg0LDcgKzgxODIsNyBAQCBzdGF0aWMgdm9pZCBpOXh4X2NvbXB1dGVfZHBsbChzdHJ1 Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAlkcGxsIHw9IERQTExfVkNPX0VOQUJMRTsKIAljcnRjX3N0 YXRlLT5kcGxsX2h3X3N0YXRlLmRwbGwgPSBkcGxsOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+ Z2VuID49IDQpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCXUzMiBkcGxs X21kID0gKGNydGNfc3RhdGUtPnBpeGVsX211bHRpcGxpZXIgLSAxKQogCQkJPDwgRFBMTF9NRF9V RElfTVVMVElQTElFUl9TSElGVDsKIAkJY3J0Y19zdGF0ZS0+ZHBsbF9od19zdGF0ZS5kcGxsX21k ID0gZHBsbF9tZDsKQEAgLTgyNTcsNyArODI1NSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3NldF9w aXBlX3RpbWluZ3Moc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCiAJCQl2c3luY3NoaWZ0 ICs9IGFkanVzdGVkX21vZGUtPmNydGNfaHRvdGFsOwogCX0KIAotCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+IDMpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPiAzKQogCQlJOTE1X1dSSVRF KFZTWU5DU0hJRlQoY3B1X3RyYW5zY29kZXIpLCB2c3luY3NoaWZ0KTsKIAogCUk5MTVfV1JJVEUo SFRPVEFMKGNwdV90cmFuc2NvZGVyKSwKQEAgLTg0MjYsNyArODQyNCw3IEBAIHN0YXRpYyB2b2lk IGk5eHhfc2V0X3BpcGVjb25mKHN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjKQogCX0KIAog CWlmIChpbnRlbF9jcnRjLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5mbGFncyAmIERSTV9N T0RFX0ZMQUdfSU5URVJMQUNFKSB7Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQgfHwK KwkJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0IHx8CiAJCSAgICBpbnRlbF9jcnRjX2hhc190 eXBlKGludGVsX2NydGMtPmNvbmZpZywgSU5URUxfT1VUUFVUX1NEVk8pKQogCQkJcGlwZWNvbmYg fD0gUElQRUNPTkZfSU5URVJMQUNFX1dfRklFTERfSU5ESUNBVElPTjsKIAkJZWxzZQpAQCAtODYz NCw4ICs4NjMyLDcgQEAgc3RhdGljIGludCB2bHZfY3J0Y19jb21wdXRlX2Nsb2NrKHN0cnVjdCBp bnRlbF9jcnRjICpjcnRjLAogc3RhdGljIHZvaWQgaTl4eF9nZXRfcGZpdF9jb25maWcoc3RydWN0 IGludGVsX2NydGMgKmNydGMsCiAJCQkJIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2Nv bmZpZykKIHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXVp bnQzMl90IHRtcDsKIAogCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDw9IDMgJiYKQEAgLTg2NDcs NyArODY0NCw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZ2V0X3BmaXRfY29uZmlnKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQlyZXR1cm47CiAKIAkvKiBDaGVjayB3aGV0aGVyIHRoZSBwZml0IGlz IGF0dGFjaGVkIHRvIG91ciBwaXBlLiAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQp IHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKIAkJaWYgKGNydGMtPnBpcGUgIT0g UElQRV9CKQogCQkJcmV0dXJuOwogCX0gZWxzZSB7CkBAIC04NzExLDcgKzg3MDgsNyBAQCBpOXh4 X2dldF9pbml0aWFsX3BsYW5lX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAogCWZi ID0gJmludGVsX2ZiLT5iYXNlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDQpIHsK KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCWlmICh2YWwgJiBESVNQUExBTkVf VElMRUQpIHsKIAkJCXBsYW5lX2NvbmZpZy0+dGlsaW5nID0gSTkxNV9USUxJTkdfWDsKIAkJCWZi LT5tb2RpZmllclswXSA9IEk5MTVfRk9STUFUX01PRF9YX1RJTEVEOwpAQCAtODcyMyw3ICs4NzIw LDcgQEAgaTl4eF9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNy dGMsCiAJZmItPnBpeGVsX2Zvcm1hdCA9IGZvdXJjYzsKIAlmYi0+Yml0c19wZXJfcGl4ZWwgPSBk cm1fZm9ybWF0X3BsYW5lX2NwcChmb3VyY2MsIDApICogODsKIAotCWlmIChJTlRFTF9JTkZPKGRl diktPmdlbiA+PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNCkgewogCQlpZiAo cGxhbmVfY29uZmlnLT50aWxpbmcpCiAJCQlvZmZzZXQgPSBJOTE1X1JFQUQoRFNQVElMRU9GRihw bGFuZSkpOwogCQllbHNlCkBAIC04ODMxLDcgKzg4MjgsNyBAQCBzdGF0aWMgYm9vbCBpOXh4X2dl dF9waXBlX2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgICAgKHRtcCAmIFBJUEVD T05GX0NPTE9SX1JBTkdFX1NFTEVDVCkpCiAJCXBpcGVfY29uZmlnLT5saW1pdGVkX2NvbG9yX3Jh bmdlID0gdHJ1ZTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDQpCisJaWYgKElOVEVM X0dFTihkZXZfcHJpdikgPCA0KQogCQlwaXBlX2NvbmZpZy0+ZG91YmxlX3dpZGUgPSB0bXAgJiBQ SVBFQ09ORl9ET1VCTEVfV0lERTsKIAogCWludGVsX2dldF9waXBlX3RpbWluZ3MoY3J0YywgcGlw ZV9jb25maWcpOwpAQCAtODgzOSw3ICs4ODM2LDcgQEAgc3RhdGljIGJvb2wgaTl4eF9nZXRfcGlw ZV9jb25maWcoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAKIAlpOXh4X2dldF9wZml0X2NvbmZp ZyhjcnRjLCBwaXBlX2NvbmZpZyk7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkg eworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJLyogTm8gd2F5IHRvIHJlYWQg aXQgb3V0IG9uIHBpcGVzIEIgYW5kIEMgKi8KIAkJaWYgKElTX0NIRVJSWVZJRVcoZGV2KSAmJiBj cnRjLT5waXBlICE9IFBJUEVfQSkKIAkJCXRtcCA9IGRldl9wcml2LT5jaHZfZHBsbF9tZFtjcnRj LT5waXBlXTsKQEAgLTk2MTQsMTEgKzk2MTEsMTAgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3B1X3Ry YW5zY29kZXJfZ2V0X21fbihzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkJIHN0cnVjdCBp bnRlbF9saW5rX21fbiAqbV9uLAogCQkJCQkgc3RydWN0IGludGVsX2xpbmtfbV9uICptMl9uMikK IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCWVudW0gcGlw ZSBwaXBlID0gY3J0Yy0+cGlwZTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA1KSB7 CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNSkgewogCQltX24tPmxpbmtfbSA9IEk5MTVf UkVBRChQSVBFX0xJTktfTTEodHJhbnNjb2RlcikpOwogCQltX24tPmxpbmtfbiA9IEk5MTVfUkVB RChQSVBFX0xJTktfTjEodHJhbnNjb2RlcikpOwogCQltX24tPmdtY2hfbSA9IEk5MTVfUkVBRChQ SVBFX0RBVEFfTTEodHJhbnNjb2RlcikpCkBAIC05NjMwLDcgKzk2MjYsNyBAQCBzdGF0aWMgdm9p ZCBpbnRlbF9jcHVfdHJhbnNjb2Rlcl9nZXRfbV9uKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAog CQkgKiBnZW4gPCA4KSBhbmQgaWYgRFJSUyBpcyBzdXBwb3J0ZWQgKHRvIG1ha2Ugc3VyZSB0aGUK IAkJICogcmVnaXN0ZXJzIGFyZSBub3QgdW5uZWNlc3NhcmlseSByZWFkKS4KIAkJICovCi0JCWlm IChtMl9uMiAmJiBJTlRFTF9JTkZPKGRldiktPmdlbiA8IDggJiYKKwkJaWYgKG0yX24yICYmIElO VEVMX0dFTihkZXZfcHJpdikgPCA4ICYmCiAJCQljcnRjLT5jb25maWctPmhhc19kcnJzKSB7CiAJ CQltMl9uMi0+bGlua19tID0gSTkxNV9SRUFEKFBJUEVfTElOS19NMih0cmFuc2NvZGVyKSk7CiAJ CQltMl9uMi0+bGlua19uID0JSTkxNV9SRUFEKFBJUEVfTElOS19OMih0cmFuc2NvZGVyKSk7CkBA IC05ODMyLDcgKzk4MjgsNyBAQCBpcm9ubGFrZV9nZXRfaW5pdGlhbF9wbGFuZV9jb25maWcoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAKIAlmYiA9ICZpbnRlbF9mYi0+YmFzZTsKIAotCWlmIChJ TlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g NCkgewogCQlpZiAodmFsICYgRElTUFBMQU5FX1RJTEVEKSB7CiAJCQlwbGFuZV9jb25maWctPnRp bGluZyA9IEk5MTVfVElMSU5HX1g7CiAJCQlmYi0+bW9kaWZpZXJbMF0gPSBJOTE1X0ZPUk1BVF9N T0RfWF9USUxFRDsKQEAgLTEwNjUwLDcgKzEwNjQ2LDcgQEAgc3RhdGljIHZvaWQgaGFzd2VsbF9n ZXRfZGRpX3BvcnRfc3RhdGUoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJICogRERJIEUuIFNv IGp1c3QgY2hlY2sgd2hldGhlciB0aGlzIHBpcGUgaXMgd2lyZWQgdG8gRERJIEUgYW5kIHdoZXRo ZXIKIAkgKiB0aGUgUENIIHRyYW5zY29kZXIgaXMgb24uCiAJICovCi0JaWYgKElOVEVMX0lORk8o ZGV2KS0+Z2VuIDwgOSAmJgorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOSAmJgogCSAgICAo cG9ydCA9PSBQT1JUX0UpICYmIEk5MTVfUkVBRChMUFRfVFJBTlNDT05GKSAmIFRSQU5TX0VOQUJM RSkgewogCQlwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyID0gdHJ1ZTsKIApAQCAtMTA2OTks MTEgKzEwNjk1LDExIEBAIHN0YXRpYyBib29sIGhhc3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVj dCBpbnRlbF9jcnRjICpjcnRjLAogCXBpcGVfY29uZmlnLT5nYW1tYV9tb2RlID0KIAkJSTkxNV9S RUFEKEdBTU1BX01PREUoY3J0Yy0+cGlwZSkpICYgR0FNTUFfTU9ERV9NT0RFX01BU0s7CiAKLQlp ZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYp ID49IDkpIHsKIAkJc2tsX2luaXRfc2NhbGVycyhkZXYsIGNydGMsIHBpcGVfY29uZmlnKTsKIAl9 CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkgeworCWlmIChJTlRFTF9HRU4oZGV2 X3ByaXYpID49IDkpIHsKIAkJcGlwZV9jb25maWctPnNjYWxlcl9zdGF0ZS5zY2FsZXJfaWQgPSAt MTsKIAkJcGlwZV9jb25maWctPnNjYWxlcl9zdGF0ZS5zY2FsZXJfdXNlcnMgJj0gfigxIDw8IFNL TF9DUlRDX0lOREVYKTsKIAl9CkBAIC0xMDcxMSw3ICsxMDcwNyw3IEBAIHN0YXRpYyBib29sIGhh c3dlbGxfZ2V0X3BpcGVfY29uZmlnKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLAogCXBvd2VyX2Rv bWFpbiA9IFBPV0VSX0RPTUFJTl9QSVBFX1BBTkVMX0ZJVFRFUihjcnRjLT5waXBlKTsKIAlpZiAo aW50ZWxfZGlzcGxheV9wb3dlcl9nZXRfaWZfZW5hYmxlZChkZXZfcHJpdiwgcG93ZXJfZG9tYWlu KSkgewogCQlwb3dlcl9kb21haW5fbWFzayB8PSBCSVQocG93ZXJfZG9tYWluKTsKLQkJaWYgKElO VEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCisJCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkp CiAJCQlza3lsYWtlX2dldF9wZml0X2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7CiAJCWVsc2UK IAkJCWlyb25sYWtlX2dldF9wZml0X2NvbmZpZyhjcnRjLCBwaXBlX2NvbmZpZyk7CkBAIC0xMTU0 OCw4ICsxMTU0NCw3IEBAIHN0YXRpYyBib29sIGc0eF9mbGlwX2NvdW50X2FmdGVyX2VxKHUzMiBh LCB1MzIgYikKIHN0YXRpYyBib29sIF9fcGFnZWZsaXBfZmluaXNoZWRfY3Moc3RydWN0IGludGVs X2NydGMgKmNydGMsCiAJCQkJICAgc3RydWN0IGludGVsX2ZsaXBfd29yayAqd29yaykKIHsKLQlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1 X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOworCXN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXVuc2lnbmVkIHJlc2V0 X2NvdW50ZXI7CiAKIAlyZXNldF9jb3VudGVyID0gaTkxNV9yZXNldF9jb3VudGVyKCZkZXZfcHJp di0+Z3B1X2Vycm9yKTsKQEAgLTExNTYzLDcgKzExNTU4LDcgQEAgc3RhdGljIGJvb2wgX19wYWdl ZmxpcF9maW5pc2hlZF9jcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkgKiByZWFsbHkgbmVl ZGVkIHRoZXJlLiBCdXQgc2luY2UgY3RnIGhhcyB0aGUgcmVnaXN0ZXJzLAogCSAqIGluY2x1ZGUg aXQgaW4gdGhlIGNoZWNrIGFueXdheS4KIAkgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA1ICYmICFJU19HNFgoZGV2KSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDUgJiYgIUlT X0c0WChkZXZfcHJpdikpCiAJCXJldHVybiB0cnVlOwogCiAJLyoKQEAgLTEyMTYyLDcgKzEyMTU3 LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3BhZ2VfZmxpcChzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJICogVElMRU9GRi9MSU5PRkYgcmVnaXN0ZXJzIGNhbid0IGJlIGNoYW5nZWQgdmlhIE1J IGRpc3BsYXkgZmxpcHMuCiAJICogTm90ZSB0aGF0IHBpdGNoIGNoYW5nZXMgY291bGQgYWxzbyBh ZmZlY3QgdGhlc2UgcmVnaXN0ZXIuCiAJICovCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID4g MyAmJgorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID4gMyAmJgogCSAgICAoZmItPm9mZnNldHNb MF0gIT0gY3J0Yy0+cHJpbWFyeS0+ZmItPm9mZnNldHNbMF0gfHwKIAkgICAgIGZiLT5waXRjaGVz WzBdICE9IGNydGMtPnByaW1hcnktPmZiLT5waXRjaGVzWzBdKSkKIAkJcmV0dXJuIC1FSU5WQUw7 CkBAIC0xMjIyNyw3ICsxMjIyMiw3IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19wYWdlX2ZsaXAo c3RydWN0IGRybV9jcnRjICpjcnRjLAogCiAJYXRvbWljX2luYygmaW50ZWxfY3J0Yy0+dW5waW5f d29ya19jb3VudCk7CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSB8fCBJU19HNFgo ZGV2KSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA1IHx8IElTX0c0WChkZXZfcHJpdikp CiAJCXdvcmstPmZsaXBfY291bnQgPSBJOTE1X1JFQUQoUElQRV9GTElQQ09VTlRfRzRYKHBpcGUp KSArIDE7CiAKIAlpZiAoSVNfVkFMTEVZVklFVyhkZXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2KSkg ewpAQCAtMTIyMzcsNyArMTIyMzIsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfcGFnZV9mbGlw KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCWVuZ2luZSA9IE5VTEw7CiAJfSBlbHNlIGlmIChJ U19JVllCUklER0UoZGV2KSB8fCBJU19IQVNXRUxMKGRldikpIHsKIAkJZW5naW5lID0gJmRldl9w cml2LT5lbmdpbmVbQkNTXTsKLQl9IGVsc2UgaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDcp IHsKKwl9IGVsc2UgaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0gNykgewogCQllbmdpbmUgPSBp OTE1X2dlbV9hY3RpdmVfZ2V0X2VuZ2luZSgmb2JqLT5sYXN0X3dyaXRlLAogCQkJCQkJICAgICZv YmotPmJhc2UuZGV2LT5zdHJ1Y3RfbXV0ZXgpOwogCQlpZiAoZW5naW5lID09IE5VTEwgfHwgZW5n aW5lLT5pZCAhPSBSQ1MpCkBAIC0xMjQ5OSw3ICsxMjQ5NCw3IEBAIGludCBpbnRlbF9wbGFuZV9h dG9taWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKIAog CS8qIFByZS1nZW45IHBsYXRmb3JtcyBuZWVkIHR3by1zdGVwIHdhdGVybWFyayB1cGRhdGVzICov CiAJaWYgKChwaXBlX2NvbmZpZy0+dXBkYXRlX3dtX3ByZSB8fCBwaXBlX2NvbmZpZy0+dXBkYXRl X3dtX3Bvc3QpICYmCi0JICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSAmJiBkZXZfcHJpdi0+ ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKQorCSAgICBJTlRFTF9HRU4oZGV2X3ByaXYpIDwg OSAmJiBkZXZfcHJpdi0+ZGlzcGxheS5vcHRpbWl6ZV93YXRlcm1hcmtzKQogCQl0b19pbnRlbF9j cnRjX3N0YXRlKGNydGNfc3RhdGUpLT53bS5uZWVkX3Bvc3R2YmxfdXBkYXRlID0gdHJ1ZTsKIAog CWlmICh2aXNpYmxlIHx8IHdhc192aXNpYmxlKQpAQCAtMTI2MTYsNyArMTI2MTEsNyBAQCBzdGF0 aWMgaW50IGludGVsX2NydGNfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJ CXBpcGVfY29uZmlnLT53bS5pbGsuaW50ZXJtZWRpYXRlID0gcGlwZV9jb25maWctPndtLmlsay5v cHRpbWFsOwogCX0KIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewogCQlpZiAobW9kZV9jaGFuZ2VkKQogCQkJcmV0ID0g c2tsX3VwZGF0ZV9zY2FsZXJfY3J0YyhwaXBlX2NvbmZpZyk7CiAKQEAgLTEyNjg3LDE1ICsxMjY4 MiwxNiBAQCBzdGF0aWMgaW50CiBjb21wdXRlX2Jhc2VsaW5lX3BpcGVfYnBwKHN0cnVjdCBpbnRl bF9jcnRjICpjcnRjLAogCQkJICBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcp CiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OworCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoY3J0Yy0+YmFzZS5kZXYpOwogCXN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKIAlzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yOwogCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3RhdGU7CiAJ aW50IGJwcCwgaTsKIAotCWlmICgoSVNfRzRYKGRldikgfHwgSVNfVkFMTEVZVklFVyhkZXYpIHx8 IElTX0NIRVJSWVZJRVcoZGV2KSkpCisJaWYgKElTX0c0WChkZXZfcHJpdikgfHwKKwkgICAgSVNf VkFMTEVZVklFVyhkZXZfcHJpdikgfHwgSVNfQ0hFUlJZVklFVyhkZXZfcHJpdikpCiAJCWJwcCA9 IDEwKjM7Ci0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkKKwllbHNlIGlmIChJ TlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCiAJCWJwcCA9IDEyKjM7CiAJZWxzZQogCQlicHAgPSA4 KjM7CkBAIC0xMzE4NSw2ICsxMzE4MSw3IEBAIGludGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCSAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVf Y29uZmlnLAogCQkJICBib29sIGFkanVzdCkKIHsKKwlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAq ZGV2X3ByaXYgPSB0b19pOTE1KGRldik7CiAJYm9vbCByZXQgPSB0cnVlOwogCiAjZGVmaW5lIElO VEVMX0VSUl9PUl9EQkdfS01TKGZtdCwgLi4uKSBcCkBAIC0xMzMwNCw3ICsxMzMwMSw3IEBAIGlu dGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlQSVBFX0NP TkZfQ0hFQ0tfSShsYW5lX2NvdW50KTsKIAlQSVBFX0NPTkZfQ0hFQ0tfWChsYW5lX2xhdF9vcHRp bV9tYXNrKTsKIAotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDgpIHsKKwlpZiAoSU5URUxf R0VOKGRldl9wcml2KSA8IDgpIHsKIAkJUElQRV9DT05GX0NIRUNLX01fTihkcF9tX24pOwogCiAJ CWlmIChjdXJyZW50X2NvbmZpZy0+aGFzX2RycnMpCkBAIC0xMzMzMCw4ICsxMzMyNyw4IEBAIGlu dGVsX3BpcGVfY29uZmlnX2NvbXBhcmUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAogCVBJUEVf Q09ORl9DSEVDS19JKHBpeGVsX211bHRpcGxpZXIpOwogCVBJUEVfQ09ORl9DSEVDS19JKGhhc19o ZG1pX3NpbmspOwotCWlmICgoSU5URUxfSU5GTyhkZXYpLT5nZW4gPCA4ICYmICFJU19IQVNXRUxM KGRldikpIHx8Ci0JICAgIElTX1ZBTExFWVZJRVcoZGV2KSB8fCBJU19DSEVSUllWSUVXKGRldikp CisJaWYgKChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgOCAmJiAhSVNfSEFTV0VMTChkZXZfcHJpdikp IHx8CisJICAgIElTX1ZBTExFWVZJRVcoZGV2X3ByaXYpIHx8IElTX0NIRVJSWVZJRVcoZGV2X3By aXYpKQogCQlQSVBFX0NPTkZfQ0hFQ0tfSShsaW1pdGVkX2NvbG9yX3JhbmdlKTsKIAlQSVBFX0NP TkZfQ0hFQ0tfSShoYXNfaW5mb2ZyYW1lKTsKIApAQCAtMTMzNTMsNyArMTMzNTAsNyBAQCBpbnRl bF9waXBlX2NvbmZpZ19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlQSVBFX0NP TkZfQ0hFQ0tfWChnbWNoX3BmaXQuY29udHJvbCk7CiAJLyogcGZpdCByYXRpb3MgYXJlIGF1dG9j b21wdXRlZCBieSB0aGUgaHcgb24gZ2VuNCsgKi8KLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g PCA0KQorCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkKIAkJUElQRV9DT05GX0NIRUNLX1go Z21jaF9wZml0LnBnbV9yYXRpb3MpOwogCVBJUEVfQ09ORl9DSEVDS19YKGdtY2hfcGZpdC5sdmRz X2JvcmRlcl9iaXRzKTsKIApAQCAtMTMzOTIsNyArMTMzODksNyBAQCBpbnRlbF9waXBlX2NvbmZp Z19jb21wYXJlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJUElQRV9DT05GX0NIRUNLX1goZHNp X3BsbC5jdHJsKTsKIAlQSVBFX0NPTkZfQ0hFQ0tfWChkc2lfcGxsLmRpdik7CiAKLQlpZiAoSVNf RzRYKGRldikgfHwgSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNSkKKwlpZiAoSVNfRzRYKGRldl9w cml2KSB8fCBJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUpCiAJCVBJUEVfQ09ORl9DSEVDS19JKHBp cGVfYnBwKTsKIAogCVBJUEVfQ09ORl9DSEVDS19DTE9DS19GVVpaWShiYXNlLmFkanVzdGVkX21v ZGUuY3J0Y19jbG9jayk7CkBAIC0xMzQzMCwxNSArMTM0MjcsMTQgQEAgc3RhdGljIHZvaWQgaW50 ZWxfcGlwZV9jb25maWdfc2FuaXR5X2NoZWNrKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiwKIHN0YXRpYyB2b2lkIHZlcmlmeV93bV9zdGF0ZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAJCQkgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpuZXdfc3RhdGUpCiB7Ci0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2 X3ByaXYgPSB0b19pOTE1KGRldik7CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5kZXYpOwogCXN0cnVjdCBza2xfZGRiX2FsbG9jYXRpb24gaHdfZGRi LCAqc3dfZGRiOwogCXN0cnVjdCBza2xfZGRiX2VudHJ5ICpod19lbnRyeSwgKnN3X2VudHJ5Owog CXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKIAlj b25zdCBlbnVtIHBpcGUgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJaW50IHBsYW5lOwogCi0J aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgOSB8fCAhbmV3X3N0YXRlLT5hY3RpdmUpCisJaWYg KElOVEVMX0dFTihkZXZfcHJpdikgPCA5IHx8ICFuZXdfc3RhdGUtPmFjdGl2ZSkKIAkJcmV0dXJu OwogCiAJc2tsX2RkYl9nZXRfaHdfc3RhdGUoZGV2X3ByaXYsICZod19kZGIpOwpAQCAtMTQ4OTIs NiArMTQ4ODgsNyBAQCBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2Z1bmNzIGludGVsX3BsYW5lX2Z1 bmNzID0gewogc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3Jl YXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJCQkgICAgaW50IHBpcGUpCiB7CisJc3Ry dWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCXN0cnVjdCBp bnRlbF9wbGFuZSAqcHJpbWFyeSA9IE5VTEw7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0YXRlICpz dGF0ZSA9IE5VTEw7CiAJY29uc3QgdWludDMyX3QgKmludGVsX3ByaW1hcnlfZm9ybWF0czsKQEAg LTE0OTA5LDcgKzE0OTA2LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1h cnlfcGxhbmVfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAKIAlwcmltYXJ5LT5jYW5f c2NhbGUgPSBmYWxzZTsKIAlwcmltYXJ5LT5tYXhfZG93bnNjYWxlID0gMTsKLQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gOSkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDkpIHsK IAkJcHJpbWFyeS0+Y2FuX3NjYWxlID0gdHJ1ZTsKIAkJc3RhdGUtPnNjYWxlcl9pZCA9IC0xOwog CX0KQEAgLTE0OTE3LDEwICsxNDkxNCwxMCBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50 ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlwcmltYXJ5 LT5wbGFuZSA9IHBpcGU7CiAJcHJpbWFyeS0+ZnJvbnRidWZmZXJfYml0ID0gSU5URUxfRlJPTlRC VUZGRVJfUFJJTUFSWShwaXBlKTsKIAlwcmltYXJ5LT5jaGVja19wbGFuZSA9IGludGVsX2NoZWNr X3ByaW1hcnlfcGxhbmU7Ci0JaWYgKEhBU19GQkMoZGV2KSAmJiBJTlRFTF9JTkZPKGRldiktPmdl biA8IDQpCisJaWYgKEhBU19GQkMoZGV2X3ByaXYpICYmIElOVEVMX0dFTihkZXZfcHJpdikgPCA0 KQogCQlwcmltYXJ5LT5wbGFuZSA9ICFwaXBlOwogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49IDkpIHsKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KSB7CiAJCWludGVsX3ByaW1h cnlfZm9ybWF0cyA9IHNrbF9wcmltYXJ5X2Zvcm1hdHM7CiAJCW51bV9mb3JtYXRzID0gQVJSQVlf U0laRShza2xfcHJpbWFyeV9mb3JtYXRzKTsKIApAQCAtMTQ5MzIsNyArMTQ5MjksNyBAQCBzdGF0 aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFuZV9jcmVhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAogCQlwcmltYXJ5LT51cGRhdGVfcGxhbmUgPSBpcm9ubGFrZV91cGRh dGVfcHJpbWFyeV9wbGFuZTsKIAkJcHJpbWFyeS0+ZGlzYWJsZV9wbGFuZSA9IGk5eHhfZGlzYWJs ZV9wcmltYXJ5X3BsYW5lOwotCX0gZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkg eworCX0gZWxzZSBpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7CiAJCWludGVsX3ByaW1h cnlfZm9ybWF0cyA9IGk5NjVfcHJpbWFyeV9mb3JtYXRzOwogCQludW1fZm9ybWF0cyA9IEFSUkFZ X1NJWkUoaTk2NV9wcmltYXJ5X2Zvcm1hdHMpOwogCkBAIC0xNDk0NiwxMyArMTQ5NDMsMTMgQEAg c3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX3ByaW1hcnlfcGxhbmVfY3JlYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsCiAJCXByaW1hcnktPmRpc2FibGVfcGxhbmUgPSBpOXh4X2Rpc2Fi bGVfcHJpbWFyeV9wbGFuZTsKIAl9CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gOSkK KwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlyZXQgPSBkcm1fdW5pdmVyc2FsX3Bs YW5lX2luaXQoZGV2LCAmcHJpbWFyeS0+YmFzZSwgMCwKIAkJCQkJICAgICAgICZpbnRlbF9wbGFu ZV9mdW5jcywKIAkJCQkJICAgICAgIGludGVsX3ByaW1hcnlfZm9ybWF0cywgbnVtX2Zvcm1hdHMs CiAJCQkJCSAgICAgICBEUk1fUExBTkVfVFlQRV9QUklNQVJZLAogCQkJCQkgICAgICAgInBsYW5l IDElYyIsIHBpcGVfbmFtZShwaXBlKSk7Ci0JZWxzZSBpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4g Pj0gNSB8fCBJU19HNFgoZGV2KSkKKwllbHNlIGlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDUg fHwgSVNfRzRYKGRldl9wcml2KSkKIAkJcmV0ID0gZHJtX3VuaXZlcnNhbF9wbGFuZV9pbml0KGRl diwgJnByaW1hcnktPmJhc2UsIDAsCiAJCQkJCSAgICAgICAmaW50ZWxfcGxhbmVfZnVuY3MsCiAJ CQkJCSAgICAgICBpbnRlbF9wcmltYXJ5X2Zvcm1hdHMsIG51bV9mb3JtYXRzLApAQCAtMTQ5Njcs NyArMTQ5NjQsNyBAQCBzdGF0aWMgc3RydWN0IGRybV9wbGFuZSAqaW50ZWxfcHJpbWFyeV9wbGFu ZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7 CiAKLQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPj0gNCkKKwlpZiAoSU5URUxfR0VOKGRldl9w cml2KSA+PSA0KQogCQlpbnRlbF9jcmVhdGVfcm90YXRpb25fcHJvcGVydHkoZGV2LCBwcmltYXJ5 KTsKIAogCWRybV9wbGFuZV9oZWxwZXJfYWRkKCZwcmltYXJ5LT5iYXNlLCAmaW50ZWxfcGxhbmVf aGVscGVyX2Z1bmNzKTsKQEAgLTE0OTgzLDExICsxNDk4MCwxMyBAQCBmYWlsOgogCiB2b2lkIGlu dGVsX2NyZWF0ZV9yb3RhdGlvbl9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzdHJ1 Y3QgaW50ZWxfcGxhbmUgKnBsYW5lKQogeworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZf cHJpdiA9IHRvX2k5MTUoZGV2KTsKKwogCWlmICghZGV2LT5tb2RlX2NvbmZpZy5yb3RhdGlvbl9w cm9wZXJ0eSkgewogCQl1bnNpZ25lZCBsb25nIGZsYWdzID0gRFJNX1JPVEFURV8wIHwKIAkJCURS TV9ST1RBVEVfMTgwOwogCi0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KQorCQlpZiAo SU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQkJZmxhZ3MgfD0gRFJNX1JPVEFURV85MCB8IERS TV9ST1RBVEVfMjcwOwogCiAJCWRldi0+bW9kZV9jb25maWcucm90YXRpb25fcHJvcGVydHkgPQpA QCAtMTUwOTQsNiArMTUwOTMsNyBAQCBpbnRlbF91cGRhdGVfY3Vyc29yX3BsYW5lKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLAogc3RhdGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNvcl9w bGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkJCSAgIGludCBwaXBlKQog eworCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IHRvX2k5MTUoZGV2KTsKIAlz dHJ1Y3QgaW50ZWxfcGxhbmUgKmN1cnNvciA9IE5VTEw7CiAJc3RydWN0IGludGVsX3BsYW5lX3N0 YXRlICpzdGF0ZSA9IE5VTEw7CiAJaW50IHJldDsKQEAgLTE1MTI1LDcgKzE1MTI1LDcgQEAgc3Rh dGljIHN0cnVjdCBkcm1fcGxhbmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPj0gNCkgeworCWlmIChJTlRFTF9HRU4oZGV2X3ByaXYpID49IDQpIHsKIAkJ aWYgKCFkZXYtPm1vZGVfY29uZmlnLnJvdGF0aW9uX3Byb3BlcnR5KQogCQkJZGV2LT5tb2RlX2Nv bmZpZy5yb3RhdGlvbl9wcm9wZXJ0eSA9CiAJCQkJZHJtX21vZGVfY3JlYXRlX3JvdGF0aW9uX3By b3BlcnR5KGRldiwKQEAgLTE1MTM3LDcgKzE1MTM3LDcgQEAgc3RhdGljIHN0cnVjdCBkcm1fcGxh bmUgKmludGVsX2N1cnNvcl9wbGFuZV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJ CQlzdGF0ZS0+YmFzZS5yb3RhdGlvbik7CiAJfQogCi0JaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID49OSkKKwlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA5KQogCQlzdGF0ZS0+c2NhbGVyX2lk ID0gLTE7CiAKIAlkcm1fcGxhbmVfaGVscGVyX2FkZCgmY3Vyc29yLT5iYXNlLCAmaW50ZWxfcGxh bmVfaGVscGVyX2Z1bmNzKTsKQEAgLTE1MTg4LDcgKzE1MTg4LDcgQEAgc3RhdGljIHZvaWQgaW50 ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBwaXBlKQogCWNydGNfc3Rh dGUtPmJhc2UuY3J0YyA9ICZpbnRlbF9jcnRjLT5iYXNlOwogCiAJLyogaW5pdGlhbGl6ZSBzaGFy ZWQgc2NhbGVycyAqLwotCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA5KSB7CisJaWYgKElO VEVMX0dFTihkZXZfcHJpdikgPj0gOSkgewogCQlpZiAocGlwZSA9PSBQSVBFX0MpCiAJCQlpbnRl bF9jcnRjLT5udW1fc2NhbGVycyA9IDE7CiAJCWVsc2UKQEAgLTE1MjE3LDcgKzE1MjE3LDcgQEAg c3RhdGljIHZvaWQgaW50ZWxfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIGludCBw aXBlKQogCSAqLwogCWludGVsX2NydGMtPnBpcGUgPSBwaXBlOwogCWludGVsX2NydGMtPnBsYW5l ID0gcGlwZTsKLQlpZiAoSEFTX0ZCQyhkZXYpICYmIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkg eworCWlmIChIQVNfRkJDKGRldl9wcml2KSAmJiBJTlRFTF9HRU4oZGV2X3ByaXYpIDwgNCkgewog CQlEUk1fREVCVUdfS01TKCJzd2FwcGluZyBwaXBlcyAmIHBsYW5lcyBmb3IgRkJDXG4iKTsKIAkJ aW50ZWxfY3J0Yy0+cGxhbmUgPSAhcGlwZTsKIAl9CkBAIC0xNTMxNCw3ICsxNTMxNCw3IEBAIHN0 YXRpYyBib29sIGludGVsX2NydF9wcmVzZW50KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCiB7CiAJ c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwogCi0JaWYg KElOVEVMX0lORk8oZGV2KS0+Z2VuID49IDkpCisJaWYgKElOVEVMX0dFTihkZXZfcHJpdikgPj0g OSkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKElTX0hTV19VTFQoZGV2KSB8fCBJU19CRFdfVUxU KGRldikpCkBAIC0xNTYxNCw3ICsxNTYxNCw4IEBAIHN0YXRpYwogdTMyIGludGVsX2ZiX3BpdGNo X2xpbWl0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHVpbnQ2NF90IGZiX21vZGlmaWVyLAogCQkJ IHVpbnQzMl90IHBpeGVsX2Zvcm1hdCkKIHsKLQl1MzIgZ2VuID0gSU5URUxfSU5GTyhkZXYpLT5n ZW47CisJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwor CXUzMiBnZW4gPSBJTlRFTF9HRU4oZGV2X3ByaXYpOwogCiAJaWYgKGdlbiA+PSA5KSB7CiAJCWlu dCBjcHAgPSBkcm1fZm9ybWF0X3BsYW5lX2NwcChwaXhlbF9mb3JtYXQsIDApOwpAQCAtMTU2Nzcs NyArMTU2NzgsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwKIAlzd2l0Y2ggKG1vZGVfY21kLT5tb2RpZmllclswXSkgewogCWNhc2Ug STkxNV9GT1JNQVRfTU9EX1lfVElMRUQ6CiAJY2FzZSBJOTE1X0ZPUk1BVF9NT0RfWWZfVElMRUQ6 Ci0JCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA8IDkpIHsKKwkJaWYgKElOVEVMX0dFTihkZXZf cHJpdikgPCA5KSB7CiAJCQlEUk1fREVCVUcoIlVuc3VwcG9ydGVkIHRpbGluZyAweCVsbHghXG4i LAogCQkJCSAgbW9kZV9jbWQtPm1vZGlmaWVyWzBdKTsKIAkJCXJldHVybiAtRUlOVkFMOwpAQCAt MTU3NDAsNyArMTU3NDEsNyBAQCBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAljYXNlIERSTV9GT1JNQVRfQVJHQjg4ODg6CiAJCWJyZWFr OwogCWNhc2UgRFJNX0ZPUk1BVF9YUkdCMTU1NToKLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2Vu ID4gMykgeworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+IDMpIHsKIAkJCWZvcm1hdF9uYW1l ID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKIAkJCURSTV9E RUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25hbWUpOwogCQkJ a2ZyZWUoZm9ybWF0X25hbWUpOwpAQCAtMTU3NDgsOCArMTU3NDksOCBAQCBzdGF0aWMgaW50IGlu dGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJfQogCQlicmVh azsKIAljYXNlIERSTV9GT1JNQVRfQUJHUjg4ODg6Ci0JCWlmICghSVNfVkFMTEVZVklFVyhkZXYp ICYmICFJU19DSEVSUllWSUVXKGRldikgJiYKLQkJICAgIElOVEVMX0lORk8oZGV2KS0+Z2VuIDwg OSkgeworCQlpZiAoIUlTX1ZBTExFWVZJRVcoZGV2X3ByaXYpICYmICFJU19DSEVSUllWSUVXKGRl dl9wcml2KSAmJgorCQkgICAgSU5URUxfR0VOKGRldl9wcml2KSA8IDkpIHsKIAkJCWZvcm1hdF9u YW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKIAkJCURS TV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25hbWUpOwog CQkJa2ZyZWUoZm9ybWF0X25hbWUpOwpAQCAtMTU3NTksNyArMTU3NjAsNyBAQCBzdGF0aWMgaW50 IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAljYXNlIERS TV9GT1JNQVRfWEJHUjg4ODg6CiAJY2FzZSBEUk1fRk9STUFUX1hSR0IyMTAxMDEwOgogCWNhc2Ug RFJNX0ZPUk1BVF9YQkdSMjEwMTAxMDoKLQkJaWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNCkg eworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8IDQpIHsKIAkJCWZvcm1hdF9uYW1lID0gZHJt X2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+cGl4ZWxfZm9ybWF0KTsKIAkJCURSTV9ERUJVRygi dW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAlc1xuIiwgZm9ybWF0X25hbWUpOwogCQkJa2ZyZWUo Zm9ybWF0X25hbWUpOwpAQCAtMTU3NzgsNyArMTU3NzksNyBAQCBzdGF0aWMgaW50IGludGVsX2Zy YW1lYnVmZmVyX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAljYXNlIERSTV9GT1JNQVRf VVlWWToKIAljYXNlIERSTV9GT1JNQVRfWVZZVToKIAljYXNlIERSTV9GT1JNQVRfVllVWToKLQkJ aWYgKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSkgeworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2 KSA8IDUpIHsKIAkJCWZvcm1hdF9uYW1lID0gZHJtX2dldF9mb3JtYXRfbmFtZShtb2RlX2NtZC0+ cGl4ZWxfZm9ybWF0KTsKIAkJCURSTV9ERUJVRygidW5zdXBwb3J0ZWQgcGl4ZWwgZm9ybWF0OiAl c1xuIiwgZm9ybWF0X25hbWUpOwogCQkJa2ZyZWUoZm9ybWF0X25hbWUpOwpAQCAtMTY1NjAsNyAr MTY1NjEsNyBAQCBzdGF0aWMgdm9pZCBpbnRlbF9zYW5pdGl6ZV9jcnRjKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogCS8qIFdlIG5lZWQgdG8gc2FuaXRpemUgdGhlIHBsYW5lIC0+IHBpcGUgbWFw cGluZyBmaXJzdCBiZWNhdXNlIHRoaXMgd2lsbAogCSAqIGRpc2FibGUgdGhlIGNydGMgKGFuZCBo ZW5jZSBjaGFuZ2UgdGhlIHN0YXRlKSBpZiBpdCBpcyB3cm9uZy4gTm90ZQogCSAqIHRoYXQgZ2Vu NCsgaGFzIGEgZml4ZWQgcGxhbmUgLT4gcGlwZSBtYXBwaW5nLiAgKi8KLQlpZiAoSU5URUxfSU5G TyhkZXYpLT5nZW4gPCA0ICYmICFpbnRlbF9jaGVja19wbGFuZV9tYXBwaW5nKGNydGMpKSB7CisJ aWYgKElOVEVMX0dFTihkZXZfcHJpdikgPCA0ICYmICFpbnRlbF9jaGVja19wbGFuZV9tYXBwaW5n KGNydGMpKSB7CiAJCWJvb2wgcGxhbmU7CiAKIAkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWQ6JXNd IHdyb25nIHBsYW5lIGNvbm5lY3Rpb24gZGV0ZWN0ZWQhXG4iLApAQCAtMTcwNzUsNyArMTcwNzYs OCBAQCB2b2lkIGludGVsX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2RlcihzdHJ1Y3QgaW50ZWxfY29u bmVjdG9yICpjb25uZWN0b3IsCiBpbnQgaW50ZWxfbW9kZXNldF92Z2Ffc2V0X3N0YXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgc3RhdGUpCiB7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gdG9faTkxNShkZXYpOwotCXVuc2lnbmVkIHJlZyA9IElOVEVMX0lORk8o ZGV2KS0+Z2VuID49IDYgPyBTTkJfR01DSF9DVFJMIDogSU5URUxfR01DSF9DVFJMOworCXVuc2ln bmVkIHJlZyA9IElOVEVMX0dFTihkZXZfcHJpdikgPj0gNiA/IFNOQl9HTUNIX0NUUkwgOgorCQkJ CQkJICBJTlRFTF9HTUNIX0NUUkw7CiAJdTE2IGdtY2hfY3RybDsKIAogCWlmIChwY2lfcmVhZF9j b25maWdfd29yZChkZXZfcHJpdi0+YnJpZGdlX2RldiwgcmVnLCAmZ21jaF9jdHJsKSkgewpAQCAt MTcyNTAsMTMgKzE3MjUyLDEzIEBAIGludGVsX2Rpc3BsYXlfcHJpbnRfZXJyb3Jfc3RhdGUoc3Ry dWN0IGRybV9pOTE1X2Vycm9yX3N0YXRlX2J1ZiAqbSwKIAkJZXJyX3ByaW50ZihtLCAiUGxhbmUg WyVkXTpcbiIsIGkpOwogCQllcnJfcHJpbnRmKG0sICIgIENOVFI6ICUwOHhcbiIsIGVycm9yLT5w bGFuZVtpXS5jb250cm9sKTsKIAkJZXJyX3ByaW50ZihtLCAiICBTVFJJREU6ICUwOHhcbiIsIGVy cm9yLT5wbGFuZVtpXS5zdHJpZGUpOwotCQlpZiAoSU5URUxfSU5GTyhkZXYpLT5nZW4gPD0gMykg eworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA8PSAzKSB7CiAJCQllcnJfcHJpbnRmKG0sICIg IFNJWkU6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zaXplKTsKIAkJCWVycl9wcmludGYobSwg IiAgUE9TOiAlMDh4XG4iLCBlcnJvci0+cGxhbmVbaV0ucG9zKTsKIAkJfQotCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPD0gNyAmJiAhSVNfSEFTV0VMTChkZXYpKQorCQlpZiAoSU5URUxfR0VO KGRldl9wcml2KSA8PSA3ICYmICFJU19IQVNXRUxMKGRldl9wcml2KSkKIAkJCWVycl9wcmludGYo bSwgIiAgQUREUjogJTA4eFxuIiwgZXJyb3ItPnBsYW5lW2ldLmFkZHIpOwotCQlpZiAoSU5URUxf SU5GTyhkZXYpLT5nZW4gPj0gNCkgeworCQlpZiAoSU5URUxfR0VOKGRldl9wcml2KSA+PSA0KSB7 CiAJCQllcnJfcHJpbnRmKG0sICIgIFNVUkY6ICUwOHhcbiIsIGVycm9yLT5wbGFuZVtpXS5zdXJm YWNlKTsKIAkJCWVycl9wcmludGYobSwgIiAgVElMRU9GRjogJTA4eFxuIiwgZXJyb3ItPnBsYW5l W2ldLnRpbGVfb2Zmc2V0KTsKIAkJfQotLSAKMi45LjMKCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4 QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWls bWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=