mbox series

[SRU,L,0/9] Make TTY switching possible for NVIDIA when it's boot VGA

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

Message

Kai-Heng Feng July 26, 2023, 8:19 a.m. UTC
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(-)

Comments

Tim Gardner July 26, 2023, 1 p.m. UTC | #1
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>
Stefan Bader Aug. 3, 2023, 9:58 a.m. UTC | #2
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>
Stefan Bader Aug. 3, 2023, 5:54 p.m. UTC | #3
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