diff mbox series

[2/2] Apply quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1

Message ID 20230222141755.1060162-3-wse@tuxedocomputers.com (mailing list archive)
State New, archived
Headers show
Series Add quirk to disable PSR 2 on Tongfang PHxTxX1 and PHxTQx1 | expand

Commit Message

Werner Sembach Feb. 22, 2023, 2:17 p.m. UTC
On these Barebones PSR 2 is recognized as supported but is very buggy:
- Upper third of screen does sometimes not updated, resulting in
disappearing cursors or ghosts of already closed Windows saying behind.
- Approximately 40 px from the bottom edge a 3 pixel wide strip of randomly
colored pixels is flickering.

PSR 1 is working fine however.

Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
Cc: <stable@vger.kernel.org>
---
 drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
 1 file changed, 8 insertions(+)

Comments

Rodrigo Vivi Feb. 22, 2023, 8:13 p.m. UTC | #1
On Wed, Feb 22, 2023 at 03:17:55PM +0100, Werner Sembach wrote:
> On these Barebones PSR 2 is recognized as supported but is very buggy:
> - Upper third of screen does sometimes not updated, resulting in
> disappearing cursors or ghosts of already closed Windows saying behind.
> - Approximately 40 px from the bottom edge a 3 pixel wide strip of randomly
> colored pixels is flickering.
> 
> PSR 1 is working fine however.

I wonder if this is really about the panel's PSR2 or about the userspace
there not marking the dirtyfb? I know I know... it is not userspace fault...

But I wonder if the case you got here highlights the fact that we have
a substantial bug in the i915 itself in regards to PSR2 API.

Jose, Jouni, ideas on how to check what could be happening here?

oh, btw, Werner, do we have an  open gilab issue for this?

Thanks,
Rodrigo.

> 
> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
> Cc: <stable@vger.kernel.org>
> ---
>  drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
>  1 file changed, 8 insertions(+)
> 
> diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
> index ce6d0fe6448f5..eeb32d3189f5c 100644
> --- a/drivers/gpu/drm/i915/display/intel_quirks.c
> +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
> @@ -65,6 +65,10 @@ static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
>  	drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
>  }
>  
> +/*
> + * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but it is broken
> + * on Linux. PSR 1 however works just fine.
> + */
>  static void quirk_no_psr2(struct drm_i915_private *i915)
>  {
>  	intel_set_quirk(i915, QUIRK_NO_PSR2);
> @@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
>  	/* ECS Liva Q2 */
>  	{ 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
>  	{ 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
> +
> +	/* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6 */
> +	{ 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
> +	{ 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
>  };
>  
>  void intel_init_quirks(struct drm_i915_private *i915)
> -- 
> 2.34.1
>
Jouni Högander Feb. 23, 2023, 6:27 a.m. UTC | #2
On Wed, 2023-02-22 at 15:13 -0500, Rodrigo Vivi wrote:
> On Wed, Feb 22, 2023 at 03:17:55PM +0100, Werner Sembach wrote:
> > On these Barebones PSR 2 is recognized as supported but is very
> > buggy:
> > - Upper third of screen does sometimes not updated, resulting in
> > disappearing cursors or ghosts of already closed Windows saying
> > behind.
> > - Approximately 40 px from the bottom edge a 3 pixel wide strip of
> > randomly
> > colored pixels is flickering.
> > 
> > PSR 1 is working fine however.
> 
> I wonder if this is really about the panel's PSR2 or about the
> userspace
> there not marking the dirtyfb? I know I know... it is not userspace
> fault...
> 
> But I wonder if the case you got here highlights the fact that we
> have
> a substantial bug in the i915 itself in regards to PSR2 API.
> 
> Jose, Jouni, ideas on how to check what could be happening here?

There is already fix for this (Thanks to Werner Sembach for testing the
patch):

https://patchwork.freedesktop.org/series/114217/

> 
> oh, btw, Werner, do we have an  open gilab issue for this?

https://gitlab.freedesktop.org/drm/intel/-/issues/7347

> 
> Thanks,
> Rodrigo.
> 
> > 
> > Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
> > Cc: <stable@vger.kernel.org>
> > ---
> >  drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
> >  1 file changed, 8 insertions(+)
> > 
> > diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c
> > b/drivers/gpu/drm/i915/display/intel_quirks.c
> > index ce6d0fe6448f5..eeb32d3189f5c 100644
> > --- a/drivers/gpu/drm/i915/display/intel_quirks.c
> > +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
> > @@ -65,6 +65,10 @@ static void
> > quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
> >         drm_info(&i915->drm, "Applying no pps backlight power
> > quirk\n");
> >  }
> >  
> > +/*
> > + * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but
> > it is broken
> > + * on Linux. PSR 1 however works just fine.
> > + */
> >  static void quirk_no_psr2(struct drm_i915_private *i915)
> >  {
> >         intel_set_quirk(i915, QUIRK_NO_PSR2);
> > @@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
> >         /* ECS Liva Q2 */
> >         { 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
> > },
> >         { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
> > },
> > +
> > +       /* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6
> > */
> > +       { 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
> > +       { 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
> >  };
> >  
> >  void intel_init_quirks(struct drm_i915_private *i915)
> > -- 
> > 2.34.1
> >
Werner Sembach Feb. 23, 2023, 12:16 p.m. UTC | #3
Am 23.02.23 um 07:27 schrieb Hogander, Jouni:
> On Wed, 2023-02-22 at 15:13 -0500, Rodrigo Vivi wrote:
>> On Wed, Feb 22, 2023 at 03:17:55PM +0100, Werner Sembach wrote:
>>> On these Barebones PSR 2 is recognized as supported but is very
>>> buggy:
>>> - Upper third of screen does sometimes not updated, resulting in
>>> disappearing cursors or ghosts of already closed Windows saying
>>> behind.
>>> - Approximately 40 px from the bottom edge a 3 pixel wide strip of
>>> randomly
>>> colored pixels is flickering.
>>>
>>> PSR 1 is working fine however.
>> I wonder if this is really about the panel's PSR2 or about the
>> userspace
>> there not marking the dirtyfb? I know I know... it is not userspace
>> fault...
>>
>> But I wonder if the case you got here highlights the fact that we
>> have
>> a substantial bug in the i915 itself in regards to PSR2 API.
>>
>> Jose, Jouni, ideas on how to check what could be happening here?
> There is already fix for this (Thanks to Werner Sembach for testing the
> patch):
>
> https://patchwork.freedesktop.org/series/114217/

Yes, thanks for creating that patch ^^

I posted this quirk patch just as an possible alternative for stable if that 
other patch is considered not suitable for it (lets wait and see).

And to get some feedback if something like this could be a viable workaround if 
similar bugs appear in the future.

>
>> oh, btw, Werner, do we have an  open gilab issue for this?
> https://gitlab.freedesktop.org/drm/intel/-/issues/7347
>
>> Thanks,
>> Rodrigo.
>>
>>> Signed-off-by: Werner Sembach <wse@tuxedocomputers.com>
>>> Cc: <stable@vger.kernel.org>
>>> ---
>>>   drivers/gpu/drm/i915/display/intel_quirks.c | 8 ++++++++
>>>   1 file changed, 8 insertions(+)
>>>
>>> diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c
>>> b/drivers/gpu/drm/i915/display/intel_quirks.c
>>> index ce6d0fe6448f5..eeb32d3189f5c 100644
>>> --- a/drivers/gpu/drm/i915/display/intel_quirks.c
>>> +++ b/drivers/gpu/drm/i915/display/intel_quirks.c
>>> @@ -65,6 +65,10 @@ static void
>>> quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
>>>          drm_info(&i915->drm, "Applying no pps backlight power
>>> quirk\n");
>>>   }
>>>   
>>> +/*
>>> + * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but
>>> it is broken
>>> + * on Linux. PSR 1 however works just fine.
>>> + */
>>>   static void quirk_no_psr2(struct drm_i915_private *i915)
>>>   {
>>>          intel_set_quirk(i915, QUIRK_NO_PSR2);
>>> @@ -205,6 +209,10 @@ static struct intel_quirk intel_quirks[] = {
>>>          /* ECS Liva Q2 */
>>>          { 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
>>> },
>>>          { 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time
>>> },
>>> +
>>> +       /* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6
>>> */
>>> +       { 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
>>> +       { 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
>>>   };
>>>   
>>>   void intel_init_quirks(struct drm_i915_private *i915)
>>> -- 
>>> 2.34.1
>>>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/i915/display/intel_quirks.c b/drivers/gpu/drm/i915/display/intel_quirks.c
index ce6d0fe6448f5..eeb32d3189f5c 100644
--- a/drivers/gpu/drm/i915/display/intel_quirks.c
+++ b/drivers/gpu/drm/i915/display/intel_quirks.c
@@ -65,6 +65,10 @@  static void quirk_no_pps_backlight_power_hook(struct drm_i915_private *i915)
 	drm_info(&i915->drm, "Applying no pps backlight power quirk\n");
 }
 
+/*
+ * Tongfang PHxTxX1 and PHxTQx1 devices have support for PSR 2 but it is broken
+ * on Linux. PSR 1 however works just fine.
+ */
 static void quirk_no_psr2(struct drm_i915_private *i915)
 {
 	intel_set_quirk(i915, QUIRK_NO_PSR2);
@@ -205,6 +209,10 @@  static struct intel_quirk intel_quirks[] = {
 	/* ECS Liva Q2 */
 	{ 0x3185, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
 	{ 0x3184, 0x1019, 0xa94d, quirk_increase_ddi_disabled_time },
+
+	/* Tongfang PHxTxX1 and PHxTQx1/TUXEDO InfinityBook 14 Gen6 */
+	{ 0x9a49, 0x1d05, 0x1105, quirk_no_psr2 },
+	{ 0x9a49, 0x1d05, 0x114c, quirk_no_psr2 },
 };
 
 void intel_init_quirks(struct drm_i915_private *i915)