[parent not found: < 1386192127-28564-2-git-send-email-al.stone@linaro.org>]
* [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-04 21:22 [PATCH v3 0/5] Hardware Reduced Mode Cleanup for ACPI al.stone at linaro.org
[not found] ` < 1386192127-28564-2-git-send-email-al.stone@linaro.org>
@ 2013-12-04 21:22 ` al.stone at linaro.org
2013-12-10 12:35 ` [Linaro-acpi] " Grant Likely
2013-12-10 12:37 ` Grant Likely
2013-12-04 21:22 ` [PATCH v3 2/5] ACPI: bus master reload not supported in reduced HW mode al.stone at linaro.org
` (3 subsequent siblings)
5 siblings, 2 replies; 15+ messages in thread
From: al.stone at linaro.org @ 2013-12-04 21:22 UTC (permalink / raw)
To: linux-arm-kernel
From: Al Stone <al.stone@linaro.org>
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.
This can be done more resonably 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
Support for X86 in hardware reduced mode is also provided to make it
simpler to debug this mode, and to provide for probable use in such
products. 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,
and is likely to be used more often in the near future as a result.
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
Signed-off-by: Al Stone <al.stone@linaro.org>
---
drivers/acpi/Kconfig | 8 ++++++++
include/acpi/platform/aclinux.h | 6 ++++++
2 files changed, 14 insertions(+)
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 5d92485..66e6bb2 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -343,6 +343,14 @@ config ACPI_BGRT
data from the firmware boot splash. It will appear under
/sys/firmware/acpi/bgrt/ .
+config ACPI_REDUCED_HARDWARE
+ bool "Hardware-reduced ACPI support"
+ depends on X86 || ARM || ARM64
+ help
+ This config adds support for Hardware-reduced ACPI. When this option
+ is selected, will generate a specialized version of ACPICA that ONLY
+ supports the ACPI "reduced hardware".
+
source "drivers/acpi/apei/Kconfig"
config ACPI_EXTLOG
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index 28f4f4d..a33f502 100644
--- a/include/acpi/platform/aclinux.h
+++ b/include/acpi/platform/aclinux.h
@@ -52,6 +52,12 @@
#ifdef __KERNEL__
+/* Compile for reduced hardware mode if requested for this kernel config */
+
+#ifdef CONFIG_ACPI_REDUCED_HARDWARE
+#define ACPI_REDUCED_HARDWARE 1
+#endif
+
#include <linux/string.h>
#include <linux/kernel.h>
#include <linux/ctype.h>
--
1.8.3.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-04 21:22 ` [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode al.stone at linaro.org
@ 2013-12-10 12:35 ` Grant Likely
2013-12-10 12:37 ` Grant Likely
1 sibling, 0 replies; 15+ messages in thread
From: Grant Likely @ 2013-12-10 12:35 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 4 Dec 2013 14:22:03 -0700, al.stone at linaro.org wrote:
> From: Al Stone <al.stone@linaro.org>
>
> 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.
>
> This can be done more resonably 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
>
> Support for X86 in hardware reduced mode is also provided to make it
> simpler to debug this mode, and to provide for probable use in such
> products. 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,
> and is likely to be used more often in the near future as a result.
>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> Signed-off-by: Al Stone <al.stone@linaro.org>
> ---
> drivers/acpi/Kconfig | 8 ++++++++
> include/acpi/platform/aclinux.h | 6 ++++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 5d92485..66e6bb2 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -343,6 +343,14 @@ config ACPI_BGRT
> data from the firmware boot splash. It will appear under
> /sys/firmware/acpi/bgrt/ .
>
> +config ACPI_REDUCED_HARDWARE
> + bool "Hardware-reduced ACPI support"
> + depends on X86 || ARM || ARM64
Why wouldn't this simply depend on ACPI?
> + help
> + This config adds support for Hardware-reduced ACPI. When this option
> + is selected, will generate a specialized version of ACPICA that ONLY
> + supports the ACPI "reduced hardware".
> +
> source "drivers/acpi/apei/Kconfig"
>
> config ACPI_EXTLOG
> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
> index 28f4f4d..a33f502 100644
> --- a/include/acpi/platform/aclinux.h
> +++ b/include/acpi/platform/aclinux.h
> @@ -52,6 +52,12 @@
>
> #ifdef __KERNEL__
>
> +/* Compile for reduced hardware mode if requested for this kernel config */
> +
> +#ifdef CONFIG_ACPI_REDUCED_HARDWARE
> +#define ACPI_REDUCED_HARDWARE 1
> +#endif
> +
> #include <linux/string.h>
> #include <linux/kernel.h>
> #include <linux/ctype.h>
> --
> 1.8.3.1
>
>
> _______________________________________________
> Linaro-acpi mailing list
> Linaro-acpi at lists.linaro.org
> http://lists.linaro.org/mailman/listinfo/linaro-acpi
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-04 21:22 ` [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode al.stone at linaro.org
2013-12-10 12:35 ` [Linaro-acpi] " Grant Likely
@ 2013-12-10 12:37 ` Grant Likely
2013-12-10 15:05 ` Hanjun Guo
1 sibling, 1 reply; 15+ messages in thread
From: Grant Likely @ 2013-12-10 12:37 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 4 Dec 2013 14:22:03 -0700, al.stone at linaro.org wrote:
> From: Al Stone <al.stone@linaro.org>
>
> 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.
>
> This can be done more resonably 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
>
> Support for X86 in hardware reduced mode is also provided to make it
> simpler to debug this mode, and to provide for probable use in such
> products. 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,
> and is likely to be used more often in the near future as a result.
>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> Signed-off-by: Al Stone <al.stone@linaro.org>
> ---
> drivers/acpi/Kconfig | 8 ++++++++
> include/acpi/platform/aclinux.h | 6 ++++++
> 2 files changed, 14 insertions(+)
>
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 5d92485..66e6bb2 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -343,6 +343,14 @@ config ACPI_BGRT
> data from the firmware boot splash. It will appear under
> /sys/firmware/acpi/bgrt/ .
>
> +config ACPI_REDUCED_HARDWARE
> + bool "Hardware-reduced ACPI support"
> + depends on X86 || ARM || ARM64
> + help
> + This config adds support for Hardware-reduced ACPI. When this option
> + is selected, will generate a specialized version of ACPICA that ONLY
> + supports the ACPI "reduced hardware".
> +
> source "drivers/acpi/apei/Kconfig"
>
> config ACPI_EXTLOG
> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
> index 28f4f4d..a33f502 100644
> --- a/include/acpi/platform/aclinux.h
> +++ b/include/acpi/platform/aclinux.h
> @@ -52,6 +52,12 @@
>
> #ifdef __KERNEL__
>
> +/* Compile for reduced hardware mode if requested for this kernel config */
> +
> +#ifdef CONFIG_ACPI_REDUCED_HARDWARE
> +#define ACPI_REDUCED_HARDWARE 1
> +#endif
Will this change the way ACPICA is compiled? Will it disable
non-hardware-reduced mode? If so, then this is a big problem. Enabling
the hardware reduced feature should *not* break normal ACPI usage.
g.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-10 12:37 ` Grant Likely
@ 2013-12-10 15:05 ` Hanjun Guo
2013-12-10 22:49 ` Grant Likely
0 siblings, 1 reply; 15+ messages in thread
From: Hanjun Guo @ 2013-12-10 15:05 UTC (permalink / raw)
To: linux-arm-kernel
On 2013?12?10? 20:37, Grant Likely wrote:
> On Wed, 4 Dec 2013 14:22:03 -0700, al.stone at linaro.org wrote:
>> From: Al Stone <al.stone@linaro.org>
>>
>> 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.
>>
>> This can be done more resonably 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
>>
>> Support for X86 in hardware reduced mode is also provided to make it
>> simpler to debug this mode, and to provide for probable use in such
>> products. 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,
>> and is likely to be used more often in the near future as a result.
>>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> Signed-off-by: Al Stone <al.stone@linaro.org>
>> ---
>> drivers/acpi/Kconfig | 8 ++++++++
>> include/acpi/platform/aclinux.h | 6 ++++++
>> 2 files changed, 14 insertions(+)
>>
>> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
>> index 5d92485..66e6bb2 100644
>> --- a/drivers/acpi/Kconfig
>> +++ b/drivers/acpi/Kconfig
>> @@ -343,6 +343,14 @@ config ACPI_BGRT
>> data from the firmware boot splash. It will appear under
>> /sys/firmware/acpi/bgrt/ .
>>
>> +config ACPI_REDUCED_HARDWARE
>> + bool "Hardware-reduced ACPI support"
>> + depends on X86 || ARM || ARM64
>> + help
>> + This config adds support for Hardware-reduced ACPI. When this option
>> + is selected, will generate a specialized version of ACPICA that ONLY
>> + supports the ACPI "reduced hardware".
>> +
>> source "drivers/acpi/apei/Kconfig"
>>
>> config ACPI_EXTLOG
>> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
>> index 28f4f4d..a33f502 100644
>> --- a/include/acpi/platform/aclinux.h
>> +++ b/include/acpi/platform/aclinux.h
>> @@ -52,6 +52,12 @@
>>
>> #ifdef __KERNEL__
>>
>> +/* Compile for reduced hardware mode if requested for this kernel config */
>> +
>> +#ifdef CONFIG_ACPI_REDUCED_HARDWARE
>> +#define ACPI_REDUCED_HARDWARE 1
>> +#endif
> Will this change the way ACPICA is compiled? Will it disable
> non-hardware-reduced mode?
Both yes. ACPICA supports reduced hardware mode when
ACPI_REDUCED_HARWARE is TRUE at compile time. There is
no way to support both normal ACPI and hardware reduced
ACPI with single binary image for now.
> If so, then this is a big problem. Enabling
> the hardware reduced feature should *not* break normal ACPI usage.
It will break normal ACPI usage but it is ok I think. Since
lots of features are not supported in the hardware in hardware
reduced mode, and normal ACPI will not run probably such as
leading kernel panic when refer to some registers which are not
exist on reduced hardware, we should introduce this kernel
config and modify the ACPI drivers to avoid such failures.
Thanks
Hanjun
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-10 15:05 ` Hanjun Guo
@ 2013-12-10 22:49 ` Grant Likely
2013-12-11 2:06 ` Rob Herring
2013-12-12 20:31 ` Al Stone
0 siblings, 2 replies; 15+ messages in thread
From: Grant Likely @ 2013-12-10 22:49 UTC (permalink / raw)
To: linux-arm-kernel
Hi Hanjun,
Okay, so after talking with Al and Graeme on IRC, I think I understand
what is going on. The fact that ACPICA doesn't allow for both normal and
hardware reduced support in the same build is a very big problem.
However, it isn't a problem for ARM since we'll never support
non-hardware reduced mode. The x86 folks need to work that out when/if
they ever add support for hardware reduced mode.
So I would say the thing to do is only allow hardware reduced mode to be
enabled on ARM, and make it ultra clear in the config text that it
cannot be supported on x86 before ACPICA is fixed.
g.
On Tue, 10 Dec 2013 23:05:03 +0800, Hanjun Guo <hanjun.guo@linaro.org> wrote:
> On 2013???12???10??? 20:37, Grant Likely wrote:
> > On Wed, 4 Dec 2013 14:22:03 -0700, al.stone at linaro.org wrote:
> >> From: Al Stone <al.stone@linaro.org>
> >>
> >> 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.
> >>
> >> This can be done more resonably 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
> >>
> >> Support for X86 in hardware reduced mode is also provided to make it
> >> simpler to debug this mode, and to provide for probable use in such
> >> products. 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,
> >> and is likely to be used more often in the near future as a result.
> >>
> >> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> >> Signed-off-by: Al Stone <al.stone@linaro.org>
> >> ---
> >> drivers/acpi/Kconfig | 8 ++++++++
> >> include/acpi/platform/aclinux.h | 6 ++++++
> >> 2 files changed, 14 insertions(+)
> >>
> >> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> >> index 5d92485..66e6bb2 100644
> >> --- a/drivers/acpi/Kconfig
> >> +++ b/drivers/acpi/Kconfig
> >> @@ -343,6 +343,14 @@ config ACPI_BGRT
> >> data from the firmware boot splash. It will appear under
> >> /sys/firmware/acpi/bgrt/ .
> >>
> >> +config ACPI_REDUCED_HARDWARE
> >> + bool "Hardware-reduced ACPI support"
> >> + depends on X86 || ARM || ARM64
> >> + help
> >> + This config adds support for Hardware-reduced ACPI. When this option
> >> + is selected, will generate a specialized version of ACPICA that ONLY
> >> + supports the ACPI "reduced hardware".
> >> +
> >> source "drivers/acpi/apei/Kconfig"
> >>
> >> config ACPI_EXTLOG
> >> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
> >> index 28f4f4d..a33f502 100644
> >> --- a/include/acpi/platform/aclinux.h
> >> +++ b/include/acpi/platform/aclinux.h
> >> @@ -52,6 +52,12 @@
> >>
> >> #ifdef __KERNEL__
> >>
> >> +/* Compile for reduced hardware mode if requested for this kernel config */
> >> +
> >> +#ifdef CONFIG_ACPI_REDUCED_HARDWARE
> >> +#define ACPI_REDUCED_HARDWARE 1
> >> +#endif
> > Will this change the way ACPICA is compiled? Will it disable
> > non-hardware-reduced mode?
>
> Both yes. ACPICA supports reduced hardware mode when
> ACPI_REDUCED_HARWARE is TRUE at compile time. There is
> no way to support both normal ACPI and hardware reduced
> ACPI with single binary image for now.
>
> > If so, then this is a big problem. Enabling
> > the hardware reduced feature should *not* break normal ACPI usage.
>
> It will break normal ACPI usage but it is ok I think. Since
> lots of features are not supported in the hardware in hardware
> reduced mode, and normal ACPI will not run probably such as
> leading kernel panic when refer to some registers which are not
> exist on reduced hardware, we should introduce this kernel
> config and modify the ACPI drivers to avoid such failures.
>
> Thanks
> Hanjun
>
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-10 22:49 ` Grant Likely
@ 2013-12-11 2:06 ` Rob Herring
2013-12-11 8:33 ` Graeme Gregory
2013-12-12 20:31 ` Al Stone
1 sibling, 1 reply; 15+ messages in thread
From: Rob Herring @ 2013-12-11 2:06 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 10, 2013 at 4:49 PM, Grant Likely <grant.likely@secretlab.ca> wrote:
> Hi Hanjun,
>
> Okay, so after talking with Al and Graeme on IRC, I think I understand
> what is going on. The fact that ACPICA doesn't allow for both normal and
> hardware reduced support in the same build is a very big problem.
> However, it isn't a problem for ARM since we'll never support
> non-hardware reduced mode. The x86 folks need to work that out when/if
> they ever add support for hardware reduced mode.
I believe SMBIOS/DMI tables are only part of full ACPI, so there is a
need on ARM for more than hardware reduced mode.
Rob
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-11 2:06 ` Rob Herring
@ 2013-12-11 8:33 ` Graeme Gregory
0 siblings, 0 replies; 15+ messages in thread
From: Graeme Gregory @ 2013-12-11 8:33 UTC (permalink / raw)
To: linux-arm-kernel
On Tue, Dec 10, 2013 at 08:06:08PM -0600, Rob Herring wrote:
> On Tue, Dec 10, 2013 at 4:49 PM, Grant Likely <grant.likely@secretlab.ca> wrote:
> > Hi Hanjun,
> >
> > Okay, so after talking with Al and Graeme on IRC, I think I understand
> > what is going on. The fact that ACPICA doesn't allow for both normal and
> > hardware reduced support in the same build is a very big problem.
> > However, it isn't a problem for ARM since we'll never support
> > non-hardware reduced mode. The x86 folks need to work that out when/if
> > they ever add support for hardware reduced mode.
>
> I believe SMBIOS/DMI tables are only part of full ACPI, so there is a
> need on ARM for more than hardware reduced mode.
>
You seem to be crossing the streams here, SMBIOS/DMI are not part of ACPI.
The only mention I can even find of them in the spec is you can cross reference
memory to its SMBIOS handle. Which is optional. It even says OSPM will not
use this value.
Graeme
^ permalink raw reply [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode
2013-12-10 22:49 ` Grant Likely
2013-12-11 2:06 ` Rob Herring
@ 2013-12-12 20:31 ` Al Stone
1 sibling, 0 replies; 15+ messages in thread
From: Al Stone @ 2013-12-12 20:31 UTC (permalink / raw)
To: linux-arm-kernel
On 12/10/2013 03:49 PM, Grant Likely wrote:
> Hi Hanjun,
>
> Okay, so after talking with Al and Graeme on IRC, I think I understand
> what is going on. The fact that ACPICA doesn't allow for both normal and
> hardware reduced support in the same build is a very big problem.
> However, it isn't a problem for ARM since we'll never support
> non-hardware reduced mode. The x86 folks need to work that out when/if
> they ever add support for hardware reduced mode.
>
> So I would say the thing to do is only allow hardware reduced mode to be
> enabled on ARM, and make it ultra clear in the config text that it
> cannot be supported on x86 before ACPICA is fixed.
>
> g.
Agreed. Will make it so in the next version.
> On Tue, 10 Dec 2013 23:05:03 +0800, Hanjun Guo <hanjun.guo@linaro.org> wrote:
>> On 2013???12???10??? 20:37, Grant Likely wrote:
>>> On Wed, 4 Dec 2013 14:22:03 -0700, al.stone at linaro.org wrote:
>>>> From: Al Stone <al.stone@linaro.org>
>>>>
>>>> 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.
>>>>
>>>> This can be done more resonably 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
>>>>
>>>> Support for X86 in hardware reduced mode is also provided to make it
>>>> simpler to debug this mode, and to provide for probable use in such
>>>> products. 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,
>>>> and is likely to be used more often in the near future as a result.
>>>>
>>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>>> Signed-off-by: Al Stone <al.stone@linaro.org>
>>>> ---
>>>> drivers/acpi/Kconfig | 8 ++++++++
>>>> include/acpi/platform/aclinux.h | 6 ++++++
>>>> 2 files changed, 14 insertions(+)
>>>>
>>>> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
>>>> index 5d92485..66e6bb2 100644
>>>> --- a/drivers/acpi/Kconfig
>>>> +++ b/drivers/acpi/Kconfig
>>>> @@ -343,6 +343,14 @@ config ACPI_BGRT
>>>> data from the firmware boot splash. It will appear under
>>>> /sys/firmware/acpi/bgrt/ .
>>>>
>>>> +config ACPI_REDUCED_HARDWARE
>>>> + bool "Hardware-reduced ACPI support"
>>>> + depends on X86 || ARM || ARM64
>>>> + help
>>>> + This config adds support for Hardware-reduced ACPI. When this option
>>>> + is selected, will generate a specialized version of ACPICA that ONLY
>>>> + supports the ACPI "reduced hardware".
>>>> +
>>>> source "drivers/acpi/apei/Kconfig"
>>>>
>>>> config ACPI_EXTLOG
>>>> diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
>>>> index 28f4f4d..a33f502 100644
>>>> --- a/include/acpi/platform/aclinux.h
>>>> +++ b/include/acpi/platform/aclinux.h
>>>> @@ -52,6 +52,12 @@
>>>>
>>>> #ifdef __KERNEL__
>>>>
>>>> +/* Compile for reduced hardware mode if requested for this kernel config */
>>>> +
>>>> +#ifdef CONFIG_ACPI_REDUCED_HARDWARE
>>>> +#define ACPI_REDUCED_HARDWARE 1
>>>> +#endif
>>> Will this change the way ACPICA is compiled? Will it disable
>>> non-hardware-reduced mode?
>>
>> Both yes. ACPICA supports reduced hardware mode when
>> ACPI_REDUCED_HARWARE is TRUE at compile time. There is
>> no way to support both normal ACPI and hardware reduced
>> ACPI with single binary image for now.
>>
>>> If so, then this is a big problem. Enabling
>>> the hardware reduced feature should *not* break normal ACPI usage.
>>
>> It will break normal ACPI usage but it is ok I think. Since
>> lots of features are not supported in the hardware in hardware
>> reduced mode, and normal ACPI will not run probably such as
>> leading kernel panic when refer to some registers which are not
>> exist on reduced hardware, we should introduce this kernel
>> config and modify the ACPI drivers to avoid such failures.
>>
>> Thanks
>> Hanjun
>>
>
--
ciao,
al
-----------------------------------
Al Stone
Software Engineer
Linaro Enterprise Group
al.stone at linaro.org
-----------------------------------
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 2/5] ACPI: bus master reload not supported in reduced HW mode
2013-12-04 21:22 [PATCH v3 0/5] Hardware Reduced Mode Cleanup for ACPI al.stone at linaro.org
[not found] ` < 1386192127-28564-2-git-send-email-al.stone@linaro.org>
2013-12-04 21:22 ` [PATCH v3 1/5] ACPI: introduce CONFIG_ACPI_REDUCED_HARDWARE to enable this ACPI mode al.stone at linaro.org
@ 2013-12-04 21:22 ` al.stone at linaro.org
2013-12-10 12:38 ` [Linaro-acpi] " Grant Likely
2013-12-04 21:22 ` [PATCH v3 3/5] ACPI: HW reduced mode does not allow use of the FADT sci_interrupt field al.stone at linaro.org
` (2 subsequent siblings)
5 siblings, 1 reply; 15+ messages in thread
From: al.stone at linaro.org @ 2013-12-04 21:22 UTC (permalink / raw)
To: linux-arm-kernel
From: Al Stone <al.stone@linaro.org>
Remove the saving and restoring of bus master reload registers in
suspend/resume when in reduced HW mode; according to the spec, no
such registers should exist
Signed-off-by: Al Stone <al.stone@linaro.org>
---
drivers/acpi/processor_idle.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
index 597cdab..8b48c08 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -202,7 +202,7 @@ static void lapic_timer_state_broadcast(struct acpi_processor *pr,
#endif
-#ifdef CONFIG_PM_SLEEP
+#if (IS_ENABLED(CONFIG_PM_SLEEP) && !IS_ENABLED(CONFIG_ACPI_REDUCED_HARDWARE))
static u32 saved_bm_rld;
static int acpi_processor_suspend(void)
@@ -236,7 +236,10 @@ void acpi_processor_syscore_exit(void)
{
unregister_syscore_ops(&acpi_processor_syscore_ops);
}
-#endif /* CONFIG_PM_SLEEP */
+#else
+void acpi_processor_syscore_init(void) { return; }
+void acpi_processor_syscore_exit(void) { return; }
+#endif
#if defined(CONFIG_X86)
static void tsc_check_state(int state)
--
1.8.3.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 2/5] ACPI: bus master reload not supported in reduced HW mode
2013-12-04 21:22 ` [PATCH v3 2/5] ACPI: bus master reload not supported in reduced HW mode al.stone at linaro.org
@ 2013-12-10 12:38 ` Grant Likely
0 siblings, 0 replies; 15+ messages in thread
From: Grant Likely @ 2013-12-10 12:38 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 4 Dec 2013 14:22:04 -0700, al.stone at linaro.org wrote:
> From: Al Stone <al.stone@linaro.org>
>
> Remove the saving and restoring of bus master reload registers in
> suspend/resume when in reduced HW mode; according to the spec, no
> such registers should exist
>
> Signed-off-by: Al Stone <al.stone@linaro.org>
> ---
> drivers/acpi/processor_idle.c | 7 +++++--
> 1 file changed, 5 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/acpi/processor_idle.c b/drivers/acpi/processor_idle.c
> index 597cdab..8b48c08 100644
> --- a/drivers/acpi/processor_idle.c
> +++ b/drivers/acpi/processor_idle.c
> @@ -202,7 +202,7 @@ static void lapic_timer_state_broadcast(struct acpi_processor *pr,
>
> #endif
>
> -#ifdef CONFIG_PM_SLEEP
> +#if (IS_ENABLED(CONFIG_PM_SLEEP) && !IS_ENABLED(CONFIG_ACPI_REDUCED_HARDWARE))
> static u32 saved_bm_rld;
>
> static int acpi_processor_suspend(void)
> @@ -236,7 +236,10 @@ void acpi_processor_syscore_exit(void)
> {
> unregister_syscore_ops(&acpi_processor_syscore_ops);
> }
> -#endif /* CONFIG_PM_SLEEP */
> +#else
> +void acpi_processor_syscore_init(void) { return; }
> +void acpi_processor_syscore_exit(void) { return; }
> +#endif
Ditto comment on this patch. This breaks normal ACPI on x86 if hardware
reduced is enabled. That is bad form. It is fine to compile it out if
normal ACPI is explicitly /disabled/, but it must be possible for normal
and hardware reduced to co-exist.
g.
^ permalink raw reply [flat|nested] 15+ messages in thread
* [PATCH v3 3/5] ACPI: HW reduced mode does not allow use of the FADT sci_interrupt field
2013-12-04 21:22 [PATCH v3 0/5] Hardware Reduced Mode Cleanup for ACPI al.stone at linaro.org
` (2 preceding siblings ...)
2013-12-04 21:22 ` [PATCH v3 2/5] ACPI: bus master reload not supported in reduced HW mode al.stone at linaro.org
@ 2013-12-04 21:22 ` al.stone at linaro.org
2013-12-04 21:22 ` [PATCH v3 4/5] ACPI: in HW reduced mode, using FADT PM information is not allowed al.stone at linaro.org
2013-12-04 21:22 ` [PATCH v3 5/5] ACPI: do not map/unmap memory regions for FADT entries in reduced HW mode al.stone at linaro.org
5 siblings, 0 replies; 15+ messages in thread
From: al.stone at linaro.org @ 2013-12-04 21:22 UTC (permalink / raw)
To: linux-arm-kernel
From: Al Stone <al.stone@linaro.org>
In HW reduced mode, the use of the SCI interrupt is not allowed. In
all those places that use the FADT sci_interrupt field, remove that
usage when in HW reduced mode.
In the case of acpi_os_install_interrupt_handler() in osl.c, this allows
us to open up the routine to installing interrupt handlers other than
acpi_gbl_FADT.sci_interrupt regardless of whether we are in ACPI legacy
mode or reduced HW mode; acpi_os_remove_interrupt_handler() changes to
maintain symmetry.
The function acpi_reserve_resources() is not stubbed but removed to
quiet a compiler warning about an unused function when using ACPI
reduced hardware mode.
Signed-off-by: Al Stone <al.stone@linaro.org>
---
drivers/acpi/bus.c | 3 ++-
drivers/acpi/osl.c | 16 +++++-----------
drivers/acpi/pci_link.c | 2 ++
3 files changed, 9 insertions(+), 12 deletions(-)
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c
index bba9b72..de3a259 100644
--- a/drivers/acpi/bus.c
+++ b/drivers/acpi/bus.c
@@ -541,7 +541,8 @@ void __init acpi_early_init(void)
goto error0;
}
-#ifdef CONFIG_X86
+#ifndef CONFIG_ACPI_REDUCED_HARDWARE
+ /* NOTE: in HW reduced mode, FADT sci_interrupt has no meaning */
if (!acpi_ioapic) {
/* compatible (0) means level (3) */
if (!(acpi_sci_flags & ACPI_MADT_TRIGGER_MASK)) {
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 44c07eb..613e4a1 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -84,6 +84,7 @@ static int (*__acpi_os_prepare_extended_sleep)(u8 sleep_state, u32 val_a,
static acpi_osd_handler acpi_irq_handler;
static void *acpi_irq_context;
+static u32 acpi_irq_number;
static struct workqueue_struct *kacpid_wq;
static struct workqueue_struct *kacpi_notify_wq;
static struct workqueue_struct *kacpi_hotplug_wq;
@@ -159,6 +160,7 @@ static u32 acpi_osi_handler(acpi_string interface, u32 supported)
return supported;
}
+#ifndef CONFIG_ACPI_REDUCED_HARDWARE
static void __init acpi_request_region (struct acpi_generic_address *gas,
unsigned int length, char *desc)
{
@@ -209,6 +211,7 @@ static int __init acpi_reserve_resources(void)
return 0;
}
device_initcall(acpi_reserve_resources);
+#endif
void acpi_os_printf(const char *fmt, ...)
{
@@ -795,13 +798,6 @@ acpi_os_install_interrupt_handler(u32 gsi, acpi_osd_handler handler,
acpi_irq_stats_init();
- /*
- * ACPI interrupts different from the SCI in our copy of the FADT are
- * not supported.
- */
- if (gsi != acpi_gbl_FADT.sci_interrupt)
- return AE_BAD_PARAMETER;
-
if (acpi_irq_handler)
return AE_ALREADY_ACQUIRED;
@@ -818,15 +814,13 @@ acpi_os_install_interrupt_handler(u32 gsi, acpi_osd_handler handler,
acpi_irq_handler = NULL;
return AE_NOT_ACQUIRED;
}
+ acpi_irq_number = irq;
return AE_OK;
}
acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
{
- if (irq != acpi_gbl_FADT.sci_interrupt)
- return AE_BAD_PARAMETER;
-
free_irq(irq, acpi_irq);
acpi_irq_handler = NULL;
@@ -1806,7 +1800,7 @@ acpi_status __init acpi_os_initialize1(void)
acpi_status acpi_os_terminate(void)
{
if (acpi_irq_handler) {
- acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
+ acpi_os_remove_interrupt_handler(acpi_irq_number,
acpi_irq_handler);
}
diff --git a/drivers/acpi/pci_link.c b/drivers/acpi/pci_link.c
index 2652a61..d5c155e 100644
--- a/drivers/acpi/pci_link.c
+++ b/drivers/acpi/pci_link.c
@@ -505,6 +505,8 @@ int __init acpi_irq_penalty_init(void)
}
}
/* Add a penalty for the SCI */
+ if (acpi_gbl_reduced_hardware)
+ return 0;
acpi_irq_penalty[acpi_gbl_FADT.sci_interrupt] += PIRQ_PENALTY_PCI_USING;
return 0;
}
--
1.8.3.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 4/5] ACPI: in HW reduced mode, using FADT PM information is not allowed.
2013-12-04 21:22 [PATCH v3 0/5] Hardware Reduced Mode Cleanup for ACPI al.stone at linaro.org
` (3 preceding siblings ...)
2013-12-04 21:22 ` [PATCH v3 3/5] ACPI: HW reduced mode does not allow use of the FADT sci_interrupt field al.stone at linaro.org
@ 2013-12-04 21:22 ` al.stone at linaro.org
2013-12-04 21:22 ` [PATCH v3 5/5] ACPI: do not map/unmap memory regions for FADT entries in reduced HW mode al.stone at linaro.org
5 siblings, 0 replies; 15+ messages in thread
From: al.stone at linaro.org @ 2013-12-04 21:22 UTC (permalink / raw)
To: linux-arm-kernel
From: Al Stone <al.stone@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().
Signed-off-by: Al Stone <al.stone@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 8b48c08..a419fcb 100644
--- a/drivers/acpi/processor_idle.c
+++ b/drivers/acpi/processor_idle.c
@@ -271,6 +271,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;
--
1.8.3.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [PATCH v3 5/5] ACPI: do not map/unmap memory regions for FADT entries in reduced HW mode
2013-12-04 21:22 [PATCH v3 0/5] Hardware Reduced Mode Cleanup for ACPI al.stone at linaro.org
` (4 preceding siblings ...)
2013-12-04 21:22 ` [PATCH v3 4/5] ACPI: in HW reduced mode, using FADT PM information is not allowed al.stone at linaro.org
@ 2013-12-04 21:22 ` al.stone at linaro.org
2013-12-10 12:40 ` [Linaro-acpi] " Grant Likely
5 siblings, 1 reply; 15+ messages in thread
From: al.stone at linaro.org @ 2013-12-04 21:22 UTC (permalink / raw)
To: linux-arm-kernel
From: Al Stone <al.stone@linaro.org>
Several of the FADT fields are normally kept in specific memory
regions. Since these fields are to be ignored in hardware reduced
ACPI mode, do not map those addresses when in that mode, and of
course do not release the mappings that have not been made.
The function acpi_os_initialize() could become a stub in the header
file but is left here in case it can be of further use.
Signed-off-by: Al Stone <al.stone@linaro.org>
---
drivers/acpi/osl.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index 613e4a1..3a0bb92 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -1776,10 +1776,12 @@ __setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup);
acpi_status __init acpi_os_initialize(void)
{
- acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
- acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
- acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
- acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
+ if (!acpi_gbl_reduced_hardware) {
+ acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
+ acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
+ acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
+ acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
+ }
return AE_OK;
}
@@ -1804,10 +1806,12 @@ acpi_status acpi_os_terminate(void)
acpi_irq_handler);
}
- acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe1_block);
- acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe0_block);
- acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
- acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
+ if (!acpi_gbl_reduced_hardware) {
+ acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe1_block);
+ acpi_os_unmap_generic_address(&acpi_gbl_FADT.xgpe0_block);
+ acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
+ acpi_os_unmap_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
+ }
destroy_workqueue(kacpid_wq);
destroy_workqueue(kacpi_notify_wq);
--
1.8.3.1
^ permalink raw reply related [flat|nested] 15+ messages in thread
* [Linaro-acpi] [PATCH v3 5/5] ACPI: do not map/unmap memory regions for FADT entries in reduced HW mode
2013-12-04 21:22 ` [PATCH v3 5/5] ACPI: do not map/unmap memory regions for FADT entries in reduced HW mode al.stone at linaro.org
@ 2013-12-10 12:40 ` Grant Likely
0 siblings, 0 replies; 15+ messages in thread
From: Grant Likely @ 2013-12-10 12:40 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, 4 Dec 2013 14:22:07 -0700, al.stone at linaro.org wrote:
> From: Al Stone <al.stone@linaro.org>
>
> Several of the FADT fields are normally kept in specific memory
> regions. Since these fields are to be ignored in hardware reduced
> ACPI mode, do not map those addresses when in that mode, and of
> course do not release the mappings that have not been made.
>
> The function acpi_os_initialize() could become a stub in the header
> file but is left here in case it can be of further use.
>
> Signed-off-by: Al Stone <al.stone@linaro.org>
> ---
> drivers/acpi/osl.c | 20 ++++++++++++--------
> 1 file changed, 12 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index 613e4a1..3a0bb92 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -1776,10 +1776,12 @@ __setup("acpi_no_auto_ssdt", acpi_no_auto_ssdt_setup);
>
> acpi_status __init acpi_os_initialize(void)
> {
> - acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
> - acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
> - acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
> - acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
> + if (!acpi_gbl_reduced_hardware) {
> + acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1a_event_block);
> + acpi_os_map_generic_address(&acpi_gbl_FADT.xpm1b_event_block);
> + acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe0_block);
> + acpi_os_map_generic_address(&acpi_gbl_FADT.xgpe1_block);
> + }
So, I'm confused. This patch is making the hardware reduced decision at
runtime (which is good), but the other patches are using #ifdef blocks
to take the code right out. Why the discrepancy?
g.
^ permalink raw reply [flat|nested] 15+ messages in thread