Jump to content

Recommended Posts

Posted

Title: bootplim=0 / forced_idle_ratio=100 — Package C-states stuck at 0% on Z390 + i5-9600K (Ventura)

cpufriendkext andCPUFriendDataProvider also added

---

System:
- Board: Gigabyte Z390I Aorus Pro WiFi (BIOS F8h)
- CPU: Intel i5-9600K
- SMBIOS: iMac19,1
- macOS: Ventura 13.7.8 (22H730)
- OpenCore: 0.9.7 (REL-107)
- Boot: USB OpenCore (test EFI)

---

Problem:

Package C-states are completely stuck at 0% across all states (C2/C3/C6/C7/C8/C9/C10).
Individual core C-states work fine (C6 at 84–97% residency).
powermetrics shows TURBO_ATTENUATION limiter active even at 2.6W idle.

Key sysctl values on every boot:
  machdep.xcpm.bootplim: 0
  machdep.xcpm.forced_idle_ratio: 100
  machdep.xcpm.mid_cst_control_limit: 0

IORegistry X86PlatformPlugin shows:
  CPUPLimitDict:  pMax=0, pMin=38
  IdlePLimitDict: pMax=0, pMin=100
  IGPUPLimitDict: pMax=0, pMin=16
  ForcedIdleTable is active

---

What I have tried (none resolved bootplim=0):

1. AppleCpuPmCfgLock: true
2. AppleXcpmCfgLock: true
3. AppleXcpmExtraMsrs: true
4. ProvideCurrentCpuInfo: true
5. CFG Lock disabled via GRUB (MSR 0xE2 confirmed 0x00)
6. MSR 0xE2 kernel NOP patch (correct bytes for kernel 22.6.0)
7. SSDT-PMC — already present in SSDT-OLARILA
8. BIOS C-state settings — C8/C10 enabled, Package C State = Auto
9. BIOS SGX disabled
10. BIOS PL1/PL2 manually set to 95W (no visible setting on this board)
11. wrmsr 0x610 via GRUB shell with correct PL1=PL2=95W value
12. boot-args: xcpm_pkg_scope_msrs=1, xcpm_idle_disable=1 — both ignored

---

MSR values read via modGRUBShell:
  MSR 0x606 (Power Unit):  0xa0e83 → 0.125W per unit
  MSR 0x610 (Pkg Power):   0x42ffd0001affd0 → PL1=PL2=0x7FFF (unlimited/no limit)
  MSR 0x1FC (Power Control): 0x38005f → power mgmt enabled

The BIOS writes 0x7FFF (unlimited) to MSR 0x610 on this board and resets it
on every boot. wrmsr fix doesn't survive reboot.

---

Root cause assumption:

On a real iMac19,1, X86PlatformPlugin reads CPU power budget from SMC keys
(MSAL, PDTR) rather than MSR 0x610. VirtualSMC + SMCProcessor do not publish
these SMC power budget keys, so X86PlatformPlugin receives nothing, sets
bootplim=0, and activates ForcedIdleTable permanently.

---

Question:

Is there a known fix or workaround for this on Z390 + Coffee Lake desktop?
Specifically — does SSDT-OLARILA or any custom SSDT provide a way to inject
the missing SMC power budget data, or is there a VirtualSMC plugin that covers
MSAL/PDTR for iMac19,1 SMBIOS?

CPUFriend is working correctly (vectors_loaded_count=1, CPUFloor=800MHz,
P-states 800MHz–4600MHz all correct). The only remaining issue is the
package-level power budget injection.
 

Archive.zip

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...