27 Oct, 2011

3 commits

  • Add new module option "set_max_voltage".
    One of the lessons learned from Adaptive Powersaver is that voltage values
    returned by processor are for worst case scenario. But required voltage
    is changing with CPU temperature. And even processors produced in the same
    batch can have different minimum voltage necessary for stable work at
    specified frequency.
    On Elonex Webbook, once system starts, temperature never drops below
    48 deg. C. Loading module after systems start allows user to lower CPU
    voltage and still have stable system.
    Sadly C7 doesn't allow code to set frequency or voltage from outside limits.
    If you ask it to set voltage lower then minimum it will ignore you. Thats
    why it isn't possible to change minimum voltage for minimum frequency too.
    Changing maximum voltage on Elonex Webbook leads to very good results. Looks
    like VIA C7 1.6GHz 1084mV can safetly run at 892mV. This means 83% of
    orginal value. If same percentage applies to power generated it means 12.5W
    in the place of 15W. Not much, but it is better then nothing.
    Only C7-M makes it possible.
    If voltage is too low by 16mV or more you will experience kernel panic.
    If voltage is too low by 32mV or more you will experience system freeze.

    Signed-off-by: Rafał Bilski
    Signed-off-by: Dave Jones

    Rafał Bilski
     
  • Call ACPI function to get BIOS limit for CPU frequency.
    Fail if processor would like to run at higher frequency.
    Allow user to ignore BIOS limit.

    eps: Detected VIA Model D C7-M
    eps: Current voltage = 1084mV
    eps: Current multiplier = 16
    eps: Highest voltage = 1084mV
    eps: Highest multiplier = 16
    eps: Lowest voltage = 844mV
    eps: Lowest multiplier = 4
    eps: ACPI limit 1.60GHz

    Signed-off-by: Rafał Bilski
    Signed-off-by: Dave Jones

    Rafał Bilski
     
  • Some systems are using 1,2Ghz@844mV processors running at 600MHz@796mV.
    Try to detect such systems and don't touch anything on it. If CPU doesn't have
    P-States in BIOS it should run at maximum frequency.
    Allow user to bypass checks by means of two new options.
    Don't set frequency to maximum on module unloading to avoid bada boom.
    It is also possible that some processors may have incorrect values in min/max
    registers caused by error in manufacturing process. Probably it would be BIOS
    job to set them to right frequency and P-States tables would have correct
    values inside.
    Two additional sanity checks for voltage.

    Signed-off-by: Rafał Bilski
    Signed-off-by: Dave Jones

    Rafał Bilski
     

20 May, 2011

1 commit