Re: [PATCH v2 0/7] vga_switcheroo, drm: Push fbcon handling into DRM clients

Helge Deller <[email protected]> Sat, 18 Jul 2026 21:08:30 +0200
Newsgroups org.kernel.vger.linux-fbdev,org.freedesktop.lists.dri-devel
Message-ID <[email protected]>
Hi Thomas,

On 7/9/26 11:15, Thomas Zimmermann wrote:
> Vga_switcheroo currently invokes fb_switch_outputs() to inform fbcon
> about switching of the physical outputs among framebuffer devices. But
> new DRM clients to not use fbdev/fbcon and might require their own
> vga_switcheroo support. Let's strictly separate them from each other.
> 
> Remove fbdev/fbcon from vga_switcheroo. Introduce a pre_switch callback
> for vga_switcheroo clients to do the fbcon update. Allows for removing
> all direct interactions between vga_switcheroo and fbdev/fbcon.
> 
> There are only four drivers that support vga_switcheroo: amdgpu,
> radeon, i915 and nouveau. Update each of them with the new callback.
> When vga_switcheroo now invokes pre_switch, each DRM driver forwards
> to aquire_outputs and lets the DRM clients handle the new outputs.
> 
> At the same time, push the fbcon update into DRM's client for fbdev
> emulation. Do this with the new DRM client callback acquire_outputs,
> so that other clients can have their own handling of vga_switcheroo.
> 
> Also replace the existing reprobe hook with post_switch for symetry.
> For nouveau, this is merely a rename of the helper function. The other
> drivers dor not implement reprobe.
> 
> Tested with radeon on a notebook with Radeon HD 4225 and HD 5430.
> 
> v2:
> - implement all of pre_switch in a single commit to avoid possible
>    deadlock in intermediate state (Sashiko)
> - fix erroneous docs (Sashiko)
> 
> Thomas Zimmermann (7):
>    drm/edid: Include <linux/fb.h>
>    drm/client: Add acquire_outputs callback; implement for fbdev
>      emulation
>    vga_switcheroo: Add pre_switch callback to client ops
>    vga_switcheroo: Add post_switch callback to client ops
>    drm: Implement struct vga_switcheroo_client_ops.pre_switch
>    drm: Implement vga_switcheroo_client_ops.post_switch
>    vga-switcheroo: Remove unused interfaces
> 
>   drivers/gpu/drm/amd/amdgpu/amdgpu_device.c |  9 ++++-
>   drivers/gpu/drm/clients/drm_fbdev_client.c | 23 ++++++++----
>   drivers/gpu/drm/drm_client_event.c         | 18 ++++++++++
>   drivers/gpu/drm/drm_edid.c                 |  1 +
>   drivers/gpu/drm/i915/i915_switcheroo.c     | 11 +++++-
>   drivers/gpu/drm/nouveau/nouveau_vga.c      | 28 +++++++++------
>   drivers/gpu/drm/radeon/radeon_device.c     |  9 ++++-
>   drivers/gpu/vga/vga_switcheroo.c           | 41 +++++-----------------
>   drivers/video/fbdev/core/fbcon.c           |  8 -----
>   include/drm/drm_client.h                   | 14 ++++++++
>   include/drm/drm_client_event.h             |  3 ++
>   include/linux/vga_switcheroo.h             | 29 ++++++++-------
>   12 files changed, 121 insertions(+), 73 deletions(-)
You may add a
Acked-by: Helge Deller <[email protected]>
to the series.

Just in case you want me to take the series through the fbdev git tree,
please let me know.

Helge