>Did some more testing and it gets even weirder. When I boot in always 
>low I powernowd warns that the CPU speeds is 600. When I boot in aways 
>high, it reports 1200. The CPU ranges from 800-1600. psrinfo reports 
>these values when booted. How does powernowd determine the frequency?


It reads the CPU's registers:

static uint32_t
get_state_speedstep(int *freq)
{
        uint64_t reg = rdmsr(IA32_MSR_PERF_STATUS);
        uint32_t st = IA32_MSR_CUR_PSTATE(reg);
        *freq = IA32_PSTATE_FREQ(st);
        if (debug_est)
                check_throttling();
        return (st);
}

No idea whether this code is proper.

Casper

Reply via email to