• Andreas Herrmann's avatar
    [CPUFREQ] powernow-k8: determine exact CPU frequency for HW Pstates · ca446d06
    Andreas Herrmann authored
    Slightly modified by trenn@suse.de -> only do this on fam 10h and fam 11h.
    
    Currently powernow-k8 determines CPU frequency from ACPI PSS objects, but
    according to AMD family 11h BKDG this frequency is just a rounded value:
    
      "CoreFreq (MHz) = The CPU COF specified by MSRC001_00[6B:64][CpuFid]
      rounded to the nearest 100 Mhz."
    
    As a consequnce powernow-k8 reports wrong CPU frequency on some systems,
    e.g. on Turion X2 Ultra:
    
      powernow-k8: Found 1 AMD Turion(tm)X2 Ultra DualCore Mobile ZM-82
                   processors (2 cpu cores) (version 2.20.00)
      powernow-k8:    0 : pstate 0 (2200 MHz)
      powernow-k8:    1 : pstate 1 (1100 MHz)
      powernow-k8:    2 : pstate 2 (600 MHz)
    
    But this is wrong as frequency for Pstate2 is 550 MHz. x86info reports it
    correctly:
    
      #x86info -a |grep Pstate
      ...
      Pstate-0: fid=e, did=0, vid=24 (2200MHz)
      Pstate-1: fid=e, did=1, vid=30 (1100MHz)
      Pstate-2: fid=e, did=2, vid=3c (550MHz) (current)
    
    Solution is to determine the frequency directly from Pstate MSRs instead
    of using rounded values from ACPI table.
    Signed-off-by: default avatarAndreas Herrmann <andreas.herrmann3@amd.com>
    Signed-off-by: default avatarThomas Renninger <trenn@suse.de>
    Signed-off-by: default avatarDave Jones <davej@redhat.com>
    ca446d06
powernow-k8.c 37 KB