* adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces
[not found] <348041964.128703.1791459745347.ref@mail.yahoo.com>
@ 2026-10-08 11:42 ` jp_2422-git
2026-10-08 11:49 ` Jani Nikula
2026-10-08 12:15 ` ✗ LGCI.VerificationFailed: failure for " Patchwork
1 sibling, 1 reply; 5+ messages in thread
From: jp_2422-git @ 2026-10-08 11:42 UTC (permalink / raw)
To: intel-gfx@lists.freedesktop.org
The issue discussed at https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/12246 affects a number of laptops and Bios combinations, and appears to be the result of buggy Bios'es where the Intel VBT table is listing non-existent Display Ports on Alder Lake laptops.
The following patch skips the creation of the non-existent port early on in intel_ddi_init(), so preventing the logs from being flooded with the warnings. It uses a new i915 display parameter to allow the user to select the type c port to skip with a boot option, and fixes the problem. Please can you advise whether you would accept this patch.
diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
index a46ab5d3d..5b9ebdecd 100644
--- a/drivers/gpu/drm/i915/display/intel_ddi.c
+++ b/drivers/gpu/drm/i915/display/intel_ddi.c
@@ -50,6 +50,7 @@
#include "intel_ddi_buf_trans.h"
#include "intel_de.h"
#include "intel_dip.h"
+#include "intel_display_params.h"
#include "intel_display_power.h"
#include "intel_display_regs.h"
#include "intel_display_types.h"
@@ -5239,6 +5240,24 @@ static const char *intel_ddi_encoder_name(struct intel_display *display,
return seq_buf_str(s);
}
+static enum port get_skip_tc_port_param(struct intel_display *display)
+{
+ const char *param;
+ enum port port;
+
+ param=display->params.skip_tc_port;
+
+ if(param==NULL)
+ return PORT_NONE;
+
+ for_each_port(port) {
+ if (port_name(port)==*param)
+ return port;
+ }
+
+ return PORT_NONE;
+}
+
void intel_ddi_init(struct intel_display *display,
const struct intel_bios_encoder_data *devdata)
{
@@ -5249,11 +5268,20 @@ void intel_ddi_init(struct intel_display *display,
enum port port;
enum phy phy;
u32 ddi_buf_ctl;
+ enum port skip_tc_port_param;
port = intel_bios_encoder_port(devdata);
if (port == PORT_NONE)
return;
+ skip_tc_port_param=get_skip_tc_port_param(display);
+
+ if(port == skip_tc_port_param) {
+ drm_dbg_kms(display->drm,
+ "Skipping creation of Port %c due to the skip_tc_port parameter\n", port_name(port));
+ return;
+ }
+
if (!port_strap_detected(display, port)) {
drm_dbg_kms(display->drm,
"Port %c strap not detected\n", port_name(port));
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
index ca0ef466b..2f516ca4e 100644
--- a/drivers/gpu/drm/i915/display/intel_display_params.c
+++ b/drivers/gpu/drm/i915/display/intel_display_params.c
@@ -143,6 +143,10 @@ intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
"(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
"Default: -1");
+intel_display_param_named_unsafe(skip_tc_port, charp, 0400,
+ "Skip the use of the specified Type-C port "
+ " (single letter in the range [A - I])");
+
__maybe_unused
static void _param_print_bool(struct drm_printer *p, const char *driver_name,
const char *name, bool val)
diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
index 5c5a1a135..6356438f6 100644
--- a/drivers/gpu/drm/i915/display/intel_display_params.h
+++ b/drivers/gpu/drm/i915/display/intel_display_params.h
@@ -51,6 +51,7 @@ struct drm_printer;
param(bool, psr_safest_params, false, 0400) \
param(bool, enable_psr2_sel_fetch, true, 0400) \
param(int, enable_dmc_wl, -1, 0400) \
+ param(char *, skip_tc_port, NULL, 0400) \
/*
* Debugfs-only knob (per-device): no matching module_param is registered
* in intel_display_params.c on purpose. Runtime-toggle via debugfs.
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces
2026-10-08 11:42 ` adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces jp_2422-git
@ 2026-10-08 11:49 ` Jani Nikula
2026-10-08 11:51 ` Jani Nikula
2026-10-08 12:13 ` jp_2422-git
0 siblings, 2 replies; 5+ messages in thread
From: Jani Nikula @ 2026-10-08 11:49 UTC (permalink / raw)
To: jp_2422-git@yahoo.com, intel-gfx@lists.freedesktop.org
On Thu, 08 Oct 2026, "jp_2422-git@yahoo.com" <jp_2422-git@yahoo.com> wrote:
> The issue discussed at https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/12246 affects a number of laptops and Bios combinations, and appears to be the result of buggy Bios'es where the Intel VBT table is listing non-existent Display Ports on Alder Lake laptops.
>
> The following patch skips the creation of the non-existent port early
> on in intel_ddi_init(), so preventing the logs from being flooded with
> the warnings. It uses a new i915 display parameter to allow the user
> to select the type c port to skip with a boot option, and fixes the
> problem. Please can you advise whether you would accept this patch.
Thanks for the patch, but sorry, module parameters aren't the solution
to work around issues.
BR,
Jani.
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index a46ab5d3d..5b9ebdecd 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -50,6 +50,7 @@
> #include "intel_ddi_buf_trans.h"
> #include "intel_de.h"
> #include "intel_dip.h"
> +#include "intel_display_params.h"
> #include "intel_display_power.h"
> #include "intel_display_regs.h"
> #include "intel_display_types.h"
> @@ -5239,6 +5240,24 @@ static const char *intel_ddi_encoder_name(struct intel_display *display,
> return seq_buf_str(s);
> }
>
> +static enum port get_skip_tc_port_param(struct intel_display *display)
> +{
> + const char *param;
> + enum port port;
> +
> + param=display->params.skip_tc_port;
> +
> + if(param==NULL)
> + return PORT_NONE;
> +
> + for_each_port(port) {
> + if (port_name(port)==*param)
> + return port;
> + }
> +
> + return PORT_NONE;
> +}
> +
> void intel_ddi_init(struct intel_display *display,
> const struct intel_bios_encoder_data *devdata)
> {
> @@ -5249,11 +5268,20 @@ void intel_ddi_init(struct intel_display *display,
> enum port port;
> enum phy phy;
> u32 ddi_buf_ctl;
> + enum port skip_tc_port_param;
>
> port = intel_bios_encoder_port(devdata);
> if (port == PORT_NONE)
> return;
>
> + skip_tc_port_param=get_skip_tc_port_param(display);
> +
> + if(port == skip_tc_port_param) {
> + drm_dbg_kms(display->drm,
> + "Skipping creation of Port %c due to the skip_tc_port parameter\n", port_name(port));
> + return;
> + }
> +
> if (!port_strap_detected(display, port)) {
> drm_dbg_kms(display->drm,
> "Port %c strap not detected\n", port_name(port));
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
> index ca0ef466b..2f516ca4e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
> @@ -143,6 +143,10 @@ intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
> "(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
> "Default: -1");
>
> +intel_display_param_named_unsafe(skip_tc_port, charp, 0400,
> + "Skip the use of the specified Type-C port "
> + " (single letter in the range [A - I])");
> +
> __maybe_unused
> static void _param_print_bool(struct drm_printer *p, const char *driver_name,
> const char *name, bool val)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
> index 5c5a1a135..6356438f6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.h
> @@ -51,6 +51,7 @@ struct drm_printer;
> param(bool, psr_safest_params, false, 0400) \
> param(bool, enable_psr2_sel_fetch, true, 0400) \
> param(int, enable_dmc_wl, -1, 0400) \
> + param(char *, skip_tc_port, NULL, 0400) \
> /*
> * Debugfs-only knob (per-device): no matching module_param is registered
> * in intel_display_params.c on purpose. Runtime-toggle via debugfs.
>
>
>
>
>
>
>
>
>
>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces
2026-10-08 11:49 ` Jani Nikula
@ 2026-10-08 11:51 ` Jani Nikula
2026-10-08 12:13 ` jp_2422-git
1 sibling, 0 replies; 5+ messages in thread
From: Jani Nikula @ 2026-10-08 11:51 UTC (permalink / raw)
To: jp_2422-git@yahoo.com, intel-gfx@lists.freedesktop.org, imre.deak
On Thu, 08 Oct 2026, Jani Nikula <jani.nikula@linux.intel.com> wrote:
> On Thu, 08 Oct 2026, "jp_2422-git@yahoo.com" <jp_2422-git@yahoo.com> wrote:
>> The issue discussed at https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/12246 affects a number of laptops and Bios combinations, and appears to be the result of buggy Bios'es where the Intel VBT table is listing non-existent Display Ports on Alder Lake laptops.
>>
>> The following patch skips the creation of the non-existent port early
>> on in intel_ddi_init(), so preventing the logs from being flooded with
>> the warnings. It uses a new i915 display parameter to allow the user
>> to select the type c port to skip with a boot option, and fixes the
>> problem. Please can you advise whether you would accept this patch.
>
> Thanks for the patch, but sorry, module parameters aren't the solution
> to work around issues.
Imre, can you have a look at the issue, please?
BR,
Jani.
>
> BR,
> Jani.
>
>>
>> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
>> index a46ab5d3d..5b9ebdecd 100644
>> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
>> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
>> @@ -50,6 +50,7 @@
>> #include "intel_ddi_buf_trans.h"
>> #include "intel_de.h"
>> #include "intel_dip.h"
>> +#include "intel_display_params.h"
>> #include "intel_display_power.h"
>> #include "intel_display_regs.h"
>> #include "intel_display_types.h"
>> @@ -5239,6 +5240,24 @@ static const char *intel_ddi_encoder_name(struct intel_display *display,
>> return seq_buf_str(s);
>> }
>>
>> +static enum port get_skip_tc_port_param(struct intel_display *display)
>> +{
>> + const char *param;
>> + enum port port;
>> +
>> + param=display->params.skip_tc_port;
>> +
>> + if(param==NULL)
>> + return PORT_NONE;
>> +
>> + for_each_port(port) {
>> + if (port_name(port)==*param)
>> + return port;
>> + }
>> +
>> + return PORT_NONE;
>> +}
>> +
>> void intel_ddi_init(struct intel_display *display,
>> const struct intel_bios_encoder_data *devdata)
>> {
>> @@ -5249,11 +5268,20 @@ void intel_ddi_init(struct intel_display *display,
>> enum port port;
>> enum phy phy;
>> u32 ddi_buf_ctl;
>> + enum port skip_tc_port_param;
>>
>> port = intel_bios_encoder_port(devdata);
>> if (port == PORT_NONE)
>> return;
>>
>> + skip_tc_port_param=get_skip_tc_port_param(display);
>> +
>> + if(port == skip_tc_port_param) {
>> + drm_dbg_kms(display->drm,
>> + "Skipping creation of Port %c due to the skip_tc_port parameter\n", port_name(port));
>> + return;
>> + }
>> +
>> if (!port_strap_detected(display, port)) {
>> drm_dbg_kms(display->drm,
>> "Port %c strap not detected\n", port_name(port));
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
>> index ca0ef466b..2f516ca4e 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
>> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
>> @@ -143,6 +143,10 @@ intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
>> "(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
>> "Default: -1");
>>
>> +intel_display_param_named_unsafe(skip_tc_port, charp, 0400,
>> + "Skip the use of the specified Type-C port "
>> + " (single letter in the range [A - I])");
>> +
>> __maybe_unused
>> static void _param_print_bool(struct drm_printer *p, const char *driver_name,
>> const char *name, bool val)
>> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
>> index 5c5a1a135..6356438f6 100644
>> --- a/drivers/gpu/drm/i915/display/intel_display_params.h
>> +++ b/drivers/gpu/drm/i915/display/intel_display_params.h
>> @@ -51,6 +51,7 @@ struct drm_printer;
>> param(bool, psr_safest_params, false, 0400) \
>> param(bool, enable_psr2_sel_fetch, true, 0400) \
>> param(int, enable_dmc_wl, -1, 0400) \
>> + param(char *, skip_tc_port, NULL, 0400) \
>> /*
>> * Debugfs-only knob (per-device): no matching module_param is registered
>> * in intel_display_params.c on purpose. Runtime-toggle via debugfs.
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces
2026-10-08 11:49 ` Jani Nikula
2026-10-08 11:51 ` Jani Nikula
@ 2026-10-08 12:13 ` jp_2422-git
1 sibling, 0 replies; 5+ messages in thread
From: jp_2422-git @ 2026-10-08 12:13 UTC (permalink / raw)
To: intel-gfx@lists.freedesktop.org, Jani Nikula
Ok, thanks. I 'll keep it just as a private fix in the absence a suitable bios update.
On Thursday, 8 October 2026 at 12:49:19 BST, Jani Nikula <jani.nikula@linux.intel.com> wrote:
On Thu, 08 Oct 2026, "jp_2422-git@yahoo.com" <jp_2422-git@yahoo.com> wrote:
> The issue discussed at https://gitlab.freedesktop.org/drm/i915/kernel/-/work_items/12246 affects a number of laptops and Bios combinations, and appears to be the result of buggy Bios'es where the Intel VBT table is listing non-existent Display Ports on Alder Lake laptops.
>
> The following patch skips the creation of the non-existent port early
> on in intel_ddi_init(), so preventing the logs from being flooded with
> the warnings. It uses a new i915 display parameter to allow the user
> to select the type c port to skip with a boot option, and fixes the
> problem. Please can you advise whether you would accept this patch.
Thanks for the patch, but sorry, module parameters aren't the solution
to work around issues.
BR,
Jani.
>
> diff --git a/drivers/gpu/drm/i915/display/intel_ddi.c b/drivers/gpu/drm/i915/display/intel_ddi.c
> index a46ab5d3d..5b9ebdecd 100644
> --- a/drivers/gpu/drm/i915/display/intel_ddi.c
> +++ b/drivers/gpu/drm/i915/display/intel_ddi.c
> @@ -50,6 +50,7 @@
> #include "intel_ddi_buf_trans.h"
> #include "intel_de.h"
> #include "intel_dip.h"
> +#include "intel_display_params.h"
> #include "intel_display_power.h"
> #include "intel_display_regs.h"
> #include "intel_display_types.h"
> @@ -5239,6 +5240,24 @@ static const char *intel_ddi_encoder_name(struct intel_display *display,
> return seq_buf_str(s);
> }
>
> +static enum port get_skip_tc_port_param(struct intel_display *display)
> +{
> + const char *param;
> + enum port port;
> +
> + param=display->params.skip_tc_port;
> +
> + if(param==NULL)
> + return PORT_NONE;
> +
> + for_each_port(port) {
> + if (port_name(port)==*param)
> + return port;
> + }
> +
> + return PORT_NONE;
> +}
> +
> void intel_ddi_init(struct intel_display *display,
> const struct intel_bios_encoder_data *devdata)
> {
> @@ -5249,11 +5268,20 @@ void intel_ddi_init(struct intel_display *display,
> enum port port;
> enum phy phy;
> u32 ddi_buf_ctl;
> + enum port skip_tc_port_param;
>
> port = intel_bios_encoder_port(devdata);
> if (port == PORT_NONE)
> return;
>
> + skip_tc_port_param=get_skip_tc_port_param(display);
> +
> + if(port == skip_tc_port_param) {
> + drm_dbg_kms(display->drm,
> + "Skipping creation of Port %c due to the skip_tc_port parameter\n", port_name(port));
> + return;
> + }
> +
> if (!port_strap_detected(display, port)) {
> drm_dbg_kms(display->drm,
> "Port %c strap not detected\n", port_name(port));
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.c b/drivers/gpu/drm/i915/display/intel_display_params.c
> index ca0ef466b..2f516ca4e 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.c
> @@ -143,6 +143,10 @@ intel_display_param_named_unsafe(enable_dmc_wl, int, 0400,
> "(-1=use per-chip default, 0=disabled, 1=enabled, 2=match any register, 3=always locked) "
> "Default: -1");
>
> +intel_display_param_named_unsafe(skip_tc_port, charp, 0400,
> + "Skip the use of the specified Type-C port "
> + " (single letter in the range [A - I])");
> +
> __maybe_unused
> static void _param_print_bool(struct drm_printer *p, const char *driver_name,
> const char *name, bool val)
> diff --git a/drivers/gpu/drm/i915/display/intel_display_params.h b/drivers/gpu/drm/i915/display/intel_display_params.h
> index 5c5a1a135..6356438f6 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_params.h
> +++ b/drivers/gpu/drm/i915/display/intel_display_params.h
> @@ -51,6 +51,7 @@ struct drm_printer;
> param(bool, psr_safest_params, false, 0400) \
> param(bool, enable_psr2_sel_fetch, true, 0400) \
> param(int, enable_dmc_wl, -1, 0400) \
> + param(char *, skip_tc_port, NULL, 0400) \
> /*
> * Debugfs-only knob (per-device): no matching module_param is registered
> * in intel_display_params.c on purpose. Runtime-toggle via debugfs.
>
>
>
>
>
>
>
>
>
>
--
Jani Nikula, Intel
^ permalink raw reply [flat|nested] 5+ messages in thread
* ✗ LGCI.VerificationFailed: failure for adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces
[not found] <348041964.128703.1791459745347.ref@mail.yahoo.com>
2026-10-08 11:42 ` adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces jp_2422-git
@ 2026-10-08 12:15 ` Patchwork
1 sibling, 0 replies; 5+ messages in thread
From: Patchwork @ 2026-10-08 12:15 UTC (permalink / raw)
To: jp_2422-git@yahoo.com; +Cc: intel-gfx
== Series Details ==
Series: adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces
URL : https://patchwork.freedesktop.org/series/175762/
State : failure
== Summary ==
Series author address 'jp_2422-git@yahoo.com' is not on the allowlist, which prevents CI from being automatically triggered.
If you want CI to run for this series, ask Patchwork project owners to click 'retest' on the series in Patchwork.
Exception occurred during validation, bailing out!
Build URL: http://gfx-ci.igk.intel.com:8080/job/CI_PW_kernel/189815/ (on built-in)
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-08 12:15 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <348041964.128703.1791459745347.ref@mail.yahoo.com>
2026-10-08 11:42 ` adlp_tc_phy_connect [i915] floods logs with drm_WARN_ON(tc->mode == TC_PORT_LEGACY) call traces jp_2422-git
2026-10-08 11:49 ` Jani Nikula
2026-10-08 11:51 ` Jani Nikula
2026-10-08 12:13 ` jp_2422-git
2026-10-08 12:15 ` ✗ LGCI.VerificationFailed: failure for " Patchwork
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox