* [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 12:31 ` Jani Nikula
2026-02-24 3:45 ` [PATCH v3 2/8] drm/i915/backlight: Use intel_panel variable instead of intel_connector Suraj Kandpal
` (7 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
If the brightness fetched from VBT/previous state is 0 on backlight
initialization, then set the brightness to a default/max value.
Whenever the minimum brightness is reported as 0 there are chances
we end up with blank screen. This confuses the user into thinking
the display is acting weird. This occurs in eDP 1.5 when
we are using PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness
via luminance values.
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
v1 -> v2:
- Let users set brightness to 0, make it so that it's just not
done by default (Arun)
v2 -> v3:
-Update commit header and message (Arun)
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index eb05ef4bd9f6..c40ce310ad97 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -564,6 +564,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
}
panel->backlight.level = intel_dp_aux_vesa_get_backlight(connector, 0);
panel->backlight.enabled = panel->backlight.level != 0;
+ if (!panel->backlight.level)
+ panel->backlight.level = panel->backlight.max;
drm_dbg_kms(display->drm,
"[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n",
connector->base.base.id, connector->base.name);
@@ -573,6 +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
panel->backlight.level = current_level;
panel->backlight.enabled = panel->backlight.level != 0;
+ if (!panel->backlight.level)
+ panel->backlight.level = panel->backlight.max;
} else {
panel->backlight.level = panel->backlight.max;
panel->backlight.enabled = false;
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-02-24 3:45 ` [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init Suraj Kandpal
@ 2026-02-24 12:31 ` Jani Nikula
2026-02-25 4:43 ` Kandpal, Suraj
0 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2026-02-24 12:31 UTC (permalink / raw)
To: Suraj Kandpal, intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> If the brightness fetched from VBT/previous state is 0 on backlight
> initialization, then set the brightness to a default/max value.
> Whenever the minimum brightness is reported as 0 there are chances
> we end up with blank screen. This confuses the user into thinking
> the display is acting weird. This occurs in eDP 1.5 when
> we are using PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness
> via luminance values.
>
> Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> v1 -> v2:
> - Let users set brightness to 0, make it so that it's just not
> done by default (Arun)
>
> v2 -> v3:
> -Update commit header and message (Arun)
>
> drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> index eb05ef4bd9f6..c40ce310ad97 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> @@ -564,6 +564,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
> }
> panel->backlight.level = intel_dp_aux_vesa_get_backlight(connector, 0);
> panel->backlight.enabled = panel->backlight.level != 0;
> + if (!panel->backlight.level)
> + panel->backlight.level = panel->backlight.max;
How does this help when .enabled is still based on level != 0 above?
> drm_dbg_kms(display->drm,
> "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n",
> connector->base.base.id, connector->base.name);
> @@ -573,6 +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
> if (current_mode == DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
> panel->backlight.level = current_level;
> panel->backlight.enabled = panel->backlight.level != 0;
> + if (!panel->backlight.level)
> + panel->backlight.level = panel->backlight.max;
Ditto.
> } else {
> panel->backlight.level = panel->backlight.max;
> panel->backlight.enabled = false;
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-02-24 12:31 ` Jani Nikula
@ 2026-02-25 4:43 ` Kandpal, Suraj
2026-03-02 9:42 ` Jani Nikula
0 siblings, 1 reply; 20+ messages in thread
From: Kandpal, Suraj @ 2026-02-25 4:43 UTC (permalink / raw)
To: Jani Nikula, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
> VESA AUX backlight init
>
> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> > If the brightness fetched from VBT/previous state is 0 on backlight
> > initialization, then set the brightness to a default/max value.
> > Whenever the minimum brightness is reported as 0 there are chances we
> > end up with blank screen. This confuses the user into thinking the
> > display is acting weird. This occurs in eDP 1.5 when we are using
> > PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness via luminance
> > values.
> >
> > Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
> > ---
> > v1 -> v2:
> > - Let users set brightness to 0, make it so that it's just not done by
> > default (Arun)
> >
> > v2 -> v3:
> > -Update commit header and message (Arun)
> >
> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> > index eb05ef4bd9f6..c40ce310ad97 100644
> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> > @@ -564,6 +564,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
> intel_connector *connector,
> > }
> > panel->backlight.level =
> intel_dp_aux_vesa_get_backlight(connector, 0);
> > panel->backlight.enabled = panel->backlight.level != 0;
> > + if (!panel->backlight.level)
> > + panel->backlight.level = panel->backlight.max;
>
> How does this help when .enabled is still based on level != 0 above?
>
Well we keep the backlight.enabled as false if we read a 0 back from the DPCD or the current level state is 0.
This is to maintain the policy that if during setup we get 0 as backlight value eDP backlight is currently disabled
(which means __intel_backlight_enable needs be called). We then change the current level to max so that when
backlight enable is called after setup from intel_backlight_update, we enable backlight with max level so that we
do not end up with a blank screen. This is also where we set backlight.enabled = true.
This is to tackle different eDP behavior where, some preserve the last brightness value programmed in them (in that case
users want the same brightness to continue) while others don't and just 0 it out instead of having some default value (in that
case we keep backlight.enabled = false later to be made true during the __intel_backlight_enable call).
We face these scenarios in some compositors during the pass key phase where the compositor is still totally not doing everything and does not send
us any explicit brightness value to set thinking eDP would have some basic default value of it's own . We end up getting a 0 from DPCD and we enable and set the backlight enable with 0 value which anyways later causes us to call backlight disable.
In this case during authentication in some compositors like Fedora there are cases where we do not get a explicitly backlight value till the user has to blindly enter their
Passkey, after which the compositor sends us some sane value which we then program.
Regards,
Suraj Kandpal
> > drm_dbg_kms(display->drm,
> > "[CONNECTOR:%d:%s] AUX VESA Nits backlight level
> is controlled through DPCD\n",
> > connector->base.base.id, connector->base.name);
> @@ -573,6
> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
> intel_connector *connector,
> > if (current_mode ==
> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
> > panel->backlight.level = current_level;
> > panel->backlight.enabled = panel->backlight.level != 0;
> > + if (!panel->backlight.level)
> > + panel->backlight.level = panel->backlight.max;
>
> Ditto.
>
> > } else {
> > panel->backlight.level = panel->backlight.max;
> > panel->backlight.enabled = false;
>
> --
> Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-02-25 4:43 ` Kandpal, Suraj
@ 2026-03-02 9:42 ` Jani Nikula
2026-03-02 10:00 ` Kandpal, Suraj
0 siblings, 1 reply; 20+ messages in thread
From: Jani Nikula @ 2026-03-02 9:42 UTC (permalink / raw)
To: Kandpal, Suraj, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
On Wed, 25 Feb 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
>> VESA AUX backlight init
>>
>> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
>> > If the brightness fetched from VBT/previous state is 0 on backlight
>> > initialization, then set the brightness to a default/max value.
>> > Whenever the minimum brightness is reported as 0 there are chances we
>> > end up with blank screen. This confuses the user into thinking the
>> > display is acting weird. This occurs in eDP 1.5 when we are using
>> > PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness via luminance
>> > values.
>> >
>> > Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
>> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
>> > ---
>> > v1 -> v2:
>> > - Let users set brightness to 0, make it so that it's just not done by
>> > default (Arun)
>> >
>> > v2 -> v3:
>> > -Update commit header and message (Arun)
>> >
>> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
>> > 1 file changed, 4 insertions(+)
>> >
>> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> > index eb05ef4bd9f6..c40ce310ad97 100644
>> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> > @@ -564,6 +564,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
>> intel_connector *connector,
>> > }
>> > panel->backlight.level =
>> intel_dp_aux_vesa_get_backlight(connector, 0);
>> > panel->backlight.enabled = panel->backlight.level != 0;
>> > + if (!panel->backlight.level)
>> > + panel->backlight.level = panel->backlight.max;
>>
>> How does this help when .enabled is still based on level != 0 above?
>>
>
> Well we keep the backlight.enabled as false if we read a 0 back from the DPCD or the current level state is 0.
> This is to maintain the policy that if during setup we get 0 as backlight value eDP backlight is currently disabled
> (which means __intel_backlight_enable needs be called). We then change the current level to max so that when
> backlight enable is called after setup from intel_backlight_update, we enable backlight with max level so that we
> do not end up with a blank screen. This is also where we set backlight.enabled = true.
> This is to tackle different eDP behavior where, some preserve the last brightness value programmed in them (in that case
> users want the same brightness to continue) while others don't and just 0 it out instead of having some default value (in that
> case we keep backlight.enabled = false later to be made true during the __intel_backlight_enable call).
> We face these scenarios in some compositors during the pass key phase where the compositor is still totally not doing everything and does not send
> us any explicit brightness value to set thinking eDP would have some basic default value of it's own . We end up getting a 0 from DPCD and we enable and set the backlight enable with 0 value which anyways later causes us to call backlight disable.
> In this case during authentication in some compositors like Fedora there are cases where we do not get a explicitly backlight value till the user has to blindly enter their
> Passkey, after which the compositor sends us some sane value which we then program.
There's a long history of problems with the PWM backlight unexpectedly
going from 0 to max.
BR,
Jani.
>
> Regards,
> Suraj Kandpal
>
>> > drm_dbg_kms(display->drm,
>> > "[CONNECTOR:%d:%s] AUX VESA Nits backlight level
>> is controlled through DPCD\n",
>> > connector->base.base.id, connector->base.name);
>> @@ -573,6
>> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
>> intel_connector *connector,
>> > if (current_mode ==
>> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
>> > panel->backlight.level = current_level;
>> > panel->backlight.enabled = panel->backlight.level != 0;
>> > + if (!panel->backlight.level)
>> > + panel->backlight.level = panel->backlight.max;
>>
>> Ditto.
>>
>> > } else {
>> > panel->backlight.level = panel->backlight.max;
>> > panel->backlight.enabled = false;
>>
>> --
>> Jani Nikula, Intel
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-03-02 9:42 ` Jani Nikula
@ 2026-03-02 10:00 ` Kandpal, Suraj
2026-03-02 10:28 ` Jani Nikula
0 siblings, 1 reply; 20+ messages in thread
From: Kandpal, Suraj @ 2026-03-02 10:00 UTC (permalink / raw)
To: Jani Nikula, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
> VESA AUX backlight init
>
> On Wed, 25 Feb 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max
> >> brightness for VESA AUX backlight init
> >>
> >> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> >> > If the brightness fetched from VBT/previous state is 0 on backlight
> >> > initialization, then set the brightness to a default/max value.
> >> > Whenever the minimum brightness is reported as 0 there are chances
> >> > we end up with blank screen. This confuses the user into thinking
> >> > the display is acting weird. This occurs in eDP 1.5 when we are
> >> > using PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness via
> >> > luminance values.
> >> >
> >> > Closes:
> >> > https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
> >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> >> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
> >> > ---
> >> > v1 -> v2:
> >> > - Let users set brightness to 0, make it so that it's just not done
> >> > by default (Arun)
> >> >
> >> > v2 -> v3:
> >> > -Update commit header and message (Arun)
> >> >
> >> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
> >> > 1 file changed, 4 insertions(+)
> >> >
> >> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> > index eb05ef4bd9f6..c40ce310ad97 100644
> >> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> > @@ -564,6 +564,8 @@ static int
> >> > intel_dp_aux_vesa_setup_backlight(struct
> >> intel_connector *connector,
> >> > }
> >> > panel->backlight.level =
> >> intel_dp_aux_vesa_get_backlight(connector, 0);
> >> > panel->backlight.enabled = panel->backlight.level != 0;
> >> > + if (!panel->backlight.level)
> >> > + panel->backlight.level = panel->backlight.max;
> >>
> >> How does this help when .enabled is still based on level != 0 above?
> >>
> >
> > Well we keep the backlight.enabled as false if we read a 0 back from the DPCD
> or the current level state is 0.
> > This is to maintain the policy that if during setup we get 0 as
> > backlight value eDP backlight is currently disabled (which means
> > __intel_backlight_enable needs be called). We then change the current
> > level to max so that when backlight enable is called after setup from
> intel_backlight_update, we enable backlight with max level so that we do not
> end up with a blank screen. This is also where we set backlight.enabled = true.
> > This is to tackle different eDP behavior where, some preserve the
> > last brightness value programmed in them (in that case users want the
> > same brightness to continue) while others don't and just 0 it out instead of
> having some default value (in that case we keep backlight.enabled = false later
> to be made true during the __intel_backlight_enable call).
> > We face these scenarios in some compositors during the pass key phase
> > where the compositor is still totally not doing everything and does not send
> us any explicit brightness value to set thinking eDP would have some basic
> default value of it's own . We end up getting a 0 from DPCD and we enable and
> set the backlight enable with 0 value which anyways later causes us to call
> backlight disable.
> > In this case during authentication in some compositors like Fedora
> > there are cases where we do not get a explicitly backlight value till the user
> has to blindly enter their Passkey, after which the compositor sends us some
> sane value which we then program.
>
> There's a long history of problems with the PWM backlight unexpectedly going
> from 0 to max.
Right but at least with this now luminance values will continue if DPCD maintains its state if we get a value back, otherwise we set a
Default value.
Can we proceed with getting this merged ? Would really help the user.
Regards,
Suraj Kandpal
>
> BR,
> Jani.
>
> >
> > Regards,
> > Suraj Kandpal
> >
> >> > drm_dbg_kms(display->drm,
> >> > "[CONNECTOR:%d:%s] AUX VESA Nits backlight level
> >> is controlled through DPCD\n",
> >> > connector->base.base.id, connector->base.name);
> >> @@ -573,6
> >> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
> >> intel_connector *connector,
> >> > if (current_mode ==
> >> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
> >> > panel->backlight.level = current_level;
> >> > panel->backlight.enabled = panel->backlight.level != 0;
> >> > + if (!panel->backlight.level)
> >> > + panel->backlight.level = panel->backlight.max;
> >>
> >> Ditto.
> >>
> >> > } else {
> >> > panel->backlight.level = panel->backlight.max;
> >> > panel->backlight.enabled = false;
> >>
> >> --
> >> Jani Nikula, Intel
>
> --
> Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-03-02 10:00 ` Kandpal, Suraj
@ 2026-03-02 10:28 ` Jani Nikula
2026-03-02 11:04 ` Kandpal, Suraj
2026-03-04 5:49 ` Kandpal, Suraj
0 siblings, 2 replies; 20+ messages in thread
From: Jani Nikula @ 2026-03-02 10:28 UTC (permalink / raw)
To: Kandpal, Suraj, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
On Mon, 02 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
>> VESA AUX backlight init
>>
>> On Wed, 25 Feb 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> >> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max
>> >> brightness for VESA AUX backlight init
>> >>
>> >> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
>> >> > If the brightness fetched from VBT/previous state is 0 on backlight
>> >> > initialization, then set the brightness to a default/max value.
>> >> > Whenever the minimum brightness is reported as 0 there are chances
>> >> > we end up with blank screen. This confuses the user into thinking
>> >> > the display is acting weird. This occurs in eDP 1.5 when we are
>> >> > using PANEL_LUMINANCE_OVERRIDE mode to mainpulate brightness via
>> >> > luminance values.
>> >> >
>> >> > Closes:
>> >> > https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
>> >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>> >> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
>> >> > ---
>> >> > v1 -> v2:
>> >> > - Let users set brightness to 0, make it so that it's just not done
>> >> > by default (Arun)
>> >> >
>> >> > v2 -> v3:
>> >> > -Update commit header and message (Arun)
>> >> >
>> >> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
>> >> > 1 file changed, 4 insertions(+)
>> >> >
>> >> > diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> > index eb05ef4bd9f6..c40ce310ad97 100644
>> >> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> > @@ -564,6 +564,8 @@ static int
>> >> > intel_dp_aux_vesa_setup_backlight(struct
>> >> intel_connector *connector,
>> >> > }
>> >> > panel->backlight.level =
>> >> intel_dp_aux_vesa_get_backlight(connector, 0);
>> >> > panel->backlight.enabled = panel->backlight.level != 0;
>> >> > + if (!panel->backlight.level)
>> >> > + panel->backlight.level = panel->backlight.max;
>> >>
>> >> How does this help when .enabled is still based on level != 0 above?
>> >>
>> >
>> > Well we keep the backlight.enabled as false if we read a 0 back from the DPCD
>> or the current level state is 0.
>> > This is to maintain the policy that if during setup we get 0 as
>> > backlight value eDP backlight is currently disabled (which means
>> > __intel_backlight_enable needs be called). We then change the current
>> > level to max so that when backlight enable is called after setup from
>> intel_backlight_update, we enable backlight with max level so that we do not
>> end up with a blank screen. This is also where we set backlight.enabled = true.
>> > This is to tackle different eDP behavior where, some preserve the
>> > last brightness value programmed in them (in that case users want the
>> > same brightness to continue) while others don't and just 0 it out instead of
>> having some default value (in that case we keep backlight.enabled = false later
>> to be made true during the __intel_backlight_enable call).
>> > We face these scenarios in some compositors during the pass key phase
>> > where the compositor is still totally not doing everything and does not send
>> us any explicit brightness value to set thinking eDP would have some basic
>> default value of it's own . We end up getting a 0 from DPCD and we enable and
>> set the backlight enable with 0 value which anyways later causes us to call
>> backlight disable.
>> > In this case during authentication in some compositors like Fedora
>> > there are cases where we do not get a explicitly backlight value till the user
>> has to blindly enter their Passkey, after which the compositor sends us some
>> sane value which we then program.
>>
>> There's a long history of problems with the PWM backlight unexpectedly going
>> from 0 to max.
>
> Right but at least with this now luminance values will continue if DPCD maintains its state if we get a value back, otherwise we set a
> Default value.
What's the brightness control mode *before* we enable luminance control?
When taking over, we should try to read the current brightness setting
with the current brightness control method. If we're switching to
luminance control, the existing luminance value is meaningless.
AFAICT drm_edp_backlight_probe_state() uses bl->luminance_set to
determine the value to read, not the current mode. At a glance, seems
wrong to me.
Of course, regressions have priority, so a revert should also be a
consideration before quickly going for adding level = max in there.
> Can we proceed with getting this merged ? Would really help the user.
The real problem with quick fixes to help the user is that they have the
potential to make it a lot harder for a lot more users and developers in
the long run.
BR,
Jani.
>
> Regards,
> Suraj Kandpal
>
>>
>> BR,
>> Jani.
>>
>> >
>> > Regards,
>> > Suraj Kandpal
>> >
>> >> > drm_dbg_kms(display->drm,
>> >> > "[CONNECTOR:%d:%s] AUX VESA Nits backlight level
>> >> is controlled through DPCD\n",
>> >> > connector->base.base.id, connector->base.name);
>> >> @@ -573,6
>> >> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
>> >> intel_connector *connector,
>> >> > if (current_mode ==
>> >> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
>> >> > panel->backlight.level = current_level;
>> >> > panel->backlight.enabled = panel->backlight.level != 0;
>> >> > + if (!panel->backlight.level)
>> >> > + panel->backlight.level = panel->backlight.max;
>> >>
>> >> Ditto.
>> >>
>> >> > } else {
>> >> > panel->backlight.level = panel->backlight.max;
>> >> > panel->backlight.enabled = false;
>> >>
>> >> --
>> >> Jani Nikula, Intel
>>
>> --
>> Jani Nikula, Intel
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-03-02 10:28 ` Jani Nikula
@ 2026-03-02 11:04 ` Kandpal, Suraj
2026-03-02 11:25 ` Jani Nikula
2026-03-04 5:49 ` Kandpal, Suraj
1 sibling, 1 reply; 20+ messages in thread
From: Kandpal, Suraj @ 2026-03-02 11:04 UTC (permalink / raw)
To: Jani Nikula, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
> VESA AUX backlight init
>
> On Mon, 02 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max
> >> brightness for VESA AUX backlight init
> >>
> >> On Wed, 25 Feb 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> >> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max
> >> >> brightness for VESA AUX backlight init
> >> >>
> >> >> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> >> >> > If the brightness fetched from VBT/previous state is 0 on
> >> >> > backlight initialization, then set the brightness to a default/max value.
> >> >> > Whenever the minimum brightness is reported as 0 there are
> >> >> > chances we end up with blank screen. This confuses the user into
> >> >> > thinking the display is acting weird. This occurs in eDP 1.5
> >> >> > when we are using PANEL_LUMINANCE_OVERRIDE mode to mainpulate
> >> >> > brightness via luminance values.
> >> >> >
> >> >> > Closes:
> >> >> > https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
> >> >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> >> >> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
> >> >> > ---
> >> >> > v1 -> v2:
> >> >> > - Let users set brightness to 0, make it so that it's just not
> >> >> > done by default (Arun)
> >> >> >
> >> >> > v2 -> v3:
> >> >> > -Update commit header and message (Arun)
> >> >> >
> >> >> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
> >> >> > 1 file changed, 4 insertions(+)
> >> >> >
> >> >> > diff --git
> >> >> > a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > index eb05ef4bd9f6..c40ce310ad97 100644
> >> >> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > @@ -564,6 +564,8 @@ static int
> >> >> > intel_dp_aux_vesa_setup_backlight(struct
> >> >> intel_connector *connector,
> >> >> > }
> >> >> > panel->backlight.level =
> >> >> intel_dp_aux_vesa_get_backlight(connector, 0);
> >> >> > panel->backlight.enabled = panel->backlight.level != 0;
> >> >> > + if (!panel->backlight.level)
> >> >> > + panel->backlight.level = panel->backlight.max;
> >> >>
> >> >> How does this help when .enabled is still based on level != 0 above?
> >> >>
> >> >
> >> > Well we keep the backlight.enabled as false if we read a 0 back
> >> > from the DPCD
> >> or the current level state is 0.
> >> > This is to maintain the policy that if during setup we get 0 as
> >> > backlight value eDP backlight is currently disabled (which means
> >> > __intel_backlight_enable needs be called). We then change the
> >> > current level to max so that when backlight enable is called after
> >> > setup from
> >> intel_backlight_update, we enable backlight with max level so that we
> >> do not end up with a blank screen. This is also where we set
> backlight.enabled = true.
> >> > This is to tackle different eDP behavior where, some preserve the
> >> > last brightness value programmed in them (in that case users want
> >> > the same brightness to continue) while others don't and just 0 it
> >> > out instead of
> >> having some default value (in that case we keep backlight.enabled =
> >> false later to be made true during the __intel_backlight_enable call).
> >> > We face these scenarios in some compositors during the pass key
> >> > phase where the compositor is still totally not doing everything
> >> > and does not send
> >> us any explicit brightness value to set thinking eDP would have some
> >> basic default value of it's own . We end up getting a 0 from DPCD and
> >> we enable and set the backlight enable with 0 value which anyways
> >> later causes us to call backlight disable.
> >> > In this case during authentication in some compositors like Fedora
> >> > there are cases where we do not get a explicitly backlight value
> >> > till the user
> >> has to blindly enter their Passkey, after which the compositor sends
> >> us some sane value which we then program.
> >>
> >> There's a long history of problems with the PWM backlight
> >> unexpectedly going from 0 to max.
> >
> > Right but at least with this now luminance values will continue if
> > DPCD maintains its state if we get a value back, otherwise we set a Default
> value.
>
> What's the brightness control mode *before* we enable luminance control?
>
> When taking over, we should try to read the current brightness setting with the
> current brightness control method. If we're switching to luminance control, the
> existing luminance value is meaningless.
>
> AFAICT drm_edp_backlight_probe_state() uses bl->luminance_set to determine
> the value to read, not the current mode. At a glance, seems wrong to me.
Luminance mode is the current mode. Which we determine that by checking different capabilities from the and setting them
In this case aux_set and aux_enable to represent them.
[ 1.667694] i915 0000:00:02.0: [drm:drm_edp_backlight_init [drm_display_helper]] AUX A/DDI A/PHY A: Found backlight: aux_set=1 aux_enable=0 mode=0
[ 1.667703] i915 0000:00:02.0: [drm:drm_edp_backlight_init [drm_display_helper]] AUX A/DDI A/PHY A: Backlight caps: level=496/496 pwm_freq_pre_divider=0 lsb_reg_used=1
In this case aux_set = 1 and luminance_set = 1 which means we are in luminance mode
>
> Of course, regressions have priority, so a revert should also be a consideration
> before quickly going for adding level = max in there.
>
From what I can see
We are in Luminance Mode to begin with. From logs there is a level mentioned in VBT should we use that ?
[ 1.665632] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel type (VBT): 255
[ 1.665770] i915 0000:00:02.0: [drm:pnpid_get_panel_type [i915]] EDID manufacturer name: SDC, product code: 16899, serial number: 0, year of manufacture: 2024
[ 1.665890] i915 0000:00:02.0: [drm:pnpid_get_panel_type [i915]] EDID raw product id: 4c 83 03 42 00 00 00 00 00 22
[ 1.666006] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel type (fallback): 0
[ 1.666124] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Selected panel type (fallback): 0
[ 1.666235] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] DRRS supported mode is seamless
[ 1.666346] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Found panel mode in BIOS VBT legacy lfp table: "640x480": 63 25180 640 648 744 784 480 482 484 509 0x8 0xa
[ 1.666454] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel manufacturer name: @H@, product code: 0, serial number: 0, year of manufacture: 1990
[ 1.666560] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel name: LFP_PanelName
[ 1.666665] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Seamless DRRS min refresh rate: 0 Hz
[ 1.666757] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] VBT backlight PWM modulation frequency 200 Hz, active high, min brightness 0, level 255, controller 0
[ 1.666847] i915 0000:00:02.0: [drm:intel_panel_add_edid_fixed_modes [i915]] [CONNECTOR:502:eDP-1] using preferred EDID fixed mode: "2880x1800": 60 709633 2880 2888 2920 3080 1800 3800 3816 3840 0x48 0xa
[ 1.666931] i915 0000:00:02.0: [drm:intel_panel_add_edid_fixed_modes [i915]] [CONNECTOR:502:eDP-1] using alternate EDID fixed mode: "2880x1800": 120 709633 2880 2888 2920 3080 1800 1880 1896 1920 0x40 0xa
[ 1.667117] mmc0: SDHCI controller on PCI [0000:58:00.0] using ADMA
[ 1.667206] i915 0000:00:02.0: [drm:drm_dp_dpcd_read [drm_display_helper]] AUX A/DDI A/PHY A: 0x007a4 AUX -> (ret= 1) 00
[ 1.667223] i915 0000:00:02.0: [drm:intel_dp_aux_init_backlight_funcs [i915]] [CONNECTOR:502:eDP-1] AUX Luminance Based Backlight Control Supported!
[ 1.667335] i915 0000:00:02.0: [drm:intel_dp_aux_init_backlight_funcs [i915]] [CONNECTOR:502:eDP-1] Using VESA eDP backlight controls
[ 1.667413] i915 0000:00:02.0: [drm:intel_panel_init [i915]] [CONNECTOR:502:eDP-1] DRRS type: none
VBT here says use level 255 would it be okay if we set that to level as VBT level, if no value is returned from DPCD panel.
Regards,
Suraj Kandpal
> > Can we proceed with getting this merged ? Would really help the user.
>
> The real problem with quick fixes to help the user is that they have the
> potential to make it a lot harder for a lot more users and developers in the long
> run.
>
>
> BR,
> Jani.
>
> >
> > Regards,
> > Suraj Kandpal
> >
> >>
> >> BR,
> >> Jani.
> >>
> >> >
> >> > Regards,
> >> > Suraj Kandpal
> >> >
> >> >> > drm_dbg_kms(display->drm,
> >> >> > "[CONNECTOR:%d:%s] AUX VESA Nits
> backlight level
> >> >> is controlled through DPCD\n",
> >> >> > connector->base.base.id, connector-
> >base.name);
> >> >> @@ -573,6
> >> >> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
> >> >> intel_connector *connector,
> >> >> > if (current_mode ==
> >> >> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
> >> >> > panel->backlight.level = current_level;
> >> >> > panel->backlight.enabled = panel-
> >backlight.level != 0;
> >> >> > + if (!panel->backlight.level)
> >> >> > + panel->backlight.level = panel-
> >backlight.max;
> >> >>
> >> >> Ditto.
> >> >>
> >> >> > } else {
> >> >> > panel->backlight.level = panel->backlight.max;
> >> >> > panel->backlight.enabled = false;
> >> >>
> >> >> --
> >> >> Jani Nikula, Intel
> >>
> >> --
> >> Jani Nikula, Intel
>
> --
> Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-03-02 11:04 ` Kandpal, Suraj
@ 2026-03-02 11:25 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2026-03-02 11:25 UTC (permalink / raw)
To: Kandpal, Suraj, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
On Mon, 02 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
>> VESA AUX backlight init
>>
>> On Mon, 02 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> >> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max
>> >> brightness for VESA AUX backlight init
>> >>
>> >> On Wed, 25 Feb 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
>> >> >> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max
>> >> >> brightness for VESA AUX backlight init
>> >> >>
>> >> >> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
>> >> >> > If the brightness fetched from VBT/previous state is 0 on
>> >> >> > backlight initialization, then set the brightness to a default/max value.
>> >> >> > Whenever the minimum brightness is reported as 0 there are
>> >> >> > chances we end up with blank screen. This confuses the user into
>> >> >> > thinking the display is acting weird. This occurs in eDP 1.5
>> >> >> > when we are using PANEL_LUMINANCE_OVERRIDE mode to mainpulate
>> >> >> > brightness via luminance values.
>> >> >> >
>> >> >> > Closes:
>> >> >> > https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
>> >> >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
>> >> >> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
>> >> >> > ---
>> >> >> > v1 -> v2:
>> >> >> > - Let users set brightness to 0, make it so that it's just not
>> >> >> > done by default (Arun)
>> >> >> >
>> >> >> > v2 -> v3:
>> >> >> > -Update commit header and message (Arun)
>> >> >> >
>> >> >> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
>> >> >> > 1 file changed, 4 insertions(+)
>> >> >> >
>> >> >> > diff --git
>> >> >> > a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> >> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> >> > index eb05ef4bd9f6..c40ce310ad97 100644
>> >> >> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> >> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
>> >> >> > @@ -564,6 +564,8 @@ static int
>> >> >> > intel_dp_aux_vesa_setup_backlight(struct
>> >> >> intel_connector *connector,
>> >> >> > }
>> >> >> > panel->backlight.level =
>> >> >> intel_dp_aux_vesa_get_backlight(connector, 0);
>> >> >> > panel->backlight.enabled = panel->backlight.level != 0;
>> >> >> > + if (!panel->backlight.level)
>> >> >> > + panel->backlight.level = panel->backlight.max;
>> >> >>
>> >> >> How does this help when .enabled is still based on level != 0 above?
>> >> >>
>> >> >
>> >> > Well we keep the backlight.enabled as false if we read a 0 back
>> >> > from the DPCD
>> >> or the current level state is 0.
>> >> > This is to maintain the policy that if during setup we get 0 as
>> >> > backlight value eDP backlight is currently disabled (which means
>> >> > __intel_backlight_enable needs be called). We then change the
>> >> > current level to max so that when backlight enable is called after
>> >> > setup from
>> >> intel_backlight_update, we enable backlight with max level so that we
>> >> do not end up with a blank screen. This is also where we set
>> backlight.enabled = true.
>> >> > This is to tackle different eDP behavior where, some preserve the
>> >> > last brightness value programmed in them (in that case users want
>> >> > the same brightness to continue) while others don't and just 0 it
>> >> > out instead of
>> >> having some default value (in that case we keep backlight.enabled =
>> >> false later to be made true during the __intel_backlight_enable call).
>> >> > We face these scenarios in some compositors during the pass key
>> >> > phase where the compositor is still totally not doing everything
>> >> > and does not send
>> >> us any explicit brightness value to set thinking eDP would have some
>> >> basic default value of it's own . We end up getting a 0 from DPCD and
>> >> we enable and set the backlight enable with 0 value which anyways
>> >> later causes us to call backlight disable.
>> >> > In this case during authentication in some compositors like Fedora
>> >> > there are cases where we do not get a explicitly backlight value
>> >> > till the user
>> >> has to blindly enter their Passkey, after which the compositor sends
>> >> us some sane value which we then program.
>> >>
>> >> There's a long history of problems with the PWM backlight
>> >> unexpectedly going from 0 to max.
>> >
>> > Right but at least with this now luminance values will continue if
>> > DPCD maintains its state if we get a value back, otherwise we set a Default
>> value.
>>
>> What's the brightness control mode *before* we enable luminance control?
>>
>> When taking over, we should try to read the current brightness setting with the
>> current brightness control method. If we're switching to luminance control, the
>> existing luminance value is meaningless.
>>
>> AFAICT drm_edp_backlight_probe_state() uses bl->luminance_set to determine
>> the value to read, not the current mode. At a glance, seems wrong to me.
>
> Luminance mode is the current mode. Which we determine that by checking different capabilities from the and setting them
> In this case aux_set and aux_enable to represent them.
The question is not about the panel's *ability* to use luminance mode,
it's about whether that mode was set and in use by GOP/pre-os.
BR,
Jani.
>
> [ 1.667694] i915 0000:00:02.0: [drm:drm_edp_backlight_init [drm_display_helper]] AUX A/DDI A/PHY A: Found backlight: aux_set=1 aux_enable=0 mode=0
> [ 1.667703] i915 0000:00:02.0: [drm:drm_edp_backlight_init [drm_display_helper]] AUX A/DDI A/PHY A: Backlight caps: level=496/496 pwm_freq_pre_divider=0 lsb_reg_used=1
>
> In this case aux_set = 1 and luminance_set = 1 which means we are in luminance mode
>
>>
>> Of course, regressions have priority, so a revert should also be a consideration
>> before quickly going for adding level = max in there.
>>
>
> From what I can see
> We are in Luminance Mode to begin with. From logs there is a level mentioned in VBT should we use that ?
>
> [ 1.665632] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel type (VBT): 255
> [ 1.665770] i915 0000:00:02.0: [drm:pnpid_get_panel_type [i915]] EDID manufacturer name: SDC, product code: 16899, serial number: 0, year of manufacture: 2024
> [ 1.665890] i915 0000:00:02.0: [drm:pnpid_get_panel_type [i915]] EDID raw product id: 4c 83 03 42 00 00 00 00 00 22
> [ 1.666006] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel type (fallback): 0
> [ 1.666124] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Selected panel type (fallback): 0
> [ 1.666235] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] DRRS supported mode is seamless
> [ 1.666346] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Found panel mode in BIOS VBT legacy lfp table: "640x480": 63 25180 640 648 744 784 480 482 484 509 0x8 0xa
> [ 1.666454] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel manufacturer name: @H@, product code: 0, serial number: 0, year of manufacture: 1990
> [ 1.666560] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Panel name: LFP_PanelName
> [ 1.666665] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] Seamless DRRS min refresh rate: 0 Hz
> [ 1.666757] i915 0000:00:02.0: [drm:intel_bios_init_panel [i915]] VBT backlight PWM modulation frequency 200 Hz, active high, min brightness 0, level 255, controller 0
> [ 1.666847] i915 0000:00:02.0: [drm:intel_panel_add_edid_fixed_modes [i915]] [CONNECTOR:502:eDP-1] using preferred EDID fixed mode: "2880x1800": 60 709633 2880 2888 2920 3080 1800 3800 3816 3840 0x48 0xa
> [ 1.666931] i915 0000:00:02.0: [drm:intel_panel_add_edid_fixed_modes [i915]] [CONNECTOR:502:eDP-1] using alternate EDID fixed mode: "2880x1800": 120 709633 2880 2888 2920 3080 1800 1880 1896 1920 0x40 0xa
> [ 1.667117] mmc0: SDHCI controller on PCI [0000:58:00.0] using ADMA
> [ 1.667206] i915 0000:00:02.0: [drm:drm_dp_dpcd_read [drm_display_helper]] AUX A/DDI A/PHY A: 0x007a4 AUX -> (ret= 1) 00
> [ 1.667223] i915 0000:00:02.0: [drm:intel_dp_aux_init_backlight_funcs [i915]] [CONNECTOR:502:eDP-1] AUX Luminance Based Backlight Control Supported!
> [ 1.667335] i915 0000:00:02.0: [drm:intel_dp_aux_init_backlight_funcs [i915]] [CONNECTOR:502:eDP-1] Using VESA eDP backlight controls
> [ 1.667413] i915 0000:00:02.0: [drm:intel_panel_init [i915]] [CONNECTOR:502:eDP-1] DRRS type: none
>
> VBT here says use level 255 would it be okay if we set that to level as VBT level, if no value is returned from DPCD panel.
>
> Regards,
> Suraj Kandpal
>
>> > Can we proceed with getting this merged ? Would really help the user.
>>
>> The real problem with quick fixes to help the user is that they have the
>> potential to make it a lot harder for a lot more users and developers in the long
>> run.
>>
>>
>> BR,
>> Jani.
>>
>> >
>> > Regards,
>> > Suraj Kandpal
>> >
>> >>
>> >> BR,
>> >> Jani.
>> >>
>> >> >
>> >> > Regards,
>> >> > Suraj Kandpal
>> >> >
>> >> >> > drm_dbg_kms(display->drm,
>> >> >> > "[CONNECTOR:%d:%s] AUX VESA Nits
>> backlight level
>> >> >> is controlled through DPCD\n",
>> >> >> > connector->base.base.id, connector-
>> >base.name);
>> >> >> @@ -573,6
>> >> >> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
>> >> >> intel_connector *connector,
>> >> >> > if (current_mode ==
>> >> >> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
>> >> >> > panel->backlight.level = current_level;
>> >> >> > panel->backlight.enabled = panel-
>> >backlight.level != 0;
>> >> >> > + if (!panel->backlight.level)
>> >> >> > + panel->backlight.level = panel-
>> >backlight.max;
>> >> >>
>> >> >> Ditto.
>> >> >>
>> >> >> > } else {
>> >> >> > panel->backlight.level = panel->backlight.max;
>> >> >> > panel->backlight.enabled = false;
>> >> >>
>> >> >> --
>> >> >> Jani Nikula, Intel
>> >>
>> >> --
>> >> Jani Nikula, Intel
>>
>> --
>> Jani Nikula, Intel
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread
* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-03-02 10:28 ` Jani Nikula
2026-03-02 11:04 ` Kandpal, Suraj
@ 2026-03-04 5:49 ` Kandpal, Suraj
2026-03-04 12:06 ` Jani Nikula
1 sibling, 1 reply; 20+ messages in thread
From: Kandpal, Suraj @ 2026-03-04 5:49 UTC (permalink / raw)
To: Jani Nikula, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for
> VESA AUX backlight init
>
> On Mon, 02 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> Subject: RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max
> >> brightness for VESA AUX backlight init
> >>
> >> On Wed, 25 Feb 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> >> >> Subject: Re: [PATCH v3 1/8] drm/i915/backlight: Use default/max
> >> >> brightness for VESA AUX backlight init
> >> >>
> >> >> On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> >> >> > If the brightness fetched from VBT/previous state is 0 on
> >> >> > backlight initialization, then set the brightness to a default/max value.
> >> >> > Whenever the minimum brightness is reported as 0 there are
> >> >> > chances we end up with blank screen. This confuses the user into
> >> >> > thinking the display is acting weird. This occurs in eDP 1.5
> >> >> > when we are using PANEL_LUMINANCE_OVERRIDE mode to mainpulate
> >> >> > brightness via luminance values.
> >> >> >
> >> >> > Closes:
> >> >> > https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
> >> >> > Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> >> >> > Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
> >> >> > ---
> >> >> > v1 -> v2:
> >> >> > - Let users set brightness to 0, make it so that it's just not
> >> >> > done by default (Arun)
> >> >> >
> >> >> > v2 -> v3:
> >> >> > -Update commit header and message (Arun)
> >> >> >
> >> >> > drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++++
> >> >> > 1 file changed, 4 insertions(+)
> >> >> >
> >> >> > diff --git
> >> >> > a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > index eb05ef4bd9f6..c40ce310ad97 100644
> >> >> > --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> >> >> > @@ -564,6 +564,8 @@ static int
> >> >> > intel_dp_aux_vesa_setup_backlight(struct
> >> >> intel_connector *connector,
> >> >> > }
> >> >> > panel->backlight.level =
> >> >> intel_dp_aux_vesa_get_backlight(connector, 0);
> >> >> > panel->backlight.enabled = panel->backlight.level != 0;
> >> >> > + if (!panel->backlight.level)
> >> >> > + panel->backlight.level = panel->backlight.max;
> >> >>
> >> >> How does this help when .enabled is still based on level != 0 above?
> >> >>
> >> >
> >> > Well we keep the backlight.enabled as false if we read a 0 back
> >> > from the DPCD
> >> or the current level state is 0.
> >> > This is to maintain the policy that if during setup we get 0 as
> >> > backlight value eDP backlight is currently disabled (which means
> >> > __intel_backlight_enable needs be called). We then change the
> >> > current level to max so that when backlight enable is called after
> >> > setup from
> >> intel_backlight_update, we enable backlight with max level so that we
> >> do not end up with a blank screen. This is also where we set
> backlight.enabled = true.
> >> > This is to tackle different eDP behavior where, some preserve the
> >> > last brightness value programmed in them (in that case users want
> >> > the same brightness to continue) while others don't and just 0 it
> >> > out instead of
> >> having some default value (in that case we keep backlight.enabled =
> >> false later to be made true during the __intel_backlight_enable call).
> >> > We face these scenarios in some compositors during the pass key
> >> > phase where the compositor is still totally not doing everything
> >> > and does not send
> >> us any explicit brightness value to set thinking eDP would have some
> >> basic default value of it's own . We end up getting a 0 from DPCD and
> >> we enable and set the backlight enable with 0 value which anyways
> >> later causes us to call backlight disable.
> >> > In this case during authentication in some compositors like Fedora
> >> > there are cases where we do not get a explicitly backlight value
> >> > till the user
> >> has to blindly enter their Passkey, after which the compositor sends
> >> us some sane value which we then program.
> >>
> >> There's a long history of problems with the PWM backlight
> >> unexpectedly going from 0 to max.
> >
> > Right but at least with this now luminance values will continue if
> > DPCD maintains its state if we get a value back, otherwise we set a Default
> value.
>
> What's the brightness control mode *before* we enable luminance control?
>
> When taking over, we should try to read the current brightness setting with the
> current brightness control method. If we're switching to luminance control, the
> existing luminance value is meaningless.
>
> AFAICT drm_edp_backlight_probe_state() uses bl->luminance_set to determine
> the value to read, not the current mode. At a glance, seems wrong to me.
>
> Of course, regressions have priority, so a revert should also be a consideration
> before quickly going for adding level = max in there.
>
I did some more digging and for aux_set enabled we really do not need to do get_backlight
And read register again that is filled in probe state and fills up the current_level variable that can be use.
Check drm_edp_backlight_probe_state.
I also found this little comment there
/*
* If we're not in DPCD control mode yet, the programmed brightness value is meaningless and
* the driver should assume max brightness
*/
return bl->max;
So this was a policy that was decided during VESA AUX Backlight implementation time. Also that Mode will not be DPCD
Initially and will change later during backlight enable so we get to assume max brightness . That should be okay to do with
Luminance_set case too then.
Regards,
Suraj Kandpal
> > Can we proceed with getting this merged ? Would really help the user.
>
> The real problem with quick fixes to help the user is that they have the
> potential to make it a lot harder for a lot more users and developers in the long
> run.
>
>
> BR,
> Jani.
>
> >
> > Regards,
> > Suraj Kandpal
> >
> >>
> >> BR,
> >> Jani.
> >>
> >> >
> >> > Regards,
> >> > Suraj Kandpal
> >> >
> >> >> > drm_dbg_kms(display->drm,
> >> >> > "[CONNECTOR:%d:%s] AUX VESA Nits
> backlight level
> >> >> is controlled through DPCD\n",
> >> >> > connector->base.base.id, connector-
> >base.name);
> >> >> @@ -573,6
> >> >> > +575,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct
> >> >> intel_connector *connector,
> >> >> > if (current_mode ==
> >> >> DP_EDP_BACKLIGHT_CONTROL_MODE_DPCD) {
> >> >> > panel->backlight.level = current_level;
> >> >> > panel->backlight.enabled = panel-
> >backlight.level != 0;
> >> >> > + if (!panel->backlight.level)
> >> >> > + panel->backlight.level = panel-
> >backlight.max;
> >> >>
> >> >> Ditto.
> >> >>
> >> >> > } else {
> >> >> > panel->backlight.level = panel->backlight.max;
> >> >> > panel->backlight.enabled = false;
> >> >>
> >> >> --
> >> >> Jani Nikula, Intel
> >>
> >> --
> >> Jani Nikula, Intel
>
> --
> Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread* RE: [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init
2026-03-04 5:49 ` Kandpal, Suraj
@ 2026-03-04 12:06 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2026-03-04 12:06 UTC (permalink / raw)
To: Kandpal, Suraj, intel-xe@lists.freedesktop.org,
intel-gfx@lists.freedesktop.org
Cc: Murthy, Arun R
On Wed, 04 Mar 2026, "Kandpal, Suraj" <suraj.kandpal@intel.com> wrote:
> I did some more digging and for aux_set enabled we really do not need to do get_backlight
> And read register again that is filled in probe state and fills up the current_level variable that can be use.
> Check drm_edp_backlight_probe_state.
> I also found this little comment there
>
> /*
> * If we're not in DPCD control mode yet, the programmed brightness value is meaningless and
> * the driver should assume max brightness
> */
> return bl->max;
>
> So this was a policy that was decided during VESA AUX Backlight implementation time. Also that Mode will not be DPCD
> Initially and will change later during backlight enable so we get to assume max brightness . That should be okay to do with
> Luminance_set case too then.
The comment says, if the panel is not in DPCD control mode, the value in
DPCD is meaningless.
Ditto, if the panel is not in luminance control mode (or whatever the
specific name for it is), the luminance value in DPCD is meaningless.
However, if the panel is in DPCD control mode but not in luminance
control mode, we should be able to read the non-luminance DPCD
brightness value and use that.
BR,
Jani.
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v3 2/8] drm/i915/backlight: Use intel_panel variable instead of intel_connector
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 3/8] drm/i915/backlight: Take luminance_set into account for VESA backlight Suraj Kandpal
` (6 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
Use the intel_panel variable since it has already been declared and
looks cleaner.
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index c40ce310ad97..05d6d033f60b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -459,7 +459,7 @@ static u32 intel_dp_aux_vesa_get_backlight(struct intel_connector *connector, en
return val / 1000;
}
- return connector->panel.backlight.level;
+ return panel->backlight.level;
}
static void
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 3/8] drm/i915/backlight: Take luminance_set into account for VESA backlight
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 1/8] drm/i915/backlight: Use default/max brightness for VESA AUX backlight init Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 2/8] drm/i915/backlight: Use intel_panel variable instead of intel_connector Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 4/8] drm/i915/backlight: Check luminance_set when disabling PWM via AUX " Suraj Kandpal
` (5 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
When deciding what functions to enable to help control backlight we
used to only check aux_enable. Now with PANEL_LUMINANCE_OVERRIDE in
picture we need to take care that we do not enable PWM function if
luminance_set is set.
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index 05d6d033f60b..cb39696491a1 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -486,7 +486,8 @@ intel_dp_aux_vesa_enable_backlight(const struct intel_crtc_state *crtc_state,
struct intel_panel *panel = &connector->panel;
struct intel_dp *intel_dp = enc_to_intel_dp(connector->encoder);
- if (!panel->backlight.edp.vesa.info.aux_enable) {
+ if (!(panel->backlight.edp.vesa.info.aux_enable ||
+ panel->backlight.edp.vesa.info.luminance_set)) {
u32 pwm_level;
if (!panel->backlight.edp.vesa.info.aux_set)
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 4/8] drm/i915/backlight: Check luminance_set when disabling PWM via AUX VESA backlight
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
` (2 preceding siblings ...)
2026-02-24 3:45 ` [PATCH v3 3/8] drm/i915/backlight: Take luminance_set into account for VESA backlight Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 5/8] drm/i915/backlight: Short circuit intel_dp_aux_supports_hdr_backlight Suraj Kandpal
` (4 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
When deciding what if PWM funcs need to be disabled take into account
luminance_set too. We do this since it is also used to decide if
we are enabling PWM backlight funcs or not.
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/15671
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index cb39696491a1..a921bb4ccacf 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -511,7 +511,8 @@ static void intel_dp_aux_vesa_disable_backlight(const struct drm_connector_state
drm_edp_backlight_disable(&intel_dp->aux, &panel->backlight.edp.vesa.info);
- if (!panel->backlight.edp.vesa.info.aux_enable)
+ if (!(panel->backlight.edp.vesa.info.aux_enable ||
+ panel->backlight.edp.vesa.info.luminance_set))
panel->backlight.pwm_funcs->disable(old_conn_state,
intel_backlight_invert_pwm_level(connector, 0));
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 5/8] drm/i915/backlight: Short circuit intel_dp_aux_supports_hdr_backlight
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
` (3 preceding siblings ...)
2026-02-24 3:45 ` [PATCH v3 4/8] drm/i915/backlight: Check luminance_set when disabling PWM via AUX " Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 6/8] drm/i915/backlight: Update debug log during backlight setup Suraj Kandpal
` (3 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
intel_dp_aux_supports_hdr_backlight() prints debug message for
intel HDR backlight version. This is fine when dealing with eDP 1.4b
and lower. When we are talking about eDP 1.5 it causes confusion in
logs since we need to use VESA AUX backlight functions but this
print causes confusion as to which path code take.
Short circuit this function with a eDP version check. Make sure this
is only called if eDP <= 1.4b
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index a921bb4ccacf..c7143869bafd 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -701,8 +701,8 @@ int intel_dp_aux_init_backlight_funcs(struct intel_connector *connector)
* backlight interface at all. This means that the only sensible way for us to detect both
* interfaces is to probe for Intel's first, and VESA's second.
*/
- if (try_intel_interface && intel_dp_aux_supports_hdr_backlight(connector) &&
- intel_dp->edp_dpcd[0] <= DP_EDP_14b) {
+ if (try_intel_interface && intel_dp->edp_dpcd[0] <= DP_EDP_14b &&
+ intel_dp_aux_supports_hdr_backlight(connector)) {
drm_dbg_kms(dev, "[CONNECTOR:%d:%s] Using Intel proprietary eDP backlight controls\n",
connector->base.base.id, connector->base.name);
panel->backlight.funcs = &intel_dp_hdr_bl_funcs;
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 6/8] drm/i915/backlight: Update debug log during backlight setup
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
` (4 preceding siblings ...)
2026-02-24 3:45 ` [PATCH v3 5/8] drm/i915/backlight: Short circuit intel_dp_aux_supports_hdr_backlight Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 7/8] drm/i915/backlight: Provide clear description on how backlight level is controlled Suraj Kandpal
` (2 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
With luminance_set which represents PANEL_LUMINANCE_OVERRIDE, we
have another variable to decide if we use PWM or DPCD.
Make drm_dbg_kms log represent that.
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
v1 -> v3:
- Make commit message simpler (Arun/Nemesa)
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index c7143869bafd..043c9aef2ea6 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -539,7 +539,8 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
drm_dbg_kms(display->drm,
"[CONNECTOR:%d:%s] AUX VESA backlight enable is controlled through %s\n",
connector->base.base.id, connector->base.name,
- dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable));
+ dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable ||
+ panel->backlight.edp.vesa.info.luminance_set));
drm_dbg_kms(display->drm,
"[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n",
connector->base.base.id, connector->base.name,
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 7/8] drm/i915/backlight: Provide clear description on how backlight level is controlled
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
` (5 preceding siblings ...)
2026-02-24 3:45 ` [PATCH v3 6/8] drm/i915/backlight: Update debug log during backlight setup Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 3:45 ` [PATCH v3 8/8] drm/i915/backlight: Use default/max brightness for INTEL AUX HDR backlight init Suraj Kandpal
2026-02-24 3:54 ` ✓ CI.KUnit: success for Fixes and updates when using AUX backlight using Luminance (rev3) Patchwork
8 siblings, 0 replies; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
Currently it takes us multiple log prints to arrive at the conclusion
on how we are actually controlling backlight level. Make the logging
concise.
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
.../drm/i915/display/intel_dp_aux_backlight.c | 19 ++++++++++++++-----
1 file changed, 14 insertions(+), 5 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index 043c9aef2ea6..aac6cdb5b69b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -368,6 +368,16 @@ static const char *dpcd_vs_pwm_str(bool aux)
return aux ? "DPCD" : "PWM";
}
+static const char *backlight_unit_str(struct intel_panel *panel)
+{
+ if (panel->backlight.edp.vesa.info.luminance_set)
+ return "NITS";
+ else if (panel->backlight.edp.vesa.info.aux_set)
+ return "Brightness %";
+ else
+ return "PWM";
+}
+
static void
intel_dp_aux_write_panel_luminance_override(struct intel_connector *connector)
{
@@ -542,9 +552,11 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_enable ||
panel->backlight.edp.vesa.info.luminance_set));
drm_dbg_kms(display->drm,
- "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s\n",
+ "[CONNECTOR:%d:%s] AUX VESA backlight level is controlled through %s using %s values\n",
connector->base.base.id, connector->base.name,
- dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_set));
+ dpcd_vs_pwm_str(panel->backlight.edp.vesa.info.aux_set ||
+ panel->backlight.edp.vesa.info.luminance_set),
+ backlight_unit_str(panel));
if (!panel->backlight.edp.vesa.info.aux_set ||
!panel->backlight.edp.vesa.info.aux_enable) {
@@ -569,9 +581,6 @@ static int intel_dp_aux_vesa_setup_backlight(struct intel_connector *connector,
panel->backlight.enabled = panel->backlight.level != 0;
if (!panel->backlight.level)
panel->backlight.level = panel->backlight.max;
- drm_dbg_kms(display->drm,
- "[CONNECTOR:%d:%s] AUX VESA Nits backlight level is controlled through DPCD\n",
- connector->base.base.id, connector->base.name);
} else if (panel->backlight.edp.vesa.info.aux_set) {
panel->backlight.max = panel->backlight.edp.vesa.info.max;
panel->backlight.min = 0;
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* [PATCH v3 8/8] drm/i915/backlight: Use default/max brightness for INTEL AUX HDR backlight init
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
` (6 preceding siblings ...)
2026-02-24 3:45 ` [PATCH v3 7/8] drm/i915/backlight: Provide clear description on how backlight level is controlled Suraj Kandpal
@ 2026-02-24 3:45 ` Suraj Kandpal
2026-02-24 12:32 ` Jani Nikula
2026-02-24 3:54 ` ✓ CI.KUnit: success for Fixes and updates when using AUX backlight using Luminance (rev3) Patchwork
8 siblings, 1 reply; 20+ messages in thread
From: Suraj Kandpal @ 2026-02-24 3:45 UTC (permalink / raw)
To: intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
If the brightness fetched from VBT/previous state is 0 on backlight
initialization, then set the brightness to a default/max value.
Whenever the minimum brightness is reported as 0 there are chances
we maybe sometimes end up with blank screen. This confuses the user
into thinking the display is acting weird. This occurs in eDP 1.4b
when we use proprietary INTEL AUX HDR DPCD registers to manipulate
brightness via luminance values.
Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
---
v1 -> v2:
- Let users set brightness to 0, make it so that it's just not
done by default (Arun)
v1 -> v2:
- Update commit header & message (Arun)
drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
index aac6cdb5b69b..725370bcfa3b 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
@@ -442,6 +442,8 @@ intel_dp_aux_hdr_setup_backlight(struct intel_connector *connector, enum pipe pi
panel->backlight.level = intel_dp_aux_hdr_get_backlight(connector, pipe);
panel->backlight.enabled = panel->backlight.level != 0;
+ if (!panel->backlight.level)
+ panel->backlight.level = panel->backlight.max;
return 0;
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread* Re: [PATCH v3 8/8] drm/i915/backlight: Use default/max brightness for INTEL AUX HDR backlight init
2026-02-24 3:45 ` [PATCH v3 8/8] drm/i915/backlight: Use default/max brightness for INTEL AUX HDR backlight init Suraj Kandpal
@ 2026-02-24 12:32 ` Jani Nikula
0 siblings, 0 replies; 20+ messages in thread
From: Jani Nikula @ 2026-02-24 12:32 UTC (permalink / raw)
To: Suraj Kandpal, intel-xe, intel-gfx; +Cc: arun.r.murthy, Suraj Kandpal
On Tue, 24 Feb 2026, Suraj Kandpal <suraj.kandpal@intel.com> wrote:
> If the brightness fetched from VBT/previous state is 0 on backlight
> initialization, then set the brightness to a default/max value.
> Whenever the minimum brightness is reported as 0 there are chances
> we maybe sometimes end up with blank screen. This confuses the user
> into thinking the display is acting weird. This occurs in eDP 1.4b
> when we use proprietary INTEL AUX HDR DPCD registers to manipulate
> brightness via luminance values.
>
> Signed-off-by: Suraj Kandpal <suraj.kandpal@intel.com>
> Reviewed-by: Arun R Murthy <arun.r.murthy@intel.com>
> ---
> v1 -> v2:
> - Let users set brightness to 0, make it so that it's just not
> done by default (Arun)
>
> v1 -> v2:
> - Update commit header & message (Arun)
>
> drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> index aac6cdb5b69b..725370bcfa3b 100644
> --- a/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> +++ b/drivers/gpu/drm/i915/display/intel_dp_aux_backlight.c
> @@ -442,6 +442,8 @@ intel_dp_aux_hdr_setup_backlight(struct intel_connector *connector, enum pipe pi
>
> panel->backlight.level = intel_dp_aux_hdr_get_backlight(connector, pipe);
> panel->backlight.enabled = panel->backlight.level != 0;
> + if (!panel->backlight.level)
> + panel->backlight.level = panel->backlight.max;
Same here, .enabled is still based on level != 0 above.
>
> return 0;
> }
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 20+ messages in thread
* ✓ CI.KUnit: success for Fixes and updates when using AUX backlight using Luminance (rev3)
2026-02-24 3:45 [PATCH v3 0/8] Fixes and updates when using AUX backlight using Luminance Suraj Kandpal
` (7 preceding siblings ...)
2026-02-24 3:45 ` [PATCH v3 8/8] drm/i915/backlight: Use default/max brightness for INTEL AUX HDR backlight init Suraj Kandpal
@ 2026-02-24 3:54 ` Patchwork
8 siblings, 0 replies; 20+ messages in thread
From: Patchwork @ 2026-02-24 3:54 UTC (permalink / raw)
To: Suraj Kandpal; +Cc: intel-xe
== Series Details ==
Series: Fixes and updates when using AUX backlight using Luminance (rev3)
URL : https://patchwork.freedesktop.org/series/161579/
State : success
== Summary ==
+ trap cleanup EXIT
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/xe/.kunitconfig
[03:53:04] Configuring KUnit Kernel ...
Generating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[03:53:08] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[03:53:38] Starting KUnit Kernel (1/1)...
[03:53:38] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[03:53:39] ================== guc_buf (11 subtests) ===================
[03:53:39] [PASSED] test_smallest
[03:53:39] [PASSED] test_largest
[03:53:39] [PASSED] test_granular
[03:53:39] [PASSED] test_unique
[03:53:39] [PASSED] test_overlap
[03:53:39] [PASSED] test_reusable
[03:53:39] [PASSED] test_too_big
[03:53:39] [PASSED] test_flush
[03:53:39] [PASSED] test_lookup
[03:53:39] [PASSED] test_data
[03:53:39] [PASSED] test_class
[03:53:39] ===================== [PASSED] guc_buf =====================
[03:53:39] =================== guc_dbm (7 subtests) ===================
[03:53:39] [PASSED] test_empty
[03:53:39] [PASSED] test_default
[03:53:39] ======================== test_size ========================
[03:53:39] [PASSED] 4
[03:53:39] [PASSED] 8
[03:53:39] [PASSED] 32
[03:53:39] [PASSED] 256
[03:53:39] ==================== [PASSED] test_size ====================
[03:53:39] ======================= test_reuse ========================
[03:53:39] [PASSED] 4
[03:53:39] [PASSED] 8
[03:53:39] [PASSED] 32
[03:53:39] [PASSED] 256
[03:53:39] =================== [PASSED] test_reuse ====================
[03:53:39] =================== test_range_overlap ====================
[03:53:39] [PASSED] 4
[03:53:39] [PASSED] 8
[03:53:39] [PASSED] 32
[03:53:39] [PASSED] 256
[03:53:39] =============== [PASSED] test_range_overlap ================
[03:53:39] =================== test_range_compact ====================
[03:53:39] [PASSED] 4
[03:53:39] [PASSED] 8
[03:53:39] [PASSED] 32
[03:53:39] [PASSED] 256
[03:53:39] =============== [PASSED] test_range_compact ================
[03:53:39] ==================== test_range_spare =====================
[03:53:39] [PASSED] 4
[03:53:39] [PASSED] 8
[03:53:39] [PASSED] 32
[03:53:39] [PASSED] 256
[03:53:39] ================ [PASSED] test_range_spare =================
[03:53:39] ===================== [PASSED] guc_dbm =====================
[03:53:39] =================== guc_idm (6 subtests) ===================
[03:53:39] [PASSED] bad_init
[03:53:39] [PASSED] no_init
[03:53:39] [PASSED] init_fini
[03:53:39] [PASSED] check_used
[03:53:39] [PASSED] check_quota
[03:53:39] [PASSED] check_all
[03:53:39] ===================== [PASSED] guc_idm =====================
[03:53:39] ================== no_relay (3 subtests) ===================
[03:53:39] [PASSED] xe_drops_guc2pf_if_not_ready
[03:53:39] [PASSED] xe_drops_guc2vf_if_not_ready
[03:53:39] [PASSED] xe_rejects_send_if_not_ready
[03:53:39] ==================== [PASSED] no_relay =====================
[03:53:39] ================== pf_relay (14 subtests) ==================
[03:53:39] [PASSED] pf_rejects_guc2pf_too_short
[03:53:39] [PASSED] pf_rejects_guc2pf_too_long
[03:53:39] [PASSED] pf_rejects_guc2pf_no_payload
[03:53:39] [PASSED] pf_fails_no_payload
[03:53:39] [PASSED] pf_fails_bad_origin
[03:53:39] [PASSED] pf_fails_bad_type
[03:53:39] [PASSED] pf_txn_reports_error
[03:53:39] [PASSED] pf_txn_sends_pf2guc
[03:53:39] [PASSED] pf_sends_pf2guc
[03:53:39] [SKIPPED] pf_loopback_nop
[03:53:39] [SKIPPED] pf_loopback_echo
[03:53:39] [SKIPPED] pf_loopback_fail
[03:53:39] [SKIPPED] pf_loopback_busy
[03:53:39] [SKIPPED] pf_loopback_retry
[03:53:39] ==================== [PASSED] pf_relay =====================
[03:53:39] ================== vf_relay (3 subtests) ===================
[03:53:39] [PASSED] vf_rejects_guc2vf_too_short
[03:53:39] [PASSED] vf_rejects_guc2vf_too_long
[03:53:39] [PASSED] vf_rejects_guc2vf_no_payload
[03:53:39] ==================== [PASSED] vf_relay =====================
[03:53:39] ================ pf_gt_config (9 subtests) =================
[03:53:39] [PASSED] fair_contexts_1vf
[03:53:39] [PASSED] fair_doorbells_1vf
[03:53:39] [PASSED] fair_ggtt_1vf
[03:53:39] ====================== fair_vram_1vf ======================
[03:53:39] [PASSED] 3.50 GiB
[03:53:39] [PASSED] 11.5 GiB
[03:53:39] [PASSED] 15.5 GiB
[03:53:39] [PASSED] 31.5 GiB
[03:53:39] [PASSED] 63.5 GiB
[03:53:39] [PASSED] 13.9 GiB
[03:53:39] ================== [PASSED] fair_vram_1vf ==================
[03:53:39] ================ fair_vram_1vf_admin_only =================
[03:53:39] [PASSED] 3.50 GiB
[03:53:39] [PASSED] 11.5 GiB
[03:53:39] [PASSED] 15.5 GiB
[03:53:39] [PASSED] 31.5 GiB
[03:53:39] [PASSED] 63.5 GiB
[03:53:39] [PASSED] 13.9 GiB
[03:53:39] ============ [PASSED] fair_vram_1vf_admin_only =============
[03:53:39] ====================== fair_contexts ======================
[03:53:39] [PASSED] 1 VF
[03:53:39] [PASSED] 2 VFs
[03:53:39] [PASSED] 3 VFs
[03:53:39] [PASSED] 4 VFs
[03:53:39] [PASSED] 5 VFs
[03:53:39] [PASSED] 6 VFs
[03:53:39] [PASSED] 7 VFs
[03:53:39] [PASSED] 8 VFs
[03:53:39] [PASSED] 9 VFs
[03:53:39] [PASSED] 10 VFs
[03:53:39] [PASSED] 11 VFs
[03:53:39] [PASSED] 12 VFs
[03:53:39] [PASSED] 13 VFs
[03:53:39] [PASSED] 14 VFs
[03:53:39] [PASSED] 15 VFs
[03:53:39] [PASSED] 16 VFs
[03:53:39] [PASSED] 17 VFs
[03:53:39] [PASSED] 18 VFs
[03:53:39] [PASSED] 19 VFs
[03:53:39] [PASSED] 20 VFs
[03:53:39] [PASSED] 21 VFs
[03:53:39] [PASSED] 22 VFs
[03:53:39] [PASSED] 23 VFs
[03:53:39] [PASSED] 24 VFs
[03:53:39] [PASSED] 25 VFs
[03:53:39] [PASSED] 26 VFs
[03:53:39] [PASSED] 27 VFs
[03:53:39] [PASSED] 28 VFs
[03:53:39] [PASSED] 29 VFs
[03:53:39] [PASSED] 30 VFs
[03:53:39] [PASSED] 31 VFs
[03:53:39] [PASSED] 32 VFs
[03:53:39] [PASSED] 33 VFs
[03:53:39] [PASSED] 34 VFs
[03:53:39] [PASSED] 35 VFs
[03:53:39] [PASSED] 36 VFs
[03:53:39] [PASSED] 37 VFs
[03:53:39] [PASSED] 38 VFs
[03:53:39] [PASSED] 39 VFs
[03:53:39] [PASSED] 40 VFs
[03:53:39] [PASSED] 41 VFs
[03:53:39] [PASSED] 42 VFs
[03:53:39] [PASSED] 43 VFs
[03:53:39] [PASSED] 44 VFs
[03:53:39] [PASSED] 45 VFs
[03:53:39] [PASSED] 46 VFs
[03:53:39] [PASSED] 47 VFs
[03:53:39] [PASSED] 48 VFs
[03:53:39] [PASSED] 49 VFs
[03:53:39] [PASSED] 50 VFs
[03:53:39] [PASSED] 51 VFs
[03:53:39] [PASSED] 52 VFs
[03:53:39] [PASSED] 53 VFs
[03:53:39] [PASSED] 54 VFs
[03:53:39] [PASSED] 55 VFs
[03:53:39] [PASSED] 56 VFs
[03:53:39] [PASSED] 57 VFs
[03:53:39] [PASSED] 58 VFs
[03:53:39] [PASSED] 59 VFs
[03:53:39] [PASSED] 60 VFs
[03:53:39] [PASSED] 61 VFs
[03:53:39] [PASSED] 62 VFs
[03:53:39] [PASSED] 63 VFs
[03:53:39] ================== [PASSED] fair_contexts ==================
[03:53:39] ===================== fair_doorbells ======================
[03:53:39] [PASSED] 1 VF
[03:53:39] [PASSED] 2 VFs
[03:53:39] [PASSED] 3 VFs
[03:53:39] [PASSED] 4 VFs
[03:53:39] [PASSED] 5 VFs
[03:53:39] [PASSED] 6 VFs
[03:53:39] [PASSED] 7 VFs
[03:53:39] [PASSED] 8 VFs
[03:53:39] [PASSED] 9 VFs
[03:53:39] [PASSED] 10 VFs
[03:53:39] [PASSED] 11 VFs
[03:53:39] [PASSED] 12 VFs
[03:53:39] [PASSED] 13 VFs
[03:53:39] [PASSED] 14 VFs
[03:53:39] [PASSED] 15 VFs
[03:53:39] [PASSED] 16 VFs
[03:53:39] [PASSED] 17 VFs
[03:53:39] [PASSED] 18 VFs
[03:53:39] [PASSED] 19 VFs
[03:53:39] [PASSED] 20 VFs
[03:53:39] [PASSED] 21 VFs
[03:53:39] [PASSED] 22 VFs
[03:53:39] [PASSED] 23 VFs
[03:53:39] [PASSED] 24 VFs
[03:53:39] [PASSED] 25 VFs
[03:53:39] [PASSED] 26 VFs
[03:53:39] [PASSED] 27 VFs
[03:53:39] [PASSED] 28 VFs
[03:53:39] [PASSED] 29 VFs
[03:53:39] [PASSED] 30 VFs
[03:53:39] [PASSED] 31 VFs
[03:53:39] [PASSED] 32 VFs
[03:53:39] [PASSED] 33 VFs
[03:53:39] [PASSED] 34 VFs
[03:53:39] [PASSED] 35 VFs
[03:53:39] [PASSED] 36 VFs
[03:53:39] [PASSED] 37 VFs
[03:53:39] [PASSED] 38 VFs
[03:53:39] [PASSED] 39 VFs
[03:53:39] [PASSED] 40 VFs
[03:53:39] [PASSED] 41 VFs
[03:53:39] [PASSED] 42 VFs
[03:53:39] [PASSED] 43 VFs
[03:53:39] [PASSED] 44 VFs
[03:53:39] [PASSED] 45 VFs
[03:53:39] [PASSED] 46 VFs
[03:53:39] [PASSED] 47 VFs
[03:53:39] [PASSED] 48 VFs
[03:53:39] [PASSED] 49 VFs
[03:53:39] [PASSED] 50 VFs
[03:53:39] [PASSED] 51 VFs
[03:53:39] [PASSED] 52 VFs
[03:53:39] [PASSED] 53 VFs
[03:53:39] [PASSED] 54 VFs
[03:53:39] [PASSED] 55 VFs
[03:53:39] [PASSED] 56 VFs
[03:53:39] [PASSED] 57 VFs
[03:53:39] [PASSED] 58 VFs
[03:53:39] [PASSED] 59 VFs
[03:53:39] [PASSED] 60 VFs
[03:53:39] [PASSED] 61 VFs
[03:53:39] [PASSED] 62 VFs
[03:53:39] [PASSED] 63 VFs
[03:53:39] ================= [PASSED] fair_doorbells ==================
[03:53:39] ======================== fair_ggtt ========================
[03:53:39] [PASSED] 1 VF
[03:53:39] [PASSED] 2 VFs
[03:53:39] [PASSED] 3 VFs
[03:53:39] [PASSED] 4 VFs
[03:53:39] [PASSED] 5 VFs
[03:53:39] [PASSED] 6 VFs
[03:53:39] [PASSED] 7 VFs
[03:53:39] [PASSED] 8 VFs
[03:53:39] [PASSED] 9 VFs
[03:53:39] [PASSED] 10 VFs
[03:53:39] [PASSED] 11 VFs
[03:53:39] [PASSED] 12 VFs
[03:53:39] [PASSED] 13 VFs
[03:53:39] [PASSED] 14 VFs
[03:53:39] [PASSED] 15 VFs
[03:53:39] [PASSED] 16 VFs
[03:53:39] [PASSED] 17 VFs
[03:53:39] [PASSED] 18 VFs
[03:53:39] [PASSED] 19 VFs
[03:53:39] [PASSED] 20 VFs
[03:53:39] [PASSED] 21 VFs
[03:53:39] [PASSED] 22 VFs
[03:53:39] [PASSED] 23 VFs
[03:53:39] [PASSED] 24 VFs
[03:53:39] [PASSED] 25 VFs
[03:53:39] [PASSED] 26 VFs
[03:53:39] [PASSED] 27 VFs
[03:53:39] [PASSED] 28 VFs
[03:53:39] [PASSED] 29 VFs
[03:53:39] [PASSED] 30 VFs
[03:53:39] [PASSED] 31 VFs
[03:53:39] [PASSED] 32 VFs
[03:53:39] [PASSED] 33 VFs
[03:53:39] [PASSED] 34 VFs
[03:53:39] [PASSED] 35 VFs
[03:53:39] [PASSED] 36 VFs
[03:53:39] [PASSED] 37 VFs
[03:53:39] [PASSED] 38 VFs
[03:53:39] [PASSED] 39 VFs
[03:53:39] [PASSED] 40 VFs
[03:53:39] [PASSED] 41 VFs
[03:53:39] [PASSED] 42 VFs
[03:53:39] [PASSED] 43 VFs
[03:53:39] [PASSED] 44 VFs
[03:53:39] [PASSED] 45 VFs
[03:53:39] [PASSED] 46 VFs
[03:53:39] [PASSED] 47 VFs
[03:53:39] [PASSED] 48 VFs
[03:53:39] [PASSED] 49 VFs
[03:53:39] [PASSED] 50 VFs
[03:53:39] [PASSED] 51 VFs
[03:53:39] [PASSED] 52 VFs
[03:53:39] [PASSED] 53 VFs
[03:53:39] [PASSED] 54 VFs
[03:53:39] [PASSED] 55 VFs
[03:53:39] [PASSED] 56 VFs
[03:53:39] [PASSED] 57 VFs
[03:53:39] [PASSED] 58 VFs
[03:53:39] [PASSED] 59 VFs
[03:53:39] [PASSED] 60 VFs
[03:53:39] [PASSED] 61 VFs
[03:53:39] [PASSED] 62 VFs
[03:53:39] [PASSED] 63 VFs
[03:53:39] ==================== [PASSED] fair_ggtt ====================
[03:53:39] ======================== fair_vram ========================
[03:53:39] [PASSED] 1 VF
[03:53:39] [PASSED] 2 VFs
[03:53:39] [PASSED] 3 VFs
[03:53:39] [PASSED] 4 VFs
[03:53:39] [PASSED] 5 VFs
[03:53:39] [PASSED] 6 VFs
[03:53:39] [PASSED] 7 VFs
[03:53:39] [PASSED] 8 VFs
[03:53:39] [PASSED] 9 VFs
[03:53:39] [PASSED] 10 VFs
[03:53:39] [PASSED] 11 VFs
[03:53:39] [PASSED] 12 VFs
[03:53:39] [PASSED] 13 VFs
[03:53:39] [PASSED] 14 VFs
[03:53:39] [PASSED] 15 VFs
[03:53:39] [PASSED] 16 VFs
[03:53:39] [PASSED] 17 VFs
[03:53:39] [PASSED] 18 VFs
[03:53:39] [PASSED] 19 VFs
[03:53:39] [PASSED] 20 VFs
[03:53:39] [PASSED] 21 VFs
[03:53:39] [PASSED] 22 VFs
[03:53:39] [PASSED] 23 VFs
[03:53:39] [PASSED] 24 VFs
[03:53:39] [PASSED] 25 VFs
[03:53:39] [PASSED] 26 VFs
[03:53:39] [PASSED] 27 VFs
[03:53:39] [PASSED] 28 VFs
[03:53:39] [PASSED] 29 VFs
[03:53:39] [PASSED] 30 VFs
[03:53:39] [PASSED] 31 VFs
[03:53:39] [PASSED] 32 VFs
[03:53:39] [PASSED] 33 VFs
[03:53:39] [PASSED] 34 VFs
[03:53:39] [PASSED] 35 VFs
[03:53:39] [PASSED] 36 VFs
[03:53:39] [PASSED] 37 VFs
[03:53:39] [PASSED] 38 VFs
[03:53:39] [PASSED] 39 VFs
[03:53:39] [PASSED] 40 VFs
[03:53:39] [PASSED] 41 VFs
[03:53:39] [PASSED] 42 VFs
[03:53:39] [PASSED] 43 VFs
[03:53:39] [PASSED] 44 VFs
[03:53:39] [PASSED] 45 VFs
[03:53:39] [PASSED] 46 VFs
[03:53:39] [PASSED] 47 VFs
[03:53:39] [PASSED] 48 VFs
[03:53:39] [PASSED] 49 VFs
[03:53:39] [PASSED] 50 VFs
[03:53:39] [PASSED] 51 VFs
[03:53:39] [PASSED] 52 VFs
[03:53:39] [PASSED] 53 VFs
[03:53:39] [PASSED] 54 VFs
[03:53:39] [PASSED] 55 VFs
[03:53:39] [PASSED] 56 VFs
[03:53:39] [PASSED] 57 VFs
[03:53:39] [PASSED] 58 VFs
[03:53:39] [PASSED] 59 VFs
[03:53:39] [PASSED] 60 VFs
[03:53:39] [PASSED] 61 VFs
[03:53:39] [PASSED] 62 VFs
[03:53:39] [PASSED] 63 VFs
[03:53:39] ==================== [PASSED] fair_vram ====================
[03:53:39] ================== [PASSED] pf_gt_config ===================
[03:53:39] ===================== lmtt (1 subtest) =====================
[03:53:39] ======================== test_ops =========================
[03:53:39] [PASSED] 2-level
[03:53:39] [PASSED] multi-level
[03:53:39] ==================== [PASSED] test_ops =====================
[03:53:39] ====================== [PASSED] lmtt =======================
[03:53:39] ================= pf_service (11 subtests) =================
[03:53:39] [PASSED] pf_negotiate_any
[03:53:39] [PASSED] pf_negotiate_base_match
[03:53:39] [PASSED] pf_negotiate_base_newer
[03:53:39] [PASSED] pf_negotiate_base_next
[03:53:39] [SKIPPED] pf_negotiate_base_older
[03:53:39] [PASSED] pf_negotiate_base_prev
[03:53:39] [PASSED] pf_negotiate_latest_match
[03:53:39] [PASSED] pf_negotiate_latest_newer
[03:53:39] [PASSED] pf_negotiate_latest_next
[03:53:39] [SKIPPED] pf_negotiate_latest_older
[03:53:39] [SKIPPED] pf_negotiate_latest_prev
[03:53:39] =================== [PASSED] pf_service ====================
[03:53:39] ================= xe_guc_g2g (2 subtests) ==================
[03:53:39] ============== xe_live_guc_g2g_kunit_default ==============
[03:53:39] ========= [SKIPPED] xe_live_guc_g2g_kunit_default ==========
[03:53:39] ============== xe_live_guc_g2g_kunit_allmem ===============
[03:53:39] ========== [SKIPPED] xe_live_guc_g2g_kunit_allmem ==========
[03:53:39] =================== [SKIPPED] xe_guc_g2g ===================
[03:53:39] =================== xe_mocs (2 subtests) ===================
[03:53:39] ================ xe_live_mocs_kernel_kunit ================
[03:53:39] =========== [SKIPPED] xe_live_mocs_kernel_kunit ============
[03:53:39] ================ xe_live_mocs_reset_kunit =================
[03:53:39] ============ [SKIPPED] xe_live_mocs_reset_kunit ============
[03:53:39] ==================== [SKIPPED] xe_mocs =====================
[03:53:39] ================= xe_migrate (2 subtests) ==================
[03:53:39] ================= xe_migrate_sanity_kunit =================
[03:53:39] ============ [SKIPPED] xe_migrate_sanity_kunit =============
[03:53:39] ================== xe_validate_ccs_kunit ==================
[03:53:39] ============= [SKIPPED] xe_validate_ccs_kunit ==============
[03:53:39] =================== [SKIPPED] xe_migrate ===================
[03:53:39] ================== xe_dma_buf (1 subtest) ==================
[03:53:39] ==================== xe_dma_buf_kunit =====================
[03:53:39] ================ [SKIPPED] xe_dma_buf_kunit ================
[03:53:39] =================== [SKIPPED] xe_dma_buf ===================
[03:53:39] ================= xe_bo_shrink (1 subtest) =================
[03:53:39] =================== xe_bo_shrink_kunit ====================
[03:53:39] =============== [SKIPPED] xe_bo_shrink_kunit ===============
[03:53:39] ================== [SKIPPED] xe_bo_shrink ==================
[03:53:39] ==================== xe_bo (2 subtests) ====================
[03:53:39] ================== xe_ccs_migrate_kunit ===================
[03:53:39] ============== [SKIPPED] xe_ccs_migrate_kunit ==============
[03:53:39] ==================== xe_bo_evict_kunit ====================
[03:53:39] =============== [SKIPPED] xe_bo_evict_kunit ================
[03:53:39] ===================== [SKIPPED] xe_bo ======================
[03:53:39] ==================== args (13 subtests) ====================
[03:53:39] [PASSED] count_args_test
[03:53:39] [PASSED] call_args_example
[03:53:39] [PASSED] call_args_test
[03:53:39] [PASSED] drop_first_arg_example
[03:53:39] [PASSED] drop_first_arg_test
[03:53:39] [PASSED] first_arg_example
[03:53:39] [PASSED] first_arg_test
[03:53:39] [PASSED] last_arg_example
[03:53:39] [PASSED] last_arg_test
[03:53:39] [PASSED] pick_arg_example
[03:53:39] [PASSED] if_args_example
[03:53:39] [PASSED] if_args_test
[03:53:39] [PASSED] sep_comma_example
[03:53:39] ====================== [PASSED] args =======================
[03:53:39] =================== xe_pci (3 subtests) ====================
[03:53:39] ==================== check_graphics_ip ====================
[03:53:39] [PASSED] 12.00 Xe_LP
[03:53:39] [PASSED] 12.10 Xe_LP+
[03:53:39] [PASSED] 12.55 Xe_HPG
[03:53:39] [PASSED] 12.60 Xe_HPC
[03:53:39] [PASSED] 12.70 Xe_LPG
[03:53:39] [PASSED] 12.71 Xe_LPG
[03:53:39] [PASSED] 12.74 Xe_LPG+
[03:53:39] [PASSED] 20.01 Xe2_HPG
[03:53:39] [PASSED] 20.02 Xe2_HPG
[03:53:39] [PASSED] 20.04 Xe2_LPG
[03:53:39] [PASSED] 30.00 Xe3_LPG
[03:53:39] [PASSED] 30.01 Xe3_LPG
[03:53:39] [PASSED] 30.03 Xe3_LPG
[03:53:39] [PASSED] 30.04 Xe3_LPG
[03:53:39] [PASSED] 30.05 Xe3_LPG
[03:53:39] [PASSED] 35.10 Xe3p_LPG
[03:53:39] [PASSED] 35.11 Xe3p_XPC
[03:53:39] ================ [PASSED] check_graphics_ip ================
[03:53:39] ===================== check_media_ip ======================
[03:53:39] [PASSED] 12.00 Xe_M
[03:53:39] [PASSED] 12.55 Xe_HPM
[03:53:39] [PASSED] 13.00 Xe_LPM+
[03:53:39] [PASSED] 13.01 Xe2_HPM
[03:53:39] [PASSED] 20.00 Xe2_LPM
[03:53:39] [PASSED] 30.00 Xe3_LPM
[03:53:39] [PASSED] 30.02 Xe3_LPM
[03:53:39] [PASSED] 35.00 Xe3p_LPM
[03:53:39] [PASSED] 35.03 Xe3p_HPM
[03:53:39] ================= [PASSED] check_media_ip ==================
[03:53:39] =================== check_platform_desc ===================
[03:53:39] [PASSED] 0x9A60 (TIGERLAKE)
[03:53:39] [PASSED] 0x9A68 (TIGERLAKE)
[03:53:39] [PASSED] 0x9A70 (TIGERLAKE)
[03:53:39] [PASSED] 0x9A40 (TIGERLAKE)
[03:53:39] [PASSED] 0x9A49 (TIGERLAKE)
[03:53:39] [PASSED] 0x9A59 (TIGERLAKE)
[03:53:39] [PASSED] 0x9A78 (TIGERLAKE)
[03:53:39] [PASSED] 0x9AC0 (TIGERLAKE)
[03:53:39] [PASSED] 0x9AC9 (TIGERLAKE)
[03:53:39] [PASSED] 0x9AD9 (TIGERLAKE)
[03:53:39] [PASSED] 0x9AF8 (TIGERLAKE)
[03:53:39] [PASSED] 0x4C80 (ROCKETLAKE)
[03:53:39] [PASSED] 0x4C8A (ROCKETLAKE)
[03:53:39] [PASSED] 0x4C8B (ROCKETLAKE)
[03:53:39] [PASSED] 0x4C8C (ROCKETLAKE)
[03:53:39] [PASSED] 0x4C90 (ROCKETLAKE)
[03:53:39] [PASSED] 0x4C9A (ROCKETLAKE)
[03:53:39] [PASSED] 0x4680 (ALDERLAKE_S)
[03:53:39] [PASSED] 0x4682 (ALDERLAKE_S)
[03:53:39] [PASSED] 0x4688 (ALDERLAKE_S)
[03:53:39] [PASSED] 0x468A (ALDERLAKE_S)
[03:53:39] [PASSED] 0x468B (ALDERLAKE_S)
[03:53:39] [PASSED] 0x4690 (ALDERLAKE_S)
[03:53:39] [PASSED] 0x4692 (ALDERLAKE_S)
[03:53:39] [PASSED] 0x4693 (ALDERLAKE_S)
[03:53:39] [PASSED] 0x46A0 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46A1 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46A2 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46A3 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46A6 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46A8 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46AA (ALDERLAKE_P)
[03:53:39] [PASSED] 0x462A (ALDERLAKE_P)
[03:53:39] [PASSED] 0x4626 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x4628 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46B0 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46B1 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46B2 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46B3 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46C0 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46C1 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46C2 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46C3 (ALDERLAKE_P)
[03:53:39] [PASSED] 0x46D0 (ALDERLAKE_N)
[03:53:39] [PASSED] 0x46D1 (ALDERLAKE_N)
[03:53:39] [PASSED] 0x46D2 (ALDERLAKE_N)
[03:53:39] [PASSED] 0x46D3 (ALDERLAKE_N)
[03:53:39] [PASSED] 0x46D4 (ALDERLAKE_N)
[03:53:39] [PASSED] 0xA721 (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7A1 (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7A9 (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7AC (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7AD (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA720 (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7A0 (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7A8 (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7AA (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA7AB (ALDERLAKE_P)
[03:53:39] [PASSED] 0xA780 (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA781 (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA782 (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA783 (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA788 (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA789 (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA78A (ALDERLAKE_S)
[03:53:39] [PASSED] 0xA78B (ALDERLAKE_S)
[03:53:39] [PASSED] 0x4905 (DG1)
[03:53:39] [PASSED] 0x4906 (DG1)
[03:53:39] [PASSED] 0x4907 (DG1)
[03:53:39] [PASSED] 0x4908 (DG1)
[03:53:39] [PASSED] 0x4909 (DG1)
[03:53:39] [PASSED] 0x56C0 (DG2)
[03:53:39] [PASSED] 0x56C2 (DG2)
[03:53:39] [PASSED] 0x56C1 (DG2)
[03:53:39] [PASSED] 0x7D51 (METEORLAKE)
[03:53:39] [PASSED] 0x7DD1 (METEORLAKE)
[03:53:39] [PASSED] 0x7D41 (METEORLAKE)
[03:53:39] [PASSED] 0x7D67 (METEORLAKE)
[03:53:39] [PASSED] 0xB640 (METEORLAKE)
[03:53:39] [PASSED] 0x56A0 (DG2)
[03:53:39] [PASSED] 0x56A1 (DG2)
[03:53:39] [PASSED] 0x56A2 (DG2)
[03:53:39] [PASSED] 0x56BE (DG2)
[03:53:39] [PASSED] 0x56BF (DG2)
[03:53:39] [PASSED] 0x5690 (DG2)
[03:53:39] [PASSED] 0x5691 (DG2)
[03:53:39] [PASSED] 0x5692 (DG2)
[03:53:39] [PASSED] 0x56A5 (DG2)
[03:53:39] [PASSED] 0x56A6 (DG2)
[03:53:39] [PASSED] 0x56B0 (DG2)
[03:53:39] [PASSED] 0x56B1 (DG2)
[03:53:39] [PASSED] 0x56BA (DG2)
[03:53:39] [PASSED] 0x56BB (DG2)
[03:53:39] [PASSED] 0x56BC (DG2)
[03:53:39] [PASSED] 0x56BD (DG2)
[03:53:39] [PASSED] 0x5693 (DG2)
[03:53:39] [PASSED] 0x5694 (DG2)
[03:53:39] [PASSED] 0x5695 (DG2)
[03:53:39] [PASSED] 0x56A3 (DG2)
[03:53:39] [PASSED] 0x56A4 (DG2)
[03:53:39] [PASSED] 0x56B2 (DG2)
[03:53:39] [PASSED] 0x56B3 (DG2)
[03:53:39] [PASSED] 0x5696 (DG2)
[03:53:39] [PASSED] 0x5697 (DG2)
[03:53:39] [PASSED] 0xB69 (PVC)
[03:53:39] [PASSED] 0xB6E (PVC)
[03:53:39] [PASSED] 0xBD4 (PVC)
[03:53:39] [PASSED] 0xBD5 (PVC)
[03:53:39] [PASSED] 0xBD6 (PVC)
[03:53:39] [PASSED] 0xBD7 (PVC)
[03:53:39] [PASSED] 0xBD8 (PVC)
[03:53:39] [PASSED] 0xBD9 (PVC)
[03:53:39] [PASSED] 0xBDA (PVC)
[03:53:39] [PASSED] 0xBDB (PVC)
[03:53:39] [PASSED] 0xBE0 (PVC)
[03:53:39] [PASSED] 0xBE1 (PVC)
[03:53:39] [PASSED] 0xBE5 (PVC)
[03:53:39] [PASSED] 0x7D40 (METEORLAKE)
[03:53:39] [PASSED] 0x7D45 (METEORLAKE)
[03:53:39] [PASSED] 0x7D55 (METEORLAKE)
[03:53:39] [PASSED] 0x7D60 (METEORLAKE)
[03:53:39] [PASSED] 0x7DD5 (METEORLAKE)
[03:53:39] [PASSED] 0x6420 (LUNARLAKE)
[03:53:39] [PASSED] 0x64A0 (LUNARLAKE)
[03:53:39] [PASSED] 0x64B0 (LUNARLAKE)
[03:53:39] [PASSED] 0xE202 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE209 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE20B (BATTLEMAGE)
[03:53:39] [PASSED] 0xE20C (BATTLEMAGE)
[03:53:39] [PASSED] 0xE20D (BATTLEMAGE)
[03:53:39] [PASSED] 0xE210 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE211 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE212 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE216 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE220 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE221 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE222 (BATTLEMAGE)
[03:53:39] [PASSED] 0xE223 (BATTLEMAGE)
[03:53:39] [PASSED] 0xB080 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB081 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB082 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB083 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB084 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB085 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB086 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB087 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB08F (PANTHERLAKE)
[03:53:39] [PASSED] 0xB090 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB0A0 (PANTHERLAKE)
[03:53:39] [PASSED] 0xB0B0 (PANTHERLAKE)
[03:53:39] [PASSED] 0xFD80 (PANTHERLAKE)
[03:53:39] [PASSED] 0xFD81 (PANTHERLAKE)
[03:53:39] [PASSED] 0xD740 (NOVALAKE_S)
[03:53:39] [PASSED] 0xD741 (NOVALAKE_S)
[03:53:39] [PASSED] 0xD742 (NOVALAKE_S)
[03:53:39] [PASSED] 0xD743 (NOVALAKE_S)
[03:53:39] [PASSED] 0xD744 (NOVALAKE_S)
[03:53:39] [PASSED] 0xD745 (NOVALAKE_S)
[03:53:39] [PASSED] 0x674C (CRESCENTISLAND)
[03:53:39] [PASSED] 0xD750 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD751 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD752 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD753 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD754 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD755 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD756 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD757 (NOVALAKE_P)
[03:53:39] [PASSED] 0xD75F (NOVALAKE_P)
[03:53:39] =============== [PASSED] check_platform_desc ===============
[03:53:39] ===================== [PASSED] xe_pci ======================
[03:53:39] =================== xe_rtp (2 subtests) ====================
[03:53:39] =============== xe_rtp_process_to_sr_tests ================
[03:53:39] [PASSED] coalesce-same-reg
[03:53:39] [PASSED] no-match-no-add
[03:53:39] [PASSED] match-or
[03:53:39] [PASSED] match-or-xfail
[03:53:39] [PASSED] no-match-no-add-multiple-rules
[03:53:39] [PASSED] two-regs-two-entries
[03:53:39] [PASSED] clr-one-set-other
[03:53:39] [PASSED] set-field
[03:53:39] [PASSED] conflict-duplicate
stty: 'standard input': Inappropriate ioctl for device
[03:53:39] [PASSED] conflict-not-disjoint
[03:53:39] [PASSED] conflict-reg-type
[03:53:39] =========== [PASSED] xe_rtp_process_to_sr_tests ============
[03:53:39] ================== xe_rtp_process_tests ===================
[03:53:39] [PASSED] active1
[03:53:39] [PASSED] active2
[03:53:39] [PASSED] active-inactive
[03:53:39] [PASSED] inactive-active
[03:53:39] [PASSED] inactive-1st_or_active-inactive
[03:53:39] [PASSED] inactive-2nd_or_active-inactive
[03:53:39] [PASSED] inactive-last_or_active-inactive
[03:53:39] [PASSED] inactive-no_or_active-inactive
[03:53:39] ============== [PASSED] xe_rtp_process_tests ===============
[03:53:39] ===================== [PASSED] xe_rtp ======================
[03:53:39] ==================== xe_wa (1 subtest) =====================
[03:53:39] ======================== xe_wa_gt =========================
[03:53:39] [PASSED] TIGERLAKE B0
[03:53:39] [PASSED] DG1 A0
[03:53:39] [PASSED] DG1 B0
[03:53:39] [PASSED] ALDERLAKE_S A0
[03:53:39] [PASSED] ALDERLAKE_S B0
[03:53:39] [PASSED] ALDERLAKE_S C0
[03:53:39] [PASSED] ALDERLAKE_S D0
[03:53:39] [PASSED] ALDERLAKE_P A0
[03:53:39] [PASSED] ALDERLAKE_P B0
[03:53:39] [PASSED] ALDERLAKE_P C0
[03:53:39] [PASSED] ALDERLAKE_S RPLS D0
[03:53:39] [PASSED] ALDERLAKE_P RPLU E0
[03:53:39] [PASSED] DG2 G10 C0
[03:53:39] [PASSED] DG2 G11 B1
[03:53:39] [PASSED] DG2 G12 A1
[03:53:39] [PASSED] METEORLAKE 12.70(Xe_LPG) A0 13.00(Xe_LPM+) A0
[03:53:39] [PASSED] METEORLAKE 12.71(Xe_LPG) A0 13.00(Xe_LPM+) A0
[03:53:39] [PASSED] METEORLAKE 12.74(Xe_LPG+) A0 13.00(Xe_LPM+) A0
[03:53:39] [PASSED] LUNARLAKE 20.04(Xe2_LPG) A0 20.00(Xe2_LPM) A0
[03:53:39] [PASSED] LUNARLAKE 20.04(Xe2_LPG) B0 20.00(Xe2_LPM) A0
[03:53:39] [PASSED] BATTLEMAGE 20.01(Xe2_HPG) A0 13.01(Xe2_HPM) A1
[03:53:39] [PASSED] PANTHERLAKE 30.00(Xe3_LPG) A0 30.00(Xe3_LPM) A0
[03:53:39] ==================== [PASSED] xe_wa_gt =====================
[03:53:39] ====================== [PASSED] xe_wa ======================
[03:53:39] ============================================================
[03:53:39] Testing complete. Ran 597 tests: passed: 579, skipped: 18
[03:53:39] Elapsed time: 35.246s total, 4.199s configuring, 30.430s building, 0.609s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/tests/.kunitconfig
[03:53:39] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[03:53:41] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[03:54:05] Starting KUnit Kernel (1/1)...
[03:54:05] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[03:54:05] ============ drm_test_pick_cmdline (2 subtests) ============
[03:54:05] [PASSED] drm_test_pick_cmdline_res_1920_1080_60
[03:54:05] =============== drm_test_pick_cmdline_named ===============
[03:54:05] [PASSED] NTSC
[03:54:05] [PASSED] NTSC-J
[03:54:05] [PASSED] PAL
[03:54:05] [PASSED] PAL-M
[03:54:05] =========== [PASSED] drm_test_pick_cmdline_named ===========
[03:54:05] ============== [PASSED] drm_test_pick_cmdline ==============
[03:54:05] == drm_test_atomic_get_connector_for_encoder (1 subtest) ===
[03:54:05] [PASSED] drm_test_drm_atomic_get_connector_for_encoder
[03:54:05] ==== [PASSED] drm_test_atomic_get_connector_for_encoder ====
[03:54:05] =========== drm_validate_clone_mode (2 subtests) ===========
[03:54:05] ============== drm_test_check_in_clone_mode ===============
[03:54:05] [PASSED] in_clone_mode
[03:54:05] [PASSED] not_in_clone_mode
[03:54:05] ========== [PASSED] drm_test_check_in_clone_mode ===========
[03:54:05] =============== drm_test_check_valid_clones ===============
[03:54:05] [PASSED] not_in_clone_mode
[03:54:05] [PASSED] valid_clone
[03:54:05] [PASSED] invalid_clone
[03:54:05] =========== [PASSED] drm_test_check_valid_clones ===========
[03:54:05] ============= [PASSED] drm_validate_clone_mode =============
[03:54:05] ============= drm_validate_modeset (1 subtest) =============
[03:54:05] [PASSED] drm_test_check_connector_changed_modeset
[03:54:05] ============== [PASSED] drm_validate_modeset ===============
[03:54:05] ====== drm_test_bridge_get_current_state (2 subtests) ======
[03:54:05] [PASSED] drm_test_drm_bridge_get_current_state_atomic
[03:54:05] [PASSED] drm_test_drm_bridge_get_current_state_legacy
[03:54:05] ======== [PASSED] drm_test_bridge_get_current_state ========
[03:54:05] ====== drm_test_bridge_helper_reset_crtc (3 subtests) ======
[03:54:05] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic
[03:54:05] [PASSED] drm_test_drm_bridge_helper_reset_crtc_atomic_disabled
[03:54:05] [PASSED] drm_test_drm_bridge_helper_reset_crtc_legacy
[03:54:05] ======== [PASSED] drm_test_bridge_helper_reset_crtc ========
[03:54:05] ============== drm_bridge_alloc (2 subtests) ===============
[03:54:05] [PASSED] drm_test_drm_bridge_alloc_basic
[03:54:05] [PASSED] drm_test_drm_bridge_alloc_get_put
[03:54:05] ================ [PASSED] drm_bridge_alloc =================
[03:54:05] ============= drm_cmdline_parser (40 subtests) =============
[03:54:05] [PASSED] drm_test_cmdline_force_d_only
[03:54:05] [PASSED] drm_test_cmdline_force_D_only_dvi
[03:54:05] [PASSED] drm_test_cmdline_force_D_only_hdmi
[03:54:05] [PASSED] drm_test_cmdline_force_D_only_not_digital
[03:54:05] [PASSED] drm_test_cmdline_force_e_only
[03:54:05] [PASSED] drm_test_cmdline_res
[03:54:05] [PASSED] drm_test_cmdline_res_vesa
[03:54:05] [PASSED] drm_test_cmdline_res_vesa_rblank
[03:54:05] [PASSED] drm_test_cmdline_res_rblank
[03:54:05] [PASSED] drm_test_cmdline_res_bpp
[03:54:05] [PASSED] drm_test_cmdline_res_refresh
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_margins
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_off
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_analog
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_force_on_digital
[03:54:05] [PASSED] drm_test_cmdline_res_bpp_refresh_interlaced_margins_force_on
[03:54:05] [PASSED] drm_test_cmdline_res_margins_force_on
[03:54:05] [PASSED] drm_test_cmdline_res_vesa_margins
[03:54:05] [PASSED] drm_test_cmdline_name
[03:54:05] [PASSED] drm_test_cmdline_name_bpp
[03:54:05] [PASSED] drm_test_cmdline_name_option
[03:54:05] [PASSED] drm_test_cmdline_name_bpp_option
[03:54:05] [PASSED] drm_test_cmdline_rotate_0
[03:54:05] [PASSED] drm_test_cmdline_rotate_90
[03:54:05] [PASSED] drm_test_cmdline_rotate_180
[03:54:05] [PASSED] drm_test_cmdline_rotate_270
[03:54:05] [PASSED] drm_test_cmdline_hmirror
[03:54:05] [PASSED] drm_test_cmdline_vmirror
[03:54:05] [PASSED] drm_test_cmdline_margin_options
[03:54:05] [PASSED] drm_test_cmdline_multiple_options
[03:54:05] [PASSED] drm_test_cmdline_bpp_extra_and_option
[03:54:05] [PASSED] drm_test_cmdline_extra_and_option
[03:54:05] [PASSED] drm_test_cmdline_freestanding_options
[03:54:05] [PASSED] drm_test_cmdline_freestanding_force_e_and_options
[03:54:05] [PASSED] drm_test_cmdline_panel_orientation
[03:54:05] ================ drm_test_cmdline_invalid =================
[03:54:05] [PASSED] margin_only
[03:54:05] [PASSED] interlace_only
[03:54:05] [PASSED] res_missing_x
[03:54:05] [PASSED] res_missing_y
[03:54:05] [PASSED] res_bad_y
[03:54:05] [PASSED] res_missing_y_bpp
[03:54:05] [PASSED] res_bad_bpp
[03:54:05] [PASSED] res_bad_refresh
[03:54:05] [PASSED] res_bpp_refresh_force_on_off
[03:54:05] [PASSED] res_invalid_mode
[03:54:05] [PASSED] res_bpp_wrong_place_mode
[03:54:05] [PASSED] name_bpp_refresh
[03:54:05] [PASSED] name_refresh
[03:54:05] [PASSED] name_refresh_wrong_mode
[03:54:05] [PASSED] name_refresh_invalid_mode
[03:54:05] [PASSED] rotate_multiple
[03:54:05] [PASSED] rotate_invalid_val
[03:54:05] [PASSED] rotate_truncated
[03:54:05] [PASSED] invalid_option
[03:54:05] [PASSED] invalid_tv_option
[03:54:05] [PASSED] truncated_tv_option
[03:54:05] ============ [PASSED] drm_test_cmdline_invalid =============
[03:54:05] =============== drm_test_cmdline_tv_options ===============
[03:54:05] [PASSED] NTSC
[03:54:05] [PASSED] NTSC_443
[03:54:05] [PASSED] NTSC_J
[03:54:05] [PASSED] PAL
[03:54:05] [PASSED] PAL_M
[03:54:05] [PASSED] PAL_N
[03:54:05] [PASSED] SECAM
[03:54:05] [PASSED] MONO_525
[03:54:05] [PASSED] MONO_625
[03:54:05] =========== [PASSED] drm_test_cmdline_tv_options ===========
[03:54:05] =============== [PASSED] drm_cmdline_parser ================
[03:54:05] ========== drmm_connector_hdmi_init (20 subtests) ==========
[03:54:05] [PASSED] drm_test_connector_hdmi_init_valid
[03:54:05] [PASSED] drm_test_connector_hdmi_init_bpc_8
[03:54:05] [PASSED] drm_test_connector_hdmi_init_bpc_10
[03:54:05] [PASSED] drm_test_connector_hdmi_init_bpc_12
[03:54:05] [PASSED] drm_test_connector_hdmi_init_bpc_invalid
[03:54:05] [PASSED] drm_test_connector_hdmi_init_bpc_null
[03:54:05] [PASSED] drm_test_connector_hdmi_init_formats_empty
[03:54:05] [PASSED] drm_test_connector_hdmi_init_formats_no_rgb
[03:54:05] === drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[03:54:05] [PASSED] supported_formats=0x9 yuv420_allowed=1
[03:54:05] [PASSED] supported_formats=0x9 yuv420_allowed=0
[03:54:05] [PASSED] supported_formats=0x3 yuv420_allowed=1
[03:54:05] [PASSED] supported_formats=0x3 yuv420_allowed=0
[03:54:05] === [PASSED] drm_test_connector_hdmi_init_formats_yuv420_allowed ===
[03:54:05] [PASSED] drm_test_connector_hdmi_init_null_ddc
[03:54:05] [PASSED] drm_test_connector_hdmi_init_null_product
[03:54:05] [PASSED] drm_test_connector_hdmi_init_null_vendor
[03:54:05] [PASSED] drm_test_connector_hdmi_init_product_length_exact
[03:54:05] [PASSED] drm_test_connector_hdmi_init_product_length_too_long
[03:54:05] [PASSED] drm_test_connector_hdmi_init_product_valid
[03:54:05] [PASSED] drm_test_connector_hdmi_init_vendor_length_exact
[03:54:05] [PASSED] drm_test_connector_hdmi_init_vendor_length_too_long
[03:54:05] [PASSED] drm_test_connector_hdmi_init_vendor_valid
[03:54:05] ========= drm_test_connector_hdmi_init_type_valid =========
[03:54:05] [PASSED] HDMI-A
[03:54:05] [PASSED] HDMI-B
[03:54:05] ===== [PASSED] drm_test_connector_hdmi_init_type_valid =====
[03:54:05] ======== drm_test_connector_hdmi_init_type_invalid ========
[03:54:05] [PASSED] Unknown
[03:54:05] [PASSED] VGA
[03:54:05] [PASSED] DVI-I
[03:54:05] [PASSED] DVI-D
[03:54:05] [PASSED] DVI-A
[03:54:05] [PASSED] Composite
[03:54:05] [PASSED] SVIDEO
[03:54:05] [PASSED] LVDS
[03:54:05] [PASSED] Component
[03:54:05] [PASSED] DIN
[03:54:05] [PASSED] DP
[03:54:05] [PASSED] TV
[03:54:05] [PASSED] eDP
[03:54:05] [PASSED] Virtual
[03:54:05] [PASSED] DSI
[03:54:05] [PASSED] DPI
[03:54:05] [PASSED] Writeback
[03:54:05] [PASSED] SPI
[03:54:05] [PASSED] USB
[03:54:05] ==== [PASSED] drm_test_connector_hdmi_init_type_invalid ====
[03:54:05] ============ [PASSED] drmm_connector_hdmi_init =============
[03:54:05] ============= drmm_connector_init (3 subtests) =============
[03:54:05] [PASSED] drm_test_drmm_connector_init
[03:54:05] [PASSED] drm_test_drmm_connector_init_null_ddc
[03:54:05] ========= drm_test_drmm_connector_init_type_valid =========
[03:54:05] [PASSED] Unknown
[03:54:05] [PASSED] VGA
[03:54:05] [PASSED] DVI-I
[03:54:05] [PASSED] DVI-D
[03:54:05] [PASSED] DVI-A
[03:54:05] [PASSED] Composite
[03:54:05] [PASSED] SVIDEO
[03:54:05] [PASSED] LVDS
[03:54:05] [PASSED] Component
[03:54:05] [PASSED] DIN
[03:54:05] [PASSED] DP
[03:54:05] [PASSED] HDMI-A
[03:54:05] [PASSED] HDMI-B
[03:54:05] [PASSED] TV
[03:54:05] [PASSED] eDP
[03:54:05] [PASSED] Virtual
[03:54:05] [PASSED] DSI
[03:54:05] [PASSED] DPI
[03:54:05] [PASSED] Writeback
[03:54:05] [PASSED] SPI
[03:54:05] [PASSED] USB
[03:54:05] ===== [PASSED] drm_test_drmm_connector_init_type_valid =====
[03:54:05] =============== [PASSED] drmm_connector_init ===============
[03:54:05] ========= drm_connector_dynamic_init (6 subtests) ==========
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_init
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_init_null_ddc
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_init_not_added
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_init_properties
[03:54:05] ===== drm_test_drm_connector_dynamic_init_type_valid ======
[03:54:05] [PASSED] Unknown
[03:54:05] [PASSED] VGA
[03:54:05] [PASSED] DVI-I
[03:54:05] [PASSED] DVI-D
[03:54:05] [PASSED] DVI-A
[03:54:05] [PASSED] Composite
[03:54:05] [PASSED] SVIDEO
[03:54:05] [PASSED] LVDS
[03:54:05] [PASSED] Component
[03:54:05] [PASSED] DIN
[03:54:05] [PASSED] DP
[03:54:05] [PASSED] HDMI-A
[03:54:05] [PASSED] HDMI-B
[03:54:05] [PASSED] TV
[03:54:05] [PASSED] eDP
[03:54:05] [PASSED] Virtual
[03:54:05] [PASSED] DSI
[03:54:05] [PASSED] DPI
[03:54:05] [PASSED] Writeback
[03:54:05] [PASSED] SPI
[03:54:05] [PASSED] USB
[03:54:05] = [PASSED] drm_test_drm_connector_dynamic_init_type_valid ==
[03:54:05] ======== drm_test_drm_connector_dynamic_init_name =========
[03:54:05] [PASSED] Unknown
[03:54:05] [PASSED] VGA
[03:54:05] [PASSED] DVI-I
[03:54:05] [PASSED] DVI-D
[03:54:05] [PASSED] DVI-A
[03:54:05] [PASSED] Composite
[03:54:05] [PASSED] SVIDEO
[03:54:05] [PASSED] LVDS
[03:54:05] [PASSED] Component
[03:54:05] [PASSED] DIN
[03:54:05] [PASSED] DP
[03:54:05] [PASSED] HDMI-A
[03:54:05] [PASSED] HDMI-B
[03:54:05] [PASSED] TV
[03:54:05] [PASSED] eDP
[03:54:05] [PASSED] Virtual
[03:54:05] [PASSED] DSI
[03:54:05] [PASSED] DPI
[03:54:05] [PASSED] Writeback
[03:54:05] [PASSED] SPI
[03:54:05] [PASSED] USB
[03:54:05] ==== [PASSED] drm_test_drm_connector_dynamic_init_name =====
[03:54:05] =========== [PASSED] drm_connector_dynamic_init ============
[03:54:05] ==== drm_connector_dynamic_register_early (4 subtests) =====
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_early_on_list
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_early_defer
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_early_no_init
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_early_no_mode_object
[03:54:05] ====== [PASSED] drm_connector_dynamic_register_early =======
[03:54:05] ======= drm_connector_dynamic_register (7 subtests) ========
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_on_list
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_no_defer
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_no_init
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_mode_object
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_sysfs
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_sysfs_name
[03:54:05] [PASSED] drm_test_drm_connector_dynamic_register_debugfs
[03:54:05] ========= [PASSED] drm_connector_dynamic_register ==========
[03:54:05] = drm_connector_attach_broadcast_rgb_property (2 subtests) =
[03:54:05] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property
[03:54:05] [PASSED] drm_test_drm_connector_attach_broadcast_rgb_property_hdmi_connector
[03:54:05] === [PASSED] drm_connector_attach_broadcast_rgb_property ===
[03:54:05] ========== drm_get_tv_mode_from_name (2 subtests) ==========
[03:54:05] ========== drm_test_get_tv_mode_from_name_valid ===========
[03:54:05] [PASSED] NTSC
[03:54:05] [PASSED] NTSC-443
[03:54:05] [PASSED] NTSC-J
[03:54:05] [PASSED] PAL
[03:54:05] [PASSED] PAL-M
[03:54:05] [PASSED] PAL-N
[03:54:05] [PASSED] SECAM
[03:54:05] [PASSED] Mono
[03:54:05] ====== [PASSED] drm_test_get_tv_mode_from_name_valid =======
[03:54:05] [PASSED] drm_test_get_tv_mode_from_name_truncated
[03:54:05] ============ [PASSED] drm_get_tv_mode_from_name ============
[03:54:05] = drm_test_connector_hdmi_compute_mode_clock (12 subtests) =
[03:54:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb
[03:54:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc
[03:54:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_10bpc_vic_1
[03:54:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc
[03:54:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_12bpc_vic_1
[03:54:05] [PASSED] drm_test_drm_hdmi_compute_mode_clock_rgb_double
[03:54:05] = drm_test_connector_hdmi_compute_mode_clock_yuv420_valid =
[03:54:05] [PASSED] VIC 96
[03:54:05] [PASSED] VIC 97
[03:54:05] [PASSED] VIC 101
[03:54:05] [PASSED] VIC 102
[03:54:05] [PASSED] VIC 106
[03:54:05] [PASSED] VIC 107
[03:54:05] === [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_valid ===
[03:54:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_10_bpc
[03:54:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv420_12_bpc
[03:54:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_8_bpc
[03:54:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_10_bpc
[03:54:05] [PASSED] drm_test_connector_hdmi_compute_mode_clock_yuv422_12_bpc
[03:54:05] === [PASSED] drm_test_connector_hdmi_compute_mode_clock ====
[03:54:05] == drm_hdmi_connector_get_broadcast_rgb_name (2 subtests) ==
[03:54:05] === drm_test_drm_hdmi_connector_get_broadcast_rgb_name ====
[03:54:05] [PASSED] Automatic
[03:54:05] [PASSED] Full
[03:54:05] [PASSED] Limited 16:235
[03:54:05] === [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name ===
[03:54:05] [PASSED] drm_test_drm_hdmi_connector_get_broadcast_rgb_name_invalid
[03:54:05] ==== [PASSED] drm_hdmi_connector_get_broadcast_rgb_name ====
[03:54:05] == drm_hdmi_connector_get_output_format_name (2 subtests) ==
[03:54:05] === drm_test_drm_hdmi_connector_get_output_format_name ====
[03:54:05] [PASSED] RGB
[03:54:05] [PASSED] YUV 4:2:0
[03:54:05] [PASSED] YUV 4:2:2
[03:54:05] [PASSED] YUV 4:4:4
[03:54:05] === [PASSED] drm_test_drm_hdmi_connector_get_output_format_name ===
[03:54:05] [PASSED] drm_test_drm_hdmi_connector_get_output_format_name_invalid
[03:54:05] ==== [PASSED] drm_hdmi_connector_get_output_format_name ====
[03:54:05] ============= drm_damage_helper (21 subtests) ==============
[03:54:05] [PASSED] drm_test_damage_iter_no_damage
[03:54:05] [PASSED] drm_test_damage_iter_no_damage_fractional_src
[03:54:05] [PASSED] drm_test_damage_iter_no_damage_src_moved
[03:54:05] [PASSED] drm_test_damage_iter_no_damage_fractional_src_moved
[03:54:05] [PASSED] drm_test_damage_iter_no_damage_not_visible
[03:54:05] [PASSED] drm_test_damage_iter_no_damage_no_crtc
[03:54:05] [PASSED] drm_test_damage_iter_no_damage_no_fb
[03:54:05] [PASSED] drm_test_damage_iter_simple_damage
[03:54:05] [PASSED] drm_test_damage_iter_single_damage
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_intersect_src
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_outside_src
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_fractional_src
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_intersect_fractional_src
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_outside_fractional_src
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_src_moved
[03:54:05] [PASSED] drm_test_damage_iter_single_damage_fractional_src_moved
[03:54:05] [PASSED] drm_test_damage_iter_damage
[03:54:05] [PASSED] drm_test_damage_iter_damage_one_intersect
[03:54:05] [PASSED] drm_test_damage_iter_damage_one_outside
[03:54:05] [PASSED] drm_test_damage_iter_damage_src_moved
[03:54:05] [PASSED] drm_test_damage_iter_damage_not_visible
[03:54:05] ================ [PASSED] drm_damage_helper ================
[03:54:05] ============== drm_dp_mst_helper (3 subtests) ==============
[03:54:05] ============== drm_test_dp_mst_calc_pbn_mode ==============
[03:54:05] [PASSED] Clock 154000 BPP 30 DSC disabled
[03:54:05] [PASSED] Clock 234000 BPP 30 DSC disabled
[03:54:05] [PASSED] Clock 297000 BPP 24 DSC disabled
[03:54:05] [PASSED] Clock 332880 BPP 24 DSC enabled
[03:54:05] [PASSED] Clock 324540 BPP 24 DSC enabled
[03:54:05] ========== [PASSED] drm_test_dp_mst_calc_pbn_mode ==========
[03:54:05] ============== drm_test_dp_mst_calc_pbn_div ===============
[03:54:05] [PASSED] Link rate 2000000 lane count 4
[03:54:05] [PASSED] Link rate 2000000 lane count 2
[03:54:05] [PASSED] Link rate 2000000 lane count 1
[03:54:05] [PASSED] Link rate 1350000 lane count 4
[03:54:05] [PASSED] Link rate 1350000 lane count 2
[03:54:05] [PASSED] Link rate 1350000 lane count 1
[03:54:05] [PASSED] Link rate 1000000 lane count 4
[03:54:05] [PASSED] Link rate 1000000 lane count 2
[03:54:05] [PASSED] Link rate 1000000 lane count 1
[03:54:05] [PASSED] Link rate 810000 lane count 4
[03:54:05] [PASSED] Link rate 810000 lane count 2
[03:54:05] [PASSED] Link rate 810000 lane count 1
[03:54:05] [PASSED] Link rate 540000 lane count 4
[03:54:05] [PASSED] Link rate 540000 lane count 2
[03:54:05] [PASSED] Link rate 540000 lane count 1
[03:54:05] [PASSED] Link rate 270000 lane count 4
[03:54:05] [PASSED] Link rate 270000 lane count 2
[03:54:05] [PASSED] Link rate 270000 lane count 1
[03:54:05] [PASSED] Link rate 162000 lane count 4
[03:54:05] [PASSED] Link rate 162000 lane count 2
[03:54:05] [PASSED] Link rate 162000 lane count 1
[03:54:05] ========== [PASSED] drm_test_dp_mst_calc_pbn_div ===========
[03:54:05] ========= drm_test_dp_mst_sideband_msg_req_decode =========
[03:54:05] [PASSED] DP_ENUM_PATH_RESOURCES with port number
[03:54:05] [PASSED] DP_POWER_UP_PHY with port number
[03:54:05] [PASSED] DP_POWER_DOWN_PHY with port number
[03:54:05] [PASSED] DP_ALLOCATE_PAYLOAD with SDP stream sinks
[03:54:05] [PASSED] DP_ALLOCATE_PAYLOAD with port number
[03:54:05] [PASSED] DP_ALLOCATE_PAYLOAD with VCPI
[03:54:05] [PASSED] DP_ALLOCATE_PAYLOAD with PBN
[03:54:05] [PASSED] DP_QUERY_PAYLOAD with port number
[03:54:05] [PASSED] DP_QUERY_PAYLOAD with VCPI
[03:54:05] [PASSED] DP_REMOTE_DPCD_READ with port number
[03:54:05] [PASSED] DP_REMOTE_DPCD_READ with DPCD address
[03:54:05] [PASSED] DP_REMOTE_DPCD_READ with max number of bytes
[03:54:05] [PASSED] DP_REMOTE_DPCD_WRITE with port number
[03:54:05] [PASSED] DP_REMOTE_DPCD_WRITE with DPCD address
[03:54:05] [PASSED] DP_REMOTE_DPCD_WRITE with data array
[03:54:05] [PASSED] DP_REMOTE_I2C_READ with port number
[03:54:05] [PASSED] DP_REMOTE_I2C_READ with I2C device ID
[03:54:05] [PASSED] DP_REMOTE_I2C_READ with transactions array
[03:54:05] [PASSED] DP_REMOTE_I2C_WRITE with port number
[03:54:05] [PASSED] DP_REMOTE_I2C_WRITE with I2C device ID
[03:54:05] [PASSED] DP_REMOTE_I2C_WRITE with data array
[03:54:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream ID
[03:54:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with client ID
[03:54:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream event
[03:54:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with valid stream event
[03:54:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with stream behavior
[03:54:05] [PASSED] DP_QUERY_STREAM_ENC_STATUS with a valid stream behavior
[03:54:05] ===== [PASSED] drm_test_dp_mst_sideband_msg_req_decode =====
[03:54:05] ================ [PASSED] drm_dp_mst_helper ================
[03:54:05] ================== drm_exec (7 subtests) ===================
[03:54:05] [PASSED] sanitycheck
[03:54:05] [PASSED] test_lock
[03:54:05] [PASSED] test_lock_unlock
[03:54:05] [PASSED] test_duplicates
[03:54:05] [PASSED] test_prepare
[03:54:05] [PASSED] test_prepare_array
[03:54:05] [PASSED] test_multiple_loops
[03:54:05] ==================== [PASSED] drm_exec =====================
[03:54:05] =========== drm_format_helper_test (17 subtests) ===========
[03:54:05] ============== drm_test_fb_xrgb8888_to_gray8 ==============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ========== [PASSED] drm_test_fb_xrgb8888_to_gray8 ==========
[03:54:05] ============= drm_test_fb_xrgb8888_to_rgb332 ==============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb332 ==========
[03:54:05] ============= drm_test_fb_xrgb8888_to_rgb565 ==============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb565 ==========
[03:54:05] ============ drm_test_fb_xrgb8888_to_xrgb1555 =============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======== [PASSED] drm_test_fb_xrgb8888_to_xrgb1555 =========
[03:54:05] ============ drm_test_fb_xrgb8888_to_argb1555 =============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======== [PASSED] drm_test_fb_xrgb8888_to_argb1555 =========
[03:54:05] ============ drm_test_fb_xrgb8888_to_rgba5551 =============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======== [PASSED] drm_test_fb_xrgb8888_to_rgba5551 =========
[03:54:05] ============= drm_test_fb_xrgb8888_to_rgb888 ==============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ========= [PASSED] drm_test_fb_xrgb8888_to_rgb888 ==========
[03:54:05] ============= drm_test_fb_xrgb8888_to_bgr888 ==============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ========= [PASSED] drm_test_fb_xrgb8888_to_bgr888 ==========
[03:54:05] ============ drm_test_fb_xrgb8888_to_argb8888 =============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======== [PASSED] drm_test_fb_xrgb8888_to_argb8888 =========
[03:54:05] =========== drm_test_fb_xrgb8888_to_xrgb2101010 ===========
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======= [PASSED] drm_test_fb_xrgb8888_to_xrgb2101010 =======
[03:54:05] =========== drm_test_fb_xrgb8888_to_argb2101010 ===========
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======= [PASSED] drm_test_fb_xrgb8888_to_argb2101010 =======
[03:54:05] ============== drm_test_fb_xrgb8888_to_mono ===============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ========== [PASSED] drm_test_fb_xrgb8888_to_mono ===========
[03:54:05] ==================== drm_test_fb_swab =====================
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ================ [PASSED] drm_test_fb_swab =================
[03:54:05] ============ drm_test_fb_xrgb8888_to_xbgr8888 =============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======== [PASSED] drm_test_fb_xrgb8888_to_xbgr8888 =========
[03:54:05] ============ drm_test_fb_xrgb8888_to_abgr8888 =============
[03:54:05] [PASSED] single_pixel_source_buffer
[03:54:05] [PASSED] single_pixel_clip_rectangle
[03:54:05] [PASSED] well_known_colors
[03:54:05] [PASSED] destination_pitch
[03:54:05] ======== [PASSED] drm_test_fb_xrgb8888_to_abgr8888 =========
[03:54:05] ================= drm_test_fb_clip_offset =================
[03:54:05] [PASSED] pass through
[03:54:05] [PASSED] horizontal offset
[03:54:05] [PASSED] vertical offset
[03:54:05] [PASSED] horizontal and vertical offset
[03:54:05] [PASSED] horizontal offset (custom pitch)
[03:54:05] [PASSED] vertical offset (custom pitch)
[03:54:05] [PASSED] horizontal and vertical offset (custom pitch)
[03:54:05] ============= [PASSED] drm_test_fb_clip_offset =============
[03:54:05] =================== drm_test_fb_memcpy ====================
[03:54:05] [PASSED] single_pixel_source_buffer: XR24 little-endian (0x34325258)
[03:54:05] [PASSED] single_pixel_source_buffer: XRA8 little-endian (0x38415258)
[03:54:05] [PASSED] single_pixel_source_buffer: YU24 little-endian (0x34325559)
[03:54:05] [PASSED] single_pixel_clip_rectangle: XB24 little-endian (0x34324258)
[03:54:05] [PASSED] single_pixel_clip_rectangle: XRA8 little-endian (0x38415258)
[03:54:05] [PASSED] single_pixel_clip_rectangle: YU24 little-endian (0x34325559)
[03:54:05] [PASSED] well_known_colors: XB24 little-endian (0x34324258)
[03:54:05] [PASSED] well_known_colors: XRA8 little-endian (0x38415258)
[03:54:05] [PASSED] well_known_colors: YU24 little-endian (0x34325559)
[03:54:05] [PASSED] destination_pitch: XB24 little-endian (0x34324258)
[03:54:05] [PASSED] destination_pitch: XRA8 little-endian (0x38415258)
[03:54:05] [PASSED] destination_pitch: YU24 little-endian (0x34325559)
[03:54:05] =============== [PASSED] drm_test_fb_memcpy ================
[03:54:05] ============= [PASSED] drm_format_helper_test ==============
[03:54:05] ================= drm_format (18 subtests) =================
[03:54:05] [PASSED] drm_test_format_block_width_invalid
[03:54:05] [PASSED] drm_test_format_block_width_one_plane
[03:54:05] [PASSED] drm_test_format_block_width_two_plane
[03:54:05] [PASSED] drm_test_format_block_width_three_plane
[03:54:05] [PASSED] drm_test_format_block_width_tiled
[03:54:05] [PASSED] drm_test_format_block_height_invalid
[03:54:05] [PASSED] drm_test_format_block_height_one_plane
[03:54:05] [PASSED] drm_test_format_block_height_two_plane
[03:54:05] [PASSED] drm_test_format_block_height_three_plane
[03:54:05] [PASSED] drm_test_format_block_height_tiled
[03:54:05] [PASSED] drm_test_format_min_pitch_invalid
[03:54:05] [PASSED] drm_test_format_min_pitch_one_plane_8bpp
[03:54:05] [PASSED] drm_test_format_min_pitch_one_plane_16bpp
[03:54:05] [PASSED] drm_test_format_min_pitch_one_plane_24bpp
[03:54:05] [PASSED] drm_test_format_min_pitch_one_plane_32bpp
[03:54:05] [PASSED] drm_test_format_min_pitch_two_plane
[03:54:05] [PASSED] drm_test_format_min_pitch_three_plane_8bpp
[03:54:05] [PASSED] drm_test_format_min_pitch_tiled
[03:54:05] =================== [PASSED] drm_format ====================
[03:54:05] ============== drm_framebuffer (10 subtests) ===============
[03:54:05] ========== drm_test_framebuffer_check_src_coords ==========
[03:54:05] [PASSED] Success: source fits into fb
[03:54:05] [PASSED] Fail: overflowing fb with x-axis coordinate
[03:54:05] [PASSED] Fail: overflowing fb with y-axis coordinate
[03:54:05] [PASSED] Fail: overflowing fb with source width
[03:54:05] [PASSED] Fail: overflowing fb with source height
[03:54:05] ====== [PASSED] drm_test_framebuffer_check_src_coords ======
[03:54:05] [PASSED] drm_test_framebuffer_cleanup
[03:54:05] =============== drm_test_framebuffer_create ===============
[03:54:05] [PASSED] ABGR8888 normal sizes
[03:54:05] [PASSED] ABGR8888 max sizes
[03:54:05] [PASSED] ABGR8888 pitch greater than min required
[03:54:05] [PASSED] ABGR8888 pitch less than min required
[03:54:05] [PASSED] ABGR8888 Invalid width
[03:54:05] [PASSED] ABGR8888 Invalid buffer handle
[03:54:05] [PASSED] No pixel format
[03:54:05] [PASSED] ABGR8888 Width 0
[03:54:05] [PASSED] ABGR8888 Height 0
[03:54:05] [PASSED] ABGR8888 Out of bound height * pitch combination
[03:54:05] [PASSED] ABGR8888 Large buffer offset
[03:54:05] [PASSED] ABGR8888 Buffer offset for inexistent plane
[03:54:05] [PASSED] ABGR8888 Invalid flag
[03:54:05] [PASSED] ABGR8888 Set DRM_MODE_FB_MODIFIERS without modifiers
[03:54:05] [PASSED] ABGR8888 Valid buffer modifier
[03:54:05] [PASSED] ABGR8888 Invalid buffer modifier(DRM_FORMAT_MOD_SAMSUNG_64_32_TILE)
[03:54:05] [PASSED] ABGR8888 Extra pitches without DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] ABGR8888 Extra pitches with DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] NV12 Normal sizes
[03:54:05] [PASSED] NV12 Max sizes
[03:54:05] [PASSED] NV12 Invalid pitch
[03:54:05] [PASSED] NV12 Invalid modifier/missing DRM_MODE_FB_MODIFIERS flag
[03:54:05] [PASSED] NV12 different modifier per-plane
[03:54:05] [PASSED] NV12 with DRM_FORMAT_MOD_SAMSUNG_64_32_TILE
[03:54:05] [PASSED] NV12 Valid modifiers without DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] NV12 Modifier for inexistent plane
[03:54:05] [PASSED] NV12 Handle for inexistent plane
[03:54:05] [PASSED] NV12 Handle for inexistent plane without DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] YVU420 DRM_MODE_FB_MODIFIERS set without modifier
[03:54:05] [PASSED] YVU420 Normal sizes
[03:54:05] [PASSED] YVU420 Max sizes
[03:54:05] [PASSED] YVU420 Invalid pitch
[03:54:05] [PASSED] YVU420 Different pitches
[03:54:05] [PASSED] YVU420 Different buffer offsets/pitches
[03:54:05] [PASSED] YVU420 Modifier set just for plane 0, without DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] YVU420 Modifier set just for planes 0, 1, without DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] YVU420 Modifier set just for plane 0, 1, with DRM_MODE_FB_MODIFIERS
[03:54:05] [PASSED] YVU420 Valid modifier
[03:54:05] [PASSED] YVU420 Different modifiers per plane
[03:54:05] [PASSED] YVU420 Modifier for inexistent plane
[03:54:05] [PASSED] YUV420_10BIT Invalid modifier(DRM_FORMAT_MOD_LINEAR)
[03:54:05] [PASSED] X0L2 Normal sizes
[03:54:05] [PASSED] X0L2 Max sizes
[03:54:05] [PASSED] X0L2 Invalid pitch
[03:54:05] [PASSED] X0L2 Pitch greater than minimum required
[03:54:05] [PASSED] X0L2 Handle for inexistent plane
[03:54:05] [PASSED] X0L2 Offset for inexistent plane, without DRM_MODE_FB_MODIFIERS set
[03:54:05] [PASSED] X0L2 Modifier without DRM_MODE_FB_MODIFIERS set
[03:54:05] [PASSED] X0L2 Valid modifier
[03:54:05] [PASSED] X0L2 Modifier for inexistent plane
[03:54:05] =========== [PASSED] drm_test_framebuffer_create ===========
[03:54:05] [PASSED] drm_test_framebuffer_free
[03:54:05] [PASSED] drm_test_framebuffer_init
[03:54:05] [PASSED] drm_test_framebuffer_init_bad_format
[03:54:05] [PASSED] drm_test_framebuffer_init_dev_mismatch
[03:54:05] [PASSED] drm_test_framebuffer_lookup
[03:54:05] [PASSED] drm_test_framebuffer_lookup_inexistent
[03:54:05] [PASSED] drm_test_framebuffer_modifiers_not_supported
[03:54:05] ================= [PASSED] drm_framebuffer =================
[03:54:05] ================ drm_gem_shmem (8 subtests) ================
[03:54:05] [PASSED] drm_gem_shmem_test_obj_create
[03:54:05] [PASSED] drm_gem_shmem_test_obj_create_private
[03:54:05] [PASSED] drm_gem_shmem_test_pin_pages
[03:54:05] [PASSED] drm_gem_shmem_test_vmap
[03:54:05] [PASSED] drm_gem_shmem_test_get_sg_table
[03:54:05] [PASSED] drm_gem_shmem_test_get_pages_sgt
[03:54:05] [PASSED] drm_gem_shmem_test_madvise
[03:54:05] [PASSED] drm_gem_shmem_test_purge
[03:54:05] ================== [PASSED] drm_gem_shmem ==================
[03:54:05] === drm_atomic_helper_connector_hdmi_check (27 subtests) ===
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_auto_cea_mode_vic_1
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_full_cea_mode_vic_1
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_limited_cea_mode_vic_1
[03:54:05] ====== drm_test_check_broadcast_rgb_cea_mode_yuv420 =======
[03:54:05] [PASSED] Automatic
[03:54:05] [PASSED] Full
[03:54:05] [PASSED] Limited 16:235
[03:54:05] == [PASSED] drm_test_check_broadcast_rgb_cea_mode_yuv420 ===
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_changed
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_crtc_mode_not_changed
[03:54:05] [PASSED] drm_test_check_disable_connector
[03:54:05] [PASSED] drm_test_check_hdmi_funcs_reject_rate
[03:54:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_rgb
[03:54:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_yuv420
[03:54:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv422
[03:54:05] [PASSED] drm_test_check_max_tmds_rate_bpc_fallback_ignore_yuv420
[03:54:05] [PASSED] drm_test_check_driver_unsupported_fallback_yuv420
[03:54:05] [PASSED] drm_test_check_output_bpc_crtc_mode_changed
[03:54:05] [PASSED] drm_test_check_output_bpc_crtc_mode_not_changed
[03:54:05] [PASSED] drm_test_check_output_bpc_dvi
[03:54:05] [PASSED] drm_test_check_output_bpc_format_vic_1
[03:54:05] [PASSED] drm_test_check_output_bpc_format_display_8bpc_only
[03:54:05] [PASSED] drm_test_check_output_bpc_format_display_rgb_only
[03:54:05] [PASSED] drm_test_check_output_bpc_format_driver_8bpc_only
[03:54:05] [PASSED] drm_test_check_output_bpc_format_driver_rgb_only
[03:54:05] [PASSED] drm_test_check_tmds_char_rate_rgb_8bpc
[03:54:05] [PASSED] drm_test_check_tmds_char_rate_rgb_10bpc
[03:54:05] [PASSED] drm_test_check_tmds_char_rate_rgb_12bpc
[03:54:05] ===== [PASSED] drm_atomic_helper_connector_hdmi_check ======
[03:54:05] === drm_atomic_helper_connector_hdmi_reset (6 subtests) ====
[03:54:05] [PASSED] drm_test_check_broadcast_rgb_value
[03:54:05] [PASSED] drm_test_check_bpc_8_value
[03:54:05] [PASSED] drm_test_check_bpc_10_value
[03:54:05] [PASSED] drm_test_check_bpc_12_value
[03:54:05] [PASSED] drm_test_check_format_value
[03:54:05] [PASSED] drm_test_check_tmds_char_value
[03:54:05] ===== [PASSED] drm_atomic_helper_connector_hdmi_reset ======
[03:54:05] = drm_atomic_helper_connector_hdmi_mode_valid (4 subtests) =
[03:54:05] [PASSED] drm_test_check_mode_valid
[03:54:05] [PASSED] drm_test_check_mode_valid_reject
[03:54:05] [PASSED] drm_test_check_mode_valid_reject_rate
[03:54:05] [PASSED] drm_test_check_mode_valid_reject_max_clock
[03:54:05] === [PASSED] drm_atomic_helper_connector_hdmi_mode_valid ===
[03:54:05] = drm_atomic_helper_connector_hdmi_infoframes (5 subtests) =
[03:54:05] [PASSED] drm_test_check_infoframes
[03:54:05] [PASSED] drm_test_check_reject_avi_infoframe
[03:54:05] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_8
[03:54:05] [PASSED] drm_test_check_reject_hdr_infoframe_bpc_10
[03:54:05] [PASSED] drm_test_check_reject_audio_infoframe
[03:54:05] === [PASSED] drm_atomic_helper_connector_hdmi_infoframes ===
[03:54:05] ================= drm_managed (2 subtests) =================
[03:54:05] [PASSED] drm_test_managed_release_action
[03:54:05] [PASSED] drm_test_managed_run_action
[03:54:05] =================== [PASSED] drm_managed ===================
[03:54:05] =================== drm_mm (6 subtests) ====================
[03:54:05] [PASSED] drm_test_mm_init
[03:54:05] [PASSED] drm_test_mm_debug
[03:54:05] [PASSED] drm_test_mm_align32
[03:54:05] [PASSED] drm_test_mm_align64
[03:54:05] [PASSED] drm_test_mm_lowest
[03:54:05] [PASSED] drm_test_mm_highest
[03:54:05] ===================== [PASSED] drm_mm ======================
[03:54:05] ============= drm_modes_analog_tv (5 subtests) =============
[03:54:05] [PASSED] drm_test_modes_analog_tv_mono_576i
[03:54:05] [PASSED] drm_test_modes_analog_tv_ntsc_480i
[03:54:05] [PASSED] drm_test_modes_analog_tv_ntsc_480i_inlined
[03:54:05] [PASSED] drm_test_modes_analog_tv_pal_576i
[03:54:05] [PASSED] drm_test_modes_analog_tv_pal_576i_inlined
[03:54:05] =============== [PASSED] drm_modes_analog_tv ===============
[03:54:05] ============== drm_plane_helper (2 subtests) ===============
[03:54:05] =============== drm_test_check_plane_state ================
[03:54:05] [PASSED] clipping_simple
[03:54:05] [PASSED] clipping_rotate_reflect
[03:54:05] [PASSED] positioning_simple
[03:54:05] [PASSED] upscaling
[03:54:05] [PASSED] downscaling
[03:54:05] [PASSED] rounding1
[03:54:05] [PASSED] rounding2
[03:54:05] [PASSED] rounding3
[03:54:05] [PASSED] rounding4
[03:54:05] =========== [PASSED] drm_test_check_plane_state ============
[03:54:05] =========== drm_test_check_invalid_plane_state ============
[03:54:05] [PASSED] positioning_invalid
[03:54:05] [PASSED] upscaling_invalid
[03:54:05] [PASSED] downscaling_invalid
[03:54:05] ======= [PASSED] drm_test_check_invalid_plane_state ========
[03:54:05] ================ [PASSED] drm_plane_helper =================
[03:54:05] ====== drm_connector_helper_tv_get_modes (1 subtest) =======
[03:54:05] ====== drm_test_connector_helper_tv_get_modes_check =======
[03:54:05] [PASSED] None
[03:54:05] [PASSED] PAL
[03:54:05] [PASSED] NTSC
[03:54:05] [PASSED] Both, NTSC Default
[03:54:05] [PASSED] Both, PAL Default
[03:54:05] [PASSED] Both, NTSC Default, with PAL on command-line
[03:54:05] [PASSED] Both, PAL Default, with NTSC on command-line
[03:54:05] == [PASSED] drm_test_connector_helper_tv_get_modes_check ===
[03:54:05] ======== [PASSED] drm_connector_helper_tv_get_modes ========
[03:54:05] ================== drm_rect (9 subtests) ===================
[03:54:05] [PASSED] drm_test_rect_clip_scaled_div_by_zero
[03:54:05] [PASSED] drm_test_rect_clip_scaled_not_clipped
[03:54:05] [PASSED] drm_test_rect_clip_scaled_clipped
[03:54:05] [PASSED] drm_test_rect_clip_scaled_signed_vs_unsigned
[03:54:05] ================= drm_test_rect_intersect =================
[03:54:05] [PASSED] top-left x bottom-right: 2x2+1+1 x 2x2+0+0
[03:54:05] [PASSED] top-right x bottom-left: 2x2+0+0 x 2x2+1-1
[03:54:05] [PASSED] bottom-left x top-right: 2x2+1-1 x 2x2+0+0
[03:54:05] [PASSED] bottom-right x top-left: 2x2+0+0 x 2x2+1+1
[03:54:05] [PASSED] right x left: 2x1+0+0 x 3x1+1+0
[03:54:05] [PASSED] left x right: 3x1+1+0 x 2x1+0+0
[03:54:05] [PASSED] up x bottom: 1x2+0+0 x 1x3+0-1
[03:54:05] [PASSED] bottom x up: 1x3+0-1 x 1x2+0+0
[03:54:05] [PASSED] touching corner: 1x1+0+0 x 2x2+1+1
[03:54:05] [PASSED] touching side: 1x1+0+0 x 1x1+1+0
[03:54:05] [PASSED] equal rects: 2x2+0+0 x 2x2+0+0
[03:54:05] [PASSED] inside another: 2x2+0+0 x 1x1+1+1
[03:54:05] [PASSED] far away: 1x1+0+0 x 1x1+3+6
[03:54:05] [PASSED] points intersecting: 0x0+5+10 x 0x0+5+10
[03:54:05] [PASSED] points not intersecting: 0x0+0+0 x 0x0+5+10
[03:54:05] ============= [PASSED] drm_test_rect_intersect =============
[03:54:05] ================ drm_test_rect_calc_hscale ================
[03:54:05] [PASSED] normal use
[03:54:05] [PASSED] out of max range
[03:54:05] [PASSED] out of min range
[03:54:05] [PASSED] zero dst
[03:54:05] [PASSED] negative src
[03:54:05] [PASSED] negative dst
[03:54:05] ============ [PASSED] drm_test_rect_calc_hscale ============
[03:54:05] ================ drm_test_rect_calc_vscale ================
[03:54:05] [PASSED] normal use
[03:54:05] [PASSED] out of max range
[03:54:05] [PASSED] out of min range
[03:54:05] [PASSED] zero dst
[03:54:05] [PASSED] negative src
[03:54:05] [PASSED] negative dst
stty: 'standard input': Inappropriate ioctl for device
[03:54:05] ============ [PASSED] drm_test_rect_calc_vscale ============
[03:54:05] ================== drm_test_rect_rotate ===================
[03:54:05] [PASSED] reflect-x
[03:54:05] [PASSED] reflect-y
[03:54:05] [PASSED] rotate-0
[03:54:05] [PASSED] rotate-90
[03:54:05] [PASSED] rotate-180
[03:54:05] [PASSED] rotate-270
[03:54:05] ============== [PASSED] drm_test_rect_rotate ===============
[03:54:05] ================ drm_test_rect_rotate_inv =================
[03:54:05] [PASSED] reflect-x
[03:54:05] [PASSED] reflect-y
[03:54:05] [PASSED] rotate-0
[03:54:05] [PASSED] rotate-90
[03:54:05] [PASSED] rotate-180
[03:54:05] [PASSED] rotate-270
[03:54:05] ============ [PASSED] drm_test_rect_rotate_inv =============
[03:54:05] ==================== [PASSED] drm_rect =====================
[03:54:05] ============ drm_sysfb_modeset_test (1 subtest) ============
[03:54:05] ============ drm_test_sysfb_build_fourcc_list =============
[03:54:05] [PASSED] no native formats
[03:54:05] [PASSED] XRGB8888 as native format
[03:54:05] [PASSED] remove duplicates
[03:54:05] [PASSED] convert alpha formats
[03:54:05] [PASSED] random formats
[03:54:05] ======== [PASSED] drm_test_sysfb_build_fourcc_list =========
[03:54:05] ============= [PASSED] drm_sysfb_modeset_test ==============
[03:54:05] ================== drm_fixp (2 subtests) ===================
[03:54:05] [PASSED] drm_test_int2fixp
[03:54:05] [PASSED] drm_test_sm2fixp
[03:54:05] ==================== [PASSED] drm_fixp =====================
[03:54:05] ============================================================
[03:54:05] Testing complete. Ran 621 tests: passed: 621
[03:54:05] Elapsed time: 25.778s total, 1.668s configuring, 23.978s building, 0.129s running
+ /kernel/tools/testing/kunit/kunit.py run --kunitconfig /kernel/drivers/gpu/drm/ttm/tests/.kunitconfig
[03:54:05] Configuring KUnit Kernel ...
Regenerating .config ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
[03:54:07] Building KUnit Kernel ...
Populating config with:
$ make ARCH=um O=.kunit olddefconfig
Building with:
$ make all compile_commands.json scripts_gdb ARCH=um O=.kunit --jobs=48
[03:54:16] Starting KUnit Kernel (1/1)...
[03:54:16] ============================================================
Running tests with:
$ .kunit/linux kunit.enable=1 mem=1G console=tty kunit_shutdown=halt
[03:54:16] ================= ttm_device (5 subtests) ==================
[03:54:16] [PASSED] ttm_device_init_basic
[03:54:16] [PASSED] ttm_device_init_multiple
[03:54:16] [PASSED] ttm_device_fini_basic
[03:54:16] [PASSED] ttm_device_init_no_vma_man
[03:54:16] ================== ttm_device_init_pools ==================
[03:54:16] [PASSED] No DMA allocations, no DMA32 required
[03:54:16] [PASSED] DMA allocations, DMA32 required
[03:54:16] [PASSED] No DMA allocations, DMA32 required
[03:54:16] [PASSED] DMA allocations, no DMA32 required
[03:54:16] ============== [PASSED] ttm_device_init_pools ==============
[03:54:16] =================== [PASSED] ttm_device ====================
[03:54:16] ================== ttm_pool (8 subtests) ===================
[03:54:16] ================== ttm_pool_alloc_basic ===================
[03:54:16] [PASSED] One page
[03:54:16] [PASSED] More than one page
[03:54:16] [PASSED] Above the allocation limit
[03:54:16] [PASSED] One page, with coherent DMA mappings enabled
[03:54:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[03:54:16] ============== [PASSED] ttm_pool_alloc_basic ===============
[03:54:16] ============== ttm_pool_alloc_basic_dma_addr ==============
[03:54:16] [PASSED] One page
[03:54:16] [PASSED] More than one page
[03:54:16] [PASSED] Above the allocation limit
[03:54:16] [PASSED] One page, with coherent DMA mappings enabled
[03:54:16] [PASSED] Above the allocation limit, with coherent DMA mappings enabled
[03:54:16] ========== [PASSED] ttm_pool_alloc_basic_dma_addr ==========
[03:54:16] [PASSED] ttm_pool_alloc_order_caching_match
[03:54:16] [PASSED] ttm_pool_alloc_caching_mismatch
[03:54:16] [PASSED] ttm_pool_alloc_order_mismatch
[03:54:16] [PASSED] ttm_pool_free_dma_alloc
[03:54:16] [PASSED] ttm_pool_free_no_dma_alloc
[03:54:16] [PASSED] ttm_pool_fini_basic
[03:54:16] ==================== [PASSED] ttm_pool =====================
[03:54:16] ================ ttm_resource (8 subtests) =================
[03:54:16] ================= ttm_resource_init_basic =================
[03:54:16] [PASSED] Init resource in TTM_PL_SYSTEM
[03:54:16] [PASSED] Init resource in TTM_PL_VRAM
[03:54:16] [PASSED] Init resource in a private placement
[03:54:16] [PASSED] Init resource in TTM_PL_SYSTEM, set placement flags
[03:54:16] ============= [PASSED] ttm_resource_init_basic =============
[03:54:16] [PASSED] ttm_resource_init_pinned
[03:54:16] [PASSED] ttm_resource_fini_basic
[03:54:16] [PASSED] ttm_resource_manager_init_basic
[03:54:16] [PASSED] ttm_resource_manager_usage_basic
[03:54:16] [PASSED] ttm_resource_manager_set_used_basic
[03:54:16] [PASSED] ttm_sys_man_alloc_basic
[03:54:16] [PASSED] ttm_sys_man_free_basic
[03:54:16] ================== [PASSED] ttm_resource ===================
[03:54:16] =================== ttm_tt (15 subtests) ===================
[03:54:16] ==================== ttm_tt_init_basic ====================
[03:54:16] [PASSED] Page-aligned size
[03:54:16] [PASSED] Extra pages requested
[03:54:16] ================ [PASSED] ttm_tt_init_basic ================
[03:54:16] [PASSED] ttm_tt_init_misaligned
[03:54:16] [PASSED] ttm_tt_fini_basic
[03:54:16] [PASSED] ttm_tt_fini_sg
[03:54:16] [PASSED] ttm_tt_fini_shmem
[03:54:16] [PASSED] ttm_tt_create_basic
[03:54:16] [PASSED] ttm_tt_create_invalid_bo_type
[03:54:16] [PASSED] ttm_tt_create_ttm_exists
[03:54:16] [PASSED] ttm_tt_create_failed
[03:54:16] [PASSED] ttm_tt_destroy_basic
[03:54:16] [PASSED] ttm_tt_populate_null_ttm
[03:54:16] [PASSED] ttm_tt_populate_populated_ttm
[03:54:16] [PASSED] ttm_tt_unpopulate_basic
[03:54:16] [PASSED] ttm_tt_unpopulate_empty_ttm
[03:54:16] [PASSED] ttm_tt_swapin_basic
[03:54:16] ===================== [PASSED] ttm_tt ======================
[03:54:16] =================== ttm_bo (14 subtests) ===================
[03:54:16] =========== ttm_bo_reserve_optimistic_no_ticket ===========
[03:54:16] [PASSED] Cannot be interrupted and sleeps
[03:54:16] [PASSED] Cannot be interrupted, locks straight away
[03:54:16] [PASSED] Can be interrupted, sleeps
[03:54:16] ======= [PASSED] ttm_bo_reserve_optimistic_no_ticket =======
[03:54:16] [PASSED] ttm_bo_reserve_locked_no_sleep
[03:54:16] [PASSED] ttm_bo_reserve_no_wait_ticket
[03:54:16] [PASSED] ttm_bo_reserve_double_resv
[03:54:16] [PASSED] ttm_bo_reserve_interrupted
[03:54:16] [PASSED] ttm_bo_reserve_deadlock
[03:54:16] [PASSED] ttm_bo_unreserve_basic
[03:54:16] [PASSED] ttm_bo_unreserve_pinned
[03:54:16] [PASSED] ttm_bo_unreserve_bulk
[03:54:16] [PASSED] ttm_bo_fini_basic
[03:54:16] [PASSED] ttm_bo_fini_shared_resv
[03:54:16] [PASSED] ttm_bo_pin_basic
[03:54:16] [PASSED] ttm_bo_pin_unpin_resource
[03:54:16] [PASSED] ttm_bo_multiple_pin_one_unpin
[03:54:16] ===================== [PASSED] ttm_bo ======================
[03:54:16] ============== ttm_bo_validate (21 subtests) ===============
[03:54:16] ============== ttm_bo_init_reserved_sys_man ===============
[03:54:16] [PASSED] Buffer object for userspace
[03:54:16] [PASSED] Kernel buffer object
[03:54:16] [PASSED] Shared buffer object
[03:54:16] ========== [PASSED] ttm_bo_init_reserved_sys_man ===========
[03:54:16] ============== ttm_bo_init_reserved_mock_man ==============
[03:54:16] [PASSED] Buffer object for userspace
[03:54:16] [PASSED] Kernel buffer object
[03:54:16] [PASSED] Shared buffer object
[03:54:16] ========== [PASSED] ttm_bo_init_reserved_mock_man ==========
[03:54:16] [PASSED] ttm_bo_init_reserved_resv
[03:54:16] ================== ttm_bo_validate_basic ==================
[03:54:16] [PASSED] Buffer object for userspace
[03:54:16] [PASSED] Kernel buffer object
[03:54:16] [PASSED] Shared buffer object
[03:54:16] ============== [PASSED] ttm_bo_validate_basic ==============
[03:54:16] [PASSED] ttm_bo_validate_invalid_placement
[03:54:16] ============= ttm_bo_validate_same_placement ==============
[03:54:16] [PASSED] System manager
[03:54:16] [PASSED] VRAM manager
[03:54:16] ========= [PASSED] ttm_bo_validate_same_placement ==========
[03:54:16] [PASSED] ttm_bo_validate_failed_alloc
[03:54:16] [PASSED] ttm_bo_validate_pinned
[03:54:16] [PASSED] ttm_bo_validate_busy_placement
[03:54:16] ================ ttm_bo_validate_multihop =================
[03:54:16] [PASSED] Buffer object for userspace
[03:54:16] [PASSED] Kernel buffer object
[03:54:16] [PASSED] Shared buffer object
[03:54:16] ============ [PASSED] ttm_bo_validate_multihop =============
[03:54:16] ========== ttm_bo_validate_no_placement_signaled ==========
[03:54:16] [PASSED] Buffer object in system domain, no page vector
[03:54:16] [PASSED] Buffer object in system domain with an existing page vector
[03:54:16] ====== [PASSED] ttm_bo_validate_no_placement_signaled ======
[03:54:16] ======== ttm_bo_validate_no_placement_not_signaled ========
[03:54:16] [PASSED] Buffer object for userspace
[03:54:16] [PASSED] Kernel buffer object
[03:54:16] [PASSED] Shared buffer object
[03:54:16] ==== [PASSED] ttm_bo_validate_no_placement_not_signaled ====
[03:54:16] [PASSED] ttm_bo_validate_move_fence_signaled
[03:54:16] ========= ttm_bo_validate_move_fence_not_signaled =========
[03:54:16] [PASSED] Waits for GPU
[03:54:16] [PASSED] Tries to lock straight away
[03:54:16] ===== [PASSED] ttm_bo_validate_move_fence_not_signaled =====
[03:54:16] [PASSED] ttm_bo_validate_happy_evict
[03:54:16] [PASSED] ttm_bo_validate_all_pinned_evict
[03:54:16] [PASSED] ttm_bo_validate_allowed_only_evict
[03:54:16] [PASSED] ttm_bo_validate_deleted_evict
[03:54:16] [PASSED] ttm_bo_validate_busy_domain_evict
[03:54:16] [PASSED] ttm_bo_validate_evict_gutting
[03:54:16] [PASSED] ttm_bo_validate_recrusive_evict
stty: 'standard input': Inappropriate ioctl for device
[03:54:16] ================= [PASSED] ttm_bo_validate =================
[03:54:16] ============================================================
[03:54:16] Testing complete. Ran 101 tests: passed: 101
[03:54:16] Elapsed time: 11.287s total, 1.693s configuring, 9.328s building, 0.216s running
+ cleanup
++ stat -c %u:%g /kernel
+ chown -R 1003:1003 /kernel
^ permalink raw reply [flat|nested] 20+ messages in thread