From mboxrd@z Thu Jan 1 00:00:00 1970 From: Oleksandr Andrushchenko Subject: [PATCH 1/9] drm/xen-front: Introduce Xen para-virtualized frontend driver Date: Wed, 21 Feb 2018 10:03:34 +0200 Message-ID: <1519200222-20623-2-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-x242.google.com (mail-lf0-x242.google.com [IPv6:2a00:1450:4010:c07::242]) by gabe.freedesktop.org (Postfix) with ESMTPS id CF0296E522 for ; Wed, 21 Feb 2018 08:03:54 +0000 (UTC) Received: by mail-lf0-x242.google.com with SMTP id t204so1070628lff.9 for ; Wed, 21 Feb 2018 00:03:54 -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 YW0uY29tPgoKSW50cm9kdWNlIHNrZWxldG9uIG9mIHRoZSBwYXJhLXZpcnR1YWxpemVkIFhlbiBk aXNwbGF5CmZyb250ZW5kIGRyaXZlci4gVGhpcyBwYXRjaCBvbmx5IGFkZHMgcmVxdWlyZWQKZXNz ZW50aWFsIHN0dWJzLgoKU2lnbmVkLW9mZi1ieTogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9s ZWtzYW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgotLS0KIGRyaXZlcnMvZ3B1L2RybS9LY29u ZmlnICAgICAgICAgICAgIHwgIDIgKwogZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlICAgICAgICAg ICAgfCAgMSArCiBkcml2ZXJzL2dwdS9kcm0veGVuL0tjb25maWcgICAgICAgICB8IDE3ICsrKysr KysrCiBkcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlICAgICAgICB8ICA1ICsrKwogZHJpdmVy cy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmMgfCA4MyArKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDEwOCBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnCiBjcmVhdGUgbW9kZSAx MDA2NDQgZHJpdmVycy9ncHUvZHJtL3hlbi9NYWtlZmlsZQogY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9udC5jCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL0tjb25maWcgYi9kcml2ZXJzL2dwdS9kcm0vS2NvbmZpZwppbmRleCBkZWVlZmE3YTE3 NzMuLjc1NzgyNWFjNjBkZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKKysr IGIvZHJpdmVycy9ncHUvZHJtL0tjb25maWcKQEAgLTI4OSw2ICsyODksOCBAQCBzb3VyY2UgImRy aXZlcnMvZ3B1L2RybS9wbDExMS9LY29uZmlnIgogCiBzb3VyY2UgImRyaXZlcnMvZ3B1L2RybS90 dmUyMDAvS2NvbmZpZyIKIAorc291cmNlICJkcml2ZXJzL2dwdS9kcm0veGVuL0tjb25maWciCisK ICMgS2VlcCBsZWdhY3kgZHJpdmVycyBsYXN0CiAKIG1lbnVjb25maWcgRFJNX0xFR0FDWQpkaWZm IC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJtL01ha2Vm aWxlCmluZGV4IDUwMDkzZmY0NDc5Yi4uOWQ2NjY1N2VhMTE3IDEwMDY0NAotLS0gYS9kcml2ZXJz L2dwdS9kcm0vTWFrZWZpbGUKKysrIGIvZHJpdmVycy9ncHUvZHJtL01ha2VmaWxlCkBAIC0xMDMs MyArMTAzLDQgQEAgb2JqLSQoQ09ORklHX0RSTV9NWFNGQikJKz0gbXhzZmIvCiBvYmotJChDT05G SUdfRFJNX1RJTllEUk0pICs9IHRpbnlkcm0vCiBvYmotJChDT05GSUdfRFJNX1BMMTExKSArPSBw bDExMS8KIG9iai0kKENPTkZJR19EUk1fVFZFMjAwKSArPSB0dmUyMDAvCitvYmotJChDT05GSUdf RFJNX1hFTikgKz0geGVuLwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmln IGIvZHJpdmVycy9ncHUvZHJtL3hlbi9LY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwMC4uNGNjYTE2MDc4MmFiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9n cHUvZHJtL3hlbi9LY29uZmlnCkBAIC0wLDAgKzEsMTcgQEAKK2NvbmZpZyBEUk1fWEVOCisJYm9v bCAiRFJNIFN1cHBvcnQgZm9yIFhlbiBndWVzdCBPUyIKKwlkZXBlbmRzIG9uIFhFTgorCWhlbHAK KwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBlbmFibGUgRFJNIHN1cHBvcnQK KwkgIGZvciBYZW4uCisKK2NvbmZpZyBEUk1fWEVOX0ZST05URU5ECisJdHJpc3RhdGUgIlBhcmEt dmlydHVhbGl6ZWQgZnJvbnRlbmQgZHJpdmVyIGZvciBYZW4gZ3Vlc3QgT1MiCisJZGVwZW5kcyBv biBEUk1fWEVOCisJZGVwZW5kcyBvbiBEUk0KKwlzZWxlY3QgRFJNX0tNU19IRUxQRVIKKwlzZWxl Y3QgVklERU9NT0RFX0hFTFBFUlMKKwlzZWxlY3QgWEVOX1hFTkJVU19GUk9OVEVORAorCWhlbHAK KwkgIENob29zZSB0aGlzIG9wdGlvbiBpZiB5b3Ugd2FudCB0byBlbmFibGUgYSBwYXJhLXZpcnR1 YWxpemVkCisJICBmcm9udGVuZCBEUk0vS01TIGRyaXZlciBmb3IgWGVuIGd1ZXN0IE9TZXMuCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL01ha2VmaWxlIGIvZHJpdmVycy9ncHUvZHJt L3hlbi9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjk2 NzA3NGQzNDhmNgotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4vTWFrZWZp bGUKQEAgLTAsMCArMSw1IEBACisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCisK K2RybV94ZW5fZnJvbnQtb2JqcyA6PSB4ZW5fZHJtX2Zyb250Lm8KKworb2JqLSQoQ09ORklHX0RS TV9YRU5fRlJPTlRFTkQpICs9IGRybV94ZW5fZnJvbnQubwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250LmMgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1f ZnJvbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmZkMzcyZmI0 NjRhMQotLS0gL2Rldi9udWxsCisrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZW4veGVuX2RybV9mcm9u dC5jCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiAgWGVuIHBhcmEtdmlydHVhbCBEUk0gZGV2aWNl CisgKgorICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorICogICB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgor ICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisgKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCisgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYtMjAxOCBFUEFNIFN5 c3RlbXMgSW5jLgorICoKKyAqIEF1dGhvcjogT2xla3NhbmRyIEFuZHJ1c2hjaGVua28gPG9sZWtz YW5kcl9hbmRydXNoY2hlbmtvQGVwYW0uY29tPgorICovCisKKyNpbmNsdWRlIDxkcm0vZHJtUC5o PgorCisjaW5jbHVkZSA8eGVuL3BsYXRmb3JtX3BjaS5oPgorI2luY2x1ZGUgPHhlbi94ZW4uaD4K KyNpbmNsdWRlIDx4ZW4veGVuYnVzLmg+CisKKyNpbmNsdWRlIDx4ZW4vaW50ZXJmYWNlL2lvL2Rp c3BsaWYuaD4KKworc3RhdGljIHZvaWQgYmFja2VuZF9vbl9jaGFuZ2VkKHN0cnVjdCB4ZW5idXNf ZGV2aWNlICp4Yl9kZXYsCisJCWVudW0geGVuYnVzX3N0YXRlIGJhY2tlbmRfc3RhdGUpCit7Cit9 CisKK3N0YXRpYyBpbnQgeGVuX2Rydl9wcm9iZShzdHJ1Y3QgeGVuYnVzX2RldmljZSAqeGJfZGV2 LAorCQljb25zdCBzdHJ1Y3QgeGVuYnVzX2RldmljZV9pZCAqaWQpCit7CisJcmV0dXJuIDA7Cit9 CisKK3N0YXRpYyBpbnQgeGVuX2Rydl9yZW1vdmUoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldikK K3sKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGNvbnN0IHN0cnVjdCB4ZW5idXNfZGV2aWNlX2lk IHhlbl9kcnZfaWRzW10gPSB7CisJeyBYRU5ESVNQTF9EUklWRVJfTkFNRSB9LAorCXsgIiIgfQor fTsKKworc3RhdGljIHN0cnVjdCB4ZW5idXNfZHJpdmVyIHhlbl9kcml2ZXIgPSB7CisJLmlkcyA9 IHhlbl9kcnZfaWRzLAorCS5wcm9iZSA9IHhlbl9kcnZfcHJvYmUsCisJLnJlbW92ZSA9IHhlbl9k cnZfcmVtb3ZlLAorCS5vdGhlcmVuZF9jaGFuZ2VkID0gYmFja2VuZF9vbl9jaGFuZ2VkLAorfTsK Kworc3RhdGljIGludCBfX2luaXQgeGVuX2Rydl9pbml0KHZvaWQpCit7CisJaWYgKCF4ZW5fZG9t YWluKCkpCisJCXJldHVybiAtRU5PREVWOworCisJaWYgKHhlbl9pbml0aWFsX2RvbWFpbigpKSB7 CisJCURSTV9FUlJPUihYRU5ESVNQTF9EUklWRVJfTkFNRSAiIGNhbm5vdCBydW4gaW4gaW5pdGlh bCBkb21haW5cbiIpOworCQlyZXR1cm4gLUVOT0RFVjsKKwl9CisKKwlpZiAoIXhlbl9oYXNfcHZf ZGV2aWNlcygpKQorCQlyZXR1cm4gLUVOT0RFVjsKKworCURSTV9JTkZPKCJSZWdpc3RlcmluZyBY RU4gUFYgIiBYRU5ESVNQTF9EUklWRVJfTkFNRSAiXG4iKTsKKwlyZXR1cm4geGVuYnVzX3JlZ2lz dGVyX2Zyb250ZW5kKCZ4ZW5fZHJpdmVyKTsKK30KKworc3RhdGljIHZvaWQgX19leGl0IHhlbl9k cnZfY2xlYW51cCh2b2lkKQoreworCURSTV9JTkZPKCJVbnJlZ2lzdGVyaW5nIFhFTiBQViAiIFhF TkRJU1BMX0RSSVZFUl9OQU1FICJcbiIpOworCXhlbmJ1c191bnJlZ2lzdGVyX2RyaXZlcigmeGVu X2RyaXZlcik7Cit9CisKK21vZHVsZV9pbml0KHhlbl9kcnZfaW5pdCk7Cittb2R1bGVfZXhpdCh4 ZW5fZHJ2X2NsZWFudXApOworCitNT0RVTEVfREVTQ1JJUFRJT04oIlhlbiBwYXJhLXZpcnR1YWxp emVkIGRpc3BsYXkgZGV2aWNlIGZyb250ZW5kIik7CitNT0RVTEVfTElDRU5TRSgiR1BMIik7CitN T0RVTEVfQUxJQVMoInhlbjoiWEVORElTUExfRFJJVkVSX05BTUUpOwotLSAKMi43LjQKCl9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWls aW5nIGxpc3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZy ZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752193AbeBUIH3 (ORCPT ); Wed, 21 Feb 2018 03:07:29 -0500 Received: from mail-lf0-f66.google.com ([209.85.215.66]:44894 "EHLO mail-lf0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751759AbeBUIDy (ORCPT ); Wed, 21 Feb 2018 03:03:54 -0500 X-Google-Smtp-Source: AH8x224X5jgBtuyO8rqExXaakyeG83xdSlF3ya06ZIPz2yGBUO81kbWCgL6Y0BWyCHFVGOvYX4VmHA== 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 1/9] drm/xen-front: Introduce Xen para-virtualized frontend driver Date: Wed, 21 Feb 2018 10:03:34 +0200 Message-Id: <1519200222-20623-2-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 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 | 83 +++++++++++++++++++++++++++++++++++++ 5 files changed, 108 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..967074d348f6 --- /dev/null +++ b/drivers/gpu/drm/xen/Makefile @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0 + +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..fd372fb464a1 --- /dev/null +++ b/drivers/gpu/drm/xen/xen_drm_front.c @@ -0,0 +1,83 @@ +/* + * 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 +#include + +#include + +static void backend_on_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 = backend_on_changed, +}; + +static int __init xen_drv_init(void) +{ + if (!xen_domain()) + return -ENODEV; + + if (xen_initial_domain()) { + DRM_ERROR(XENDISPL_DRIVER_NAME " cannot run in initial domain\n"); + 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