public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/intel-lpmd] rawhide: Bump to git mainline
@ 2026-09-11 2:55 Neal Gompa
0 siblings, 0 replies; only message in thread
From: Neal Gompa @ 2026-09-11 2:55 UTC (permalink / raw)
To: git-commits
A new commit has been pushed.
Repo : rpms/intel-lpmd
Branch : rawhide
Commit : 6bd4eab1f7762849a38eaf1dde0d88186219fb44
Author : Neal Gompa <ngompa@fedoraproject.org>
Date : 2026-09-10T22:54:53-04:00
Stats : +601/-3 in 4 file(s)
URL : https://src.fedoraproject.org/rpms/intel-lpmd/c/6bd4eab1f7762849a38eaf1dde0d88186219fb44?branch=rawhide
Log:
Bump to git mainline
- Add patches for Arrow Lake-H and Wildcat Lake support (rhbz#2531738)
---
diff --git a/0101-config-arrowlake-h-enabling.patch b/0101-config-arrowlake-h-enabling.patch
new file mode 100644
index 0000000..1e0e966
--- /dev/null
+++ b/0101-config-arrowlake-h-enabling.patch
@@ -0,0 +1,294 @@
+From ed3438a4fa41421c2262ac51ff3f26f485c945da Mon Sep 17 00:00:00 2001
+From: Joy Philip Pilli <joyphilip.p2001@gmail.com>
+Date: Sun, 21 Jun 2026 06:19:59 +0530
+Subject: [PATCH] config: arrowlake-h enabling
+
+Signed-off-by: Joy Philip Pilli <joyphilip.p2001@gmail.com>
+---
+ data/Makefile.am | 1 +
+ data/intel_lpmd_config_F6_M197.xml | 244 +++++++++++++++++++++++++++++
+ src/lpmd_cpu.c | 3 +-
+ 3 files changed, 247 insertions(+), 1 deletion(-)
+ create mode 100644 data/intel_lpmd_config_F6_M197.xml
+
+diff --git a/data/Makefile.am b/data/Makefile.am
+index a67bfde..b9a1366 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -32,6 +32,7 @@ lpmd_config_DATA = \
+ intel_lpmd_config_F6_M170.xml \
+ intel_lpmd_config_F6_M181.xml \
+ intel_lpmd_config_F6_M189.xml \
++ intel_lpmd_config_F6_M197.xml \
+ intel_lpmd_config_F6_M204.xml
+
+ EXTRA_DIST = \
+diff --git a/data/intel_lpmd_config_F6_M197.xml b/data/intel_lpmd_config_F6_M197.xml
+new file mode 100644
+index 0000000..5dd5f35
+--- /dev/null
++++ b/data/intel_lpmd_config_F6_M197.xml
+@@ -0,0 +1,244 @@
++<?xml version="1.0"?>
++
++<!--
++Intel Energy Optimizer (LPMD) configuration for Arrow Lake-H
++(family 6, model 0xC5 / 197).
++
++ Performance (PerformanceDef=-1) -> LPMD_OFF -> all CPUs active
++ Balanced (BalancedDef= 0) -> LPMD_AUTO -> E+L cores only (P-cores parked)
++ Powersaver (PowersaverDef= 1) -> LPMD_ON -> L-cores only
++
++Design: P-cores are NEVER used in Balanced mode. All WLT states use
++ActiveLcores=ALL + ActiveEcores=ALL (topology-portable, not hardcoded
++CPU numbers). EPP/EPB vary per WLT state to spread the power-performance
++tradeoff across E+L cores. If the user wants P-cores, they select
++Performance mode or disable LPMD.
++-->
++
++<Configuration>
++ <!--
++ CPU format example: 1,2,4..6,8-10
++ Used by the force-on path (PowersaverDef=1).
++ -->
++ <lp_mode_cpus></lp_mode_cpus>
++
++ <!--
++ EPP to use in Low Power Mode
++ 0-255: Valid EPP value to use in Low Power Mode
++ -1: Don't change EPP in Low Power Mode
++ Left empty: LPMD does not override EPP — it stays under
++ PPD (power-profiles-daemon) control.
++ -->
++ <lp_mode_epp></lp_mode_epp>
++
++ <!--
++ Mode values
++ 0: Cgroup v2
++ 1: Cgroup v2 isolate
++ 2: CPU idle injection
++ -->
++ <Mode>1</Mode>
++
++ <!--
++ Default behavior when Performance power setting is used
++ -1: force off. (Never enter Low Power Mode)
++ 1: force on. (Always stay in Low Power Mode)
++ 0: auto. (opportunistic Low Power Mode enter/exit)
++ -->
++ <PerformanceDef>-1</PerformanceDef>
++
++ <!--
++ Default behavior when Balanced power setting is used
++ -1: force off. (Never enter Low Power Mode)
++ 1: force on. (Always stay in Low Power Mode)
++ 0: auto. (opportunistic Low Power Mode enter/exit)
++ -->
++ <BalancedDef>0</BalancedDef>
++
++ <!--
++ Default behavior when Power saver setting is used
++ -1: force off. (Never enter Low Power Mode)
++ 1: force on. (Always stay in Low Power Mode)
++ 0: auto. (opportunistic Low Power Mode enter/exit)
++ -->
++ <PowersaverDef>1</PowersaverDef>
++
++ <!--
++ Use HFI LPM hints
++ 0 : No
++ 1 : Yes
++ -->
++ <HfiLpmEnable>0</HfiLpmEnable>
++
++ <!--
++ Use WLT hints
++ 0 : No
++ 1 : Yes
++ -->
++ <WLTHintEnable>1</WLTHintEnable>
++
++ <!--
++ Use WLT hint Poll enable
++ 0 : No
++ 1 : Yes
++ -->
++ <WLTHintPollEnable>1</WLTHintPollEnable>
++
++ <!--
++ Use HFI SUV hints
++ 0 : No
++ 1 : Yes
++ NOTE: SUV mode support was removed from the daemon (May 2025).
++ The parser accepts this element but discards the value.
++ Kept here for forward compatibility if the feature is restored.
++ -->
++ <HfiSuvEnable>0</HfiSuvEnable>
++
++ <!--
++ WLT hint mask: ANDed with the raw hardware WLT hint before
++ matching against each state's WLTType.
++ 15 (0x0F) keeps the low 4 bits, which covers the defined
++ WLT classifications (0=Idle, 1=Battery Life, 2=Sustained, 3=Bursty).
++ Arrow Lake currently only produces values 0-3, so mask=15
++ is a no-op today — it serves as a forward-compatibility guard
++ in case future firmware uses upper bits for extended flags.
++ Set to -1 to disable masking entirely.
++ -->
++ <WLTHintMask>15</WLTHintMask>
++
++ <!--
++ Global utilization thresholds (0-100). Used by the legacy
++ UTIL_POWER fallback path when no per-state <States> config
++ exists. Since this config defines <States>, these globals
++ are not consumed — but kept for documentation and in case
++ the <States> block is removed.
++
++ util_entry_threshold: max system-wide load (%) to enter LPM.
++ util_exit_threshold: max busiest-CPU load (%) to stay in LPM
++ (despite the name, it gates entry matching, not exit).
++ Clearing both disables the util monitor entirely.
++
++ Disabled here: in AUTO mode, all states resolve to E+L cores
++ (P-cores always parked), so load-based exit is unnecessary —
++ the CPU mask never changes, only EPP/EPB varies by WLT state.
++
++ <util_entry_threshold>10</util_entry_threshold>
++ <util_exit_threshold>95</util_exit_threshold>
++ -->
++
++ <!--
++ EntryDelayMS / ExitDelayMS / EntryHystMS / ExitHystMS are
++ currently parsed but have no runtime effect. Omitted here.
++ -->
++
++ <!--
++ Ignore ITMT setting during LP-mode enter/exit
++ 0: disable ITMT upon LP-mode enter and re-enable ITMT upon LP-mode exit
++ 1: do not touch ITMT setting during LP-mode enter/exit
++
++ Arrow Lake-H supports Turbo Boost Max Technology 3.0, but ITMT
++ is effectively a no-op here for two reasons:
++ 1. lpmd parks P-cores via cgroup isolation — ITMT tells the
++ scheduler to *prefer* P-cores, the opposite of what LPM does.
++ 2. On kernel 6.14+, the toggle moved from sysctl to debugfs and
++ is only created when a driver (intel_pstate / HFI) registers
++ ITMT priorities. On kernel 6.17 with Arrow Lake-H, the toggle
++ file is not created, so the daemon logs ERR and continues.
++ Kept at 0 for consistency with upstream configs (F6_M170/189/204).
++ -->
++ <IgnoreITMT>0</IgnoreITMT>
++
++ <!--
++ SoC Power Slider (BalancedSliderAC/DC, SliderOffsetAC/DC): omitted.
++ The slider is a Panther Lake hardware debut — Arrow Lake does not
++ expose the slider mailbox via the int340x thermal driver, so the
++ processor_thermal_soc_slider module loads but does not register a
++ platform-profile device. See F6_M204 config for Panther Lake values.
++ -->
++
++ <!--
++ WorkLoad Type hint states for Arrow Lake-H.
++
++ P-cores are NEVER activated in Balanced/AUTO mode. All states
++ use ActiveLcores=ALL + ActiveEcores=ALL (resolved at runtime to
++ the actual E+L CPU set) so the mask is topology-portable and
++ not hardcoded to specific CPU numbers.
++
++ EPP/EPB are differentiated per WLT state so E-cores and L-cores
++ operate on a power-performance spectrum under Speed Shift /
++ Thread Director control:
++
++ UTIL_IDLE (WLT 0+1): EPP=192 "balance_power", EPB=8
++ Idle or unclassified workload. Power-biased but E-cores
++ can still respond to light interactive tasks.
++
++ UTIL_IDLE_SUSTAIN (WLT 2): EPP=64, EPB=4
++ Sustained compute. Lets E-cores boost for real work while
++ P-cores stay parked.
++
++ UTIL_IDLE_BURSTY (WLT 3): EPP=128 "balance_performance", EPB=6
++ Bursty spikes. Moderate — E-cores absorb bursts without
++ sustaining high power draw.
++
++ WLTTypeMask=3 on UTIL_IDLE merges WLT=0 (WLT_IDLE / deep idle)
++ and WLT=1 (WLT_BATTERY_LIFE / light usage) into one state.
++
++ WARNING: Do NOT split WLT 0 and 1 into separate states with
++ different EPP/EPB values. The hardware oscillates
++ rapidly between WLT=0 and WLT=1 (~2x/sec observed in logs), and
++ since the EPP/EPB values would genuinely differ between the
++ two states, a value-change guard (like cgroup's "skip if
++ cpumask unchanged") cannot suppress the sysfs writes — each
++ transition would produce ~cpu-cores-count x 2 real writes
++ (ex. 16 CPUs x EPP+EPB = ~32 sysfs writes). The power cost
++ of that I/O churn outweighs any benefit from a more aggressive
++ EPP during brief WLT=0 moments. If deep idle power savings
++ are needed, Power Saver mode (L-cores only, EPP=255) already
++ provides that.
++
++ Note on invalid/unexpected WLT values: some platform configs
++ (e.g. F6_M189) use a wildcard state with no WLTType to
++ catch all unmatched WLT values including invalid ones. Here,
++ WLTTypeMask=3 provides targeted handling — WLT 0 and 1 are
++ explicitly matched to UTIL_IDLE, while invalid or out-of-
++ range values (e.g. WLT_INVALID=4 from sysfs read failures)
++ match no state and the daemon holds its current state
++ unchanged (STATE_NONE in choose_next_state).
++ -->
++ <States>
++ <CPUFamily> 6 </CPUFamily>
++ <CPUModel> 197 </CPUModel>
++ <CPUConfig> * </CPUConfig>
++ <State>
++ <ID> 1 </ID>
++ <Name> UTIL_IDLE </Name>
++ <WLTTypeMask> 3 </WLTTypeMask>
++ <ActiveLcores>ALL</ActiveLcores>
++ <ActiveEcores>ALL</ActiveEcores>
++ <IRQMigrate>1</IRQMigrate>
++ <EPP>192</EPP>
++ <EPB>8</EPB>
++ </State>
++ <State>
++ <ID> 2 </ID>
++ <Name> UTIL_IDLE_SUSTAIN </Name>
++ <WLTType> 2 </WLTType>
++ <ActiveLcores>ALL</ActiveLcores>
++ <ActiveEcores>ALL</ActiveEcores>
++ <IRQMigrate>1</IRQMigrate>
++ <EPP>64</EPP>
++ <EPB>4</EPB>
++ </State>
++ <State>
++ <ID> 3 </ID>
++ <Name> UTIL_IDLE_BURSTY </Name>
++ <WLTType> 3 </WLTType>
++ <ActiveLcores>ALL</ActiveLcores>
++ <ActiveEcores>ALL</ActiveEcores>
++ <IRQMigrate>1</IRQMigrate>
++ <EPP>128</EPP>
++ <EPB>6</EPB>
++ </State>
++ </States>
++
++</Configuration>
+diff --git a/src/lpmd_cpu.c b/src/lpmd_cpu.c
+index f4c9cbd..04ec4d1 100644
+--- a/src/lpmd_cpu.c
++++ b/src/lpmd_cpu.c
+@@ -23,9 +23,10 @@ static struct cpu_model_entry id_table[] = {
+ { 6, 0xbf }, // Raptorlake S
+ { 6, 0xaa }, // Meteorlake
+ { 6, 0xac }, // Meteorlake
+- { 6, 0xb5 }, // ArrowLake
++ { 6, 0xb5 }, // Arrowlake U
+ { 6, 0xbd }, // Lunarlake
+ { 6, 0xcc }, // Pantherlake
++ { 6, 0xc5 }, // Arrowlake H
+ { 0, 0 } // Last Invalid entry
+ };
+
+--
+2.55.0
+
diff --git a/0102-config-enable-Wildcat-Lake-in-LPMD.patch b/0102-config-enable-Wildcat-Lake-in-LPMD.patch
new file mode 100644
index 0000000..09ae44f
--- /dev/null
+++ b/0102-config-enable-Wildcat-Lake-in-LPMD.patch
@@ -0,0 +1,293 @@
+From 979044a3ce87bd753062e08c62466e2a5599b36b Mon Sep 17 00:00:00 2001
+From: Karan Shukla <karan_shukla@live.com>
+Date: Tue, 28 Jul 2026 07:26:12 -0400
+Subject: [PATCH] config: enable Wildcat Lake in LPMD
+
+---
+ data/Makefile.am | 3 +-
+ data/intel_lpmd_config_F6_M213.xml | 246 +++++++++++++++++++++++++++++
+ src/lpmd_cpu.c | 1 +
+ 3 files changed, 249 insertions(+), 1 deletion(-)
+ create mode 100644 data/intel_lpmd_config_F6_M213.xml
+
+diff --git a/data/Makefile.am b/data/Makefile.am
+index b9a1366..1ac0910 100644
+--- a/data/Makefile.am
++++ b/data/Makefile.am
+@@ -33,7 +33,8 @@ lpmd_config_DATA = \
+ intel_lpmd_config_F6_M181.xml \
+ intel_lpmd_config_F6_M189.xml \
+ intel_lpmd_config_F6_M197.xml \
+- intel_lpmd_config_F6_M204.xml
++ intel_lpmd_config_F6_M204.xml \
++ intel_lpmd_config_F6_M213.xml
+
+ EXTRA_DIST = \
+ intel_lpmd.service.in \
+diff --git a/data/intel_lpmd_config_F6_M213.xml b/data/intel_lpmd_config_F6_M213.xml
+new file mode 100644
+index 0000000..ef39aa0
+--- /dev/null
++++ b/data/intel_lpmd_config_F6_M213.xml
+@@ -0,0 +1,246 @@
++<?xml version="1.0"?>
++
++<!--
++Intel Energy Optimizer (LPMD) configuration for Wildcat Lake
++(family 6, model 0xD5 / 213).
++
++ Performance (PerformanceDef=-1) -> LPMD_OFF -> all CPUs active (P+L)
++ Balanced (BalancedDef= 0) -> LPMD_AUTO -> L-cores only (P-cores parked)
++ Powersaver (PowersaverDef= 1) -> LPMD_ON -> L-cores only (forced)
++
++Design: verified on an Intel Core 5 320 (2 P-cores, 15W TDP) via the
++daemon's own CPUID-based core-type detection (lpmd_cpu.c:detect_cpu_topo,
++which classifies atom-type cores as E vs L by whether their CPUID leaf 4
++reports an L3 slice): "Detected 2 Pcores, 0 Ecores, 4 Lcores, TDP 15W".
++All 4 non-P cores land in the L tier, not E — there is no full E-core
++tier on this sample, only P + L. This does NOT match what /sys/devices
++alone would suggest: /sys/devices/cpu_core/cpus (0-1) and
++/sys/devices/cpu_atom/cpus (2-5) only distinguish big/little, not the
++E-vs-L split the daemon's own cache-topology probe makes, and lscpu -e's
++L2-instance grouping (cores 2-5 sharing one L2 cluster) looks superficially
++like a single Skymont-style E-core module. Trust the daemon's own
++detect_cpu_topo() output over either of those when writing a config for
++this model — an earlier draft of this file used ActiveEcores=ALL, which
++would have resolved to an empty CPU set at runtime and left Balanced/
++Powersaver mode with zero active cores.
++
++Only the idle states park the P-cores. UTIL_IDLE uses ActiveLcores=ALL
++(topology-portable, not hardcoded CPU numbers); UTIL_IDLE_SUSTAIN and
++UTIL_IDLE_BURSTY release the full CPU set, following F6_M181 and F6_M204.
++EPP/EPB additionally vary per WLT state.
++-->
++
++<Configuration>
++ <!--
++ CPU format example: 1,2,4..6,8-10
++ Used by the force-on path (PowersaverDef=1).
++ -->
++ <lp_mode_cpus></lp_mode_cpus>
++
++ <!--
++ EPP to use in Low Power Mode
++ 0-255: Valid EPP value to use in Low Power Mode
++ -1: Don't change EPP in Low Power Mode
++ Left empty: LPMD does not override EPP — it stays under
++ PPD (power-profiles-daemon) control.
++ -->
++ <lp_mode_epp></lp_mode_epp>
++
++ <!--
++ Mode values
++ 0: Cgroup v2
++ 1: Cgroup v2 isolate
++ 2: CPU idle injection
++ -->
++ <Mode>1</Mode>
++
++ <!--
++ Default behavior when Performance power setting is used
++ -1: force off. (Never enter Low Power Mode)
++ 1: force on. (Always stay in Low Power Mode)
++ 0: auto. (opportunistic Low Power Mode enter/exit)
++ -->
++ <PerformanceDef>-1</PerformanceDef>
++
++ <!--
++ Default behavior when Balanced power setting is used
++ -1: force off. (Never enter Low Power Mode)
++ 1: force on. (Always stay in Low Power Mode)
++ 0: auto. (opportunistic Low Power Mode enter/exit)
++ -->
++ <BalancedDef>0</BalancedDef>
++
++ <!--
++ Default behavior when Power saver setting is used
++ -1: force off. (Never enter Low Power Mode)
++ 1: force on. (Always stay in Low Power Mode)
++ 0: auto. (opportunistic Low Power Mode enter/exit)
++ -->
++ <PowersaverDef>1</PowersaverDef>
++
++ <!--
++ Use HFI LPM hints
++ 0 : No
++ 1 : Yes
++ -->
++ <HfiLpmEnable>0</HfiLpmEnable>
++
++ <!--
++ Use WLT hints
++ 0 : No
++ 1 : Yes
++ -->
++ <WLTHintEnable>1</WLTHintEnable>
++
++ <!--
++ Use WLT hint Poll enable
++ 0 : No
++ 1 : Yes
++ -->
++ <WLTHintPollEnable>1</WLTHintPollEnable>
++
++ <!--
++ Use HFI SUV hints
++ 0 : No
++ 1 : Yes
++ NOTE: SUV mode support was removed from the daemon (May 2025).
++ The parser accepts this element but discards the value.
++ Kept here for forward compatibility if the feature is restored.
++ -->
++ <HfiSuvEnable>0</HfiSuvEnable>
++
++ <!--
++ WLT hint mask: ANDed with the raw hardware WLT hint before
++ matching against each state's WLTType.
++ 15 (0x0F) keeps the low 4 bits, which covers the defined
++ WLT classifications (0=Idle, 1=Battery Life, 2=Sustained, 3=Bursty).
++ -->
++ <WLTHintMask>15</WLTHintMask>
++
++ <!--
++ Global utilization thresholds (0-100). Used by the legacy
++ UTIL_POWER fallback path when no per-state <States> config
++ exists. Since this config defines <States>, these globals
++ are not consumed — kept for documentation only.
++
++ Disabled here regardless: every state below defines a WLTType
++ or WLTTypeMask, and per intel_lpmd_config.xml(5) a state with
++ WLTType defined does not use utilization-based entry triggers.
++ LPM entry and exit are driven entirely by the WLT hint.
++
++ <util_entry_threshold>10</util_entry_threshold>
++ <util_exit_threshold>95</util_exit_threshold>
++ -->
++
++ <!--
++ EntryDelayMS / ExitDelayMS / EntryHystMS / ExitHystMS are
++ currently parsed but have no runtime effect. Omitted here.
++ -->
++
++ <!--
++ Ignore ITMT setting during LP-mode enter/exit
++ 0: disable ITMT upon LP-mode enter and re-enable ITMT upon LP-mode exit
++ 1: do not touch ITMT setting during LP-mode enter/exit
++
++ lpmd parks P-cores via cgroup isolation; ITMT tells the scheduler
++ to *prefer* P-cores, the opposite of what LPM does here. Kept at
++ 0 for consistency with upstream configs (F6_M170/189/204/197).
++ -->
++ <IgnoreITMT>0</IgnoreITMT>
++
++ <!--
++ SoC Power Slider (BalancedSliderAC/DC, SliderOffsetAC/DC): omitted.
++ Not yet confirmed present on Wildcat Lake via the int340x thermal
++ driver on this sample; can be added once verified on hardware that
++ exposes the slider mailbox. See F6_M204 (Panther Lake) for the
++ values to model if/when confirmed.
++ -->
++
++ <!--
++ WorkLoad Type hint states for Wildcat Lake.
++
++ The P-cores are parked only in the idle states. This platform's
++ lower tier is the L-core set (see topology note above:
++ detect_cpu_topo() classifies all 4 non-P cores as L, not E), and
++ UTIL_IDLE uses ActiveLcores=ALL, resolved at runtime to the actual
++ L-core mask, so it is topology-portable rather than hardcoded to
++ specific CPU numbers.
++
++ UTIL_IDLE_SUSTAIN and UTIL_IDLE_BURSTY release the full CPU set
++ via ActiveCPUs=*, matching F6_M181 (Lunar Lake) and F6_M204
++ (Panther Lake). Every upstream config that varies the CPU set by
++ WLT state unparks for both 2 and 3; none unparks for one alone.
++ Per the DPTF definitions, WLT 3 has real idle periods between
++ bursts, so finishing a burst on the P-cores returns the SoC to
++ idle sooner, and WLT 2 is by definition already exhausting RAPL
++ PL1/PL2, so the extra cores complete the work inside a power
++ budget that is capped either way.
++
++ An earlier revision of this file parked the P-cores in all three
++ states. The daemon behaved correctly — the WLT hint moves to 2
++ within ~1s of sustained load and UTIL_IDLE_SUSTAIN is entered,
++ observed via EPP 192->64 and EPB 8->4 — but every state it could
++ reach also excluded the P-cores, so cpuset.cpus.isolated never
++ cleared. Adding EntrySystemLoadThres does not fix that: per
++ intel_lpmd_config.xml(5), "if [WLTType] is defined then
++ utilization based entry triggers are not used".
++
++ EPP/EPB are differentiated per WLT state:
++
++ UTIL_IDLE (WLT 0+1): EPP=192 "balance_power", EPB=8
++ Idle or light activity. Power-biased, P-cores parked, but
++ the L-cores can still respond to light interactive tasks.
++
++ UTIL_IDLE_SUSTAIN (WLT 2): EPP=64, EPB=4
++ Sustained compute. Full CPU set, performance-biased.
++
++ UTIL_IDLE_BURSTY (WLT 3): EPP=128 "balance_performance", EPB=6
++ Bursty spikes. Full CPU set so bursts retire quickly, but
++ biased more toward power than the sustained state.
++
++ EPP/EPB values for states 2 and 3 are taken from F6_M181, whose
++ WLTTypeMask=3 idle state this config otherwise mirrors.
++
++ WLTTypeMask=3 on UTIL_IDLE merges WLT=0 (WLT_IDLE / deep idle)
++ and WLT=1 (WLT_BATTERY_LIFE / light usage) into one state, since
++ the hardware oscillates between the two rapidly (~2x/sec
++ observed on other hybrid platforms in this family) and splitting
++ them would cause needless sysfs write churn for no real EPP/EPB
++ benefit. See F6_M197 (Arrow Lake-H) for the full rationale.
++
++ Invalid/out-of-range WLT values (e.g. WLT_INVALID=4) match no
++ state; the daemon holds its current state unchanged rather than
++ falling back to a wildcard.
++ -->
++ <States>
++ <CPUFamily> 6 </CPUFamily>
++ <CPUModel> 213 </CPUModel>
++ <CPUConfig> * </CPUConfig>
++ <State>
++ <ID> 1 </ID>
++ <Name> UTIL_IDLE </Name>
++ <WLTTypeMask> 3 </WLTTypeMask>
++ <ActiveLcores>ALL</ActiveLcores>
++ <IRQMigrate>1</IRQMigrate>
++ <EPP>192</EPP>
++ <EPB>8</EPB>
++ </State>
++ <State>
++ <ID> 2 </ID>
++ <Name> UTIL_IDLE_SUSTAIN </Name>
++ <WLTType> 2 </WLTType>
++ <ActiveCPUs> * </ActiveCPUs>
++ <EPP>64</EPP>
++ <EPB>4</EPB>
++ </State>
++ <State>
++ <ID> 3 </ID>
++ <Name> UTIL_IDLE_BURSTY </Name>
++ <WLTType> 3 </WLTType>
++ <ActiveCPUs> * </ActiveCPUs>
++ <EPP>128</EPP>
++ <EPB>6</EPB>
++ </State>
++ </States>
++
++</Configuration>
+diff --git a/src/lpmd_cpu.c b/src/lpmd_cpu.c
+index 04ec4d1..1d8ce60 100644
+--- a/src/lpmd_cpu.c
++++ b/src/lpmd_cpu.c
+@@ -27,6 +27,7 @@ static struct cpu_model_entry id_table[] = {
+ { 6, 0xbd }, // Lunarlake
+ { 6, 0xcc }, // Pantherlake
+ { 6, 0xc5 }, // Arrowlake H
++ { 6, 0xd5 }, // Wildcatlake
+ { 0, 0 } // Last Invalid entry
+ };
+
+--
+2.55.0
+
diff --git a/intel-lpmd.spec b/intel-lpmd.spec
index 17966f3..987e71a 100644
--- a/intel-lpmd.spec
+++ b/intel-lpmd.spec
@@ -1,13 +1,24 @@
%global daemon_name intel_lpmd
+%global commit 40d18a6cc22c37addc3e636bc9c5cf1ab5d5fbda
+%global commitdate 20260608
+%global shortcommit %{sub %{commit} 1 7}
+
Name: intel-lpmd
-Version: 0.1.0
+Version: 0.1.0^git%{commitdate}.%{shortcommit}
Release: %autorelease
Summary: Intel Low Power Mode Daemon
License: GPL-2.0-or-later
URL: https://github.com/intel/intel-lpmd
-Source: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
+%dnl Source: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz
+Source: %{url}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz
+
+# Proposed upstream
+## Arrow Lake H support: https://github.com/intel/intel-lpmd/pull/121
+Patch0101: 0101-config-arrowlake-h-enabling.patch
+## Wildcat Lake support: https://github.com/intel/intel-lpmd/pull/124
+Patch0102: 0102-config-enable-Wildcat-Lake-in-LPMD.patch
ExclusiveArch: %{x86_64}
diff --git a/sources b/sources
index f78d4a7..2b3ec6b 100644
--- a/sources
+++ b/sources
@@ -1 +1 @@
-SHA512 (intel-lpmd-0.1.0.tar.gz) = 45f18b7c98814af6f56659fcf63d32cfb3df3daa93bb6561b271094d5a2d91d50589a50475ae3b59aaeaca489e76a45879754a74af0dad443686697269f8b51d
+SHA512 (intel-lpmd-40d18a6.tar.gz) = 3f18a27ac5a70a6240c02b8b9157846071167e1e9aee5db06cd2755c378382f869ce2594d409092534f924cdc0ea7ae0ebed14b85cc5f25bb68cac8b67efb92c
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2026-09-11 2:55 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-09-11 2:55 [rpms/intel-lpmd] rawhide: Bump to git mainline Neal Gompa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox