On Tue, Sep 24, 2024 at 4:58 AM Thomas Zimmermann <tzimmermann@xxxxxxx> wrote: > > The sysfb framebuffer handling only operates on graphics devices > that provide the system's firmware framebuffer. If that device is > not known, assume that any graphics device has been initialized by > firmware. > > Fixes a problem on i915 where sysfb does not release the firmware > framebuffer after the native graphics driver loaded. > > Reported-by: Borah, Chaitanya Kumar <chaitanya.kumar.borah@xxxxxxxxx> > Closes: https://lore.kernel.org/dri-devel/SJ1PR11MB6129EFB8CE63D1EF6D932F94B96F2@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/ > Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/12160 > Signed-off-by: Thomas Zimmermann <tzimmermann@xxxxxxx> > Fixes: b49420d6a1ae ("video/aperture: optionally match the device in sysfb_disable()") > Cc: Javier Martinez Canillas <javierm@xxxxxxxxxx> > Cc: Thomas Zimmermann <tzimmermann@xxxxxxx> > Cc: Helge Deller <deller@xxxxxx> > Cc: Sam Ravnborg <sam@xxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: dri-devel@xxxxxxxxxxxxxxxxxxxxx > Cc: Linux regression tracking (Thorsten Leemhuis) <regressions@xxxxxxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> # v6.11+ Thanks for fixing this. Acked-by: Alex Deucher <alexander.deucher@xxxxxxx> > --- > drivers/firmware/sysfb.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/firmware/sysfb.c b/drivers/firmware/sysfb.c > index 02a07d3d0d40..a3df782fa687 100644 > --- a/drivers/firmware/sysfb.c > +++ b/drivers/firmware/sysfb.c > @@ -67,9 +67,11 @@ static bool sysfb_unregister(void) > void sysfb_disable(struct device *dev) > { > struct screen_info *si = &screen_info; > + struct device *parent; > > mutex_lock(&disable_lock); > - if (!dev || dev == sysfb_parent_dev(si)) { > + parent = sysfb_parent_dev(si); > + if (!dev || !parent || dev == parent) { > sysfb_unregister(); > disabled = true; > } > -- > 2.46.0 >