Forums

Skip to content

Advanced search
  • Quick links
    • Unanswered topics
    • Active topics
    • Search
  • FAQ
  • Login
  • Register
  • Board index Assistance Kernel & Hardware
  • Search

Choice of the Core on mixed-CPU platform like Meteor-Lake

Kernel not recognizing your hardware? Problems with power management or PCMCIA? What hardware is compatible with Gentoo? See here. (Only for kernels supported by Gentoo.)
Post Reply
Advanced search
70 posts
  • 1
  • 2
  • 3
  • Next
Author
Message
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

Choice of the Core on mixed-CPU platform like Meteor-Lake

  • Quote

Post by dmpogo » Wed Dec 17, 2025 8:04 am

Is ti possible, and how to control what CPU nodes (or a group of nodes) a given process (or family of processes) run ?

I have Meteor Lake which has 2 (teach wo-threaded) fast cores, 8 medium range cores, and 2 ultra low energy ones. Once I run
emerge with - j 4, I see that mostly medium range cores, and sometimes even low energy ones are often utilized. Fast threads, well
good if I have 2 used, usually one or none (at any given instance viewed with top, so maybe they get jobs, but complete sooner).

In comparison with my older i7 notebook with 2 fast cores (4 threads), emerge seems getting through slower.

I saw that the kernel has several config options seemingly relevant to scheduling on non-uniform platforms, but I am not sure whether
they work "automagically' (if so - does not seem well in my case), or some user space effort is also needed.


For one, I'd prefer fast cores to be used whenever possible, with super low power ones - just to run low CPU usage system processes.

How the scheduling should be manipulated ?
Last edited by dmpogo on Thu Dec 18, 2025 9:32 am, edited 6 times in total.
Top
Spanik
Veteran
Veteran
Posts: 1170
Joined: Fri Dec 12, 2003 9:10 pm
Location: Belgium

  • Quote

Post by Spanik » Wed Dec 17, 2025 2:17 pm

Interesting question, I'll be following this thread.This type of cpu is under consideration at the office for a project.
Expert in non-working solutions
Top
pa4wdh
Veteran
Veteran
Posts: 1015
Joined: Fri Dec 16, 2005 6:55 pm

  • Quote

Post by pa4wdh » Wed Dec 17, 2025 2:45 pm

Interesting question indeed, these type CPU's have been around for a while but i've never seen anything about support for them.

Looking around in the kernel config CONFIG_SCHED_CLUSTER seems to come closest, but i'm not sure if it applied here. It's original use is to schedule based on CPU cores with the same L2 cache, if that is the case with these mixed CPU's too it could work. Here's a phoronix article about it: https://www.phoronix.com/news/AMD-Linux ... -Scheduler
The gentoo way of bringing peace to the world:
USE="-war" emerge --newuse @world

My shared code repository: https://code.pa4wdh.nl.eu.org
Music, Free as in Freedom: https://www.jamendo.com
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Wed Dec 17, 2025 2:56 pm

I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.

However it does not hurt to experiment may be you will get good result.

So I asked Google Gemini, two questions,
  • How to use cgroup to control cpu set
  • how to make kernel prefer faster cpu set
I believe its answers will address your question. So if you interested please give Gemini a try.
Top
Anon-E-moose
Watchman
Watchman
User avatar
Posts: 6566
Joined: Fri May 23, 2008 7:31 pm
Location: Dallas area

  • Quote

Post by Anon-E-moose » Thu Dec 18, 2025 12:55 am

Is ti possible, and how to control what CPU nodes (or a group of nodes) a given process (or family of processes) run ?
Yes, it's possible.

Many things can be done with cgroups, though it can get complicated to set up.

For singe app, like qemu, I use taskset (from util-linux) to pin the app to a certain set of cores and associated threads.
Use lstopo to see how the cores/threads are laid out.
UM780 xtx, 6.18 zen kernel, gcc 15, openrc, wayland
minixforum m1-s1 max -- same software as above but used for ai learning


Zealots are gonna be zealots, just like haters are gonna be haters
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Thu Dec 18, 2025 11:42 am

pingtoo wrote:I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.

However it does not hurt to experiment may be you will get good result.

So I asked Google Gemini, two questions,
  • How to use cgroup to control cpu set
  • how to make kernel prefer faster cpu set
I believe its answers will address your question. So if you interested please give Gemini a try.

HPC jobs schedulers, such as slurm, use cgroups extensively to allocate resources. You can set specific CPU's the job will run on, set aside a group of CPU's no job managed by slurm will run on, and even partition GPU in chunks to give jobs only a part of GPU capabilities. This is a norm in HPC environment.

However, this seems a bit too high level that has more to do with accounting of resource consumption and allocation than with how efficiently kernel schedulers utilize your hardware. I would think there could be some kernel parameters/settings that choose "performance" versus "conserve battery" or something profiles, and are completely transparent for every day use otherwise.
Last edited by dmpogo on Thu Dec 18, 2025 12:09 pm, edited 1 time in total.
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Thu Dec 18, 2025 12:06 pm

pa4wdh wrote:Interesting question indeed, these type CPU's have been around for a while but i've never seen anything about support for them.

Looking around in the kernel config CONFIG_SCHED_CLUSTER seems to come closest, but i'm not sure if it applied here. It's original use is to schedule based on CPU cores with the same L2 cache, if that is the case with these mixed CPU's too it could work. Here's a phoronix article about it: https://www.phoronix.com/news/AMD-Linux ... -Scheduler
I was just recently configured my 6.18.1 kernel for a new laptop, and I encountered several options that may touch on that

Code: Select all

CONFIG_SCHED_CORE:                                                                                                                                         │  
  │                                                                                                                                                            │  
  │ This option permits Core Scheduling, a means of coordinated task                                                                                           │  
  │ selection across SMT siblings. When enabled -- see                                                                                                         │  
  │ prctl(PR_SCHED_CORE) -- task selection ensures that all SMT siblings                                                                                       │  
  │ will execute a task from the same 'core group', forcing idle when no                                                                                       │  
  │ matching task is found.                                                                                                                                    │  
  │                                                                                                                                                            │  
  │ Use of this feature includes:                                                                                                                              │  
  │  - mitigation of some (not all) SMT side channels;                                                                                                         │  
  │  - limiting SMT interference to improve determinism and/or performance.                                                                                    │  

Code: Select all

CONFIG_CPU_ISOLATION:                                                                                                                                      │  
  │                                                                                                                                                            │  
  │ Make sure that CPUs running critical tasks are not disturbed by                                                                                            │  
  │ any source of "noise" such as unbound workqueues, timers, kthreads...                                                                                      │  
  │ Unbound jobs get offloaded to housekeeping CPUs. This is driven by                                                                                         │  
  │ the "isolcpus=" boot parameter.                                                                                                                            │  
  │                                                                                                                                                            │  
  │ Say Y if unsure.                                                                                                                                           │  

Code: Select all

CONFIG_SCHED_AUTOGROUP:                                                                                                                                    │  
  │                                                                                                                                                            │  
  │ This option optimizes the scheduler for common desktop workloads by                                                                                        │  
  │ automatically creating and populating task groups.  This separation                                                                                        │  
  │ of workloads isolates aggressive CPU burners (like build jobs) from                                                                                        │  
  │ desktop applications.  Task group autogeneration is currently based                                                                                        │  
  │ upon task session.                                                                                                                                         │  
  │                                                                                                                                                            │  
  │ Symbol: SCHED_AUTOGROUP [=y]                                                                                                                               │  

Code: Select all


CONFIG_SCHED_MC_PRIO:                                                                                                                                      │  
  │                                                                                 
                                                                        │  
  │ Intel Turbo Boost Max Technology 3.0 enabled CPUs have a                                                                                                   │  
  │ core ordering determined at manufacturing time, which allows                                                                                               │  
  │ certain cores to reach higher turbo frequencies (when running                                                                                              │  
  │ single threaded workloads) than others.                                                                                                                    │  
  │                                                                                                                                                            │  
  │ Enabling this kernel feature teaches the scheduler about                                                                                                   │  
  │ the TBM3 (aka ITMT) priority order of the CPU cores and adjusts the                                                                                        │  
  │ scheduler's CPU selection logic accordingly, so that higher                                                                                                │  
  │ overall system performance can be achieved.                                                                                                                │  
  │                                                                                                                                                            │  
  │ This feature will have no effect on CPUs without this feature.                                                                                             │  
among then cpu isolation seems can be managed with boot parameter to push noise processes off computing CPU's I think there was one more config option that could be tweaked by user, but I can't find it now. SCHED_CORE seems related, but what are those "core groups" ?
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Thu Dec 18, 2025 12:19 pm

Spanik wrote:Interesting question, I'll be following this thread.This type of cpu is under consideration at the office for a project.
I was buying a server a year ago for my work, and it took sometime to find specific models even of XEON processors that have equal capabilities cores. Most don't.
It is something to watch to if you are building computational nodes
Top
Anon-E-moose
Watchman
Watchman
User avatar
Posts: 6566
Joined: Fri May 23, 2008 7:31 pm
Location: Dallas area

  • Quote

Post by Anon-E-moose » Thu Dec 18, 2025 12:54 pm

Documentation/admin-guide/hw-vuln/core-scheduling.rst
UM780 xtx, 6.18 zen kernel, gcc 15, openrc, wayland
minixforum m1-s1 max -- same software as above but used for ai learning


Zealots are gonna be zealots, just like haters are gonna be haters
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Thu Dec 18, 2025 3:19 pm

dmpogo wrote:
pingtoo wrote:I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.

However it does not hurt to experiment may be you will get good result.

So I asked Google Gemini, two questions,
  • How to use cgroup to control cpu set
  • how to make kernel prefer faster cpu set
I believe its answers will address your question. So if you interested please give Gemini a try.

HPC jobs schedulers, such as slurm, use cgroups extensively to allocate resources. You can set specific CPU's the job will run on, set aside a group of CPU's no job managed by slurm will run on, and even partition GPU in chunks to give jobs only a part of GPU capabilities. This is a norm in HPC environment.

However, this seems a bit too high level that has more to do with accounting of resource consumption and allocation than with how efficiently kernel schedulers utilize your hardware. I would think there could be some kernel parameters/settings that choose "performance" versus "conserve battery" or something profiles, and are completely transparent for every day use otherwise.
May be I had misunderstand your initial question. I thought you want your computer automatically choose the right cpu set for some jobs and let the service background jobs on the slow cpu set.

The Gemini answers tell me on "Meteor Lake's hybrid architecture via the Intel Hardware Feedback Interface (HFI)" with Linux kernel (v6.9+) it can automatically manage it. but you will need to have "Intel Hardware Feedback Interface (HFI)" and with "Energy Performance Preference (EPP)"

A daemon tool is located in kernel source tree:tools/power/x86/intel-speed-select/ you can use "make" to build it and "make install" to install it somewhere in you path.

the intel-speed-select is used to work with about HFI infrastructure.

I highly recommend use Gemini with get to more detail of it. (I don't have intet hardware at hand to verify, however from my search I do see multiple references about this topic therefor I believe Gemini is telling the truth)
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Thu Dec 18, 2025 5:56 pm

pingtoo wrote:
dmpogo wrote:
pingtoo wrote:I am not sure it is good idea to manage task scheduling manually is good idea, through out my work life I tried a few times never come out a good solution that can correctly balance the work load.

However it does not hurt to experiment may be you will get good result.

So I asked Google Gemini, two questions,
  • How to use cgroup to control cpu set
  • how to make kernel prefer faster cpu set
I believe its answers will address your question. So if you interested please give Gemini a try.

HPC jobs schedulers, such as slurm, use cgroups extensively to allocate resources. You can set specific CPU's the job will run on, set aside a group of CPU's no job managed by slurm will run on, and even partition GPU in chunks to give jobs only a part of GPU capabilities. This is a norm in HPC environment.

However, this seems a bit too high level that has more to do with accounting of resource consumption and allocation than with how efficiently kernel schedulers utilize your hardware. I would think there could be some kernel parameters/settings that choose "performance" versus "conserve battery" or something profiles, and are completely transparent for every day use otherwise.
May be I had misunderstand your initial question. I thought you want your computer automatically choose the right cpu set for some jobs and let the service background jobs on the slow cpu set.
That is exactly what I meant ! In this sense cgroups manual configuration is a bit outside. Basically it feels a bit ridiculous to run basic tasks like emerge through job scheduler to get the task onto the fastest cores. I'll look into HFI and EPP, never heard of that abbreviations before. And I see the kernel option which for Intel sits in thermal drivers section. It is probably that one more relevant option that I could not recall

Code: Select all

CONFIG_INTEL_HFI_THERMAL:                                                                                                                                  │  
  │                                                                                                                                                            │  
  │ Select this option to enable the Hardware Feedback Interface. If                                                                                           │  
  │ selected, hardware provides guidance to the operating system on                                                                                            │  
  │ the performance and energy efficiency capabilities of each CPU.                                                                                            │  
  │ These capabilities may change as a result of changes in the operating                                                                                      │  
  │ conditions of the system such power and thermal limits. If selected,                                                                                       │  
  │ the kernel relays updates in CPUs' capabilities to userspace.
and I hope the userspace it refers to is that daemon. There are, however, also 4 thermal drivers, of which user_space is just one.


The Gemini answers tell me on "Meteor Lake's hybrid architecture via the Intel Hardware Feedback Interface (HFI)" with Linux kernel (v6.9+) it can automatically manage it. but you will need to have "Intel Hardware Feedback Interface (HFI)" and with "Energy Performance Preference (EPP)"

A daemon tool is located in kernel source tree:tools/power/x86/intel-speed-select/ you can use "make" to build it and "make install" to install it somewhere in you path.

the intel-speed-select is used to work with about HFI infrastructure.

I highly recommend use Gemini with get to more detail of it. (I don't have intet hardware at hand to verify, however from my search I do see multiple references about this topic therefor I believe Gemini is telling the truth)
People tend to scold references to AI on this forums :)
Last edited by dmpogo on Thu Dec 18, 2025 6:21 pm, edited 4 times in total.
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Thu Dec 18, 2025 6:03 pm

Anon-E-moose wrote:Documentation/admin-guide/hw-vuln/core-scheduling.rst

Indeed, though doc is centered on security use, which is not my concern, but, importantly, what are the user space tools ?
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Thu Dec 18, 2025 10:04 pm

dmpogo wrote:People tend to scold references to AI on this forums :)
They are not entirely wrong, when I ask Gemini about intel-speed-select it tell me for gentoo I should use package in sys-power/intel-speed-select which does not exist :-)

But I would not know there are known solution about utilize native way of Intel hardware on linux, if I simply search around without some context. AI does have its nice side of it.
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Fri Dec 19, 2025 12:32 am

pingtoo wrote:
The Gemini answers tell me on "Meteor Lake's hybrid architecture via the Intel Hardware Feedback Interface (HFI)" with Linux kernel (v6.9+) it can automatically manage it. but you will need to have "Intel Hardware Feedback Interface (HFI)" and with "Energy Performance Preference (EPP)"

A daemon tool is located in kernel source tree:tools/power/x86/intel-speed-select/ you can use "make" to build it and "make install" to install it somewhere in you path.

the intel-speed-select is used to work with about HFI infrastructure.

I highly recommend use Gemini with get to more detail of it. (I don't have intet hardware at hand to verify, however from my search I do see multiple references about this topic therefor I believe Gemini is telling the truth)
Well, that daemon says

Code: Select all

./intel-speed-select 
Intel(R) Speed Select Technology
Executing on CPU model:170[0xaa]
Intel speed select drivers are not loaded on this system.
Verify that kernel config includes CONFIG_INTEL_SPEED_SELECT_INTERFACE.
If the config is included then this is not a supported platform.
and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Fri Dec 19, 2025 1:30 am

dmpogo wrote:Well, that daemon says

Code: Select all

./intel-speed-select 
Intel(R) Speed Select Technology
Executing on CPU model:170[0xaa]
Intel speed select drivers are not loaded on this system.
Verify that kernel config includes CONFIG_INTEL_SPEED_SELECT_INTERFACE.
If the config is included then this is not a supported platform.
and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.
Did you install sys-firmware/intel-microcode? or may be you need intel_pstate driver instead the intel-speed-select?

Code: Select all

The error
ERROR: could not insert 'isst_if_mbox_pci': No such device typically occurs because the Intel Speed Select Technology (SST) driver is attempting to initialize on hardware that does not support the specific mailbox interface or has it disabled in the BIOS. 
On Meteor Lake systems, this is common because Intel transitioned many SST functions to different interfaces or handles them through the Hardware Feedback Interface (HFI) instead. 
Why this happens on Meteor Lake

    Unsupported Interface: The isst_if_mbox_pci driver is primarily for Xeon server processors. Meteor Lake (Core Ultra) uses different mechanisms for power and performance management, such as the intel_pstate driver and HFI.
    BIOS Settings: The Speed Select "mailbox" interface must be explicitly enabled in the BIOS under Power & Performance > CPU P State Control to be visible to the kernel.
    Kernel Version: You need a modern kernel (6.9+ recommended for 2025) to properly handle Meteor Lake's hybrid architecture without relying on older SST drivers. 

How to Fix it on Gentoo

    Check if you actually need it: For Meteor Lake, the Intel Hardware Feedback Interface (HFI) is the primary driver for hybrid core management, not the SST mailbox.
        Ensure CONFIG_INTEL_HFI=y is enabled in your kernel.
        Verify with dmesg | grep -i hfi.
    Verify BIOS Configuration:
        Enter BIOS and ensure Intel Speed Select Technology is enabled if you specifically want to use the intel-speed-select utility.
        If you are on a laptop, this feature is often locked or absent, which causes the "No such device" error when the driver tries to load.
    Kernel Config Audit:
    If you must use SST, ensure these are built-in or loaded in order:
        CONFIG_INTEL_SPEED_SELECT_INTERFACE=y
        CONFIG_INTEL_SST_IF_COMMON=y
        CONFIG_INTEL_SST_IF_MBOX_PCI=y
    Use Modern Alternatives:
    Instead of forcing the SST driver, use the intel_pstate driver which has been heavily optimized for Meteor Lake in 2024 and 2025.
        Verify the driver is active: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver.
        It should return intel_pstate.
    Ignore the Error:
    If your system is performing well and P-cores/E-cores are being utilized correctly, this error can safely be ignored. It simply means the kernel attempted to load a driver for a feature your specific motherboard or mobile CPU SKU does not expose
Top
jburns
Veteran
Veteran
Posts: 1255
Joined: Thu Jan 18, 2007 4:44 am
Location: Massachusetts USA

  • Quote

Post by jburns » Fri Dec 19, 2025 5:16 am

Use the taskset command in front of the command you want to run on a specified cpu.

Code: Select all

taskset -c 0-11 <command>
would use the performance cores.

If you only have 2 performance cores use

Code: Select all

taskset -c 0-3 <command>
Read the taskset man page for a complete discription.
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Fri Dec 19, 2025 8:15 pm

jburns wrote:Use the taskset command in front of the command you want to run on a specified cpu.

Code: Select all

taskset -c 0-11 <command>
would use the performance cores.

If you only have 2 performance cores use

Code: Select all

taskset -c 0-3 <command>
Read the taskset man page for a complete discription.
It is a solution for sure if I have some computational code and what to make a specific run (which I do, from time to time). More of a question is everyday commands like emerge, running browser, whatever, which can cause high CPU load . Basically - should I use taskset in front of all of them, or I'll get a degraded performance otherwise ? My original remark was that it looks like emerge (with -j4) takes longer on the new machine with 2 perfom + 12 other cores, than on old machine with just 2 performance cores. I was hoping there should be a flag like "use performance cores if available first when CPU utilization is > 90%" like with frequency governers - performance = use max frequency. Actually, it is not even clear why such behaviour is not the default - or is it, and I am missing something ?
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Fri Dec 19, 2025 8:23 pm

pingtoo wrote:
dmpogo wrote:Well, that daemon says

Code: Select all

./intel-speed-select 
Intel(R) Speed Select Technology
Executing on CPU model:170[0xaa]
Intel speed select drivers are not loaded on this system.
Verify that kernel config includes CONFIG_INTEL_SPEED_SELECT_INTERFACE.
If the config is included then this is not a supported platform.
and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.
Did you install sys-firmware/intel-microcode? or may be you need intel_pstate driver instead the intel-speed-select?

Code: Select all

The error
ERROR: could not insert 'isst_if_mbox_pci': No such device typically occurs because the Intel Speed Select Technology (SST) driver is attempting to initialize on hardware that does not support the specific mailbox interface or has it disabled in the BIOS. 
On Meteor Lake systems, this is common because Intel transitioned many SST functions to different interfaces or handles them through the Hardware Feedback Interface (HFI) instead. 
Why this happens on Meteor Lake

    Unsupported Interface: The isst_if_mbox_pci driver is primarily for Xeon server processors. Meteor Lake (Core Ultra) uses different mechanisms for power and performance management, such as the intel_pstate driver and HFI.
    BIOS Settings: The Speed Select "mailbox" interface must be explicitly enabled in the BIOS under Power & Performance > CPU P State Control to be visible to the kernel.
    Kernel Version: You need a modern kernel (6.9+ recommended for 2025) to properly handle Meteor Lake's hybrid architecture without relying on older SST drivers. 

How to Fix it on Gentoo

    Check if you actually need it: For Meteor Lake, the Intel Hardware Feedback Interface (HFI) is the primary driver for hybrid core management, not the SST mailbox.
        Ensure CONFIG_INTEL_HFI=y is enabled in your kernel.
        Verify with dmesg | grep -i hfi.
    Verify BIOS Configuration:
        Enter BIOS and ensure Intel Speed Select Technology is enabled if you specifically want to use the intel-speed-select utility.
        If you are on a laptop, this feature is often locked or absent, which causes the "No such device" error when the driver tries to load.
    Kernel Config Audit:
    If you must use SST, ensure these are built-in or loaded in order:
        CONFIG_INTEL_SPEED_SELECT_INTERFACE=y
        CONFIG_INTEL_SST_IF_COMMON=y
        CONFIG_INTEL_SST_IF_MBOX_PCI=y
    Use Modern Alternatives:
    Instead of forcing the SST driver, use the intel_pstate driver which has been heavily optimized for Meteor Lake in 2024 and 2025.
        Verify the driver is active: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver.
        It should return intel_pstate.
    Ignore the Error:
    If your system is performing well and P-cores/E-cores are being utilized correctly, this error can safely be ignored. It simply means the kernel attempted to load a driver for a feature your specific motherboard or mobile CPU SKU does not expose
Yep, microcode is loaded, pstate/cpufreq driver is working, kernel is 6.18.1 . With isst-mbox I may be off, I was trying to find any modules with isst, since I have CONFIG_INTEL_SPEED_SELECT_INTERFACE=m. BTW distribution kernel does not have it enabled. I'll check my BIOS, but when I was deleting Windows from that laptop (last time I was inside in BIOS) I was not able to find any low level configuration option exposed to the user. I'll try again. But basically I read your reply that SST is not for Meter Lake (which shows us that AI is giving hints, but often misleading).
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Fri Dec 19, 2025 8:36 pm

Sorry I am not sure if you already mentioned in previous post but I just want to bring out to make sure we on same page.

Does your BIOS have Advanced → Power & Performance → CPU P State Control. Or something in similar nature?
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Fri Dec 19, 2025 9:19 pm

What I learn more for consumer graded Meteor Lake (Intel Core Ultra) processors

the equivalent of "Speed Select" for favoring faster cores is handled by Intel Thread Director (ITD)

You must have kernel configurations
  • CONFIG_X86_INTEL_PSTATE
  • CONFIG_ITD
  • CONFIG_SCHED_MC_PRIO
  • CONFIG_CPU_FREQ
  • CONFIG_X86_ACPI_CPUFREQ (This is fallack)
  • CONFIG_INTEL_TURBO_MAX_3
Check if you have intel_pstate driver active,

Code: Select all

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
Check current EPP Setting

Code: Select all

cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
View available EPP Options

Code: Select all

cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences
# Alternaive command

Code: Select all

cpupower frequency-info
Top
dmpogo
Advocate
Advocate
Posts: 3711
Joined: Thu Sep 02, 2004 9:21 pm
Location: Canada

  • Quote

Post by dmpogo » Fri Dec 19, 2025 10:58 pm

pingtoo wrote:What I learn more for consumer graded Meteor Lake (Intel Core Ultra) processors

the equivalent of "Speed Select" for favoring faster cores is handled by Intel Thread Director (ITD)

You must have kernel configurations
  • CONFIG_X86_INTEL_PSTATE
  • CONFIG_ITD
  • CONFIG_SCHED_MC_PRIO
  • CONFIG_CPU_FREQ
  • CONFIG_X86_ACPI_CPUFREQ (This is fallack)
  • CONFIG_INTEL_TURBO_MAX_3
Check if you have intel_pstate driver active,

Code: Select all

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver
Check current EPP Setting

Code: Select all

cat /sys/devices/system/cpu/cpu*/cpufreq/energy_performance_preference
View available EPP Options

Code: Select all

cat /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences
# Alternaive command

Code: Select all

cpupower frequency-info
Hm, I have everything enabled, except CONFIG_ITD, and I cannot find this option in 6.18.1 kernel (search for ITD in menuconfig does not return anything relevant). My intel_pstate driver is active, performance preference is 'balance performance', among available there are "default performance balance_performance balance_power power", so I guess I can go up to "performance"
Top
pietinger
Moderator
Moderator
Posts: 6618
Joined: Tue Oct 17, 2006 5:11 pm
Location: Bavaria

  • Quote

Post by pietinger » Fri Dec 19, 2025 11:06 pm

dmpogo wrote:[...]and CONFIG_INTEL_SPEED_SELECT_INTERFACE is set to [m]. Attempts to load modules by hand give modprobe: ERROR: could not insert 'isst_if_mbox_pci': No such device. It is possible that I did not configure something esle, but also that it is not supported on my CPU.
You have a MeteorLake CPU and not a XEON Workstation CPU ... so, yes it cannot work because you dont have it. See the <Help> of the kernel option CONFIG_INTEL_SPEED_SELECT_INTERFACE:
[...] The Intel(R) speed select technology features are non architectural and only supported on specific Xeon(R) servers. [...]
https://wiki.gentoo.org/wiki/User:Pietinger --> https://wiki.gentoo.org/wiki/User:Pieti ... _at_Gentoo
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Fri Dec 19, 2025 11:41 pm

dmpogo wrote:Hm, I have everything enabled, except CONFIG_ITD, and I cannot find this option in 6.18.1 kernel (search for ITD in menuconfig does not return anything relevant).
Now Gemini is telling me "yes, CONFIG_ITD does not exist, it is CONFIG_INTEL_HFI_THERMAL" Gemini explain it is using "shorthand" for the Intel Thread Director feature. I had never thought out the AI would do such thing :oops: Prove that you need to verify each and every steps in the conversation.

you will also need these enabled
  • CONFIG_NET
  • CONFIG_THERMAL
  • CONFIG_X86_THERMAL_VECTOR
because it is using NETLINK interface to exchange data. And CONFIG_X86_THERMAL_VECTOR to request hardware to trigger interrupts.

see if you have

Code: Select all

ls /sys/devices/virtual/thermal/thermal_zone*/type | xargs grep "hfi"
If this returns a result, the kernel is successfully receiving hardware feedback from the CPU to guide its scheduling decisions
performance preference is 'balance performance', among available there are "default performance balance_performance balance_power power"
so the "performance" is for speed, "power" is for power saving.

I suggest do a little benchmark to compare setting between "performance" vs "balance_performance" and even "balance_power" to save energy.
Top
pietinger
Moderator
Moderator
Posts: 6618
Joined: Tue Oct 17, 2006 5:11 pm
Location: Bavaria

  • Quote

Post by pietinger » Fri Dec 19, 2025 11:41 pm

dmpogo,

you need only CONFIG_X86_INTEL_PSTATE (and SCHED_MC and SCHED_MC_PRIO).

CONFIG_INTEL_TURBO_MAX_3
->
This driver is only required when the system is not using Hardware P-States (HWP).
MeteorLake has of course HWP (HWP exist since 4th generation Intel CPUs)

Check with lscpu ... my output (RaptorLake == 13th gen.) is:

Code: Select all

hwp hwp_notify hwp_act_window hwp_epp hwp_pkg_req
Check with cpuid:

Code: Select all

# cpuid -1 | grep HWP
      HWP base registers                      = true
      HWP notification                        = true
      HWP activity window                     = true
      HWP energy performance preference       = true
      HWP package level request               = true
      HWP capabilities                        = true
      HWP PECI override                       = true
      flexible HWP                            = true
      IA32_HWP_REQUEST MSR fast access mode   = true
      ignoring idle logical processor HWP req = true
      IA32_HWP_CTL MSR supported              = true
         HWP state                            = true
   HWP features (0xd/0x10):
      HWP save state byte size                 = 0x00000008 (8)
      HWP save state byte offset               = 0x00000000 (0)
         IA32_XSS supported: HWP state       = false
P.S.: It is also wise to boot with our GentooLiveCD and check with "lsmod" for loaded modules ... MANY Intel CPUs need CONFIG_INTEL_TCC_COOLING ... ;-)
https://wiki.gentoo.org/wiki/User:Pietinger --> https://wiki.gentoo.org/wiki/User:Pieti ... _at_Gentoo
Top
pingtoo
Advocate
Advocate
User avatar
Posts: 2180
Joined: Fri Sep 10, 2021 8:37 pm
Location: Richmond Hill, Canada

  • Quote

Post by pingtoo » Sat Dec 20, 2025 12:35 am

May want to try with and without for performance :D

According to Gemini,
The help text refers to the fact that when Hardware P-States (HWP) are active, the CPU can technically communicate its core priorities through a different interface called CPPC (Collaborative Processor Performance Control).
  • Without HWP: The kernel needs the specific ITBM 3.0 driver (CONFIG_INTEL_TURBO_MAX_3) to find the "favored" cores.
  • With HWP: The intel_pstate driver can often read these same priorities directly from ACPI CPPC tables without needing the standalone ITBM 3.0 driver.
Why the Standalone Driver is Still Used?
In practice, many Intel platforms (including some mobile and desktop variations like Meteor Lake) did not consistently implement the "priority" field in the ACPI CPPC tables
  • Because of this inconsistency, the Linux kernel often falls back to the intel_turbo_max_3 logic to ensure the ITMT (Intel Turbo Max Technology) scheduler extension is correctly initialized
  • When this driver is enabled, it ensures the kernel exposes the sched_itmt_enabled flag in sysfs. Without it, your scheduler might treat all P-cores as identical even if it has HWP data
You can check

Code: Select all

cat /proc/sys/kernel/sched_itmt_enabled
  • If it returns 1: Your kernel is successfully prioritizing fast cores. This might be happening via CPPC or the ITBM driver
  • If it returns 0 or the file is missing: Your scheduler is not favoring the faster cores, and you likely need to ensure CONFIG_INTEL_TURBO_MAX_3 is enabled in your kernel config.
I tried several way to critique Gemini why it should be enable, it consistently tell me it is safe way to fallback in case HWP did not work well. Checking the linux kernel code I can see it will enable a extra module turbo_max_3 however the module code targeted specifically to Broadwell or Skylake and tell that back to Gemini it still insist said the logic is actually embedded in the intel_pstate drive.

I can't trace too deep into kernel code to see how true is above but I guess you can test it :D
Top
Post Reply

70 posts
  • 1
  • 2
  • 3
  • Next

Return to “Kernel & Hardware”

Jump to
  • Assistance
  • ↳   News & Announcements
  • ↳   Frequently Asked Questions
  • ↳   Installing Gentoo
  • ↳   Multimedia
  • ↳   Desktop Environments
  • ↳   Networking & Security
  • ↳   Kernel & Hardware
  • ↳   Portage & Programming
  • ↳   Gamers & Players
  • ↳   Other Things Gentoo
  • ↳   Unsupported Software
  • Discussion & Documentation
  • ↳   Documentation, Tips & Tricks
  • ↳   Gentoo Chat
  • ↳   Gentoo Forums Feedback
  • ↳   Duplicate Threads
  • International Gentoo Users
  • ↳   中文 (Chinese)
  • ↳   Dutch
  • ↳   Finnish
  • ↳   French
  • ↳   Deutsches Forum (German)
  • ↳   Diskussionsforum
  • ↳   Deutsche Dokumentation
  • ↳   Greek
  • ↳   Forum italiano (Italian)
  • ↳   Forum di discussione italiano
  • ↳   Risorse italiane (documentazione e tools)
  • ↳   Polskie forum (Polish)
  • ↳   Instalacja i sprzęt
  • ↳   Polish OTW
  • ↳   Portuguese
  • ↳   Documentação, Ferramentas e Dicas
  • ↳   Russian
  • ↳   Scandinavian
  • ↳   Spanish
  • ↳   Other Languages
  • Architectures & Platforms
  • ↳   Gentoo on ARM
  • ↳   Gentoo on PPC
  • ↳   Gentoo on Sparc
  • ↳   Gentoo on Alternative Architectures
  • ↳   Gentoo on AMD64
  • ↳   Gentoo for Mac OS X (Portage for Mac OS X)
  • Board index
  • All times are UTC
  • Delete cookies

© 2001–2026 Gentoo Foundation, Inc.

Powered by phpBB® Forum Software © phpBB Limited

Privacy Policy

 

 

magic