From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: al.stone@linaro.org
Cc: lenb@kernel.org, catalin.marinas@arm.com, will.deacon@arm.com,
robert.moore@intel.com, tony.luck@intel.com,
fenghua.yu@intel.com, linux-ia64@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org,
devel@acpica.org, linux-arm-kernel@lists.infradead.org,
linaro-acpi@lists.linaro.org, linaro-kernel@lists.linaro.org,
patches@linaro.org
Subject: Re: [PATCH v2 3/5] ACPI: add arch-specific compilation for _OSI and the blacklist
Date: Wed, 04 Feb 2015 15:00:15 +0100 [thread overview]
Message-ID: <2298661.ffvhncbLpr@vostro.rjw.lan> (raw)
In-Reply-To: <1423009304-5007-4-git-send-email-al.stone@linaro.org>
On Tuesday, February 03, 2015 05:21:42 PM al.stone@linaro.org wrote:
> From: Al Stone <al.stone@linaro.org>
>
> Now that all of the _OSI functionality has been separated out, we can
> provide arch-specific functionality for it. This also allows us to do
> the same for the acpi_blacklisted() function.
>
> Whether arch-specific functions are used or not now depends on the config
> options CONFIG_ACPI_ARCH_SPECIFIC_OSI and CONFIG_ARCH_SPECIFIC_BLACKLIST.
> By default, both are set false which causes the x86/ia64 versions to be
> used, just as is done today. Setting one or both of these options true
> will cause architecture-specific implementations to be built instead; this
> patch also provides arm64 implementations.
>
> For x86/ia64, there is no functional change.
>
> For arm64, any use of _OSI will issue a warning that it is deprecated.
> All use of _OSI will return false -- i.e., it will return no useful
> information to any firmware using it. The ability to temporarily turn
> on _OSI, or turn off _OSI, or affect it in other ways from the command
> line is no longer available for arm64, either. The blacklist for ACPI
> on arm64 is empty. This will, of course, require ACPI to be enabled
> for arm64.
>
> Signed-off-by: Al Stone <al.stone@linaro.org>
> ---
> drivers/acpi/Kconfig | 22 ++++++++++++++++++++++
> drivers/acpi/Makefile | 19 ++++++++++++++++++-
> drivers/acpi/blacklist-arm.c | 20 ++++++++++++++++++++
> drivers/acpi/blacklist.c | 5 +++++
> drivers/acpi/osi-arm.c | 25 +++++++++++++++++++++++++
> 5 files changed, 90 insertions(+), 1 deletion(-)
> create mode 100644 drivers/acpi/blacklist-arm.c
> create mode 100644 drivers/acpi/osi-arm.c
>
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 3e3bd35..4190940 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -369,6 +369,28 @@ config ACPI_REDUCED_HARDWARE_ONLY
>
> If you are unsure what to do, do not enable this option.
>
> +config ACPI_ARCH_SPECIFIC_OSI
I woulnd't make this and the other one user-selectable. Let architectures
select them from their top-level Kconfig files.
That's what we do with the other CONFIG_ARCH_ things.
So in the architecture-specific Kconfig you'll have
config ACPI_ARCH_SPECIFIC_OSI
def_bool n
depends on ACPI
Moreover, I'd call that ARCH_SPECIFIC_ACPI_OSI.
And analogously for the blacklist thing (and do we need two of them really?).
> + bool "Use an arch-specific _OSI implementation" if EXPERT
> + def_bool n
> + help
> + If this option is set, the ACPI driver will use an
> + implementation of _OSI that is specific to the target
> + architecture, instead of the default implementation
> + originally created for x86 and then used on ia64.
> +
> + If you are unsure what to do, do not enable this option.
> +
> +config ACPI_ARCH_SPECIFIC_BLACKLIST
> + bool "Use an arch-specific ACPI blacklist" if EXPERT
> + def_bool n
> + help
> + If this option is set, the ACPI driver will use a blacklist
> + that is specific to the target architecture, instead of the
> + default implementation originally created for x86 and then
> + used on ia64.
> +
> + If you are unsure what to do, do not enable this option.
> +
> source "drivers/acpi/apei/Kconfig"
>
> config ACPI_EXTLOG
> diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
> index df348b3..beefb17 100644
> --- a/drivers/acpi/Makefile
> +++ b/drivers/acpi/Makefile
> @@ -18,9 +18,26 @@ obj-y += acpi.o \
> acpica/
>
> # All the builtin files are in the "acpi." module_param namespace.
> -acpi-y += osl.o utils.o reboot.o osi.o
> +acpi-y += osl.o utils.o reboot.o
> acpi-y += nvs.o
>
> +# _OSI related files
> +ifeq ($(CONFIG_ACPI_ARCH_SPECIFIC_OSI), y)
> +ifeq ($(ARCH), arm64)
> +acpi-y += osi-arm.o
No, no. Please no osi-arm.c or blacklist-arm.c in drivers/acpi/.
The arch-specific stuff needs to go into arch/
> +endif
> +else # X86, IA64
> +acpi-y += osi.o
> +endif
> +
> +ifeq ($(CONFIG_ACPI_ARCH_SPECIFIC_BLACKLIST), y)
> +ifeq ($(ARCH), arm64)
> +acpi-y += blacklist-arm.o
> +endif
> +else # X86, IA64
> +acpi-y += blacklist.o
> +endif
> +
> # Power management related files
> acpi-y += wakeup.o
> ifeq ($(ARCH), arm64)
> diff --git a/drivers/acpi/blacklist-arm.c b/drivers/acpi/blacklist-arm.c
> new file mode 100644
> index 0000000..1be6a56
> --- /dev/null
> +++ b/drivers/acpi/blacklist-arm.c
> @@ -0,0 +1,20 @@
> +/*
> + * ARM64 Specific ACPI Blacklist Support
> + *
> + * Copyright (C) 2015, Linaro Ltd.
> + * Author: Al Stone <al.stone@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.
> + */
> +
> +#define pr_fmt(fmt) "ACPI: " fmt
> +
> +#include <linux/acpi.h>
> +
> +/* The arm64 ACPI blacklist is currently empty. */
> +int __init acpi_blacklisted(void)
> +{
> + return 0;
> +}
> diff --git a/drivers/acpi/blacklist.c b/drivers/acpi/blacklist.c
> index 3931e19..222c82d 100644
> --- a/drivers/acpi/blacklist.c
> +++ b/drivers/acpi/blacklist.c
> @@ -34,9 +34,14 @@
>
> #include "internal.h"
>
> +#ifdef CONFIG_ACPI_ARCH_SPECIFIC_OSI
> +void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d) { }
> +void __init acpi_osi_setup(char *str) { }
> +#else
> extern void __init acpi_dmi_osi_linux(int enable,
> const struct dmi_system_id *d);
> extern void __init acpi_osi_setup(char *str);
> +#endif
>
> enum acpi_blacklist_predicates {
> all_versions,
> diff --git a/drivers/acpi/osi-arm.c b/drivers/acpi/osi-arm.c
> new file mode 100644
> index 0000000..bb351f4
> --- /dev/null
> +++ b/drivers/acpi/osi-arm.c
> @@ -0,0 +1,25 @@
> +/*
> + * ARM64 Specific ACPI _OSI Support
> + *
> + * Copyright (C) 2015, Linaro Ltd.
> + * Author: Al Stone <al.stone@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.
> + */
> +
> +#define pr_fmt(fmt) "ACPI: " fmt
> +
> +#include <linux/acpi.h>
> +
> +/*
> + * Consensus is to deprecate _OSI for all new ACPI-supported architectures.
> + * So, for arm64, reduce _OSI to a warning message, and tell the firmware
> + * nothing of value.
> + */
> +u32 acpi_osi_handler(acpi_string interface, u32 supported)
> +{
> + pr_warn("_OSI was called, but is deprecated for this architecture.\n");
> + return false;
> +}
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
next prev parent reply other threads:[~2015-02-04 13:37 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-04 0:21 [PATCH v2 0/5] Start deprecating _OSI on new architectures al.stone
2015-02-04 0:21 ` [PATCH v2 1/5] ACPI: move acpi_os_handler() so it can be made arch-dependent later al.stone
2015-02-04 13:50 ` Rafael J. Wysocki
2015-02-04 22:44 ` Al Stone
2015-02-04 23:21 ` Rafael J. Wysocki
2015-02-04 23:49 ` Al Stone
2015-02-04 0:21 ` [PATCH v2 2/5] ACPI: move _OSI support functions to allow arch-dependent implementation al.stone
2015-02-04 0:21 ` [PATCH v2 3/5] ACPI: add arch-specific compilation for _OSI and the blacklist al.stone
2015-02-04 14:00 ` Rafael J. Wysocki [this message]
2015-02-04 14:03 ` Rafael J. Wysocki
2015-02-04 22:46 ` Al Stone
2015-02-04 0:21 ` [PATCH v2 4/5] ACPI: arm64: use the arch-specific ACPI _OSI method and ACPI blacklist al.stone
2015-02-04 0:21 ` [PATCH v2 5/5] ACPI: arm64: use "Linux" as ACPI_OS_NAME for _OS on arm64 al.stone
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2298661.ffvhncbLpr@vostro.rjw.lan \
--to=rjw@rjwysocki.net \
--cc=al.stone@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=devel@acpica.org \
--cc=fenghua.yu@intel.com \
--cc=lenb@kernel.org \
--cc=linaro-acpi@lists.linaro.org \
--cc=linaro-kernel@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-ia64@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=patches@linaro.org \
--cc=robert.moore@intel.com \
--cc=tony.luck@intel.com \
--cc=will.deacon@arm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).