linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] efifb: Ensure graphics device for efifb stays at PCI D0
@ 2021-01-29  8:43 Kai-Heng Feng
  2021-02-01 15:21 ` Alex Deucher
  0 siblings, 1 reply; 4+ messages in thread
From: Kai-Heng Feng @ 2021-01-29  8:43 UTC (permalink / raw)
  To: pjones
  Cc: hdegoede, Kai-Heng Feng, open list:EFIFB FRAMEBUFFER DRIVER,
	open list:FRAMEBUFFER LAYER, open list

We are seeing root ports on some desktop boards support D3cold for
discrete graphics card. So when efifb is in use while graphics device
isn't bound to a driver, PCI and ACPI will put the graphics to D3cold
when runtime suspend kicks in, makes efifb stop working.

So ensure the graphics device won't be runtime suspended, to keep efifb
work all the time.

Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
---
 drivers/video/fbdev/efifb.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
index e57c00824965..19edd7206409 100644
--- a/drivers/video/fbdev/efifb.c
+++ b/drivers/video/fbdev/efifb.c
@@ -16,6 +16,7 @@
 #include <linux/platform_device.h>
 #include <linux/printk.h>
 #include <linux/screen_info.h>
+#include <linux/pm_runtime.h>
 #include <video/vga.h>
 #include <asm/efi.h>
 #include <drm/drm_utils.h> /* For drm_get_panel_orientation_quirk */
@@ -575,6 +576,7 @@ static int efifb_probe(struct platform_device *dev)
 		goto err_fb_dealoc;
 	}
 	fb_info(info, "%s frame buffer device\n", info->fix.id);
+	pm_runtime_get_sync(&efifb_pci_dev->dev);
 	return 0;
 
 err_fb_dealoc:
@@ -601,6 +603,7 @@ static int efifb_remove(struct platform_device *pdev)
 	unregister_framebuffer(info);
 	sysfs_remove_groups(&pdev->dev.kobj, efifb_groups);
 	framebuffer_release(info);
+	pm_runtime_put(&efifb_pci_dev->dev);
 
 	return 0;
 }
-- 
2.29.2


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] efifb: Ensure graphics device for efifb stays at PCI D0
  2021-01-29  8:43 [PATCH] efifb: Ensure graphics device for efifb stays at PCI D0 Kai-Heng Feng
@ 2021-02-01 15:21 ` Alex Deucher
  2021-02-22  7:08   ` Kai-Heng Feng
  0 siblings, 1 reply; 4+ messages in thread
From: Alex Deucher @ 2021-02-01 15:21 UTC (permalink / raw)
  To: Kai-Heng Feng
  Cc: pjones, Hans de Goede, open list:EFIFB FRAMEBUFFER DRIVER,
	open list, open list:FRAMEBUFFER LAYER

On Sat, Jan 30, 2021 at 6:27 AM Kai-Heng Feng
<kai.heng.feng@canonical.com> wrote:
>
> We are seeing root ports on some desktop boards support D3cold for
> discrete graphics card. So when efifb is in use while graphics device
> isn't bound to a driver, PCI and ACPI will put the graphics to D3cold
> when runtime suspend kicks in, makes efifb stop working.
>
> So ensure the graphics device won't be runtime suspended, to keep efifb
> work all the time.
>
> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>

Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

> ---
>  drivers/video/fbdev/efifb.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
> index e57c00824965..19edd7206409 100644
> --- a/drivers/video/fbdev/efifb.c
> +++ b/drivers/video/fbdev/efifb.c
> @@ -16,6 +16,7 @@
>  #include <linux/platform_device.h>
>  #include <linux/printk.h>
>  #include <linux/screen_info.h>
> +#include <linux/pm_runtime.h>
>  #include <video/vga.h>
>  #include <asm/efi.h>
>  #include <drm/drm_utils.h> /* For drm_get_panel_orientation_quirk */
> @@ -575,6 +576,7 @@ static int efifb_probe(struct platform_device *dev)
>                 goto err_fb_dealoc;
>         }
>         fb_info(info, "%s frame buffer device\n", info->fix.id);
> +       pm_runtime_get_sync(&efifb_pci_dev->dev);
>         return 0;
>
>  err_fb_dealoc:
> @@ -601,6 +603,7 @@ static int efifb_remove(struct platform_device *pdev)
>         unregister_framebuffer(info);
>         sysfs_remove_groups(&pdev->dev.kobj, efifb_groups);
>         framebuffer_release(info);
> +       pm_runtime_put(&efifb_pci_dev->dev);
>
>         return 0;
>  }
> --
> 2.29.2
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] efifb: Ensure graphics device for efifb stays at PCI D0
  2021-02-01 15:21 ` Alex Deucher
@ 2021-02-22  7:08   ` Kai-Heng Feng
  2021-02-22  8:07     ` Thomas Zimmermann
  0 siblings, 1 reply; 4+ messages in thread
From: Kai-Heng Feng @ 2021-02-22  7:08 UTC (permalink / raw)
  To: pjones
  Cc: Alex Deucher, Hans de Goede, open list:EFIFB FRAMEBUFFER DRIVER,
	open list, open list:FRAMEBUFFER LAYER

On Mon, Feb 1, 2021 at 11:21 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>
> On Sat, Jan 30, 2021 at 6:27 AM Kai-Heng Feng
> <kai.heng.feng@canonical.com> wrote:
> >
> > We are seeing root ports on some desktop boards support D3cold for
> > discrete graphics card. So when efifb is in use while graphics device
> > isn't bound to a driver, PCI and ACPI will put the graphics to D3cold
> > when runtime suspend kicks in, makes efifb stop working.
> >
> > So ensure the graphics device won't be runtime suspended, to keep efifb
> > work all the time.
> >
> > Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>
> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>

A gentle ping...

>
> > ---
> >  drivers/video/fbdev/efifb.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
> > index e57c00824965..19edd7206409 100644
> > --- a/drivers/video/fbdev/efifb.c
> > +++ b/drivers/video/fbdev/efifb.c
> > @@ -16,6 +16,7 @@
> >  #include <linux/platform_device.h>
> >  #include <linux/printk.h>
> >  #include <linux/screen_info.h>
> > +#include <linux/pm_runtime.h>
> >  #include <video/vga.h>
> >  #include <asm/efi.h>
> >  #include <drm/drm_utils.h> /* For drm_get_panel_orientation_quirk */
> > @@ -575,6 +576,7 @@ static int efifb_probe(struct platform_device *dev)
> >                 goto err_fb_dealoc;
> >         }
> >         fb_info(info, "%s frame buffer device\n", info->fix.id);
> > +       pm_runtime_get_sync(&efifb_pci_dev->dev);
> >         return 0;
> >
> >  err_fb_dealoc:
> > @@ -601,6 +603,7 @@ static int efifb_remove(struct platform_device *pdev)
> >         unregister_framebuffer(info);
> >         sysfs_remove_groups(&pdev->dev.kobj, efifb_groups);
> >         framebuffer_release(info);
> > +       pm_runtime_put(&efifb_pci_dev->dev);
> >
> >         return 0;
> >  }
> > --
> > 2.29.2
> >
> > _______________________________________________
> > dri-devel mailing list
> > dri-devel@lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] efifb: Ensure graphics device for efifb stays at PCI D0
  2021-02-22  7:08   ` Kai-Heng Feng
@ 2021-02-22  8:07     ` Thomas Zimmermann
  0 siblings, 0 replies; 4+ messages in thread
From: Thomas Zimmermann @ 2021-02-22  8:07 UTC (permalink / raw)
  To: Kai-Heng Feng, pjones
  Cc: Alex Deucher, Hans de Goede, open list:EFIFB FRAMEBUFFER DRIVER,
	open list, open list:FRAMEBUFFER LAYER


[-- Attachment #1.1: Type: text/plain, Size: 2503 bytes --]

Hi

Am 22.02.21 um 08:08 schrieb Kai-Heng Feng:
> On Mon, Feb 1, 2021 at 11:21 PM Alex Deucher <alexdeucher@gmail.com> wrote:
>>
>> On Sat, Jan 30, 2021 at 6:27 AM Kai-Heng Feng
>> <kai.heng.feng@canonical.com> wrote:
>>>
>>> We are seeing root ports on some desktop boards support D3cold for
>>> discrete graphics card. So when efifb is in use while graphics device
>>> isn't bound to a driver, PCI and ACPI will put the graphics to D3cold
>>> when runtime suspend kicks in, makes efifb stop working.
>>>
>>> So ensure the graphics device won't be runtime suspended, to keep efifb
>>> work all the time.
>>>
>>> Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
>>
>> Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
> 
> A gentle ping...

Thanks for your patch. I've added it to drm-misc-next.

Best regards
Thomas

> 
>>
>>> ---
>>>   drivers/video/fbdev/efifb.c | 3 +++
>>>   1 file changed, 3 insertions(+)
>>>
>>> diff --git a/drivers/video/fbdev/efifb.c b/drivers/video/fbdev/efifb.c
>>> index e57c00824965..19edd7206409 100644
>>> --- a/drivers/video/fbdev/efifb.c
>>> +++ b/drivers/video/fbdev/efifb.c
>>> @@ -16,6 +16,7 @@
>>>   #include <linux/platform_device.h>
>>>   #include <linux/printk.h>
>>>   #include <linux/screen_info.h>
>>> +#include <linux/pm_runtime.h>
>>>   #include <video/vga.h>
>>>   #include <asm/efi.h>
>>>   #include <drm/drm_utils.h> /* For drm_get_panel_orientation_quirk */
>>> @@ -575,6 +576,7 @@ static int efifb_probe(struct platform_device *dev)
>>>                  goto err_fb_dealoc;
>>>          }
>>>          fb_info(info, "%s frame buffer device\n", info->fix.id);
>>> +       pm_runtime_get_sync(&efifb_pci_dev->dev);
>>>          return 0;
>>>
>>>   err_fb_dealoc:
>>> @@ -601,6 +603,7 @@ static int efifb_remove(struct platform_device *pdev)
>>>          unregister_framebuffer(info);
>>>          sysfs_remove_groups(&pdev->dev.kobj, efifb_groups);
>>>          framebuffer_release(info);
>>> +       pm_runtime_put(&efifb_pci_dev->dev);
>>>
>>>          return 0;
>>>   }
>>> --
>>> 2.29.2
>>>
>>> _______________________________________________
>>> dri-devel mailing list
>>> dri-devel@lists.freedesktop.org
>>> https://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Felix Imendörffer


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2021-02-22  8:08 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-29  8:43 [PATCH] efifb: Ensure graphics device for efifb stays at PCI D0 Kai-Heng Feng
2021-02-01 15:21 ` Alex Deucher
2021-02-22  7:08   ` Kai-Heng Feng
2021-02-22  8:07     ` Thomas Zimmermann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).