[PATCH v4 03/13] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
The use of _PDC is deprecated in ACPI 3.0 in favor of _OSC, as ARM platform is supported only in ACPI 5.0 or higher version, _PDC will not be used in ARM platform, so make Make _PDC only for platforms with Intel CPUs. Introduce ARCH_HAS_ACPI_PDC and move _PDC related code in ACPI processor driver into a single file processor_pdc.c, make x86 and ia64 select ARCH_HAS_ACPI_PDC when ACPI is enabled. This patch also use pr_* to replace printk to fix the checkpatch warning and factor acpi_processor_alloc_pdc() a little bit to avoid duplicate pr_err() code. Suggested-by: Robert Richter Signed-off-by: Hanjun Guo --- arch/ia64/Kconfig |1 + arch/x86/Kconfig |1 + drivers/acpi/Kconfig | 10 ++ drivers/acpi/Makefile |1 + drivers/acpi/internal.h |5 + drivers/acpi/processor_core.c | 198 --- drivers/acpi/processor_pdc.c | 206 + 7 files changed, 224 insertions(+), 198 deletions(-) create mode 100644 drivers/acpi/processor_pdc.c diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index f82b352..cde2626 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -10,6 +10,7 @@ config IA64 select ARCH_MIGHT_HAVE_PC_SERIO select PCI if (!IA64_HP_SIM) select ACPI if (!IA64_HP_SIM) + select ARCH_HAS_ACPI_PDC if ACPI select PM if (!IA64_HP_SIM) select HAVE_UNSTABLE_SCHED_CLOCK select HAVE_IDE diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 4865d44..d60cec7 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -21,6 +21,7 @@ config X86_64 ### Arch settings config X86 def_bool y + select ARCH_HAS_ACPI_PDC if ACPI select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 70eaf7a..0e6f72d 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -367,6 +367,16 @@ config ACPI_REDUCED_HARDWARE_ONLY If you are unsure what to do, do not enable this option. +config ARCH_HAS_ACPI_PDC + bool + help + The _PDC object provides OSPM a mechanism to convey to the platform + the capabilities supported by OSPM for processor power management. + This allows the platform to modify the ACPI namespace objects returning + configuration information for processor power management based on the + level of support provided by OSPM.The use of _PDC is deprecated in + ACPI 3.0 in favor of _OSC. + source "drivers/acpi/apei/Kconfig" config ACPI_EXTLOG diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile index ea55e01..b638e95 100644 --- a/drivers/acpi/Makefile +++ b/drivers/acpi/Makefile @@ -36,6 +36,7 @@ acpi-y+= scan.o acpi-y += resource.o acpi-y += acpi_processor.o acpi-y += processor_core.o +acpi-$(CONFIG_ARCH_HAS_ACPI_PDC) += processor_pdc.o acpi-y += ec.o acpi-$(CONFIG_ACPI_DOCK) += dock.o acpi-y += pci_root.o pci_link.o pci_irq.o diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index 7de5b60..d7376ee 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h @@ -108,7 +108,12 @@ int acpi_power_transition(struct acpi_device *device, int state); int acpi_device_update_power(struct acpi_device *device, int *state_p); int acpi_wakeup_device_init(void); + +#ifdef CONFIG_ARCH_HAS_ACPI_PDC void acpi_early_processor_set_pdc(void); +#else +static inline void acpi_early_processor_set_pdc(void) {} +#endif /* -- Embedded Controller diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 71e2065..00f48d1 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c @@ -4,17 +4,11 @@ * * Alex Chiang * - Unified x86/ia64 implementations - * Venkatesh Pallipadi - * - Added _PDC for platforms with Intel CPUs */ #include -#include -#include #include #include -#include "internal.h" - #define _COMPONENT ACPI_PROCESSOR_COMPONENT ACPI_MODULE_NAME("processor_core"); @@ -208,195 +202,3 @@ int acpi_get_cpuid(acpi_handle handle, int type, u32 acpi_id) return acpi_map_cpuid(apic_id, acpi_id); } EXPORT_SYMBOL_GPL(acpi_get_cpuid); - -static bool __init processor_physically_present(acpi_handle handle) -{ - int cpuid, type; - u32 acpi_id; - acpi_status status; - acpi_object_type acpi_type; - unsigned long long tmp; - union acpi_object object = { 0 }; - struct acpi_buffer buffer = { sizeof(union acpi_object), }; - - status = acpi_get_type(handle, _type); - if
[PATCH v4 03/13] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
The use of _PDC is deprecated in ACPI 3.0 in favor of _OSC, as ARM platform is supported only in ACPI 5.0 or higher version, _PDC will not be used in ARM platform, so make Make _PDC only for platforms with Intel CPUs. Introduce ARCH_HAS_ACPI_PDC and move _PDC related code in ACPI processor driver into a single file processor_pdc.c, make x86 and ia64 select ARCH_HAS_ACPI_PDC when ACPI is enabled. This patch also use pr_* to replace printk to fix the checkpatch warning and factor acpi_processor_alloc_pdc() a little bit to avoid duplicate pr_err() code. Suggested-by: Robert Richter r...@kernel.org Signed-off-by: Hanjun Guo hanjun@linaro.org --- arch/ia64/Kconfig |1 + arch/x86/Kconfig |1 + drivers/acpi/Kconfig | 10 ++ drivers/acpi/Makefile |1 + drivers/acpi/internal.h |5 + drivers/acpi/processor_core.c | 198 --- drivers/acpi/processor_pdc.c | 206 + 7 files changed, 224 insertions(+), 198 deletions(-) create mode 100644 drivers/acpi/processor_pdc.c diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index f82b352..cde2626 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig @@ -10,6 +10,7 @@ config IA64 select ARCH_MIGHT_HAVE_PC_SERIO select PCI if (!IA64_HP_SIM) select ACPI if (!IA64_HP_SIM) + select ARCH_HAS_ACPI_PDC if ACPI select PM if (!IA64_HP_SIM) select HAVE_UNSTABLE_SCHED_CLOCK select HAVE_IDE diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 4865d44..d60cec7 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig @@ -21,6 +21,7 @@ config X86_64 ### Arch settings config X86 def_bool y + select ARCH_HAS_ACPI_PDC if ACPI select ARCH_HAS_DEBUG_STRICT_USER_COPY_CHECKS select ARCH_MIGHT_HAVE_PC_PARPORT select ARCH_MIGHT_HAVE_PC_SERIO diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig index 70eaf7a..0e6f72d 100644 --- a/drivers/acpi/Kconfig +++ b/drivers/acpi/Kconfig @@ -367,6 +367,16 @@ config ACPI_REDUCED_HARDWARE_ONLY If you are unsure what to do, do not enable this option. +config ARCH_HAS_ACPI_PDC + bool + help + The _PDC object provides OSPM a mechanism to convey to the platform + the capabilities supported by OSPM for processor power management. + This allows the platform to modify the ACPI namespace objects returning + configuration information for processor power management based on the + level of support provided by OSPM.The use of _PDC is deprecated in + ACPI 3.0 in favor of _OSC. + source drivers/acpi/apei/Kconfig config ACPI_EXTLOG diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile index ea55e01..b638e95 100644 --- a/drivers/acpi/Makefile +++ b/drivers/acpi/Makefile @@ -36,6 +36,7 @@ acpi-y+= scan.o acpi-y += resource.o acpi-y += acpi_processor.o acpi-y += processor_core.o +acpi-$(CONFIG_ARCH_HAS_ACPI_PDC) += processor_pdc.o acpi-y += ec.o acpi-$(CONFIG_ACPI_DOCK) += dock.o acpi-y += pci_root.o pci_link.o pci_irq.o diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h index 7de5b60..d7376ee 100644 --- a/drivers/acpi/internal.h +++ b/drivers/acpi/internal.h @@ -108,7 +108,12 @@ int acpi_power_transition(struct acpi_device *device, int state); int acpi_device_update_power(struct acpi_device *device, int *state_p); int acpi_wakeup_device_init(void); + +#ifdef CONFIG_ARCH_HAS_ACPI_PDC void acpi_early_processor_set_pdc(void); +#else +static inline void acpi_early_processor_set_pdc(void) {} +#endif /* -- Embedded Controller diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 71e2065..00f48d1 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c @@ -4,17 +4,11 @@ * * Alex Chiang achi...@hp.com * - Unified x86/ia64 implementations - * Venkatesh Pallipadi venkatesh.pallip...@intel.com - * - Added _PDC for platforms with Intel CPUs */ #include linux/export.h -#include linux/dmi.h -#include linux/slab.h #include linux/acpi.h #include acpi/processor.h -#include internal.h - #define _COMPONENT ACPI_PROCESSOR_COMPONENT ACPI_MODULE_NAME(processor_core); @@ -208,195 +202,3 @@ int acpi_get_cpuid(acpi_handle handle, int type, u32 acpi_id) return acpi_map_cpuid(apic_id, acpi_id); } EXPORT_SYMBOL_GPL(acpi_get_cpuid); - -static bool __init processor_physically_present(acpi_handle handle) -{ - int cpuid, type; - u32 acpi_id; - acpi_status status; - acpi_object_type acpi_type; - unsigned long long tmp; - union acpi_object object = { 0 }; -