On Mon, 19 Oct 2026, Kenneth Assogba <[email protected]> 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 <[email protected]> > 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 <[email protected]> > --- > .../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
