From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH v2 1/8] drm/xen-front: Introduce Xen para-virtualized frontend driver Date: Tue, 13 Mar 2018 15:31:00 +0200 Message-ID: <1520947867-32514-2-git-send-email-andr2000@gmail.com> References: <1520947867-32514-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-x244.google.com (mail-lf0-x244.google.com [IPv6:2a00:1450:4010:c07::244]) by gabe.freedesktop.org (Postfix) with ESMTPS id 618AA6E4DE for ; Tue, 13 Mar 2018 13:31:19 +0000 (UTC) Received: by mail-lf0-x244.google.com with SMTP id v9-v6so28771332lfa.11 for ; Tue, 13 Mar 2018 06:31:19 -0700 (PDT) In-Reply-To: <1520947867-32514-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 YW0uY29tPgoKSW50cm9kdWNlIHNrZWxldG9uIG9mIHRoZSBwYXJhLXZpcnR1YWxpemVkIFhlbiBk aXNwbGF5CmZyb250ZW5kIGRyaXZlci4gVGhpcyBwYXRjaCBvbmx5IGFkZHMgcmVxdWlyZWQKZXNz ZW50aWFsIHN0dWJzLgoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9LY29u ZmlnICAgICAgICAgICAgIHwgIDIgKysKIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAgICAg ICAgIHwgIDEgKwogZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnICAgICAgICAgfCAxNyArKysr KysrKysKIGRyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUgICAgICAgIHwgIDUgKysrCiBkcml2 ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYyB8IDcwICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgOTUgaW5zZXJ0aW9ucygrKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZwogY3JlYXRlIG1vZGUg MTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZpbGUKIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKaW5kZXggZGVlZWZhN2Ex NzczLi43NTc4MjVhYzYwZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCisr KyBiL2RyaXZlcnMvZ3B1L2RybS9LY29uZmlnCkBAIC0yODksNiArMjg5LDggQEAgc291cmNlICJk cml2ZXJzL2dwdS9kcm0vcGwxMTEvS2NvbmZpZyIKIAogc291cmNlICJkcml2ZXJzL2dwdS9kcm0v dHZlMjAwL0tjb25maWciCiAKK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnIgor CiAjIEtlZXAgbGVnYWN5IGRyaXZlcnMgbGFzdAogCiBtZW51Y29uZmlnIERSTV9MRUdBQ1kKZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2RybS9NYWtl ZmlsZQppbmRleCA1MDA5M2ZmNDQ3OWIuLjlkNjY2NTdlYTExNyAxMDA2NDQKLS0tIGEvZHJpdmVy cy9ncHUvZHJtL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZQpAQCAtMTAz LDMgKzEwMyw0IEBAIG9iai0kKENPTkZJR19EUk1fTVhTRkIpCSs9IG14c2ZiLwogb2JqLSQoQ09O RklHX0RSTV9USU5ZRFJNKSArPSB0aW55ZHJtLwogb2JqLSQoQ09ORklHX0RSTV9QTDExMSkgKz0g cGwxMTEvCiBvYmotJChDT05GSUdfRFJNX1RWRTIwMCkgKz0gdHZlMjAwLworb2JqLSQoQ09ORklH X0RSTV9YRU4pICs9IHhlbi8KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZp ZyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vS2NvbmZpZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMDAuLjRjY2ExNjA3ODJhYgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMv Z3B1L2RybS94ZW4vS2NvbmZpZwpAQCAtMCwwICsxLDE3IEBACitjb25maWcgRFJNX1hFTgorCWJv b2wgIkRSTSBTdXBwb3J0IGZvciBYZW4gZ3Vlc3QgT1MiCisJZGVwZW5kcyBvbiBYRU4KKwloZWxw CisJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gZW5hYmxlIERSTSBzdXBwb3J0 CisJICBmb3IgWGVuLgorCitjb25maWcgRFJNX1hFTl9GUk9OVEVORAorCXRyaXN0YXRlICJQYXJh LXZpcnR1YWxpemVkIGZyb250ZW5kIGRyaXZlciBmb3IgWGVuIGd1ZXN0IE9TIgorCWRlcGVuZHMg b24gRFJNX1hFTgorCWRlcGVuZHMgb24gRFJNCisJc2VsZWN0IERSTV9LTVNfSEVMUEVSCisJc2Vs ZWN0IFZJREVPTU9ERV9IRUxQRVJTCisJc2VsZWN0IFhFTl9YRU5CVVNfRlJPTlRFTkQKKwloZWxw CisJICBDaG9vc2UgdGhpcyBvcHRpb24gaWYgeW91IHdhbnQgdG8gZW5hYmxlIGEgcGFyYS12aXJ0 dWFsaXplZAorCSAgZnJvbnRlbmQgRFJNL0tNUyBkcml2ZXIgZm9yIFhlbiBndWVzdCBPU2VzLgpk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1L2Ry bS94ZW4vTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4z MjgzZTEwNGM3YmIKLS0tIC9kZXYvbnVsbAorKysgYi9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2Vm aWxlCkBAIC0wLDAgKzEsNSBAQAorIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBP UiBNSVQKKworZHJtX3hlbl9mcm9udC1vYmpzIDo9IHhlbl9kcm1fZnJvbnQubworCitvYmotJChD T05GSUdfRFJNX1hFTl9GUk9OVEVORCkgKz0gZHJtX3hlbl9mcm9udC5vCmRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnQuYyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4v eGVuX2RybV9mcm9udC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u MDNiYzUwYjEyOGZkCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5f ZHJtX2Zyb250LmMKQEAgLTAsMCArMSw3MCBAQAorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6 IEdQTC0yLjAgT1IgTUlUCisKKy8qCisgKiAgWGVuIHBhcmEtdmlydHVhbCBEUk0gZGV2aWNlCisg KgorICogQ29weXJpZ2h0IChDKSAyMDE2LTIwMTggRVBBTSBTeXN0ZW1zIEluYy4KKyAqCisgKiBB dXRob3I6IE9sZWtzYW5kciBBbmRydXNoY2hlbmtvIDxvbGVrc2FuZHJfYW5kcnVzaGNoZW5rb0Bl cGFtLmNvbT4KKyAqLworCisjaW5jbHVkZSA8ZHJtL2RybVAuaD4KKworI2luY2x1ZGUgPHhlbi9w bGF0Zm9ybV9wY2kuaD4KKyNpbmNsdWRlIDx4ZW4veGVuLmg+CisjaW5jbHVkZSA8eGVuL3hlbmJ1 cy5oPgorCisjaW5jbHVkZSA8eGVuL2ludGVyZmFjZS9pby9kaXNwbGlmLmg+CisKK3N0YXRpYyB2 b2lkIGRpc3BsYmFja19jaGFuZ2VkKHN0cnVjdCB4ZW5idXNfZGV2aWNlICp4Yl9kZXYsCisJCWVu dW0geGVuYnVzX3N0YXRlIGJhY2tlbmRfc3RhdGUpCit7Cit9CisKK3N0YXRpYyBpbnQgeGVuX2Ry dl9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJfZGV2LAorCQljb25zdCBzdHJ1Y3QgeGVu YnVzX2RldmljZV9pZCAqaWQpCit7CisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQgeGVuX2Ry dl9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldikKK3sKKwlyZXR1cm4gMDsKK30KKwor c3RhdGljIGNvbnN0IHN0cnVjdCB4ZW5idXNfZGV2aWNlX2lkIHhlbl9kcnZfaWRzW10gPSB7CisJ eyBYRU5ESVNQTF9EUklWRVJfTkFNRSB9LAorCXsgIiIgfQorfTsKKworc3RhdGljIHN0cnVjdCB4 ZW5idXNfZHJpdmVyIHhlbl9kcml2ZXIgPSB7CisJLmlkcyA9IHhlbl9kcnZfaWRzLAorCS5wcm9i ZSA9IHhlbl9kcnZfcHJvYmUsCisJLnJlbW92ZSA9IHhlbl9kcnZfcmVtb3ZlLAorCS5vdGhlcmVu ZF9jaGFuZ2VkID0gZGlzcGxiYWNrX2NoYW5nZWQsCit9OworCitzdGF0aWMgaW50IF9faW5pdCB4 ZW5fZHJ2X2luaXQodm9pZCkKK3sKKwlpZiAoIXhlbl9kb21haW4oKSkKKwkJcmV0dXJuIC1FTk9E RVY7CisKKwlpZiAoIXhlbl9oYXNfcHZfZGV2aWNlcygpKQorCQlyZXR1cm4gLUVOT0RFVjsKKwor CURSTV9JTkZPKCJSZWdpc3RlcmluZyBYRU4gUFYgIiBYRU5ESVNQTF9EUklWRVJfTkFNRSAiXG4i KTsKKwlyZXR1cm4geGVuYnVzX3JlZ2lzdGVyX2Zyb250ZW5kKCZ4ZW5fZHJpdmVyKTsKK30KKwor c3RhdGljIHZvaWQgX19leGl0IHhlbl9kcnZfY2xlYW51cCh2b2lkKQoreworCURSTV9JTkZPKCJV bnJlZ2lzdGVyaW5nIFhFTiBQViAiIFhFTkRJU1BMX0RSSVZFUl9OQU1FICJcbiIpOworCXhlbmJ1 c191bnJlZ2lzdGVyX2RyaXZlcigmeGVuX2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHhlbl9k cnZfaW5pdCk7Cittb2R1bGVfZXhpdCh4ZW5fZHJ2X2NsZWFudXApOworCitNT0RVTEVfREVTQ1JJ UFRJT04oIlhlbiBwYXJhLXZpcnR1YWxpemVkIGRpc3BsYXkgZGV2aWNlIGZyb250ZW5kIik7CitN T0RVTEVfTElDRU5TRSgiR1BMIik7CitNT0RVTEVfQUxJQVMoInhlbjoiWEVORElTUExfRFJJVkVS X05BTUUpOwotLSAKMi43LjQKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNr dG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2Ry aS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932781AbeCMNdn (ORCPT ); Tue, 13 Mar 2018 09:33:43 -0400 Received: from mail-lf0-f67.google.com ([209.85.215.67]:33499 "EHLO mail-lf0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932724AbeCMNbT (ORCPT ); Tue, 13 Mar 2018 09:31:19 -0400 X-Google-Smtp-Source: AG47ELt2IHrn5CMpI0zVkMCEfEUmwD2W5IJqOTdBUZjp2naGPEAJIjahEe+a4X/kWHEojWLFEU3VIA== 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 v2 1/8] drm/xen-front: Introduce Xen para-virtualized frontend driver Date: Tue, 13 Mar 2018 15:31:00 +0200 Message-Id: <1520947867-32514-2-git-send-email-andr2000@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1520947867-32514-1-git-send-email-andr2000@gmail.com> References: <1520947867-32514-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 Introduce skeleton of the para-virtualized Xen display frontend driver. This patch only adds required essential stubs. Signed-off-by: Oleksandr Andrushchenko --- drivers/gpu/drm/Kconfig | 2 ++ drivers/gpu/drm/Makefile | 1 + drivers/gpu/drm/xen/Kconfig | 17 +++++++++ drivers/gpu/drm/xen/Makefile | 5 +++ drivers/gpu/drm/xen/xen_drm_front.c | 70 +++++++++++++++++++++++++++++++++++++ 5 files changed, 95 insertions(+) create mode 100644 drivers/gpu/drm/xen/Kconfig create mode 100644 drivers/gpu/drm/xen/Makefile create mode 100644 drivers/gpu/drm/xen/xen_drm_front.c diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig index deeefa7a1773..757825ac60df 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig @@ -289,6 +289,8 @@ source "drivers/gpu/drm/pl111/Kconfig" source "drivers/gpu/drm/tve200/Kconfig" +source "drivers/gpu/drm/xen/Kconfig" + # Keep legacy drivers last menuconfig DRM_LEGACY diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile index 50093ff4479b..9d66657ea117 100644 --- a/drivers/gpu/drm/Makefile +++ b/drivers/gpu/drm/Makefile @@ -103,3 +103,4 @@ obj-$(CONFIG_DRM_MXSFB) += mxsfb/ obj-$(CONFIG_DRM_TINYDRM) += tinydrm/ obj-$(CONFIG_DRM_PL111) += pl111/ obj-$(CONFIG_DRM_TVE200) += tve200/ +obj-$(CONFIG_DRM_XEN) += xen/ diff --git a/drivers/gpu/drm/xen/Kconfig b/drivers/gpu/drm/xen/Kconfig new file mode 100644 index 000000000000..4cca160782ab --- /dev/null +++ b/drivers/gpu/drm/xen/Kconfig @@ -0,0 +1,17 @@ +config DRM_XEN + bool "DRM Support for Xen guest OS" + depends on XEN + help + Choose this option if you want to enable DRM support + for Xen. + +config DRM_XEN_FRONTEND + tristate "Para-virtualized frontend driver for Xen guest OS" + depends on DRM_XEN + depends on DRM + select DRM_KMS_HELPER + select VIDEOMODE_HELPERS + select XEN_XENBUS_FRONTEND + help + Choose this option if you want to enable a para-virtualized + frontend DRM/KMS driver for Xen guest OSes. diff --git a/drivers/gpu/drm/xen/Makefile b/drivers/gpu/drm/xen/Makefile new file mode 100644 index 000000000000..3283e104c7bb --- /dev/null +++ b/drivers/gpu/drm/xen/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0 OR MIT + +drm_xen_front-objs := xen_drm_front.o + +obj-$(CONFIG_DRM_XEN_FRONTEND) += drm_xen_front.o diff --git a/drivers/gpu/drm/xen/xen_drm_front.c b/drivers/gpu/drm/xen/xen_drm_front.c new file mode 100644 index 000000000000..03bc50b128fd --- /dev/null +++ b/drivers/gpu/drm/xen/xen_drm_front.c @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT + +/* + * Xen para-virtual DRM device + * + * Copyright (C) 2016-2018 EPAM Systems Inc. + * + * Author: Oleksandr Andrushchenko + */ + +#include + +#include +#include +#include + +#include + +static void displback_changed(struct xenbus_device *xb_dev, + enum xenbus_state backend_state) +{ +} + +static int xen_drv_probe(struct xenbus_device *xb_dev, + const struct xenbus_device_id *id) +{ + return 0; +} + +static int xen_drv_remove(struct xenbus_device *dev) +{ + return 0; +} + +static const struct xenbus_device_id xen_drv_ids[] = { + { XENDISPL_DRIVER_NAME }, + { "" } +}; + +static struct xenbus_driver xen_driver = { + .ids = xen_drv_ids, + .probe = xen_drv_probe, + .remove = xen_drv_remove, + .otherend_changed = displback_changed, +}; + +static int __init xen_drv_init(void) +{ + if (!xen_domain()) + return -ENODEV; + + if (!xen_has_pv_devices()) + return -ENODEV; + + DRM_INFO("Registering XEN PV " XENDISPL_DRIVER_NAME "\n"); + return xenbus_register_frontend(&xen_driver); +} + +static void __exit xen_drv_cleanup(void) +{ + DRM_INFO("Unregistering XEN PV " XENDISPL_DRIVER_NAME "\n"); + xenbus_unregister_driver(&xen_driver); +} + +module_init(xen_drv_init); +module_exit(xen_drv_cleanup); + +MODULE_DESCRIPTION("Xen para-virtualized display device frontend"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS("xen:"XENDISPL_DRIVER_NAME); -- 2.7.4