From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH v4] drm/i915: Allocate a drm_atomic_state for the legacy modeset code Date: Wed, 18 Mar 2015 09:57:06 +0200 Message-ID: <1426665426-15735-1-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1426574787-12351-1-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 mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTP id 1F90D6E091 for ; Wed, 18 Mar 2015 00:57:09 -0700 (PDT) In-Reply-To: <1426574787-12351-1-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 ZCBjb25maWcgdG8gYXRvbWljIHN0YXRlIGluIGZvcmNlIHJlc3RvcmUgcGF0aC4gKEFuZGVyKQoK djQ6IERvbid0IHVwZGF0ZSAtPm5ld19jb25maWcgZm9yIGRpc2FibGVkIHBpcGVzIGluIF9faW50 ZWxfc2V0X21vZGUoKSwKICAgIHNpbmNlIGl0IGlzIGV4cGVjdGVkIHRvIGJlIE5VTEwgaW4gdGhh dCBjYXNlLiAoQW5kZXIpCgpTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVp cmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9n cHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMjAwICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTY1IGluc2VydGlvbnMoKyksIDM1IGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXku YyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwppbmRleCA4NDU4YmY1Li5j ZTM1NjQ3IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMK KysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCkBAIC04Myw3ICs4Myw4 IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3RydWN0IGludGVsX2NydGMg KmNydGMsCiAJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnKTsKIAog c3RhdGljIGludCBpbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlLAotCQkJICBpbnQgeCwgaW50IHksIHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKm9sZF9mYik7CisJCQkgIGludCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqb2xkX2ZiLAorCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpOwogc3Rh dGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJ CQkJICBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmlmYiwKIAkJCQkgIHN0cnVjdCBkcm1fbW9k ZV9mYl9jbWQyICptb2RlX2NtZCwKQEAgLTg4MDIsNiArODgwMyw3IEBAIGJvb2wgaW50ZWxfZ2V0 X2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwKIAlzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OwogCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiOwogCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9ICZkZXYtPm1vZGVfY29u ZmlnOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IE5VTEw7CiAJaW50IHJldCwg aSA9IC0xOwogCiAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc10sIFtFTkNPREVSOiVk OiVzXVxuIiwKQEAgLTg4ODMsNiArODg4NSwxMiBAQCByZXRyeToKIAlvbGQtPmxvYWRfZGV0ZWN0 X3RlbXAgPSB0cnVlOwogCW9sZC0+cmVsZWFzZV9mYiA9IE5VTEw7CiAKKwlzdGF0ZSA9IGRybV9h dG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0YXRlKQorCQlyZXR1cm4gZmFsc2U7CisK KwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7CisKIAlpZiAoIW1vZGUpCiAJCW1vZGUgPSAmbG9h ZF9kZXRlY3RfbW9kZTsKIApAQCAtODkwNSw3ICs4OTEzLDcgQEAgcmV0cnk6CiAJCWdvdG8gZmFp bDsKIAl9CiAKLQlpZiAoaW50ZWxfc2V0X21vZGUoY3J0YywgbW9kZSwgMCwgMCwgZmIpKSB7CisJ aWYgKGludGVsX3NldF9tb2RlKGNydGMsIG1vZGUsIDAsIDAsIGZiLCBzdGF0ZSkpIHsKIAkJRFJN X0RFQlVHX0tNUygiZmFpbGVkIHRvIHNldCBtb2RlIG9uIGxvYWQtZGV0ZWN0IHBpcGVcbiIpOwog CQlpZiAob2xkLT5yZWxlYXNlX2ZiKQogCQkJb2xkLT5yZWxlYXNlX2ZiLT5mdW5jcy0+ZGVzdHJv eShvbGQtPnJlbGVhc2VfZmIpOwpAQCAtODkyNCw2ICs4OTMyLDExIEBAIHJldHJ5OgogCWVsc2UK IAkJaW50ZWxfY3J0Yy0+bmV3X2NvbmZpZyA9IE5VTEw7CiBmYWlsX3VubG9jazoKKwlpZiAoc3Rh dGUpIHsKKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJc3RhdGUgPSBOVUxMOwor CX0KKwogCWlmIChyZXQgPT0gLUVERUFETEspIHsKIAkJZHJtX21vZGVzZXRfYmFja29mZihjdHgp OwogCQlnb3RvIHJldHJ5OwpAQCAtODkzNiwyMiArODk0OSwzNCBAQCB2b2lkIGludGVsX3JlbGVh c2VfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAogCQkJ CSAgICBzdHJ1Y3QgaW50ZWxfbG9hZF9kZXRlY3RfcGlwZSAqb2xkLAogCQkJCSAgICBzdHJ1Y3Qg ZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKIHsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 ID0gY29ubmVjdG9yLT5kZXY7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmludGVsX2VuY29kZXIg PQogCQlpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7CiAJc3RydWN0IGRybV9lbmNv ZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7CiAJc3RydWN0IGRybV9jcnRjICpj cnRjID0gZW5jb2Rlci0+Y3J0YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRv X2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlOwogCiAJ RFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc10sIFtFTkNPREVSOiVkOiVzXVxuIiwKIAkJ ICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUsCiAJCSAgICAgIGVuY29k ZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwogCiAJaWYgKG9sZC0+bG9hZF9kZXRlY3RfdGVt cCkgeworCQlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwkJaWYgKCFzdGF0 ZSkgeworCQkJRFJNX0RFQlVHX0tNUygiY2FuJ3QgcmVsZWFzZSBsb2FkIGRldGVjdCBwaXBlXG4i KTsKKwkJCXJldHVybjsKKwkJfQorCisJCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKKwogCQl0 b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKS0+bmV3X2VuY29kZXIgPSBOVUxMOwogCQlpbnRl bF9lbmNvZGVyLT5uZXdfY3J0YyA9IE5VTEw7CiAJCWludGVsX2NydGMtPm5ld19lbmFibGVkID0g ZmFsc2U7CiAJCWludGVsX2NydGMtPm5ld19jb25maWcgPSBOVUxMOwotCQlpbnRlbF9zZXRfbW9k ZShjcnRjLCBOVUxMLCAwLCAwLCBOVUxMKTsKKwkJaW50ZWxfc2V0X21vZGUoY3J0YywgTlVMTCwg MCwgMCwgTlVMTCwgc3RhdGUpOworCisJCWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CiAK IAkJaWYgKG9sZC0+cmVsZWFzZV9mYikgewogCQkJZHJtX2ZyYW1lYnVmZmVyX3VucmVnaXN0ZXJf cHJpdmF0ZShvbGQtPnJlbGVhc2VfZmIpOwpAQCAtMTAzNDUsMTAgKzEwMzcwLDIyIEBAIHN0YXRp YyBib29sIGNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoc3RydWN0IGRybV9kZXZpY2UgKmRl dikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoK K3N0YXRpYyB2b2lkCitjbGVhcl9pbnRlbF9jcnRjX3N0YXRlKHN0cnVjdCBpbnRlbF9jcnRjX3N0 YXRlICpjcnRjX3N0YXRlKQoreworCXN0cnVjdCBkcm1fY3J0Y19zdGF0ZSB0bXBfc3RhdGU7CisK KwkvKiBDbGVhciBvbmx5IHRoZSBpbnRlbCBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBjcnRjIHN0YXRl ICovCisJdG1wX3N0YXRlID0gY3J0Y19zdGF0ZS0+YmFzZTsKKwltZW1zZXQoY3J0Y19zdGF0ZSwg MCwgc2l6ZW9mICpjcnRjX3N0YXRlKTsKKwljcnRjX3N0YXRlLT5iYXNlID0gdG1wX3N0YXRlOwor fQorCitzdGF0aWMgaW50CiBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywKIAkJCSAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCQkgIHN0cnVjdCBk cm1fZGlzcGxheV9tb2RlICptb2RlKQorCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9k ZSwKKwkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7 CkBAIC0xMDM1OCwxNyArMTAzOTUsMTkgQEAgaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhzdHJ1 Y3QgZHJtX2NydGMgKmNydGMsCiAKIAlpZiAoIWNoZWNrX2VuY29kZXJfY2xvbmluZyh0b19pbnRl bF9jcnRjKGNydGMpKSkgewogCQlEUk1fREVCVUdfS01TKCJyZWplY3RpbmcgaW52YWxpZCBjbG9u aW5nIGNvbmZpZ3VyYXRpb25cbiIpOwotCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKKwkJcmV0 dXJuIC1FSU5WQUw7CiAJfQogCiAJaWYgKCFjaGVja19kaWdpdGFsX3BvcnRfY29uZmxpY3RzKGRl dikpIHsKIAkJRFJNX0RFQlVHX0tNUygicmVqZWN0aW5nIGNvbmZsaWN0aW5nIGRpZ2l0YWwgcG9y dCBjb25maWd1cmF0aW9uXG4iKTsKLQkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CisJCXJldHVy biAtRUlOVkFMOwogCX0KIAotCXBpcGVfY29uZmlnID0ga3phbGxvYyhzaXplb2YoKnBpcGVfY29u ZmlnKSwgR0ZQX0tFUk5FTCk7Ci0JaWYgKCFwaXBlX2NvbmZpZykKLQkJcmV0dXJuIEVSUl9QVFIo LUVOT01FTSk7CisJcGlwZV9jb25maWcgPSBpbnRlbF9hdG9taWNfZ2V0X2NydGNfc3RhdGUoc3Rh dGUsIHRvX2ludGVsX2NydGMoY3J0YykpOworCWlmIChJU19FUlIocGlwZV9jb25maWcpKQorCQly ZXR1cm4gUFRSX0VSUihwaXBlX2NvbmZpZyk7CisKKwljbGVhcl9pbnRlbF9jcnRjX3N0YXRlKHBp cGVfY29uZmlnKTsKIAogCXBpcGVfY29uZmlnLT5iYXNlLmNydGMgPSBjcnRjOwogCWRybV9tb2Rl X2NvcHkoJnBpcGVfY29uZmlnLT5iYXNlLmFkanVzdGVkX21vZGUsIG1vZGUpOwpAQCAtMTA0NjMs MTAgKzEwNTAyLDkgQEAgZW5jb2Rlcl9yZXRyeToKIAlEUk1fREVCVUdfS01TKCJwbGFuZSBicHA6 ICVpLCBwaXBlIGJwcDogJWksIGRpdGhlcmluZzogJWlcbiIsCiAJCSAgICAgIHBsYW5lX2JwcCwg cGlwZV9jb25maWctPnBpcGVfYnBwLCBwaXBlX2NvbmZpZy0+ZGl0aGVyKTsKIAotCXJldHVybiBw aXBlX2NvbmZpZzsKKwlyZXR1cm4gMDsKIGZhaWw6Ci0Ja2ZyZWUocGlwZV9jb25maWcpOwotCXJl dHVybiBFUlJfUFRSKHJldCk7CisJcmV0dXJuIHJldDsKIH0KIAogLyogQ29tcHV0ZXMgd2hpY2gg Y3J0Y3MgYXJlIGFmZmVjdGVkIGFuZCBzZXRzIHRoZSByZWxldmFudCBiaXRzIGluIHRoZSBtYXNr LiBGb3IKQEAgLTExMTQ0LDE3ICsxMTE4MiwxOSBAQCBzdGF0aWMgc3RydWN0IGludGVsX2NydGNf c3RhdGUgKgogaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAJCQkgICAgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAogCQkJICAgICBzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwKKwkJCSAgICAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlLAogCQkJICAgICB1bnNpZ25lZCAqbW9kZXNldF9waXBlcywKIAkJCSAgICAgdW5zaWdu ZWQgKnByZXBhcmVfcGlwZXMsCiAJCQkgICAgIHVuc2lnbmVkICpkaXNhYmxlX3BpcGVzKQogewog CXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZyA9IE5VTEw7CisJaW50IHJldCA9 IDA7CiAKIAlpbnRlbF9tb2Rlc2V0X2FmZmVjdGVkX3BpcGVzKGNydGMsIG1vZGVzZXRfcGlwZXMs CiAJCQkJICAgICBwcmVwYXJlX3BpcGVzLCBkaXNhYmxlX3BpcGVzKTsKIAogCWlmICgoKm1vZGVz ZXRfcGlwZXMpID09IDApCi0JCWdvdG8gb3V0OworCQlyZXR1cm4gTlVMTDsKIAogCS8qCiAJICog Tm90ZSB0aGlzIG5lZWRzIGNoYW5nZXMgd2hlbiB3ZSBzdGFydCB0cmFja2luZyBtdWx0aXBsZSBt b2RlcwpAQCAtMTExNjIsMTQgKzExMjAyLDE3IEBAIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25m aWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCSAqIChpLmUuIG9uZSBwaXBlX2NvbmZpZyBmb3Ig ZWFjaCBjcnRjKSByYXRoZXIgdGhhbiBqdXN0IHRoZSBvbmUKIAkgKiBmb3IgdGhpcyBjcnRjLgog CSAqLwotCXBpcGVfY29uZmlnID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhjcnRjLCBmYiwg bW9kZSk7Ci0JaWYgKElTX0VSUihwaXBlX2NvbmZpZykpIHsKLQkJZ290byBvdXQ7Ci0JfQorCXJl dCA9IGludGVsX21vZGVzZXRfcGlwZV9jb25maWcoY3J0YywgZmIsIG1vZGUsIHN0YXRlKTsKKwlp ZiAocmV0KQorCQlyZXR1cm4gRVJSX1BUUihyZXQpOworCisJcGlwZV9jb25maWcgPSBpbnRlbF9h dG9taWNfZ2V0X2NydGNfc3RhdGUoc3RhdGUsIHRvX2ludGVsX2NydGMoY3J0YykpOworCWlmIChJ U19FUlIocGlwZV9jb25maWcpKQorCQlyZXR1cm4gcGlwZV9jb25maWc7CisKIAlpbnRlbF9kdW1w X3BpcGVfY29uZmlnKHRvX2ludGVsX2NydGMoY3J0YyksIHBpcGVfY29uZmlnLAogCQkJICAgICAg ICJbbW9kZXNldF0iKTsKIAotb3V0OgogCXJldHVybiBwaXBlX2NvbmZpZzsKIH0KIApAQCAtMTEy MTQsNiArMTEyNTcsNyBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9j cnRjICpjcnRjLAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0 IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKIAlzdHJ1Y3Qg ZHJtX2Rpc3BsYXlfbW9kZSAqc2F2ZWRfbW9kZTsKKwlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAq Y3J0Y19zdGF0ZV9jb3B5ID0gTlVMTDsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YzsK IAlpbnQgcmV0ID0gMDsKIApAQCAtMTEyMjEsNiArMTEyNjUsMTIgQEAgc3RhdGljIGludCBfX2lu dGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlpZiAoIXNhdmVkX21vZGUpCiAJ CXJldHVybiAtRU5PTUVNOwogCisJY3J0Y19zdGF0ZV9jb3B5ID0ga21hbGxvYyhzaXplb2YoKmNy dGNfc3RhdGVfY29weSksIEdGUF9LRVJORUwpOworCWlmICghY3J0Y19zdGF0ZV9jb3B5KSB7CisJ CXJldCA9IC1FTk9NRU07CisJCWdvdG8gZG9uZTsKKwl9CisKIAkqc2F2ZWRfbW9kZSA9IGNydGMt Pm1vZGU7CiAKIAlpZiAobW9kZXNldF9waXBlcykKQEAgLTExMzA3LDYgKzExMzU3LDIyIEBAIGRv bmU6CiAJaWYgKHJldCAmJiBjcnRjLT5zdGF0ZS0+ZW5hYmxlKQogCQljcnRjLT5tb2RlID0gKnNh dmVkX21vZGU7CiAKKwlpZiAocmV0ID09IDAgJiYgcGlwZV9jb25maWcpIHsKKwkJc3RydWN0IGlu dGVsX2NydGMgKmludGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOworCisJCS8qIFRoZSBw aXBlX2NvbmZpZyB3aWxsIGJlIGZyZWVkIHdpdGggdGhlIGF0b21pYyBzdGF0ZSwgc28KKwkJICog bWFrZSBhIGNvcHkuICovCisJCW1lbWNweShjcnRjX3N0YXRlX2NvcHksIGludGVsX2NydGMtPmNv bmZpZywKKwkJICAgICAgIHNpemVvZiAqY3J0Y19zdGF0ZV9jb3B5KTsKKwkJaW50ZWxfY3J0Yy0+ Y29uZmlnID0gY3J0Y19zdGF0ZV9jb3B5OworCQlpbnRlbF9jcnRjLT5iYXNlLnN0YXRlID0gJmNy dGNfc3RhdGVfY29weS0+YmFzZTsKKworCQlpZiAobW9kZXNldF9waXBlcykKKwkJCWludGVsX2Ny dGMtPm5ld19jb25maWcgPSBpbnRlbF9jcnRjLT5jb25maWc7CisJfSBlbHNlIHsKKwkJa2ZyZWUo Y3J0Y19zdGF0ZV9jb3B5KTsKKwl9CisKIAlrZnJlZShzYXZlZF9tb2RlKTsKIAlyZXR1cm4gcmV0 OwogfQpAQCAtMTEzMzIsMjcgKzExMzk4LDgxIEBAIHN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGVf cGlwZXMoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCiBzdGF0aWMgaW50IGludGVsX3NldF9tb2Rl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1v ZGUsCi0JCQkgIGludCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpCisJCQkg IGludCB4LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgIHN0cnVjdCBk cm1fYXRvbWljX3N0YXRlICpzdGF0ZSkKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlw ZV9jb25maWc7CiAJdW5zaWduZWQgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywgZGlzYWJs ZV9waXBlczsKKwlpbnQgcmV0ID0gMDsKIAotCXBpcGVfY29uZmlnID0gaW50ZWxfbW9kZXNldF9j b21wdXRlX2NvbmZpZyhjcnRjLCBtb2RlLCBmYiwKKwlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVz ZXRfY29tcHV0ZV9jb25maWcoY3J0YywgbW9kZSwgZmIsIHN0YXRlLAogCQkJCQkJICAgJm1vZGVz ZXRfcGlwZXMsCiAJCQkJCQkgICAmcHJlcGFyZV9waXBlcywKIAkJCQkJCSAgICZkaXNhYmxlX3Bp cGVzKTsKIAotCWlmIChJU19FUlIocGlwZV9jb25maWcpKQotCQlyZXR1cm4gUFRSX0VSUihwaXBl X2NvbmZpZyk7CisJaWYgKElTX0VSUihwaXBlX2NvbmZpZykpIHsKKwkJcmV0ID0gUFRSX0VSUihw aXBlX2NvbmZpZyk7CisJCWdvdG8gb3V0OworCX0KKworCXJldCA9IGludGVsX3NldF9tb2RlX3Bp cGVzKGNydGMsIG1vZGUsIHgsIHksIGZiLCBwaXBlX2NvbmZpZywKKwkJCQkgICBtb2Rlc2V0X3Bp cGVzLCBwcmVwYXJlX3BpcGVzLAorCQkJCSAgIGRpc2FibGVfcGlwZXMpOworCWlmIChyZXQpCisJ CWdvdG8gb3V0OwogCi0JcmV0dXJuIGludGVsX3NldF9tb2RlX3BpcGVzKGNydGMsIG1vZGUsIHgs IHksIGZiLCBwaXBlX2NvbmZpZywKLQkJCQkgICAgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBl cywKLQkJCQkgICAgZGlzYWJsZV9waXBlcyk7CitvdXQ6CisJcmV0dXJuIHJldDsKIH0KIAogdm9p ZCBpbnRlbF9jcnRjX3Jlc3RvcmVfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCiB7Ci0JaW50 ZWxfc2V0X21vZGUoY3J0YywgJmNydGMtPm1vZGUsIGNydGMtPngsIGNydGMtPnksIGNydGMtPnBy aW1hcnktPmZiKTsKKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2OworCXN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZTsKKwlzdHJ1Y3QgaW50ZWxfZW5jb2RlciAqZW5jb2Rl cjsKKwlzdHJ1Y3QgaW50ZWxfY29ubmVjdG9yICpjb25uZWN0b3I7CisJc3RydWN0IGRybV9jb25u ZWN0b3Jfc3RhdGUgKmNvbm5lY3Rvcl9zdGF0ZTsKKworCXN0YXRlID0gZHJtX2F0b21pY19zdGF0 ZV9hbGxvYyhkZXYpOworCWlmICghc3RhdGUpIHsKKwkJRFJNX0RFQlVHX0tNUygiW0NSVEM6JWRd IG1vZGUgcmVzdG9yZSBmYWlsZWQsIG91dCBvZiBtZW1vcnkiLAorCQkJICAgICAgY3J0Yy0+YmFz ZS5pZCk7CisJCXJldHVybjsKKwl9CisKKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVf Y29uZmlnLmFjcXVpcmVfY3R4OworCisJLyogVGhlIGZvcmNlIHJlc3RvcmUgcGF0aCBpbiB0aGUg SFcgcmVhZG91dCBjb2RlIHJlbGllcyBvbiB0aGUgc3RhZ2VkCisJICogY29uZmlnIHN0aWxsIGtl ZXBpbmcgdGhlIHVzZXIgcmVxdWVzdGVkIGNvbmZpZyB3aGlsZSB0aGUgYWN0dWFsCisJICogc3Rh dGUgaGFzIGJlZW4gb3ZlcndyaXR0ZW4gYnkgdGhlIGNvbmZpZ3VyYXRpb24gcmVhZCBmcm9tIEhX LiBXZQorCSAqIG5lZWQgdG8gY29weSB0aGUgc3RhZ2VkIGNvbmZpZyB0byB0aGUgYXRvbWljIHN0 YXRlLCBvdGhlcndpc2UgdGhlCisJICogbW9kZSBzZXQgd2lsbCBqdXN0IHJlYXBwbHkgdGhlIHN0 YXRlIHRoZSBIVyBpcyBhbHJlYWR5IGluLiAqLworCWZvcl9lYWNoX2ludGVsX2VuY29kZXIoZGV2 LCBlbmNvZGVyKSB7CisJCWlmICgmZW5jb2Rlci0+bmV3X2NydGMtPmJhc2UgIT0gY3J0YykKKwkJ CWNvbnRpbnVlOworCisJCWZvcl9lYWNoX2ludGVsX2Nvbm5lY3RvcihkZXYsIGNvbm5lY3Rvcikg eworCQkJaWYgKGNvbm5lY3Rvci0+bmV3X2VuY29kZXIgIT0gZW5jb2RlcikKKwkJCQljb250aW51 ZTsKKworCQkJY29ubmVjdG9yX3N0YXRlID0gZHJtX2F0b21pY19nZXRfY29ubmVjdG9yX3N0YXRl KHN0YXRlLCAmY29ubmVjdG9yLT5iYXNlKTsKKwkJCWlmIChJU19FUlIoY29ubmVjdG9yX3N0YXRl KSkgeworCQkJCURSTV9ERUJVR19LTVMoIkZhaWxlZCB0byBhZGQgW0NPTk5FQ1RPUjolZDolc10g dG8gc3RhdGU6ICVsZFxuIiwKKwkJCQkJICAgICAgY29ubmVjdG9yLT5iYXNlLmJhc2UuaWQsCisJ CQkJCSAgICAgIGNvbm5lY3Rvci0+YmFzZS5uYW1lLAorCQkJCQkgICAgICBQVFJfRVJSKGNvbm5l Y3Rvcl9zdGF0ZSkpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQljb25uZWN0b3Jfc3RhdGUt PmNydGMgPSBjcnRjOworCQkJY29ubmVjdG9yX3N0YXRlLT5iZXN0X2VuY29kZXIgPSAmZW5jb2Rl ci0+YmFzZTsKKwkJfQorCX0KKworCWludGVsX3NldF9tb2RlKGNydGMsICZjcnRjLT5tb2RlLCBj cnRjLT54LCBjcnRjLT55LCBjcnRjLT5wcmltYXJ5LT5mYiwKKwkJICAgICAgIHN0YXRlKTsKKwor CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CiB9CiAKICN1bmRlZiBmb3JfZWFjaF9pbnRl bF9jcnRjX21hc2tlZApAQCAtMTE2NzcsNiArMTE3OTcsNyBAQCBzdGF0aWMgaW50IGludGVsX2Ny dGNfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJtX21vZGVfc2V0ICpzZXQpCiB7CiAJc3RydWN0IGRybV9k ZXZpY2UgKmRldjsKIAlzdHJ1Y3QgZHJtX21vZGVfc2V0IHNhdmVfc2V0OworCXN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpzdGF0ZSA9IE5VTEw7CiAJc3RydWN0IGludGVsX3NldF9jb25maWcgKmNv bmZpZzsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWc7CiAJdW5zaWduZWQg bW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywgZGlzYWJsZV9waXBlczsKQEAgLTExNzIxLDEy ICsxMTg0MiwyMCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJt X21vZGVfc2V0ICpzZXQpCiAJICogc3VjaCBjYXNlcy4gKi8KIAlpbnRlbF9zZXRfY29uZmlnX2Nv bXB1dGVfbW9kZV9jaGFuZ2VzKHNldCwgY29uZmlnKTsKIAorCXN0YXRlID0gZHJtX2F0b21pY19z dGF0ZV9hbGxvYyhkZXYpOworCWlmICghc3RhdGUpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290 byBvdXRfY29uZmlnOworCX0KKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGRldi0+bW9kZV9jb25m aWcuYWNxdWlyZV9jdHg7CisKIAlyZXQgPSBpbnRlbF9tb2Rlc2V0X3N0YWdlX291dHB1dF9zdGF0 ZShkZXYsIHNldCwgY29uZmlnKTsKIAlpZiAocmV0KQogCQlnb3RvIGZhaWw7CiAKIAlwaXBlX2Nv bmZpZyA9IGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoc2V0LT5jcnRjLCBzZXQtPm1vZGUs Ci0JCQkJCQkgICBzZXQtPmZiLAorCQkJCQkJICAgc2V0LT5mYiwgc3RhdGUsCiAJCQkJCQkgICAm bW9kZXNldF9waXBlcywKIAkJCQkJCSAgICZwcmVwYXJlX3BpcGVzLAogCQkJCQkJICAgJmRpc2Fi bGVfcGlwZXMpOwpAQCAtMTE3NDYsMTAgKzExODc1LDYgQEAgc3RhdGljIGludCBpbnRlbF9jcnRj X3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQogCQkgKi8KIAl9CiAKLQkvKiBz ZXRfbW9kZSB3aWxsIGZyZWUgaXQgaW4gdGhlIG1vZGVfY2hhbmdlZCBjYXNlICovCi0JaWYgKCFj b25maWctPm1vZGVfY2hhbmdlZCkKLQkJa2ZyZWUocGlwZV9jb25maWcpOwotCiAJaW50ZWxfdXBk YXRlX3BpcGVfc2l6ZSh0b19pbnRlbF9jcnRjKHNldC0+Y3J0YykpOwogCiAJaWYgKGNvbmZpZy0+ bW9kZV9jaGFuZ2VkKSB7CkBAIC0xMTc5NSw2ICsxMTkyMCw4IEBAIHN0YXRpYyBpbnQgaW50ZWxf Y3J0Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9kZV9zZXQgKnNldCkKIGZhaWw6CiAJCWludGVs X3NldF9jb25maWdfcmVzdG9yZV9zdGF0ZShkZXYsIGNvbmZpZyk7CiAKKwkJZHJtX2F0b21pY19z dGF0ZV9jbGVhcihzdGF0ZSk7CisKIAkJLyoKIAkJICogSEFDSzogaWYgdGhlIHBpcGUgd2FzIG9u LCBidXQgd2UgZGlkbid0IGhhdmUgYSBmcmFtZWJ1ZmZlciwKIAkJICogZm9yY2UgdGhlIHBpcGUg b2ZmIHRvIGF2b2lkIG9vcHNpbmcgaW4gdGhlIG1vZGVzZXQgY29kZQpAQCAtMTE4MDcsMTEgKzEx OTM0LDE1IEBAIGZhaWw6CiAJCS8qIFRyeSB0byByZXN0b3JlIHRoZSBjb25maWcgKi8KIAkJaWYg KGNvbmZpZy0+bW9kZV9jaGFuZ2VkICYmCiAJCSAgICBpbnRlbF9zZXRfbW9kZShzYXZlX3NldC5j cnRjLCBzYXZlX3NldC5tb2RlLAotCQkJCSAgIHNhdmVfc2V0LngsIHNhdmVfc2V0LnksIHNhdmVf c2V0LmZiKSkKKwkJCQkgICBzYXZlX3NldC54LCBzYXZlX3NldC55LCBzYXZlX3NldC5mYiwKKwkJ CQkgICBzdGF0ZSkpCiAJCQlEUk1fRVJST1IoImZhaWxlZCB0byByZXN0b3JlIGNvbmZpZyBhZnRl ciBtb2Rlc2V0IGZhaWx1cmVcbiIpOwogCX0KIAogb3V0X2NvbmZpZzoKKwlpZiAoc3RhdGUpCisJ CWRybV9hdG9taWNfc3RhdGVfZnJlZShzdGF0ZSk7CisKIAlpbnRlbF9zZXRfY29uZmlnX2ZyZWUo Y29uZmlnKTsKIAlyZXR1cm4gcmV0OwogfQpAQCAtMTM4NTIsOCArMTM5ODMsNyBAQCB2b2lkIGlu dGVsX21vZGVzZXRfc2V0dXBfaHdfc3RhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCXN0 cnVjdCBkcm1fY3J0YyAqY3J0YyA9CiAJCQkJZGV2X3ByaXYtPnBpcGVfdG9fY3J0Y19tYXBwaW5n W3BpcGVdOwogCi0JCQlpbnRlbF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+bW9kZSwgY3J0Yy0+eCwg Y3J0Yy0+eSwKLQkJCQkgICAgICAgY3J0Yy0+cHJpbWFyeS0+ZmIpOworCQkJaW50ZWxfY3J0Y19y ZXN0b3JlX21vZGUoY3J0Yyk7CiAJCX0KIAl9IGVsc2UgewogCQlpbnRlbF9tb2Rlc2V0X3VwZGF0 ZV9zdGFnZWRfb3V0cHV0X3N0YXRlKGRldik7Ci0tIAoyLjEuMAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRl bC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK