lkml.org 
[lkml]   [2008]   [Oct]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH 26/85] ACPI: cpufreq, processor: Detect old BIOS, not supporting CPU freq on a recent CPU.
    From: Thomas Renninger <trenn@suse.de>

    On Intel CPUs it is rather common and a good hint that BIOSes which do provide
    _PPC func, but not the frequencies itself in _PSS function, are old and need
    to be updated for CPU freq support.

    Tell the user/vendor he has a BIOS/firmware problem.
    Make use of FW_BUG interface to give vendors and users the ability to
    automatically check with (or let linuxfirmwarekit do that):
    dmesg |grep "Firmware Bug"

    Signed-off-by: Thomas Renninger <trenn@suse.de>
    Signed-off-by: Andi Kleen <ak@linux.intel.com>
    Signed-off-by: Len Brown <len.brown@intel.com>
    ---
    drivers/acpi/processor_perflib.c | 18 +++++++++++++++---
    1 files changed, 15 insertions(+), 3 deletions(-)

    diff --git a/drivers/acpi/processor_perflib.c b/drivers/acpi/processor_perflib.c
    index 80c251e..242f814 100644
    --- a/drivers/acpi/processor_perflib.c
    +++ b/drivers/acpi/processor_perflib.c
    @@ -38,6 +38,7 @@

    #include <asm/uaccess.h>
    #endif
    +#include <asm/cpufeature.h>

    #include <acpi/acpi_bus.h>
    #include <acpi/processor.h>
    @@ -334,7 +335,6 @@ static int acpi_processor_get_performance_info(struct acpi_processor *pr)
    acpi_status status = AE_OK;
    acpi_handle handle = NULL;

    -
    if (!pr || !pr->performance || !pr->handle)
    return -EINVAL;

    @@ -347,13 +347,25 @@ static int acpi_processor_get_performance_info(struct acpi_processor *pr)

    result = acpi_processor_get_performance_control(pr);
    if (result)
    - return result;
    + goto update_bios;

    result = acpi_processor_get_performance_states(pr);
    if (result)
    - return result;
    + goto update_bios;

    return 0;
    +
    + /*
    + * Having _PPC but missing frequencies (_PSS, _PCT) is a very good hint that
    + * the BIOS is older than the CPU and does not know its frequencies
    + */
    + update_bios:
    + if (ACPI_SUCCESS(acpi_get_handle(pr->handle, "_PPC", &handle))){
    + if(boot_cpu_has(X86_FEATURE_EST))
    + printk(KERN_WARNING FW_BUG "BIOS needs update for CPU "
    + "frequency support\n");
    + }
    + return result;
    }

    int acpi_processor_notify_smm(struct module *calling_module)
    --
    1.5.5.1


    \
     
     \ /
      Last update: 2008-10-11 08:55    [W:3.596 / U:0.064 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site