Re: [PATCH v2 07/11] video/aperture: Disable and unregister sysfb devices via aperture helpers

From
Thomas Zimmermann <tzimmermann@suse.de>
Date
2023-03-20 09:47:01
Also in
dri-devel, linux-staging
Reply to
Samuel Čavoj, 2023-03-20
Hi

Am 20.03.23 um 02:47 schrieb Samuel Čavoj:
Hi,
quoted
diff --git a/drivers/video/aperture.c b/drivers/video/aperture.c
index f42a0d8bc211..101e13c2cf41 100644
--- a/drivers/video/aperture.c
+++ b/drivers/video/aperture.c
@@ -8,6 +8,7 @@
 #include <linux/pci.h>
 #include <linux/platform_device.h>
 #include <linux/slab.h>
+#include <linux/sysfb.h>
 #include <linux/types.h>
 #include <linux/vgaarb.h>
@@ -286,7 +287,20 @@ int aperture_remove_conflicting_devices(resource_size_t base, resource_size_t si
 #if IS_REACHABLE(CONFIG_FB)
     struct apertures_struct *a;
     int ret;
+#endif
+
+    /*
+     * If a driver asked to unregister a platform device registered by
+     * sysfb, then can be assumed that this is a driver for a display
+     * that is set up by the system firmware and has a generic driver.
+     *
+     * Drivers for devices that don't have a generic driver will never
+     * ask for this, so let's assume that a real driver for the display
+     * was already probed and prevent sysfb to register devices later.
+     */
+    sysfb_disable();
This call to sysfb_disable() has been causing trouble with regard to
VFIO. VFIO has been calling aperture_remove_conflicting_pci_devices to
get rid of any console drivers (d173780620792c) using the device in
question, but now even unrelated drivers are getting killed. Example
situation:
Which drivers do you use?

Best regards
Thomas
Machine has two GPUs and uses efifb for the console. Efifb registers
with the aperture system the efi framebuffer region, which is covered
by a BAR resource of GPU 1. VFIO grabs GPU 2 and calls
aperture_remove_conflicting_pci_devices(GPU 2). GPU 2 has no overlap
with the efifb on GPU1 but the efifb is killed regardless due to
the unconditional call to sysfb_disable(). The console switches
to dummy and locks up from the user perspective.
This seems unnecessary, as the device is unrelated.

I do not quite understand the comment justifying the call.

Some discussions with workarounds:
https://old.reddit.com/r/VFIO/comments/11qei4t/framebuffer_doesnt_work_anymore_after_passthrough/
https://bbs.archlinux.org/viewtopic.php?id=280512


Thanks,
Samuel
-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev

Attachments

Thread (20 messages) 20 messages, 5 authors, last reply 2023-04-04
Keyboard shortcuts
hback out one level
jnext message in thread / next series-diff position
kprevious message in thread / previous series-diff position
ldrill in
Escclose help / fold thread tree
?toggle this help