Message ID | 1424824585-6405-9-git-send-email-al.stone@linaro.org |
---|---|
State | New |
Headers | show |
On 03/02/2015 10:29 AM, Will Deacon wrote: > Hi Al, > > On Wed, Feb 25, 2015 at 12:36:24AM +0000, al.stone@linaro.org wrote: >> diff --git a/arch/arm64/kernel/acpi-blacklist.c b/arch/arm64/kernel/acpi-blacklist.c >> new file mode 100644 >> index 0000000..1be6a56 >> --- /dev/null >> +++ b/arch/arm64/kernel/acpi-blacklist.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/arch/arm64/kernel/acpi-osi.c b/arch/arm64/kernel/acpi-osi.c >> new file mode 100644 >> index 0000000..bb351f4 >> --- /dev/null >> +++ b/arch/arm64/kernel/acpi-osi.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; >> +} > > This kinda feels backwards to me. If _OSI is going away, then the default > should be "the architecture doesn't need to do anything", rather than have > new architectures defining a bunch of empty, useless stub code. > > Anyway we could make this the default in core code and have architectures > that *do* want _OSI override that behaviour, instead of the other way around? > > Cheers, > > Will > We could do that; I personally don't have a strong preference either way, so I'm inclined to make it whatever structure Rafael thinks is proper since it affects ACPI code most. That being said, the current patch structure made sense to me since it wasn't distorting existing code much -- and given the pure number of x86/ia64 machines vs ARM machines using ACPI, that seemed the more cautious approach. @Rafael: do you have an opinion/preference?
diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index 3f08727..e441d28 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -7,6 +7,7 @@ config ARM64 select ARCH_HAS_SG_CHAIN select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST select ARCH_USE_CMPXCHG_LOCKREF + select ARCH_SPECIFIC_ACPI_OSI if ACPI select ARCH_SUPPORTS_ATOMIC_RMW select ARCH_WANT_OPTIONAL_GPIOLIB select ARCH_WANT_COMPAT_IPC_PARSE_VERSION diff --git a/arch/arm64/kernel/Makefile b/arch/arm64/kernel/Makefile index 79bdd3b..b5e1268 100644 --- a/arch/arm64/kernel/Makefile +++ b/arch/arm64/kernel/Makefile @@ -35,7 +35,7 @@ arm64-obj-$(CONFIG_KGDB) += kgdb.o arm64-obj-$(CONFIG_EFI) += efi.o efi-stub.o efi-entry.o arm64-obj-$(CONFIG_PCI) += pci.o arm64-obj-$(CONFIG_ARMV8_DEPRECATED) += armv8_deprecated.o -arm64-obj-$(CONFIG_ACPI) += acpi.o +arm64-obj-$(CONFIG_ACPI) += acpi.o acpi-osi.o acpi-blacklist.o obj-y += $(arm64-obj-y) vdso/ obj-m += $(arm64-obj-m) diff --git a/arch/arm64/kernel/acpi-blacklist.c b/arch/arm64/kernel/acpi-blacklist.c new file mode 100644 index 0000000..1be6a56 --- /dev/null +++ b/arch/arm64/kernel/acpi-blacklist.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/arch/arm64/kernel/acpi-osi.c b/arch/arm64/kernel/acpi-osi.c new file mode 100644 index 0000000..bb351f4 --- /dev/null +++ b/arch/arm64/kernel/acpi-osi.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; +}