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

Rafael J. Wysocki rjw at rjwysocki.net
Mon Jan 13 19:06:14 EST 2014


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

> >> Signed-off-by: Al Stone <al.stone at linaro.org>
> >> ---
> >>   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.



More information about the linux-arm-kernel mailing list