Bug 2532653
| Summary: | Latest version of Intel-lpmd makes power-save cause everything to be slow | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | devinobannon |
| Component: | intel-lpmd | Assignee: | Ali Erdinc Koroglu <ali.koroglu> |
| Status: | NEW --- | QA Contact: | |
| Severity: | medium | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | 44 | CC: | ali.koroglu, fuchsi_redhat, ifoolb, kenya888, kkoukiou, lx, ngompa13, rh, sgraf, tomastrnka, tpopela |
| Target Milestone: | --- | Keywords: | Regression |
| Target Release: | --- | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | --- | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | Type: | --- | |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
|
Description
devinobannon
2026-09-13 05:50:13 UTC
I dug a bit into this, as I am also affected (IdeaPad Pro 5i with an Intel Core Ultra 7 255H). I run Fedora KDE Workstation.
intel_lpmd gained support for Arrow Lake H (Core Ultra 2XXH) CPUs in the last update. However, it appears to ship with a very aggressive default config and might also be buggy. The config for Arrow Lake is at "/etc/intel_lpmd/intel_lpmd_config_F6_M197.xml", and by default it:
1. Enables all cores (P, E and LPE) in Performance Mode.
2. Disables P cores in Balanced Mode.
3. Disables P and E cores in Energy Saver Mode.
This causes significant performance degradation in balanced mode and unusable performance in energy saver mode, as the LPE cores are extremely weak on Arrow Lake, they don't even have any L3 cache.
I wrote a fixed config. This config:
1. Enables all cores in Performance Mode.
2. Dynamically Enables / Disables P cores based on system load in Balanced and Energy Saver Mode.
3. E and LPE always stay enabled.
Fixed config (replace "/etc/intel_lpmd/intel_lpmd_config_F6_M197.xml") (F6_M197 identifies the Arrow Lake H CPUs):
```
<?xml version="1.0"?>
<Configuration>
<lp_mode_cpus></lp_mode_cpus>
<lp_mode_epp></lp_mode_epp>
<Mode>1</Mode>
<PerformanceDef>-1</PerformanceDef>
<BalancedDef>0</BalancedDef>
<PowersaverDef>0</PowersaverDef>
<HfiLpmEnable>0</HfiLpmEnable>
<WLTHintEnable>1</WLTHintEnable>
<WLTHintPollEnable>1</WLTHintPollEnable>
<HfiSuvEnable>0</HfiSuvEnable>
<WLTHintMask>15</WLTHintMask>
<IgnoreITMT>0</IgnoreITMT>
<States>
<CPUFamily> 6 </CPUFamily>
<CPUModel> 197 </CPUModel>
<CPUConfig> * </CPUConfig>
<State>
<ID> 1 </ID>
<Name> Idle </Name>
<WLTTypeMask> 3 </WLTTypeMask>
<ActiveLcores>ALL</ActiveLcores>
<ActiveEcores>ALL</ActiveEcores>
<IRQMigrate>1</IRQMigrate>
<EPP>255</EPP>
<EPB>15</EPB>
</State>
<State>
<ID> 2 </ID>
<Name> Sustained Load </Name>
<WLTType> 2 </WLTType>
<ActiveLcores>ALL</ActiveLcores>
<ActiveEcores>ALL</ActiveEcores>
<ActivePcores>ALL</ActivePcores>
<IRQMigrate>1</IRQMigrate>
<EPP>64</EPP>
<EPB>4</EPB>
</State>
<State>
<ID> 3 </ID>
<Name> Bursty Load </Name>
<WLTType> 3 </WLTType>
<ActiveLcores>ALL</ActiveLcores>
<ActiveEcores>ALL</ActiveEcores>
<ActivePcores>ALL</ActivePcores>
<IRQMigrate>1</IRQMigrate>
<EPP>128</EPP>
<EPB>6</EPB>
</State>
</States>
</Configuration>
```
Additionally, I tried automatically enabling / disabling E cores as well with this change to the Idle state config:
```
<State>
<ID> 1 </ID>
<Name> Idle </Name>
<WLTTypeMask> 3 </WLTTypeMask>
<ActiveLcores>ALL</ActiveLcores>
<IRQMigrate>1</IRQMigrate>
<EPP>255</EPP>
<EPB>15</EPB>
</State>
```
This did cause the system to only use LPE cores on light load, however the P and E cores were never reenabled, even when under full load (tested with `stress-ng -c 16`). The only way to get the P and E cores reenabled was switching to performance mode, having high load and then switching to balanced / energy saver. But after the load disappeared and the system switched to just LPE cores once, it is stuck there, no matter how much load there is on the LPE cores. This might need to be reported upstream.
Everything worked fine on the previous version (1.0). Could we report it upstream, rollback the update in the repo (bringing it back to 1.0), and then wait for them to fix it? I didn't have any problems with the previous version, so it seems like that would be a workable solution. I'm experiencing this on Core Ultra 7 255H too. Switching to performance mode activates all cores, in balanced mode, 5 cores are in 100% sleep state, shown by the "top" command, not sure if this is the expected behavior though. For reference, on KDE Plasma I configured PowerDevil to select the power profile depending on the power state. I use performance on AC power, performance on battery while the charge level is still high, and switch to a more power-saving profile only when the battery level becomes low. This avoids unintentionally running in the LPE-only power-saver mode during normal use, while still allowing it to be used when I actually want maximum power saving. Personally, I think having an LPE-only mode available through a power profile is useful and makes sense, especially for low-battery situations. The important part for my use case is simply to make sure it is selected intentionally rather than during normal operation. I'm using a Lenovo P14s Gen 6 with an Intel Core Ultra 7 265H CPU. With this update the power saver power profile was absolutely unusable (1 min delay after login before the system becomes responsive again, regular lag while typing in the shell, 2-3 seconds delay when touching the upper left corner in gnome etc.). The easiest fix for me was to set PowersaverDef to 0 in /etc/intel_lpmd/intel_lpmd_config_F6_M197.xml . As a result the power saver mode now uses all L+E cores similar to the balanced mode - but will still restrict the frequency harder than the balance mode resulting in a lower power cosumption overall. IMHO the current defaults should be changed as the state after updating felt like I had somehow broken my laptop... For some more context, here's a discussion on the Fedora Discourse: https://discussion.fedoraproject.org/t/overly-agressive-intel-lpmd-config-by-default/201978/7 And here is the upstream LPMD merge request that contains the overly aggressive config Fedora ships by default: https://github.com/intel/intel-lpmd/pull/121 Not entirely sure why Fedora ships the MR, as it isn't merged yet upstream. |