From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 03/20] drm/i915: Allocate a drm_atomic_state for the legacy modeset code Date: Fri, 20 Mar 2015 16:18:03 +0200 Message-ID: <1426861099-28445-4-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1426861099-28445-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 mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id 5E8506EC30 for ; Fri, 20 Mar 2015 07:19:29 -0700 (PDT) In-Reply-To: <1426861099-28445-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 dCBjYXNlLiAoQW5kZXIpCgp2NTogRG9uJ3QgY2hhbmdlIHJldHVybiB0eXBlIG9mIGludGVsX21v ZGVzZXRfcGlwZV9jb25maWcoKS4gKENoYW5kcmEpCgpTaWduZWQtb2ZmLWJ5OiBBbmRlciBDb25z ZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWlyYUBpbnRlbC5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwgMTg2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTU2IGluc2VydGlv bnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwpp bmRleCA4NDU4YmY1Li5iODQ4NjQ2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p bnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j CkBAIC04Myw3ICs4Myw4IEBAIHN0YXRpYyB2b2lkIGlyb25sYWtlX3BjaF9jbG9ja19nZXQoc3Ry dWN0IGludGVsX2NydGMgKmNydGMsCiAJCQkJICAgc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBp cGVfY29uZmlnKTsKIAogc3RhdGljIGludCBpbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAotCQkJICBpbnQgeCwgaW50IHks IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYik7CisJCQkgIGludCB4LCBpbnQgeSwgc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiLAorCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0 ZSAqc3RhdGUpOwogc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsCiAJCQkJICBzdHJ1Y3QgaW50ZWxfZnJhbWVidWZmZXIgKmlmYiwKIAkJCQkg IHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKQEAgLTg4MDIsNiArODgwMyw3IEBA IGJvb2wgaW50ZWxfZ2V0X2xvYWRfZGV0ZWN0X3BpcGUoc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwKIAlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gZW5jb2Rlci0+ZGV2OwogCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiOwogCXN0cnVjdCBkcm1fbW9kZV9jb25maWcgKmNvbmZpZyA9 ICZkZXYtPm1vZGVfY29uZmlnOworCXN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSA9IE5V TEw7CiAJaW50IHJldCwgaSA9IC0xOwogCiAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDol c10sIFtFTkNPREVSOiVkOiVzXVxuIiwKQEAgLTg4ODMsNiArODg4NSwxMiBAQCByZXRyeToKIAlv bGQtPmxvYWRfZGV0ZWN0X3RlbXAgPSB0cnVlOwogCW9sZC0+cmVsZWFzZV9mYiA9IE5VTEw7CiAK KwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0YXRlKQorCQly ZXR1cm4gZmFsc2U7CisKKwlzdGF0ZS0+YWNxdWlyZV9jdHggPSBjdHg7CisKIAlpZiAoIW1vZGUp CiAJCW1vZGUgPSAmbG9hZF9kZXRlY3RfbW9kZTsKIApAQCAtODkwNSw3ICs4OTEzLDcgQEAgcmV0 cnk6CiAJCWdvdG8gZmFpbDsKIAl9CiAKLQlpZiAoaW50ZWxfc2V0X21vZGUoY3J0YywgbW9kZSwg MCwgMCwgZmIpKSB7CisJaWYgKGludGVsX3NldF9tb2RlKGNydGMsIG1vZGUsIDAsIDAsIGZiLCBz dGF0ZSkpIHsKIAkJRFJNX0RFQlVHX0tNUygiZmFpbGVkIHRvIHNldCBtb2RlIG9uIGxvYWQtZGV0 ZWN0IHBpcGVcbiIpOwogCQlpZiAob2xkLT5yZWxlYXNlX2ZiKQogCQkJb2xkLT5yZWxlYXNlX2Zi LT5mdW5jcy0+ZGVzdHJveShvbGQtPnJlbGVhc2VfZmIpOwpAQCAtODkyNCw2ICs4OTMyLDExIEBA IHJldHJ5OgogCWVsc2UKIAkJaW50ZWxfY3J0Yy0+bmV3X2NvbmZpZyA9IE5VTEw7CiBmYWlsX3Vu bG9jazoKKwlpZiAoc3RhdGUpIHsKKwkJZHJtX2F0b21pY19zdGF0ZV9mcmVlKHN0YXRlKTsKKwkJ c3RhdGUgPSBOVUxMOworCX0KKwogCWlmIChyZXQgPT0gLUVERUFETEspIHsKIAkJZHJtX21vZGVz ZXRfYmFja29mZihjdHgpOwogCQlnb3RvIHJldHJ5OwpAQCAtODkzNiwyMiArODk0OSwzNCBAQCB2 b2lkIGludGVsX3JlbGVhc2VfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAq Y29ubmVjdG9yLAogCQkJCSAgICBzdHJ1Y3QgaW50ZWxfbG9hZF9kZXRlY3RfcGlwZSAqb2xkLAog CQkJCSAgICBzdHJ1Y3QgZHJtX21vZGVzZXRfYWNxdWlyZV9jdHggKmN0eCkKIHsKKwlzdHJ1Y3Qg ZHJtX2RldmljZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7CiAJc3RydWN0IGludGVsX2VuY29kZXIg KmludGVsX2VuY29kZXIgPQogCQlpbnRlbF9hdHRhY2hlZF9lbmNvZGVyKGNvbm5lY3Rvcik7CiAJ c3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyID0gJmludGVsX2VuY29kZXItPmJhc2U7CiAJc3Ry dWN0IGRybV9jcnRjICpjcnRjID0gZW5jb2Rlci0+Y3J0YzsKIAlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7CisJc3RydWN0IGRybV9hdG9taWNfc3Rh dGUgKnN0YXRlOwogCiAJRFJNX0RFQlVHX0tNUygiW0NPTk5FQ1RPUjolZDolc10sIFtFTkNPREVS OiVkOiVzXVxuIiwKIAkJICAgICAgY29ubmVjdG9yLT5iYXNlLmlkLCBjb25uZWN0b3ItPm5hbWUs CiAJCSAgICAgIGVuY29kZXItPmJhc2UuaWQsIGVuY29kZXItPm5hbWUpOwogCiAJaWYgKG9sZC0+ bG9hZF9kZXRlY3RfdGVtcCkgeworCQlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2 KTsKKwkJaWYgKCFzdGF0ZSkgeworCQkJRFJNX0RFQlVHX0tNUygiY2FuJ3QgcmVsZWFzZSBsb2Fk IGRldGVjdCBwaXBlXG4iKTsKKwkJCXJldHVybjsKKwkJfQorCisJCXN0YXRlLT5hY3F1aXJlX2N0 eCA9IGN0eDsKKwogCQl0b19pbnRlbF9jb25uZWN0b3IoY29ubmVjdG9yKS0+bmV3X2VuY29kZXIg PSBOVUxMOwogCQlpbnRlbF9lbmNvZGVyLT5uZXdfY3J0YyA9IE5VTEw7CiAJCWludGVsX2NydGMt Pm5ld19lbmFibGVkID0gZmFsc2U7CiAJCWludGVsX2NydGMtPm5ld19jb25maWcgPSBOVUxMOwot CQlpbnRlbF9zZXRfbW9kZShjcnRjLCBOVUxMLCAwLCAwLCBOVUxMKTsKKwkJaW50ZWxfc2V0X21v ZGUoY3J0YywgTlVMTCwgMCwgMCwgTlVMTCwgc3RhdGUpOworCisJCWRybV9hdG9taWNfc3RhdGVf ZnJlZShzdGF0ZSk7CiAKIAkJaWYgKG9sZC0+cmVsZWFzZV9mYikgewogCQkJZHJtX2ZyYW1lYnVm ZmVyX3VucmVnaXN0ZXJfcHJpdmF0ZShvbGQtPnJlbGVhc2VfZmIpOwpAQCAtMTAzNDUsMTAgKzEw MzcwLDIyIEBAIHN0YXRpYyBib29sIGNoZWNrX2RpZ2l0YWxfcG9ydF9jb25mbGljdHMoc3RydWN0 IGRybV9kZXZpY2UgKmRldikKIAlyZXR1cm4gdHJ1ZTsKIH0KIAorc3RhdGljIHZvaWQKK2NsZWFy X2ludGVsX2NydGNfc3RhdGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7 CisJc3RydWN0IGRybV9jcnRjX3N0YXRlIHRtcF9zdGF0ZTsKKworCS8qIENsZWFyIG9ubHkgdGhl IGludGVsIHNwZWNpZmljIHBhcnQgb2YgdGhlIGNydGMgc3RhdGUgKi8KKwl0bXBfc3RhdGUgPSBj cnRjX3N0YXRlLT5iYXNlOworCW1lbXNldChjcnRjX3N0YXRlLCAwLCBzaXplb2YgKmNydGNfc3Rh dGUpOworCWNydGNfc3RhdGUtPmJhc2UgPSB0bXBfc3RhdGU7Cit9CisKIHN0YXRpYyBzdHJ1Y3Qg aW50ZWxfY3J0Y19zdGF0ZSAqCiBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1f Y3J0YyAqY3J0YywKIAkJCSAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCi0JCQkgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQorCQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKKwkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQogewogCXN0cnVjdCBk cm1fZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CiAJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29k ZXI7CkBAIC0xMDM2Niw5ICsxMDQwMywxMSBAQCBpbnRlbF9tb2Rlc2V0X3BpcGVfY29uZmlnKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJcmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7CiAJfQogCi0J cGlwZV9jb25maWcgPSBremFsbG9jKHNpemVvZigqcGlwZV9jb25maWcpLCBHRlBfS0VSTkVMKTsK LQlpZiAoIXBpcGVfY29uZmlnKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwlwaXBlX2Nv bmZpZyA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgdG9faW50ZWxfY3J0Yyhj cnRjKSk7CisJaWYgKElTX0VSUihwaXBlX2NvbmZpZykpCisJCXJldHVybiBwaXBlX2NvbmZpZzsK KworCWNsZWFyX2ludGVsX2NydGNfc3RhdGUocGlwZV9jb25maWcpOwogCiAJcGlwZV9jb25maWct PmJhc2UuY3J0YyA9IGNydGM7CiAJZHJtX21vZGVfY29weSgmcGlwZV9jb25maWctPmJhc2UuYWRq dXN0ZWRfbW9kZSwgbW9kZSk7CkBAIC0xMDQ2NSw3ICsxMDUwNCw2IEBAIGVuY29kZXJfcmV0cnk6 CiAKIAlyZXR1cm4gcGlwZV9jb25maWc7CiBmYWlsOgotCWtmcmVlKHBpcGVfY29uZmlnKTsKIAly ZXR1cm4gRVJSX1BUUihyZXQpOwogfQogCkBAIC0xMTE0NCwxNyArMTExODIsMTkgQEAgc3RhdGlj IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICoKIGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWco c3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAq bW9kZSwKIAkJCSAgICAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsCisJCQkgICAgIHN0cnVj dCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSwKIAkJCSAgICAgdW5zaWduZWQgKm1vZGVzZXRfcGlw ZXMsCiAJCQkgICAgIHVuc2lnbmVkICpwcmVwYXJlX3BpcGVzLAogCQkJICAgICB1bnNpZ25lZCAq ZGlzYWJsZV9waXBlcykKIHsKIAlzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqcGlwZV9jb25maWcg PSBOVUxMOworCWludCByZXQgPSAwOwogCiAJaW50ZWxfbW9kZXNldF9hZmZlY3RlZF9waXBlcyhj cnRjLCBtb2Rlc2V0X3BpcGVzLAogCQkJCSAgICAgcHJlcGFyZV9waXBlcywgZGlzYWJsZV9waXBl cyk7CiAKIAlpZiAoKCptb2Rlc2V0X3BpcGVzKSA9PSAwKQotCQlnb3RvIG91dDsKKwkJcmV0dXJu IE5VTEw7CiAKIAkvKgogCSAqIE5vdGUgdGhpcyBuZWVkcyBjaGFuZ2VzIHdoZW4gd2Ugc3RhcnQg dHJhY2tpbmcgbXVsdGlwbGUgbW9kZXMKQEAgLTExMTYyLDE0ICsxMTIwMiwxMyBAQCBpbnRlbF9t b2Rlc2V0X2NvbXB1dGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkgKiAoaS5lLiBv bmUgcGlwZV9jb25maWcgZm9yIGVhY2ggY3J0YykgcmF0aGVyIHRoYW4ganVzdCB0aGUgb25lCiAJ ICogZm9yIHRoaXMgY3J0Yy4KIAkgKi8KLQlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfcGlw ZV9jb25maWcoY3J0YywgZmIsIG1vZGUpOwotCWlmIChJU19FUlIocGlwZV9jb25maWcpKSB7Ci0J CWdvdG8gb3V0OwotCX0KKwlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfcGlwZV9jb25maWco Y3J0YywgZmIsIG1vZGUsIHN0YXRlKTsKKwlpZiAoSVNfRVJSKHBpcGVfY29uZmlnKSkKKwkJcmV0 dXJuIHBpcGVfY29uZmlnOworCiAJaW50ZWxfZHVtcF9waXBlX2NvbmZpZyh0b19pbnRlbF9jcnRj KGNydGMpLCBwaXBlX2NvbmZpZywKIAkJCSAgICAgICAiW21vZGVzZXRdIik7CiAKLW91dDoKIAly ZXR1cm4gcGlwZV9jb25maWc7CiB9CiAKQEAgLTExMjE0LDYgKzExMjUzLDcgQEAgc3RhdGljIGlu dCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gY3J0Yy0+ZGV2OwogCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJp diA9IGRldi0+ZGV2X3ByaXZhdGU7CiAJc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKnNhdmVkX21v ZGU7CisJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGVfY29weSA9IE5VTEw7CiAJ c3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGM7CiAJaW50IHJldCA9IDA7CiAKQEAgLTExMjIx LDYgKzExMjYxLDEyIEBAIHN0YXRpYyBpbnQgX19pbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsCiAJaWYgKCFzYXZlZF9tb2RlKQogCQlyZXR1cm4gLUVOT01FTTsKIAorCWNydGNf c3RhdGVfY29weSA9IGttYWxsb2Moc2l6ZW9mKCpjcnRjX3N0YXRlX2NvcHkpLCBHRlBfS0VSTkVM KTsKKwlpZiAoIWNydGNfc3RhdGVfY29weSkgeworCQlyZXQgPSAtRU5PTUVNOworCQlnb3RvIGRv bmU7CisJfQorCiAJKnNhdmVkX21vZGUgPSBjcnRjLT5tb2RlOwogCiAJaWYgKG1vZGVzZXRfcGlw ZXMpCkBAIC0xMTMwNyw2ICsxMTM1MywyMiBAQCBkb25lOgogCWlmIChyZXQgJiYgY3J0Yy0+c3Rh dGUtPmVuYWJsZSkKIAkJY3J0Yy0+bW9kZSA9ICpzYXZlZF9tb2RlOwogCisJaWYgKHJldCA9PSAw ICYmIHBpcGVfY29uZmlnKSB7CisJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRjID0gdG9f aW50ZWxfY3J0YyhjcnRjKTsKKworCQkvKiBUaGUgcGlwZV9jb25maWcgd2lsbCBiZSBmcmVlZCB3 aXRoIHRoZSBhdG9taWMgc3RhdGUsIHNvCisJCSAqIG1ha2UgYSBjb3B5LiAqLworCQltZW1jcHko Y3J0Y19zdGF0ZV9jb3B5LCBpbnRlbF9jcnRjLT5jb25maWcsCisJCSAgICAgICBzaXplb2YgKmNy dGNfc3RhdGVfY29weSk7CisJCWludGVsX2NydGMtPmNvbmZpZyA9IGNydGNfc3RhdGVfY29weTsK KwkJaW50ZWxfY3J0Yy0+YmFzZS5zdGF0ZSA9ICZjcnRjX3N0YXRlX2NvcHktPmJhc2U7CisKKwkJ aWYgKG1vZGVzZXRfcGlwZXMpCisJCQlpbnRlbF9jcnRjLT5uZXdfY29uZmlnID0gaW50ZWxfY3J0 Yy0+Y29uZmlnOworCX0gZWxzZSB7CisJCWtmcmVlKGNydGNfc3RhdGVfY29weSk7CisJfQorCiAJ a2ZyZWUoc2F2ZWRfbW9kZSk7CiAJcmV0dXJuIHJldDsKIH0KQEAgLTExMzMyLDI3ICsxMTM5NCw4 MSBAQCBzdGF0aWMgaW50IGludGVsX3NldF9tb2RlX3BpcGVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0 YywKIAogc3RhdGljIGludCBpbnRlbF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJ CQkgIHN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAotCQkJICBpbnQgeCwgaW50IHksIHN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiKQorCQkJICBpbnQgeCwgaW50IHksIHN0cnVjdCBkcm1f ZnJhbWVidWZmZXIgKmZiLAorCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpCiB7 CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29uZmlnOwogCXVuc2lnbmVkIG1vZGVz ZXRfcGlwZXMsIHByZXBhcmVfcGlwZXMsIGRpc2FibGVfcGlwZXM7CisJaW50IHJldCA9IDA7CiAK LQlwaXBlX2NvbmZpZyA9IGludGVsX21vZGVzZXRfY29tcHV0ZV9jb25maWcoY3J0YywgbW9kZSwg ZmIsCisJcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKGNydGMsIG1v ZGUsIGZiLCBzdGF0ZSwKIAkJCQkJCSAgICZtb2Rlc2V0X3BpcGVzLAogCQkJCQkJICAgJnByZXBh cmVfcGlwZXMsCiAJCQkJCQkgICAmZGlzYWJsZV9waXBlcyk7CiAKLQlpZiAoSVNfRVJSKHBpcGVf Y29uZmlnKSkKLQkJcmV0dXJuIFBUUl9FUlIocGlwZV9jb25maWcpOworCWlmIChJU19FUlIocGlw ZV9jb25maWcpKSB7CisJCXJldCA9IFBUUl9FUlIocGlwZV9jb25maWcpOworCQlnb3RvIG91dDsK Kwl9CisKKwlyZXQgPSBpbnRlbF9zZXRfbW9kZV9waXBlcyhjcnRjLCBtb2RlLCB4LCB5LCBmYiwg cGlwZV9jb25maWcsCisJCQkJICAgbW9kZXNldF9waXBlcywgcHJlcGFyZV9waXBlcywKKwkJCQkg ICBkaXNhYmxlX3BpcGVzKTsKKwlpZiAocmV0KQorCQlnb3RvIG91dDsKIAotCXJldHVybiBpbnRl bF9zZXRfbW9kZV9waXBlcyhjcnRjLCBtb2RlLCB4LCB5LCBmYiwgcGlwZV9jb25maWcsCi0JCQkJ ICAgIG1vZGVzZXRfcGlwZXMsIHByZXBhcmVfcGlwZXMsCi0JCQkJICAgIGRpc2FibGVfcGlwZXMp Oworb3V0OgorCXJldHVybiByZXQ7CiB9CiAKIHZvaWQgaW50ZWxfY3J0Y19yZXN0b3JlX21vZGUo c3RydWN0IGRybV9jcnRjICpjcnRjKQogewotCWludGVsX3NldF9tb2RlKGNydGMsICZjcnRjLT5t b2RlLCBjcnRjLT54LCBjcnRjLT55LCBjcnRjLT5wcmltYXJ5LT5mYik7CisJc3RydWN0IGRybV9k ZXZpY2UgKmRldiA9IGNydGMtPmRldjsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGU7 CisJc3RydWN0IGludGVsX2VuY29kZXIgKmVuY29kZXI7CisJc3RydWN0IGludGVsX2Nvbm5lY3Rv ciAqY29ubmVjdG9yOworCXN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uZWN0b3Jfc3Rh dGU7CisKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0YXRl KSB7CisJCURSTV9ERUJVR19LTVMoIltDUlRDOiVkXSBtb2RlIHJlc3RvcmUgZmFpbGVkLCBvdXQg b2YgbWVtb3J5IiwKKwkJCSAgICAgIGNydGMtPmJhc2UuaWQpOworCQlyZXR1cm47CisJfQorCisJ c3RhdGUtPmFjcXVpcmVfY3R4ID0gZGV2LT5tb2RlX2NvbmZpZy5hY3F1aXJlX2N0eDsKKworCS8q IFRoZSBmb3JjZSByZXN0b3JlIHBhdGggaW4gdGhlIEhXIHJlYWRvdXQgY29kZSByZWxpZXMgb24g dGhlIHN0YWdlZAorCSAqIGNvbmZpZyBzdGlsbCBrZWVwaW5nIHRoZSB1c2VyIHJlcXVlc3RlZCBj b25maWcgd2hpbGUgdGhlIGFjdHVhbAorCSAqIHN0YXRlIGhhcyBiZWVuIG92ZXJ3cml0dGVuIGJ5 IHRoZSBjb25maWd1cmF0aW9uIHJlYWQgZnJvbSBIVy4gV2UKKwkgKiBuZWVkIHRvIGNvcHkgdGhl IHN0YWdlZCBjb25maWcgdG8gdGhlIGF0b21pYyBzdGF0ZSwgb3RoZXJ3aXNlIHRoZQorCSAqIG1v ZGUgc2V0IHdpbGwganVzdCByZWFwcGx5IHRoZSBzdGF0ZSB0aGUgSFcgaXMgYWxyZWFkeSBpbi4g Ki8KKwlmb3JfZWFjaF9pbnRlbF9lbmNvZGVyKGRldiwgZW5jb2RlcikgeworCQlpZiAoJmVuY29k ZXItPm5ld19jcnRjLT5iYXNlICE9IGNydGMpCisJCQljb250aW51ZTsKKworCQlmb3JfZWFjaF9p bnRlbF9jb25uZWN0b3IoZGV2LCBjb25uZWN0b3IpIHsKKwkJCWlmIChjb25uZWN0b3ItPm5ld19l bmNvZGVyICE9IGVuY29kZXIpCisJCQkJY29udGludWU7CisKKwkJCWNvbm5lY3Rvcl9zdGF0ZSA9 IGRybV9hdG9taWNfZ2V0X2Nvbm5lY3Rvcl9zdGF0ZShzdGF0ZSwgJmNvbm5lY3Rvci0+YmFzZSk7 CisJCQlpZiAoSVNfRVJSKGNvbm5lY3Rvcl9zdGF0ZSkpIHsKKwkJCQlEUk1fREVCVUdfS01TKCJG YWlsZWQgdG8gYWRkIFtDT05ORUNUT1I6JWQ6JXNdIHRvIHN0YXRlOiAlbGRcbiIsCisJCQkJCSAg ICAgIGNvbm5lY3Rvci0+YmFzZS5iYXNlLmlkLAorCQkJCQkgICAgICBjb25uZWN0b3ItPmJhc2Uu bmFtZSwKKwkJCQkJICAgICAgUFRSX0VSUihjb25uZWN0b3Jfc3RhdGUpKTsKKwkJCQljb250aW51 ZTsKKwkJCX0KKworCQkJY29ubmVjdG9yX3N0YXRlLT5jcnRjID0gY3J0YzsKKwkJCWNvbm5lY3Rv cl9zdGF0ZS0+YmVzdF9lbmNvZGVyID0gJmVuY29kZXItPmJhc2U7CisJCX0KKwl9CisKKwlpbnRl bF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+bW9kZSwgY3J0Yy0+eCwgY3J0Yy0+eSwgY3J0Yy0+cHJp bWFyeS0+ZmIsCisJCSAgICAgICBzdGF0ZSk7CisKKwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOwogfQogCiAjdW5kZWYgZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrZWQKQEAgLTExNjc3LDYg KzExNzkzLDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9t b2RlX3NldCAqc2V0KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IGRybV9t b2RlX3NldCBzYXZlX3NldDsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBOVUxM OwogCXN0cnVjdCBpbnRlbF9zZXRfY29uZmlnICpjb25maWc7CiAJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnOwogCXVuc2lnbmVkIG1vZGVzZXRfcGlwZXMsIHByZXBhcmVfcGlw ZXMsIGRpc2FibGVfcGlwZXM7CkBAIC0xMTcyMSwxMiArMTE4MzgsMjAgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQogCSAqIHN1Y2gg Y2FzZXMuICovCiAJaW50ZWxfc2V0X2NvbmZpZ19jb21wdXRlX21vZGVfY2hhbmdlcyhzZXQsIGNv bmZpZyk7CiAKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0 YXRlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0X2NvbmZpZzsKKwl9CisKKwlzdGF0 ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVfY29uZmlnLmFjcXVpcmVfY3R4OworCiAJcmV0ID0g aW50ZWxfbW9kZXNldF9zdGFnZV9vdXRwdXRfc3RhdGUoZGV2LCBzZXQsIGNvbmZpZyk7CiAJaWYg KHJldCkKIAkJZ290byBmYWlsOwogCiAJcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1 dGVfY29uZmlnKHNldC0+Y3J0Yywgc2V0LT5tb2RlLAotCQkJCQkJICAgc2V0LT5mYiwKKwkJCQkJ CSAgIHNldC0+ZmIsIHN0YXRlLAogCQkJCQkJICAgJm1vZGVzZXRfcGlwZXMsCiAJCQkJCQkgICAm cHJlcGFyZV9waXBlcywKIAkJCQkJCSAgICZkaXNhYmxlX3BpcGVzKTsKQEAgLTExNzQ2LDEwICsx MTg3MSw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9k ZV9zZXQgKnNldCkKIAkJICovCiAJfQogCi0JLyogc2V0X21vZGUgd2lsbCBmcmVlIGl0IGluIHRo ZSBtb2RlX2NoYW5nZWQgY2FzZSAqLwotCWlmICghY29uZmlnLT5tb2RlX2NoYW5nZWQpCi0JCWtm cmVlKHBpcGVfY29uZmlnKTsKLQogCWludGVsX3VwZGF0ZV9waXBlX3NpemUodG9faW50ZWxfY3J0 YyhzZXQtPmNydGMpKTsKIAogCWlmIChjb25maWctPm1vZGVfY2hhbmdlZCkgewpAQCAtMTE3OTUs NiArMTE5MTYsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJt X21vZGVfc2V0ICpzZXQpCiBmYWlsOgogCQlpbnRlbF9zZXRfY29uZmlnX3Jlc3RvcmVfc3RhdGUo ZGV2LCBjb25maWcpOwogCisJCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOworCiAJCS8q CiAJCSAqIEhBQ0s6IGlmIHRoZSBwaXBlIHdhcyBvbiwgYnV0IHdlIGRpZG4ndCBoYXZlIGEgZnJh bWVidWZmZXIsCiAJCSAqIGZvcmNlIHRoZSBwaXBlIG9mZiB0byBhdm9pZCBvb3BzaW5nIGluIHRo ZSBtb2Rlc2V0IGNvZGUKQEAgLTExODA3LDExICsxMTkzMCwxNSBAQCBmYWlsOgogCQkvKiBUcnkg dG8gcmVzdG9yZSB0aGUgY29uZmlnICovCiAJCWlmIChjb25maWctPm1vZGVfY2hhbmdlZCAmJgog CQkgICAgaW50ZWxfc2V0X21vZGUoc2F2ZV9zZXQuY3J0Yywgc2F2ZV9zZXQubW9kZSwKLQkJCQkg ICBzYXZlX3NldC54LCBzYXZlX3NldC55LCBzYXZlX3NldC5mYikpCisJCQkJICAgc2F2ZV9zZXQu eCwgc2F2ZV9zZXQueSwgc2F2ZV9zZXQuZmIsCisJCQkJICAgc3RhdGUpKQogCQkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gcmVzdG9yZSBjb25maWcgYWZ0ZXIgbW9kZXNldCBmYWlsdXJlXG4iKTsKIAl9 CiAKIG91dF9jb25maWc6CisJaWYgKHN0YXRlKQorCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOworCiAJaW50ZWxfc2V0X2NvbmZpZ19mcmVlKGNvbmZpZyk7CiAJcmV0dXJuIHJldDsKIH0K QEAgLTEzODUyLDggKzEzOTc5LDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPQogCQkJ CWRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKIAotCQkJaW50ZWxfc2V0X21v ZGUoY3J0YywgJmNydGMtPm1vZGUsIGNydGMtPngsIGNydGMtPnksCi0JCQkJICAgICAgIGNydGMt PnByaW1hcnktPmZiKTsKKwkJCWludGVsX2NydGNfcmVzdG9yZV9tb2RlKGNydGMpOwogCQl9CiAJ fSBlbHNlIHsKIAkJaW50ZWxfbW9kZXNldF91cGRhdGVfc3RhZ2VkX291dHB1dF9zdGF0ZShkZXYp OwotLSAKMi4xLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==