From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ander Conselvan de Oliveira Subject: [PATCH 03/19] drm/i915: Allocate a drm_atomic_state for the legacy modeset code Date: Fri, 13 Mar 2015 11:48:46 +0200 Message-ID: <1426240142-24538-4-git-send-email-ander.conselvan.de.oliveira@intel.com> References: <1426240142-24538-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 mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id C15226EA97 for ; Fri, 13 Mar 2015 02:49:18 -0700 (PDT) In-Reply-To: <1426240142-24538-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 a3MuCgp2MjogU3F1YXNoIHBhdGNoIHRoYXQgYWRkcyBzdGF0ZSBhcmd1bWVudCB0byBpbnRlbF9z ZXRfbW9kZSgpLiAoQW5kZXIpCiAgICBNYWtlIGV2ZXJ5IGNhbGxlciBvZiBpbnRlbF9zZXRfbW9k ZSgpIGFsbG9jYXRlIHN0YXRlLiAoRGFuaWVsKQogICAgQ2FsbCBkcm1fYXRvbWljX3N0YXRlX2Ns ZWFyKCkgaW4gc2V0IGNvbmZpZydzIGVycm9yIHBhdGguIChEYW5pZWwpCgpTaWduZWQtb2ZmLWJ5 OiBBbmRlciBDb25zZWx2YW4gZGUgT2xpdmVpcmEgPGFuZGVyLmNvbnNlbHZhbi5kZS5vbGl2ZWly YUBpbnRlbC5jb20+Ci0tLQogZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jIHwg MTY4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwg MTMzIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYwppbmRleCA3OGVhMTIyLi5iNjFlM2Y2IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMKKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfZGlzcGxheS5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8ZHJtL2k5MTVfZHJtLmg+ CiAjaW5jbHVkZSAiaTkxNV9kcnYuaCIKICNpbmNsdWRlICJpOTE1X3RyYWNlLmgiCisjaW5jbHVk ZSA8ZHJtL2RybV9hdG9taWMuaD4KICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4K ICNpbmNsdWRlIDxkcm0vZHJtX2RwX2hlbHBlci5oPgogI2luY2x1ZGUgPGRybS9kcm1fY3J0Y19o ZWxwZXIuaD4KQEAgLTgyLDcgKzgzLDggQEAgc3RhdGljIHZvaWQgaXJvbmxha2VfcGNoX2Nsb2Nr X2dldChzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YywKIAkJCQkgICBzdHJ1Y3QgaW50ZWxfY3J0Y19z dGF0ZSAqcGlwZV9jb25maWcpOwogCiBzdGF0aWMgaW50IGludGVsX3NldF9tb2RlKHN0cnVjdCBk cm1fY3J0YyAqY3J0Yywgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUsCi0JCQkgIGludCB4 LCBpbnQgeSwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqb2xkX2ZiKTsKKwkJCSAgaW50IHgsIGlu dCB5LCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpvbGRfZmIsCisJCQkgIHN0cnVjdCBkcm1fYXRv bWljX3N0YXRlICpzdGF0ZSk7CiBzdGF0aWMgaW50IGludGVsX2ZyYW1lYnVmZmVyX2luaXQoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwKIAkJCQkgIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaWZi LAogCQkJCSAgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1vZGVfY21kLApAQCAtODgwMiw2ICs4 ODA0LDcgQEAgYm9vbCBpbnRlbF9nZXRfbG9hZF9kZXRlY3RfcGlwZShzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLAogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBlbmNvZGVyLT5kZXY7 CiAJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmI7CiAJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAq Y29uZmlnID0gJmRldi0+bW9kZV9jb25maWc7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlID0gTlVMTDsKIAlpbnQgcmV0LCBpID0gLTE7CiAKIAlEUk1fREVCVUdfS01TKCJbQ09OTkVD VE9SOiVkOiVzXSwgW0VOQ09ERVI6JWQ6JXNdXG4iLApAQCAtODg4Myw2ICs4ODg2LDEyIEBAIHJl dHJ5OgogCW9sZC0+bG9hZF9kZXRlY3RfdGVtcCA9IHRydWU7CiAJb2xkLT5yZWxlYXNlX2ZiID0g TlVMTDsKIAorCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9hbGxvYyhkZXYpOworCWlmICghc3Rh dGUpCisJCXJldHVybiBmYWxzZTsKKworCXN0YXRlLT5hY3F1aXJlX2N0eCA9IGN0eDsKKwogCWlm ICghbW9kZSkKIAkJbW9kZSA9ICZsb2FkX2RldGVjdF9tb2RlOwogCkBAIC04OTA1LDcgKzg5MTQs NyBAQCByZXRyeToKIAkJZ290byBmYWlsOwogCX0KIAotCWlmIChpbnRlbF9zZXRfbW9kZShjcnRj LCBtb2RlLCAwLCAwLCBmYikpIHsKKwlpZiAoaW50ZWxfc2V0X21vZGUoY3J0YywgbW9kZSwgMCwg MCwgZmIsIHN0YXRlKSkgewogCQlEUk1fREVCVUdfS01TKCJmYWlsZWQgdG8gc2V0IG1vZGUgb24g bG9hZC1kZXRlY3QgcGlwZVxuIik7CiAJCWlmIChvbGQtPnJlbGVhc2VfZmIpCiAJCQlvbGQtPnJl bGVhc2VfZmItPmZ1bmNzLT5kZXN0cm95KG9sZC0+cmVsZWFzZV9mYik7CkBAIC04OTI0LDYgKzg5 MzMsMTEgQEAgcmV0cnk6CiAJZWxzZQogCQlpbnRlbF9jcnRjLT5uZXdfY29uZmlnID0gTlVMTDsK IGZhaWxfdW5sb2NrOgorCWlmIChzdGF0ZSkgeworCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOworCQlzdGF0ZSA9IE5VTEw7CisJfQorCiAJaWYgKHJldCA9PSAtRURFQURMSykgewogCQlk cm1fbW9kZXNldF9iYWNrb2ZmKGN0eCk7CiAJCWdvdG8gcmV0cnk7CkBAIC04OTM2LDIyICs4OTUw LDM0IEBAIHZvaWQgaW50ZWxfcmVsZWFzZV9sb2FkX2RldGVjdF9waXBlKHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsCiAJCQkJICAgIHN0cnVjdCBpbnRlbF9sb2FkX2RldGVjdF9waXBl ICpvbGQsCiAJCQkJICAgIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eCAqY3R4KQogewor CXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsKIAlzdHJ1Y3QgaW50ZWxf ZW5jb2RlciAqaW50ZWxfZW5jb2RlciA9CiAJCWludGVsX2F0dGFjaGVkX2VuY29kZXIoY29ubmVj dG9yKTsKIAlzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmaW50ZWxfZW5jb2Rlci0+YmFz ZTsKIAlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSBlbmNvZGVyLT5jcnRjOwogCXN0cnVjdCBpbnRl bF9jcnRjICppbnRlbF9jcnRjID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKKwlzdHJ1Y3QgZHJtX2F0 b21pY19zdGF0ZSAqc3RhdGU7CiAKIAlEUk1fREVCVUdfS01TKCJbQ09OTkVDVE9SOiVkOiVzXSwg W0VOQ09ERVI6JWQ6JXNdXG4iLAogCQkgICAgICBjb25uZWN0b3ItPmJhc2UuaWQsIGNvbm5lY3Rv ci0+bmFtZSwKIAkJICAgICAgZW5jb2Rlci0+YmFzZS5pZCwgZW5jb2Rlci0+bmFtZSk7CiAKIAlp ZiAob2xkLT5sb2FkX2RldGVjdF90ZW1wKSB7CisJCXN0YXRlID0gZHJtX2F0b21pY19zdGF0ZV9h bGxvYyhkZXYpOworCQlpZiAoIXN0YXRlKSB7CisJCQlEUk1fREVCVUdfS01TKCJjYW4ndCByZWxl YXNlIGxvYWQgZGV0ZWN0IHBpcGVcbiIpOworCQkJcmV0dXJuOworCQl9CisKKwkJc3RhdGUtPmFj cXVpcmVfY3R4ID0gY3R4OworCiAJCXRvX2ludGVsX2Nvbm5lY3Rvcihjb25uZWN0b3IpLT5uZXdf ZW5jb2RlciA9IE5VTEw7CiAJCWludGVsX2VuY29kZXItPm5ld19jcnRjID0gTlVMTDsKIAkJaW50 ZWxfY3J0Yy0+bmV3X2VuYWJsZWQgPSBmYWxzZTsKIAkJaW50ZWxfY3J0Yy0+bmV3X2NvbmZpZyA9 IE5VTEw7Ci0JCWludGVsX3NldF9tb2RlKGNydGMsIE5VTEwsIDAsIDAsIE5VTEwpOworCQlpbnRl bF9zZXRfbW9kZShjcnRjLCBOVUxMLCAwLCAwLCBOVUxMLCBzdGF0ZSk7CisKKwkJZHJtX2F0b21p Y19zdGF0ZV9mcmVlKHN0YXRlKTsKIAogCQlpZiAob2xkLT5yZWxlYXNlX2ZiKSB7CiAJCQlkcm1f ZnJhbWVidWZmZXJfdW5yZWdpc3Rlcl9wcml2YXRlKG9sZC0+cmVsZWFzZV9mYik7CkBAIC0xMDM0 NSwxMCArMTAzNzEsMjIgQEAgc3RhdGljIGJvb2wgY2hlY2tfZGlnaXRhbF9wb3J0X2NvbmZsaWN0 cyhzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQogCXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgc3Ry dWN0IGludGVsX2NydGNfc3RhdGUgKgorc3RhdGljIHZvaWQKK2NsZWFyX2ludGVsX2NydGNfc3Rh dGUoc3RydWN0IGludGVsX2NydGNfc3RhdGUgKmNydGNfc3RhdGUpCit7CisJc3RydWN0IGRybV9j cnRjX3N0YXRlIHRtcF9zdGF0ZTsKKworCS8qIENsZWFyIG9ubHkgdGhlIGludGVsIHNwZWNpZmlj IHBhcnQgb2YgdGhlIGNydGMgc3RhdGUgKi8KKwl0bXBfc3RhdGUgPSBjcnRjX3N0YXRlLT5iYXNl OworCW1lbXNldChjcnRjX3N0YXRlLCAwLCBzaXplb2YgKmNydGNfc3RhdGUpOworCWNydGNfc3Rh dGUtPmJhc2UgPSB0bXBfc3RhdGU7Cit9CisKK3N0YXRpYyBpbnQKIGludGVsX21vZGVzZXRfcGlw ZV9jb25maWcoc3RydWN0IGRybV9jcnRjICpjcnRjLAogCQkJICBzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwKLQkJCSAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKm1vZGUpCisJCQkgIHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlLAorCQkJICBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAq c3RhdGUpCiB7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKIAlzdHJ1Y3Qg aW50ZWxfZW5jb2RlciAqZW5jb2RlcjsKQEAgLTEwMzU4LDE3ICsxMDM5NiwxOSBAQCBpbnRlbF9t b2Rlc2V0X3BpcGVfY29uZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAogCWlmICghY2hlY2tf ZW5jb2Rlcl9jbG9uaW5nKHRvX2ludGVsX2NydGMoY3J0YykpKSB7CiAJCURSTV9ERUJVR19LTVMo InJlamVjdGluZyBpbnZhbGlkIGNsb25pbmcgY29uZmlndXJhdGlvblxuIik7Ci0JCXJldHVybiBF UlJfUFRSKC1FSU5WQUwpOworCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKIAlpZiAoIWNoZWNrX2Rp Z2l0YWxfcG9ydF9jb25mbGljdHMoZGV2KSkgewogCQlEUk1fREVCVUdfS01TKCJyZWplY3Rpbmcg Y29uZmxpY3RpbmcgZGlnaXRhbCBwb3J0IGNvbmZpZ3VyYXRpb25cbiIpOwotCQlyZXR1cm4gRVJS X1BUUigtRUlOVkFMKTsKKwkJcmV0dXJuIC1FSU5WQUw7CiAJfQogCi0JcGlwZV9jb25maWcgPSBr emFsbG9jKHNpemVvZigqcGlwZV9jb25maWcpLCBHRlBfS0VSTkVMKTsKLQlpZiAoIXBpcGVfY29u ZmlnKQotCQlyZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsKKwlwaXBlX2NvbmZpZyA9IGludGVsX2F0 b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgdG9faW50ZWxfY3J0YyhjcnRjKSk7CisJaWYgKElT X0VSUihwaXBlX2NvbmZpZykpCisJCXJldHVybiBQVFJfRVJSKHBpcGVfY29uZmlnKTsKKworCWNs ZWFyX2ludGVsX2NydGNfc3RhdGUocGlwZV9jb25maWcpOwogCiAJcGlwZV9jb25maWctPmJhc2Uu Y3J0YyA9IGNydGM7CiAJZHJtX21vZGVfY29weSgmcGlwZV9jb25maWctPmJhc2UuYWRqdXN0ZWRf bW9kZSwgbW9kZSk7CkBAIC0xMDQ2MywxMCArMTA1MDMsOSBAQCBlbmNvZGVyX3JldHJ5OgogCURS TV9ERUJVR19LTVMoInBsYW5lIGJwcDogJWksIHBpcGUgYnBwOiAlaSwgZGl0aGVyaW5nOiAlaVxu IiwKIAkJICAgICAgcGxhbmVfYnBwLCBwaXBlX2NvbmZpZy0+cGlwZV9icHAsIHBpcGVfY29uZmln LT5kaXRoZXIpOwogCi0JcmV0dXJuIHBpcGVfY29uZmlnOworCXJldHVybiAwOwogZmFpbDoKLQlr ZnJlZShwaXBlX2NvbmZpZyk7Ci0JcmV0dXJuIEVSUl9QVFIocmV0KTsKKwlyZXR1cm4gcmV0Owog fQogCiAvKiBDb21wdXRlcyB3aGljaCBjcnRjcyBhcmUgYWZmZWN0ZWQgYW5kIHNldHMgdGhlIHJl bGV2YW50IGJpdHMgaW4gdGhlIG1hc2suIEZvcgpAQCAtMTExNDQsMTcgKzExMTgzLDE5IEBAIHN0 YXRpYyBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqCiBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29u ZmlnKHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKIAkJCSAgICAgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm1vZGUsCiAJCQkgICAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLAorCQkJICAgICBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUsCiAJCQkgICAgIHVuc2lnbmVkICptb2Rlc2V0 X3BpcGVzLAogCQkJICAgICB1bnNpZ25lZCAqcHJlcGFyZV9waXBlcywKIAkJCSAgICAgdW5zaWdu ZWQgKmRpc2FibGVfcGlwZXMpCiB7CiAJc3RydWN0IGludGVsX2NydGNfc3RhdGUgKnBpcGVfY29u ZmlnID0gTlVMTDsKKwlpbnQgcmV0ID0gMDsKIAogCWludGVsX21vZGVzZXRfYWZmZWN0ZWRfcGlw ZXMoY3J0YywgbW9kZXNldF9waXBlcywKIAkJCQkgICAgIHByZXBhcmVfcGlwZXMsIGRpc2FibGVf cGlwZXMpOwogCiAJaWYgKCgqbW9kZXNldF9waXBlcykgPT0gMCkKLQkJZ290byBvdXQ7CisJCXJl dHVybiBOVUxMOwogCiAJLyoKIAkgKiBOb3RlIHRoaXMgbmVlZHMgY2hhbmdlcyB3aGVuIHdlIHN0 YXJ0IHRyYWNraW5nIG11bHRpcGxlIG1vZGVzCkBAIC0xMTE2MiwxNCArMTEyMDMsMTcgQEAgaW50 ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJICogKGku ZS4gb25lIHBpcGVfY29uZmlnIGZvciBlYWNoIGNydGMpIHJhdGhlciB0aGFuIGp1c3QgdGhlIG9u ZQogCSAqIGZvciB0aGlzIGNydGMuCiAJICovCi0JcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0 X3BpcGVfY29uZmlnKGNydGMsIGZiLCBtb2RlKTsKLQlpZiAoSVNfRVJSKHBpcGVfY29uZmlnKSkg ewotCQlnb3RvIG91dDsKLQl9CisJcmV0ID0gaW50ZWxfbW9kZXNldF9waXBlX2NvbmZpZyhjcnRj LCBmYiwgbW9kZSwgc3RhdGUpOworCWlmIChyZXQpCisJCXJldHVybiBFUlJfUFRSKHJldCk7CisK KwlwaXBlX2NvbmZpZyA9IGludGVsX2F0b21pY19nZXRfY3J0Y19zdGF0ZShzdGF0ZSwgdG9faW50 ZWxfY3J0YyhjcnRjKSk7CisJaWYgKElTX0VSUihwaXBlX2NvbmZpZykpCisJCXJldHVybiBwaXBl X2NvbmZpZzsKKwogCWludGVsX2R1bXBfcGlwZV9jb25maWcodG9faW50ZWxfY3J0YyhjcnRjKSwg cGlwZV9jb25maWcsCiAJCQkgICAgICAgIlttb2Rlc2V0XSIpOwogCi1vdXQ6CiAJcmV0dXJuIHBp cGVfY29uZmlnOwogfQogCkBAIC0xMTIxNCw2ICsxMTI1OCw3IEBAIHN0YXRpYyBpbnQgX19pbnRl bF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCiAJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNydGMtPmRldjsKIAlzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSBkZXYt PmRldl9wcml2YXRlOwogCXN0cnVjdCBkcm1fZGlzcGxheV9tb2RlICpzYXZlZF9tb2RlOworCXN0 cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlX2NvcHkgPSBOVUxMOwogCXN0cnVjdCBp bnRlbF9jcnRjICppbnRlbF9jcnRjOwogCWludCByZXQgPSAwOwogCkBAIC0xMTIyMSw2ICsxMTI2 NiwxMiBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRj LAogCWlmICghc2F2ZWRfbW9kZSkKIAkJcmV0dXJuIC1FTk9NRU07CiAKKwljcnRjX3N0YXRlX2Nv cHkgPSBrbWFsbG9jKHNpemVvZigqY3J0Y19zdGF0ZV9jb3B5KSwgR0ZQX0tFUk5FTCk7CisJaWYg KCFjcnRjX3N0YXRlX2NvcHkpIHsKKwkJcmV0ID0gLUVOT01FTTsKKwkJZ290byBkb25lOworCX0K KwogCSpzYXZlZF9tb2RlID0gY3J0Yy0+bW9kZTsKIAogCWlmIChtb2Rlc2V0X3BpcGVzKQpAQCAt MTEzMDcsNiArMTEzNTgsMTkgQEAgZG9uZToKIAlpZiAocmV0ICYmIGNydGMtPnN0YXRlLT5lbmFi bGUpCiAJCWNydGMtPm1vZGUgPSAqc2F2ZWRfbW9kZTsKIAorCWlmIChyZXQgPT0gMCAmJiBwaXBl X2NvbmZpZykgeworCQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVsX2Ny dGMoY3J0Yyk7CisKKwkJLyogVGhlIHBpcGVfY29uZmlnIHdpbGwgYmUgZnJlZWQgd2l0aCB0aGUg YXRvbWljIHN0YXRlLCBzbworCQkgKiBtYWtlIGEgY29weS4gKi8KKwkJbWVtY3B5KGNydGNfc3Rh dGVfY29weSwgaW50ZWxfY3J0Yy0+Y29uZmlnLAorCQkgICAgICAgc2l6ZW9mICpjcnRjX3N0YXRl X2NvcHkpOworCQlpbnRlbF9jcnRjLT5jb25maWcgPSBpbnRlbF9jcnRjLT5uZXdfY29uZmlnID0g Y3J0Y19zdGF0ZV9jb3B5OworCQlpbnRlbF9jcnRjLT5iYXNlLnN0YXRlID0gJmNydGNfc3RhdGVf Y29weS0+YmFzZTsKKwl9IGVsc2UgeworCQlrZnJlZShjcnRjX3N0YXRlX2NvcHkpOworCX0KKwog CWtmcmVlKHNhdmVkX21vZGUpOwogCXJldHVybiByZXQ7CiB9CkBAIC0xMTMzMiwyNyArMTEzOTYs NTEgQEAgc3RhdGljIGludCBpbnRlbF9zZXRfbW9kZV9waXBlcyhzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsCiAKIHN0YXRpYyBpbnQgaW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLAog CQkJICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSwKLQkJCSAgaW50IHgsIGludCB5LCBz dHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYikKKwkJCSAgaW50IHgsIGludCB5LCBzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwKKwkJCSAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQog ewogCXN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpwaXBlX2NvbmZpZzsKIAl1bnNpZ25lZCBtb2Rl c2V0X3BpcGVzLCBwcmVwYXJlX3BpcGVzLCBkaXNhYmxlX3BpcGVzOworCWludCByZXQgPSAwOwog Ci0JcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1dGVfY29uZmlnKGNydGMsIG1vZGUs IGZiLAorCXBpcGVfY29uZmlnID0gaW50ZWxfbW9kZXNldF9jb21wdXRlX2NvbmZpZyhjcnRjLCBt b2RlLCBmYiwgc3RhdGUsCiAJCQkJCQkgICAmbW9kZXNldF9waXBlcywKIAkJCQkJCSAgICZwcmVw YXJlX3BpcGVzLAogCQkJCQkJICAgJmRpc2FibGVfcGlwZXMpOwogCi0JaWYgKElTX0VSUihwaXBl X2NvbmZpZykpCi0JCXJldHVybiBQVFJfRVJSKHBpcGVfY29uZmlnKTsKKwlpZiAoSVNfRVJSKHBp cGVfY29uZmlnKSkgeworCQlyZXQgPSBQVFJfRVJSKHBpcGVfY29uZmlnKTsKKwkJZ290byBvdXQ7 CisJfQorCisJcmV0ID0gaW50ZWxfc2V0X21vZGVfcGlwZXMoY3J0YywgbW9kZSwgeCwgeSwgZmIs IHBpcGVfY29uZmlnLAorCQkJCSAgIG1vZGVzZXRfcGlwZXMsIHByZXBhcmVfcGlwZXMsCisJCQkJ ICAgZGlzYWJsZV9waXBlcyk7CisJaWYgKHJldCkKKwkJZ290byBvdXQ7CiAKLQlyZXR1cm4gaW50 ZWxfc2V0X21vZGVfcGlwZXMoY3J0YywgbW9kZSwgeCwgeSwgZmIsIHBpcGVfY29uZmlnLAotCQkJ CSAgICBtb2Rlc2V0X3BpcGVzLCBwcmVwYXJlX3BpcGVzLAotCQkJCSAgICBkaXNhYmxlX3BpcGVz KTsKK291dDoKKwlyZXR1cm4gcmV0OwogfQogCiB2b2lkIGludGVsX2NydGNfcmVzdG9yZV9tb2Rl KHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKIHsKLQlpbnRlbF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+ bW9kZSwgY3J0Yy0+eCwgY3J0Yy0+eSwgY3J0Yy0+cHJpbWFyeS0+ZmIpOworCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjcnRjLT5kZXY7CisJc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRl OworCisJc3RhdGUgPSBkcm1fYXRvbWljX3N0YXRlX2FsbG9jKGRldik7CisJaWYgKCFzdGF0ZSkg eworCQlEUk1fREVCVUdfS01TKCJbQ1JUQzolZF0gbW9kZSByZXN0b3JlIGZhaWxlZCwgb3V0IG9m IG1lbW9yeSIsCisJCQkgICAgICBjcnRjLT5iYXNlLmlkKTsKKwkJcmV0dXJuOworCX0KKworCXN0 YXRlLT5hY3F1aXJlX2N0eCA9IGRldi0+bW9kZV9jb25maWcuYWNxdWlyZV9jdHg7CisKKwlpbnRl bF9zZXRfbW9kZShjcnRjLCAmY3J0Yy0+bW9kZSwgY3J0Yy0+eCwgY3J0Yy0+eSwgY3J0Yy0+cHJp bWFyeS0+ZmIsCisJCSAgICAgICBzdGF0ZSk7CisKKwlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOwogfQogCiAjdW5kZWYgZm9yX2VhY2hfaW50ZWxfY3J0Y19tYXNrZWQKQEAgLTExNjc3LDYg KzExNzY1LDcgQEAgc3RhdGljIGludCBpbnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9t b2RlX3NldCAqc2V0KQogewogCXN0cnVjdCBkcm1fZGV2aWNlICpkZXY7CiAJc3RydWN0IGRybV9t b2RlX3NldCBzYXZlX3NldDsKKwlzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUgPSBOVUxM OwogCXN0cnVjdCBpbnRlbF9zZXRfY29uZmlnICpjb25maWc7CiAJc3RydWN0IGludGVsX2NydGNf c3RhdGUgKnBpcGVfY29uZmlnOwogCXVuc2lnbmVkIG1vZGVzZXRfcGlwZXMsIHByZXBhcmVfcGlw ZXMsIGRpc2FibGVfcGlwZXM7CkBAIC0xMTcyMSwxMiArMTE4MTAsMjAgQEAgc3RhdGljIGludCBp bnRlbF9jcnRjX3NldF9jb25maWcoc3RydWN0IGRybV9tb2RlX3NldCAqc2V0KQogCSAqIHN1Y2gg Y2FzZXMuICovCiAJaW50ZWxfc2V0X2NvbmZpZ19jb21wdXRlX21vZGVfY2hhbmdlcyhzZXQsIGNv bmZpZyk7CiAKKwlzdGF0ZSA9IGRybV9hdG9taWNfc3RhdGVfYWxsb2MoZGV2KTsKKwlpZiAoIXN0 YXRlKSB7CisJCXJldCA9IC1FTk9NRU07CisJCWdvdG8gb3V0X2NvbmZpZzsKKwl9CisKKwlzdGF0 ZS0+YWNxdWlyZV9jdHggPSBkZXYtPm1vZGVfY29uZmlnLmFjcXVpcmVfY3R4OworCiAJcmV0ID0g aW50ZWxfbW9kZXNldF9zdGFnZV9vdXRwdXRfc3RhdGUoZGV2LCBzZXQsIGNvbmZpZyk7CiAJaWYg KHJldCkKIAkJZ290byBmYWlsOwogCiAJcGlwZV9jb25maWcgPSBpbnRlbF9tb2Rlc2V0X2NvbXB1 dGVfY29uZmlnKHNldC0+Y3J0Yywgc2V0LT5tb2RlLAotCQkJCQkJICAgc2V0LT5mYiwKKwkJCQkJ CSAgIHNldC0+ZmIsIHN0YXRlLAogCQkJCQkJICAgJm1vZGVzZXRfcGlwZXMsCiAJCQkJCQkgICAm cHJlcGFyZV9waXBlcywKIAkJCQkJCSAgICZkaXNhYmxlX3BpcGVzKTsKQEAgLTExNzQ2LDEwICsx MTg0Myw2IEBAIHN0YXRpYyBpbnQgaW50ZWxfY3J0Y19zZXRfY29uZmlnKHN0cnVjdCBkcm1fbW9k ZV9zZXQgKnNldCkKIAkJICovCiAJfQogCi0JLyogc2V0X21vZGUgd2lsbCBmcmVlIGl0IGluIHRo ZSBtb2RlX2NoYW5nZWQgY2FzZSAqLwotCWlmICghY29uZmlnLT5tb2RlX2NoYW5nZWQpCi0JCWtm cmVlKHBpcGVfY29uZmlnKTsKLQogCWludGVsX3VwZGF0ZV9waXBlX3NpemUodG9faW50ZWxfY3J0 YyhzZXQtPmNydGMpKTsKIAogCWlmIChjb25maWctPm1vZGVfY2hhbmdlZCkgewpAQCAtMTE3OTUs NiArMTE4ODgsOCBAQCBzdGF0aWMgaW50IGludGVsX2NydGNfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJt X21vZGVfc2V0ICpzZXQpCiBmYWlsOgogCQlpbnRlbF9zZXRfY29uZmlnX3Jlc3RvcmVfc3RhdGUo ZGV2LCBjb25maWcpOwogCisJCWRybV9hdG9taWNfc3RhdGVfY2xlYXIoc3RhdGUpOworCiAJCS8q CiAJCSAqIEhBQ0s6IGlmIHRoZSBwaXBlIHdhcyBvbiwgYnV0IHdlIGRpZG4ndCBoYXZlIGEgZnJh bWVidWZmZXIsCiAJCSAqIGZvcmNlIHRoZSBwaXBlIG9mZiB0byBhdm9pZCBvb3BzaW5nIGluIHRo ZSBtb2Rlc2V0IGNvZGUKQEAgLTExODA3LDExICsxMTkwMiwxNSBAQCBmYWlsOgogCQkvKiBUcnkg dG8gcmVzdG9yZSB0aGUgY29uZmlnICovCiAJCWlmIChjb25maWctPm1vZGVfY2hhbmdlZCAmJgog CQkgICAgaW50ZWxfc2V0X21vZGUoc2F2ZV9zZXQuY3J0Yywgc2F2ZV9zZXQubW9kZSwKLQkJCQkg ICBzYXZlX3NldC54LCBzYXZlX3NldC55LCBzYXZlX3NldC5mYikpCisJCQkJICAgc2F2ZV9zZXQu eCwgc2F2ZV9zZXQueSwgc2F2ZV9zZXQuZmIsCisJCQkJICAgc3RhdGUpKQogCQkJRFJNX0VSUk9S KCJmYWlsZWQgdG8gcmVzdG9yZSBjb25maWcgYWZ0ZXIgbW9kZXNldCBmYWlsdXJlXG4iKTsKIAl9 CiAKIG91dF9jb25maWc6CisJaWYgKHN0YXRlKQorCQlkcm1fYXRvbWljX3N0YXRlX2ZyZWUoc3Rh dGUpOworCiAJaW50ZWxfc2V0X2NvbmZpZ19mcmVlKGNvbmZpZyk7CiAJcmV0dXJuIHJldDsKIH0K QEAgLTEzODUyLDggKzEzOTUxLDcgQEAgdm9pZCBpbnRlbF9tb2Rlc2V0X3NldHVwX2h3X3N0YXRl KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCiAJCQlzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPQogCQkJ CWRldl9wcml2LT5waXBlX3RvX2NydGNfbWFwcGluZ1twaXBlXTsKIAotCQkJaW50ZWxfc2V0X21v ZGUoY3J0YywgJmNydGMtPm1vZGUsIGNydGMtPngsIGNydGMtPnksCi0JCQkJICAgICAgIGNydGMt PnByaW1hcnktPmZiKTsKKwkJCWludGVsX2NydGNfcmVzdG9yZV9tb2RlKGNydGMpOwogCQl9CiAJ fSBlbHNlIHsKIAkJaW50ZWxfbW9kZXNldF91cGRhdGVfc3RhZ2VkX291dHB1dF9zdGF0ZShkZXYp OwotLSAKMi4xLjAKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==