Power management and ACPI material for v4.6-rc1, part 1
- Redesign of cpufreq governors and the intel_pstate driver to
make them use callbacks invoked by the scheduler to trigger CPU
frequency evaluation instead of using per-CPU deferrable timers
for that purpose (Rafael Wysocki).
- Reorganization and cleanup of cpufreq governor code to make it
more straightforward and fix some concurrency problems in it
(Rafael Wysocki, Viresh Kumar).
- Cleanup and improvements of locking in the cpufreq core (Viresh
Kumar).
- Assorted cleanups in the cpufreq core (Rafael Wysocki, Viresh
Kumar, Eric Biggers).
- intel_pstate driver updates including fixes, optimizations and a
modification to make it enable enable hardware-coordinated P-state
selection (HWP) by default if supported by the processor (Philippe
Longepe, Srinivas Pandruvada, Rafael Wysocki, Viresh Kumar, Felipe
Franciosi).
- Operating Performance Points (OPP) framework updates to improve
its handling of voltage regulators and device clocks and updates
of the cpufreq-dt driver on top of that (Viresh Kumar, Jon Hunter).
- Updates of the powernv cpufreq driver to fix initialization
and cleanup problems in it and correct its worker thread handling
with respect to CPU offline, new powernv_throttle tracepoint
(Shilpasri Bhat).
- ACPI cpufreq driver optimization and cleanup (Rafael Wysocki).
- ACPICA updates including one fix for a regression introduced
by previos changes in the ACPICA code (Bob Moore, Lv Zheng,
David Box, Colin Ian King).
- Support for installing ACPI tables from initrd (Lv Zheng).
- Optimizations of the ACPI CPPC code (Prashanth Prakash, Ashwin
Chaugule).
- Support for _HID(ACPI0010) devices (ACPI processor containers)
and ACPI processor driver cleanups (Sudeep Holla).
- Support for ACPI-based enumeration of the AMBA bus (Graeme Gregory,
Aleksey Makarov).
- Modification of the ACPI PCI IRQ management code to make it treat
255 in the Interrupt Line register as "not connected" on x86 (as
per the specification) and avoid attempts to use that value as
a valid interrupt vector (Chen Fan).
- ACPI APEI fixes related to resource leaks (Josh Hunt).
- Removal of modularity from a few ACPI drivers (BGRT, GHES,
intel_pmic_crc) that cannot be built as modules in practice (Paul
Gortmaker).
- PNP framework update to make it treat ACPI_RESOURCE_TYPE_SERIAL_BUS
as a valid resource type (Harb Abdulhamid).
- New device ID (future AMD I2C controller) in the ACPI driver for
AMD SoCs (APD) and in the designware I2C driver (Xiangliang Yu).
- Assorted ACPI cleanups (Colin Ian King, Kaiyen Chang, Oleg Drokin).
- cpuidle menu governor optimization to avoid a square root
computation in it (Rasmus Villemoes).
- Fix for potential use-after-free in the generic device properties
framework (Heikki Krogerus).
- Updates of the generic power domains (genpd) framework including
support for multiple power states of a domain, fixes and debugfs
output improvements (Axel Haslam, Jon Hunter, Laurent Pinchart,
Geert Uytterhoeven).
- Intel RAPL power capping driver updates to reduce IPI overhead in
it (Jacob Pan).
- System suspend/hibernation code cleanups (Eric Biggers, Saurabh
Sengar).
- Year 2038 fix for the process freezer (Abhilash Jindal).
- turbostat utility updates including new features (decoding of more
registers and CPUID fields, sub-second intervals support, GFX MHz
and RC6 printout, --out command line option), fixes (syscall jitter
detection and workaround, reductioin of the number of syscalls made,
fixes related to Xeon x200 processors, compiler warning fixes) and
cleanups (Len Brown, Hubert Chrzaniuk, Chen Yu).
/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (GNU/Linux)
iQIcBAABCAAGBQJW50NXAAoJEILEb/54YlRxvr8QAIktC9+ft0y5AmU46hDcBWcK
QutyWJL9X9BS6DWBJZA2qclDYFmhMfi5Fza1se0gQ9TnLB/KrBwHWLsiYoTsb1k+
nPKf214aPk+qAhkVuyB4leNWML9Qz9n9jwku/EYxWWpgtbSRf3+0ioIKZeWWc/8V
JvuaOu4O+g/tkmL7QTrnGWBwhIIssAAV85QPsHkx+g68MrCj4UMMzm7z9G21SPXX
bmP8yIHsczX/XnRsY0W2NSno7Vdk6ImHpDJ26IAZg28WRNPWICHgGYHvB0TTWMvb
tts+yqfF7/7QLRjT/M8k9CzDBDE/DnVqoZ0fNJ+aYr7hNKF32mtAN+jH9ZB9dl/P
fEFapJkPxnWyzAoVoB9Dz0rkcZkYMlbxlLWzUGpaPq0JflUUTzLk0ApSjmMn4HRO
UddwCDdyHTaYThp3gn6GbOb0pIP0SdOVbI1M2QV2x/4PLcT2Ft8Np1+1RFWOeinZ
Bdl9AE890big0808mqbBzw/buETwr9FjHtCdDPXpP0vJpkBLu3nIYRNb0LCt39es
mWMp6dFhGgvGj3D3ahTuV3GI8hdpDkh9SObexa11RCjkTKrXcwEmFxHxLeFXwKYq
alG278bo6cSChRMziS1lis+W/3tsJRN4TXUSv1PPzJHrFgptQVFRStU9ngBKP+pN
WB+itPc4Fw0YHOrAFsrx
=cfty
-----END PGP SIGNATURE-----
Merge tag 'pm+acpi-4.6-rc1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm
Pull power management and ACPI updates from Rafael Wysocki:
"This time the majority of changes go into cpufreq and they are
significant.
First off, the way CPU frequency updates are triggered is different
now. Instead of having to set up and manage a deferrable timer for
each CPU in the system to evaluate and possibly change its frequency
periodically, cpufreq governors set up callbacks to be invoked by the
scheduler on a regular basis (basically on utilization updates). The
"old" governors, "ondemand" and "conservative", still do all of their
work in process context (although that is triggered by the scheduler
now), but intel_pstate does it all in the callback invoked by the
scheduler with no need for any additional asynchronous processing.
Of course, this eliminates the overhead related to the management of
all those timers, but also it allows the cpufreq governor code to be
simplified quite a bit. On top of that, the common code and data
structures used by the "ondemand" and "conservative" governors are
cleaned up and made more straightforward and some long-standing and
quite annoying problems are addressed. In particular, the handling of
governor sysfs attributes is modified and the related locking becomes
more fine grained which allows some concurrency problems to be avoided
(particularly deadlocks with the core cpufreq code).
In principle, the new mechanism for triggering frequency updates
allows utilization information to be passed from the scheduler to
cpufreq. Although the current code doesn't make use of it, in the
works is a new cpufreq governor that will make decisions based on the
scheduler's utilization data. That should allow the scheduler and
cpufreq to work more closely together in the long run.
In addition to the core and governor changes, cpufreq drivers are
updated too. Fixes and optimizations go into intel_pstate, the
cpufreq-dt driver is updated on top of some modification in the
Operating Performance Points (OPP) framework and there are fixes and
other updates in the powernv cpufreq driver.
Apart from the cpufreq updates there is some new ACPICA material,
including a fix for a problem introduced by previous ACPICA updates,
and some less significant changes in the ACPI code, like CPPC code
optimizations, ACPI processor driver cleanups and support for loading
ACPI tables from initrd.
Also updated are the generic power domains framework, the Intel RAPL
power capping driver and the turbostat utility and we have a bunch of
traditional assorted fixes and cleanups.
Specifics:
- Redesign of cpufreq governors and the intel_pstate driver to make
them use callbacks invoked by the scheduler to trigger CPU
frequency evaluation instead of using per-CPU deferrable timers for
that purpose (Rafael Wysocki).
- Reorganization and cleanup of cpufreq governor code to make it more
straightforward and fix some concurrency problems in it (Rafael
Wysocki, Viresh Kumar).
- Cleanup and improvements of locking in the cpufreq core (Viresh
Kumar).
- Assorted cleanups in the cpufreq core (Rafael Wysocki, Viresh
Kumar, Eric Biggers).
- intel_pstate driver updates including fixes, optimizations and a
modification to make it enable enable hardware-coordinated P-state
selection (HWP) by default if supported by the processor (Philippe
Longepe, Srinivas Pandruvada, Rafael Wysocki, Viresh Kumar, Felipe
Franciosi).
- Operating Performance Points (OPP) framework updates to improve its
handling of voltage regulators and device clocks and updates of the
cpufreq-dt driver on top of that (Viresh Kumar, Jon Hunter).
- Updates of the powernv cpufreq driver to fix initialization and
cleanup problems in it and correct its worker thread handling with
respect to CPU offline, new powernv_throttle tracepoint (Shilpasri
Bhat).
- ACPI cpufreq driver optimization and cleanup (Rafael Wysocki).
- ACPICA updates including one fix for a regression introduced by
previos changes in the ACPICA code (Bob Moore, Lv Zheng, David Box,
Colin Ian King).
- Support for installing ACPI tables from initrd (Lv Zheng).
- Optimizations of the ACPI CPPC code (Prashanth Prakash, Ashwin
Chaugule).
- Support for _HID(ACPI0010) devices (ACPI processor containers) and
ACPI processor driver cleanups (Sudeep Holla).
- Support for ACPI-based enumeration of the AMBA bus (Graeme Gregory,
Aleksey Makarov).
- Modification of the ACPI PCI IRQ management code to make it treat
255 in the Interrupt Line register as "not connected" on x86 (as
per the specification) and avoid attempts to use that value as a
valid interrupt vector (Chen Fan).
- ACPI APEI fixes related to resource leaks (Josh Hunt).
- Removal of modularity from a few ACPI drivers (BGRT, GHES,
intel_pmic_crc) that cannot be built as modules in practice (Paul
Gortmaker).
- PNP framework update to make it treat ACPI_RESOURCE_TYPE_SERIAL_BUS
as a valid resource type (Harb Abdulhamid).
- New device ID (future AMD I2C controller) in the ACPI driver for
AMD SoCs (APD) and in the designware I2C driver (Xiangliang Yu).
- Assorted ACPI cleanups (Colin Ian King, Kaiyen Chang, Oleg Drokin).
- cpuidle menu governor optimization to avoid a square root
computation in it (Rasmus Villemoes).
- Fix for potential use-after-free in the generic device properties
framework (Heikki Krogerus).
- Updates of the generic power domains (genpd) framework including
support for multiple power states of a domain, fixes and debugfs
output improvements (Axel Haslam, Jon Hunter, Laurent Pinchart,
Geert Uytterhoeven).
- Intel RAPL power capping driver updates to reduce IPI overhead in
it (Jacob Pan).
- System suspend/hibernation code cleanups (Eric Biggers, Saurabh
Sengar).
- Year 2038 fix for the process freezer (Abhilash Jindal).
- turbostat utility updates including new features (decoding of more
registers and CPUID fields, sub-second intervals support, GFX MHz
and RC6 printout, --out command line option), fixes (syscall jitter
detection and workaround, reductioin of the number of syscalls
made, fixes related to Xeon x200 processors, compiler warning
fixes) and cleanups (Len Brown, Hubert Chrzaniuk, Chen Yu)"
* tag 'pm+acpi-4.6-rc1-1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (182 commits)
tools/power turbostat: bugfix: TDP MSRs print bits fixing
tools/power turbostat: correct output for MSR_NHM_SNB_PKG_CST_CFG_CTL dump
tools/power turbostat: call __cpuid() instead of __get_cpuid()
tools/power turbostat: indicate SMX and SGX support
tools/power turbostat: detect and work around syscall jitter
tools/power turbostat: show GFX%rc6
tools/power turbostat: show GFXMHz
tools/power turbostat: show IRQs per CPU
tools/power turbostat: make fewer systems calls
tools/power turbostat: fix compiler warnings
tools/power turbostat: add --out option for saving output in a file
tools/power turbostat: re-name "%Busy" field to "Busy%"
tools/power turbostat: Intel Xeon x200: fix turbo-ratio decoding
tools/power turbostat: Intel Xeon x200: fix erroneous bclk value
tools/power turbostat: allow sub-sec intervals
ACPI / APEI: ERST: Fixed leaked resources in erst_init
ACPI / APEI: Fix leaked resources
intel_pstate: Do not skip samples partially
intel_pstate: Remove freq calculation from intel_pstate_calc_busy()
intel_pstate: Move intel_pstate_calc_busy() into get_target_pstate_use_performance()
...
This commit is contained in:
commit
277edbabf6
101 changed files with 4454 additions and 2943 deletions
|
|
@ -25,7 +25,7 @@ callback, so cpufreq core can't request a transition to a specific frequency.
|
|||
The driver provides minimum and maximum frequency limits and callbacks to set a
|
||||
policy. The policy in cpufreq sysfs is referred to as the "scaling governor".
|
||||
The cpufreq core can request the driver to operate in any of the two policies:
|
||||
"performance: and "powersave". The driver decides which frequency to use based
|
||||
"performance" and "powersave". The driver decides which frequency to use based
|
||||
on the above policy selection considering minimum and maximum frequency limits.
|
||||
|
||||
The Intel P-State driver falls under the latter category, which implements the
|
||||
|
|
|
|||
|
|
@ -193,6 +193,12 @@ bytes respectively. Such letter suffixes can also be entirely omitted.
|
|||
(e.g. thinkpad_acpi, sony_acpi, etc.) instead
|
||||
of the ACPI video.ko driver.
|
||||
|
||||
acpi_force_32bit_fadt_addr
|
||||
force FADT to use 32 bit addresses rather than the
|
||||
64 bit X_* addresses. Some firmware have broken 64
|
||||
bit addresses for force ACPI ignore these and use
|
||||
the older legacy 32 bit addresses.
|
||||
|
||||
acpica_no_return_repair [HW, ACPI]
|
||||
Disable AML predefined validation mechanism
|
||||
This mechanism can repair the evaluation result to make
|
||||
|
|
|
|||
|
|
@ -374,8 +374,13 @@ static struct pu_domain imx6q_pu_domain = {
|
|||
.name = "PU",
|
||||
.power_off = imx6q_pm_pu_power_off,
|
||||
.power_on = imx6q_pm_pu_power_on,
|
||||
.power_off_latency_ns = 25000,
|
||||
.power_on_latency_ns = 2000000,
|
||||
.states = {
|
||||
[0] = {
|
||||
.power_off_latency_ns = 25000,
|
||||
.power_on_latency_ns = 2000000,
|
||||
},
|
||||
},
|
||||
.state_count = 1,
|
||||
},
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -235,10 +235,10 @@
|
|||
#define HWP_PACKAGE_LEVEL_REQUEST_BIT (1<<11)
|
||||
|
||||
/* IA32_HWP_CAPABILITIES */
|
||||
#define HWP_HIGHEST_PERF(x) (x & 0xff)
|
||||
#define HWP_GUARANTEED_PERF(x) ((x & (0xff << 8)) >>8)
|
||||
#define HWP_MOSTEFFICIENT_PERF(x) ((x & (0xff << 16)) >>16)
|
||||
#define HWP_LOWEST_PERF(x) ((x & (0xff << 24)) >>24)
|
||||
#define HWP_HIGHEST_PERF(x) (((x) >> 0) & 0xff)
|
||||
#define HWP_GUARANTEED_PERF(x) (((x) >> 8) & 0xff)
|
||||
#define HWP_MOSTEFFICIENT_PERF(x) (((x) >> 16) & 0xff)
|
||||
#define HWP_LOWEST_PERF(x) (((x) >> 24) & 0xff)
|
||||
|
||||
/* IA32_HWP_REQUEST */
|
||||
#define HWP_MIN_PERF(x) (x & 0xff)
|
||||
|
|
|
|||
|
|
@ -43,6 +43,7 @@ acpi-y += pci_root.o pci_link.o pci_irq.o
|
|||
acpi-y += acpi_lpss.o acpi_apd.o
|
||||
acpi-y += acpi_platform.o
|
||||
acpi-y += acpi_pnp.o
|
||||
acpi-$(CONFIG_ARM_AMBA) += acpi_amba.o
|
||||
acpi-y += int340x_thermal.o
|
||||
acpi-y += power.o
|
||||
acpi-y += event.o
|
||||
|
|
|
|||
122
drivers/acpi/acpi_amba.c
Normal file
122
drivers/acpi/acpi_amba.c
Normal file
|
|
@ -0,0 +1,122 @@
|
|||
|
||||
/*
|
||||
* ACPI support for platform bus type.
|
||||
*
|
||||
* Copyright (C) 2015, Linaro Ltd
|
||||
* Author: Graeme Gregory <graeme.gregory@linaro.org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/amba/bus.h>
|
||||
#include <linux/clkdev.h>
|
||||
#include <linux/clk-provider.h>
|
||||
#include <linux/device.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include "internal.h"
|
||||
|
||||
static const struct acpi_device_id amba_id_list[] = {
|
||||
{"ARMH0061", 0}, /* PL061 GPIO Device */
|
||||
{"", 0},
|
||||
};
|
||||
|
||||
static void amba_register_dummy_clk(void)
|
||||
{
|
||||
static struct clk *amba_dummy_clk;
|
||||
|
||||
/* If clock already registered */
|
||||
if (amba_dummy_clk)
|
||||
return;
|
||||
|
||||
amba_dummy_clk = clk_register_fixed_rate(NULL, "apb_pclk", NULL,
|
||||
CLK_IS_ROOT, 0);
|
||||
clk_register_clkdev(amba_dummy_clk, "apb_pclk", NULL);
|
||||
}
|
||||
|
||||
static int amba_handler_attach(struct acpi_device *adev,
|
||||
const struct acpi_device_id *id)
|
||||
{
|
||||
struct amba_device *dev;
|
||||
struct resource_entry *rentry;
|
||||
struct list_head resource_list;
|
||||
bool address_found = false;
|
||||
int irq_no = 0;
|
||||
int ret;
|
||||
|
||||
/* If the ACPI node already has a physical device attached, skip it. */
|
||||
if (adev->physical_node_count)
|
||||
return 0;
|
||||
|
||||
dev = amba_device_alloc(dev_name(&adev->dev), 0, 0);
|
||||
if (!dev) {
|
||||
dev_err(&adev->dev, "%s(): amba_device_alloc() failed\n",
|
||||
__func__);
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&resource_list);
|
||||
ret = acpi_dev_get_resources(adev, &resource_list, NULL, NULL);
|
||||
if (ret < 0)
|
||||
goto err_free;
|
||||
|
||||
list_for_each_entry(rentry, &resource_list, node) {
|
||||
switch (resource_type(rentry->res)) {
|
||||
case IORESOURCE_MEM:
|
||||
if (!address_found) {
|
||||
dev->res = *rentry->res;
|
||||
address_found = true;
|
||||
}
|
||||
break;
|
||||
case IORESOURCE_IRQ:
|
||||
if (irq_no < AMBA_NR_IRQS)
|
||||
dev->irq[irq_no++] = rentry->res->start;
|
||||
break;
|
||||
default:
|
||||
dev_warn(&adev->dev, "Invalid resource\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
acpi_dev_free_resource_list(&resource_list);
|
||||
|
||||
/*
|
||||
* If the ACPI node has a parent and that parent has a physical device
|
||||
* attached to it, that physical device should be the parent of
|
||||
* the amba device we are about to create.
|
||||
*/
|
||||
if (adev->parent)
|
||||
dev->dev.parent = acpi_get_first_physical_node(adev->parent);
|
||||
|
||||
ACPI_COMPANION_SET(&dev->dev, adev);
|
||||
|
||||
ret = amba_device_add(dev, &iomem_resource);
|
||||
if (ret) {
|
||||
dev_err(&adev->dev, "%s(): amba_device_add() failed (%d)\n",
|
||||
__func__, ret);
|
||||
goto err_free;
|
||||
}
|
||||
|
||||
return 1;
|
||||
|
||||
err_free:
|
||||
amba_device_put(dev);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static struct acpi_scan_handler amba_handler = {
|
||||
.ids = amba_id_list,
|
||||
.attach = amba_handler_attach,
|
||||
};
|
||||
|
||||
void __init acpi_amba_init(void)
|
||||
{
|
||||
amba_register_dummy_clk();
|
||||
acpi_scan_add_handler(&amba_handler);
|
||||
}
|
||||
|
|
@ -143,6 +143,7 @@ static const struct acpi_device_id acpi_apd_device_ids[] = {
|
|||
/* Generic apd devices */
|
||||
#ifdef CONFIG_X86_AMD_PLATFORM_DEVICE
|
||||
{ "AMD0010", APD_ADDR(cz_i2c_desc) },
|
||||
{ "AMDI0010", APD_ADDR(cz_i2c_desc) },
|
||||
{ "AMD0020", APD_ADDR(cz_uart_desc) },
|
||||
{ "AMD0030", },
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -43,7 +43,6 @@ static const struct acpi_device_id forbidden_id_list[] = {
|
|||
struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
|
||||
{
|
||||
struct platform_device *pdev = NULL;
|
||||
struct acpi_device *acpi_parent;
|
||||
struct platform_device_info pdevinfo;
|
||||
struct resource_entry *rentry;
|
||||
struct list_head resource_list;
|
||||
|
|
@ -82,22 +81,8 @@ struct platform_device *acpi_create_platform_device(struct acpi_device *adev)
|
|||
* attached to it, that physical device should be the parent of the
|
||||
* platform device we are about to create.
|
||||
*/
|
||||
pdevinfo.parent = NULL;
|
||||
acpi_parent = adev->parent;
|
||||
if (acpi_parent) {
|
||||
struct acpi_device_physical_node *entry;
|
||||
struct list_head *list;
|
||||
|
||||
mutex_lock(&acpi_parent->physical_node_lock);
|
||||
list = &acpi_parent->physical_node_list;
|
||||
if (!list_empty(list)) {
|
||||
entry = list_first_entry(list,
|
||||
struct acpi_device_physical_node,
|
||||
node);
|
||||
pdevinfo.parent = entry->dev;
|
||||
}
|
||||
mutex_unlock(&acpi_parent->physical_node_lock);
|
||||
}
|
||||
pdevinfo.parent = adev->parent ?
|
||||
acpi_get_first_physical_node(adev->parent) : NULL;
|
||||
pdevinfo.name = dev_name(&adev->dev);
|
||||
pdevinfo.id = -1;
|
||||
pdevinfo.res = resources;
|
||||
|
|
|
|||
|
|
@ -514,7 +514,24 @@ static struct acpi_scan_handler processor_handler = {
|
|||
},
|
||||
};
|
||||
|
||||
static int acpi_processor_container_attach(struct acpi_device *dev,
|
||||
const struct acpi_device_id *id)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const struct acpi_device_id processor_container_ids[] = {
|
||||
{ ACPI_PROCESSOR_CONTAINER_HID, },
|
||||
{ }
|
||||
};
|
||||
|
||||
static struct acpi_scan_handler processor_container_handler = {
|
||||
.ids = processor_container_ids,
|
||||
.attach = acpi_processor_container_attach,
|
||||
};
|
||||
|
||||
void __init acpi_processor_init(void)
|
||||
{
|
||||
acpi_scan_add_handler_with_hotplug(&processor_handler, "processor");
|
||||
acpi_scan_add_handler(&processor_container_handler);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -218,13 +218,6 @@ struct acpi_video_device {
|
|||
struct thermal_cooling_device *cooling_dev;
|
||||
};
|
||||
|
||||
static const char device_decode[][30] = {
|
||||
"motherboard VGA device",
|
||||
"PCI VGA device",
|
||||
"AGP VGA device",
|
||||
"UNKNOWN",
|
||||
};
|
||||
|
||||
static void acpi_video_device_notify(acpi_handle handle, u32 event, void *data);
|
||||
static void acpi_video_device_rebind(struct acpi_video_bus *video);
|
||||
static void acpi_video_device_bind(struct acpi_video_bus *video,
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ ACPI_GLOBAL(u8, acpi_gbl_next_owner_id_offset);
|
|||
|
||||
/* Initialization sequencing */
|
||||
|
||||
ACPI_INIT_GLOBAL(u8, acpi_gbl_reg_methods_enabled, FALSE);
|
||||
ACPI_INIT_GLOBAL(u8, acpi_gbl_namespace_initialized, FALSE);
|
||||
|
||||
/* Misc */
|
||||
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ union acpi_parse_object;
|
|||
#define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */
|
||||
|
||||
#define ACPI_MAX_MUTEX 5
|
||||
#define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1
|
||||
#define ACPI_NUM_MUTEX (ACPI_MAX_MUTEX+1)
|
||||
|
||||
/* Lock structure for reader/writer interfaces */
|
||||
|
||||
|
|
@ -103,11 +103,11 @@ struct acpi_rw_lock {
|
|||
#define ACPI_LOCK_HARDWARE 1
|
||||
|
||||
#define ACPI_MAX_LOCK 1
|
||||
#define ACPI_NUM_LOCK ACPI_MAX_LOCK+1
|
||||
#define ACPI_NUM_LOCK (ACPI_MAX_LOCK+1)
|
||||
|
||||
/* This Thread ID means that the mutex is not in use (unlocked) */
|
||||
|
||||
#define ACPI_MUTEX_NOT_ACQUIRED (acpi_thread_id) 0
|
||||
#define ACPI_MUTEX_NOT_ACQUIRED ((acpi_thread_id) 0)
|
||||
|
||||
/* This Thread ID means an invalid thread ID */
|
||||
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@
|
|||
*/
|
||||
acpi_status acpi_ns_initialize_objects(void);
|
||||
|
||||
acpi_status acpi_ns_initialize_devices(void);
|
||||
acpi_status acpi_ns_initialize_devices(u32 flags);
|
||||
|
||||
/*
|
||||
* nsload - Namespace loading
|
||||
|
|
|
|||
|
|
@ -1125,7 +1125,7 @@ const union acpi_predefined_info acpi_gbl_resource_names[] = {
|
|||
PACKAGE_INFO(0, 0, 0, 0, 0, 0) /* Table terminator */
|
||||
};
|
||||
|
||||
static const union acpi_predefined_info acpi_gbl_scope_names[] = {
|
||||
const union acpi_predefined_info acpi_gbl_scope_names[] = {
|
||||
{{"_GPE", 0, 0}},
|
||||
{{"_PR_", 0, 0}},
|
||||
{{"_SB_", 0, 0}},
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ void acpi_db_display_table_info(char *table_arg)
|
|||
} else {
|
||||
/* If the pointer is null, the table has been unloaded */
|
||||
|
||||
ACPI_INFO((AE_INFO, "%4.4s - Table has been unloaded",
|
||||
ACPI_INFO(("%4.4s - Table has been unloaded",
|
||||
table_desc->signature.ascii));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -408,7 +408,7 @@ void acpi_db_dump_pld_buffer(union acpi_object *obj_desc)
|
|||
|
||||
new_buffer = acpi_db_encode_pld_buffer(pld_info);
|
||||
if (!new_buffer) {
|
||||
return;
|
||||
goto exit;
|
||||
}
|
||||
|
||||
/* The two bit-packed buffers should match */
|
||||
|
|
@ -479,6 +479,7 @@ void acpi_db_dump_pld_buffer(union acpi_object *obj_desc)
|
|||
pld_info->horizontal_offset);
|
||||
}
|
||||
|
||||
ACPI_FREE(pld_info);
|
||||
ACPI_FREE(new_buffer);
|
||||
exit:
|
||||
ACPI_FREE(pld_info);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -809,8 +809,7 @@ acpi_ds_terminate_control_method(union acpi_operand_object *method_desc,
|
|||
if (method_desc->method.
|
||||
info_flags & ACPI_METHOD_SERIALIZED_PENDING) {
|
||||
if (walk_state) {
|
||||
ACPI_INFO((AE_INFO,
|
||||
"Marking method %4.4s as Serialized "
|
||||
ACPI_INFO(("Marking method %4.4s as Serialized "
|
||||
"because of AE_ALREADY_EXISTS error",
|
||||
walk_state->method_node->name.
|
||||
ascii));
|
||||
|
|
|
|||
|
|
@ -524,8 +524,7 @@ acpi_ds_build_internal_package_obj(struct acpi_walk_state *walk_state,
|
|||
arg = arg->common.next;
|
||||
}
|
||||
|
||||
ACPI_INFO((AE_INFO,
|
||||
"Actual Package length (%u) is larger than "
|
||||
ACPI_INFO(("Actual Package length (%u) is larger than "
|
||||
"NumElements field (%u), truncated",
|
||||
i, element_count));
|
||||
} else if (i < element_count) {
|
||||
|
|
|
|||
|
|
@ -499,8 +499,7 @@ acpi_ev_initialize_gpe_block(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
|
|||
}
|
||||
|
||||
if (gpe_enabled_count) {
|
||||
ACPI_INFO((AE_INFO,
|
||||
"Enabled %u GPEs in block %02X to %02X",
|
||||
ACPI_INFO(("Enabled %u GPEs in block %02X to %02X",
|
||||
gpe_enabled_count, (u32)gpe_block->block_base_number,
|
||||
(u32)(gpe_block->block_base_number +
|
||||
(gpe_block->gpe_count - 1))));
|
||||
|
|
|
|||
|
|
@ -281,7 +281,7 @@ void acpi_ev_update_gpes(acpi_owner_id table_owner_id)
|
|||
}
|
||||
|
||||
if (walk_info.count) {
|
||||
ACPI_INFO((AE_INFO, "Enabled %u new GPEs", walk_info.count));
|
||||
ACPI_INFO(("Enabled %u new GPEs", walk_info.count));
|
||||
}
|
||||
|
||||
(void)acpi_ut_release_mutex(ACPI_MTX_EVENTS);
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue