[PATCH v6 1/6] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE_ONLY to enforce this ACPI mode

Rafael J. Wysocki rjw at rjwysocki.net
Fri Jan 10 18:40:47 EST 2014


On Friday, January 10, 2014 04:13:54 PM Al Stone wrote:
> On 01/10/2014 04:11 PM, Rafael J. Wysocki wrote:
> > On Friday, January 10, 2014 03:52:15 PM al.stone at linaro.org wrote:
> >> From: Al Stone <al.stone at linaro.org>
> >>
> >> Hardware reduced mode, despite the name, exists primarily to allow
> >> newer platforms to use a much simpler form of ACPI that does not
> >> require supporting the legacy of previous versions of the specification.
> >> This mode was first introduced in the ACPI 5.0 specification, but because
> >> it is so much simpler and reduces the size of the object code needed to
> >> support ACPI, it is likely to be used more often in the near future.
> >>
> >> To enable the hardware reduced mode of ACPI on some platforms (such as
> >> ARM), we need to modify the kernel code and set ACPI_REDUCED_HARDWARE
> >> to TRUE in the ACPICA source.  For ARM/ARM64, hardware reduced ACPI
> >> should be the only mode used; legacy mode would require modifications
> >> to SoCs in order to provide several x86-specific hardware features (e.g.,
> >> an NMI and SMI support).
> >>
> >> We set ACPI_REDUCED_HARDWARE to TRUE in the ACPICA source by introducing
> >> a kernel config item to enable/disable ACPI_REDUCED_HARDWARE.  We can then
> >> change the kernel config instead of having to modify the kernel source
> >> directly to enable the reduced hardware mode of ACPI.
> >>
> >> Lv Zheng suggested that this configuration item does not belong in ACPICA,
> >> the upstream source for much of the ACPI internals, but rather to the
> >> Linux kernel itself.  Hence, we introduce this flag so that we can make
> >> ACPI_REDUCED_HARDWARE configurable.  For the details of the discussion,
> >> please refer to: http://www.spinics.net/lists/linux-acpi/msg46369.html
> >>
> >> Even though support for X86 in hardware reduced mode is possible, it
> >> is NOT enabled.  Extensive effort has gone into the Linux kernel so that
> >> there is a single kernel image than can run on all x86 hardware; the kernel
> >> changes run-time behavior to adapt to the hardware being used.  This is not
> >> currently possible with the existing ACPICA infrastructure but only presents
> >> a problem on achitectures supporting both hardware-reduced and legacy modes
> >> of ACPI -- i.e., on x86 only.
> >>
> >> The problem with the current ACPICA code base is that if one builds legacy
> >> ACPI (a proper superset of hardware-reduced), the kernel can run in hardware-
> >> reduced with the proper ACPI tables, but there is still ACPICA code that could
> >> be executed even though it is not allowed by the specification.  If one builds
> >> a hardware-reduced only ACPI, the kernel cannot run with ACPI tables that are
> >> for legacy mode.  To ensure compliance with ACPI, one must therefore build
> >> two separate kernels.  Once this problem has been properly fixed, we can then
> >> enable x86 hardware-reduced mode and use a single kernel.
> >>
> >> Signed-off-by: Hanjun Guo <hanjun.guo at linaro.org>
> >> Signed-off-by: Al Stone <al.stone at linaro.org>
> >> ---
> >>   drivers/acpi/Kconfig            | 12 ++++++++++++
> >>   include/acpi/platform/aclinux.h |  6 ++++++
> >>   2 files changed, 18 insertions(+)
> >>
> >> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> >> index 4770de5..75dd38a 100644
> >> --- a/drivers/acpi/Kconfig
> >> +++ b/drivers/acpi/Kconfig
> >> @@ -343,6 +343,18 @@ config ACPI_BGRT
> >>   	  data from the firmware boot splash. It will appear under
> >>   	  /sys/firmware/acpi/bgrt/ .
> >>
> >> +config ACPI_REDUCED_HARDWARE_ONLY
> >> +	bool "Hardware-reduced ACPI support only"
> >> +	depends on !X86 && !IA64 || EXPERT
> >> +	help
> >> +	This config item changes the way the ACPI code is built.  When this
> >> +	option is selected, the kernel will use a specialized version of
> >> +	ACPICA that ONLY supports the ACPI "reduced hardware" mode.  The
> >> +	resulting kernel will be smaller but it will also be restricted to
> >> +	running in ACPI reduced hardware mode ONLY.
> >> +
> >> +	If you are unsure what to do, do not enable this option.
> >
> > I'm still not exactly convinced this is the best way to do that.
> >
> > In particular, I wonder if it would be viable to make it disabled by default
> > and then make the interested architectures do
> >
> > 	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
> >
> > in their top-level Kconfig files?
> 
> Hrm.  Do you mean something like this:
> 
> config ACPI_REDUCED_HARDWARE_ONLY
> 	bool "Hardware-reduced ACPI support only"
> 	default n
> 	depends on EXPERT
> 	help
> 	...
> 
> and remove any mention of architecture?

Yes.

> Or forgo the "depends" entirely?  From my perspective, any of the above is sufficient
> so I'll defer to your broader view of ACPI.

Well, I thought about something like this:

config ACPI_REDUCED_HARDWARE_ONLY
	def_bool n
	depends on ACPI && EXPERT

and then do the above select in arch-level Kconfigs where necessary.

Thanks!

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.



More information about the linux-arm-kernel mailing list