- Joined
- May 9, 2013
- Messages
- 481
- Mobile Phone
Is your BIOS patched to unlock the MSRs? What did you have to do to enable xcpm on Ivy?
And I'd be interested in seeing your ioreg with xcpm working...
I don't know if it requires the SSDT. You could try without...
The 87 is weird.
The 'throttling' thing is coming from DirectHw which DPCIManager uses to read direct from the CPU registers.
Yes, PMPatch on the bios. Pike mentioned that XCPM supports Ivy Bridge processors. The only thing I did was add "-xcpm" boot flag (stab in the dark based off what I was reading in pike's blog, he didn't specify what the flag did but apparently it initiated it). Saved a copy of the IOreg because I was going to compare it to my IvyPM ioreg.
First thing I did was try to find out if XCPM was running to begin with, I looked at kextstat and saw the AICPUPM.kext was loaded but expected it not to be if XCPM was working. Then further, tried the commands that pike mentioned "sysctl machdep.xcpm.mode" and "sysctl machdep.xcpm.ratio_changes_total;" Quoting pike:
Running sysctl machdep.xcpm.mode shows us if XCPM is active and sysctl machdep.xcpm.ratio_changes_total shows us the number of ratio changes. Zero means that it XCPM isn’t functioning. In that case you should check the former MIB as well.
Code:
Cs-MacBook-Pro:~ c$ sysctl machdep.xcpm.mode
machdep.xcpm.mode: 0
Cs-MacBook-Pro:~ c$ sysctl machdep.xcpm.ratio_changes_total
machdep.xcpm.ratio_changes_total: 0
So that was enough to let me know that it wasn't loaded. So I gave the bootflag a shot. Rebooted and checked kextstat: AICPUPM.kext not loaded, good sign!
Those same two commands after booting with XCPM, and a third for more data.
Code:
Cs-MacBook-Pro:~ c$ sysctl machdep.xcpm.mode
machdep.xcpm.mode: 1
Cs-MacBook-Pro:~ c$ sysctl machdep.xcpm.ratio_changes_total
machdep.xcpm.ratio_changes_total: 51173
Cs-MacBook-Pro:~ c$ sysctl machdep.xcpm
machdep.xcpm.mode: 1
machdep.xcpm.asserts_enabled: 0
machdep.xcpm.asserts_traced: 0
machdep.xcpm.cpu_wakeup_energy_cost_selector: 0
machdep.xcpm.disable_quiesce: 0
machdep.xcpm.mp_match: 0
machdep.xcpm.disable_idle_self_select: 0
machdep.xcpm.mp_load_txfr_coeff: 128
machdep.xcpm.scalability_cpi_threshold: 4
machdep.xcpm.scalability_cpi_demotion_threshold: 5
machdep.xcpm.scalability_reeval_interval: 1000
machdep.xcpm.scalability_eval_ratio_min: 17
machdep.xcpm.scalability_detection_enabled: 0
machdep.xcpm.hard_plimit_max_100mhz_ratio: 31
machdep.xcpm.hard_plimit_min_100mhz_ratio: 8
machdep.xcpm.soft_plimit_max_100mhz_ratio: 31
machdep.xcpm.soft_plimit_min_100mhz_ratio: 8
machdep.xcpm.ratio_changes_hf: 0
machdep.xcpm.ratio_changes_lf: 2
machdep.xcpm.ratio_change_limited: 0
machdep.xcpm.ratio_change_hf_limit: 2
machdep.xcpm.ratio_change_lf_limit: 1
machdep.xcpm.ratio_change_ratelimit_ns: 500000
machdep.xcpm.ratio_changes_total: 504941
machdep.xcpm.maxbusdelay: 0
machdep.xcpm.maxintdelay: 0
machdep.xcpm.mbd_mode: 1
machdep.xcpm.mbd_applications: 0
machdep.xcpm.mbd_relaxations: 0
machdep.xcpm.forced_idle_ratio: 100
machdep.xcpm.forced_idle_period: 30000000
machdep.xcpm.deep_idle_log: 0
machdep.xcpm.qos_txfr: 1
machdep.xcpm.q_migration_ttd_min: 1000000
machdep.xcpm.q_migration_ttd_max: 100000000
machdep.xcpm.preidle_spin_tsc: 0
machdep.xcpm.qos_ratio_change_limited: 0
machdep.xcpm.qos_ratio_change_hf_limit: 8
machdep.xcpm.qos_ratio_change_lf_limit: 1
machdep.xcpm.qos_ratelimiting_enabled: 1
machdep.xcpm.quiesce_trace: 0
machdep.xcpm.deep_idle_count: 0
machdep.xcpm.deep_idle_last_stats: n/a
machdep.xcpm.deep_idle_total_stats: n/a
I would like to do some more testing on this but I don't really know what to look at (since I really don't know much about this stuff anyway)..
Anyway, the good news is that it just works