On Wed, Mar 25, 2020 at 03:43:10PM +0100, Hans de Goede wrote: > The vboxvideo driver is missing a call to remove conflicting framebuffers. > > Surprisingly, when using legacy BIOS booting this does not really cause > any issues. But when using UEFI to boot the VM then plymouth will draw > on both the efifb /dev/fb0 and /dev/drm/card0 (which has registered > /dev/fb1 as fbdev emulation). > > VirtualBox will actual display the output of both devices (I guess it is > showing whatever was drawn last), this causes weird artifacts because of > pitch issues in the efifb when the VM window is not sized at 1024x768 > (the window will resize to its last size once the vboxvideo driver loads, > changing the pitch). > > Adding the missing drm_fb_helper_remove_conflicting_pci_framebuffers() > call fixes this. > > Cc: stable@xxxxxxxxxxxxxxx > Fixes: 2695eae1f6d3 ("drm/vboxvideo: Switch to generic fbdev emulation") > Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx> > --- > drivers/gpu/drm/vboxvideo/vbox_drv.c | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/drivers/gpu/drm/vboxvideo/vbox_drv.c b/drivers/gpu/drm/vboxvideo/vbox_drv.c > index 8512d970a09f..261255085918 100644 > --- a/drivers/gpu/drm/vboxvideo/vbox_drv.c > +++ b/drivers/gpu/drm/vboxvideo/vbox_drv.c > @@ -76,6 +76,10 @@ static int vbox_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > if (ret) > goto err_mode_fini; > > + ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, "vboxvideodrmfb"); > + if (ret) > + goto err_irq_fini; To avoid transient issues this should be done as early as possible, definitely before the drm driver starts to touch the "hw". With that Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> I do wonder though why the automatic removal of conflicting framebuffers doesn't work, fbdev should already do that from register_framebuffer(), which is called somewhere in drm_fbdev_generic_setup (after a few layers). Did you check why the two framebuffers don't conflict, and why the uefi one doesn't get thrown out? -Daniel > + > ret = drm_fbdev_generic_setup(&vbox->ddev, 32); > if (ret) > goto err_irq_fini; > -- > 2.26.0.rc2 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch