From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: [PATCH 34/42] drm/i915: get rid of crtc->config in intel_display.c, part 1 Date: Mon, 11 May 2015 16:25:10 +0200 Message-ID: <1431354318-11995-35-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 7EAD16E3F7 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 UmVtb3ZlZCBzb21lIG9jY3VyZW5jZXMsIHJvdWdobHkgYmFzZWQgb24gd2hlcmUgdGhlIGVycm9y cyBvZgpyZW1vdmluZyBjcnRjLT5jb25maWcgb2NjdXJlZC4gQmVjYXVzZSBpdCdzIHVzZWQgYSBs b3QgaW4gdGhpcwpmaWxlIHRoZSBjaGFuZ2VzIGFyZSBkb25lIGluIHBhc3Nlcy4KClNpZ25lZC1v ZmYtYnk6IE1hYXJ0ZW4gTGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5j b20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMjA1ICsrKysr KysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaCAgICAgfCAgIDQgKy0KIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyAg ICB8ICAgMiArLQogMyBmaWxlcyBjaGFuZ2VkLCAxMDUgaW5zZXJ0aW9ucygrKSwgMTA2IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCAwMDQwNjdiZDBi NmMuLmZiMmVjYjY1YWFhYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpAQCAt MTE0MSwyOSArMTE0MSwyMCBAQCBzdGF0aWMgdm9pZCBhc3NlcnRfZHNpX3BsbChzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsIGJvb2wgc3RhdGUpCiAjZGVmaW5lIGFzc2VydF9kc2lf cGxsX2VuYWJsZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgdHJ1ZSkKICNkZWZpbmUgYXNzZXJ0X2Rz aV9wbGxfZGlzYWJsZWQoZCkgYXNzZXJ0X2RzaV9wbGwoZCwgZmFsc2UpCiAKLXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqCi1pbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQotewotCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGNydGMt PmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsKLQotCWlmIChjcnRjLT5jb25maWctPnNoYXJlZF9kcGxs IDwgMCkKLQkJcmV0dXJuIE5VTEw7Ci0KLQlyZXR1cm4gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNb Y3J0Yy0+Y29uZmlnLT5zaGFyZWRfZHBsbF07Ci19Ci0KIC8qIEZvciBJTEsrICovCiB2b2lkIGFz c2VydF9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCi0JCQlz dHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKKwkJCWVudW0gaW50ZWxfZHBsbF9pZCBzaGFy ZWRfZHBsbCwKIAkJCWJvb2wgc3RhdGUpCiB7Ci0JYm9vbCBjdXJfc3RhdGU7CiAJc3RydWN0IGlu dGVsX2RwbGxfaHdfc3RhdGUgaHdfc3RhdGU7CisJc3RydWN0IGludGVsX3NoYXJlZF9kcGxsICpw bGw7CisJYm9vbCBjdXJfc3RhdGU7CiAKLQlpZiAoV0FSTiAoIXBsbCwKKwlpZiAoV0FSTihzaGFy ZWRfZHBsbCA8IDAsCiAJCSAgImFzc2VydGluZyBEUExMICVzIHdpdGggbm8gRFBMTFxuIiwgc3Rh dGVfc3RyaW5nKHN0YXRlKSkpCiAJCXJldHVybjsKIAorCXBsbCA9ICZkZXZfcHJpdi0+c2hhcmVk X2RwbGxzW3NoYXJlZF9kcGxsXTsKIAljdXJfc3RhdGUgPSBwbGwtPmdldF9od19zdGF0ZShkZXZf cHJpdiwgcGxsLCAmaHdfc3RhdGUpOwogCUk5MTVfU1RBVEVfV0FSTihjdXJfc3RhdGUgIT0gc3Rh dGUsCiAJICAgICAiJXMgYXNzZXJ0aW9uIGZhaWx1cmUgKGV4cGVjdGVkICVzLCBjdXJyZW50ICVz KVxuIiwKQEAgLTE2OTEsNyArMTY4Miw3IEBAIHN0YXRpYyB2b2lkIGk5eHhfZW5hYmxlX3BsbChz dHJ1Y3QgaW50ZWxfY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpCiAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkxNV9w cml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJaW50IHJlZyA9IERQTEwoY3J0 Yy0+cGlwZSk7Ci0JdTMyIGRwbGwgPSBjcnRjLT5jb25maWctPmRwbGxfaHdfc3RhdGUuZHBsbDsK Kwl1MzIgZHBsbCA9IHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGw7CiAKIAlhc3NlcnRf cGlwZV9kaXNhYmxlZChkZXZfcHJpdiwgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBjcnRj LT5waXBlKTsKIApAQCAtMTcyMSw3ICsxNzEyLDcgQEAgc3RhdGljIHZvaWQgaTl4eF9lbmFibGVf cGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjLCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGkK IAogCWlmIChJTlRFTF9JTkZPKGRldiktPmdlbiA+PSA0KSB7CiAJCUk5MTVfV1JJVEUoRFBMTF9N RChjcnRjLT5waXBlKSwKLQkJCSAgIGNydGMtPmNvbmZpZy0+ZHBsbF9od19zdGF0ZS5kcGxsX21k KTsKKwkJCSAgIHBpcGVfY29uZmlnLT5kcGxsX2h3X3N0YXRlLmRwbGxfbWQpOwogCX0gZWxzZSB7 CiAJCS8qIFRoZSBwaXhlbCBtdWx0aXBsaWVyIGNhbiBvbmx5IGJlIHVwZGF0ZWQgb25jZSB0aGUK IAkJICogRFBMTCBpcyBlbmFibGVkIGFuZCB0aGUgY2xvY2tzIGFyZSBzdGFibGUuCkBAIC0xODU5 LDIwICsxODUwLDE5IEBAIHZvaWQgdmx2X3dhaXRfcG9ydF9yZWFkeShzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqZGV2X3ByaXYsCiAJCSAgICAgcG9ydF9uYW1lKGRwb3J0LT5wb3J0KSwgSTkxNV9S RUFEKGRwbGxfcmVnKSAmIHBvcnRfbWFzaywgZXhwZWN0ZWRfbWFzayk7CiB9CiAKLXN0YXRpYyB2 b2lkIGludGVsX3ByZXBhcmVfc2hhcmVkX2RwbGwoc3RydWN0IGludGVsX2NydGMgKmNydGMpCitz dGF0aWMgdm9pZCBpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2 YXRlICpkZXZfcHJpdiwKKwkJCQkgICAgICBlbnVtIGludGVsX2RwbGxfaWQgc2hhcmVkX2RwbGwp CiB7Ci0Jc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwotCXN0cnVjdCBk cm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7Ci0Jc3RydWN0IGlu dGVsX3NoYXJlZF9kcGxsICpwbGwgPSBpbnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpOwor CXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBsbCAqcGxsID0gJmRldl9wcml2LT5zaGFyZWRfZHBsbHNb c2hhcmVkX2RwbGxdOwogCi0JaWYgKFdBUk5fT04ocGxsID09IE5VTEwpKQorCWlmIChXQVJOX09O KHNoYXJlZF9kcGxsIDwgMCkpCiAJCXJldHVybjsKIAogCVdBUk5fT04oIXBsbC0+Y29uZmlnLmNy dGNfbWFzayk7CiAJaWYgKHBsbC0+YWN0aXZlID09IDApIHsKIAkJRFJNX0RFQlVHX0RSSVZFUigi c2V0dGluZyB1cCAlc1xuIiwgcGxsLT5uYW1lKTsKIAkJV0FSTl9PTihwbGwtPm9uKTsKLQkJYXNz ZXJ0X3NoYXJlZF9kcGxsX2Rpc2FibGVkKGRldl9wcml2LCBwbGwpOworCQlhc3NlcnRfc2hhcmVk X2RwbGxfZGlzYWJsZWQoZGV2X3ByaXYsIHNoYXJlZF9kcGxsKTsKIAogCQlwbGwtPm1vZGVfc2V0 KGRldl9wcml2LCBwbGwpOwogCX0KQEAgLTE4ODYsMjUgKzE4NzYsMjMgQEAgc3RhdGljIHZvaWQg aW50ZWxfcHJlcGFyZV9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKICAqIFRo ZSBQQ0ggUExMIG5lZWRzIHRvIGJlIGVuYWJsZWQgYmVmb3JlIHRoZSBQQ0ggdHJhbnNjb2Rlciwg c2luY2UgaXQKICAqIGRyaXZlcyB0aGUgdHJhbnNjb2RlciBjbG9jay4KICAqLwotc3RhdGljIHZv aWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorc3Rh dGljIHZvaWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiwKKwkJCQkgICAgIGVudW0gaW50ZWxfZHBsbF9pZCBzaGFyZWRfZHBsbCkKIHsK LQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbCA9IGludGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0Yyk7CisJc3Ry dWN0IGludGVsX3NoYXJlZF9kcGxsICpwbGwgPSAmZGV2X3ByaXYtPnNoYXJlZF9kcGxsc1tzaGFy ZWRfZHBsbF07CiAKLQlpZiAoV0FSTl9PTihwbGwgPT0gTlVMTCkpCisJaWYgKFdBUk5fT04oc2hh cmVkX2RwbGwgPCAwKSkKIAkJcmV0dXJuOwogCiAJaWYgKFdBUk5fT04ocGxsLT5jb25maWcuY3J0 Y19tYXNrID09IDApKQogCQlyZXR1cm47CiAKLQlEUk1fREVCVUdfS01TKCJlbmFibGUgJXMgKGFj dGl2ZSAlZCwgb24/ICVkKSBmb3IgY3J0YyAlZFxuIiwKLQkJICAgICAgcGxsLT5uYW1lLCBwbGwt PmFjdGl2ZSwgcGxsLT5vbiwKLQkJICAgICAgY3J0Yy0+YmFzZS5iYXNlLmlkKTsKKwlEUk1fREVC VUdfS01TKCJlbmFibGUgJXMgKGFjdGl2ZSAlZCwgb24/ICVkKVxuIiwKKwkJICAgICAgcGxsLT5u YW1lLCBwbGwtPmFjdGl2ZSwgcGxsLT5vbik7CiAKIAlpZiAocGxsLT5hY3RpdmUrKykgewogCQlX QVJOX09OKCFwbGwtPm9uKTsKLQkJYXNzZXJ0X3NoYXJlZF9kcGxsX2VuYWJsZWQoZGV2X3ByaXYs IHBsbCk7CisJCWFzc2VydF9zaGFyZWRfZHBsbF9lbmFibGVkKGRldl9wcml2LCBzaGFyZWRfZHBs bCk7CiAJCXJldHVybjsKIAl9CiAJV0FSTl9PTihwbGwtPm9uKTsKQEAgLTE5MTYsMzAgKzE5MDQs MjkgQEAgc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9j cnRjICpjcnRjKQogCXBsbC0+b24gPSB0cnVlOwogfQogCi1zdGF0aWMgdm9pZCBpbnRlbF9kaXNh YmxlX3NoYXJlZF9kcGxsKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgaW50 ZWxfZGlzYWJsZV9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYs CisJCQkJICAgICAgZW51bSBpbnRlbF9kcGxsX2lkIHNoYXJlZF9kcGxsKQogewotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5iYXNlLmRldjsKLQlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwotCXN0cnVjdCBpbnRlbF9zaGFyZWRfZHBs bCAqcGxsID0gaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChjcnRjKTsKKwlzdHJ1Y3QgaW50ZWxf c2hhcmVkX2RwbGwgKnBsbCA9ICZkZXZfcHJpdi0+c2hhcmVkX2RwbGxzW3NoYXJlZF9kcGxsXTsK KworCWlmIChzaGFyZWRfZHBsbCA8IDApCisJCXJldHVybjsKIAogCS8qIFBDSCBvbmx5IGF2YWls YWJsZSBvbiBJTEsrICovCi0JQlVHX09OKElOVEVMX0lORk8oZGV2KS0+Z2VuIDwgNSk7Ci0JaWYg KFdBUk5fT04ocGxsID09IE5VTEwpKQotCSAgICAgICByZXR1cm47CisJQlVHX09OKGRldl9wcml2 LT5pbmZvLmdlbiA8IDUpOwogCiAJaWYgKFdBUk5fT04ocGxsLT5jb25maWcuY3J0Y19tYXNrID09 IDApKQogCQlyZXR1cm47CiAKLQlEUk1fREVCVUdfS01TKCJkaXNhYmxlICVzIChhY3RpdmUgJWQs IG9uPyAlZCkgZm9yIGNydGMgJWRcbiIsCi0JCSAgICAgIHBsbC0+bmFtZSwgcGxsLT5hY3RpdmUs IHBsbC0+b24sCi0JCSAgICAgIGNydGMtPmJhc2UuYmFzZS5pZCk7CisJRFJNX0RFQlVHX0tNUygi ZGlzYWJsZSAlcyAoYWN0aXZlICVkLCBvbj8gJWQpXG4iLAorCQkgICAgICBwbGwtPm5hbWUsIHBs bC0+YWN0aXZlLCBwbGwtPm9uKTsKIAogCWlmIChXQVJOX09OKHBsbC0+YWN0aXZlID09IDApKSB7 Ci0JCWFzc2VydF9zaGFyZWRfZHBsbF9kaXNhYmxlZChkZXZfcHJpdiwgcGxsKTsKKwkJYXNzZXJ0 X3NoYXJlZF9kcGxsX2Rpc2FibGVkKGRldl9wcml2LCBzaGFyZWRfZHBsbCk7CiAJCXJldHVybjsK IAl9CiAKLQlhc3NlcnRfc2hhcmVkX2RwbGxfZW5hYmxlZChkZXZfcHJpdiwgcGxsKTsKKwlhc3Nl cnRfc2hhcmVkX2RwbGxfZW5hYmxlZChkZXZfcHJpdiwgc2hhcmVkX2RwbGwpOwogCVdBUk5fT04o IXBsbC0+b24pOwogCWlmICgtLXBsbC0+YWN0aXZlKQogCQlyZXR1cm47CkBAIC0xOTY0LDggKzE5 NTEsNyBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9lbmFibGVfcGNoX3RyYW5zY29kZXIoc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAogCUJVR19PTighSEFTX1BDSF9TUExJVChkZXYp KTsKIAogCS8qIE1ha2Ugc3VyZSBQQ0ggRFBMTCBpcyBlbmFibGVkICovCi0JYXNzZXJ0X3NoYXJl ZF9kcGxsX2VuYWJsZWQoZGV2X3ByaXYsCi0JCQkJICAgaW50ZWxfY3J0Y190b19zaGFyZWRfZHBs bChpbnRlbF9jcnRjKSk7CisJYXNzZXJ0X3NoYXJlZF9kcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHBp cGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7CiAKIAkvKiBGREkgbXVzdCBiZSBmZWVkaW5nIHVzIGJp dHMgZm9yIFBDSCBwb3J0cyAqLwogCWFzc2VydF9mZGlfdHhfZW5hYmxlZChkZXZfcHJpdiwgcGlw ZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKQEAgLTIxMjYsNyArMjExMiw3IEBAIHN0 YXRpYyB2b2lkIGludGVsX2VuYWJsZV9waXBlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQogCQll bHNlCiAJCQlhc3NlcnRfcGxsX2VuYWJsZWQoZGV2X3ByaXYsIHBpcGUpOwogCWVsc2UgewotCQlp ZiAoY3J0Yy0+Y29uZmlnLT5oYXNfcGNoX2VuY29kZXIpIHsKKwkJaWYgKHBpcGVfY29uZmlnLT5o YXNfcGNoX2VuY29kZXIpIHsKIAkJCS8qIGlmIGRyaXZpbmcgdGhlIFBDSCwgd2UgbmVlZCBGREkg ZW5hYmxlZCAqLwogCQkJYXNzZXJ0X2ZkaV9yeF9wbGxfZW5hYmxlZChkZXZfcHJpdiwgcGNoX3Ry YW5zY29kZXIpOwogCQkJYXNzZXJ0X2ZkaV90eF9wbGxfZW5hYmxlZChkZXZfcHJpdiwKQEAgLTI2 MjIsNiArMjYwOCw4IEBAIHN0YXRpYyB2b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCWJvb2wgdmlzaWJsZSA9IHRvX2ludGVsX3BsYW5lX3N0YXRl KHByaW1hcnktPnN0YXRlKS0+dmlzaWJsZTsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAq b2JqOwogCWludCBwbGFuZSA9IGludGVsX2NydGMtPnBsYW5lOworCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZyA9CisJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUp OwogCXVuc2lnbmVkIGxvbmcgbGluZWFyX29mZnNldDsKIAl1MzIgZHNwY250cjsKIAl1MzIgcmVn ID0gRFNQQ05UUihwbGFuZSk7CkBAIC0yNjU1LDEzICsyNjQzLDEzIEBAIHN0YXRpYyB2b2lkIGk5 eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkgKiB3aGlj aCBzaG91bGQgYWx3YXlzIGJlIHRoZSB1c2VyJ3MgcmVxdWVzdGVkIHNpemUuCiAJCSAqLwogCQlJ OTE1X1dSSVRFKERTUFNJWkUocGxhbmUpLAotCQkJICAgKChpbnRlbF9jcnRjLT5jb25maWctPnBp cGVfc3JjX2ggLSAxKSA8PCAxNikgfAotCQkJICAgKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9z cmNfdyAtIDEpKTsKKwkJCSAgICgocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKSA8PCAxNikg fAorCQkJICAgKHBpcGVfY29uZmlnLT5waXBlX3NyY193IC0gMSkpOwogCQlJOTE1X1dSSVRFKERT UFBPUyhwbGFuZSksIDApOwogCX0gZWxzZSBpZiAoSVNfQ0hFUlJZVklFVyhkZXYpICYmIHBsYW5l ID09IFBMQU5FX0IpIHsKIAkJSTkxNV9XUklURShQUklNU0laRShwbGFuZSksCi0JCQkgICAoKGlu dGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpIDw8IDE2KSB8Ci0JCQkgICAoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkpOworCQkJICAgKChwaXBlX2NvbmZpZy0+cGlw ZV9zcmNfaCAtIDEpIDw8IDE2KSB8CisJCQkgICAocGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAx KSk7CiAJCUk5MTVfV1JJVEUoUFJJTVBPUyhwbGFuZSksIDApOwogCQlJOTE1X1dSSVRFKFBSSU1D TlNUQUxQSEEocGxhbmUpLCAwKTsKIAl9CkBAIC0yNzE5LDE0ICsyNzA3LDE0IEBAIHN0YXRpYyB2 b2lkIGk5eHhfdXBkYXRlX3ByaW1hcnlfcGxhbmUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCWlm IChjcnRjLT5wcmltYXJ5LT5zdGF0ZS0+cm90YXRpb24gPT0gQklUKERSTV9ST1RBVEVfMTgwKSkg ewogCQlkc3BjbnRyIHw9IERJU1BQTEFORV9ST1RBVEVfMTgwOwogCi0JCXggKz0gKGludGVsX2Ny dGMtPmNvbmZpZy0+cGlwZV9zcmNfdyAtIDEpOwotCQl5ICs9IChpbnRlbF9jcnRjLT5jb25maWct PnBpcGVfc3JjX2ggLSAxKTsKKwkJeCArPSAocGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAxKTsK KwkJeSArPSAocGlwZV9jb25maWctPnBpcGVfc3JjX2ggLSAxKTsKIAogCQkvKiBGaW5kaW5nIHRo ZSBsYXN0IHBpeGVsIG9mIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGRpc3BsYXkKIAkJZGF0YSBhbmQg YWRkaW5nIHRvIGxpbmVhcl9vZmZzZXQqLwogCQlsaW5lYXJfb2Zmc2V0ICs9Ci0JCQkoaW50ZWxf Y3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCi0JCQkoaW50 ZWxfY3J0Yy0+Y29uZmlnLT5waXBlX3NyY193IC0gMSkgKiBwaXhlbF9zaXplOworCQkJKHBpcGVf Y29uZmlnLT5waXBlX3NyY19oIC0gMSkgKiBmYi0+cGl0Y2hlc1swXSArCisJCQkocGlwZV9jb25m aWctPnBpcGVfc3JjX3cgLSAxKSAqIHBpeGVsX3NpemU7CiAJfQogCiAJSTkxNV9XUklURShyZWcs IGRzcGNudHIpOwpAQCAtMjgxOCwxNyArMjgwNiwyMCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV91 cGRhdGVfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkJCSAgICAgICBm Yi0+cGl0Y2hlc1swXSk7CiAJbGluZWFyX29mZnNldCAtPSBpbnRlbF9jcnRjLT5kc3BhZGRyX29m ZnNldDsKIAlpZiAoY3J0Yy0+cHJpbWFyeS0+c3RhdGUtPnJvdGF0aW9uID09IEJJVChEUk1fUk9U QVRFXzE4MCkpIHsKKwkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnID0KKwkJ CXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOworCiAJCWRzcGNudHIgfD0gRElTUFBM QU5FX1JPVEFURV8xODA7CiAKIAkJaWYgKCFJU19IQVNXRUxMKGRldikgJiYgIUlTX0JST0FEV0VM TChkZXYpKSB7Ci0JCQl4ICs9IChpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3JjX3cgLSAxKTsK LQkJCXkgKz0gKGludGVsX2NydGMtPmNvbmZpZy0+cGlwZV9zcmNfaCAtIDEpOworCQkJeCArPSAo cGlwZV9jb25maWctPnBpcGVfc3JjX3cgLSAxKTsKKwkJCXkgKz0gKHBpcGVfY29uZmlnLT5waXBl X3NyY19oIC0gMSk7CiAKIAkJCS8qIEZpbmRpbmcgdGhlIGxhc3QgcGl4ZWwgb2YgdGhlIGxhc3Qg bGluZSBvZiB0aGUgZGlzcGxheQogCQkJZGF0YSBhbmQgYWRkaW5nIHRvIGxpbmVhcl9vZmZzZXQq LwogCQkJbGluZWFyX29mZnNldCArPQotCQkJCShpbnRlbF9jcnRjLT5jb25maWctPnBpcGVfc3Jj X2ggLSAxKSAqIGZiLT5waXRjaGVzWzBdICsKLQkJCQkoaW50ZWxfY3J0Yy0+Y29uZmlnLT5waXBl X3NyY193IC0gMSkgKiBwaXhlbF9zaXplOworCQkJCShwaXBlX2NvbmZpZy0+cGlwZV9zcmNfaCAt IDEpICogZmItPnBpdGNoZXNbMF0gKworCQkJCShwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyAtIDEp ICogcGl4ZWxfc2l6ZTsKIAkJfQogCX0KIApAQCAtMjkwMSwxMiArMjg5MiwxMyBAQCB2b2lkIHNr bF9kZXRhY2hfc2NhbGVycyhzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKIAlzdHJ1Y3Qg aW50ZWxfY3J0Y19zY2FsZXJfc3RhdGUgKnNjYWxlcl9zdGF0ZTsKIAlpbnQgaTsKIAotCWlmICgh aW50ZWxfY3J0YyB8fCAhaW50ZWxfY3J0Yy0+Y29uZmlnKQorCWlmICghaW50ZWxfY3J0YykKIAkJ cmV0dXJuOwogCiAJZGV2ID0gaW50ZWxfY3J0Yy0+YmFzZS5kZXY7CiAJZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwotCXNjYWxlcl9zdGF0ZSA9ICZpbnRlbF9jcnRjLT5jb25maWctPnNjYWxl cl9zdGF0ZTsKKwlzY2FsZXJfc3RhdGUgPQorCQkmdG9faW50ZWxfY3J0Y19zdGF0ZShpbnRlbF9j cnRjLT5iYXNlLnN0YXRlKS0+c2NhbGVyX3N0YXRlOwogCiAJLyogbG9vcCB0aHJvdWdoIGFuZCBk aXNhYmxlIHNjYWxlcnMgdGhhdCBhcmVuJ3QgaW4gdXNlICovCiAJZm9yIChpID0gMDsgaSA8IGlu dGVsX2NydGMtPm51bV9zY2FsZXJzOyBpKyspIHsKQEAgLTMyOTgsNiArMzI5MCw4IEBAIHN0YXRp YyB2b2lkIGludGVsX3VwZGF0ZV9waXBlX3NpemUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCiAJ c3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2OwogCXN0cnVjdCBkcm1faTkx NV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJY29uc3Qgc3RydWN0IGRy bV9kaXNwbGF5X21vZGUgKmFkanVzdGVkX21vZGU7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUg KnBpcGVfY29uZmlnID0KKwkJdG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKTsK IAogCWlmICghaTkxNS5mYXN0Ym9vdCkKIAkJcmV0dXJuOwpAQCAtMzMxNiwyMCArMzMxMCwyMCBA QCBzdGF0aWMgdm9pZCBpbnRlbF91cGRhdGVfcGlwZV9zaXplKHN0cnVjdCBpbnRlbF9jcnRjICpj cnRjKQogCSAqIHRoZW4gdXBkYXRlIHRoZSBwaXBlc3JjIGFuZCBwZml0IHN0YXRlLCBldmVuIG9u IHRoZSBmbGlwIHBhdGguCiAJICovCiAKLQlhZGp1c3RlZF9tb2RlID0gJmNydGMtPmNvbmZpZy0+ YmFzZS5hZGp1c3RlZF9tb2RlOworCWFkanVzdGVkX21vZGUgPSAmcGlwZV9jb25maWctPmJhc2Uu YWRqdXN0ZWRfbW9kZTsKIAogCUk5MTVfV1JJVEUoUElQRVNSQyhjcnRjLT5waXBlKSwKIAkJICAg KChhZGp1c3RlZF9tb2RlLT5jcnRjX2hkaXNwbGF5IC0gMSkgPDwgMTYpIHwKIAkJICAgKGFkanVz dGVkX21vZGUtPmNydGNfdmRpc3BsYXkgLSAxKSk7Ci0JaWYgKCFjcnRjLT5jb25maWctPnBjaF9w Zml0LmVuYWJsZWQgJiYKKwlpZiAoIXBpcGVfY29uZmlnLT5wY2hfcGZpdC5lbmFibGVkICYmCiAJ ICAgIChpbnRlbF9waXBlX2hhc190eXBlKGNydGMsIElOVEVMX09VVFBVVF9MVkRTKSB8fAogCSAg ICAgaW50ZWxfcGlwZV9oYXNfdHlwZShjcnRjLCBJTlRFTF9PVVRQVVRfRURQKSkpIHsKIAkJSTkx NV9XUklURShQRl9DVEwoY3J0Yy0+cGlwZSksIDApOwogCQlJOTE1X1dSSVRFKFBGX1dJTl9QT1Mo Y3J0Yy0+cGlwZSksIDApOwogCQlJOTE1X1dSSVRFKFBGX1dJTl9TWihjcnRjLT5waXBlKSwgMCk7 CiAJfQotCWNydGMtPmNvbmZpZy0+cGlwZV9zcmNfdyA9IGFkanVzdGVkX21vZGUtPmNydGNfaGRp c3BsYXk7Ci0JY3J0Yy0+Y29uZmlnLT5waXBlX3NyY19oID0gYWRqdXN0ZWRfbW9kZS0+Y3J0Y192 ZGlzcGxheTsKKwlwaXBlX2NvbmZpZy0+cGlwZV9zcmNfdyA9IGFkanVzdGVkX21vZGUtPmNydGNf aGRpc3BsYXk7CisJcGlwZV9jb25maWctPnBpcGVfc3JjX2ggPSBhZGp1c3RlZF9tb2RlLT5jcnRj X3ZkaXNwbGF5OwogfQogCiBzdGF0aWMgdm9pZCBpbnRlbF9mZGlfbm9ybWFsX3RyYWluKHN0cnVj dCBkcm1fY3J0YyAqY3J0YykKQEAgLTMzNzksNiArMzM3Myw4IEBAIHN0YXRpYyB2b2lkIGlyb25s YWtlX2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZp ZyA9CisJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCWludCBwaXBlID0gaW50 ZWxfY3J0Yy0+cGlwZTsKIAl1MzIgcmVnLCB0ZW1wLCB0cmllczsKIApAQCAtMzM5Niw3ICszMzky LDcgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfZmRpX2xpbmtfdHJhaW4oc3RydWN0IGRybV9jcnRj ICpjcnRjKQogCXJlZyA9IEZESV9UWF9DVEwocGlwZSk7CiAJdGVtcCA9IEk5MTVfUkVBRChyZWcp OwogCXRlbXAgJj0gfkZESV9EUF9QT1JUX1dJRFRIX01BU0s7Ci0JdGVtcCB8PSBGRElfRFBfUE9S VF9XSURUSChpbnRlbF9jcnRjLT5jb25maWctPmZkaV9sYW5lcyk7CisJdGVtcCB8PSBGRElfRFBf UE9SVF9XSURUSChwaXBlX2NvbmZpZy0+ZmRpX2xhbmVzKTsKIAl0ZW1wICY9IH5GRElfTElOS19U UkFJTl9OT05FOwogCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xOwogCUk5MTVfV1JJ VEUocmVnLCB0ZW1wIHwgRkRJX1RYX0VOQUJMRSk7CkBAIC0zNDc2LDYgKzM0NzIsOCBAQCBzdGF0 aWMgdm9pZCBnZW42X2ZkaV9saW5rX3RyYWluKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGludGVsX2NydGMgKmludGVs X2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpw aXBlX2NvbmZpZyA9CisJCXRvX2ludGVsX2NydGNfc3RhdGUoY3J0Yy0+c3RhdGUpOwogCWludCBw aXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKIAl1MzIgcmVnLCB0ZW1wLCBpLCByZXRyeTsKIApAQCAt MzQ5NCw3ICszNDkyLDcgQEAgc3RhdGljIHZvaWQgZ2VuNl9mZGlfbGlua190cmFpbihzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMpCiAJcmVnID0gRkRJX1RYX0NUTChwaXBlKTsKIAl0ZW1wID0gSTkxNV9S RUFEKHJlZyk7CiAJdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhfTUFTSzsKLQl0ZW1wIHw9IEZE SV9EUF9QT1JUX1dJRFRIKGludGVsX2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzKTsKKwl0ZW1wIHw9 IEZESV9EUF9QT1JUX1dJRFRIKHBpcGVfY29uZmlnLT5mZGlfbGFuZXMpOwogCXRlbXAgJj0gfkZE SV9MSU5LX1RSQUlOX05PTkU7CiAJdGVtcCB8PSBGRElfTElOS19UUkFJTl9QQVRURVJOXzE7CiAJ dGVtcCAmPSB+RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLOwpAQCAtMzYwOCw2ICszNjA2LDgg QEAgc3RhdGljIHZvaWQgaXZiX21hbnVhbF9mZGlfbGlua190cmFpbihzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYtPmRldl9wcml2YXRlOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgaW50ZWxf Y3J0Y19zdGF0ZSAqcGlwZV9jb25maWcgPQorCQl0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0 YXRlKTsKIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7CiAJdTMyIHJlZywgdGVtcCwgaSwg ajsKIApAQCAtMzY0NSw3ICszNjQ1LDcgQEAgc3RhdGljIHZvaWQgaXZiX21hbnVhbF9mZGlfbGlu a190cmFpbihzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiAJCXJlZyA9IEZESV9UWF9DVEwocGlwZSk7 CiAJCXRlbXAgPSBJOTE1X1JFQUQocmVnKTsKIAkJdGVtcCAmPSB+RkRJX0RQX1BPUlRfV0lEVEhf TUFTSzsKLQkJdGVtcCB8PSBGRElfRFBfUE9SVF9XSURUSChpbnRlbF9jcnRjLT5jb25maWctPmZk aV9sYW5lcyk7CisJCXRlbXAgfD0gRkRJX0RQX1BPUlRfV0lEVEgocGlwZV9jb25maWctPmZkaV9s YW5lcyk7CiAJCXRlbXAgfD0gRkRJX0xJTktfVFJBSU5fUEFUVEVSTl8xX0lWQjsKIAkJdGVtcCAm PSB+RkRJX0xJTktfVFJBSU5fVk9MX0VNUF9NQVNLOwogCQl0ZW1wIHw9IHNuYl9iX2ZkaV90cmFp bl9wYXJhbVtqLzJdOwpAQCAtMzkxNCwxMSArMzkxNCwxMCBAQCB2b2lkIGludGVsX2NydGNfd2Fp dF9mb3JfcGVuZGluZ19mbGlwcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB9CiAKIC8qIFByb2dy YW0gaUNMS0lQIGNsb2NrIHRvIHRoZSBkZXNpcmVkIGZyZXF1ZW5jeSAqLwotc3RhdGljIHZvaWQg bHB0X3Byb2dyYW1faWNsa2lwKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKK3N0YXRpYyB2b2lkIGxw dF9wcm9ncmFtX2ljbGtpcChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYsCisJCQkg ICAgICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewotCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQlpbnQgY2xvY2sgPSB0b19pbnRlbF9jcnRjKGNy dGMpLT5jb25maWctPmJhc2UuYWRqdXN0ZWRfbW9kZS5jcnRjX2Nsb2NrOworCWludCBjbG9jayA9 IHBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUuY3J0Y19jbG9jazsKIAl1MzIgZGl2c2Vs LCBwaGFzZWluYywgYXV4ZGl2LCBwaGFzZWRpciA9IDA7CiAJdTMyIHRlbXA7CiAKQEAgLTQwMDIs MTMgKzQwMDEsMTAgQEAgc3RhdGljIHZvaWQgbHB0X3Byb2dyYW1faWNsa2lwKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YykKIAltdXRleF91bmxvY2soJmRldl9wcml2LT5kcGlvX2xvY2spOwogfQogCi1z dGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGltaW5ncyhzdHJ1Y3QgaW50 ZWxfY3J0YyAqY3J0YywKK3N0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90 aW1pbmdzKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKKwkJCQkJCWVudW0gdHJh bnNjb2RlciBjcHVfdHJhbnNjb2RlciwKIAkJCQkJCWVudW0gcGlwZSBwY2hfdHJhbnNjb2RlcikK IHsKLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+YmFzZS5kZXY7Ci0Jc3RydWN0IGRy bV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKLQllbnVtIHRyYW5z Y29kZXIgY3B1X3RyYW5zY29kZXIgPSBjcnRjLT5jb25maWctPmNwdV90cmFuc2NvZGVyOwotCiAJ STkxNV9XUklURShQQ0hfVFJBTlNfSFRPVEFMKHBjaF90cmFuc2NvZGVyKSwKIAkJICAgSTkxNV9S RUFEKEhUT1RBTChjcHVfdHJhbnNjb2RlcikpKTsKIAlJOTE1X1dSSVRFKFBDSF9UUkFOU19IQkxB TksocGNoX3RyYW5zY29kZXIpLApAQCAtNDAyNiw3ICs0MDIyLDggQEAgc3RhdGljIHZvaWQgaXJv bmxha2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWluZ3Moc3RydWN0IGludGVsX2NydGMgKmNydGMs CiAJCSAgIEk5MTVfUkVBRChWU1lOQ1NISUZUKGNwdV90cmFuc2NvZGVyKSkpOwogfQogCi1zdGF0 aWMgdm9pZCBjcHRfc2V0X2ZkaV9iY19iaWZ1cmNhdGlvbihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBib29sIGVuYWJsZSkKK3N0YXRpYyB2b2lkIGNwdF9zZXRfZmRpX2JjX2JpZnVyY2F0aW9uKHN0 cnVjdCBkcm1fZGV2aWNlICpkZXYsCisJCQkJICAgICAgIGJvb2wgZW5hYmxlKQogewogCXN0cnVj dCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJdWludDMy X3QgdGVtcDsKQEAgLTQwNDcsMTUgKzQwNDQsMTUgQEAgc3RhdGljIHZvaWQgY3B0X3NldF9mZGlf YmNfYmlmdXJjYXRpb24oc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBlbmFibGUpCiAJUE9T VElOR19SRUFEKFNPVVRIX0NISUNLRU4xKTsKIH0KIAotc3RhdGljIHZvaWQgaXZ5YnJpZGdlX3Vw ZGF0ZV9mZGlfYmNfYmlmdXJjYXRpb24oc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMpCitz dGF0aWMgdm9pZCBpdnlicmlkZ2VfdXBkYXRlX2ZkaV9iY19iaWZ1cmNhdGlvbihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LAorCQkJCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YywKKwkJCQkJ c3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewotCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBpbnRlbF9jcnRjLT5iYXNlLmRldjsKLQogCXN3aXRjaCAoaW50ZWxfY3J0Yy0+ cGlwZSkgewogCWNhc2UgUElQRV9BOgogCQlicmVhazsKIAljYXNlIFBJUEVfQjoKLQkJaWYgKGlu dGVsX2NydGMtPmNvbmZpZy0+ZmRpX2xhbmVzID4gMikKKwkJaWYgKHBpcGVfY29uZmlnLT5mZGlf bGFuZXMgPiAyKQogCQkJY3B0X3NldF9mZGlfYmNfYmlmdXJjYXRpb24oZGV2LCBmYWxzZSk7CiAJ CWVsc2UKIAkJCWNwdF9zZXRfZmRpX2JjX2JpZnVyY2F0aW9uKGRldiwgdHJ1ZSk7CkBAIC00MDc4 LDcgKzQwNzUsOCBAQCBzdGF0aWMgdm9pZCBpdnlicmlkZ2VfdXBkYXRlX2ZkaV9iY19iaWZ1cmNh dGlvbihzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YykKICAqICAgLSBEUCB0cmFuc2NvZGlu ZyBiaXRzCiAgKiAgIC0gdHJhbnNjb2RlcgogICovCi1zdGF0aWMgdm9pZCBpcm9ubGFrZV9wY2hf ZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKQorc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCisJCQkJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewog CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3By aXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKQEAgLTQwODksNyArNDA4Nyw4IEBA IHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9lbmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqCiAJYXNzZXJ0X3BjaF90cmFuc2NvZGVyX2Rpc2FibGVk KGRldl9wcml2LCBwaXBlKTsKIAogCWlmIChJU19JVllCUklER0UoZGV2KSkKLQkJaXZ5YnJpZGdl X3VwZGF0ZV9mZGlfYmNfYmlmdXJjYXRpb24oaW50ZWxfY3J0Yyk7CisJCWl2eWJyaWRnZV91cGRh dGVfZmRpX2JjX2JpZnVyY2F0aW9uKGRldiwgaW50ZWxfY3J0YywKKwkJCQkJCSAgICBwaXBlX2Nv bmZpZyk7CiAKIAkvKiBXcml0ZSB0aGUgVFUgc2l6ZSBiaXRzIGJlZm9yZSBmZGkgbGluayB0cmFp bmluZywgc28gdGhhdCBlcnJvcgogCSAqIGRldGVjdGlvbiB3b3Jrcy4gKi8KQEAgLTQxMjEsMTEg KzQxMjAsMTIgQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKIAkgKiBOb3RlIHRoYXQgZW5hYmxl X3NoYXJlZF9kcGxsIHRyaWVzIHRvIGRvIHRoZSByaWdodCB0aGluZywgYnV0CiAJICogZ2V0X3No YXJlZF9kcGxsIHVuY29uZGl0aW9uYWxseSByZXNldHMgdGhlIHBsbCAtIHdlIG5lZWQgdGhhdCB0 byBoYXZlCiAJICogdGhlIHJpZ2h0IExWRFMgZW5hYmxlIHNlcXVlbmNlLiAqLwotCWludGVsX2Vu YWJsZV9zaGFyZWRfZHBsbChpbnRlbF9jcnRjKTsKKwlpbnRlbF9lbmFibGVfc2hhcmVkX2RwbGwo ZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7CiAKIAkvKiBzZXQgdHJhbnNjb2Rl ciB0aW1pbmcsIHBhbmVsIG11c3QgYWxsb3cgaXQgKi8KIAlhc3NlcnRfcGFuZWxfdW5sb2NrZWQo ZGV2X3ByaXYsIHBpcGUpOwotCWlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKGlu dGVsX2NydGMsIHBpcGUpOworCWlyb25sYWtlX3BjaF90cmFuc2NvZGVyX3NldF90aW1pbmdzKGRl dl9wcml2LAorCQkJCQkgICAgcGlwZV9jb25maWctPmNwdV90cmFuc2NvZGVyLCBwaXBlKTsKIAog CWludGVsX2ZkaV9ub3JtYWxfdHJhaW4oY3J0Yyk7CiAKQEAgLTQxNjYsMTkgKzQxNjYsMTcgQEAg c3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKIAlpcm9ubGFrZV9lbmFibGVfcGNoX3RyYW5zY29kZXIo ZGV2X3ByaXYsIHBpcGUsIHBpcGVfY29uZmlnKTsKIH0KIAotc3RhdGljIHZvaWQgbHB0X3BjaF9l bmFibGUoc3RydWN0IGRybV9jcnRjICpjcnRjKQorc3RhdGljIHZvaWQgbHB0X3BjaF9lbmFibGUo c3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2LAorCQkJICAgc3RydWN0IGludGVsX2Ny dGNfc3RhdGUgKnBpcGVfY29uZmlnKQogewotCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7Ci0Jc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJp dmF0ZTsKLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0 Yyk7Ci0JZW51bSB0cmFuc2NvZGVyIGNwdV90cmFuc2NvZGVyID0gaW50ZWxfY3J0Yy0+Y29uZmln LT5jcHVfdHJhbnNjb2RlcjsKKwllbnVtIHRyYW5zY29kZXIgY3B1X3RyYW5zY29kZXIgPSBwaXBl X2NvbmZpZy0+Y3B1X3RyYW5zY29kZXI7CiAKIAlhc3NlcnRfcGNoX3RyYW5zY29kZXJfZGlzYWJs ZWQoZGV2X3ByaXYsIFRSQU5TQ09ERVJfQSk7CiAKLQlscHRfcHJvZ3JhbV9pY2xraXAoY3J0Yyk7 CisJbHB0X3Byb2dyYW1faWNsa2lwKGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CiAKIAkvKiBTZXQg dHJhbnNjb2RlciB0aW1pbmcuICovCi0JaXJvbmxha2VfcGNoX3RyYW5zY29kZXJfc2V0X3RpbWlu Z3MoaW50ZWxfY3J0YywgUElQRV9BKTsKKwlpcm9ubGFrZV9wY2hfdHJhbnNjb2Rlcl9zZXRfdGlt aW5ncyhkZXZfcHJpdiwgY3B1X3RyYW5zY29kZXIsIFBJUEVfQSk7CiAKIAlscHRfZW5hYmxlX3Bj aF90cmFuc2NvZGVyKGRldl9wcml2LCBjcHVfdHJhbnNjb2Rlcik7CiB9CkBAIC00NzgxLDcgKzQ3 NzksOCBAQCBzdGF0aWMgdm9pZCBpcm9ubGFrZV9jcnRjX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMpCiAJcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsK IAogCWlmIChwaXBlX2NvbmZpZy0+aGFzX3BjaF9lbmNvZGVyKQotCQlpbnRlbF9wcmVwYXJlX3No YXJlZF9kcGxsKGludGVsX2NydGMpOworCQlpbnRlbF9wcmVwYXJlX3NoYXJlZF9kcGxsKGRldl9w cml2LAorCQkJCQkgIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7CiAKIAlpZiAocGlwZV9jb25m aWctPmhhc19kcF9lbmNvZGVyKQogCQlpbnRlbF9kcF9zZXRfbV9uKGludGVsX2NydGMsIE0xX04x KTsKQEAgLTQ4NTQsOCArNDg1Myw4IEBAIHN0YXRpYyB2b2lkIGhhc3dlbGxfY3J0Y19lbmFibGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQogCVdBUk5fT04oIWNydGMtPnN0YXRlLT5lbmFibGUpOwog CiAJcGlwZV9jb25maWcgPSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPnN0YXRlKTsKLQlpZiAo aW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChpbnRlbF9jcnRjKSkKLQkJaW50ZWxfZW5hYmxlX3No YXJlZF9kcGxsKGludGVsX2NydGMpOworCWlmIChwaXBlX2NvbmZpZy0+c2hhcmVkX2RwbGwgPj0g MCkKKwkJaW50ZWxfZW5hYmxlX3NoYXJlZF9kcGxsKGRldl9wcml2LCBwaXBlX2NvbmZpZy0+c2hh cmVkX2RwbGwpOwogCiAJaWYgKHBpcGVfY29uZmlnLT5oYXNfZHBfZW5jb2RlcikKIAkJaW50ZWxf ZHBfc2V0X21fbihpbnRlbF9jcnRjLCBNMV9OMSk7CkBAIC00OTEwLDcgKzQ5MDksNyBAQCBzdGF0 aWMgdm9pZCBoYXN3ZWxsX2NydGNfZW5hYmxlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIAlpbnRl bF9lbmFibGVfcGlwZShpbnRlbF9jcnRjKTsKIAogCWlmIChpbnRlbF9jcnRjLT5jb25maWctPmhh c19wY2hfZW5jb2RlcikKLQkJbHB0X3BjaF9lbmFibGUoY3J0Yyk7CisJCWxwdF9wY2hfZW5hYmxl KGRldl9wcml2LCBwaXBlX2NvbmZpZyk7CiAKIAlpZiAoaW50ZWxfY3J0Yy0+Y29uZmlnLT5kcF9l bmNvZGVyX2lzX21zdCkKIAkJaW50ZWxfZGRpX3NldF92Y19wYXlsb2FkX2FsbG9jKGNydGMsCkBA IC0xMTkyOSw3ICsxMTkyOCw4IEBAIGNoZWNrX3NoYXJlZF9kcGxsX3N0YXRlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCiAJCSAgICAgcGxsLT5vbiwgYWN0aXZlKTsKIAogCQlmb3JfZWFjaF9pbnRl bF9jcnRjKGRldiwgY3J0YykgewotCQkJaWYgKGNydGMtPmJhc2Uuc3RhdGUtPmFjdGl2ZSAmJiBp bnRlbF9jcnRjX3RvX3NoYXJlZF9kcGxsKGNydGMpID09IHBsbCkKKwkJCWlmIChjcnRjLT5iYXNl LnN0YXRlLT5hY3RpdmUgJiYKKwkJCSAgICB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMtPmJhc2Uu c3RhdGUpLT5zaGFyZWRfZHBsbCA9PSBpKQogCQkJCWFjdGl2ZV9jcnRjcysrOwogCQl9CiAJCUk5 MTVfU1RBVEVfV0FSTihwbGwtPmFjdGl2ZSAhPSBhY3RpdmVfY3J0Y3MsCkBAIC0xMjMxMSw3ICsx MjMxMSw2IEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2F0b21pY19z dGF0ZSAqc3RhdGUpCiAJX19pbnRlbF9zZXRfbW9kZV91cGRhdGVfcGxhbmVzKGRldiwgc3RhdGUp OwogCiAJZm9yX2VhY2hfY3J0Y19pbl9zdGF0ZShzdGF0ZSwgY3J0Yywgb2xkX2NydGNfc3RhdGUs IGkpIHsKLQkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNy dGMpOwogCQlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CiAKIAkJaWYgKCFu ZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSkKQEAgLTEyMzI0LDggKzEyMzIzLDcgQEAgc3RhdGlj IGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIAkJ aW50ZWxfY3J0Y19kcG1zX292ZXJsYXlfZGlzYWJsZSh0b19pbnRlbF9jcnRjKGNydGMpKTsKIAkJ ZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19kaXNhYmxlKGNydGMsIHBpcGVfY29uZmlnKTsKIAotCQlp ZiAoaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChpbnRlbF9jcnRjKSkKLQkJCWludGVsX2Rpc2Fi bGVfc2hhcmVkX2RwbGwoaW50ZWxfY3J0Yyk7CisJCWludGVsX2Rpc2FibGVfc2hhcmVkX2RwbGwo ZGV2X3ByaXYsIHBpcGVfY29uZmlnLT5zaGFyZWRfZHBsbCk7CiAJfQogCiAJLyogT25seSBhZnRl ciBkaXNhYmxpbmcgYWxsIG91dHB1dCBwaXBlbGluZXMgdGhhdCB3aWxsIGJlIGNoYW5nZWQgY2Fu IHdlCkBAIC0xMjcxOSw3ICsxMjcxNyw5IEBAIHN0YXRpYyB2b2lkIGlieF9wY2hfZHBsbF9kaXNh YmxlKHN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiwKIAogCS8qIE1ha2Ugc3VyZSBu byB0cmFuc2NvZGVyIGlzbid0IHN0aWxsIGRlcGVuZGluZyBvbiB1cy4gKi8KIAlmb3JfZWFjaF9p bnRlbF9jcnRjKGRldiwgY3J0YykgewotCQlpZiAoaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChj cnRjKSA9PSBwbGwpCisJCWludCBpID0gcGxsIC0gZGV2X3ByaXYtPnNoYXJlZF9kcGxsczsKKwor CQlpZiAodG9faW50ZWxfY3J0Y19zdGF0ZShjcnRjLT5iYXNlLnN0YXRlKS0+c2hhcmVkX2RwbGwg PT0gaSkKIAkJCWFzc2VydF9wY2hfdHJhbnNjb2Rlcl9kaXNhYmxlZChkZXZfcHJpdiwgY3J0Yy0+ cGlwZSk7CiAJfQogCkBAIC0xNDc5OCw3ICsxNDc5OCw4IEBAIHN0YXRpYyB2b2lkIGludGVsX21v ZGVzZXRfcmVhZG91dF9od19zdGF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LAogCQlwbGwtPmFj dGl2ZSA9IDA7CiAJCXBsbC0+Y29uZmlnLmNydGNfbWFzayA9IDA7CiAJCWZvcl9lYWNoX2ludGVs X2NydGMoZGV2LCBjcnRjKSB7Ci0JCQlpZiAoY3J0Yy0+YmFzZS5zdGF0ZS0+YWN0aXZlICYmIGlu dGVsX2NydGNfdG9fc2hhcmVkX2RwbGwoY3J0YykgPT0gcGxsKSB7CisJCQlpZiAoY3J0Yy0+YmFz ZS5zdGF0ZS0+YWN0aXZlICYmCisJCQkgICAgaSA9PSB0b19pbnRlbF9jcnRjX3N0YXRlKGNydGMt PmJhc2Uuc3RhdGUpLT5zaGFyZWRfZHBsbCkgewogCQkJCXBsbC0+YWN0aXZlKys7CiAJCQkJcGxs LT5jb25maWcuY3J0Y19tYXNrIHw9IDEgPDwgY3J0Yy0+cGlwZTsKIAkJCX0KZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKaW5kZXggMWEwYjBjZDg1N2MzLi43OTc5YTJmNjgzOGMgMTAwNjQ0Ci0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2Rydi5oCkBAIC0xMDU4LDEwICsxMDU4LDggQEAgYm9vbCBpbnRlbF93bV9uZWVk X3VwZGF0ZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKIAkJCSAgc3RydWN0IGRybV9wbGFuZV9z dGF0ZSAqc3RhdGUpOwogCiAvKiBzaGFyZWQgZHBsbCBmdW5jdGlvbnMgKi8KLXN0cnVjdCBpbnRl bF9zaGFyZWRfZHBsbCAqaW50ZWxfY3J0Y190b19zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0 YyAqY3J0Yyk7CiB2b2lkIGFzc2VydF9zaGFyZWRfZHBsbChzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0 ZSAqZGV2X3ByaXYsCi0JCQlzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKnBsbCwKLQkJCWJvb2wg c3RhdGUpOworCQkJZW51bSBpbnRlbF9kcGxsX2lkLCBib29sIHN0YXRlKTsKICNkZWZpbmUgYXNz ZXJ0X3NoYXJlZF9kcGxsX2VuYWJsZWQoZCwgcCkgYXNzZXJ0X3NoYXJlZF9kcGxsKGQsIHAsIHRy dWUpCiAjZGVmaW5lIGFzc2VydF9zaGFyZWRfZHBsbF9kaXNhYmxlZChkLCBwKSBhc3NlcnRfc2hh cmVkX2RwbGwoZCwgcCwgZmFsc2UpCiBzdHJ1Y3QgaW50ZWxfc2hhcmVkX2RwbGwgKmludGVsX2dl dF9zaGFyZWRfZHBsbChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2ludGVsX2x2ZHMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2x2ZHMuYwppbmRleCA4YWFhYTI0MTQ0ZjAuLjUyNzg4ZWQ2Zjc3NSAxMDA2NDQKLS0tIGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHZkcy5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2x2ZHMuYwpAQCAtMTQ5LDcgKzE0OSw3IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9l bmFibGVfbHZkcyhzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcikKIAlpZiAoSEFTX1BDSF9T UExJVChkZXYpKSB7CiAJCWFzc2VydF9mZGlfcnhfcGxsX2Rpc2FibGVkKGRldl9wcml2LCBwaXBl KTsKIAkJYXNzZXJ0X3NoYXJlZF9kcGxsX2Rpc2FibGVkKGRldl9wcml2LAotCQkJCQkgICAgaW50 ZWxfY3J0Y190b19zaGFyZWRfZHBsbChjcnRjKSk7CisJCQkJCSAgICBwaXBlX2NvbmZpZy0+c2hh cmVkX2RwbGwpOwogCX0gZWxzZSB7CiAJCWFzc2VydF9wbGxfZGlzYWJsZWQoZGV2X3ByaXYsIHBp cGUpOwogCX0KLS0gCjIuMS4wCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVz a3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lu dGVsLWdmeAo=