From dcf7000bef40fdffc8369faa373a1468e98d8c5c Mon Sep 17 00:00:00 2001 From: Hans de Goede Date: Mon, 4 Mar 2019 17:47:22 +0100 Subject: [PATCH] staging/vboxvideo: Drop initial_mode_queried workaround Drop the initial_mode_queried workaround for kms clients which do not support hotplug, all kms clients should be able to deal with hotplug. Suggested-by: Daniel Vetter Acked-by: Greg Kroah-Hartman Acked-by: Daniel Vetter Signed-off-by: Hans de Goede Link: https://patchwork.freedesktop.org/patch/msgid/20190304164724.10210-2-hdegoede@redhat.com --- drivers/staging/vboxvideo/TODO | 3 --- drivers/staging/vboxvideo/vbox_drv.c | 25 ------------------------- drivers/staging/vboxvideo/vbox_drv.h | 6 ------ drivers/staging/vboxvideo/vbox_main.c | 6 +++--- drivers/staging/vboxvideo/vbox_mode.c | 21 ++------------------- 5 files changed, 5 insertions(+), 56 deletions(-) diff --git a/drivers/staging/vboxvideo/TODO b/drivers/staging/vboxvideo/TODO index 7f97c47a4042..2e0f99c3f10c 100644 --- a/drivers/staging/vboxvideo/TODO +++ b/drivers/staging/vboxvideo/TODO @@ -1,8 +1,5 @@ TODO: -Get a full review from the drm-maintainers on dri-devel done on this driver --Drop all the logic around initial_mode_queried, the master_set and - master_drop callbacks and everything related to this. kms clients can handle - hotplugs. -Extend this TODO with the results of that review Please send any patches to Greg Kroah-Hartman , diff --git a/drivers/staging/vboxvideo/vbox_drv.c b/drivers/staging/vboxvideo/vbox_drv.c index e7755a179850..fb6a0f0b8167 100644 --- a/drivers/staging/vboxvideo/vbox_drv.c +++ b/drivers/staging/vboxvideo/vbox_drv.c @@ -200,36 +200,11 @@ static const struct file_operations vbox_fops = { .read = drm_read, }; -static int vbox_master_set(struct drm_device *dev, - struct drm_file *file_priv, bool from_open) -{ - struct vbox_private *vbox = dev->dev_private; - - /* - * We do not yet know whether the new owner can handle hotplug, so we - * do not advertise dynamic modes on the first query and send a - * tentative hotplug notification after that to see if they query again. - */ - vbox->initial_mode_queried = false; - - return 0; -} - -static void vbox_master_drop(struct drm_device *dev, struct drm_file *file_priv) -{ - struct vbox_private *vbox = dev->dev_private; - - /* See vbox_master_set() */ - vbox->initial_mode_queried = false; -} - static struct drm_driver driver = { .driver_features = DRIVER_MODESET | DRIVER_GEM | DRIVER_PRIME | DRIVER_ATOMIC, .lastclose = drm_fb_helper_lastclose, - .master_set = vbox_master_set, - .master_drop = vbox_master_drop, .fops = &vbox_fops, .irq_handler = vbox_irq_handler, diff --git a/drivers/staging/vboxvideo/vbox_drv.h b/drivers/staging/vboxvideo/vbox_drv.h index aa40e5cc2861..bf2382e9d64c 100644 --- a/drivers/staging/vboxvideo/vbox_drv.h +++ b/drivers/staging/vboxvideo/vbox_drv.h @@ -83,12 +83,6 @@ struct vbox_private { } ttm; struct mutex hw_mutex; /* protects modeset and accel/vbva accesses */ - /* - * We decide whether or not user-space supports display hot-plug - * depending on whether they react to a hot-plug event after the initial - * mode query. - */ - bool initial_mode_queried; struct work_struct hotplug_work; u32 input_mapping_width; u32 input_mapping_height; diff --git a/drivers/staging/vboxvideo/vbox_main.c b/drivers/staging/vboxvideo/vbox_main.c index e1fb70a42d32..f4d02de5518a 100644 --- a/drivers/staging/vboxvideo/vbox_main.c +++ b/drivers/staging/vboxvideo/vbox_main.c @@ -32,9 +32,9 @@ void vbox_report_caps(struct vbox_private *vbox) u32 caps = VBVACAPS_DISABLE_CURSOR_INTEGRATION | VBVACAPS_IRQ | VBVACAPS_USE_VBVA_ONLY; - if (vbox->initial_mode_queried) - caps |= VBVACAPS_VIDEO_MODE_HINTS; - + /* The host only accepts VIDEO_MODE_HINTS if it is send separately. */ + hgsmi_send_caps_info(vbox->guest_pool, caps); + caps |= VBVACAPS_VIDEO_MODE_HINTS; hgsmi_send_caps_info(vbox->guest_pool, caps); } diff --git a/drivers/staging/vboxvideo/vbox_mode.c b/drivers/staging/vboxvideo/vbox_mode.c index 213551394495..620a6e38f71f 100644 --- a/drivers/staging/vboxvideo/vbox_mode.c +++ b/drivers/staging/vboxvideo/vbox_mode.c @@ -736,29 +736,12 @@ static int vbox_get_modes(struct drm_connector *connector) vbox_connector = to_vbox_connector(connector); vbox = connector->dev->dev_private; - /* - * Heuristic: we do not want to tell the host that we support dynamic - * resizing unless we feel confident that the user space client using - * the video driver can handle hot-plug events. So the first time modes - * are queried after a "master" switch we tell the host that we do not, - * and immediately after we send the client a hot-plug notification as - * a test to see if they will respond and query again. - * That is also the reason why capabilities are reported to the host at - * this place in the code rather than elsewhere. - * We need to report the flags location before reporting the IRQ - * capability. - */ + hgsmi_report_flags_location(vbox->guest_pool, GUEST_HEAP_OFFSET(vbox) + HOST_FLAGS_OFFSET); if (vbox_connector->vbox_crtc->crtc_id == 0) vbox_report_caps(vbox); - if (!vbox->initial_mode_queried) { - if (vbox_connector->vbox_crtc->crtc_id == 0) { - vbox->initial_mode_queried = true; - vbox_report_hotplug(vbox); - } - return drm_add_modes_noedid(connector, 800, 600); - } + num_modes = drm_add_modes_noedid(connector, 2560, 1600); preferred_width = vbox_connector->mode_hint.width ? vbox_connector->mode_hint.width : 1024; -- 2.30.2