Message ID | 20230726081947.3310004-1-kai.heng.feng@canonical.com |
---|---|
Headers | show |
Series | Make TTY switching possible for NVIDIA when it's boot VGA | expand |
On 7/26/23 2:19 AM, Kai-Heng Feng wrote: > BugLink: https://bugs.launchpad.net/bugs/2028749 > > [Impact] > TTY switching is not possible on some workstations when iGPU is present > and NVIDIA GFX is boot VGA. On that case, fbdev /dev/fb* is not created. > > [Fix] > Find the correct boot VGA and remove overlapped aperture (BAR), so fbdev > can be created properly. > > [Test] > Once the fix gets applied, /dev/fb0 is present and TTY switching works. > > [Where problems could occur] > The fix is a major overhaul over resource management on video apertures > (BAR), so the boot VGA discovery might change and different aperture > might be evicted. > > Daniel Vetter (8): > drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers > video/aperture: use generic code to figure out the vga default device > drm/aperture: Remove primary argument > video/aperture: Only kick vgacon when the pdev is decoding vga > video/aperture: Move vga handling to pci function > video/aperture: Drop primary argument > video/aperture: Only remove sysfb on the default vga pci device > fbdev: Simplify fb_is_primary_device for x86 > > Thomas Zimmermann (1): > video/aperture: Provide a VGA helper for gma500 and internal use > > arch/x86/video/fbdev.c | 13 +--- > drivers/gpu/drm/arm/hdlcd_drv.c | 2 +- > drivers/gpu/drm/armada/armada_drv.c | 2 +- > drivers/gpu/drm/ast/ast_drv.c | 2 +- > drivers/gpu/drm/drm_aperture.c | 11 +--- > drivers/gpu/drm/gma500/psb_drv.c | 43 ++++++++++--- > drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 1 - > drivers/gpu/drm/meson/meson_drv.c | 2 +- > drivers/gpu/drm/msm/msm_fbdev.c | 2 +- > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +- > drivers/gpu/drm/stm/drv.c | 2 +- > drivers/gpu/drm/sun4i/sun4i_drv.c | 2 +- > drivers/gpu/drm/tegra/drm.c | 2 +- > drivers/gpu/drm/vc4/vc4_drv.c | 2 +- > drivers/staging/sm750fb/sm750.c | 2 +- > drivers/video/aperture.c | 70 ++++++++++++++------- > drivers/video/fbdev/aty/radeon_base.c | 2 +- > drivers/video/fbdev/hyperv_fb.c | 2 +- > include/drm/drm_aperture.h | 7 +-- > include/linux/aperture.h | 16 +++-- > 20 files changed, 111 insertions(+), 76 deletions(-) > Acked-by: Tim Gardner <tim.gardner@canonical.com>
On 26.07.23 10:19, Kai-Heng Feng wrote: > BugLink: https://bugs.launchpad.net/bugs/2028749 > > [Impact] > TTY switching is not possible on some workstations when iGPU is present > and NVIDIA GFX is boot VGA. On that case, fbdev /dev/fb* is not created. > > [Fix] > Find the correct boot VGA and remove overlapped aperture (BAR), so fbdev > can be created properly. > > [Test] > Once the fix gets applied, /dev/fb0 is present and TTY switching works. > > [Where problems could occur] > The fix is a major overhaul over resource management on video apertures > (BAR), so the boot VGA discovery might change and different aperture > might be evicted. > > Daniel Vetter (8): > drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers > video/aperture: use generic code to figure out the vga default device > drm/aperture: Remove primary argument > video/aperture: Only kick vgacon when the pdev is decoding vga > video/aperture: Move vga handling to pci function > video/aperture: Drop primary argument > video/aperture: Only remove sysfb on the default vga pci device > fbdev: Simplify fb_is_primary_device for x86 > > Thomas Zimmermann (1): > video/aperture: Provide a VGA helper for gma500 and internal use > > arch/x86/video/fbdev.c | 13 +--- > drivers/gpu/drm/arm/hdlcd_drv.c | 2 +- > drivers/gpu/drm/armada/armada_drv.c | 2 +- > drivers/gpu/drm/ast/ast_drv.c | 2 +- > drivers/gpu/drm/drm_aperture.c | 11 +--- > drivers/gpu/drm/gma500/psb_drv.c | 43 ++++++++++--- > drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 1 - > drivers/gpu/drm/meson/meson_drv.c | 2 +- > drivers/gpu/drm/msm/msm_fbdev.c | 2 +- > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +- > drivers/gpu/drm/stm/drv.c | 2 +- > drivers/gpu/drm/sun4i/sun4i_drv.c | 2 +- > drivers/gpu/drm/tegra/drm.c | 2 +- > drivers/gpu/drm/vc4/vc4_drv.c | 2 +- > drivers/staging/sm750fb/sm750.c | 2 +- > drivers/video/aperture.c | 70 ++++++++++++++------- > drivers/video/fbdev/aty/radeon_base.c | 2 +- > drivers/video/fbdev/hyperv_fb.c | 2 +- > include/drm/drm_aperture.h | 7 +-- > include/linux/aperture.h | 16 +++-- > 20 files changed, 111 insertions(+), 76 deletions(-) > Changes to the video subsystem do make me nervous because it feels testing has a hard time to notice problems. I would expect/hope for a more thorough verification testing. Acked-by: Stefan Bader <stefan.bader@canonical.com>
On 26.07.23 10:19, Kai-Heng Feng wrote: > BugLink: https://bugs.launchpad.net/bugs/2028749 > > [Impact] > TTY switching is not possible on some workstations when iGPU is present > and NVIDIA GFX is boot VGA. On that case, fbdev /dev/fb* is not created. > > [Fix] > Find the correct boot VGA and remove overlapped aperture (BAR), so fbdev > can be created properly. > > [Test] > Once the fix gets applied, /dev/fb0 is present and TTY switching works. > > [Where problems could occur] > The fix is a major overhaul over resource management on video apertures > (BAR), so the boot VGA discovery might change and different aperture > might be evicted. > > Daniel Vetter (8): > drm/gma500: Use drm_aperture_remove_conflicting_pci_framebuffers > video/aperture: use generic code to figure out the vga default device > drm/aperture: Remove primary argument > video/aperture: Only kick vgacon when the pdev is decoding vga > video/aperture: Move vga handling to pci function > video/aperture: Drop primary argument > video/aperture: Only remove sysfb on the default vga pci device > fbdev: Simplify fb_is_primary_device for x86 > > Thomas Zimmermann (1): > video/aperture: Provide a VGA helper for gma500 and internal use > > arch/x86/video/fbdev.c | 13 +--- > drivers/gpu/drm/arm/hdlcd_drv.c | 2 +- > drivers/gpu/drm/armada/armada_drv.c | 2 +- > drivers/gpu/drm/ast/ast_drv.c | 2 +- > drivers/gpu/drm/drm_aperture.c | 11 +--- > drivers/gpu/drm/gma500/psb_drv.c | 43 ++++++++++--- > drivers/gpu/drm/hyperv/hyperv_drm_drv.c | 1 - > drivers/gpu/drm/meson/meson_drv.c | 2 +- > drivers/gpu/drm/msm/msm_fbdev.c | 2 +- > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 2 +- > drivers/gpu/drm/stm/drv.c | 2 +- > drivers/gpu/drm/sun4i/sun4i_drv.c | 2 +- > drivers/gpu/drm/tegra/drm.c | 2 +- > drivers/gpu/drm/vc4/vc4_drv.c | 2 +- > drivers/staging/sm750fb/sm750.c | 2 +- > drivers/video/aperture.c | 70 ++++++++++++++------- > drivers/video/fbdev/aty/radeon_base.c | 2 +- > drivers/video/fbdev/hyperv_fb.c | 2 +- > include/drm/drm_aperture.h | 7 +-- > include/linux/aperture.h | 16 +++-- > 20 files changed, 111 insertions(+), 76 deletions(-) > Applied to lunar:linux/master-next. Thanks. -Stefan