From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH v3] drm/i915: Allocate a drm_atomic_state for the legacy modeset code Date: Tue, 17 Mar 2015 08:46:27 +0200 Message-ID: <1426574787-12351-1-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1426240142-24538-4-git-send-email-ander.conselvan.de.oliveira@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 ESMTP id C03186E192 for ; Mon, 16 Mar 2015 23:46:25 -0700 (PDT) In-Reply-To: <1426240142-24538-4-git-send-email-ander.conselvan.de.oliveira@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 Rm9yIHRoZSBhdG9taWMgY29udmVyc2lvbiwgdGhlIG1vZGUgc2V0IHBhdGhzIG5lZWQgdG8gYmUg Y2hhbmdlZCB0byByZWx5Cm9uIGFuIGF0b21pYyBzdGF0ZSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBz dGFnZWQgY29uZmlnLiBCeSB1c2luZyBhbgphdG9taWMgc3RhdGUgZm9yIHRoZSBsZWdhY3kgY29k ZSwgd2Ugd2lsbCBiZSBhYmxlIHRvIGNvbnZlcnQgdGhlIGNvZGUKYmFzZSBpbiBzbWFsbCBjaHVu a3MuCgp2MjogU3F1YXNoIHBhdGNoIHRoYXQgYWRkcyBzdGF0IGFyZ3VtZW50IHRvIGludGVsX3Nl dF9tb2RlKCkuIChBbmRlcikKICAgIE1ha2UgZXZlcnkgY2FsbGVyIG9mIGludGVsX3NldF9tb2Rl KCkgYWxsb2NhdGUgc3RhdGUuIChEYW5pZWwpCiAgICBDYWxsIGRybV9hdG9taWNfc3RhdGVfY2xl YXIoKSBpbiBzZXQgY29uZmlnJ3MgZXJyb3IgcGF0aC4gKERhbmllbCkKCnYzOiBDb3B5IHN0YWdl ZCBjb25maWcgdG8gYXRvbWljIHN0YXRlIGluIGZvcmNlIHJlc3RvcmUgcGF0aC4gKFBSVFMpCgpT aWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZh bi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxf ZGlzcGxheS5jIHwgMTk3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tCiAxIGZp bGUgY2hhbmdlZCwgMTYyIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA4NDU4YmY1Li4zYzhmN2Y0IDEwMDY0NAotLS0g YS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC04Myw3ICs4Myw4IEBAIHN0YXRpYyB2b2lkIGly b25sYWtlX3BjaF9jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICAgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIAogc3RhdGljIGludCBpbnRlbF9z ZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlLAotCQkJICBpbnQgeCwgaW50IHksIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYik7 CisJCQkgIGludCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiLAorCQkJ ICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogc3RhdGljIGludCBpbnRlbF9mcmFt ZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQkJICBzdHJ1Y3QgaW50ZWxf ZnJhbWVidWZmZXIgKmlmYiwKIAkJCQkgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2Nt ZCwKQEAgLTg4MDIsNiArODgwMyw3IEBAIGJvb2wgaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUo c3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gZW5jb2Rlci0+ZGV2OwogCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOwogCXN0cnVjdCBk cm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29uZmlnOworCXN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSA9IE5VTEw7CiAJaW50IHJldCwgaSA9IC0xOwogCiAJRFJNX0RF QlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc10sIFtFTkNPREVSOiVkOiVzXVxuIiwKQEAgLTg4ODMs NiArODg4NSwxMiBAQCByZXRyeToKIAlvbGQtPmxvYWRfZGV0ZWN0X3RlbXAgPSB0cnVlOwogCW9s ZC0+cmVsZWFzZV9mYiA9IE5VTEw7CiAKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2Mo ZGV2KTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1cm4gZmFsc2U7CisKKwlzdGF0ZS0+YWNxdWlyZV9j dHggPSBjdHg7CisKIAlpZiAoIW1vZGUpCiAJCW1vZGUgPSAmbG9hZF9kZXRlY3RfbW9kZTsKIApA QCAtODkwNSw3ICs4OTEzLDcgQEAgcmV0cnk6CiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlpZiAoaW50 ZWxfc2V0X21vZGUoY3J0YywgbW9kZSwgMCwgMCwgZmIpKSB7CisJaWYgKGludGVsX3NldF9tb2Rl KGNydGMsIG1vZGUsIDAsIDAsIGZiLCBzdGF0ZSkpIHsKIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVk IHRvIHNldCBtb2RlIG9uIGxvYWQtZGV0ZWN0IHBpcGVcbiIpOwogCQlpZiAob2xkLT5yZWxlYXNl X2ZiKQogCQkJb2xkLT5yZWxlYXNlX2ZiLT5mdW5jcy0+ZGVzdHJveShvbGQtPnJlbGVhc2VfZmIp OwpAQCAtODkyNCw2ICs4OTMyLDExIEBAIHJldHJ5OgogCWVsc2UKIAkJaW50ZWxfY3J0Yy0+bmV3 X2NvbmZpZyA9IE5VTEw7CiBmYWlsX3VubG9jazoKKwlpZiAoc3RhdGUpIHsKKwkJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJc3RhdGUgPSBOVUxMOworCX0KKwogCWlmIChyZXQgPT0g LUVERUFETEspIHsKIAkJZHJtX21vZGVzZXRfYmFja29mZihjdHgpOwogCQlnb3RvIHJldHJ5OwpA QCAtODkzNiwyMiArODk0OSwzNCBAQCB2b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRlY3RfcGlw ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJCSAgICBzdHJ1Y3QgaW50ZWxf bG9hZF9kZXRlY3RfcGlwZSAqb2xkLAogCQkJCSAgICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWly ZV9jdHggKmN0eCkKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7 CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIgPQogCQlpbnRlbF9hdHRhY2hl ZF9lbmNvZGVyKGNvbm5lY3Rvcik7CiAJc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmlu dGVsX2VuY29kZXItPmJhc2U7CiAJc3RydWN0IGRybV9jcnRjICpjcnRjID0gZW5jb2Rlci0+Y3J0 YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7 CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwogCiAJRFJNX0RFQlVHX0tNUygiW0NP Tk5FQ1RPUjolZDolc10sIFtFTkNPREVSOiVkOiVzXVxuIiwKIAkJICAgICAgY29ubmVjdG9yLT5i YXNlLmlkLCBjb25uZWN0b3ItPm5hbWUsCiAJCSAgICAgIGVuY29kZXItPmJhc2UuaWQsIGVuY29k ZXItPm5hbWUpOwogCiAJaWYgKG9sZC0+bG9hZF9kZXRlY3RfdGVtcCkgeworCQlzdGF0ZSA9IGRy bV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwkJaWYgKCFzdGF0ZSkgeworCQkJRFJNX0RFQlVH X0tNUygiY2FuJ3QgcmVsZWFzZSBsb2FkIGRldGVjdCBwaXBlXG4iKTsKKwkJCXJldHVybjsKKwkJ fQorCisJCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKKwogCQl0b19pbnRlbF9jb25uZWN0b3Io Y29ubmVjdG9yKS0+bmV3X2VuY29kZXIgPSBOVUxMOwogCQlpbnRlbF9lbmNvZGVyLT5uZXdfY3J0 YyA9IE5VTEw7CiAJCWludGVsX2NydGMtPm5ld19lbmFibGVkID0gZmFsc2U7CiAJCWludGVsX2Ny dGMtPm5ld19jb25maWcgPSBOVUxMOwotCQlpbnRlbF9zZXRfbW9kZShjcnRjLCBOVUxMLCAwLCAw LCBOVUxMKTsKKwkJaW50ZWxfc2V0X21vZGUoY3J0YywgTlVMTCwgMCwgMCwgTlVMTCwgc3RhdGUp OworCisJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CiAKIAkJaWYgKG9sZC0+cmVsZWFz ZV9mYikgewogCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZShvbGQtPnJlbGVh c2VfZmIpOwpAQCAtMTAzNDUsMTAgKzEwMzcwLDIyIEBAIHN0YXRpYyBib29sIGNoZWNrX2RpZ2l0 YWxfcG9ydF9jb25mbGljdHMoc3RydWN0IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gdHJ1ZTsK IH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKK3N0YXRpYyB2b2lkCitjbGVh cl9pbnRlbF9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQor eworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSB0bXBfc3RhdGU7CisKKwkvKiBDbGVhciBvbmx5IHRo ZSBpbnRlbCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjcnRjIHN0YXRlICovCisJdG1wX3N0YXRlID0g Y3J0Y19zdGF0ZS0+YmFzZTsKKwltZW1zZXQoY3J0Y19zdGF0ZSwgMCwgc2l6ZW9mICpjcnRjX3N0 YXRlKTsKKwljcnRjX3N0YXRlLT5iYXNlID0gdG1wX3N0YXRlOworfQorCitzdGF0aWMgaW50CiBp bnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCSAgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpt b2RlKQorCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKKwkJCSAgc3RydWN0IGRy bV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRj LT5kZXY7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CkBAIC0xMDM1OCwxNyArMTAz OTUsMTkgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs CiAKIAlpZiAoIWNoZWNrX2VuY29kZXJfY2xvbmluZyh0b19pbnRlbF9jcnRjKGNydGMpKSkgewog CQlEUk1fREVCVUdfS01TKCJyZWplY3RpbmcgaW52YWxpZCBjbG9uaW5nIGNvbmZpZ3VyYXRpb25c biIpOwotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQog CiAJaWYgKCFjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKGRldikpIHsKIAkJRFJNX0RFQlVH X0tNUygicmVqZWN0aW5nIGNvbmZsaWN0aW5nIGRpZ2l0YWwgcG9ydCBjb25maWd1cmF0aW9uXG4i KTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJCXJldHVybiAtRUlOVkFMOwogCX0KIAot CXBpcGVfY29uZmlnID0ga3phbGxvYyhzaXplb2YoKnBpcGVfY29uZmlnKSwgR0ZQX0tFUk5FTCk7 Ci0JaWYgKCFwaXBlX2NvbmZpZykKLQkJcmV0dXJuIEVSUl9QVFIoLUVOT01FTSk7CisJcGlwZV9j b25maWcgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIHRvX2ludGVsX2NydGMo Y3J0YykpOworCWlmIChJU19FUlIocGlwZV9jb25maWcpKQorCQlyZXR1cm4gUFRSX0VSUihwaXBl X2NvbmZpZyk7CisKKwljbGVhcl9pbnRlbF9jcnRjX3N0YXRlKHBpcGVfY29uZmlnKTsKIAogCXBp cGVfY29uZmlnLT5iYXNlLmNydGMgPSBjcnRjOwogCWRybV9tb2RlX2NvcHkoJnBpcGVfY29uZmln LT5iYXNlLmFkanVzdGVkX21vZGUsIG1vZGUpOwpAQCAtMTA0NjMsMTAgKzEwNTAyLDkgQEAgZW5j b2Rlcl9yZXRyeToKIAlEUk1fREVCVUdfS01TKCJwbGFuZSBicHA6ICVpLCBwaXBlIGJwcDogJWks IGRpdGhlcmluZzogJWlcbiIsCiAJCSAgICAgIHBsYW5lX2JwcCwgcGlwZV9jb25maWctPnBpcGVf YnBwLCBwaXBlX2NvbmZpZy0+ZGl0aGVyKTsKIAotCXJldHVybiBwaXBlX2NvbmZpZzsKKwlyZXR1 cm4gMDsKIGZhaWw6Ci0Ja2ZyZWUocGlwZV9jb25maWcpOwotCXJldHVybiBFUlJfUFRSKHJldCk7 CisJcmV0dXJuIHJldDsKIH0KIAogLyogQ29tcHV0ZXMgd2hpY2ggY3J0Y3MgYXJlIGFmZmVjdGVk IGFuZCBzZXRzIHRoZSByZWxldmFudCBiaXRzIGluIHRoZSBtYXNrLiBGb3IKQEAgLTExMTQ0LDE3 ICsxMTE4MiwxOSBAQCBzdGF0aWMgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKgogaW50ZWxfbW9k ZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJCQkgICAgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogCQkJICAgICBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlLAogCQkJICAgICB1 bnNpZ25lZCAqbW9kZXNldF9waXBlcywKIAkJCSAgICAgdW5zaWduZWQgKnByZXBhcmVfcGlwZXMs CiAJCQkgICAgIHVuc2lnbmVkICpkaXNhYmxlX3BpcGVzKQogewogCXN0cnVjdCBpbnRlbF9jcnRj X3N0YXRlICpwaXBlX2NvbmZpZyA9IE5VTEw7CisJaW50IHJldCA9IDA7CiAKIAlpbnRlbF9tb2Rl c2V0X2FmZmVjdGVkX3BpcGVzKGNydGMsIG1vZGVzZXRfcGlwZXMsCiAJCQkJICAgICBwcmVwYXJl X3BpcGVzLCBkaXNhYmxlX3BpcGVzKTsKIAogCWlmICgoKm1vZGVzZXRfcGlwZXMpID09IDApCi0J CWdvdG8gb3V0OworCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICogTm90ZSB0aGlzIG5lZWRzIGNo YW5nZXMgd2hlbiB3ZSBzdGFydCB0cmFja2luZyBtdWx0aXBsZSBtb2RlcwpAQCAtMTExNjIsMTQg KzExMjAyLDE3IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc3RydWN0IGRybV9jcnRj ICpjcnRjLAogCSAqIChpLmUuIG9uZSBwaXBlX2NvbmZpZyBmb3IgZWFjaCBjcnRjKSByYXRoZXIg dGhhbiBqdXN0IHRoZSBvbmUKIAkgKiBmb3IgdGhpcyBjcnRjLgogCSAqLwotCXBpcGVfY29uZmln ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhjcnRjLCBmYiwgbW9kZSk7Ci0JaWYgKElTX0VS UihwaXBlX2NvbmZpZykpIHsKLQkJZ290byBvdXQ7Ci0JfQorCXJldCA9IGludGVsX21vZGVzZXRf cGlwZV9jb25maWcoY3J0YywgZmIsIG1vZGUsIHN0YXRlKTsKKwlpZiAocmV0KQorCQlyZXR1cm4g RVJSX1BUUihyZXQpOworCisJcGlwZV9jb25maWcgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3Rh dGUoc3RhdGUsIHRvX2ludGVsX2NydGMoY3J0YykpOworCWlmIChJU19FUlIocGlwZV9jb25maWcp KQorCQlyZXR1cm4gcGlwZV9jb25maWc7CisKIAlpbnRlbF9kdW1wX3BpcGVfY29uZmlnKHRvX2lu dGVsX2NydGMoY3J0YyksIHBpcGVfY29uZmlnLAogCQkJICAgICAgICJbbW9kZXNldF0iKTsKIAot b3V0OgogCXJldHVybiBwaXBlX2NvbmZpZzsKIH0KIApAQCAtMTEyMTQsNiArMTEyNTcsNyBAQCBz dGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCXN0cnVj dCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUg KmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq c2F2ZWRfbW9kZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZV9jb3B5ID0g TlVMTDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsKIAlpbnQgcmV0ID0gMDsKIApA QCAtMTEyMjEsNiArMTEyNjUsMTIgQEAgc3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVj dCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoIXNhdmVkX21vZGUpCiAJCXJldHVybiAtRU5PTUVNOwog CisJY3J0Y19zdGF0ZV9jb3B5ID0ga21hbGxvYyhzaXplb2YoKmNydGNfc3RhdGVfY29weSksIEdG UF9LRVJORUwpOworCWlmICghY3J0Y19zdGF0ZV9jb3B5KSB7CisJCXJldCA9IC1FTk9NRU07CisJ CWdvdG8gZG9uZTsKKwl9CisKIAkqc2F2ZWRfbW9kZSA9IGNydGMtPm1vZGU7CiAKIAlpZiAobW9k ZXNldF9waXBlcykKQEAgLTExMzA3LDYgKzExMzU3LDE5IEBAIGRvbmU6CiAJaWYgKHJldCAmJiBj cnRjLT5zdGF0ZS0+ZW5hYmxlKQogCQljcnRjLT5tb2RlID0gKnNhdmVkX21vZGU7CiAKKwlpZiAo cmV0ID09IDAgJiYgcGlwZV9jb25maWcpIHsKKwkJc3RydWN0IGludGVsX2NydGMgKmludGVsX2Ny dGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCisJCS8qIFRoZSBwaXBlX2NvbmZpZyB3aWxsIGJl IGZyZWVkIHdpdGggdGhlIGF0b21pYyBzdGF0ZSwgc28KKwkJICogbWFrZSBhIGNvcHkuICovCisJ CW1lbWNweShjcnRjX3N0YXRlX2NvcHksIGludGVsX2NydGMtPmNvbmZpZywKKwkJICAgICAgIHNp emVvZiAqY3J0Y19zdGF0ZV9jb3B5KTsKKwkJaW50ZWxfY3J0Yy0+Y29uZmlnID0gaW50ZWxfY3J0 Yy0+bmV3X2NvbmZpZyA9IGNydGNfc3RhdGVfY29weTsKKwkJaW50ZWxfY3J0Yy0+YmFzZS5zdGF0 ZSA9ICZjcnRjX3N0YXRlX2NvcHktPmJhc2U7CisJfSBlbHNlIHsKKwkJa2ZyZWUoY3J0Y19zdGF0 ZV9jb3B5KTsKKwl9CisKIAlrZnJlZShzYXZlZF9tb2RlKTsKIAlyZXR1cm4gcmV0OwogfQpAQCAt MTEzMzIsMjcgKzExMzk1LDgxIEBAIHN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGVfcGlwZXMoc3Ry dWN0IGRybV9jcnRjICpjcnRjLAogCiBzdGF0aWMgaW50IGludGVsX3NldF9tb2RlKHN0cnVjdCBk cm1fY3J0YyAqY3J0YywKIAkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCi0JCQkg IGludCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCisJCQkgIGludCB4LCBp bnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7 CiAJdW5zaWduZWQgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywgZGlzYWJsZV9waXBlczsK KwlpbnQgcmV0ID0gMDsKIAotCXBpcGVfY29uZmlnID0gaW50ZWxfbW9kZXNldF9jb21wdXRlX2Nv bmZpZyhjcnRjLCBtb2RlLCBmYiwKKwlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfY29tcHV0 ZV9jb25maWcoY3J0YywgbW9kZSwgZmIsIHN0YXRlLAogCQkJCQkJICAgJm1vZGVzZXRfcGlwZXMs CiAJCQkJCQkgICAmcHJlcGFyZV9waXBlcywKIAkJCQkJCSAgICZkaXNhYmxlX3BpcGVzKTsKIAot CWlmIChJU19FUlIocGlwZV9jb25maWcpKQotCQlyZXR1cm4gUFRSX0VSUihwaXBlX2NvbmZpZyk7 CisJaWYgKElTX0VSUihwaXBlX2NvbmZpZykpIHsKKwkJcmV0ID0gUFRSX0VSUihwaXBlX2NvbmZp Zyk7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IGludGVsX3NldF9tb2RlX3BpcGVzKGNydGMs IG1vZGUsIHgsIHksIGZiLCBwaXBlX2NvbmZpZywKKwkJCQkgICBtb2Rlc2V0X3BpcGVzLCBwcmVw YXJlX3BpcGVzLAorCQkJCSAgIGRpc2FibGVfcGlwZXMpOworCWlmIChyZXQpCisJCWdvdG8gb3V0 OwogCi0JcmV0dXJuIGludGVsX3NldF9tb2RlX3BpcGVzKGNydGMsIG1vZGUsIHgsIHksIGZiLCBw aXBlX2NvbmZpZywKLQkJCQkgICAgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywKLQkJCQkg ICAgZGlzYWJsZV9waXBlcyk7CitvdXQ6CisJcmV0dXJuIHJldDsKIH0KIAogdm9pZCBpbnRlbF9j cnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7Ci0JaW50ZWxfc2V0X21v ZGUoY3J0YywgJmNydGMtPm1vZGUsIGNydGMtPngsIGNydGMtPnksIGNydGMtPnByaW1hcnktPmZi KTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKKwlzdHJ1 Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKworCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhk ZXYpOworCWlmICghc3RhdGUpIHsKKwkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRdIG1vZGUgcmVz dG9yZSBmYWlsZWQsIG91dCBvZiBtZW1vcnkiLAorCQkJICAgICAgY3J0Yy0+YmFzZS5pZCk7CisJ CXJldHVybjsKKwl9CisKKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVfY29uZmlnLmFj cXVpcmVfY3R4OworCisJLyogVGhlIGZvcmNlIHJlc3RvcmUgcGF0aCBpbiB0aGUgSFcgcmVhZG91 dCBjb2RlIHJlbGllcyBvbiB0aGUgc3RhZ2VkCisJICogY29uZmlnIHN0aWxsIGtlZXBpbmcgdGhl IHVzZXIgcmVxdWVzdGVkIGNvbmZpZyB3aGlsZSB0aGUgYWN0dWFsCisJICogc3RhdGUgaGFzIGJl ZW4gb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbmZpZ3VyYXRpb24gcmVhZCBmcm9tIEhXLiBXZQorCSAq IG5lZWQgdG8gY29weSB0aGUgc3RhZ2VkIGNvbmZpZyB0byB0aGUgYXRvbWljIHN0YXRlLCBvdGhl cndpc2UgdGhlCisJICogbW9kZSBzZXQgd2lsbCBqdXN0IHJlYXBwbHkgdGhlIHN0YXRlIHRoZSBI VyBpcyBhbHJlYWR5IGluLiAqLworCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2LCBlbmNvZGVy KSB7CisJCWlmICgmZW5jb2Rlci0+bmV3X2NydGMtPmJhc2UgIT0gY3J0YykKKwkJCWNvbnRpbnVl OworCisJCWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3RvcikgeworCQkJaWYg KGNvbm5lY3Rvci0+bmV3X2VuY29kZXIgIT0gZW5jb2RlcikKKwkJCQljb250aW51ZTsKKworCQkJ Y29ubmVjdG9yX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRlKHN0YXRlLCAm Y29ubmVjdG9yLT5iYXNlKTsKKwkJCWlmIChJU19FUlIoY29ubmVjdG9yX3N0YXRlKSkgeworCQkJ CURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byBhZGQgW0NPTk5FQ1RPUjolZDolc10gdG8gc3RhdGU6 ICVsZFxuIiwKKwkJCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCisJCQkJCSAgICAg IGNvbm5lY3Rvci0+YmFzZS5uYW1lLAorCQkJCQkgICAgICBQVFJfRVJSKGNvbm5lY3Rvcl9zdGF0 ZSkpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQljb25uZWN0b3Jfc3RhdGUtPmNydGMgPSBj cnRjOworCQkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSAmZW5jb2Rlci0+YmFzZTsK KwkJfQorCX0KKworCWludGVsX3NldF9tb2RlKGNydGMsICZjcnRjLT5tb2RlLCBjcnRjLT54LCBj cnRjLT55LCBjcnRjLT5wcmltYXJ5LT5mYiwKKwkJICAgICAgIHN0YXRlKTsKKworCWRybV9hdG9t aWNfc3RhdGVfZnJlZShzdGF0ZSk7CiB9CiAKICN1bmRlZiBmb3JfZWFjaF9pbnRlbF9jcnRjX21h c2tlZApAQCAtMTE2NzcsNiArMTE3OTQsNyBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2Nv bmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRl djsKIAlzdHJ1Y3QgZHJtX21vZGVfc2V0IHNhdmVfc2V0OworCXN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSA9IE5VTEw7CiAJc3RydWN0IGludGVsX3NldF9jb25maWcgKmNvbmZpZzsKIAlz dHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CiAJdW5zaWduZWQgbW9kZXNldF9w aXBlcywgcHJlcGFyZV9waXBlcywgZGlzYWJsZV9waXBlczsKQEAgLTExNzIxLDEyICsxMTgzOSwy MCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0 ICpzZXQpCiAJICogc3VjaCBjYXNlcy4gKi8KIAlpbnRlbF9zZXRfY29uZmlnX2NvbXB1dGVfbW9k ZV9jaGFuZ2VzKHNldCwgY29uZmlnKTsKIAorCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxv YyhkZXYpOworCWlmICghc3RhdGUpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBvdXRfY29u ZmlnOworCX0KKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRldi0+bW9kZV9jb25maWcuYWNxdWly ZV9jdHg7CisKIAlyZXQgPSBpbnRlbF9tb2Rlc2V0X3N0YWdlX291dHB1dF9zdGF0ZShkZXYsIHNl dCwgY29uZmlnKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKIAlwaXBlX2NvbmZpZyA9IGlu dGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc2V0LT5jcnRjLCBzZXQtPm1vZGUsCi0JCQkJCQkg ICBzZXQtPmZiLAorCQkJCQkJICAgc2V0LT5mYiwgc3RhdGUsCiAJCQkJCQkgICAmbW9kZXNldF9w aXBlcywKIAkJCQkJCSAgICZwcmVwYXJlX3BpcGVzLAogCQkJCQkJICAgJmRpc2FibGVfcGlwZXMp OwpAQCAtMTE3NDYsMTAgKzExODcyLDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25m aWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQogCQkgKi8KIAl9CiAKLQkvKiBzZXRfbW9kZSB3 aWxsIGZyZWUgaXQgaW4gdGhlIG1vZGVfY2hhbmdlZCBjYXNlICovCi0JaWYgKCFjb25maWctPm1v ZGVfY2hhbmdlZCkKLQkJa2ZyZWUocGlwZV9jb25maWcpOwotCiAJaW50ZWxfdXBkYXRlX3BpcGVf c2l6ZSh0b19pbnRlbF9jcnRjKHNldC0+Y3J0YykpOwogCiAJaWYgKGNvbmZpZy0+bW9kZV9jaGFu Z2VkKSB7CkBAIC0xMTc5NSw2ICsxMTkxNyw4IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRf Y29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKIGZhaWw6CiAJCWludGVsX3NldF9jb25m aWdfcmVzdG9yZV9zdGF0ZShkZXYsIGNvbmZpZyk7CiAKKwkJZHJtX2F0b21pY19zdGF0ZV9jbGVh cihzdGF0ZSk7CisKIAkJLyoKIAkJICogSEFDSzogaWYgdGhlIHBpcGUgd2FzIG9uLCBidXQgd2Ug ZGlkbid0IGhhdmUgYSBmcmFtZWJ1ZmZlciwKIAkJICogZm9yY2UgdGhlIHBpcGUgb2ZmIHRvIGF2 b2lkIG9vcHNpbmcgaW4gdGhlIG1vZGVzZXQgY29kZQpAQCAtMTE4MDcsMTEgKzExOTMxLDE1IEBA IGZhaWw6CiAJCS8qIFRyeSB0byByZXN0b3JlIHRoZSBjb25maWcgKi8KIAkJaWYgKGNvbmZpZy0+ bW9kZV9jaGFuZ2VkICYmCiAJCSAgICBpbnRlbF9zZXRfbW9kZShzYXZlX3NldC5jcnRjLCBzYXZl X3NldC5tb2RlLAotCQkJCSAgIHNhdmVfc2V0LngsIHNhdmVfc2V0LnksIHNhdmVfc2V0LmZiKSkK KwkJCQkgICBzYXZlX3NldC54LCBzYXZlX3NldC55LCBzYXZlX3NldC5mYiwKKwkJCQkgICBzdGF0 ZSkpCiAJCQlEUk1fRVJST1IoImZhaWxlZCB0byByZXN0b3JlIGNvbmZpZyBhZnRlciBtb2Rlc2V0 IGZhaWx1cmVcbiIpOwogCX0KIAogb3V0X2NvbmZpZzoKKwlpZiAoc3RhdGUpCisJCWRybV9hdG9t aWNfc3RhdGVfZnJlZShzdGF0ZSk7CisKIAlpbnRlbF9zZXRfY29uZmlnX2ZyZWUoY29uZmlnKTsK IAlyZXR1cm4gcmV0OwogfQpAQCAtMTM4NTIsOCArMTM5ODAsNyBAQCB2b2lkIGludGVsX21vZGVz ZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCXN0cnVjdCBkcm1f Y3J0YyAqY3J0YyA9CiAJCQkJZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5nW3BpcGVdOwog Ci0JCQlpbnRlbF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+bW9kZSwgY3J0Yy0+eCwgY3J0Yy0+eSwK LQkJCQkgICAgICAgY3J0Yy0+cHJpbWFyeS0+ZmIpOworCQkJaW50ZWxfY3J0Y19yZXN0b3JlX21v ZGUoY3J0Yyk7CiAJCX0KIAl9IGVsc2UgewogCQlpbnRlbF9tb2Rlc2V0X3VwZGF0ZV9zdGFnZWRf b3V0cHV0X3N0YXRlKGRldik7Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlz dHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZngK