aha/include/acpi
Thomas Renninger e2f74f355e [ACPI/CPUFREQ] Introduce bios_limit per cpu cpufreq sysfs interface
This interface is mainly intended (and implemented) for ACPI _PPC BIOS
frequency limitations, but other cpufreq drivers can also use it for
similar use-cases.

Why is this needed:

Currently it's not obvious why cpufreq got limited.
People see cpufreq/scaling_max_freq reduced, but this could have
happened by:
  - any userspace prog writing to scaling_max_freq
  - thermal limitations
  - hardware (_PPC in ACPI case) limitiations

Therefore export bios_limit (in kHz) to:
  - Point the user that it's the BIOS (broken or intended) which limits
    frequency
  - Export it as a sysfs interface for userspace progs.
    While this was a rarely used feature on laptops, there will appear
    more and more server implemenations providing "Green IT" features like
    allowing the service processor to limit the frequency. People want
    to know about HW/BIOS frequency limitations.

All ACPI P-state driven cpufreq drivers are covered with this patch:
  - powernow-k8
  - powernow-k7
  - acpi-cpufreq

Tested with a patched DSDT which limits the first two cores (_PPC returns 1)
via _PPC, exposed by bios_limit:
# echo 2200000 >cpu2/cpufreq/scaling_max_freq
# cat cpu*/cpufreq/scaling_max_freq
2600000
2600000
2200000
2200000
# #scaling_max_freq shows general user/thermal/BIOS limitations

# cat cpu*/cpufreq/bios_limit
2600000
2600000
2800000
2800000
# #bios_limit only shows the HW/BIOS limitation

CC: Pallipadi Venkatesh <venkatesh.pallipadi@intel.com>
CC: Len Brown <lenb@kernel.org>
CC: davej@codemonkey.org.uk
CC: linux@dominikbrodowski.net

Signed-off-by: Thomas Renninger <trenn@suse.de>
Signed-off-by: Dave Jones <davej@redhat.com>
2009-11-24 13:33:34 -05:00
..
platform Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
acexcep.h ACPICA: Fix parameter validation for acpi_read/write 2009-03-26 16:38:25 -04:00
acnames.h ACPICA: update Intel copyright 2008-04-23 23:00:13 -04:00
acoutput.h ACPICA: Restructure includes into public/private 2008-12-31 01:15:40 -05:00
acpi.h ACPICA: Restructure includes into public/private 2008-12-31 01:15:40 -05:00
acpi_bus.h ACPI: remove acpi_device_uid() and related stuff 2009-09-25 15:09:49 -04:00
acpi_drivers.h Merge branches 'acerhdf', 'acpi-pci-bind', 'bjorn-pci-root', 'bugzilla-12904', 'bugzilla-13121', 'bugzilla-13396', 'bugzilla-13533', 'bugzilla-13612', 'c3_lock', 'hid-cleanups', 'misc-2.6.31', 'pdc-leak-fix', 'pnpacpi', 'power_nocheck', 'thinkpad_acpi', 'video' and 'wmi' into release 2009-06-24 01:19:50 -04:00
acpi_numa.h ACPI: misc cleanups 2008-02-07 03:33:23 -05:00
acpiosxf.h ACPICA: fix leak of acpi_os_validate_address 2009-08-27 13:10:35 -04:00
acpixf.h ACPICA: Update version to 20090903. 2009-09-08 22:28:34 -04:00
acrestyp.h ACPICA: Restructure includes into public/private 2008-12-31 01:15:40 -05:00
actbl.h ACPICA: ACPI 4: Update headers for new and changed ACPI tables. 2009-08-28 19:40:38 -04:00
actbl1.h ACPICA: Fix typo for HEST ACPI table 2009-08-28 19:40:39 -04:00
actbl2.h ACPICA: ACPI 4: Update headers for new and changed ACPI tables. 2009-08-28 19:40:38 -04:00
actypes.h Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6 2009-09-23 09:32:11 -07:00
button.h ACPI: make ACPI button funcs no-ops if not built in 2009-09-17 14:48:23 -07:00
container.h [ACPI] Lindent all ACPI files 2005-08-05 00:45:14 -04:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h [ACPI/CPUFREQ] Introduce bios_limit per cpu cpufreq sysfs interface 2009-11-24 13:33:34 -05:00
reboot.h Add the ability to reset the machine using the RESET_REG in ACPI's FADT table. 2008-07-16 23:27:08 +02:00
video.h ACPI: Add the reference count to avoid unloading ACPI video bus twice 2009-06-23 23:38:41 -04:00