Re: [PATCH v4 05/13] ARM64 / ACPI: Introduce arm-core.c and its related head file

2014-06-30 Thread Graeme Gregory


On 30/06/2014 17:24, Catalin Marinas wrote:

On Fri, Jun 27, 2014 at 04:49:28AM +0100, Hanjun Guo wrote:

  drivers/acpi/Makefile  |2 +
  drivers/acpi/plat/Makefile |1 +
  drivers/acpi/plat/arm-core.c   |  110 

Do you ever plan to add ACPI support for 32-bit ARM? If not, this part
could be placed under arch/arm64 (similar to x86).

Originally the plan was to support both platforms, but it seems people 
have stopped talking to Linaro about 32bit support now so unless anyone 
else has some actual info I guess it would be safe to move it into arm64.


Graeme

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v4 05/13] ARM64 / ACPI: Introduce arm-core.c and its related head file

2014-06-30 Thread Catalin Marinas
On Fri, Jun 27, 2014 at 04:49:28AM +0100, Hanjun Guo wrote:
>  drivers/acpi/Makefile  |2 +
>  drivers/acpi/plat/Makefile |1 +
>  drivers/acpi/plat/arm-core.c   |  110 
> 

Do you ever plan to add ACPI support for 32-bit ARM? If not, this part
could be placed under arch/arm64 (similar to x86).

-- 
Catalin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v4 05/13] ARM64 / ACPI: Introduce arm-core.c and its related head file

2014-06-30 Thread Catalin Marinas
On Fri, Jun 27, 2014 at 04:49:28AM +0100, Hanjun Guo wrote:
  drivers/acpi/Makefile  |2 +
  drivers/acpi/plat/Makefile |1 +
  drivers/acpi/plat/arm-core.c   |  110 
 

Do you ever plan to add ACPI support for 32-bit ARM? If not, this part
could be placed under arch/arm64 (similar to x86).

-- 
Catalin
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [PATCH v4 05/13] ARM64 / ACPI: Introduce arm-core.c and its related head file

2014-06-30 Thread Graeme Gregory


On 30/06/2014 17:24, Catalin Marinas wrote:

On Fri, Jun 27, 2014 at 04:49:28AM +0100, Hanjun Guo wrote:

  drivers/acpi/Makefile  |2 +
  drivers/acpi/plat/Makefile |1 +
  drivers/acpi/plat/arm-core.c   |  110 

Do you ever plan to add ACPI support for 32-bit ARM? If not, this part
could be placed under arch/arm64 (similar to x86).

Originally the plan was to support both platforms, but it seems people 
have stopped talking to Linaro about 32bit support now so unless anyone 
else has some actual info I guess it would be safe to move it into arm64.


Graeme

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH v4 05/13] ARM64 / ACPI: Introduce arm-core.c and its related head file

2014-06-26 Thread Hanjun Guo
From: Al Stone 

ACPI core need lots extern variables and functions which should
be provided by arch dependent code to make itself compilable. so
introduce arm-core.c and its related header file here, we need:
  - asm/acenv.h for arch specific ACPICA environments and
implementation;
  - asm/acpi.h for arch specific variables and functions needed by
ACPI driver core;
  - arm-core.c for ARM64 related ACPI implementation for ACPI driver
core;

acpi_boot_table_init() will be called in setup_arch() before
paging_init(), so we should use eary_memremap() mechanism here
to get the RSDP and all the table pointers. with this patch,
we can get ACPI boot-time tables from firmware on ARM64.

Reviewed-by: Grant Likely 
Signed-off-by: Al Stone 
Signed-off-by: Graeme Gregory 
Signed-off-by: Tomasz Nowicki 
Signed-off-by: Hanjun Guo 
---
 arch/arm64/include/asm/acenv.h |   18 +++
 arch/arm64/include/asm/acpi.h  |   49 ++
 arch/arm64/kernel/setup.c  |4 ++
 drivers/acpi/Makefile  |2 +
 drivers/acpi/plat/Makefile |1 +
 drivers/acpi/plat/arm-core.c   |  110 
 6 files changed, 184 insertions(+)
 create mode 100644 arch/arm64/include/asm/acenv.h
 create mode 100644 arch/arm64/include/asm/acpi.h
 create mode 100644 drivers/acpi/plat/Makefile
 create mode 100644 drivers/acpi/plat/arm-core.c

diff --git a/arch/arm64/include/asm/acenv.h b/arch/arm64/include/asm/acenv.h
new file mode 100644
index 000..3899ee6
--- /dev/null
+++ b/arch/arm64/include/asm/acenv.h
@@ -0,0 +1,18 @@
+/*
+ * ARM64 specific ACPICA environments and implementation
+ *
+ * Copyright (C) 2014, Linaro Ltd.
+ *   Author: Hanjun Guo 
+ *   Author: Graeme Gregory 
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _ASM_ACENV_H
+#define _ASM_ACENV_H
+
+#define ACPI_FLUSH_CPU_CACHE() WARN_ONCE(1, "Not currently supported on ARM64")
+
+#endif /* _ASM_ACENV_H */
diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
new file mode 100644
index 000..3ea6b84
--- /dev/null
+++ b/arch/arm64/include/asm/acpi.h
@@ -0,0 +1,49 @@
+/*
+ *  Copyright (C) 2013-2014, Linaro Ltd.
+ * Author: Al Stone 
+ * Author: Graeme Gregory 
+ * Author: Hanjun Guo 
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ */
+
+#ifndef _ASM_ACPI_H
+#define _ASM_ACPI_H
+
+/* Basic configuration for ACPI */
+#ifdef CONFIG_ACPI
+extern int acpi_disabled;
+extern int acpi_noirq;
+extern int acpi_pci_disabled;
+extern int acpi_strict;
+
+static inline void disable_acpi(void)
+{
+   acpi_disabled = 1;
+   acpi_pci_disabled = 1;
+   acpi_noirq = 1;
+}
+
+/*
+ * The ACPI processor driver for ACPI core code needs this macro.
+ * Temporarily define it to -1 so that the ACPI core can compile,
+ * but update it when we get the hardware ID from the MADT table.
+ */
+#define cpu_physical_id(cpu) -1
+
+static inline bool acpi_arch_is_smp(void)
+{
+   return 1;
+}
+
+#endif /* CONFIG_ACPI */
+
+#endif /*_ASM_ACPI_H*/
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 46d1125..9dedb0b 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -43,6 +43,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -385,6 +386,9 @@ void __init setup_arch(char **cmdline_p)
efi_init();
arm64_memblock_init();
 
+   /* Parse the ACPI tables for possible boot-time configuration */
+   acpi_boot_table_init();
+
paging_init();
request_standard_resources();
 
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index b638e95..c50ea88 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -86,3 +86,5 @@ obj-$(CONFIG_ACPI_PROCESSOR_AGGREGATOR) += acpi_pad.o
 obj-$(CONFIG_ACPI_APEI)+= apei/
 
 obj-$(CONFIG_ACPI_EXTLOG)  += acpi_extlog.o
+
+obj-y  += plat/
diff --git a/drivers/acpi/plat/Makefile b/drivers/acpi/plat/Makefile
new file mode 100644
index 000..46bc65e
--- /dev/null
+++ b/drivers/acpi/plat/Makefile
@@ -0,0 +1 @@
+obj-$(CONFIG_ARM64)+= arm-core.o
diff --git a/drivers/acpi/plat/arm-core.c b/drivers/acpi/plat/arm-core.c
new file mode 100644
index 000..c6c7e03
--- /dev/null
+++ b/drivers/acpi/plat/arm-core.c
@@ -0,0 +1,110 @@
+/*
+ *  ARM/ARM64 Specific Low-Level ACPI Boot Support
+ *
+ *  

[PATCH v4 05/13] ARM64 / ACPI: Introduce arm-core.c and its related head file

2014-06-26 Thread Hanjun Guo
From: Al Stone al.st...@linaro.org

ACPI core need lots extern variables and functions which should
be provided by arch dependent code to make itself compilable. so
introduce arm-core.c and its related header file here, we need:
  - asm/acenv.h for arch specific ACPICA environments and
implementation;
  - asm/acpi.h for arch specific variables and functions needed by
ACPI driver core;
  - arm-core.c for ARM64 related ACPI implementation for ACPI driver
core;

acpi_boot_table_init() will be called in setup_arch() before
paging_init(), so we should use eary_memremap() mechanism here
to get the RSDP and all the table pointers. with this patch,
we can get ACPI boot-time tables from firmware on ARM64.

Reviewed-by: Grant Likely grant.lik...@linaro.org
Signed-off-by: Al Stone al.st...@linaro.org
Signed-off-by: Graeme Gregory graeme.greg...@linaro.org
Signed-off-by: Tomasz Nowicki tomasz.nowi...@linaro.org
Signed-off-by: Hanjun Guo hanjun@linaro.org
---
 arch/arm64/include/asm/acenv.h |   18 +++
 arch/arm64/include/asm/acpi.h  |   49 ++
 arch/arm64/kernel/setup.c  |4 ++
 drivers/acpi/Makefile  |2 +
 drivers/acpi/plat/Makefile |1 +
 drivers/acpi/plat/arm-core.c   |  110 
 6 files changed, 184 insertions(+)
 create mode 100644 arch/arm64/include/asm/acenv.h
 create mode 100644 arch/arm64/include/asm/acpi.h
 create mode 100644 drivers/acpi/plat/Makefile
 create mode 100644 drivers/acpi/plat/arm-core.c

diff --git a/arch/arm64/include/asm/acenv.h b/arch/arm64/include/asm/acenv.h
new file mode 100644
index 000..3899ee6
--- /dev/null
+++ b/arch/arm64/include/asm/acenv.h
@@ -0,0 +1,18 @@
+/*
+ * ARM64 specific ACPICA environments and implementation
+ *
+ * Copyright (C) 2014, Linaro Ltd.
+ *   Author: Hanjun Guo hanjun@linaro.org
+ *   Author: Graeme Gregory graeme.greg...@linaro.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _ASM_ACENV_H
+#define _ASM_ACENV_H
+
+#define ACPI_FLUSH_CPU_CACHE() WARN_ONCE(1, Not currently supported on ARM64)
+
+#endif /* _ASM_ACENV_H */
diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
new file mode 100644
index 000..3ea6b84
--- /dev/null
+++ b/arch/arm64/include/asm/acpi.h
@@ -0,0 +1,49 @@
+/*
+ *  Copyright (C) 2013-2014, Linaro Ltd.
+ * Author: Al Stone al.st...@linaro.org
+ * Author: Graeme Gregory graeme.greg...@linaro.org
+ * Author: Hanjun Guo hanjun@linaro.org
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ */
+
+#ifndef _ASM_ACPI_H
+#define _ASM_ACPI_H
+
+/* Basic configuration for ACPI */
+#ifdef CONFIG_ACPI
+extern int acpi_disabled;
+extern int acpi_noirq;
+extern int acpi_pci_disabled;
+extern int acpi_strict;
+
+static inline void disable_acpi(void)
+{
+   acpi_disabled = 1;
+   acpi_pci_disabled = 1;
+   acpi_noirq = 1;
+}
+
+/*
+ * The ACPI processor driver for ACPI core code needs this macro.
+ * Temporarily define it to -1 so that the ACPI core can compile,
+ * but update it when we get the hardware ID from the MADT table.
+ */
+#define cpu_physical_id(cpu) -1
+
+static inline bool acpi_arch_is_smp(void)
+{
+   return 1;
+}
+
+#endif /* CONFIG_ACPI */
+
+#endif /*_ASM_ACPI_H*/
diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c
index 46d1125..9dedb0b 100644
--- a/arch/arm64/kernel/setup.c
+++ b/arch/arm64/kernel/setup.c
@@ -43,6 +43,7 @@
 #include linux/of_fdt.h
 #include linux/of_platform.h
 #include linux/efi.h
+#include linux/acpi.h
 
 #include asm/fixmap.h
 #include asm/cputype.h
@@ -385,6 +386,9 @@ void __init setup_arch(char **cmdline_p)
efi_init();
arm64_memblock_init();
 
+   /* Parse the ACPI tables for possible boot-time configuration */
+   acpi_boot_table_init();
+
paging_init();
request_standard_resources();
 
diff --git a/drivers/acpi/Makefile b/drivers/acpi/Makefile
index b638e95..c50ea88 100644
--- a/drivers/acpi/Makefile
+++ b/drivers/acpi/Makefile
@@ -86,3 +86,5 @@ obj-$(CONFIG_ACPI_PROCESSOR_AGGREGATOR) += acpi_pad.o
 obj-$(CONFIG_ACPI_APEI)+= apei/
 
 obj-$(CONFIG_ACPI_EXTLOG)  += acpi_extlog.o
+
+obj-y  += plat/
diff --git a/drivers/acpi/plat/Makefile b/drivers/acpi/plat/Makefile
new file mode 100644
index 000..46bc65e
--- /dev/null
+++