diff options
author | Dave Airlie <airlied@redhat.com> | 2019-03-14 11:37:31 +1000 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2019-03-14 11:37:46 +1000 |
commit | 74cd45fa90a234de92a3f3ce8bdabeb643b546a5 (patch) | |
tree | 3a8c874c5ece28e93bc90f13e01fbecdd8eff29c /include | |
parent | 3a7d2f4f4427f4b241f8240e370099e2ec1fd307 (diff) | |
parent | c34674a23d1e8674ac532bf3397333f24a41e7b2 (diff) | |
download | linux-stable-74cd45fa90a234de92a3f3ce8bdabeb643b546a5.tar.gz linux-stable-74cd45fa90a234de92a3f3ce8bdabeb643b546a5.tar.bz2 linux-stable-74cd45fa90a234de92a3f3ce8bdabeb643b546a5.zip |
Merge tag 'drm-misc-next-fixes-2019-03-13' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
- qxl: Remove the conflicting framebuffers earlier
- Split out some i915 code into the fb_helper to allow the above
Signed-off-by: Dave Airlie <airlied@redhat.com>
From: Maxime Ripard <maxime.ripard@bootlin.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190313192158.k3qssf733khsqodn@flea
Diffstat (limited to 'include')
-rw-r--r-- | include/drm/drm_fb_helper.h | 14 | ||||
-rw-r--r-- | include/linux/vgaarb.h | 2 |
2 files changed, 13 insertions, 3 deletions
diff --git a/include/drm/drm_fb_helper.h b/include/drm/drm_fb_helper.h index bb9acea61369..286d58efed5d 100644 --- a/include/drm/drm_fb_helper.h +++ b/include/drm/drm_fb_helper.h @@ -36,6 +36,7 @@ struct drm_fb_helper; #include <drm/drm_crtc.h> #include <drm/drm_device.h> #include <linux/kgdb.h> +#include <linux/vgaarb.h> enum mode_set_atomic { LEAVE_ATOMIC_MODE_SET, @@ -642,11 +643,18 @@ drm_fb_helper_remove_conflicting_pci_framebuffers(struct pci_dev *pdev, int resource_id, const char *name) { + int ret = 0; + + /* + * WARNING: Apparently we must kick fbdev drivers before vgacon, + * otherwise the vga fbdev driver falls over. + */ #if IS_REACHABLE(CONFIG_FB) - return remove_conflicting_pci_framebuffers(pdev, resource_id, name); -#else - return 0; + ret = remove_conflicting_pci_framebuffers(pdev, resource_id, name); #endif + if (ret == 0) + ret = vga_remove_vgacon(pdev); + return ret; } #endif diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h index ee162e3e879b..553b34c8b5f7 100644 --- a/include/linux/vgaarb.h +++ b/include/linux/vgaarb.h @@ -125,9 +125,11 @@ extern void vga_put(struct pci_dev *pdev, unsigned int rsrc); #ifdef CONFIG_VGA_ARB extern struct pci_dev *vga_default_device(void); extern void vga_set_default_device(struct pci_dev *pdev); +extern int vga_remove_vgacon(struct pci_dev *pdev); #else static inline struct pci_dev *vga_default_device(void) { return NULL; }; static inline void vga_set_default_device(struct pci_dev *pdev) { }; +static inline int vga_remove_vgacon(struct pci_dev *pdev) { return 0; }; #endif /* |