[PATCH v3 2/3] drm/fb-helper: Set framebuffer for vga-switcheroo clients

Thomas Zimmermann tzimmermann at suse.de
Mon Jan 16 11:54:24 UTC 2023


Set the framebuffer info for drivers that support VGA switcheroo. Only
affects the amdgpu and nouveau drivers, which use VGA switcheroo and
generic fbdev emulation. For other drivers, this does nothing.

This fixes a potential regression in the console code. Both, amdgpu and
nouveau, invoked vga_switcheroo_client_fb_set() from their internal fbdev
code. But the call got lost when the drivers switched to the generic
emulation.

Fixes: 087451f372bf ("drm/amdgpu: use generic fb helpers instead of setting up AMD own's.")
Fixes: 4a16dd9d18a0 ("drm/nouveau/kms: switch to drm fbdev helpers")
Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
Reviewed-by: Alex Deucher <alexander.deucher at amd.com>
Cc: Ben Skeggs <bskeggs at redhat.com>
Cc: Karol Herbst <kherbst at redhat.com>
Cc: Lyude Paul <lyude at redhat.com>
Cc: Thomas Zimmermann <tzimmermann at suse.de>
Cc: Javier Martinez Canillas <javierm at redhat.com>
Cc: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Cc: Jani Nikula <jani.nikula at intel.com>
Cc: Dave Airlie <airlied at redhat.com>
Cc: Evan Quan <evan.quan at amd.com>
Cc: Christian König <christian.koenig at amd.com>
Cc: Alex Deucher <alexander.deucher at amd.com>
Cc: Hawking Zhang <Hawking.Zhang at amd.com>
Cc: Likun Gao <Likun.Gao at amd.com>
Cc: "Christian König" <christian.koenig at amd.com>
Cc: Stanley Yang <Stanley.Yang at amd.com>
Cc: "Tianci.Yin" <tianci.yin at amd.com>
Cc: Xiaojian Du <Xiaojian.Du at amd.com>
Cc: Andrey Grodzovsky <andrey.grodzovsky at amd.com>
Cc: YiPeng Chai <YiPeng.Chai at amd.com>
Cc: Somalapuram Amaranath <Amaranath.Somalapuram at amd.com>
Cc: Bokun Zhang <Bokun.Zhang at amd.com>
Cc: Guchun Chen <guchun.chen at amd.com>
Cc: Hamza Mahfooz <hamza.mahfooz at amd.com>
Cc: Aurabindo Pillai <aurabindo.pillai at amd.com>
Cc: Mario Limonciello <mario.limonciello at amd.com>
Cc: Solomon Chiu <solomon.chiu at amd.com>
Cc: Kai-Heng Feng <kai.heng.feng at canonical.com>
Cc: Felix Kuehling <Felix.Kuehling at amd.com>
Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
Cc: "Marek Olšák" <marek.olsak at amd.com>
Cc: Sam Ravnborg <sam at ravnborg.org>
Cc: Hans de Goede <hdegoede at redhat.com>
Cc: "Ville Syrjälä" <ville.syrjala at linux.intel.com>
Cc: dri-devel at lists.freedesktop.org
Cc: nouveau at lists.freedesktop.org
Cc: <stable at vger.kernel.org> # v5.17+
---
 drivers/gpu/drm/drm_fb_helper.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c
index 367fb8b2d5fa..c5c13e192b64 100644
--- a/drivers/gpu/drm/drm_fb_helper.c
+++ b/drivers/gpu/drm/drm_fb_helper.c
@@ -30,7 +30,9 @@
 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 
 #include <linux/console.h>
+#include <linux/pci.h>
 #include <linux/sysrq.h>
+#include <linux/vga_switcheroo.h>
 
 #include <drm/drm_atomic.h>
 #include <drm/drm_drv.h>
@@ -1924,6 +1926,7 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
 					 int preferred_bpp)
 {
 	struct drm_client_dev *client = &fb_helper->client;
+	struct drm_device *dev = fb_helper->dev;
 	struct drm_fb_helper_surface_size sizes;
 	int ret;
 
@@ -1945,6 +1948,11 @@ static int drm_fb_helper_single_fb_probe(struct drm_fb_helper *fb_helper,
 		return ret;
 
 	strcpy(fb_helper->fb->comm, "[fbcon]");
+
+	/* Set the fb info for vgaswitcheroo clients. Does nothing otherwise. */
+	if (dev_is_pci(dev->dev))
+		vga_switcheroo_client_fb_set(to_pci_dev(dev->dev), fb_helper->info);
+
 	return 0;
 }
 
-- 
2.39.0



More information about the dri-devel mailing list