ACPI: Export FADT pm_profile integer value to userspace
There are a lot userspace approaches to detect the usage of the platform (laptop, workstation, server, ...) and adjust kernel tunables accordingly (io/process scheduler, power management, ...). These approaches need constant maintaining and are ugly to implement (detect PCMCIA controller -> laptop, does not work on recent systems anymore, ...) On ACPI systems there is an easy and reliable way (if implemented in BIOS and most recent platforms have this value set). -> export it to userspace. Signed-off-by: Thomas Renninger <trenn@suse.de> Acked-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
parent
c3b92c8787
commit
362b646062
|
@ -0,0 +1,22 @@
|
||||||
|
What: /sys/firmware/acpi/pm_profile
|
||||||
|
Date: 03-Nov-2011
|
||||||
|
KernelVersion: v3.2
|
||||||
|
Contact: linux-acpi@vger.kernel.org
|
||||||
|
Description: The ACPI pm_profile sysfs interface exports the platform
|
||||||
|
power management (and performance) requirement expectations
|
||||||
|
as provided by BIOS. The integer value is directly passed as
|
||||||
|
retrieved from the FADT ACPI table.
|
||||||
|
Values: For possible values see ACPI specification:
|
||||||
|
5.2.9 Fixed ACPI Description Table (FADT)
|
||||||
|
Field: Preferred_PM_Profile
|
||||||
|
|
||||||
|
Currently these values are defined by spec:
|
||||||
|
0 Unspecified
|
||||||
|
1 Desktop
|
||||||
|
2 Mobile
|
||||||
|
3 Workstation
|
||||||
|
4 Enterprise Server
|
||||||
|
5 SOHO Server
|
||||||
|
6 Appliance PC
|
||||||
|
7 Performance Server
|
||||||
|
>7 Reserved
|
|
@ -706,11 +706,23 @@ static void __exit interrupt_stats_exit(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static ssize_t
|
||||||
|
acpi_show_profile(struct device *dev, struct device_attribute *attr,
|
||||||
|
char *buf)
|
||||||
|
{
|
||||||
|
return sprintf(buf, "%d\n", acpi_gbl_FADT.preferred_profile);
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct device_attribute pm_profile_attr =
|
||||||
|
__ATTR(pm_profile, S_IRUGO, acpi_show_profile, NULL);
|
||||||
|
|
||||||
int __init acpi_sysfs_init(void)
|
int __init acpi_sysfs_init(void)
|
||||||
{
|
{
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
result = acpi_tables_sysfs_init();
|
result = acpi_tables_sysfs_init();
|
||||||
|
if (result)
|
||||||
|
return result;
|
||||||
|
result = sysfs_create_file(acpi_kobj, &pm_profile_attr.attr);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue