ASRock N100DC-ITX not reaching deeper C-states

Hi community,

Context:
I'm an ex-Linux user trying FreeBSD as I prefer how clean it feels.
I have an ASRock N100DC-ITX motherboard (Intel N100 + i226 NIC) and I'm interested in using FreeBSD and bhyve as an hypervisor (I saw Sylve and it looks great).

Issue:
I previously had Proxmox (Debian based) and it reached C8 for its CPU C-state, thus drawing around 4-5W from the wall at idle.
Now with FreeBSD it draws around 10W at idle. It seems it's only reaching C3 at most:

Code:
dev.cpu.0.cx_method: C1/mwait/hwc C2/mwait/hwc C3/mwait/hwc
dev.cpu.0.cx_usage_counters: 109 257 3557
dev.cpu.0.cx_usage: 2.77% 6.55% 90.67% last 1946us
dev.cpu.0.cx_lowest: C8
dev.cpu.0.cx_supported: C1/1/1 C2/2/127 C3/3/1048
dev.hwpstate_intel.0.%driver: hwpstate_intel

cx_lowest is set to C8 but cx_supported and cx_usage only show C3. Looking at how it's drawing 10W from the wall, I'd say it's effectively not reaching C8 at all.

Why is this? Is it not supported, or do I need to tweak any settings? How can I troubleshoot this, or where can I look if there's any work being done for C-states support in modern Intel CPUs?

Thanks a lot for any input.
 
Update:

I enabled all the power related settings I could find and I'm now reaching ~6W/ idle! I'm not sure what all these do, so I'd be glad if you could tell me which ones are the ones that actually may have had a positive (or negative) effect:

/boot/loader.conf
Code:
machdep.hwpstate_pkg_ctrl=1
hint.p4tcc.0.disabled=1
hint.acpi_throttle.0.disabled=1

pci.do_power_nodriver="1"
hw.pci.do_power_resume="1"

hint.ahcich.0.pm_level=5
hint.ahcich.1.pm_level=5

kern.eventtimer.periodic=0
kern.hz=100
machdep.idle_mwait=1

hw.pci.enable_aspm=1

hw.nvme.use_nvd=1
hw.acpi.osname="Windows 2022"

/etc/rc.conf
Code:
performance_cx_lowest="Cmax"
economy_cx_lowest="Cmax"
kld_list="i915kms"

I would be thankful if you could tell me what else I could add, and ideally, how I can troubleshoot what could be using those extra 2 watts.

Note: I forgot to say I'm using:
FreeBSD junko 15.0-RELEASE FreeBSD 15.0-RELEASE releng/15.0-n280995-7aedc8de6446 GENERIC amd64

Update 2: I removed the i226 NIC and the result is the same. I installed intel-pcm and used it to see the C-state behavior, and it says 99% C7 on cores, and 99% C0 on package. It seems like cores are reaching deep C-states fine but package is stuck mostly in C0 which mostly defeats the purpose.
 
Back
Top