From d9540b8af196a240d8d276d11358587e428b97d6 Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Thu, 10 Jul 2025 17:59:23 +0200 Subject: [PATCH 1/6] add Dell Pro 14 PA14250 Mainly finding a combination of versions and parameters for xe graphics driver --- dell/dell-pro/PA14250/default.nix | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 dell/dell-pro/PA14250/default.nix diff --git a/dell/dell-pro/PA14250/default.nix b/dell/dell-pro/PA14250/default.nix new file mode 100644 index 000000000..80f9eb371 --- /dev/null +++ b/dell/dell-pro/PA14250/default.nix @@ -0,0 +1,39 @@ +{ lib, ... }: + +{ + imports = [ + ../../../common/cpu/intel/lunar-lake + ../../../common/pc/laptop + ../../../common/pc/ssd + ]; + + hardware.intelgpu.driver = "xe"; + # use xe graphics module, i915 doesn't seem to work well + # just selecting xe seems to be not enough + boot.blacklistedKernelModules = [ "i915" ]; + + boot.kernelParams = [ + # makes external display more stable + "xe.psr_safest_params=1" + # extra debug logs just in case something breaks + "xe.verbose_state_checks=true" + ]; + + # 6.15.5 and 6.12.34 seems to work, newer versions in 25.05 fail to load graphics + # TODO: find or file upstream issue + # meanwhile on 25.05 you can use + # boot.kernelPackages = pkgs.linuxPackages_latest; + assertions = [ + { + assertion = config.boot.kernelPackages.kernel.version != "6.12.35"; + message = "probe with driver xe failed with error -110"; + } + { + assertion = config.boot.kernelPackages.kernel.version != "6.12.36"; + message = "probe with driver xe failed with error -110"; + } + ]; + + # Recommended in NixOS/nixos-hardware#127 + services.thermald.enable = lib.mkDefault true; +} From 02a2f1d4fbd3a50109a9c3a9ecb4a92015a2dec9 Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Mon, 28 Jul 2025 10:30:39 +0200 Subject: [PATCH 2/6] update broken version range, auto-bump kernel --- dell/dell-pro/PA14250/default.nix | 59 +++++++++++++++++++++---------- 1 file changed, 40 insertions(+), 19 deletions(-) diff --git a/dell/dell-pro/PA14250/default.nix b/dell/dell-pro/PA14250/default.nix index 80f9eb371..68b6e8820 100644 --- a/dell/dell-pro/PA14250/default.nix +++ b/dell/dell-pro/PA14250/default.nix @@ -1,5 +1,17 @@ { lib, ... }: +# Xe module fails to load on 6.12.x starting 6.12.35 +# tested to work on 6.13.4 or newer +# +# Bisect points at d42b44736ea29fa6d0c3cb9c75569314134b7732 but +# 6.13 series 30d105577a3319094f8ae5ff1ceea670f1931487 looks identical +# so it has to be not just that commit but its interactions with 6.12 +# driver version +# +# https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/5373 +let + brokenXeModule = version: lib.versionAtLeast version "6.12.35" && lib.versionOlder version "6.13.4"; +in { imports = [ ../../../common/cpu/intel/lunar-lake @@ -8,29 +20,38 @@ ]; hardware.intelgpu.driver = "xe"; - # use xe graphics module, i915 doesn't seem to work well - # just selecting xe seems to be not enough - boot.blacklistedKernelModules = [ "i915" ]; - boot.kernelParams = [ - # makes external display more stable - "xe.psr_safest_params=1" - # extra debug logs just in case something breaks - "xe.verbose_state_checks=true" - ]; - - # 6.15.5 and 6.12.34 seems to work, newer versions in 25.05 fail to load graphics - # TODO: find or file upstream issue - # meanwhile on 25.05 you can use - # boot.kernelPackages = pkgs.linuxPackages_latest; - assertions = [ + boot = lib.mkMerge [ { - assertion = config.boot.kernelPackages.kernel.version != "6.12.35"; - message = "probe with driver xe failed with error -110"; + # use xe graphics module, i915 doesn't seem to work well + # just selecting xe seems to be not enough + blacklistedKernelModules = [ "i915" ]; + + kernelParams = [ + # makes external display more stable + "xe.psr_safest_params=1" + # extra debug logs just in case something breaks + "xe.verbose_state_checks=true" + ]; } + + # we can't inspect config.boot.kernelPackages.kernel.version to override kernelPackages as it's create a loop + # instead let's auto-apply latest kernel if linux_default is broken + # + # TODO: this may unnecessarily bump kernel to latest if say 6.13 is manually selected in configuration + # maybe we need extra parameter to this module? Though should still already be possible to overrule module kernel selection. + # Looking at linux_default version is also less restrictive than always setting latest, + # once 6.12 is fixed we can update brokenXeModule expression and only do override on old nixpkgs versions that haven't yet + # upgraded to a fixed kernel + (lib.mkIf (brokenXeModule pkgs.linuxKernel.packageAliases.linux_default.kernel.version) { + kernelPackages = pkgs.linuxPackages_latest; + }) + ]; + + assertions = lib.optionals (config.hardware.intelgpu.driver == "xe") [ { - assertion = config.boot.kernelPackages.kernel.version != "6.12.36"; - message = "probe with driver xe failed with error -110"; + assertion = !(brokenXeModule config.boot.kernelPackages.kernel.version); + message = "xe driver would fail with 'probe with driver xe failed with error -110'"; } ]; From 8d0bc59bfbdc8a0320537b4fd1db04571e1737a0 Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Mon, 28 Jul 2025 10:33:01 +0200 Subject: [PATCH 3/6] add to flake.nix --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index 284186b6e..77f2cdac2 100644 --- a/flake.nix +++ b/flake.nix @@ -93,6 +93,7 @@ dell-precision-5530 = import ./dell/precision/5530; dell-precision-5560 = import ./dell/precision/5560; dell-precision-7520 = import ./dell/precision/7520; + dell-pro-14-PA14250 = import ./dell/dell-pro/PA14250; dell-xps-13-7390 = import ./dell/xps/13-7390; dell-xps-13-9300 = import ./dell/xps/13-9300; dell-xps-13-9310 = import ./dell/xps/13-9310; From 2eb81d657d372cbab2359b5cbdb5570f9c8387a3 Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Mon, 28 Jul 2025 10:35:09 +0200 Subject: [PATCH 4/6] add to readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index a064978f8..e1f9e9850 100644 --- a/README.md +++ b/README.md @@ -160,6 +160,7 @@ See code for all available configurations. | [Dell Precision 5490](dell/precision/5490) | `` | `dell-precision-5490` | | [Dell Precision 5530](dell/precision/5530) | `` | `dell-precision-5530` | | [Dell Precision 7520](dell/precision/7520) | `` | `dell-precision-7520` | +| [Dell Pro 14 PA14250](dell/dell-pro/PA14250) | `` | `dell-pro-14-PA14250` | | [Dell XPS 13 7390](dell/xps/13-7390) | `` | `dell-xps-13-7390` | | [Dell XPS 13 9300](dell/xps/13-9300) | `` | `dell-xps-13-9300` | | [Dell XPS 13 9310](dell/xps/13-9310) | `` | `dell-xps-13-9310` | From 9f13f774ef04c3e33a2831749bc15d1e176af45b Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Fri, 1 Aug 2025 13:33:07 +0200 Subject: [PATCH 5/6] Update dell/dell-pro/PA14250/default.nix --- dell/dell-pro/PA14250/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dell/dell-pro/PA14250/default.nix b/dell/dell-pro/PA14250/default.nix index 68b6e8820..b883c4a9f 100644 --- a/dell/dell-pro/PA14250/default.nix +++ b/dell/dell-pro/PA14250/default.nix @@ -10,7 +10,7 @@ # # https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/5373 let - brokenXeModule = version: lib.versionAtLeast version "6.12.35" && lib.versionOlder version "6.13.4"; + brokenXeModule = version: lib.versionAtLeast version "6.12.35" && lib.versionOlder version "6.12.41"; in { imports = [ From ad8e00d11334e5c193fddaab83d738b41a89cbf9 Mon Sep 17 00:00:00 2001 From: Dmitry Ivankov Date: Fri, 1 Aug 2025 13:33:55 +0200 Subject: [PATCH 6/6] Update dell/dell-pro/PA14250/default.nix --- dell/dell-pro/PA14250/default.nix | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/dell/dell-pro/PA14250/default.nix b/dell/dell-pro/PA14250/default.nix index b883c4a9f..989cce634 100644 --- a/dell/dell-pro/PA14250/default.nix +++ b/dell/dell-pro/PA14250/default.nix @@ -1,12 +1,6 @@ { lib, ... }: -# Xe module fails to load on 6.12.x starting 6.12.35 -# tested to work on 6.13.4 or newer -# -# Bisect points at d42b44736ea29fa6d0c3cb9c75569314134b7732 but -# 6.13 series 30d105577a3319094f8ae5ff1ceea670f1931487 looks identical -# so it has to be not just that commit but its interactions with 6.12 -# driver version +# Xe module fails to load on 6.12.x for 6.12.35..6.12.40 and fixed in 6.12.41 # # https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/5373 let