summaryrefslogtreecommitdiffstats
path: root/drivers/video/fbdev/nvidia
diff options
context:
space:
mode:
authorThomas Zimmermann <tzimmermann@suse.de>2022-07-18 09:23:17 +0200
committerThomas Zimmermann <tzimmermann@suse.de>2022-07-19 13:19:11 +0200
commit145eed48de278007f646b908fd70ac59d24ed81a (patch)
treebdb53ed82ffa4fd95cb46af5da9a63ba149ab957 /drivers/video/fbdev/nvidia
parent8d69d008f44cb96050c35e64fe940a22dd6b0113 (diff)
downloadlinux-stable-145eed48de278007f646b908fd70ac59d24ed81a.tar.gz
linux-stable-145eed48de278007f646b908fd70ac59d24ed81a.tar.bz2
linux-stable-145eed48de278007f646b908fd70ac59d24ed81a.zip
fbdev: Remove conflicting devices on PCI bus
Remove firmware devices on the PCI bus, by calling aperture_remove_conflicting_pci_devices() in the probe function of each related fbdev driver. iSo far, most of these drivers did not remove conflicting VESA or EFI devices, or outride failed for resource conflicts (i.e., matroxfb.) This must have been broken for quite some time. Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220718072322.8927-7-tzimmermann@suse.de
Diffstat (limited to 'drivers/video/fbdev/nvidia')
-rw-r--r--drivers/video/fbdev/nvidia/nvidia.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/video/fbdev/nvidia/nvidia.c b/drivers/video/fbdev/nvidia/nvidia.c
index a372a183c1f0..329e2e8133c6 100644
--- a/drivers/video/fbdev/nvidia/nvidia.c
+++ b/drivers/video/fbdev/nvidia/nvidia.c
@@ -9,6 +9,7 @@
*
*/
+#include <linux/aperture.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/errno.h>
@@ -1276,11 +1277,15 @@ static int nvidiafb_probe(struct pci_dev *pd, const struct pci_device_id *ent)
struct nvidia_par *par;
struct fb_info *info;
unsigned short cmd;
-
+ int ret;
NVTRACE_ENTER();
assert(pd != NULL);
+ ret = aperture_remove_conflicting_pci_devices(pd, "nvidiafb");
+ if (ret)
+ return ret;
+
info = framebuffer_alloc(sizeof(struct nvidia_par), &pd->dev);
if (!info)