LKML Archive on lore.kernel.org
help / color / mirror / Atom feed
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.

  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 \
    --subject='Re: [PATCH v2 3/5] ACPI: add arch-specific compilation for _OSI and the blacklist' \
    /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

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).