All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH] drm/i915/display: limit power defaults on affected Latitude 7490
@ 2026-10-19 20:42 Kenneth Assogba
  2026-10-23 12:52 ` Jani Nikula
  0 siblings, 1 reply; 2+ messages in thread
From: Kenneth Assogba @ 2026-10-19 20:42 UTC (permalink / raw)
  To: jani.nikula, rodrigo.vivi; +Cc: intel-gfx, dri-devel

[-- Attachment #1: Type: text/plain, Size: 1212 bytes --]

A Dell Latitude 7490 (BIOS 1.41.0, PCI 8086:5917, subsystem 1028:081c)
repeatedly froze with its internal display active on Ubuntu
7.0.0-38-generic. Logs contain skl_dpll0_update and
gen9_disable_dc_states warnings. The user reports several freeze-free
days with PSR/DC disabled, including undocked sessions; swap/zswap
changes are a confounding factor.

This RFC disables automatic PSR/DC defaults only for the matching
PCI/DMI identifiers and preserves explicit overrides. Linux 7.3 with
this change built and booted. Without i915 overrides, global
parameters stayed -1 and device values became 0; the internal display
was enabled. Initial checks found no earlier warning names, GPU
hang/reset or OOM patterns.

Unpatched mainline reproduction, separate PSR/DC tests, bisection and
power measurements are missing. Power consumption may increase. Is the
early per-device parameter hook appropriate, and should panel
identification further narrow the match?

The attached text/plain RFC preserves the patch bytes; Gmail changes
pasted diffs. It includes my DCO sign-off and Assisted-by: LLM
attribution.

Report and tests:
https://gist.github.com/kennethassogba/b8332d07d6e4c508307b625cc8a037b6

Kenneth Assogba

[-- Attachment #2: latitude-7490-rfc.patch.txt --]
[-- Type: text/plain, Size: 3598 bytes --]

From a2f6c87b3705283a3e2c66b2b85a04e895488874 Mon Sep 17 00:00:00 2001
From: Kenneth Assogba <kennethassogba@gmail.com>
Date: Mon, 19 Oct 2026 22:26:34 +0200
Subject: [RFC PATCH] drm/i915/display: limit power defaults on affected
 Latitude 7490

A Latitude 7490 with BIOS 1.41.0 repeatedly froze with its internal
display active on Ubuntu 7.0.0-38-generic. The retained journal contains
skl_dpll0_update and gen9_disable_dc_states warnings. The user reports
several freeze-free days with PSR and display C-states disabled together,
including undocked sessions. Swap/zswap changes are a confounding factor.

Disable automatic PSR/DC defaults for PCI 8086:5917, subsystem 1028:081c,
and exact Dell Latitude 7490 / BIOS 1.41.0 DMI matches. Preserve explicit
parameter values. Apply the defaults after the per-device parameter copy,
before display power initialization consumes enable_dc.

Linux 7.3 with this change built and booted on the reporting machine.
Without PSR/DC boot arguments, global values stayed -1 and per-device
values became 0. The internal display was enabled and the initial log
check found neither earlier warning name, GPU hang/reset nor OOM patterns.

This RFC proposes a machine-specific workaround. The underlying cause,
unpatched mainline behavior and the need for both settings remain open.
Disabling these features may increase power consumption.

Link: https://gist.github.com/kennethassogba/b8332d07d6e4c508307b625cc8a037b6
Assisted-by: LLM
Signed-off-by: Kenneth Assogba <kennethassogba@gmail.com>
---
 .../drm/i915/display/intel_display_device.c   | 27 +++++++++++++++++++
 1 file changed, 27 insertions(+)

diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
index f17fc2c..770f524 100644
--- a/drivers/gpu/drm/i915/display/intel_display_device.c
+++ b/drivers/gpu/drm/i915/display/intel_display_device.c
@@ -3,6 +3,7 @@
  * Copyright © 2023 Intel Corporation
  */
 
+#include <linux/dmi.h>
 #include <linux/pci.h>
 
 #include <drm/drm_color_mgmt.h>
@@ -1690,6 +1691,31 @@ static const char *step_name(const struct intel_display_runtime_info *runtime)
 	return strlen(runtime->step_name) ? runtime->step_name : "N/A";
 }
 
+static void intel_display_device_apply_param_quirks(struct intel_display *display,
+						  const struct pci_dev *pdev)
+{
+	struct intel_display_params *params = &display->params;
+
+	/* Limit the workaround to the hardware and firmware reported affected. */
+	if (pdev->vendor != PCI_VENDOR_ID_INTEL || pdev->device != 0x5917 ||
+	    pdev->subsystem_vendor != 0x1028 || pdev->subsystem_device != 0x081c ||
+	    !dmi_match(DMI_SYS_VENDOR, "Dell Inc.") ||
+	    !dmi_match(DMI_PRODUCT_NAME, "Latitude 7490") ||
+	    !dmi_match(DMI_BIOS_VERSION, "1.41.0"))
+		return;
+
+	if (params->enable_psr != -1 && params->enable_dc != -1)
+		return;
+
+	/* Preserve explicit module parameter values for further diagnosis. */
+	if (params->enable_psr == -1)
+		params->enable_psr = 0;
+	if (params->enable_dc == -1)
+		params->enable_dc = 0;
+
+	drm_info(display->drm, "Applying Latitude 7490 display power defaults\n");
+}
+
 struct intel_display *intel_display_device_probe(struct pci_dev *pdev,
 						 const struct intel_display_parent_interface *parent)
 {
@@ -1710,6 +1736,7 @@ struct intel_display *intel_display_device_probe(struct pci_dev *pdev,
 	display->parent = parent;
 
 	intel_display_params_copy(&display->params);
+	intel_display_device_apply_param_quirks(display, pdev);
 
 	if (has_no_display(pdev)) {
 		drm_dbg_kms(display->drm, "Device doesn't have display\n");

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

* Re: [RFC PATCH] drm/i915/display: limit power defaults on affected Latitude 7490
  2026-10-19 20:42 [RFC PATCH] drm/i915/display: limit power defaults on affected Latitude 7490 Kenneth Assogba
@ 2026-10-23 12:52 ` Jani Nikula
  0 siblings, 0 replies; 2+ messages in thread
From: Jani Nikula @ 2026-10-23 12:52 UTC (permalink / raw)
  To: Kenneth Assogba, rodrigo.vivi; +Cc: intel-gfx, dri-devel

On Mon, 19 Oct 2026, Kenneth Assogba <kennethassogba@gmail.com> wrote:
> A Dell Latitude 7490 (BIOS 1.41.0, PCI 8086:5917, subsystem 1028:081c)
> repeatedly froze with its internal display active on Ubuntu
> 7.0.0-38-generic. Logs contain skl_dpll0_update and
> gen9_disable_dc_states warnings. The user reports several freeze-free
> days with PSR/DC disabled, including undocked sessions; swap/zswap
> changes are a confounding factor.
>
> This RFC disables automatic PSR/DC defaults only for the matching
> PCI/DMI identifiers and preserves explicit overrides. Linux 7.3 with
> this change built and booted. Without i915 overrides, global
> parameters stayed -1 and device values became 0; the internal display
> was enabled. Initial checks found no earlier warning names, GPU
> hang/reset or OOM patterns.
>
> Unpatched mainline reproduction, separate PSR/DC tests, bisection and
> power measurements are missing. Power consumption may increase. Is the
> early per-device parameter hook appropriate, and should panel
> identification further narrow the match?

Please prefer filing bugs as described at [1]. The goal is to root cause
issues and make stuff work in a generic fashion, not apply quirks on
individual machines as the first course of action.

Sometimes when we do have to use quirks, we have existing frameworks for
it, and adding stuff inline like this is certainly not acceptable.


BR,
Jani.


[1] https://drm.pages.freedesktop.org/intel-docs/how-to-file-i915-bugs.html


>
> The attached text/plain RFC preserves the patch bytes; Gmail changes
> pasted diffs. It includes my DCO sign-off and Assisted-by: LLM
> attribution.
>
> Report and tests:
> https://gist.github.com/kennethassogba/b8332d07d6e4c508307b625cc8a037b6
>
> Kenneth Assogba
> From a2f6c87b3705283a3e2c66b2b85a04e895488874 Mon Sep 17 00:00:00 2001
> From: Kenneth Assogba <kennethassogba@gmail.com>
> Date: Mon, 19 Oct 2026 22:26:34 +0200
> Subject: [RFC PATCH] drm/i915/display: limit power defaults on affected
>  Latitude 7490
>
> A Latitude 7490 with BIOS 1.41.0 repeatedly froze with its internal
> display active on Ubuntu 7.0.0-38-generic. The retained journal contains
> skl_dpll0_update and gen9_disable_dc_states warnings. The user reports
> several freeze-free days with PSR and display C-states disabled together,
> including undocked sessions. Swap/zswap changes are a confounding factor.
>
> Disable automatic PSR/DC defaults for PCI 8086:5917, subsystem 1028:081c,
> and exact Dell Latitude 7490 / BIOS 1.41.0 DMI matches. Preserve explicit
> parameter values. Apply the defaults after the per-device parameter copy,
> before display power initialization consumes enable_dc.
>
> Linux 7.3 with this change built and booted on the reporting machine.
> Without PSR/DC boot arguments, global values stayed -1 and per-device
> values became 0. The internal display was enabled and the initial log
> check found neither earlier warning name, GPU hang/reset nor OOM patterns.
>
> This RFC proposes a machine-specific workaround. The underlying cause,
> unpatched mainline behavior and the need for both settings remain open.
> Disabling these features may increase power consumption.
>
> Link: https://gist.github.com/kennethassogba/b8332d07d6e4c508307b625cc8a037b6
> Assisted-by: LLM
> Signed-off-by: Kenneth Assogba <kennethassogba@gmail.com>
> ---
>  .../drm/i915/display/intel_display_device.c   | 27 +++++++++++++++++++
>  1 file changed, 27 insertions(+)
>
> diff --git a/drivers/gpu/drm/i915/display/intel_display_device.c b/drivers/gpu/drm/i915/display/intel_display_device.c
> index f17fc2c..770f524 100644
> --- a/drivers/gpu/drm/i915/display/intel_display_device.c
> +++ b/drivers/gpu/drm/i915/display/intel_display_device.c
> @@ -3,6 +3,7 @@
>   * Copyright © 2023 Intel Corporation
>   */
>  
> +#include <linux/dmi.h>
>  #include <linux/pci.h>
>  
>  #include <drm/drm_color_mgmt.h>
> @@ -1690,6 +1691,31 @@ static const char *step_name(const struct intel_display_runtime_info *runtime)
>  	return strlen(runtime->step_name) ? runtime->step_name : "N/A";
>  }
>  
> +static void intel_display_device_apply_param_quirks(struct intel_display *display,
> +						  const struct pci_dev *pdev)
> +{
> +	struct intel_display_params *params = &display->params;
> +
> +	/* Limit the workaround to the hardware and firmware reported affected. */
> +	if (pdev->vendor != PCI_VENDOR_ID_INTEL || pdev->device != 0x5917 ||
> +	    pdev->subsystem_vendor != 0x1028 || pdev->subsystem_device != 0x081c ||
> +	    !dmi_match(DMI_SYS_VENDOR, "Dell Inc.") ||
> +	    !dmi_match(DMI_PRODUCT_NAME, "Latitude 7490") ||
> +	    !dmi_match(DMI_BIOS_VERSION, "1.41.0"))
> +		return;
> +
> +	if (params->enable_psr != -1 && params->enable_dc != -1)
> +		return;
> +
> +	/* Preserve explicit module parameter values for further diagnosis. */
> +	if (params->enable_psr == -1)
> +		params->enable_psr = 0;
> +	if (params->enable_dc == -1)
> +		params->enable_dc = 0;
> +
> +	drm_info(display->drm, "Applying Latitude 7490 display power defaults\n");
> +}
> +
>  struct intel_display *intel_display_device_probe(struct pci_dev *pdev,
>  						 const struct intel_display_parent_interface *parent)
>  {
> @@ -1710,6 +1736,7 @@ struct intel_display *intel_display_device_probe(struct pci_dev *pdev,
>  	display->parent = parent;
>  
>  	intel_display_params_copy(&display->params);
> +	intel_display_device_apply_param_quirks(display, pdev);
>  
>  	if (has_no_display(pdev)) {
>  		drm_dbg_kms(display->drm, "Device doesn't have display\n");

-- 
Jani Nikula, Intel

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

end of thread, other threads:[~2026-10-23 12:52 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-19 20:42 [RFC PATCH] drm/i915/display: limit power defaults on affected Latitude 7490 Kenneth Assogba
2026-10-23 12:52 ` Jani Nikula

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.