From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 7/9] drm/xen-front: Implement KMS/connector handling Date: Wed, 21 Feb 2018 10:03:40 +0200 Message-ID: <1519200222-20623-8-git-send-email-andr2000@gmail.com> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-lf0-x241.google.com (mail-lf0-x241.google.com [IPv6:2a00:1450:4010:c07::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id C6F0B6E53C for ; Wed, 21 Feb 2018 08:04:05 +0000 (UTC) Received: by mail-lf0-x241.google.com with SMTP id l191so1086565lfe.1 for ; Wed, 21 Feb 2018 00:04:05 -0800 (PST) In-Reply-To: <1519200222-20623-1-git-send-email-andr2000@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko List-Id: dri-devel@lists.freedesktop.org RnJvbTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVw YW0uY29tPgoKSW1wbGVtZW50IGtlcm5lbCBtb2Rlc2V0aWluZy9jb25uZWN0b3IgaGFuZGxpbmcg dXNpbmcKRFJNIHNpbXBsZSBLTVMgaGVscGVyIHBpcGVsaW5lOgoKLSBpbXBsZW1lbnQgS01TIHBh cnQgb2YgdGhlIGRyaXZlciB3aXRoIHRoZSBoZWxwIG9mIERSTQogIHNpbXBsZSBwaXBlcGxpbmUg aGVscGVyIHdoaWNoIGlzIHBvc3NpYmxlIGR1ZSB0byB0aGUgZmFjdAogIHRoYXQgdGhlIHBhcmEt dmlydHVhbGl6ZWQgZHJpdmVyIG9ubHkgc3VwcG9ydHMgYSBzaW5nbGUKICAocHJpbWFyeSkgcGxh bmU6CiAgLSBpbml0aWFsaXplIGNvbm5lY3RvcnMgYWNjb3JkaW5nIHRvIFhlblN0b3JlIGNvbmZp Z3VyYXRpb24KICAtIGhhbmRsZSBmcmFtZSBkb25lIGV2ZW50cyBmcm9tIHRoZSBiYWNrZW5kCiAg LSBnZW5lcmF0ZSB2YmxhbmsgZXZlbnRzCiAgLSBjcmVhdGUgYW5kIGRlc3Ryb3kgZnJhbWUgYnVm ZmVycyBhbmQgcHJvcGFnYXRlIHRob3NlCiAgICB0byB0aGUgYmFja2VuZAogIC0gcHJvcGFnYXRl IHNldC9yZXNldCBtb2RlIGNvbmZpZ3VyYXRpb24gdG8gdGhlIGJhY2tlbmQgb24gZGlzcGxheQog ICAgZW5hYmxlL2Rpc2FibGUgY2FsbGJhY2tzCiAgLSBzZW5kIHBhZ2UgZmxpcCByZXF1ZXN0IHRv IHRoZSBiYWNrZW5kIGFuZCBpbXBsZW1lbnQgbG9naWMgZm9yCiAgICByZXBvcnRpbmcgYmFja2Vu ZCBJTyBlcnJvcnMgb24gcHJlcGFyZSBmYiBjYWxsYmFjawoKLSBpbXBsZW1lbnQgdmlydHVhbCBj b25uZWN0b3IgaGFuZGxpbmc6CiAgLSBzdXBwb3J0IG9ubHkgcGl4ZWwgZm9ybWF0cyBzdWl0YWJs ZSBmb3Igc2luZ2xlIHBsYW5lIG1vZGVzCiAgLSBtYWtlIHN1cmUgdGhlIGNvbm5lY3RvciBpcyBh bHdheXMgY29ubmVjdGVkCiAgLSBzdXBwb3J0IGEgc2luZ2xlIHZpZGVvIG1vZGUgYXMgcGVyIHBh cmEtdmlydHVhbGl6ZWQgZHJpdmVyCiAgICBjb25maWd1cmF0aW9uCgpTaWduZWQtb2ZmLWJ5OiBP bGVrc2FuZHIgQW5kcnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+ Ci0tLQogZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZSAgICAgICAgICAgICB8ICAgMiArCiBk cml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfY29ubi5jIHwgMTI1ICsrKysrKysrKysr KysKIGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9jb25uLmggfCAgMzUgKysrKwog ZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5jICB8ICAxNSArKwogZHJpdmVy cy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oICB8ICAxMiArKwogZHJpdmVycy9ncHUv ZHJtL3hlbi94ZW5fZHJtX2Zyb250X2ttcy5jICB8IDI5OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfa21zLmggIHwgIDMw ICsrKysKIDcgZmlsZXMgY2hhbmdlZCwgNTE4IGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEw MDY0NCBkcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfY29ubi5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nvbm4uaAogY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9rbXMuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9rbXMuaAoK ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9k cm0veGVuL01ha2VmaWxlCmluZGV4IGQzMDY4MjAyNTkwZi4uNGZjYjBkYTFhOWM1IDEwMDY0NAot LS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94 ZW4vTWFrZWZpbGUKQEAgLTIsNiArMiw4IEBACiAKIGRybV94ZW5fZnJvbnQtb2JqcyA6PSB4ZW5f ZHJtX2Zyb250Lm8gXAogCQkgICAgICB4ZW5fZHJtX2Zyb250X2Rydi5vIFwKKwkJICAgICAgeGVu X2RybV9mcm9udF9rbXMubyBcCisJCSAgICAgIHhlbl9kcm1fZnJvbnRfY29ubi5vIFwKIAkJICAg ICAgeGVuX2RybV9mcm9udF9ldnRjaG5sLm8gXAogCQkgICAgICB4ZW5fZHJtX2Zyb250X3NoYnVm Lm8gXAogCQkgICAgICB4ZW5fZHJtX2Zyb250X2NmZy5vCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfY29ubi5jIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2Nvbm4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAu LmQ5OTg2YTJlMWEzYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVu X2RybV9mcm9udF9jb25uLmMKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiAgWGVuIHBhcmEtdmly dHVhbCBEUk0gZGV2aWNlCisgKgorICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQor ICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgorICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor ICoKKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCisgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIw MTYtMjAxOCBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1 c2hjaGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICovCisKKyNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVs cGVyLmg+CisKKyNpbmNsdWRlIDx2aWRlby92aWRlb21vZGUuaD4KKworI2luY2x1ZGUgInhlbl9k cm1fZnJvbnRfY29ubi5oIgorI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfZHJ2LmgiCisKK3N0YXRp YyBzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1fcGlwZWxpbmUgKgordG9feGVuX2RybV9waXBlbGlu ZShzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQoreworCXJldHVybiBjb250YWluZXJf b2YoY29ubmVjdG9yLCBzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1fcGlwZWxpbmUsIGNvbm4pOwor fQorCitzdGF0aWMgY29uc3QgdWludDMyX3QgcGxhbmVfZm9ybWF0c1tdID0geworCURSTV9GT1JN QVRfUkdCNTY1LAorCURSTV9GT1JNQVRfUkdCODg4LAorCURSTV9GT1JNQVRfWFJHQjg4ODgsCisJ RFJNX0ZPUk1BVF9BUkdCODg4OCwKKwlEUk1fRk9STUFUX1hSR0I0NDQ0LAorCURSTV9GT1JNQVRf QVJHQjQ0NDQsCisJRFJNX0ZPUk1BVF9YUkdCMTU1NSwKKwlEUk1fRk9STUFUX0FSR0IxNTU1LAor fTsKKworY29uc3QgdWludDMyX3QgKnhlbl9kcm1fZnJvbnRfY29ubl9nZXRfZm9ybWF0cyhpbnQg KmZvcm1hdF9jb3VudCkKK3sKKwkqZm9ybWF0X2NvdW50ID0gQVJSQVlfU0laRShwbGFuZV9mb3Jt YXRzKTsKKwlyZXR1cm4gcGxhbmVfZm9ybWF0czsKK30KKworc3RhdGljIGVudW0gZHJtX2Nvbm5l Y3Rvcl9zdGF0dXMgY29ubmVjdG9yX2RldGVjdCgKKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNv bm5lY3RvciwgYm9vbCBmb3JjZSkKK3sKKwlpZiAoZHJtX2Rldl9pc191bnBsdWdnZWQoY29ubmVj dG9yLT5kZXYpKQorCQlyZXR1cm4gY29ubmVjdG9yX3N0YXR1c19kaXNjb25uZWN0ZWQ7CisKKwly ZXR1cm4gY29ubmVjdG9yX3N0YXR1c19jb25uZWN0ZWQ7Cit9CisKKyNkZWZpbmUgWEVOX0RSTV9O VU1fVklERU9fTU9ERVMJCTEKKyNkZWZpbmUgWEVOX0RSTV9DUlRDX1ZSRUZSRVNIX0haCTYwCisK K3N0YXRpYyBpbnQgY29ubmVjdG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29u bmVjdG9yKQoreworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqcGlwZWxpbmUg PQorCQl0b194ZW5fZHJtX3BpcGVsaW5lKGNvbm5lY3Rvcik7CisJc3RydWN0IGRybV9kaXNwbGF5 X21vZGUgKm1vZGU7CisJc3RydWN0IHZpZGVvbW9kZSB2aWRlb21vZGU7CisJaW50IHdpZHRoLCBo ZWlnaHQ7CisKKwltb2RlID0gZHJtX21vZGVfY3JlYXRlKGNvbm5lY3Rvci0+ZGV2KTsKKwlpZiAo IW1vZGUpCisJCXJldHVybiAwOworCisJbWVtc2V0KCZ2aWRlb21vZGUsIDAsIHNpemVvZih2aWRl b21vZGUpKTsKKwl2aWRlb21vZGUuaGFjdGl2ZSA9IHBpcGVsaW5lLT53aWR0aDsKKwl2aWRlb21v ZGUudmFjdGl2ZSA9IHBpcGVsaW5lLT5oZWlnaHQ7CisJd2lkdGggPSB2aWRlb21vZGUuaGFjdGl2 ZSArIHZpZGVvbW9kZS5oZnJvbnRfcG9yY2ggKworCQl2aWRlb21vZGUuaGJhY2tfcG9yY2ggKyB2 aWRlb21vZGUuaHN5bmNfbGVuOworCWhlaWdodCA9IHZpZGVvbW9kZS52YWN0aXZlICsgdmlkZW9t b2RlLnZmcm9udF9wb3JjaCArCisJCXZpZGVvbW9kZS52YmFja19wb3JjaCArIHZpZGVvbW9kZS52 c3luY19sZW47CisJdmlkZW9tb2RlLnBpeGVsY2xvY2sgPSB3aWR0aCAqIGhlaWdodCAqIFhFTl9E Uk1fQ1JUQ19WUkVGUkVTSF9IWjsKKwltb2RlLT50eXBlID0gRFJNX01PREVfVFlQRV9QUkVGRVJS RUQgfCBEUk1fTU9ERV9UWVBFX0RSSVZFUjsKKworCWRybV9kaXNwbGF5X21vZGVfZnJvbV92aWRl b21vZGUoJnZpZGVvbW9kZSwgbW9kZSk7CisJZHJtX21vZGVfcHJvYmVkX2FkZChjb25uZWN0b3Is IG1vZGUpOworCXJldHVybiBYRU5fRFJNX05VTV9WSURFT19NT0RFUzsKK30KKworc3RhdGljIGlu dCBjb25uZWN0b3JfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAor CQlzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkKK3sKKwlzdHJ1Y3QgeGVuX2RybV9mcm9u dF9kcm1fcGlwZWxpbmUgKnBpcGVsaW5lID0KKwkJCXRvX3hlbl9kcm1fcGlwZWxpbmUoY29ubmVj dG9yKTsKKworCWlmIChtb2RlLT5oZGlzcGxheSAhPSBwaXBlbGluZS0+d2lkdGgpCisJCXJldHVy biBNT0RFX0VSUk9SOworCisJaWYgKG1vZGUtPnZkaXNwbGF5ICE9IHBpcGVsaW5lLT5oZWlnaHQp CisJCXJldHVybiBNT0RFX0VSUk9SOworCisJcmV0dXJuIE1PREVfT0s7Cit9CisKK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MgY29ubmVjdG9yX2hlbHBlcl9m dW5jcyA9IHsKKwkuZ2V0X21vZGVzID0gY29ubmVjdG9yX2dldF9tb2RlcywKKwkubW9kZV92YWxp ZCA9IGNvbm5lY3Rvcl9tb2RlX3ZhbGlkLAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1f Y29ubmVjdG9yX2Z1bmNzIGNvbm5lY3Rvcl9mdW5jcyA9IHsKKwkuZGV0ZWN0ID0gY29ubmVjdG9y X2RldGVjdCwKKwkuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJvYmVfc2luZ2xlX2Nvbm5lY3Rv cl9tb2RlcywKKwkuZGVzdHJveSA9IGRybV9jb25uZWN0b3JfY2xlYW51cCwKKwkucmVzZXQgPSBk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfcmVzZXQsCisJLmF0b21pY19kdXBsaWNhdGVfc3Rh dGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLAorCS5hdG9t aWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0 YXRlLAorfTsKKworaW50IHhlbl9kcm1fZnJvbnRfY29ubl9pbml0KHN0cnVjdCB4ZW5fZHJtX2Zy b250X2RybV9pbmZvICpkcm1faW5mbywKKwkJc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3Rv cikKK3sKKwlkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmY29ubmVjdG9yX2hl bHBlcl9mdW5jcyk7CisKKwlyZXR1cm4gZHJtX2Nvbm5lY3Rvcl9pbml0KGRybV9pbmZvLT5kcm1f ZGV2LCBjb25uZWN0b3IsCisJCSZjb25uZWN0b3JfZnVuY3MsIERSTV9NT0RFX0NPTk5FQ1RPUl9W SVJUVUFMKTsKK30KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dF9jb25uLmggYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfY29ubi5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNzA4ZTgwZDQ1OTg1Ci0tLSAvZGV2 L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Nvbm4uaApAQCAt MCwwICsxLDM1IEBACisvKgorICogIFhlbiBwYXJhLXZpcnR1YWwgRFJNIGRldmljZQorICoKKyAq ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKKyAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyAqICAgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqICAgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiAgIFRoaXMgcHJvZ3JhbSBp cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogICBi dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50 eSBvZgorICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCisgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggRVBBTSBTeXN0ZW1zIElu Yy4KKyAqCisgKiBBdXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5k cnVzaGNoZW5rb0BlcGFtLmNvbT4KKyAqLworCisjaWZuZGVmIF9fWEVOX0RSTV9GUk9OVF9DT05O X0hfCisjZGVmaW5lIF9fWEVOX0RSTV9GUk9OVF9DT05OX0hfCisKKyNpbmNsdWRlIDxkcm0vZHJt UC5oPgorI2luY2x1ZGUgPGRybS9kcm1fY3J0Yy5oPgorI2luY2x1ZGUgPGRybS9kcm1fZW5jb2Rl ci5oPgorCisjaW5jbHVkZSA8bGludXgvd2FpdC5oPgorCitzdHJ1Y3QgeGVuX2RybV9mcm9udF9k cm1faW5mbzsKKworY29uc3QgdWludDMyX3QgKnhlbl9kcm1fZnJvbnRfY29ubl9nZXRfZm9ybWF0 cyhpbnQgKmZvcm1hdF9jb3VudCk7CisKK2ludCB4ZW5fZHJtX2Zyb250X2Nvbm5faW5pdChzdHJ1 Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8sCisJCXN0cnVjdCBkcm1fY29ubmVj dG9yICpjb25uZWN0b3IpOworCisjZW5kaWYgLyogX19YRU5fRFJNX0ZST05UX0NPTk5fSF8gKi8K ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYyBiL2Ry aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYwppbmRleCBiMzc2NGQ1ZWQwZjYu LmU4ODYyZDI2YmEyNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zy b250X2Rydi5jCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9kcnYuYwpA QCAtMjMsNiArMjMsNyBAQAogI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQuaCIKICNpbmNsdWRlICJ4 ZW5fZHJtX2Zyb250X2NmZy5oIgogI2luY2x1ZGUgInhlbl9kcm1fZnJvbnRfZHJ2LmgiCisjaW5j bHVkZSAieGVuX2RybV9mcm9udF9rbXMuaCIKIAogc3RhdGljIGludCBkdW1iX2NyZWF0ZShzdHJ1 Y3QgZHJtX2ZpbGUgKmZpbHAsCiAJCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkcm1f bW9kZV9jcmVhdGVfZHVtYiAqYXJncykKQEAgLTQxLDYgKzQyLDEzIEBAIHN0YXRpYyB2b2lkIGZy ZWVfb2JqZWN0KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQogc3RhdGljIHZvaWQgb25fZnJh bWVfZG9uZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2LAogCQlpbnQgY29ubl9pZHgsIHVp bnQ2NF90IGZiX2Nvb2tpZSkKIHsKKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJt X2luZm8gPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsKKworCWlmICh1bmxpa2VseShjb25u X2lkeCA+PSBkcm1faW5mby0+Y2ZnLT5udW1fY29ubmVjdG9ycykpCisJCXJldHVybjsKKworCXhl bl9kcm1fZnJvbnRfa21zX29uX2ZyYW1lX2RvbmUoJmRybV9pbmZvLT5waXBlbGluZVtjb25uX2lk eF0sCisJCQlmYl9jb29raWUpOwogfQogCiBzdGF0aWMgdm9pZCBsYXN0Y2xvc2Uoc3RydWN0IGRy bV9kZXZpY2UgKmRldikKQEAgLTE1Nyw2ICsxNjUsMTIgQEAgaW50IHhlbl9kcm1fZnJvbnRfZHJ2 X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAJCXJldHVybiByZXQ7CiAJfQog CisJcmV0ID0geGVuX2RybV9mcm9udF9rbXNfaW5pdChkcm1faW5mbyk7CisJaWYgKHJldCkgewor CQlEUk1fRVJST1IoIkZhaWxlZCB0byBpbml0aWFsaXplIERSTS9LTVMsIHJldCAlZFxuIiwgcmV0 KTsKKwkJZ290byBmYWlsX21vZGVzZXQ7CisJfQorCiAJZGV2LT5pcnFfZW5hYmxlZCA9IDE7CiAK IAlyZXQgPSBkcm1fZGV2X3JlZ2lzdGVyKGRldiwgMCk7CkBAIC0xNzIsNiArMTg2LDcgQEAgaW50 IHhlbl9kcm1fZnJvbnRfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsCiAK IGZhaWxfcmVnaXN0ZXI6CiAJZHJtX2Rldl91bnJlZ2lzdGVyKGRldik7CitmYWlsX21vZGVzZXQ6 CiAJZHJtX21vZGVfY29uZmlnX2NsZWFudXAoZGV2KTsKIAlyZXR1cm4gcmV0OwogfQpkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oIGIvZHJpdmVycy9n cHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oCmluZGV4IGFhYTQ3NjUzNWMxMy4uNTYzMzE4 YjE5ZjM0IDEwMDY0NAotLS0gYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZHJ2 LmgKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2Rydi5oCkBAIC0yMCwx NCArMjAsMjQgQEAKICNkZWZpbmUgX19YRU5fRFJNX0ZST05UX0RSVl9IXwogCiAjaW5jbHVkZSA8 ZHJtL2RybVAuaD4KKyNpbmNsdWRlIDxkcm0vZHJtX3NpbXBsZV9rbXNfaGVscGVyLmg+CiAKICNp bmNsdWRlICJ4ZW5fZHJtX2Zyb250LmgiCiAjaW5jbHVkZSAieGVuX2RybV9mcm9udF9jZmcuaCIK KyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Nvbm4uaCIKIAogc3RydWN0IHhlbl9kcm1fZnJvbnRf ZHJtX3BpcGVsaW5lIHsKIAlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm87 CiAKIAlpbnQgaW5kZXg7CisKKwlzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgcGlwZTsK KworCXN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm47CisJLyogdGhlc2UgYXJlIG9ubHkgZm9yIGNv bm5lY3RvciBtb2RlIGNoZWNraW5nICovCisJaW50IHdpZHRoLCBoZWlnaHQ7CisJLyogbGFzdCBi YWNrZW5kIGVycm9yIHNlZW4gb24gcGFnZSBmbGlwICovCisJaW50IHBnZmxpcF9sYXN0X2Vycm9y OwogfTsKIAogc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gewpAQCAtMzUsNiArNDUsOCBA QCBzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyB7CiAJc3RydWN0IHhlbl9kcm1fZnJvbnRf b3BzICpmcm9udF9vcHM7CiAJc3RydWN0IGRybV9kZXZpY2UgKmRybV9kZXY7CiAJc3RydWN0IHhl bl9kcm1fZnJvbnRfY2ZnICpjZmc7CisKKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1fcGlwZWxp bmUgcGlwZWxpbmVbWEVOX0RSTV9GUk9OVF9NQVhfQ1JUQ1NdOwogfTsKIAogc3RhdGljIGlubGlu ZSB1aW50NjRfdCB4ZW5fZHJtX2Zyb250X2ZiX3RvX2Nvb2tpZSgKZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9rbXMuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udF9rbXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MDAuLmFkOTRjMjg4MzVjZAotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udF9rbXMuYwpAQCAtMCwwICsxLDI5OSBAQAorLyoKKyAqICBYZW4gcGFyYS12 aXJ0dWFsIERSTSBkZXZpY2UKKyAqCisgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisgKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2Yg dGhlIExpY2Vuc2UsIG9yCisgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u CisgKgorICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp dCB3aWxsIGJlIHVzZWZ1bCwKKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIENvcHlyaWdodCAoQykg MjAxNi0yMDE4IEVQQU0gU3lzdGVtcyBJbmMuCisgKgorICogQXV0aG9yOiBPbGVrc2FuZHIgQW5k cnVzaGNoZW5rbyA8b2xla3NhbmRyX2FuZHJ1c2hjaGVua29AZXBhbS5jb20+CisgKi8KKworI2lu Y2x1ZGUgInhlbl9kcm1fZnJvbnRfa21zLmgiCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5oPgorI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+CisjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVy Lmg+CisjaW5jbHVkZSA8ZHJtL2RybV9nZW0uaD4KKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV9mcmFt ZWJ1ZmZlcl9oZWxwZXIuaD4KKworI2luY2x1ZGUgInhlbl9kcm1fZnJvbnQuaCIKKyNpbmNsdWRl ICJ4ZW5fZHJtX2Zyb250X2Nvbm4uaCIKKyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Rydi5oIgor CitzdGF0aWMgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICoKK3RvX3hlbl9kcm1f cGlwZWxpbmUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBlKQoreworCXJldHVy biBjb250YWluZXJfb2YocGlwZSwgc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lLCBw aXBlKTsKK30KKworc3RhdGljIHZvaWQgZmJfZGVzdHJveShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYikKK3sKKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8gPSBmYi0+ ZGV2LT5kZXZfcHJpdmF0ZTsKKworCWRybV9pbmZvLT5mcm9udF9vcHMtPmZiX2RldGFjaChkcm1f aW5mby0+ZnJvbnRfaW5mbywKKwkJCXhlbl9kcm1fZnJvbnRfZmJfdG9fY29va2llKGZiKSk7CisJ ZHJtX2dlbV9mYl9kZXN0cm95KGZiKTsKK30KKworc3RhdGljIHN0cnVjdCBkcm1fZnJhbWVidWZm ZXJfZnVuY3MgZmJfZnVuY3MgPSB7CisJLmRlc3Ryb3kgPSBmYl9kZXN0cm95LAorfTsKKworc3Rh dGljIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LAorCQlzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHAsIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9mYl9j bWQyICptb2RlX2NtZCkKK3sKKwlzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2lu Zm8gPSBkZXYtPmRldl9wcml2YXRlOworCXN0YXRpYyBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpm YjsKKwlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmo7CisJaW50IHJldDsKKworCWZiID0g ZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9mdW5jcyhkZXYsIGZpbHAsIG1vZGVfY21kLCAmZmJfZnVu Y3MpOworCWlmIChJU19FUlJfT1JfTlVMTChmYikpCisJCXJldHVybiBmYjsKKworCWdlbV9vYmog PSBkcm1fZ2VtX29iamVjdF9sb29rdXAoZmlscCwgbW9kZV9jbWQtPmhhbmRsZXNbMF0pOworCWlm ICghZ2VtX29iaikgeworCQlEUk1fRVJST1IoIkZhaWxlZCB0byBsb29rdXAgR0VNIG9iamVjdFxu Iik7CisJCXJldCA9IC1FTk9FTlQ7CisJCWdvdG8gZmFpbDsKKwl9CisKKwlkcm1fZ2VtX29iamVj dF91bnJlZmVyZW5jZV91bmxvY2tlZChnZW1fb2JqKTsKKworCXJldCA9IGRybV9pbmZvLT5mcm9u dF9vcHMtPmZiX2F0dGFjaCgKKwkJCWRybV9pbmZvLT5mcm9udF9pbmZvLAorCQkJeGVuX2RybV9m cm9udF9kYnVmX3RvX2Nvb2tpZShnZW1fb2JqKSwKKwkJCXhlbl9kcm1fZnJvbnRfZmJfdG9fY29v a2llKGZiKSwKKwkJCWZiLT53aWR0aCwgZmItPmhlaWdodCwgZmItPmZvcm1hdC0+Zm9ybWF0KTsK KwlpZiAocmV0IDwgMCkgeworCQlEUk1fRVJST1IoIkJhY2sgZmFpbGVkIHRvIGF0dGFjaCBGQiAl cDogJWRcbiIsIGZiLCByZXQpOworCQlnb3RvIGZhaWw7CisJfQorCisJcmV0dXJuIGZiOworCitm YWlsOgorCWRybV9nZW1fZmJfZGVzdHJveShmYik7CisJcmV0dXJuIEVSUl9QVFIocmV0KTsKK30K Kworc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fbW9kZV9jb25maWdfZnVuY3MgbW9kZV9jb25maWdf ZnVuY3MgPSB7CisJLmZiX2NyZWF0ZSA9IGZiX2NyZWF0ZSwKKwkuYXRvbWljX2NoZWNrID0gZHJt X2F0b21pY19oZWxwZXJfY2hlY2ssCisJLmF0b21pY19jb21taXQgPSBkcm1fYXRvbWljX2hlbHBl cl9jb21taXQsCit9OworCitzdGF0aWMgaW50IGRpc3BsYXlfc2V0X2NvbmZpZyhzdHJ1Y3QgZHJt X3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCisJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIp Cit7CisJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICpwaXBlbGluZSA9CisJCQl0 b194ZW5fZHJtX3BpcGVsaW5lKHBpcGUpOworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBl LT5jcnRjOworCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9pbmZvICpkcm1faW5mbyA9IHBpcGVs aW5lLT5kcm1faW5mbzsKKwlpbnQgcmV0OworCisJaWYgKGZiKQorCQlyZXQgPSBkcm1faW5mby0+ ZnJvbnRfb3BzLT5tb2RlX3NldChwaXBlbGluZSwKKwkJCQljcnRjLT54LCBjcnRjLT55LAorCQkJ CWZiLT53aWR0aCwgZmItPmhlaWdodCwgZmItPmZvcm1hdC0+Y3BwWzBdICogOCwKKwkJCQl4ZW5f ZHJtX2Zyb250X2ZiX3RvX2Nvb2tpZShmYikpOworCWVsc2UKKwkJcmV0ID0gZHJtX2luZm8tPmZy b250X29wcy0+bW9kZV9zZXQocGlwZWxpbmUsCisJCQkJMCwgMCwgMCwgMCwgMCwKKwkJCQl4ZW5f ZHJtX2Zyb250X2ZiX3RvX2Nvb2tpZShOVUxMKSk7CisKKwlpZiAocmV0KQorCQlEUk1fRVJST1Io IkZhaWxlZCB0byBzZXQgbW9kZSB0byBiYWNrOiAlZFxuIiwgcmV0KTsKKworCXJldHVybiByZXQ7 Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BsYXlfZW5hYmxlKHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3Bs YXlfcGlwZSAqcGlwZSwKKwkJc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlKQorewor CXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBlLT5jcnRjOworCXN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiID0gcGlwZS0+cGxhbmUuc3RhdGUtPmZiOworCisJaWYgKGRpc3BsYXlfc2V0X2Nv bmZpZyhwaXBlLCBmYikgPT0gMCkKKwkJZHJtX2NydGNfdmJsYW5rX29uKGNydGMpOworCWVsc2UK KwkJRFJNX0VSUk9SKCJGYWlsZWQgdG8gZW5hYmxlIGRpc3BsYXlcbiIpOworfQorCitzdGF0aWMg dm9pZCBkaXNwbGF5X2Rpc2FibGUoc3RydWN0IGRybV9zaW1wbGVfZGlzcGxheV9waXBlICpwaXBl KQoreworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBlLT5jcnRjOworCisJZGlzcGxheV9z ZXRfY29uZmlnKHBpcGUsIE5VTEwpOworCWRybV9jcnRjX3ZibGFua19vZmYoY3J0Yyk7CisJLyog ZmluYWwgY2hlY2sgZm9yIHN0YWxsZWQgZXZlbnRzICovCisJaWYgKGNydGMtPnN0YXRlLT5ldmVu dCAmJiAhY3J0Yy0+c3RhdGUtPmFjdGl2ZSkgeworCQl1bnNpZ25lZCBsb25nIGZsYWdzOworCisJ CXNwaW5fbG9ja19pcnFzYXZlKCZjcnRjLT5kZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwkJZHJt X2NydGNfc2VuZF92YmxhbmtfZXZlbnQoY3J0YywgY3J0Yy0+c3RhdGUtPmV2ZW50KTsKKwkJc3Bp bl91bmxvY2tfaXJxcmVzdG9yZSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrLCBmbGFncyk7CisJCWNy dGMtPnN0YXRlLT5ldmVudCA9IE5VTEw7CisJfQorfQorCit2b2lkIHhlbl9kcm1fZnJvbnRfa21z X29uX2ZyYW1lX2RvbmUoCisJCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqcGlw ZWxpbmUsCisJCXVpbnQ2NF90IGZiX2Nvb2tpZSkKK3sKKwlkcm1fY3J0Y19oYW5kbGVfdmJsYW5r KCZwaXBlbGluZS0+cGlwZS5jcnRjKTsKK30KKworc3RhdGljIHZvaWQgZGlzcGxheV9zZW5kX3Bh Z2VfZmxpcChzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBpcGUsCisJCXN0cnVjdCBk cm1fcGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSkKK3sKKwlzdHJ1Y3QgZHJtX3BsYW5lX3N0 YXRlICpwbGFuZV9zdGF0ZSA9IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZSgKKwkJCW9s ZF9wbGFuZV9zdGF0ZS0+c3RhdGUsICZwaXBlLT5wbGFuZSk7CisKKwkvKgorCSAqIElmIG9sZF9w bGFuZV9zdGF0ZS0+ZmIgaXMgTlVMTCBhbmQgcGxhbmVfc3RhdGUtPmZiIGlzIG5vdCwKKwkgKiB0 aGVuIHRoaXMgaXMgYW4gYXRvbWljIGNvbW1pdCB3aGljaCB3aWxsIGVuYWJsZSBkaXNwbGF5Lgor CSAqIElmIG9sZF9wbGFuZV9zdGF0ZS0+ZmIgaXMgbm90IE5VTEwgYW5kIHBsYW5lX3N0YXRlLT5m YiBpcywKKwkgKiB0aGVuIHRoaXMgaXMgYW4gYXRvbWljIGNvbW1pdCB3aGljaCB3aWxsIGRpc2Fi bGUgZGlzcGxheS4KKwkgKiBJZ25vcmUgdGhlc2UgYW5kIGRvIG5vdCBzZW5kIHBhZ2UgZmxpcCBh cyB0aGlzIGZyYW1lYnVmZmVyIHdpbGwgYmUKKwkgKiBzZW50IHRvIHRoZSBiYWNrZW5kIGFzIGEg cGFydCBvZiBkaXNwbGF5X3NldF9jb25maWcgY2FsbC4KKwkgKi8KKwlpZiAob2xkX3BsYW5lX3N0 YXRlLT5mYiAmJiBwbGFuZV9zdGF0ZS0+ZmIpIHsKKwkJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJt X3BpcGVsaW5lICpwaXBlbGluZSA9CisJCQkJdG9feGVuX2RybV9waXBlbGluZShwaXBlKTsKKwkJ c3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX2luZm8gKmRybV9pbmZvID0gcGlwZWxpbmUtPmRybV9p bmZvOworCQlpbnQgcmV0OworCisJCXJldCA9IGRybV9pbmZvLT5mcm9udF9vcHMtPnBhZ2VfZmxp cChkcm1faW5mby0+ZnJvbnRfaW5mbywKKwkJCQlwaXBlbGluZS0+aW5kZXgsCisJCQkJeGVuX2Ry bV9mcm9udF9mYl90b19jb29raWUocGxhbmVfc3RhdGUtPmZiKSk7CisJCXBpcGVsaW5lLT5wZ2Zs aXBfbGFzdF9lcnJvciA9IHJldDsKKwkJaWYgKHJldCkgeworCQkJRFJNX0VSUk9SKCJGYWlsZWQg dG8gc2VuZCBwYWdlIGZsaXAgcmVxdWVzdCB0byBiYWNrZW5kOiAlZFxuIiwgcmV0KTsKKwkJCS8q CisJCQkgKiBBcyB3ZSBhcmUgYXQgY29tbWl0IHN0YWdlIHRoZSBEUk0gY29yZSB3aWxsIGFueXdh eXMKKwkJCSAqIHdhaXQgZm9yIHRoZSB2YmxhbmsgYW5kIGtub3dzIG5vdGhpbmcgYWJvdXQgb3Vy CisJCQkgKiBmYWlsdXJlLiBUaGUgYmVzdCB3ZSBjYW4gZG8gaXMgdG8gaGFuZGxlCisJCQkgKiB2 Ymxhbmsgbm93LCBzbyB0aGVyZSBpcyBubyB2YmxhbmsvZmxpcF9kb25lCisJCQkgKiB0aW1lIG91 dHMKKwkJCSAqLworCQkJZHJtX2NydGNfaGFuZGxlX3ZibGFuaygmcGlwZWxpbmUtPnBpcGUuY3J0 Yyk7CisJCX0KKwl9Cit9CisKK3N0YXRpYyBpbnQgZGlzcGxheV9wcmVwYXJlX2ZiKHN0cnVjdCBk cm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq cGxhbmVfc3RhdGUpCit7CisJc3RydWN0IHhlbl9kcm1fZnJvbnRfZHJtX3BpcGVsaW5lICpwaXBl bGluZSA9CisJCQl0b194ZW5fZHJtX3BpcGVsaW5lKHBpcGUpOworCisJaWYgKHBpcGVsaW5lLT5w Z2ZsaXBfbGFzdF9lcnJvcikgeworCQlpbnQgcmV0OworCisJCS8qIGlmIHByZXZpb3VzIHBhZ2Ug ZmxpcCBkaWRuJ3Qgc3VjY2VlZCB0aGVuIHJlcG9ydCB0aGUgZXJyb3IgKi8KKwkJcmV0ID0gcGlw ZWxpbmUtPnBnZmxpcF9sYXN0X2Vycm9yOworCQkvKiBhbmQgbGV0IHVzIHRyeSB0byBwYWdlIGZs aXAgbmV4dCB0aW1lICovCisJCXBpcGVsaW5lLT5wZ2ZsaXBfbGFzdF9lcnJvciA9IDA7CisJCXJl dHVybiByZXQ7CisJfQorCXJldHVybiBkcm1fZ2VtX2ZiX3ByZXBhcmVfZmIoJnBpcGUtPnBsYW5l LCBwbGFuZV9zdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGRpc3BsYXlfdXBkYXRlKHN0cnVjdCBk cm1fc2ltcGxlX2Rpc3BsYXlfcGlwZSAqcGlwZSwKKwkJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAq b2xkX3BsYW5lX3N0YXRlKQoreworCXN0cnVjdCBkcm1fY3J0YyAqY3J0YyA9ICZwaXBlLT5jcnRj OworCXN0cnVjdCBkcm1fcGVuZGluZ192YmxhbmtfZXZlbnQgKmV2ZW50OworCisJZXZlbnQgPSBj cnRjLT5zdGF0ZS0+ZXZlbnQ7CisJaWYgKGV2ZW50KSB7CisJCXN0cnVjdCBkcm1fZGV2aWNlICpk ZXYgPSBjcnRjLT5kZXY7CisJCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisKKwkJY3J0Yy0+c3RhdGUt PmV2ZW50ID0gTlVMTDsKKworCQlzcGluX2xvY2tfaXJxc2F2ZSgmZGV2LT5ldmVudF9sb2NrLCBm bGFncyk7CisJCWlmIChkcm1fY3J0Y192YmxhbmtfZ2V0KGNydGMpID09IDApCisJCQlkcm1fY3J0 Y19hcm1fdmJsYW5rX2V2ZW50KGNydGMsIGV2ZW50KTsKKwkJZWxzZQorCQkJZHJtX2NydGNfc2Vu ZF92YmxhbmtfZXZlbnQoY3J0YywgZXZlbnQpOworCQlzcGluX3VubG9ja19pcnFyZXN0b3JlKCZk ZXYtPmV2ZW50X2xvY2ssIGZsYWdzKTsKKwl9CisJLyoKKwkgKiBTZW5kIHBhZ2UgZmxpcCByZXF1 ZXN0IHRvIHRoZSBiYWNrZW5kICphZnRlciogd2UgaGF2ZSBldmVudCBhcm1lZC8KKwkgKiBzZW50 IGFib3ZlLCBzbyBvbiBwYWdlIGZsaXAgZG9uZSBldmVudCBmcm9tIHRoZSBiYWNrZW5kIHdlIGNh bgorCSAqIGRlbGl2ZXIgaXQgd2hpbGUgaGFuZGxpbmcgdmJsYW5rLgorCSAqLworCWRpc3BsYXlf c2VuZF9wYWdlX2ZsaXAocGlwZSwgb2xkX3BsYW5lX3N0YXRlKTsKK30KKworc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fc2ltcGxlX2Rpc3BsYXlfcGlwZV9mdW5jcyBkaXNwbGF5X2Z1bmNzID0gewor CS5lbmFibGUgPSBkaXNwbGF5X2VuYWJsZSwKKwkuZGlzYWJsZSA9IGRpc3BsYXlfZGlzYWJsZSwK KwkucHJlcGFyZV9mYiA9IGRpc3BsYXlfcHJlcGFyZV9mYiwKKwkudXBkYXRlID0gZGlzcGxheV91 cGRhdGUsCit9OworCitzdGF0aWMgaW50IGRpc3BsYXlfcGlwZV9pbml0KHN0cnVjdCB4ZW5fZHJt X2Zyb250X2RybV9pbmZvICpkcm1faW5mbywKKwkJaW50IGluZGV4LCBzdHJ1Y3QgeGVuX2RybV9m cm9udF9jZmdfY29ubmVjdG9yICpjZmcsCisJCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBl bGluZSAqcGlwZWxpbmUpCit7CisJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGRybV9pbmZvLT5k cm1fZGV2OworCWNvbnN0IHVpbnQzMl90ICpmb3JtYXRzOworCWludCBmb3JtYXRfY291bnQ7CisJ aW50IHJldDsKKworCXBpcGVsaW5lLT5kcm1faW5mbyA9IGRybV9pbmZvOworCXBpcGVsaW5lLT5p bmRleCA9IGluZGV4OworCXBpcGVsaW5lLT5oZWlnaHQgPSBjZmctPmhlaWdodDsKKwlwaXBlbGlu ZS0+d2lkdGggPSBjZmctPndpZHRoOworCisJcmV0ID0geGVuX2RybV9mcm9udF9jb25uX2luaXQo ZHJtX2luZm8sICZwaXBlbGluZS0+Y29ubik7CisJaWYgKHJldCkKKwkJcmV0dXJuIHJldDsKKwor CWZvcm1hdHMgPSB4ZW5fZHJtX2Zyb250X2Nvbm5fZ2V0X2Zvcm1hdHMoJmZvcm1hdF9jb3VudCk7 CisKKwlyZXR1cm4gZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGVfaW5pdChkZXYsICZwaXBlbGluZS0+ cGlwZSwKKwkJCSZkaXNwbGF5X2Z1bmNzLCBmb3JtYXRzLCBmb3JtYXRfY291bnQsCisJCQlOVUxM LCAmcGlwZWxpbmUtPmNvbm4pOworfQorCitpbnQgeGVuX2RybV9mcm9udF9rbXNfaW5pdChzdHJ1 Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8pCit7CisJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGRybV9pbmZvLT5kcm1fZGV2OworCWludCBpLCByZXQ7CisKKwlkcm1fbW9kZV9j b25maWdfaW5pdChkZXYpOworCisJZGV2LT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAwOworCWRl di0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDA7CisJZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lk dGggPSA0MDk1OworCWRldi0+bW9kZV9jb25maWcubWF4X2hlaWdodCA9IDIwNDc7CisJZGV2LT5t b2RlX2NvbmZpZy5mdW5jcyA9ICZtb2RlX2NvbmZpZ19mdW5jczsKKworCWZvciAoaSA9IDA7IGkg PCBkcm1faW5mby0+Y2ZnLT5udW1fY29ubmVjdG9yczsgaSsrKSB7CisJCXN0cnVjdCB4ZW5fZHJt X2Zyb250X2NmZ19jb25uZWN0b3IgKmNmZyA9CisJCQkJJmRybV9pbmZvLT5jZmctPmNvbm5lY3Rv cnNbaV07CisJCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2RybV9waXBlbGluZSAqcGlwZWxpbmUgPQor CQkJCSZkcm1faW5mby0+cGlwZWxpbmVbaV07CisKKwkJcmV0ID0gZGlzcGxheV9waXBlX2luaXQo ZHJtX2luZm8sIGksIGNmZywgcGlwZWxpbmUpOworCQlpZiAocmV0KSB7CisJCQlkcm1fbW9kZV9j b25maWdfY2xlYW51cChkZXYpOworCQkJcmV0dXJuIHJldDsKKwkJfQorCX0KKworCWRybV9tb2Rl X2NvbmZpZ19yZXNldChkZXYpOworCXJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2ttcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u NjVhNTAwMzNiYjliCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250X2ttcy5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiAgWGVuIHBhcmEtdmlydHVh bCBEUk0gZGV2aWNlCisgKgorICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICog ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBM aWNlbnNlLCBvcgorICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK KyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCisgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYt MjAxOCBFUEFNIFN5c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hj aGVua28gPG9sZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICovCisKKyNpZm5kZWYg X19YRU5fRFJNX0ZST05UX0tNU19IXworI2RlZmluZSBfX1hFTl9EUk1fRlJPTlRfS01TX0hfCisK KyNpbmNsdWRlICJ4ZW5fZHJtX2Zyb250X2Rydi5oIgorCitpbnQgeGVuX2RybV9mcm9udF9rbXNf aW5pdChzdHJ1Y3QgeGVuX2RybV9mcm9udF9kcm1faW5mbyAqZHJtX2luZm8pOworCit2b2lkIHhl bl9kcm1fZnJvbnRfa21zX29uX2ZyYW1lX2RvbmUoCisJCXN0cnVjdCB4ZW5fZHJtX2Zyb250X2Ry bV9waXBlbGluZSAqcGlwZWxpbmUsCisJCXVpbnQ2NF90IGZiX2Nvb2tpZSk7CisKKyNlbmRpZiAv KiBfX1hFTl9EUk1fRlJPTlRfS01TX0hfICovCi0tIAoyLjcuNAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752040AbeBUIEn (ORCPT ); Wed, 21 Feb 2018 03:04:43 -0500 Received: from mail-lf0-f68.google.com ([209.85.215.68]:42801 "EHLO mail-lf0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751922AbeBUIEF (ORCPT ); Wed, 21 Feb 2018 03:04:05 -0500 X-Google-Smtp-Source: AH8x2249KKbMUX4WdwN6SmLCdxVFWxmECDnsT1ClyS7I42ptPNyJmk9fe5nor33HENTGLmSdbNKr6g== From: Oleksandr Andrushchenko To: xen-devel@lists.xenproject.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, airlied@linux.ie, daniel.vetter@intel.com, seanpaul@chromium.org, gustavo@padovan.org, jgross@suse.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Cc: andr2000@gmail.com, Oleksandr Andrushchenko Subject: [PATCH 7/9] drm/xen-front: Implement KMS/connector handling Date: Wed, 21 Feb 2018 10:03:40 +0200 Message-Id: <1519200222-20623-8-git-send-email-andr2000@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1519200222-20623-1-git-send-email-andr2000@gmail.com> References: <1519200222-20623-1-git-send-email-andr2000@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Oleksandr Andrushchenko Implement kernel modesetiing/connector handling using DRM simple KMS helper pipeline: - implement KMS part of the driver with the help of DRM simple pipepline helper which is possible due to the fact that the para-virtualized driver only supports a single (primary) plane: - initialize connectors according to XenStore configuration - handle frame done events from the backend - generate vblank events - create and destroy frame buffers and propagate those to the backend - propagate set/reset mode configuration to the backend on display enable/disable callbacks - send page flip request to the backend and implement logic for reporting backend IO errors on prepare fb callback - implement virtual connector handling: - support only pixel formats suitable for single plane modes - make sure the connector is always connected - support a single video mode as per para-virtualized driver configuration Signed-off-by: Oleksandr Andrushchenko --- drivers/gpu/drm/xen/Makefile | 2 + drivers/gpu/drm/xen/xen_drm_front_conn.c | 125 +++++++++++++ drivers/gpu/drm/xen/xen_drm_front_conn.h | 35 ++++ drivers/gpu/drm/xen/xen_drm_front_drv.c | 15 ++ drivers/gpu/drm/xen/xen_drm_front_drv.h | 12 ++ drivers/gpu/drm/xen/xen_drm_front_kms.c | 299 +++++++++++++++++++++++++++++++ drivers/gpu/drm/xen/xen_drm_front_kms.h | 30 ++++ 7 files changed, 518 insertions(+) create mode 100644 drivers/gpu/drm/xen/xen_drm_front_conn.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_conn.h create mode 100644 drivers/gpu/drm/xen/xen_drm_front_kms.c create mode 100644 drivers/gpu/drm/xen/xen_drm_front_kms.h diff --git a/drivers/gpu/drm/xen/Makefile b/drivers/gpu/drm/xen/Makefile index d3068202590f..4fcb0da1a9c5 100644 --- a/drivers/gpu/drm/xen/Makefile +++ b/drivers/gpu/drm/xen/Makefile @@ -2,6 +2,8 @@ drm_xen_front-objs := xen_drm_front.o \ xen_drm_front_drv.o \ + xen_drm_front_kms.o \ + xen_drm_front_conn.o \ xen_drm_front_evtchnl.o \ xen_drm_front_shbuf.o \ xen_drm_front_cfg.o diff --git a/drivers/gpu/drm/xen/xen_drm_front_conn.c b/drivers/gpu/drm/xen/xen_drm_front_conn.c new file mode 100644 index 000000000000..d9986a2e1a3b --- /dev/null +++ b/drivers/gpu/drm/xen/xen_drm_front_conn.c @@ -0,0 +1,125 @@ +/* + * Xen para-virtual DRM device + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * Copyright (C) 2016-2018 EPAM Systems Inc. + * + * Author: Oleksandr Andrushchenko + */ + +#include +#include + +#include