All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] Clean up ACPI core to prepare for running ACPI on ARM64
@ 2014-07-02  8:47 ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi,
	Hanjun Guo

This patch set have no function change for x86 and ia64 and
just do some clean up to prepare for running ACPI on ARM64.

This patch set is splited out from the patch set [1]
"[PATCH v4 00/13] Enable ACPI on ARM64 in Kconfig" and hope it
can be merged first before ARM64 ACPI core patches.

[1]: https://lkml.org/lkml/2014/6/26/627

Graeme Gregory (2):
  ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
  ACPI: Don't use acpi_lapic in ACPI core code

Hanjun Guo (2):
  ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
  ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig

 arch/ia64/Kconfig             |    2 +
 arch/ia64/include/asm/acpi.h  |    5 +
 arch/x86/Kconfig              |    2 +
 arch/x86/include/asm/acpi.h   |    5 +
 drivers/acpi/Kconfig          |   14 +++
 drivers/acpi/Makefile         |    1 +
 drivers/acpi/acpi_processor.c |    2 +-
 drivers/acpi/internal.h       |    5 +
 drivers/acpi/osl.c            |    4 +-
 drivers/acpi/processor_core.c |  198 ---------------------------------------
 drivers/acpi/processor_pdc.c  |  206 +++++++++++++++++++++++++++++++++++++++++
 11 files changed, 244 insertions(+), 200 deletions(-)
 create mode 100644 drivers/acpi/processor_pdc.c

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 0/4] Clean up ACPI core to prepare for running ACPI on ARM64
@ 2014-07-02  8:47 ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: linux-arm-kernel

This patch set have no function change for x86 and ia64 and
just do some clean up to prepare for running ACPI on ARM64.

This patch set is splited out from the patch set [1]
"[PATCH v4 00/13] Enable ACPI on ARM64 in Kconfig" and hope it
can be merged first before ARM64 ACPI core patches.

[1]: https://lkml.org/lkml/2014/6/26/627

Graeme Gregory (2):
  ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
  ACPI: Don't use acpi_lapic in ACPI core code

Hanjun Guo (2):
  ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
  ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig

 arch/ia64/Kconfig             |    2 +
 arch/ia64/include/asm/acpi.h  |    5 +
 arch/x86/Kconfig              |    2 +
 arch/x86/include/asm/acpi.h   |    5 +
 drivers/acpi/Kconfig          |   14 +++
 drivers/acpi/Makefile         |    1 +
 drivers/acpi/acpi_processor.c |    2 +-
 drivers/acpi/internal.h       |    5 +
 drivers/acpi/osl.c            |    4 +-
 drivers/acpi/processor_core.c |  198 ---------------------------------------
 drivers/acpi/processor_pdc.c  |  206 +++++++++++++++++++++++++++++++++++++++++
 11 files changed, 244 insertions(+), 200 deletions(-)
 create mode 100644 drivers/acpi/processor_pdc.c

-- 
1.7.9.5

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
  2014-07-02  8:47 ` Hanjun Guo
@ 2014-07-02  8:47   ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi,
	Hanjun Guo

From: Graeme Gregory <graeme.gregory@linaro.org>

With the addition of ARM64 that does not have a traditional BIOS to
scan, add a config option which is selected on x86 and ia64 to do
the traditional BIOS scanning for tables.

Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 arch/ia64/Kconfig    |    1 +
 arch/x86/Kconfig     |    1 +
 drivers/acpi/Kconfig |    3 +++
 drivers/acpi/osl.c   |    4 +++-
 4 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 2f3abcf..f82b352 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -47,6 +47,7 @@ config IA64
 	select MODULES_USE_ELF_RELA
 	select ARCH_USE_CMPXCHG_LOCKREF
 	select HAVE_ARCH_AUDITSYSCALL
+	select ACPI_SCAN_BIOS_NOT_EFI
 	default y
 	help
 	  The Itanium Processor Family is Intel's 64-bit successor to
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index a8f749e..4865d44 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -131,6 +131,7 @@ config X86
 	select HAVE_CC_STACKPROTECTOR
 	select GENERIC_CPU_AUTOPROBE
 	select HAVE_ARCH_AUDITSYSCALL
+	select ACPI_SCAN_BIOS_NOT_EFI
 
 config INSTRUCTION_DECODER
 	def_bool y
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index a34a228..70eaf7a 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -2,6 +2,9 @@
 # ACPI Configuration
 #
 
+config ACPI_SCAN_BIOS_NOT_EFI
+	bool
+
 menuconfig ACPI
 	bool "ACPI (Advanced Configuration and Power Interface) Support"
 	depends on !IA64_HP_SIM
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index bad25b0..5ba0b74 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -259,12 +259,14 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
 			       "System description tables not found\n");
 			return 0;
 		}
-	} else {
+	} else if (IS_ENABLED(CONFIG_ACPI_SCAN_BIOS_NOT_EFI)) {
 		acpi_physical_address pa = 0;
 
 		acpi_find_root_pointer(&pa);
 		return pa;
 	}
+
+	return 0;
 }
 
 /* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
@ 2014-07-02  8:47   ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: linux-arm-kernel

From: Graeme Gregory <graeme.gregory@linaro.org>

With the addition of ARM64 that does not have a traditional BIOS to
scan, add a config option which is selected on x86 and ia64 to do
the traditional BIOS scanning for tables.

Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 arch/ia64/Kconfig    |    1 +
 arch/x86/Kconfig     |    1 +
 drivers/acpi/Kconfig |    3 +++
 drivers/acpi/osl.c   |    4 +++-
 4 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
index 2f3abcf..f82b352 100644
--- a/arch/ia64/Kconfig
+++ b/arch/ia64/Kconfig
@@ -47,6 +47,7 @@ config IA64
 	select MODULES_USE_ELF_RELA
 	select ARCH_USE_CMPXCHG_LOCKREF
 	select HAVE_ARCH_AUDITSYSCALL
+	select ACPI_SCAN_BIOS_NOT_EFI
 	default y
 	help
 	  The Itanium Processor Family is Intel's 64-bit successor to
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index a8f749e..4865d44 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -131,6 +131,7 @@ config X86
 	select HAVE_CC_STACKPROTECTOR
 	select GENERIC_CPU_AUTOPROBE
 	select HAVE_ARCH_AUDITSYSCALL
+	select ACPI_SCAN_BIOS_NOT_EFI
 
 config INSTRUCTION_DECODER
 	def_bool y
diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index a34a228..70eaf7a 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -2,6 +2,9 @@
 # ACPI Configuration
 #
 
+config ACPI_SCAN_BIOS_NOT_EFI
+	bool
+
 menuconfig ACPI
 	bool "ACPI (Advanced Configuration and Power Interface) Support"
 	depends on !IA64_HP_SIM
diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
index bad25b0..5ba0b74 100644
--- a/drivers/acpi/osl.c
+++ b/drivers/acpi/osl.c
@@ -259,12 +259,14 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
 			       "System description tables not found\n");
 			return 0;
 		}
-	} else {
+	} else if (IS_ENABLED(CONFIG_ACPI_SCAN_BIOS_NOT_EFI)) {
 		acpi_physical_address pa = 0;
 
 		acpi_find_root_pointer(&pa);
 		return pa;
 	}
+
+	return 0;
 }
 
 /* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
  2014-07-02  8:47 ` Hanjun Guo
@ 2014-07-02  8:47   ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi,
	Hanjun Guo

From: Graeme Gregory <graeme.gregory@linaro.org>

Now ARM64 support is being added to ACPI so architecture specific
values can not be used in core ACPI code.

Following on the patch "ACPI / processor: Check if LAPIC is present
during initialization" which uses acpi_lapic in acpi_processor.c,
on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
is not a suitable value for ARM64.

What is actually important at this point is the SMPness of the system,
so introduce acpi_arch_is_smp() to be arch specific and generic.

Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 arch/ia64/include/asm/acpi.h  |    5 +++++
 arch/x86/include/asm/acpi.h   |    5 +++++
 drivers/acpi/acpi_processor.c |    2 +-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index 75dc59a..2fc0757 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -40,6 +40,11 @@ extern int acpi_lapic;
 #define acpi_noirq 0	/* ACPI always enabled on IA64 */
 #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
 #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
+
+static inline bool acpi_arch_is_smp(void)
+{
+	return acpi_lapic;
+}
 #endif
 #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
 static inline void disable_acpi(void) { }
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index e06225e..939d377 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -121,6 +121,11 @@ static inline void arch_acpi_set_pdc_bits(u32 *buf)
 		buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
 }
 
+static inline bool acpi_arch_is_smp(void)
+{
+	return acpi_lapic;
+}
+
 #else /* !CONFIG_ACPI */
 
 #define acpi_lapic 0
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
index 1c08574..8622a0e 100644
--- a/drivers/acpi/acpi_processor.c
+++ b/drivers/acpi/acpi_processor.c
@@ -268,7 +268,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
 	pr->apic_id = apic_id;
 
 	cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);
-	if (!cpu0_initialized && !acpi_lapic) {
+	if (!cpu0_initialized && !acpi_arch_is_smp()) {
 		cpu0_initialized = 1;
 		/* Handle UP system running SMP kernel, with no LAPIC in MADT */
 		if ((cpu_index == -1) && (num_online_cpus() == 1))
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
@ 2014-07-02  8:47   ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: linux-arm-kernel

From: Graeme Gregory <graeme.gregory@linaro.org>

Now ARM64 support is being added to ACPI so architecture specific
values can not be used in core ACPI code.

Following on the patch "ACPI / processor: Check if LAPIC is present
during initialization" which uses acpi_lapic in acpi_processor.c,
on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
is not a suitable value for ARM64.

What is actually important at this point is the SMPness of the system,
so introduce acpi_arch_is_smp() to be arch specific and generic.

Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 arch/ia64/include/asm/acpi.h  |    5 +++++
 arch/x86/include/asm/acpi.h   |    5 +++++
 drivers/acpi/acpi_processor.c |    2 +-
 3 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
index 75dc59a..2fc0757 100644
--- a/arch/ia64/include/asm/acpi.h
+++ b/arch/ia64/include/asm/acpi.h
@@ -40,6 +40,11 @@ extern int acpi_lapic;
 #define acpi_noirq 0	/* ACPI always enabled on IA64 */
 #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
 #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
+
+static inline bool acpi_arch_is_smp(void)
+{
+	return acpi_lapic;
+}
 #endif
 #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
 static inline void disable_acpi(void) { }
diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
index e06225e..939d377 100644
--- a/arch/x86/include/asm/acpi.h
+++ b/arch/x86/include/asm/acpi.h
@@ -121,6 +121,11 @@ static inline void arch_acpi_set_pdc_bits(u32 *buf)
 		buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
 }
 
+static inline bool acpi_arch_is_smp(void)
+{
+	return acpi_lapic;
+}
+
 #else /* !CONFIG_ACPI */
 
 #define acpi_lapic 0
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
index 1c08574..8622a0e 100644
--- a/drivers/acpi/acpi_processor.c
+++ b/drivers/acpi/acpi_processor.c
@@ -268,7 +268,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
 	pr->apic_id = apic_id;
 
 	cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);
-	if (!cpu0_initialized && !acpi_lapic) {
+	if (!cpu0_initialized && !acpi_arch_is_smp()) {
 		cpu0_initialized = 1;
 		/* Handle UP system running SMP kernel, with no LAPIC in MADT */
 		if ((cpu_index == -1) && (num_online_cpus() == 1))
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
  2014-07-02  8:47 ` Hanjun Guo
@ 2014-07-02  8:47   ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi,
	Hanjun Guo

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 <rric@kernel.org>
Signed-off-by: Hanjun Guo <hanjun.guo@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 <achiang@hp.com>
  *	- Unified x86/ia64 implementations
- *	Venkatesh Pallipadi <venkatesh.pallipadi@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 };
-	struct acpi_buffer buffer = { sizeof(union acpi_object), &object };
-
-	status = acpi_get_type(handle, &acpi_type);
-	if (ACPI_FAILURE(status))
-		return false;
-
-	switch (acpi_type) {
-	case ACPI_TYPE_PROCESSOR:
-		status = acpi_evaluate_object(handle, NULL, NULL, &buffer);
-		if (ACPI_FAILURE(status))
-			return false;
-		acpi_id = object.processor.proc_id;
-		break;
-	case ACPI_TYPE_DEVICE:
-		status = acpi_evaluate_integer(handle, "_UID", NULL, &tmp);
-		if (ACPI_FAILURE(status))
-			return false;
-		acpi_id = tmp;
-		break;
-	default:
-		return false;
-	}
-
-	type = (acpi_type == ACPI_TYPE_DEVICE) ? 1 : 0;
-	cpuid = acpi_get_cpuid(handle, type, acpi_id);
-
-	if (cpuid == -1)
-		return false;
-
-	return true;
-}
-
-static void acpi_set_pdc_bits(u32 *buf)
-{
-	buf[0] = ACPI_PDC_REVISION_ID;
-	buf[1] = 1;
-
-	/* Enable coordination with firmware's _TSD info */
-	buf[2] = ACPI_PDC_SMP_T_SWCOORD;
-
-	/* Twiddle arch-specific bits needed for _PDC */
-	arch_acpi_set_pdc_bits(buf);
-}
-
-static struct acpi_object_list *acpi_processor_alloc_pdc(void)
-{
-	struct acpi_object_list *obj_list;
-	union acpi_object *obj;
-	u32 *buf;
-
-	/* allocate and initialize pdc. It will be used later. */
-	obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
-	if (!obj_list) {
-		printk(KERN_ERR "Memory allocation error\n");
-		return NULL;
-	}
-
-	obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
-	if (!obj) {
-		printk(KERN_ERR "Memory allocation error\n");
-		kfree(obj_list);
-		return NULL;
-	}
-
-	buf = kmalloc(12, GFP_KERNEL);
-	if (!buf) {
-		printk(KERN_ERR "Memory allocation error\n");
-		kfree(obj);
-		kfree(obj_list);
-		return NULL;
-	}
-
-	acpi_set_pdc_bits(buf);
-
-	obj->type = ACPI_TYPE_BUFFER;
-	obj->buffer.length = 12;
-	obj->buffer.pointer = (u8 *) buf;
-	obj_list->count = 1;
-	obj_list->pointer = obj;
-
-	return obj_list;
-}
-
-/*
- * _PDC is required for a BIOS-OS handshake for most of the newer
- * ACPI processor features.
- */
-static acpi_status
-acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
-{
-	acpi_status status = AE_OK;
-
-	if (boot_option_idle_override == IDLE_NOMWAIT) {
-		/*
-		 * If mwait is disabled for CPU C-states, the C2C3_FFH access
-		 * mode will be disabled in the parameter of _PDC object.
-		 * Of course C1_FFH access mode will also be disabled.
-		 */
-		union acpi_object *obj;
-		u32 *buffer = NULL;
-
-		obj = pdc_in->pointer;
-		buffer = (u32 *)(obj->buffer.pointer);
-		buffer[2] &= ~(ACPI_PDC_C_C2C3_FFH | ACPI_PDC_C_C1_FFH);
-
-	}
-	status = acpi_evaluate_object(handle, "_PDC", pdc_in, NULL);
-
-	if (ACPI_FAILURE(status))
-		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-		    "Could not evaluate _PDC, using legacy perf. control.\n"));
-
-	return status;
-}
-
-void acpi_processor_set_pdc(acpi_handle handle)
-{
-	struct acpi_object_list *obj_list;
-
-	if (arch_has_acpi_pdc() == false)
-		return;
-
-	obj_list = acpi_processor_alloc_pdc();
-	if (!obj_list)
-		return;
-
-	acpi_processor_eval_pdc(handle, obj_list);
-
-	kfree(obj_list->pointer->buffer.pointer);
-	kfree(obj_list->pointer);
-	kfree(obj_list);
-}
-
-static acpi_status __init
-early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
-{
-	if (processor_physically_present(handle) == false)
-		return AE_OK;
-
-	acpi_processor_set_pdc(handle);
-	return AE_OK;
-}
-
-#if defined(CONFIG_X86) || defined(CONFIG_IA64)
-static int __init set_no_mwait(const struct dmi_system_id *id)
-{
-	pr_notice(PREFIX "%s detected - disabling mwait for CPU C-states\n",
-		  id->ident);
-	boot_option_idle_override = IDLE_NOMWAIT;
-	return 0;
-}
-
-static struct dmi_system_id processor_idle_dmi_table[] __initdata = {
-	{
-	set_no_mwait, "Extensa 5220", {
-	DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
-	DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-	DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
-	DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
-	{},
-};
-
-static void __init processor_dmi_check(void)
-{
-	/*
-	 * Check whether the system is DMI table. If yes, OSPM
-	 * should not use mwait for CPU-states.
-	 */
-	dmi_check_system(processor_idle_dmi_table);
-}
-#else
-static inline void processor_dmi_check(void) {}
-#endif
-
-void __init acpi_early_processor_set_pdc(void)
-{
-	processor_dmi_check();
-
-	acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
-			    ACPI_UINT32_MAX,
-			    early_init_pdc, NULL, NULL, NULL);
-	acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, early_init_pdc, NULL, NULL);
-}
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
new file mode 100644
index 0000000..e5dd808
--- /dev/null
+++ b/drivers/acpi/processor_pdc.c
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2005 Intel Corporation
+ * Copyright (C) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ *      Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+ *      - Added _PDC for platforms with Intel CPUs
+ */
+
+#define pr_fmt(fmt) "ACPI: " fmt
+
+#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_pdc");
+
+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), &object };
+
+	status = acpi_get_type(handle, &acpi_type);
+	if (ACPI_FAILURE(status))
+		return false;
+
+	switch (acpi_type) {
+	case ACPI_TYPE_PROCESSOR:
+		status = acpi_evaluate_object(handle, NULL, NULL, &buffer);
+		if (ACPI_FAILURE(status))
+			return false;
+		acpi_id = object.processor.proc_id;
+		break;
+	case ACPI_TYPE_DEVICE:
+		status = acpi_evaluate_integer(handle, "_UID", NULL, &tmp);
+		if (ACPI_FAILURE(status))
+			return false;
+		acpi_id = tmp;
+		break;
+	default:
+		return false;
+	}
+
+	type = (acpi_type == ACPI_TYPE_DEVICE) ? 1 : 0;
+	cpuid = acpi_get_cpuid(handle, type, acpi_id);
+
+	if (cpuid == -1)
+		return false;
+
+	return true;
+}
+
+static void acpi_set_pdc_bits(u32 *buf)
+{
+	buf[0] = ACPI_PDC_REVISION_ID;
+	buf[1] = 1;
+
+	/* Enable coordination with firmware's _TSD info */
+	buf[2] = ACPI_PDC_SMP_T_SWCOORD;
+
+	/* Twiddle arch-specific bits needed for _PDC */
+	arch_acpi_set_pdc_bits(buf);
+}
+
+static struct acpi_object_list *acpi_processor_alloc_pdc(void)
+{
+	struct acpi_object_list *obj_list;
+	union acpi_object *obj;
+	u32 *buf;
+
+	/* allocate and initialize pdc. It will be used later. */
+	obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
+	if (!obj_list)
+		goto out;
+
+	obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
+	if (!obj) {
+		kfree(obj_list);
+		goto out;
+	}
+
+	buf = kmalloc(12, GFP_KERNEL);
+	if (!buf) {
+		kfree(obj);
+		kfree(obj_list);
+		goto out;
+	}
+
+	acpi_set_pdc_bits(buf);
+
+	obj->type = ACPI_TYPE_BUFFER;
+	obj->buffer.length = 12;
+	obj->buffer.pointer = (u8 *) buf;
+	obj_list->count = 1;
+	obj_list->pointer = obj;
+
+	return obj_list;
+out:
+	pr_err("Memory allocation error\n");
+	return NULL;
+}
+
+/*
+ * _PDC is required for a BIOS-OS handshake for most of the newer
+ * ACPI processor features.
+ */
+static acpi_status
+acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
+{
+	acpi_status status = AE_OK;
+
+	if (boot_option_idle_override == IDLE_NOMWAIT) {
+		/*
+		 * If mwait is disabled for CPU C-states, the C2C3_FFH access
+		 * mode will be disabled in the parameter of _PDC object.
+		 * Of course C1_FFH access mode will also be disabled.
+		 */
+		union acpi_object *obj;
+		u32 *buffer = NULL;
+
+		obj = pdc_in->pointer;
+		buffer = (u32 *)(obj->buffer.pointer);
+		buffer[2] &= ~(ACPI_PDC_C_C2C3_FFH | ACPI_PDC_C_C1_FFH);
+
+	}
+	status = acpi_evaluate_object(handle, "_PDC", pdc_in, NULL);
+
+	if (ACPI_FAILURE(status))
+		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
+		    "Could not evaluate _PDC, using legacy perf. control.\n"));
+
+	return status;
+}
+
+void acpi_processor_set_pdc(acpi_handle handle)
+{
+	struct acpi_object_list *obj_list;
+
+	if (arch_has_acpi_pdc() == false)
+		return;
+
+	obj_list = acpi_processor_alloc_pdc();
+	if (!obj_list)
+		return;
+
+	acpi_processor_eval_pdc(handle, obj_list);
+
+	kfree(obj_list->pointer->buffer.pointer);
+	kfree(obj_list->pointer);
+	kfree(obj_list);
+}
+
+static acpi_status __init
+early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
+{
+	if (processor_physically_present(handle) == false)
+		return AE_OK;
+
+	acpi_processor_set_pdc(handle);
+	return AE_OK;
+}
+
+static int __init set_no_mwait(const struct dmi_system_id *id)
+{
+	pr_notice("%s detected - disabling mwait for CPU C-states\n",
+		  id->ident);
+	boot_option_idle_override = IDLE_NOMWAIT;
+	return 0;
+}
+
+static struct dmi_system_id processor_idle_dmi_table[] __initdata = {
+	{
+	set_no_mwait, "Extensa 5220", {
+	DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
+	DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+	DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
+	DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
+	{},
+};
+
+static void __init processor_dmi_check(void)
+{
+	/*
+	 * Check whether the system is DMI table. If yes, OSPM
+	 * should not use mwait for CPU-states.
+	 */
+	dmi_check_system(processor_idle_dmi_table);
+}
+
+void __init acpi_early_processor_set_pdc(void)
+{
+	processor_dmi_check();
+
+	acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
+			    ACPI_UINT32_MAX,
+			    early_init_pdc, NULL, NULL, NULL);
+	acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, early_init_pdc, NULL, NULL);
+}
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
@ 2014-07-02  8:47   ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: linux-arm-kernel

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 <rric@kernel.org>
Signed-off-by: Hanjun Guo <hanjun.guo@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 <achiang@hp.com>
  *	- Unified x86/ia64 implementations
- *	Venkatesh Pallipadi <venkatesh.pallipadi@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 };
-	struct acpi_buffer buffer = { sizeof(union acpi_object), &object };
-
-	status = acpi_get_type(handle, &acpi_type);
-	if (ACPI_FAILURE(status))
-		return false;
-
-	switch (acpi_type) {
-	case ACPI_TYPE_PROCESSOR:
-		status = acpi_evaluate_object(handle, NULL, NULL, &buffer);
-		if (ACPI_FAILURE(status))
-			return false;
-		acpi_id = object.processor.proc_id;
-		break;
-	case ACPI_TYPE_DEVICE:
-		status = acpi_evaluate_integer(handle, "_UID", NULL, &tmp);
-		if (ACPI_FAILURE(status))
-			return false;
-		acpi_id = tmp;
-		break;
-	default:
-		return false;
-	}
-
-	type = (acpi_type == ACPI_TYPE_DEVICE) ? 1 : 0;
-	cpuid = acpi_get_cpuid(handle, type, acpi_id);
-
-	if (cpuid == -1)
-		return false;
-
-	return true;
-}
-
-static void acpi_set_pdc_bits(u32 *buf)
-{
-	buf[0] = ACPI_PDC_REVISION_ID;
-	buf[1] = 1;
-
-	/* Enable coordination with firmware's _TSD info */
-	buf[2] = ACPI_PDC_SMP_T_SWCOORD;
-
-	/* Twiddle arch-specific bits needed for _PDC */
-	arch_acpi_set_pdc_bits(buf);
-}
-
-static struct acpi_object_list *acpi_processor_alloc_pdc(void)
-{
-	struct acpi_object_list *obj_list;
-	union acpi_object *obj;
-	u32 *buf;
-
-	/* allocate and initialize pdc. It will be used later. */
-	obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
-	if (!obj_list) {
-		printk(KERN_ERR "Memory allocation error\n");
-		return NULL;
-	}
-
-	obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
-	if (!obj) {
-		printk(KERN_ERR "Memory allocation error\n");
-		kfree(obj_list);
-		return NULL;
-	}
-
-	buf = kmalloc(12, GFP_KERNEL);
-	if (!buf) {
-		printk(KERN_ERR "Memory allocation error\n");
-		kfree(obj);
-		kfree(obj_list);
-		return NULL;
-	}
-
-	acpi_set_pdc_bits(buf);
-
-	obj->type = ACPI_TYPE_BUFFER;
-	obj->buffer.length = 12;
-	obj->buffer.pointer = (u8 *) buf;
-	obj_list->count = 1;
-	obj_list->pointer = obj;
-
-	return obj_list;
-}
-
-/*
- * _PDC is required for a BIOS-OS handshake for most of the newer
- * ACPI processor features.
- */
-static acpi_status
-acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
-{
-	acpi_status status = AE_OK;
-
-	if (boot_option_idle_override == IDLE_NOMWAIT) {
-		/*
-		 * If mwait is disabled for CPU C-states, the C2C3_FFH access
-		 * mode will be disabled in the parameter of _PDC object.
-		 * Of course C1_FFH access mode will also be disabled.
-		 */
-		union acpi_object *obj;
-		u32 *buffer = NULL;
-
-		obj = pdc_in->pointer;
-		buffer = (u32 *)(obj->buffer.pointer);
-		buffer[2] &= ~(ACPI_PDC_C_C2C3_FFH | ACPI_PDC_C_C1_FFH);
-
-	}
-	status = acpi_evaluate_object(handle, "_PDC", pdc_in, NULL);
-
-	if (ACPI_FAILURE(status))
-		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
-		    "Could not evaluate _PDC, using legacy perf. control.\n"));
-
-	return status;
-}
-
-void acpi_processor_set_pdc(acpi_handle handle)
-{
-	struct acpi_object_list *obj_list;
-
-	if (arch_has_acpi_pdc() == false)
-		return;
-
-	obj_list = acpi_processor_alloc_pdc();
-	if (!obj_list)
-		return;
-
-	acpi_processor_eval_pdc(handle, obj_list);
-
-	kfree(obj_list->pointer->buffer.pointer);
-	kfree(obj_list->pointer);
-	kfree(obj_list);
-}
-
-static acpi_status __init
-early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
-{
-	if (processor_physically_present(handle) == false)
-		return AE_OK;
-
-	acpi_processor_set_pdc(handle);
-	return AE_OK;
-}
-
-#if defined(CONFIG_X86) || defined(CONFIG_IA64)
-static int __init set_no_mwait(const struct dmi_system_id *id)
-{
-	pr_notice(PREFIX "%s detected - disabling mwait for CPU C-states\n",
-		  id->ident);
-	boot_option_idle_override = IDLE_NOMWAIT;
-	return 0;
-}
-
-static struct dmi_system_id processor_idle_dmi_table[] __initdata = {
-	{
-	set_no_mwait, "Extensa 5220", {
-	DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
-	DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
-	DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
-	DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
-	{},
-};
-
-static void __init processor_dmi_check(void)
-{
-	/*
-	 * Check whether the system is DMI table. If yes, OSPM
-	 * should not use mwait for CPU-states.
-	 */
-	dmi_check_system(processor_idle_dmi_table);
-}
-#else
-static inline void processor_dmi_check(void) {}
-#endif
-
-void __init acpi_early_processor_set_pdc(void)
-{
-	processor_dmi_check();
-
-	acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
-			    ACPI_UINT32_MAX,
-			    early_init_pdc, NULL, NULL, NULL);
-	acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, early_init_pdc, NULL, NULL);
-}
diff --git a/drivers/acpi/processor_pdc.c b/drivers/acpi/processor_pdc.c
new file mode 100644
index 0000000..e5dd808
--- /dev/null
+++ b/drivers/acpi/processor_pdc.c
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2005 Intel Corporation
+ * Copyright (C) 2009 Hewlett-Packard Development Company, L.P.
+ *
+ *      Venkatesh Pallipadi <venkatesh.pallipadi@intel.com>
+ *      - Added _PDC for platforms with Intel CPUs
+ */
+
+#define pr_fmt(fmt) "ACPI: " fmt
+
+#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_pdc");
+
+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), &object };
+
+	status = acpi_get_type(handle, &acpi_type);
+	if (ACPI_FAILURE(status))
+		return false;
+
+	switch (acpi_type) {
+	case ACPI_TYPE_PROCESSOR:
+		status = acpi_evaluate_object(handle, NULL, NULL, &buffer);
+		if (ACPI_FAILURE(status))
+			return false;
+		acpi_id = object.processor.proc_id;
+		break;
+	case ACPI_TYPE_DEVICE:
+		status = acpi_evaluate_integer(handle, "_UID", NULL, &tmp);
+		if (ACPI_FAILURE(status))
+			return false;
+		acpi_id = tmp;
+		break;
+	default:
+		return false;
+	}
+
+	type = (acpi_type == ACPI_TYPE_DEVICE) ? 1 : 0;
+	cpuid = acpi_get_cpuid(handle, type, acpi_id);
+
+	if (cpuid == -1)
+		return false;
+
+	return true;
+}
+
+static void acpi_set_pdc_bits(u32 *buf)
+{
+	buf[0] = ACPI_PDC_REVISION_ID;
+	buf[1] = 1;
+
+	/* Enable coordination with firmware's _TSD info */
+	buf[2] = ACPI_PDC_SMP_T_SWCOORD;
+
+	/* Twiddle arch-specific bits needed for _PDC */
+	arch_acpi_set_pdc_bits(buf);
+}
+
+static struct acpi_object_list *acpi_processor_alloc_pdc(void)
+{
+	struct acpi_object_list *obj_list;
+	union acpi_object *obj;
+	u32 *buf;
+
+	/* allocate and initialize pdc. It will be used later. */
+	obj_list = kmalloc(sizeof(struct acpi_object_list), GFP_KERNEL);
+	if (!obj_list)
+		goto out;
+
+	obj = kmalloc(sizeof(union acpi_object), GFP_KERNEL);
+	if (!obj) {
+		kfree(obj_list);
+		goto out;
+	}
+
+	buf = kmalloc(12, GFP_KERNEL);
+	if (!buf) {
+		kfree(obj);
+		kfree(obj_list);
+		goto out;
+	}
+
+	acpi_set_pdc_bits(buf);
+
+	obj->type = ACPI_TYPE_BUFFER;
+	obj->buffer.length = 12;
+	obj->buffer.pointer = (u8 *) buf;
+	obj_list->count = 1;
+	obj_list->pointer = obj;
+
+	return obj_list;
+out:
+	pr_err("Memory allocation error\n");
+	return NULL;
+}
+
+/*
+ * _PDC is required for a BIOS-OS handshake for most of the newer
+ * ACPI processor features.
+ */
+static acpi_status
+acpi_processor_eval_pdc(acpi_handle handle, struct acpi_object_list *pdc_in)
+{
+	acpi_status status = AE_OK;
+
+	if (boot_option_idle_override == IDLE_NOMWAIT) {
+		/*
+		 * If mwait is disabled for CPU C-states, the C2C3_FFH access
+		 * mode will be disabled in the parameter of _PDC object.
+		 * Of course C1_FFH access mode will also be disabled.
+		 */
+		union acpi_object *obj;
+		u32 *buffer = NULL;
+
+		obj = pdc_in->pointer;
+		buffer = (u32 *)(obj->buffer.pointer);
+		buffer[2] &= ~(ACPI_PDC_C_C2C3_FFH | ACPI_PDC_C_C1_FFH);
+
+	}
+	status = acpi_evaluate_object(handle, "_PDC", pdc_in, NULL);
+
+	if (ACPI_FAILURE(status))
+		ACPI_DEBUG_PRINT((ACPI_DB_INFO,
+		    "Could not evaluate _PDC, using legacy perf. control.\n"));
+
+	return status;
+}
+
+void acpi_processor_set_pdc(acpi_handle handle)
+{
+	struct acpi_object_list *obj_list;
+
+	if (arch_has_acpi_pdc() == false)
+		return;
+
+	obj_list = acpi_processor_alloc_pdc();
+	if (!obj_list)
+		return;
+
+	acpi_processor_eval_pdc(handle, obj_list);
+
+	kfree(obj_list->pointer->buffer.pointer);
+	kfree(obj_list->pointer);
+	kfree(obj_list);
+}
+
+static acpi_status __init
+early_init_pdc(acpi_handle handle, u32 lvl, void *context, void **rv)
+{
+	if (processor_physically_present(handle) == false)
+		return AE_OK;
+
+	acpi_processor_set_pdc(handle);
+	return AE_OK;
+}
+
+static int __init set_no_mwait(const struct dmi_system_id *id)
+{
+	pr_notice("%s detected - disabling mwait for CPU C-states\n",
+		  id->ident);
+	boot_option_idle_override = IDLE_NOMWAIT;
+	return 0;
+}
+
+static struct dmi_system_id processor_idle_dmi_table[] __initdata = {
+	{
+	set_no_mwait, "Extensa 5220", {
+	DMI_MATCH(DMI_BIOS_VENDOR, "Phoenix Technologies LTD"),
+	DMI_MATCH(DMI_SYS_VENDOR, "Acer"),
+	DMI_MATCH(DMI_PRODUCT_VERSION, "0100"),
+	DMI_MATCH(DMI_BOARD_NAME, "Columbia") }, NULL},
+	{},
+};
+
+static void __init processor_dmi_check(void)
+{
+	/*
+	 * Check whether the system is DMI table. If yes, OSPM
+	 * should not use mwait for CPU-states.
+	 */
+	dmi_check_system(processor_idle_dmi_table);
+}
+
+void __init acpi_early_processor_set_pdc(void)
+{
+	processor_dmi_check();
+
+	acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT,
+			    ACPI_UINT32_MAX,
+			    early_init_pdc, NULL, NULL, NULL);
+	acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, early_init_pdc, NULL, NULL);
+}
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
  2014-07-02  8:47 ` Hanjun Guo
@ 2014-07-02  8:47   ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi,
	Hanjun Guo

Since EC (Embedded controller) needs SCI for the interupt which
is not available on ARM64, make the EC debugfs depend on X86 || IA64
only in the Kconfig file.

Reviewed-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 drivers/acpi/Kconfig |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 0e6f72d..7de5e3f 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
 
 config ACPI_EC_DEBUGFS
 	tristate "EC read/write access through /sys/kernel/debug/ec"
+	depends on X86 || IA64
 	default n
 	help
 	  Say N to disable Embedded Controller /sys/kernel/debug interface
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
@ 2014-07-02  8:47   ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-02  8:47 UTC (permalink / raw)
  To: linux-arm-kernel

Since EC (Embedded controller) needs SCI for the interupt which
is not available on ARM64, make the EC debugfs depend on X86 || IA64
only in the Kconfig file.

Reviewed-by: Grant Likely <grant.likely@linaro.org>
Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
---
 drivers/acpi/Kconfig |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
index 0e6f72d..7de5e3f 100644
--- a/drivers/acpi/Kconfig
+++ b/drivers/acpi/Kconfig
@@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
 
 config ACPI_EC_DEBUGFS
 	tristate "EC read/write access through /sys/kernel/debug/ec"
+	depends on X86 || IA64
 	default n
 	help
 	  Say N to disable Embedded Controller /sys/kernel/debug interface
-- 
1.7.9.5

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
  2014-07-02  8:47   ` Hanjun Guo
@ 2014-07-07 21:06     ` Rafael J. Wysocki
  -1 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:06 UTC (permalink / raw)
  To: Hanjun Guo
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On Wednesday, July 02, 2014 04:47:23 PM Hanjun Guo wrote:
> From: Graeme Gregory <graeme.gregory@linaro.org>
> 
> With the addition of ARM64 that does not have a traditional BIOS to
> scan, add a config option which is selected on x86 and ia64 to do
> the traditional BIOS scanning for tables.
> 
> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  arch/ia64/Kconfig    |    1 +
>  arch/x86/Kconfig     |    1 +
>  drivers/acpi/Kconfig |    3 +++
>  drivers/acpi/osl.c   |    4 +++-
>  4 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 2f3abcf..f82b352 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -47,6 +47,7 @@ config IA64
>  	select MODULES_USE_ELF_RELA
>  	select ARCH_USE_CMPXCHG_LOCKREF
>  	select HAVE_ARCH_AUDITSYSCALL
> +	select ACPI_SCAN_BIOS_NOT_EFI

I would call this ACPI_LEGACY_TABLES_LOOKUP or something like that.

Also please do

+	select ACPI_LEGACY_TABLES_LOOKUP if ACPI

in analogy with patch [3/4] in this series.

>  	default y
>  	help
>  	  The Itanium Processor Family is Intel's 64-bit successor to
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index a8f749e..4865d44 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -131,6 +131,7 @@ config X86
>  	select HAVE_CC_STACKPROTECTOR
>  	select GENERIC_CPU_AUTOPROBE
>  	select HAVE_ARCH_AUDITSYSCALL
> +	select ACPI_SCAN_BIOS_NOT_EFI
>  
>  config INSTRUCTION_DECODER
>  	def_bool y
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index a34a228..70eaf7a 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -2,6 +2,9 @@
>  # ACPI Configuration
>  #
>  
> +config ACPI_SCAN_BIOS_NOT_EFI
> +	bool
> +
>  menuconfig ACPI
>  	bool "ACPI (Advanced Configuration and Power Interface) Support"
>  	depends on !IA64_HP_SIM
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index bad25b0..5ba0b74 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -259,12 +259,14 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
>  			       "System description tables not found\n");
>  			return 0;
>  		}
> -	} else {
> +	} else if (IS_ENABLED(CONFIG_ACPI_SCAN_BIOS_NOT_EFI)) {
>  		acpi_physical_address pa = 0;
>  
>  		acpi_find_root_pointer(&pa);
>  		return pa;
>  	}
> +
> +	return 0;
>  }
>  
>  /* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
@ 2014-07-07 21:06     ` Rafael J. Wysocki
  0 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:06 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday, July 02, 2014 04:47:23 PM Hanjun Guo wrote:
> From: Graeme Gregory <graeme.gregory@linaro.org>
> 
> With the addition of ARM64 that does not have a traditional BIOS to
> scan, add a config option which is selected on x86 and ia64 to do
> the traditional BIOS scanning for tables.
> 
> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  arch/ia64/Kconfig    |    1 +
>  arch/x86/Kconfig     |    1 +
>  drivers/acpi/Kconfig |    3 +++
>  drivers/acpi/osl.c   |    4 +++-
>  4 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
> index 2f3abcf..f82b352 100644
> --- a/arch/ia64/Kconfig
> +++ b/arch/ia64/Kconfig
> @@ -47,6 +47,7 @@ config IA64
>  	select MODULES_USE_ELF_RELA
>  	select ARCH_USE_CMPXCHG_LOCKREF
>  	select HAVE_ARCH_AUDITSYSCALL
> +	select ACPI_SCAN_BIOS_NOT_EFI

I would call this ACPI_LEGACY_TABLES_LOOKUP or something like that.

Also please do

+	select ACPI_LEGACY_TABLES_LOOKUP if ACPI

in analogy with patch [3/4] in this series.

>  	default y
>  	help
>  	  The Itanium Processor Family is Intel's 64-bit successor to
> diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
> index a8f749e..4865d44 100644
> --- a/arch/x86/Kconfig
> +++ b/arch/x86/Kconfig
> @@ -131,6 +131,7 @@ config X86
>  	select HAVE_CC_STACKPROTECTOR
>  	select GENERIC_CPU_AUTOPROBE
>  	select HAVE_ARCH_AUDITSYSCALL
> +	select ACPI_SCAN_BIOS_NOT_EFI
>  
>  config INSTRUCTION_DECODER
>  	def_bool y
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index a34a228..70eaf7a 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -2,6 +2,9 @@
>  # ACPI Configuration
>  #
>  
> +config ACPI_SCAN_BIOS_NOT_EFI
> +	bool
> +
>  menuconfig ACPI
>  	bool "ACPI (Advanced Configuration and Power Interface) Support"
>  	depends on !IA64_HP_SIM
> diff --git a/drivers/acpi/osl.c b/drivers/acpi/osl.c
> index bad25b0..5ba0b74 100644
> --- a/drivers/acpi/osl.c
> +++ b/drivers/acpi/osl.c
> @@ -259,12 +259,14 @@ acpi_physical_address __init acpi_os_get_root_pointer(void)
>  			       "System description tables not found\n");
>  			return 0;
>  		}
> -	} else {
> +	} else if (IS_ENABLED(CONFIG_ACPI_SCAN_BIOS_NOT_EFI)) {
>  		acpi_physical_address pa = 0;
>  
>  		acpi_find_root_pointer(&pa);
>  		return pa;
>  	}
> +
> +	return 0;
>  }
>  
>  /* Must be called with 'acpi_ioremap_lock' or RCU read lock held. */
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
  2014-07-02  8:47   ` Hanjun Guo
@ 2014-07-07 21:08     ` Rafael J. Wysocki
  -1 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:08 UTC (permalink / raw)
  To: Hanjun Guo
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On Wednesday, July 02, 2014 04:47:24 PM Hanjun Guo wrote:
> From: Graeme Gregory <graeme.gregory@linaro.org>
> 
> Now ARM64 support is being added to ACPI so architecture specific
> values can not be used in core ACPI code.
> 
> Following on the patch "ACPI / processor: Check if LAPIC is present
> during initialization" which uses acpi_lapic in acpi_processor.c,
> on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
> is not a suitable value for ARM64.
> 
> What is actually important at this point is the SMPness of the system,
> so introduce acpi_arch_is_smp() to be arch specific and generic.
> 
> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  arch/ia64/include/asm/acpi.h  |    5 +++++
>  arch/x86/include/asm/acpi.h   |    5 +++++
>  drivers/acpi/acpi_processor.c |    2 +-
>  3 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> index 75dc59a..2fc0757 100644
> --- a/arch/ia64/include/asm/acpi.h
> +++ b/arch/ia64/include/asm/acpi.h
> @@ -40,6 +40,11 @@ extern int acpi_lapic;
>  #define acpi_noirq 0	/* ACPI always enabled on IA64 */
>  #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
>  #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
> +
> +static inline bool acpi_arch_is_smp(void)

Why this name?  In particular, local APIC being present doesn't imply SMP.

> +{
> +	return acpi_lapic;

Also

	return !!acpi_lapic;

would be cleaner IMO.

> +}
>  #endif
>  #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
>  static inline void disable_acpi(void) { }
> diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> index e06225e..939d377 100644
> --- a/arch/x86/include/asm/acpi.h
> +++ b/arch/x86/include/asm/acpi.h
> @@ -121,6 +121,11 @@ static inline void arch_acpi_set_pdc_bits(u32 *buf)
>  		buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
>  }
>  
> +static inline bool acpi_arch_is_smp(void)
> +{
> +	return acpi_lapic;
> +}
> +
>  #else /* !CONFIG_ACPI */
>  
>  #define acpi_lapic 0
> diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
> index 1c08574..8622a0e 100644
> --- a/drivers/acpi/acpi_processor.c
> +++ b/drivers/acpi/acpi_processor.c
> @@ -268,7 +268,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
>  	pr->apic_id = apic_id;
>  
>  	cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);
> -	if (!cpu0_initialized && !acpi_lapic) {
> +	if (!cpu0_initialized && !acpi_arch_is_smp()) {
>  		cpu0_initialized = 1;
>  		/* Handle UP system running SMP kernel, with no LAPIC in MADT */
>  		if ((cpu_index == -1) && (num_online_cpus() == 1))
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
@ 2014-07-07 21:08     ` Rafael J. Wysocki
  0 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:08 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday, July 02, 2014 04:47:24 PM Hanjun Guo wrote:
> From: Graeme Gregory <graeme.gregory@linaro.org>
> 
> Now ARM64 support is being added to ACPI so architecture specific
> values can not be used in core ACPI code.
> 
> Following on the patch "ACPI / processor: Check if LAPIC is present
> during initialization" which uses acpi_lapic in acpi_processor.c,
> on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
> is not a suitable value for ARM64.
> 
> What is actually important at this point is the SMPness of the system,
> so introduce acpi_arch_is_smp() to be arch specific and generic.
> 
> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  arch/ia64/include/asm/acpi.h  |    5 +++++
>  arch/x86/include/asm/acpi.h   |    5 +++++
>  drivers/acpi/acpi_processor.c |    2 +-
>  3 files changed, 11 insertions(+), 1 deletion(-)
> 
> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
> index 75dc59a..2fc0757 100644
> --- a/arch/ia64/include/asm/acpi.h
> +++ b/arch/ia64/include/asm/acpi.h
> @@ -40,6 +40,11 @@ extern int acpi_lapic;
>  #define acpi_noirq 0	/* ACPI always enabled on IA64 */
>  #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
>  #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
> +
> +static inline bool acpi_arch_is_smp(void)

Why this name?  In particular, local APIC being present doesn't imply SMP.

> +{
> +	return acpi_lapic;

Also

	return !!acpi_lapic;

would be cleaner IMO.

> +}
>  #endif
>  #define acpi_processor_cstate_check(x) (x) /* no idle limits on IA64 :) */
>  static inline void disable_acpi(void) { }
> diff --git a/arch/x86/include/asm/acpi.h b/arch/x86/include/asm/acpi.h
> index e06225e..939d377 100644
> --- a/arch/x86/include/asm/acpi.h
> +++ b/arch/x86/include/asm/acpi.h
> @@ -121,6 +121,11 @@ static inline void arch_acpi_set_pdc_bits(u32 *buf)
>  		buf[2] &= ~(ACPI_PDC_C_C2C3_FFH);
>  }
>  
> +static inline bool acpi_arch_is_smp(void)
> +{
> +	return acpi_lapic;
> +}
> +
>  #else /* !CONFIG_ACPI */
>  
>  #define acpi_lapic 0
> diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c
> index 1c08574..8622a0e 100644
> --- a/drivers/acpi/acpi_processor.c
> +++ b/drivers/acpi/acpi_processor.c
> @@ -268,7 +268,7 @@ static int acpi_processor_get_info(struct acpi_device *device)
>  	pr->apic_id = apic_id;
>  
>  	cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id);
> -	if (!cpu0_initialized && !acpi_lapic) {
> +	if (!cpu0_initialized && !acpi_arch_is_smp()) {
>  		cpu0_initialized = 1;
>  		/* Handle UP system running SMP kernel, with no LAPIC in MADT */
>  		if ((cpu_index == -1) && (num_online_cpus() == 1))
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
  2014-07-02  8:47   ` Hanjun Guo
@ 2014-07-07 21:13     ` Rafael J. Wysocki
  -1 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:13 UTC (permalink / raw)
  To: Hanjun Guo
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On Wednesday, July 02, 2014 04:47:25 PM Hanjun Guo wrote:
> 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 <rric@kernel.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@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

The ARCH_HAS part doesn't seem to be particularly consistent with
the existing naming.  ARCH_MIGHT_HAVE_ACPI_PDC would be better IMO.

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

Is the help actually useful?  This doesn't seem to be user-selectable, does it?

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
@ 2014-07-07 21:13     ` Rafael J. Wysocki
  0 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:13 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday, July 02, 2014 04:47:25 PM Hanjun Guo wrote:
> 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 <rric@kernel.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@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

The ARCH_HAS part doesn't seem to be particularly consistent with
the existing naming.  ARCH_MIGHT_HAVE_ACPI_PDC would be better IMO.

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

Is the help actually useful?  This doesn't seem to be user-selectable, does it?

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
  2014-07-02  8:47   ` Hanjun Guo
@ 2014-07-07 21:16     ` Rafael J. Wysocki
  -1 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:16 UTC (permalink / raw)
  To: Hanjun Guo
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On Wednesday, July 02, 2014 04:47:26 PM Hanjun Guo wrote:
> Since EC (Embedded controller) needs SCI for the interupt which
> is not available on ARM64, make the EC debugfs depend on X86 || IA64
> only in the Kconfig file.
> 
> Reviewed-by: Grant Likely <grant.likely@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  drivers/acpi/Kconfig |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 0e6f72d..7de5e3f 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
>  
>  config ACPI_EC_DEBUGFS
>  	tristate "EC read/write access through /sys/kernel/debug/ec"
> +	depends on X86 || IA64

This is totally inconsistent with the other patches in the series where you
define per-arch symbols for similar things.  In addition to that, do we need
to build ec.c on ARM at all?

>  	default n
>  	help
>  	  Say N to disable Embedded Controller /sys/kernel/debug interface
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
@ 2014-07-07 21:16     ` Rafael J. Wysocki
  0 siblings, 0 replies; 30+ messages in thread
From: Rafael J. Wysocki @ 2014-07-07 21:16 UTC (permalink / raw)
  To: linux-arm-kernel

On Wednesday, July 02, 2014 04:47:26 PM Hanjun Guo wrote:
> Since EC (Embedded controller) needs SCI for the interupt which
> is not available on ARM64, make the EC debugfs depend on X86 || IA64
> only in the Kconfig file.
> 
> Reviewed-by: Grant Likely <grant.likely@linaro.org>
> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
> ---
>  drivers/acpi/Kconfig |    1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
> index 0e6f72d..7de5e3f 100644
> --- a/drivers/acpi/Kconfig
> +++ b/drivers/acpi/Kconfig
> @@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
>  
>  config ACPI_EC_DEBUGFS
>  	tristate "EC read/write access through /sys/kernel/debug/ec"
> +	depends on X86 || IA64

This is totally inconsistent with the other patches in the series where you
define per-arch symbols for similar things.  In addition to that, do we need
to build ec.c on ARM at all?

>  	default n
>  	help
>  	  Say N to disable Embedded Controller /sys/kernel/debug interface
> 

-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
  2014-07-07 21:16     ` Rafael J. Wysocki
  (?)
@ 2014-07-08  9:23       ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:23 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:16, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:26 PM Hanjun Guo wrote:
>> Since EC (Embedded controller) needs SCI for the interupt which
>> is not available on ARM64, make the EC debugfs depend on X86 || IA64
>> only in the Kconfig file.
>>
>> Reviewed-by: Grant Likely <grant.likely@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  drivers/acpi/Kconfig |    1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
>> index 0e6f72d..7de5e3f 100644
>> --- a/drivers/acpi/Kconfig
>> +++ b/drivers/acpi/Kconfig
>> @@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
>>  
>>  config ACPI_EC_DEBUGFS
>>  	tristate "EC read/write access through /sys/kernel/debug/ec"
>> +	depends on X86 || IA64
> This is totally inconsistent with the other patches in the series where you
> define per-arch symbols for similar things.  In addition to that, do we need
> to build ec.c on ARM at all?

Yes, EC will be needed on ARM. This patch is not needed after some more
consideration, I will drop it.

Thanks
Hanjun

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
@ 2014-07-08  9:23       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:23 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:16, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:26 PM Hanjun Guo wrote:
>> Since EC (Embedded controller) needs SCI for the interupt which
>> is not available on ARM64, make the EC debugfs depend on X86 || IA64
>> only in the Kconfig file.
>>
>> Reviewed-by: Grant Likely <grant.likely@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  drivers/acpi/Kconfig |    1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
>> index 0e6f72d..7de5e3f 100644
>> --- a/drivers/acpi/Kconfig
>> +++ b/drivers/acpi/Kconfig
>> @@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
>>  
>>  config ACPI_EC_DEBUGFS
>>  	tristate "EC read/write access through /sys/kernel/debug/ec"
>> +	depends on X86 || IA64
> This is totally inconsistent with the other patches in the series where you
> define per-arch symbols for similar things.  In addition to that, do we need
> to build ec.c on ARM at all?

Yes, EC will be needed on ARM. This patch is not needed after some more
consideration, I will drop it.

Thanks
Hanjun


^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig
@ 2014-07-08  9:23       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:23 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014?07?08? 05:16, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:26 PM Hanjun Guo wrote:
>> Since EC (Embedded controller) needs SCI for the interupt which
>> is not available on ARM64, make the EC debugfs depend on X86 || IA64
>> only in the Kconfig file.
>>
>> Reviewed-by: Grant Likely <grant.likely@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  drivers/acpi/Kconfig |    1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/drivers/acpi/Kconfig b/drivers/acpi/Kconfig
>> index 0e6f72d..7de5e3f 100644
>> --- a/drivers/acpi/Kconfig
>> +++ b/drivers/acpi/Kconfig
>> @@ -69,6 +69,7 @@ config ACPI_PROCFS_POWER
>>  
>>  config ACPI_EC_DEBUGFS
>>  	tristate "EC read/write access through /sys/kernel/debug/ec"
>> +	depends on X86 || IA64
> This is totally inconsistent with the other patches in the series where you
> define per-arch symbols for similar things.  In addition to that, do we need
> to build ec.c on ARM at all?

Yes, EC will be needed on ARM. This patch is not needed after some more
consideration, I will drop it.

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
  2014-07-07 21:06     ` Rafael J. Wysocki
  (?)
@ 2014-07-08  9:55       ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:55 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:06, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:23 PM Hanjun Guo wrote:
>> From: Graeme Gregory <graeme.gregory@linaro.org>
>>
>> With the addition of ARM64 that does not have a traditional BIOS to
>> scan, add a config option which is selected on x86 and ia64 to do
>> the traditional BIOS scanning for tables.
>>
>> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  arch/ia64/Kconfig    |    1 +
>>  arch/x86/Kconfig     |    1 +
>>  drivers/acpi/Kconfig |    3 +++
>>  drivers/acpi/osl.c   |    4 +++-
>>  4 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
>> index 2f3abcf..f82b352 100644
>> --- a/arch/ia64/Kconfig
>> +++ b/arch/ia64/Kconfig
>> @@ -47,6 +47,7 @@ config IA64
>>  	select MODULES_USE_ELF_RELA
>>  	select ARCH_USE_CMPXCHG_LOCKREF
>>  	select HAVE_ARCH_AUDITSYSCALL
>> +	select ACPI_SCAN_BIOS_NOT_EFI
> I would call this ACPI_LEGACY_TABLES_LOOKUP or something like that.
>
> Also please do
>
> +	select ACPI_LEGACY_TABLES_LOOKUP if ACPI
>
> in analogy with patch [3/4] in this series.

OK, I will update this patch accordingly, thanks for the great config
name :)

Thanks
Hanjun
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
@ 2014-07-08  9:55       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:55 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:06, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:23 PM Hanjun Guo wrote:
>> From: Graeme Gregory <graeme.gregory@linaro.org>
>>
>> With the addition of ARM64 that does not have a traditional BIOS to
>> scan, add a config option which is selected on x86 and ia64 to do
>> the traditional BIOS scanning for tables.
>>
>> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  arch/ia64/Kconfig    |    1 +
>>  arch/x86/Kconfig     |    1 +
>>  drivers/acpi/Kconfig |    3 +++
>>  drivers/acpi/osl.c   |    4 +++-
>>  4 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
>> index 2f3abcf..f82b352 100644
>> --- a/arch/ia64/Kconfig
>> +++ b/arch/ia64/Kconfig
>> @@ -47,6 +47,7 @@ config IA64
>>  	select MODULES_USE_ELF_RELA
>>  	select ARCH_USE_CMPXCHG_LOCKREF
>>  	select HAVE_ARCH_AUDITSYSCALL
>> +	select ACPI_SCAN_BIOS_NOT_EFI
> I would call this ACPI_LEGACY_TABLES_LOOKUP or something like that.
>
> Also please do
>
> +	select ACPI_LEGACY_TABLES_LOOKUP if ACPI
>
> in analogy with patch [3/4] in this series.

OK, I will update this patch accordingly, thanks for the great config
name :)

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan.
@ 2014-07-08  9:55       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:55 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014?07?08? 05:06, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:23 PM Hanjun Guo wrote:
>> From: Graeme Gregory <graeme.gregory@linaro.org>
>>
>> With the addition of ARM64 that does not have a traditional BIOS to
>> scan, add a config option which is selected on x86 and ia64 to do
>> the traditional BIOS scanning for tables.
>>
>> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  arch/ia64/Kconfig    |    1 +
>>  arch/x86/Kconfig     |    1 +
>>  drivers/acpi/Kconfig |    3 +++
>>  drivers/acpi/osl.c   |    4 +++-
>>  4 files changed, 8 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig
>> index 2f3abcf..f82b352 100644
>> --- a/arch/ia64/Kconfig
>> +++ b/arch/ia64/Kconfig
>> @@ -47,6 +47,7 @@ config IA64
>>  	select MODULES_USE_ELF_RELA
>>  	select ARCH_USE_CMPXCHG_LOCKREF
>>  	select HAVE_ARCH_AUDITSYSCALL
>> +	select ACPI_SCAN_BIOS_NOT_EFI
> I would call this ACPI_LEGACY_TABLES_LOOKUP or something like that.
>
> Also please do
>
> +	select ACPI_LEGACY_TABLES_LOOKUP if ACPI
>
> in analogy with patch [3/4] in this series.

OK, I will update this patch accordingly, thanks for the great config
name :)

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
  2014-07-07 21:13     ` Rafael J. Wysocki
  (?)
@ 2014-07-08  9:58       ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:58 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:13, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:25 PM Hanjun Guo wrote:
>> 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 <rric@kernel.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@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
> The ARCH_HAS part doesn't seem to be particularly consistent with
> the existing naming.  ARCH_MIGHT_HAVE_ACPI_PDC would be better IMO.

OK, I will update the patch.

>
>>  	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.
> Is the help actually useful?  This doesn't seem to be user-selectable, does it?

Yes, my bad, I will remove the help in next version.

Thanks
Hanjun
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
@ 2014-07-08  9:58       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:58 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:13, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:25 PM Hanjun Guo wrote:
>> 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 <rric@kernel.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@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
> The ARCH_HAS part doesn't seem to be particularly consistent with
> the existing naming.  ARCH_MIGHT_HAVE_ACPI_PDC would be better IMO.

OK, I will update the patch.

>
>>  	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.
> Is the help actually useful?  This doesn't seem to be user-selectable, does it?

Yes, my bad, I will remove the help in next version.

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC
@ 2014-07-08  9:58       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08  9:58 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014?07?08? 05:13, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:25 PM Hanjun Guo wrote:
>> 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 <rric@kernel.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@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
> The ARCH_HAS part doesn't seem to be particularly consistent with
> the existing naming.  ARCH_MIGHT_HAVE_ACPI_PDC would be better IMO.

OK, I will update the patch.

>
>>  	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.
> Is the help actually useful?  This doesn't seem to be user-selectable, does it?

Yes, my bad, I will remove the help in next version.

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
  2014-07-07 21:08     ` Rafael J. Wysocki
  (?)
@ 2014-07-08 10:07       ` Hanjun Guo
  -1 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08 10:07 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:08, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:24 PM Hanjun Guo wrote:
>> From: Graeme Gregory <graeme.gregory@linaro.org>
>>
>> Now ARM64 support is being added to ACPI so architecture specific
>> values can not be used in core ACPI code.
>>
>> Following on the patch "ACPI / processor: Check if LAPIC is present
>> during initialization" which uses acpi_lapic in acpi_processor.c,
>> on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
>> is not a suitable value for ARM64.
>>
>> What is actually important at this point is the SMPness of the system,
>> so introduce acpi_arch_is_smp() to be arch specific and generic.
>>
>> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  arch/ia64/include/asm/acpi.h  |    5 +++++
>>  arch/x86/include/asm/acpi.h   |    5 +++++
>>  drivers/acpi/acpi_processor.c |    2 +-
>>  3 files changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
>> index 75dc59a..2fc0757 100644
>> --- a/arch/ia64/include/asm/acpi.h
>> +++ b/arch/ia64/include/asm/acpi.h
>> @@ -40,6 +40,11 @@ extern int acpi_lapic;
>>  #define acpi_noirq 0	/* ACPI always enabled on IA64 */
>>  #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
>>  #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
>> +
>> +static inline bool acpi_arch_is_smp(void)
> Why this name?  In particular, local APIC being present doesn't imply SMP.

Hmm, agreed. How about acpi_has_cpu_in_madt()? As we know,
Local APIC/SAPIC in MADT stands for CPU in the system, how about
the function name above?

>
>> +{
>> +	return acpi_lapic;
> Also
>
> 	return !!acpi_lapic;
>
> would be cleaner IMO.
>

I will update it as you suggested.

Thanks
Hanjun
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
@ 2014-07-08 10:07       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08 10:07 UTC (permalink / raw)
  To: Rafael J. Wysocki
  Cc: Catalin Marinas, Graeme Gregory, Tony Luck, Thomas Gleixner,
	linux-acpi, linux-arm-kernel, linux-kernel, linaro-acpi

On 2014年07月08日 05:08, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:24 PM Hanjun Guo wrote:
>> From: Graeme Gregory <graeme.gregory@linaro.org>
>>
>> Now ARM64 support is being added to ACPI so architecture specific
>> values can not be used in core ACPI code.
>>
>> Following on the patch "ACPI / processor: Check if LAPIC is present
>> during initialization" which uses acpi_lapic in acpi_processor.c,
>> on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
>> is not a suitable value for ARM64.
>>
>> What is actually important at this point is the SMPness of the system,
>> so introduce acpi_arch_is_smp() to be arch specific and generic.
>>
>> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  arch/ia64/include/asm/acpi.h  |    5 +++++
>>  arch/x86/include/asm/acpi.h   |    5 +++++
>>  drivers/acpi/acpi_processor.c |    2 +-
>>  3 files changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
>> index 75dc59a..2fc0757 100644
>> --- a/arch/ia64/include/asm/acpi.h
>> +++ b/arch/ia64/include/asm/acpi.h
>> @@ -40,6 +40,11 @@ extern int acpi_lapic;
>>  #define acpi_noirq 0	/* ACPI always enabled on IA64 */
>>  #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
>>  #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
>> +
>> +static inline bool acpi_arch_is_smp(void)
> Why this name?  In particular, local APIC being present doesn't imply SMP.

Hmm, agreed. How about acpi_has_cpu_in_madt()? As we know,
Local APIC/SAPIC in MADT stands for CPU in the system, how about
the function name above?

>
>> +{
>> +	return acpi_lapic;
> Also
>
> 	return !!acpi_lapic;
>
> would be cleaner IMO.
>

I will update it as you suggested.

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code
@ 2014-07-08 10:07       ` Hanjun Guo
  0 siblings, 0 replies; 30+ messages in thread
From: Hanjun Guo @ 2014-07-08 10:07 UTC (permalink / raw)
  To: linux-arm-kernel

On 2014?07?08? 05:08, Rafael J. Wysocki wrote:
> On Wednesday, July 02, 2014 04:47:24 PM Hanjun Guo wrote:
>> From: Graeme Gregory <graeme.gregory@linaro.org>
>>
>> Now ARM64 support is being added to ACPI so architecture specific
>> values can not be used in core ACPI code.
>>
>> Following on the patch "ACPI / processor: Check if LAPIC is present
>> during initialization" which uses acpi_lapic in acpi_processor.c,
>> on ARM64 platform, GIC is used instead of local APIC, so acpi_lapic
>> is not a suitable value for ARM64.
>>
>> What is actually important at this point is the SMPness of the system,
>> so introduce acpi_arch_is_smp() to be arch specific and generic.
>>
>> Signed-off-by: Graeme Gregory <graeme.gregory@linaro.org>
>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>> ---
>>  arch/ia64/include/asm/acpi.h  |    5 +++++
>>  arch/x86/include/asm/acpi.h   |    5 +++++
>>  drivers/acpi/acpi_processor.c |    2 +-
>>  3 files changed, 11 insertions(+), 1 deletion(-)
>>
>> diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h
>> index 75dc59a..2fc0757 100644
>> --- a/arch/ia64/include/asm/acpi.h
>> +++ b/arch/ia64/include/asm/acpi.h
>> @@ -40,6 +40,11 @@ extern int acpi_lapic;
>>  #define acpi_noirq 0	/* ACPI always enabled on IA64 */
>>  #define acpi_pci_disabled 0 /* ACPI PCI always enabled on IA64 */
>>  #define acpi_strict 1	/* no ACPI spec workarounds on IA64 */
>> +
>> +static inline bool acpi_arch_is_smp(void)
> Why this name?  In particular, local APIC being present doesn't imply SMP.

Hmm, agreed. How about acpi_has_cpu_in_madt()? As we know,
Local APIC/SAPIC in MADT stands for CPU in the system, how about
the function name above?

>
>> +{
>> +	return acpi_lapic;
> Also
>
> 	return !!acpi_lapic;
>
> would be cleaner IMO.
>

I will update it as you suggested.

Thanks
Hanjun

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2014-07-08 10:08 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-07-02  8:47 [PATCH 0/4] Clean up ACPI core to prepare for running ACPI on ARM64 Hanjun Guo
2014-07-02  8:47 ` Hanjun Guo
2014-07-02  8:47 ` [PATCH 1/4] ACPI: ARM64 does not have a BIOS add config for BIOS table scan Hanjun Guo
2014-07-02  8:47   ` Hanjun Guo
2014-07-07 21:06   ` Rafael J. Wysocki
2014-07-07 21:06     ` Rafael J. Wysocki
2014-07-08  9:55     ` Hanjun Guo
2014-07-08  9:55       ` Hanjun Guo
2014-07-08  9:55       ` Hanjun Guo
2014-07-02  8:47 ` [PATCH 2/4] ACPI: Don't use acpi_lapic in ACPI core code Hanjun Guo
2014-07-02  8:47   ` Hanjun Guo
2014-07-07 21:08   ` Rafael J. Wysocki
2014-07-07 21:08     ` Rafael J. Wysocki
2014-07-08 10:07     ` Hanjun Guo
2014-07-08 10:07       ` Hanjun Guo
2014-07-08 10:07       ` Hanjun Guo
2014-07-02  8:47 ` [PATCH 3/4] ACPI / processor: Introduce ARCH_HAS_ACPI_PDC Hanjun Guo
2014-07-02  8:47   ` Hanjun Guo
2014-07-07 21:13   ` Rafael J. Wysocki
2014-07-07 21:13     ` Rafael J. Wysocki
2014-07-08  9:58     ` Hanjun Guo
2014-07-08  9:58       ` Hanjun Guo
2014-07-08  9:58       ` Hanjun Guo
2014-07-02  8:47 ` [PATCH 4/4] ACPI: Make EC debugfs depend on X86 || IA64 in Kconfig Hanjun Guo
2014-07-02  8:47   ` Hanjun Guo
2014-07-07 21:16   ` Rafael J. Wysocki
2014-07-07 21:16     ` Rafael J. Wysocki
2014-07-08  9:23     ` Hanjun Guo
2014-07-08  9:23       ` Hanjun Guo
2014-07-08  9:23       ` Hanjun Guo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.