Message ID | 20230112201156.26849-3-tzimmermann@suse.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm: Generic fbdev and vga-switcheroo | expand |
On Thu, Jan 12, 2023 at 09:11:55PM +0100, Thomas Zimmermann wrote: > 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@suse.de> > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > Cc: Ben Skeggs <bskeggs@redhat.com> > Cc: Karol Herbst <kherbst@redhat.com> > Cc: Lyude Paul <lyude@redhat.com> > Cc: Thomas Zimmermann <tzimmermann@suse.de> > Cc: Javier Martinez Canillas <javierm@redhat.com> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Cc: Jani Nikula <jani.nikula@intel.com> > Cc: Dave Airlie <airlied@redhat.com> > Cc: Evan Quan <evan.quan@amd.com> > Cc: Christian König <christian.koenig@amd.com> > Cc: Alex Deucher <alexander.deucher@amd.com> > Cc: Hawking Zhang <Hawking.Zhang@amd.com> > Cc: Likun Gao <Likun.Gao@amd.com> > Cc: "Christian König" <christian.koenig@amd.com> > Cc: Stanley Yang <Stanley.Yang@amd.com> > Cc: "Tianci.Yin" <tianci.yin@amd.com> > Cc: Xiaojian Du <Xiaojian.Du@amd.com> > Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com> > Cc: YiPeng Chai <YiPeng.Chai@amd.com> > Cc: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> > Cc: Bokun Zhang <Bokun.Zhang@amd.com> > Cc: Guchun Chen <guchun.chen@amd.com> > Cc: Hamza Mahfooz <hamza.mahfooz@amd.com> > Cc: Aurabindo Pillai <aurabindo.pillai@amd.com> > Cc: Mario Limonciello <mario.limonciello@amd.com> > Cc: Solomon Chiu <solomon.chiu@amd.com> > Cc: Kai-Heng Feng <kai.heng.feng@canonical.com> > Cc: Felix Kuehling <Felix.Kuehling@amd.com> > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > Cc: "Marek Olšák" <marek.olsak@amd.com> > Cc: Sam Ravnborg <sam@ravnborg.org> > Cc: Hans de Goede <hdegoede@redhat.com> > Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com> > Cc: dri-devel@lists.freedesktop.org > Cc: nouveau@lists.freedesktop.org > Cc: <stable@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 427631706128..5e445c61252d 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> > @@ -1940,6 +1942,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; On drm-tip, this commit has a silent conflict with cff84bac9922 ("drm/fh-helper: Split fbdev single-probe helper") that's already in drm-next. I had created a fix-up patch in drm-tip re-introducing this line. We probably need a backmerge from drm-next into drm-misc-fixes with the resolution applied there. And probably propagated that resolution later... > struct drm_fb_helper_surface_size sizes; > int ret; > > @@ -1961,6 +1964,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 >
Hi Am 18.01.23 um 20:21 schrieb Rodrigo Vivi: > On Thu, Jan 12, 2023 at 09:11:55PM +0100, Thomas Zimmermann wrote: >> 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@suse.de> >> Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> >> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> >> Cc: Ben Skeggs <bskeggs@redhat.com> >> Cc: Karol Herbst <kherbst@redhat.com> >> Cc: Lyude Paul <lyude@redhat.com> >> Cc: Thomas Zimmermann <tzimmermann@suse.de> >> Cc: Javier Martinez Canillas <javierm@redhat.com> >> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> >> Cc: Jani Nikula <jani.nikula@intel.com> >> Cc: Dave Airlie <airlied@redhat.com> >> Cc: Evan Quan <evan.quan@amd.com> >> Cc: Christian König <christian.koenig@amd.com> >> Cc: Alex Deucher <alexander.deucher@amd.com> >> Cc: Hawking Zhang <Hawking.Zhang@amd.com> >> Cc: Likun Gao <Likun.Gao@amd.com> >> Cc: "Christian König" <christian.koenig@amd.com> >> Cc: Stanley Yang <Stanley.Yang@amd.com> >> Cc: "Tianci.Yin" <tianci.yin@amd.com> >> Cc: Xiaojian Du <Xiaojian.Du@amd.com> >> Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com> >> Cc: YiPeng Chai <YiPeng.Chai@amd.com> >> Cc: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> >> Cc: Bokun Zhang <Bokun.Zhang@amd.com> >> Cc: Guchun Chen <guchun.chen@amd.com> >> Cc: Hamza Mahfooz <hamza.mahfooz@amd.com> >> Cc: Aurabindo Pillai <aurabindo.pillai@amd.com> >> Cc: Mario Limonciello <mario.limonciello@amd.com> >> Cc: Solomon Chiu <solomon.chiu@amd.com> >> Cc: Kai-Heng Feng <kai.heng.feng@canonical.com> >> Cc: Felix Kuehling <Felix.Kuehling@amd.com> >> Cc: Daniel Vetter <daniel.vetter@ffwll.ch> >> Cc: "Marek Olšák" <marek.olsak@amd.com> >> Cc: Sam Ravnborg <sam@ravnborg.org> >> Cc: Hans de Goede <hdegoede@redhat.com> >> Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com> >> Cc: dri-devel@lists.freedesktop.org >> Cc: nouveau@lists.freedesktop.org >> Cc: <stable@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 427631706128..5e445c61252d 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> >> @@ -1940,6 +1942,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; > > On drm-tip, this commit has a silent conflict with > cff84bac9922 ("drm/fh-helper: Split fbdev single-probe helper") > that's already in drm-next. > > I had created a fix-up patch in drm-tip re-introducing this line. Thank you. Is it fixed for now? > > We probably need a backmerge from drm-next into drm-misc-fixes with > the resolution applied there. And probably propagated that resolution > later... Backmerging from -next into -fixes branches is a problem, as -fixes should be close to the latest release. Can we solve this by merging -fixes into upstream and backmerging this into our -next branches? Best regards Thomas > >> struct drm_fb_helper_surface_size sizes; >> int ret; >> >> @@ -1961,6 +1964,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 >>
On Thu, Jan 19, 2023 at 09:06:54AM +0100, Thomas Zimmermann wrote: > Hi > > Am 18.01.23 um 20:21 schrieb Rodrigo Vivi: > > On Thu, Jan 12, 2023 at 09:11:55PM +0100, Thomas Zimmermann wrote: > > > 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@suse.de> > > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > > > Cc: Ben Skeggs <bskeggs@redhat.com> > > > Cc: Karol Herbst <kherbst@redhat.com> > > > Cc: Lyude Paul <lyude@redhat.com> > > > Cc: Thomas Zimmermann <tzimmermann@suse.de> > > > Cc: Javier Martinez Canillas <javierm@redhat.com> > > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > Cc: Jani Nikula <jani.nikula@intel.com> > > > Cc: Dave Airlie <airlied@redhat.com> > > > Cc: Evan Quan <evan.quan@amd.com> > > > Cc: Christian König <christian.koenig@amd.com> > > > Cc: Alex Deucher <alexander.deucher@amd.com> > > > Cc: Hawking Zhang <Hawking.Zhang@amd.com> > > > Cc: Likun Gao <Likun.Gao@amd.com> > > > Cc: "Christian König" <christian.koenig@amd.com> > > > Cc: Stanley Yang <Stanley.Yang@amd.com> > > > Cc: "Tianci.Yin" <tianci.yin@amd.com> > > > Cc: Xiaojian Du <Xiaojian.Du@amd.com> > > > Cc: Andrey Grodzovsky <andrey.grodzovsky@amd.com> > > > Cc: YiPeng Chai <YiPeng.Chai@amd.com> > > > Cc: Somalapuram Amaranath <Amaranath.Somalapuram@amd.com> > > > Cc: Bokun Zhang <Bokun.Zhang@amd.com> > > > Cc: Guchun Chen <guchun.chen@amd.com> > > > Cc: Hamza Mahfooz <hamza.mahfooz@amd.com> > > > Cc: Aurabindo Pillai <aurabindo.pillai@amd.com> > > > Cc: Mario Limonciello <mario.limonciello@amd.com> > > > Cc: Solomon Chiu <solomon.chiu@amd.com> > > > Cc: Kai-Heng Feng <kai.heng.feng@canonical.com> > > > Cc: Felix Kuehling <Felix.Kuehling@amd.com> > > > Cc: Daniel Vetter <daniel.vetter@ffwll.ch> > > > Cc: "Marek Olšák" <marek.olsak@amd.com> > > > Cc: Sam Ravnborg <sam@ravnborg.org> > > > Cc: Hans de Goede <hdegoede@redhat.com> > > > Cc: "Ville Syrjälä" <ville.syrjala@linux.intel.com> > > > Cc: dri-devel@lists.freedesktop.org > > > Cc: nouveau@lists.freedesktop.org > > > Cc: <stable@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 427631706128..5e445c61252d 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> > > > @@ -1940,6 +1942,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; > > > > On drm-tip, this commit has a silent conflict with > > cff84bac9922 ("drm/fh-helper: Split fbdev single-probe helper") > > that's already in drm-next. > > > > I had created a fix-up patch in drm-tip re-introducing this line. > > Thank you. Is it fixed for now? Fixed in drm-tip, yes. But broke linux-next as well. This resolution will need to go up with any merge... > > > > > We probably need a backmerge from drm-next into drm-misc-fixes with > > the resolution applied there. And probably propagated that resolution > > later... > > Backmerging from -next into -fixes branches is a problem, as -fixes should > be close to the latest release. doh! Indeed I should've known this by heart... -ENOTEHOUGHCOFFEE > > Can we solve this by merging -fixes into upstream and backmerging this into > our -next branches? hmmm... probably better just wait and let folks know the resolution when the patches are moving up... > > Best regards > Thomas > > > > > > struct drm_fb_helper_surface_size sizes; > > > int ret; > > > @@ -1961,6 +1964,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 > > > > > -- > Thomas Zimmermann > Graphics Driver Developer > SUSE Software Solutions Germany GmbH > Maxfeldstr. 5, 90409 Nürnberg, Germany > (HRB 36809, AG Nürnberg) > Geschäftsführer: Ivo Totev
diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helper.c index 427631706128..5e445c61252d 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> @@ -1940,6 +1942,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; @@ -1961,6 +1964,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; }