Thread (24 messages) 24 messages, 3 authors, 2014-01-14
STALE4558d

[PATCH v6 4/6] ACPI: in HW reduced mode, using FADT PM information is not allowed.

From: Rafael J. Wysocki <hidden>
Date: 2014-01-14 00:06:14
Also in: linux-acpi

On Monday, January 13, 2014 03:46:58 PM Al Stone wrote:
On 01/10/2014 04:31 PM, Rafael J. Wysocki wrote:
quoted
On Friday, January 10, 2014 03:52:18 PM al.stone at linaro.org wrote:
quoted
From: Al Stone <redacted>

Per the ACPI 5.0 specification, section 5.2.9, none of the power
management fields in the FADT are to be used.  Short-circuit using
any of those fields in acpi_processor_get_power_info_fadt().
So the spec says that we're supposed to ignore the information in
certain FADT fields if the HW_REDUCED_ACPI flag is set.

However, what about systems in which that information is actually
valid even though HW_REDUCED_ACPI is set?

Does it break things if we attempt to use that information?
The way I see it in the spec, we just don't use that info _if_ we wish
to remain compliant with the spec.  If we insist on using it anyway, we
can't say we're implementing hardware reduced mode correctly.  That
being said, from my read of the code it appears things would operate
the same as they did before if this part of the spec was ignored _and_
the info in the tables was still valid (same control register addresses
and content and so on).
Yes.

And we are at the point where we've already been violating the spec
(formally) by not ignoring that information for quite a while, so we risk
regressions if we suddenly try to become "exactly compliant".  That's
my main concern here.
quoted
quoted
Signed-off-by: Al Stone <redacted>
---
  drivers/acpi/processor_idle.c | 8 ++++++++
  1 file changed, 8 insertions(+)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index eac984a..89f0a0f 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -270,6 +270,14 @@ static int acpi_processor_get_power_info_fadt(struct acpi_processor *pr)
  	if (!pr->pblk)
  		return -ENODEV;

+	/*
+	 * Using power management information from the FADT is not
+	 * allowed when in HW reduced mode.  See ACPI 5.0, section
+	 * 5.2.9.
+	 */
+	if (acpi_gbl_reduced_hardware)
+		return -ENODEV;
+
  	/* if info is obtained from pblk/fadt, type equals state */
  	pr->power.states[ACPI_STATE_C2].type = ACPI_STATE_C2;
  	pr->power.states[ACPI_STATE_C3].type = ACPI_STATE_C3;
Thanks!

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help