ACPI: sanity check _PSS frequency to prevent cpufreq crash
authorLen Brown <len.brown@intel.com>
Tue, 26 May 2009 19:11:06 +0000 (15:11 -0400)
committerLen Brown <len.brown@intel.com>
Sat, 30 May 2009 00:45:58 +0000 (20:45 -0400)
commit34d531e640cb805973cf656b15c716b961565cea
tree6f62bdd6a5eef1ec6b49ab8b5e6808abba528b6d
parentb18f1e21993f73f072b1e0859f942fb11afddcb1
ACPI: sanity check _PSS frequency to prevent cpufreq crash

When BIOS SETUP is changed to disable EIST, some BIOS
hand the OS an un-initialized _PSS:

        Name (_PSS, Package (0x06)
        {
            Package (0x06)
            {
                0x80000000, // frequency [MHz]
                0x80000000, // power [mW]
                0x80000000, // latency [us]
                0x80000000, // BM latency [us]
                0x80000000, // control
                0x80000000 // status
            },
    ...

These are outrageous values for frequency,
power and latency, raising the question where to draw
the line between legal and illegal.  We tend to survive
garbage in the power and latency fields, but we can BUG_ON
when garbage is in the frequency field.

Cpufreq multiplies the frequency by 1000 and stores it in a u32 KHz.
So disregard a _PSS with a frequency so large
that it can't be represented by cpufreq.

https://bugzilla.redhat.com/show_bug.cgi?id=500311

Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/processor_perflib.c