public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
@ 2016-03-29  7:44 fu.wei
  2016-03-29 16:35 ` Will Deacon
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: fu.wei @ 2016-03-29  7:44 UTC (permalink / raw)
  To: tn, rjw, len.brown, pavel, catalin.marinas, will.deacon, tglx,
	mingo, hpa
  Cc: linux-kernel, linux-acpi, x86, linaro-acpi, linux-arm-kernel,
	linux-pm, graeme.gregory, al.stone, hanjun.guo, mark.rutland,
	Marc.Zyngier, lorenzo.pieralisi, rruigrok, harba, tbaicar, jcm,
	msalter, grant.likely, rrichter, jarkko.nikula,
	jon.zhixiong.zhang, Tomasz Nowicki, Fu Wei

From: Tomasz Nowicki <tomasz.nowicki@linaro.org>

This commit provides APEI arch-specific bits for aarch64

Meanwhile,
(1)add a new subfunction "hest_ia32_init" for
"acpi_disable_cmcff" which is used by IA-32 Architecture
Corrected Machine Check (CMC).
(2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
a generic place.
(3)select EFI when ACPI_APEI is set on ARM64,
because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.

[Fu Wei: improve && upstream]

Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
Tested-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
Signed-off-by: Fu Wei <fu.wei@linaro.org>
Acked-by: Hanjun Guo <hanjun.guo@linaro.org>
Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
---
Changelog:
v8: Fix a "undefined reference" bug by selecting EFI when ACPI_APEI is set
    on ARM64.

v7: https://lkml.org/lkml/2016/3/17/183
    Add comment for arch_apei_flush_tlb_one in arch/arm64/include/asm/acpi.h

v6: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006644.html
    Move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
    a generic place.
    Delete HAVE_ACPI_APEI_HEST_IA32.

v5: https://lkml.org/lkml/2015/12/10/131
    Add "HAVE_ACPI_APEI_HEST_IA32" instead of
    "#if defined(__i386__) || defined(__x86_64__)".

v4: https://lkml.org/lkml/2015/12/8/188
    Rebase to latest kernel version(4.4-rc4).
    Move arch_apei_flush_tlb_one into header file as a inline function
    Add a new subfunction "hest_ia_init" for "acpi_disable_cmcff".

v3: https://lkml.org/lkml/2015/12/3/521
    Remove "acpi_disable_cmcff" from arm64 code,
    and wrap it in hest.c by "#if defined(__i386__) || defined(__x86_64__)"

v2: https://lkml.org/lkml/2015/12/2/432
    Rebase to latest kernel version(4.4-rc3).
    Move arch_apei_flush_tlb_one() to arch/arm64/kernel/acpi.c

v1: https://lkml.org/lkml/2015/8/14/199
    Move arch_apei_flush_tlb_one() to arch/arm64/include/asm/apci.h.
    Delete arch/arm64/kernel/apei.c.
    Add "#ifdef CONFIG_ACPI_APEI" for "acpi_disable_cmcff".

 arch/arm64/Kconfig            |  1 +
 arch/arm64/include/asm/acpi.h | 15 ++++++++++++++-
 arch/x86/kernel/acpi/apei.c   |  3 ---
 drivers/acpi/apei/Kconfig     |  1 +
 drivers/acpi/apei/hest.c      | 18 +++++++++++++++---
 5 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
index 4f43622..08952ec 100644
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
@@ -3,6 +3,7 @@ config ARM64
 	select ACPI_CCA_REQUIRED if ACPI
 	select ACPI_GENERIC_GSI if ACPI
 	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
+	select HAVE_ACPI_APEI if ACPI
 	select ARCH_HAS_DEVMEM_IS_ALLOWED
 	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
 	select ARCH_HAS_ELF_RANDOMIZE
diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
index aee323b..4a6c959 100644
--- a/arch/arm64/include/asm/acpi.h
+++ b/arch/arm64/include/asm/acpi.h
@@ -17,6 +17,7 @@
 
 #include <asm/cputype.h>
 #include <asm/smp_plat.h>
+#include <asm/tlbflush.h>
 
 /* Macros for consistency checks of the GICC subtable of MADT */
 #define ACPI_MADT_GICC_LENGTH	\
@@ -110,7 +111,19 @@ static inline const char *acpi_get_enable_method(int cpu)
 }
 
 #ifdef	CONFIG_ACPI_APEI
+#define acpi_disable_cmcff 1
 pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr);
-#endif
 
+/*
+ * This inline function is used in IRQ context (by GHES driver now),
+ * see ghes_iounmap_irq and ghes_iounmap_nmi in drivers/acpi/apei/ghes.c.
+ * The page mapped is reserved for firmware in kernel. This invalidate TLB
+ * maintenance should be broadcasted safely to make sure that all the cores
+ * will do TLB invalidation, then get the right pages.
+ */
+static inline void arch_apei_flush_tlb_one(unsigned long addr)
+{
+	flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
+}
+#endif /* CONFIG_ACPI_APEI */
 #endif /*_ASM_ACPI_H*/
diff --git a/arch/x86/kernel/acpi/apei.c b/arch/x86/kernel/acpi/apei.c
index c280df6..ea3046e 100644
--- a/arch/x86/kernel/acpi/apei.c
+++ b/arch/x86/kernel/acpi/apei.c
@@ -24,9 +24,6 @@ int arch_apei_enable_cmcff(struct acpi_hest_header *hest_hdr, void *data)
 	struct acpi_hest_ia_corrected *cmc;
 	struct acpi_hest_ia_error_bank *mc_bank;
 
-	if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK)
-		return 0;
-
 	cmc = (struct acpi_hest_ia_corrected *)hest_hdr;
 	if (!cmc->enabled)
 		return 0;
diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
index b0140c8..b037c5c 100644
--- a/drivers/acpi/apei/Kconfig
+++ b/drivers/acpi/apei/Kconfig
@@ -8,6 +8,7 @@ config ACPI_APEI
 	bool "ACPI Platform Error Interface (APEI)"
 	select MISC_FILESYSTEMS
 	select PSTORE
+	select EFI if ARM64
 	select UEFI_CPER
 	depends on HAVE_ACPI_APEI
 	help
diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
index 20b3fcf..792a0d9 100644
--- a/drivers/acpi/apei/hest.c
+++ b/drivers/acpi/apei/hest.c
@@ -123,7 +123,18 @@ EXPORT_SYMBOL_GPL(apei_hest_parse);
  */
 static int __init hest_parse_cmc(struct acpi_hest_header *hest_hdr, void *data)
 {
-	return arch_apei_enable_cmcff(hest_hdr, data);
+	if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK)
+		return 0;
+
+	if (!acpi_disable_cmcff)
+		return !arch_apei_enable_cmcff(hest_hdr, data);
+
+	return 0;
+}
+
+static inline int __init hest_ia32_init(void)
+{
+	return apei_hest_parse(hest_parse_cmc, NULL);
 }
 
 struct ghes_arr {
@@ -232,8 +243,9 @@ void __init acpi_hest_init(void)
 		goto err;
 	}
 
-	if (!acpi_disable_cmcff)
-		apei_hest_parse(hest_parse_cmc, NULL);
+	rc = hest_ia32_init();
+	if (rc)
+		goto err;
 
 	if (!ghes_disable) {
 		rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count);
-- 
2.5.0

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-29  7:44 [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64 fu.wei
@ 2016-03-29 16:35 ` Will Deacon
  2016-03-30 17:41   ` Fu Wei
  2016-03-30  6:50 ` kbuild test robot
  2016-03-30  7:05 ` Ard Biesheuvel
  2 siblings, 1 reply; 10+ messages in thread
From: Will Deacon @ 2016-03-29 16:35 UTC (permalink / raw)
  To: fu.wei
  Cc: tn, rjw, len.brown, pavel, catalin.marinas, tglx, mingo, hpa,
	linux-kernel, linux-acpi, x86, linaro-acpi, linux-arm-kernel,
	linux-pm, graeme.gregory, al.stone, hanjun.guo, mark.rutland,
	Marc.Zyngier, lorenzo.pieralisi, rruigrok, harba, tbaicar, jcm,
	msalter, grant.likely, rrichter, jarkko.nikula,
	jon.zhixiong.zhang, Tomasz Nowicki

On Tue, Mar 29, 2016 at 03:44:18PM +0800, fu.wei@linaro.org wrote:
> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
> 
> This commit provides APEI arch-specific bits for aarch64
> 
> Meanwhile,
> (1)add a new subfunction "hest_ia32_init" for
> "acpi_disable_cmcff" which is used by IA-32 Architecture
> Corrected Machine Check (CMC).
> (2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
> a generic place.
> (3)select EFI when ACPI_APEI is set on ARM64,
> because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.
> 
> [Fu Wei: improve && upstream]
> 
> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
> Tested-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
> Signed-off-by: Fu Wei <fu.wei@linaro.org>
> Acked-by: Hanjun Guo <hanjun.guo@linaro.org>
> Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
> ---
> Changelog:
> v8: Fix a "undefined reference" bug by selecting EFI when ACPI_APEI is set
>     on ARM64.
> 
> v7: https://lkml.org/lkml/2016/3/17/183
>     Add comment for arch_apei_flush_tlb_one in arch/arm64/include/asm/acpi.h
> 
> v6: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006644.html
>     Move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>     a generic place.
>     Delete HAVE_ACPI_APEI_HEST_IA32.
> 
> v5: https://lkml.org/lkml/2015/12/10/131
>     Add "HAVE_ACPI_APEI_HEST_IA32" instead of
>     "#if defined(__i386__) || defined(__x86_64__)".
> 
> v4: https://lkml.org/lkml/2015/12/8/188
>     Rebase to latest kernel version(4.4-rc4).
>     Move arch_apei_flush_tlb_one into header file as a inline function
>     Add a new subfunction "hest_ia_init" for "acpi_disable_cmcff".
> 
> v3: https://lkml.org/lkml/2015/12/3/521
>     Remove "acpi_disable_cmcff" from arm64 code,
>     and wrap it in hest.c by "#if defined(__i386__) || defined(__x86_64__)"
> 
> v2: https://lkml.org/lkml/2015/12/2/432
>     Rebase to latest kernel version(4.4-rc3).
>     Move arch_apei_flush_tlb_one() to arch/arm64/kernel/acpi.c
> 
> v1: https://lkml.org/lkml/2015/8/14/199
>     Move arch_apei_flush_tlb_one() to arch/arm64/include/asm/apci.h.
>     Delete arch/arm64/kernel/apei.c.
>     Add "#ifdef CONFIG_ACPI_APEI" for "acpi_disable_cmcff".
> 
>  arch/arm64/Kconfig            |  1 +
>  arch/arm64/include/asm/acpi.h | 15 ++++++++++++++-
>  arch/x86/kernel/acpi/apei.c   |  3 ---
>  drivers/acpi/apei/Kconfig     |  1 +
>  drivers/acpi/apei/hest.c      | 18 +++++++++++++++---
>  5 files changed, 31 insertions(+), 7 deletions(-)
> 
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 4f43622..08952ec 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -3,6 +3,7 @@ config ARM64
>  	select ACPI_CCA_REQUIRED if ACPI
>  	select ACPI_GENERIC_GSI if ACPI
>  	select ACPI_REDUCED_HARDWARE_ONLY if ACPI
> +	select HAVE_ACPI_APEI if ACPI
>  	select ARCH_HAS_DEVMEM_IS_ALLOWED
>  	select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
>  	select ARCH_HAS_ELF_RANDOMIZE
> diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
> index aee323b..4a6c959 100644
> --- a/arch/arm64/include/asm/acpi.h
> +++ b/arch/arm64/include/asm/acpi.h
> @@ -17,6 +17,7 @@
>  
>  #include <asm/cputype.h>
>  #include <asm/smp_plat.h>
> +#include <asm/tlbflush.h>
>  
>  /* Macros for consistency checks of the GICC subtable of MADT */
>  #define ACPI_MADT_GICC_LENGTH	\
> @@ -110,7 +111,19 @@ static inline const char *acpi_get_enable_method(int cpu)
>  }
>  
>  #ifdef	CONFIG_ACPI_APEI
> +#define acpi_disable_cmcff 1
>  pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr);
> -#endif
>  
> +/*
> + * This inline function is used in IRQ context (by GHES driver now),
> + * see ghes_iounmap_irq and ghes_iounmap_nmi in drivers/acpi/apei/ghes.c.
> + * The page mapped is reserved for firmware in kernel. This invalidate TLB
> + * maintenance should be broadcasted safely to make sure that all the cores
> + * will do TLB invalidation, then get the right pages.
> + */

How about:

 /*
  * Despite its name, this function must still broadcast the TLB
  * invalidation in order to ensure other CPUs don't up with with junk
  * entries as a result of speculation. Unusually, its also called in
  * IRQ context (ghes_iounmap_irq) so if we ever need to use IPIs for
  * TLB broadcasting, then we're in trouble here.
  */

With that,

Acked-by: Will Deacon <will.deacon@arm.com>

Will

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-29  7:44 [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64 fu.wei
  2016-03-29 16:35 ` Will Deacon
@ 2016-03-30  6:50 ` kbuild test robot
  2016-03-30 17:55   ` Fu Wei
  2016-03-30  7:05 ` Ard Biesheuvel
  2 siblings, 1 reply; 10+ messages in thread
From: kbuild test robot @ 2016-03-30  6:50 UTC (permalink / raw)
  To: fu.wei
  Cc: kbuild-all, tn, rjw, len.brown, pavel, catalin.marinas,
	will.deacon, tglx, mingo, hpa, linux-kernel, linux-acpi, x86,
	linaro-acpi, linux-arm-kernel, linux-pm, graeme.gregory, al.stone,
	hanjun.guo, mark.rutland, Marc.Zyngier, lorenzo.pieralisi,
	rruigrok, harba, tbaicar, jcm, msalter, grant.likely, rrichter,
	jarkko.nikula, jon.zhixiong.zhang, Tomasz Nowicki, Fu Wei

[-- Attachment #1: Type: text/plain, Size: 1024 bytes --]

Hi Tomasz,

[auto build test WARNING on arm64/for-next/core]
[also build test WARNING on v4.6-rc1 next-20160330]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/fu-wei-linaro-org/acpi-apei-arm64-APEI-initial-support-for-aarch64/20160329-154730
base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux for-next/core
config: arm64-allyesconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=arm64 

All warnings (new ones prefixed by >>):

warning: (ACPI_APEI) selects EFI which has unmet direct dependencies (OF && !CPU_BIG_ENDIAN)

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 48380 bytes --]

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-29  7:44 [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64 fu.wei
  2016-03-29 16:35 ` Will Deacon
  2016-03-30  6:50 ` kbuild test robot
@ 2016-03-30  7:05 ` Ard Biesheuvel
  2016-03-30 17:40   ` Fu Wei
  2016-04-04  8:32   ` Tomasz Nowicki
  2 siblings, 2 replies; 10+ messages in thread
From: Ard Biesheuvel @ 2016-03-30  7:05 UTC (permalink / raw)
  To: Fu Wei
  Cc: tn, Rafael J. Wysocki, len.brown, pavel, Catalin Marinas,
	Will Deacon, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com,
	Mark Rutland, Linaro ACPI Mailman List, Baicar, Tyler,
	Richard Ruigrok, Lorenzo Pieralisi, Al Stone, x86@kernel.org,
	Abdulhamid, Harb, linux-acpi@vger.kernel.org, Mark Salter,
	Grant Likely, linux-pm, Marc Zyngier, Jon Masters, Tomasz Nowicki,
	Robert Richter, linux-arm-kernel@lists.infradead.org, G Gregory,
	linux-kernel@vger.kernel.org, jarkko.nikula, Hanjun Guo,
	jon.zhixiong.zhang

On 29 March 2016 at 09:44,  <fu.wei@linaro.org> wrote:
> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>
> This commit provides APEI arch-specific bits for aarch64
>
> Meanwhile,
> (1)add a new subfunction "hest_ia32_init" for
> "acpi_disable_cmcff" which is used by IA-32 Architecture
> Corrected Machine Check (CMC).
> (2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
> a generic place.
> (3)select EFI when ACPI_APEI is set on ARM64,
> because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.

I think selecting 'EFI' is not the right approach here, especially
since EFI is implied by ACPI on that architecture. But selecting a
user configurable option like this is typically not recommended. Why
doesn't ACPI_APEI depend on ACPI?

>
> [Fu Wei: improve && upstream]
>
> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
> Tested-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
> Signed-off-by: Fu Wei <fu.wei@linaro.org>
> Acked-by: Hanjun Guo <hanjun.guo@linaro.org>
> Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
> ---
> Changelog:
> v8: Fix a "undefined reference" bug by selecting EFI when ACPI_APEI is set
>     on ARM64.
>
> v7: https://lkml.org/lkml/2016/3/17/183
>     Add comment for arch_apei_flush_tlb_one in arch/arm64/include/asm/acpi.h
>
> v6: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006644.html
>     Move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>     a generic place.
>     Delete HAVE_ACPI_APEI_HEST_IA32.
>
> v5: https://lkml.org/lkml/2015/12/10/131
>     Add "HAVE_ACPI_APEI_HEST_IA32" instead of
>     "#if defined(__i386__) || defined(__x86_64__)".
>
> v4: https://lkml.org/lkml/2015/12/8/188
>     Rebase to latest kernel version(4.4-rc4).
>     Move arch_apei_flush_tlb_one into header file as a inline function
>     Add a new subfunction "hest_ia_init" for "acpi_disable_cmcff".
>
> v3: https://lkml.org/lkml/2015/12/3/521
>     Remove "acpi_disable_cmcff" from arm64 code,
>     and wrap it in hest.c by "#if defined(__i386__) || defined(__x86_64__)"
>
> v2: https://lkml.org/lkml/2015/12/2/432
>     Rebase to latest kernel version(4.4-rc3).
>     Move arch_apei_flush_tlb_one() to arch/arm64/kernel/acpi.c
>
> v1: https://lkml.org/lkml/2015/8/14/199
>     Move arch_apei_flush_tlb_one() to arch/arm64/include/asm/apci.h.
>     Delete arch/arm64/kernel/apei.c.
>     Add "#ifdef CONFIG_ACPI_APEI" for "acpi_disable_cmcff".
>
>  arch/arm64/Kconfig            |  1 +
>  arch/arm64/include/asm/acpi.h | 15 ++++++++++++++-
>  arch/x86/kernel/acpi/apei.c   |  3 ---
>  drivers/acpi/apei/Kconfig     |  1 +
>  drivers/acpi/apei/hest.c      | 18 +++++++++++++++---
>  5 files changed, 31 insertions(+), 7 deletions(-)
>
> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
> index 4f43622..08952ec 100644
> --- a/arch/arm64/Kconfig
> +++ b/arch/arm64/Kconfig
> @@ -3,6 +3,7 @@ config ARM64
>         select ACPI_CCA_REQUIRED if ACPI
>         select ACPI_GENERIC_GSI if ACPI
>         select ACPI_REDUCED_HARDWARE_ONLY if ACPI
> +       select HAVE_ACPI_APEI if ACPI
>         select ARCH_HAS_DEVMEM_IS_ALLOWED
>         select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
>         select ARCH_HAS_ELF_RANDOMIZE
> diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
> index aee323b..4a6c959 100644
> --- a/arch/arm64/include/asm/acpi.h
> +++ b/arch/arm64/include/asm/acpi.h
> @@ -17,6 +17,7 @@
>
>  #include <asm/cputype.h>
>  #include <asm/smp_plat.h>
> +#include <asm/tlbflush.h>
>
>  /* Macros for consistency checks of the GICC subtable of MADT */
>  #define ACPI_MADT_GICC_LENGTH  \
> @@ -110,7 +111,19 @@ static inline const char *acpi_get_enable_method(int cpu)
>  }
>
>  #ifdef CONFIG_ACPI_APEI
> +#define acpi_disable_cmcff 1
>  pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr);
> -#endif
>
> +/*
> + * This inline function is used in IRQ context (by GHES driver now),
> + * see ghes_iounmap_irq and ghes_iounmap_nmi in drivers/acpi/apei/ghes.c.
> + * The page mapped is reserved for firmware in kernel. This invalidate TLB
> + * maintenance should be broadcasted safely to make sure that all the cores
> + * will do TLB invalidation, then get the right pages.
> + */
> +static inline void arch_apei_flush_tlb_one(unsigned long addr)
> +{
> +       flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
> +}
> +#endif /* CONFIG_ACPI_APEI */
>  #endif /*_ASM_ACPI_H*/
> diff --git a/arch/x86/kernel/acpi/apei.c b/arch/x86/kernel/acpi/apei.c
> index c280df6..ea3046e 100644
> --- a/arch/x86/kernel/acpi/apei.c
> +++ b/arch/x86/kernel/acpi/apei.c
> @@ -24,9 +24,6 @@ int arch_apei_enable_cmcff(struct acpi_hest_header *hest_hdr, void *data)
>         struct acpi_hest_ia_corrected *cmc;
>         struct acpi_hest_ia_error_bank *mc_bank;
>
> -       if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK)
> -               return 0;
> -
>         cmc = (struct acpi_hest_ia_corrected *)hest_hdr;
>         if (!cmc->enabled)
>                 return 0;
> diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
> index b0140c8..b037c5c 100644
> --- a/drivers/acpi/apei/Kconfig
> +++ b/drivers/acpi/apei/Kconfig
> @@ -8,6 +8,7 @@ config ACPI_APEI
>         bool "ACPI Platform Error Interface (APEI)"
>         select MISC_FILESYSTEMS
>         select PSTORE
> +       select EFI if ARM64
>         select UEFI_CPER
>         depends on HAVE_ACPI_APEI
>         help
> diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
> index 20b3fcf..792a0d9 100644
> --- a/drivers/acpi/apei/hest.c
> +++ b/drivers/acpi/apei/hest.c
> @@ -123,7 +123,18 @@ EXPORT_SYMBOL_GPL(apei_hest_parse);
>   */
>  static int __init hest_parse_cmc(struct acpi_hest_header *hest_hdr, void *data)
>  {
> -       return arch_apei_enable_cmcff(hest_hdr, data);
> +       if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK)
> +               return 0;
> +
> +       if (!acpi_disable_cmcff)
> +               return !arch_apei_enable_cmcff(hest_hdr, data);
> +
> +       return 0;
> +}
> +
> +static inline int __init hest_ia32_init(void)
> +{
> +       return apei_hest_parse(hest_parse_cmc, NULL);
>  }
>
>  struct ghes_arr {
> @@ -232,8 +243,9 @@ void __init acpi_hest_init(void)
>                 goto err;
>         }
>
> -       if (!acpi_disable_cmcff)
> -               apei_hest_parse(hest_parse_cmc, NULL);
> +       rc = hest_ia32_init();
> +       if (rc)
> +               goto err;
>
>         if (!ghes_disable) {
>                 rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count);
> --
> 2.5.0
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-30  7:05 ` Ard Biesheuvel
@ 2016-03-30 17:40   ` Fu Wei
  2016-04-04  8:32   ` Tomasz Nowicki
  1 sibling, 0 replies; 10+ messages in thread
From: Fu Wei @ 2016-03-30 17:40 UTC (permalink / raw)
  To: Ard Biesheuvel
  Cc: Tomasz Nowicki, Rafael J. Wysocki, len.brown, pavel,
	Catalin Marinas, Will Deacon, tglx@linutronix.de,
	mingo@redhat.com, hpa@zytor.com, Mark Rutland,
	Linaro ACPI Mailman List, Baicar, Tyler, Richard Ruigrok,
	Lorenzo Pieralisi, Al Stone, x86@kernel.org, Abdulhamid, Harb,
	linux-acpi@vger.kernel.org, Mark Salter, Grant Likely, linux-pm,
	Marc Zyngier, Jon Masters, Tomasz Nowicki, Robert Richter,
	linux-arm-kernel@lists.infradead.org, G Gregory,
	linux-kernel@vger.kernel.org, jarkko.nikula, Hanjun Guo,
	Jonathan Zhang

Hi Ard,

On 30 March 2016 at 15:05, Ard Biesheuvel <ard.biesheuvel@linaro.org> wrote:
> On 29 March 2016 at 09:44,  <fu.wei@linaro.org> wrote:
>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>
>> This commit provides APEI arch-specific bits for aarch64
>>
>> Meanwhile,
>> (1)add a new subfunction "hest_ia32_init" for
>> "acpi_disable_cmcff" which is used by IA-32 Architecture
>> Corrected Machine Check (CMC).
>> (2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>> a generic place.
>> (3)select EFI when ACPI_APEI is set on ARM64,
>> because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.
>
> I think selecting 'EFI' is not the right approach here, especially
> since EFI is implied by ACPI on that architecture. But selecting a

I think so "EFI is implied by ACPI",
but I can't see it in Kconfig, maybe I miss it?

> user configurable option like this is typically not recommended. Why
> doesn't ACPI_APEI depend on ACPI?

yes, it does, but indirectly.

-----------------
config ACPI_APEI
        bool "ACPI Platform Error Interface (APEI)"
        select MISC_FILESYSTEMS
        select PSTORE
        select EFI if ARM64
        select UEFI_CPER
        depends on HAVE_ACPI_APEI
----------------
config ARM64
        def_bool y
        select ACPI_CCA_REQUIRED if ACPI
        select ACPI_GENERIC_GSI if ACPI
        select ACPI_REDUCED_HARDWARE_ONLY if ACPI
        select HAVE_ACPI_APEI if ACPI
...
---------------



>
>>
>> [Fu Wei: improve && upstream]
>>
>> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>> Tested-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
>> Signed-off-by: Fu Wei <fu.wei@linaro.org>
>> Acked-by: Hanjun Guo <hanjun.guo@linaro.org>
>> Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
>> ---
>> Changelog:
>> v8: Fix a "undefined reference" bug by selecting EFI when ACPI_APEI is set
>>     on ARM64.
>>
>> v7: https://lkml.org/lkml/2016/3/17/183
>>     Add comment for arch_apei_flush_tlb_one in arch/arm64/include/asm/acpi.h
>>
>> v6: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006644.html
>>     Move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>>     a generic place.
>>     Delete HAVE_ACPI_APEI_HEST_IA32.
>>
>> v5: https://lkml.org/lkml/2015/12/10/131
>>     Add "HAVE_ACPI_APEI_HEST_IA32" instead of
>>     "#if defined(__i386__) || defined(__x86_64__)".
>>
>> v4: https://lkml.org/lkml/2015/12/8/188
>>     Rebase to latest kernel version(4.4-rc4).
>>     Move arch_apei_flush_tlb_one into header file as a inline function
>>     Add a new subfunction "hest_ia_init" for "acpi_disable_cmcff".
>>
>> v3: https://lkml.org/lkml/2015/12/3/521
>>     Remove "acpi_disable_cmcff" from arm64 code,
>>     and wrap it in hest.c by "#if defined(__i386__) || defined(__x86_64__)"
>>
>> v2: https://lkml.org/lkml/2015/12/2/432
>>     Rebase to latest kernel version(4.4-rc3).
>>     Move arch_apei_flush_tlb_one() to arch/arm64/kernel/acpi.c
>>
>> v1: https://lkml.org/lkml/2015/8/14/199
>>     Move arch_apei_flush_tlb_one() to arch/arm64/include/asm/apci.h.
>>     Delete arch/arm64/kernel/apei.c.
>>     Add "#ifdef CONFIG_ACPI_APEI" for "acpi_disable_cmcff".
>>
>>  arch/arm64/Kconfig            |  1 +
>>  arch/arm64/include/asm/acpi.h | 15 ++++++++++++++-
>>  arch/x86/kernel/acpi/apei.c   |  3 ---
>>  drivers/acpi/apei/Kconfig     |  1 +
>>  drivers/acpi/apei/hest.c      | 18 +++++++++++++++---
>>  5 files changed, 31 insertions(+), 7 deletions(-)
>>
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index 4f43622..08952ec 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -3,6 +3,7 @@ config ARM64
>>         select ACPI_CCA_REQUIRED if ACPI
>>         select ACPI_GENERIC_GSI if ACPI
>>         select ACPI_REDUCED_HARDWARE_ONLY if ACPI
>> +       select HAVE_ACPI_APEI if ACPI
>>         select ARCH_HAS_DEVMEM_IS_ALLOWED
>>         select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
>>         select ARCH_HAS_ELF_RANDOMIZE
>> diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
>> index aee323b..4a6c959 100644
>> --- a/arch/arm64/include/asm/acpi.h
>> +++ b/arch/arm64/include/asm/acpi.h
>> @@ -17,6 +17,7 @@
>>
>>  #include <asm/cputype.h>
>>  #include <asm/smp_plat.h>
>> +#include <asm/tlbflush.h>
>>
>>  /* Macros for consistency checks of the GICC subtable of MADT */
>>  #define ACPI_MADT_GICC_LENGTH  \
>> @@ -110,7 +111,19 @@ static inline const char *acpi_get_enable_method(int cpu)
>>  }
>>
>>  #ifdef CONFIG_ACPI_APEI
>> +#define acpi_disable_cmcff 1
>>  pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr);
>> -#endif
>>
>> +/*
>> + * This inline function is used in IRQ context (by GHES driver now),
>> + * see ghes_iounmap_irq and ghes_iounmap_nmi in drivers/acpi/apei/ghes.c.
>> + * The page mapped is reserved for firmware in kernel. This invalidate TLB
>> + * maintenance should be broadcasted safely to make sure that all the cores
>> + * will do TLB invalidation, then get the right pages.
>> + */
>> +static inline void arch_apei_flush_tlb_one(unsigned long addr)
>> +{
>> +       flush_tlb_kernel_range(addr, addr + PAGE_SIZE);
>> +}
>> +#endif /* CONFIG_ACPI_APEI */
>>  #endif /*_ASM_ACPI_H*/
>> diff --git a/arch/x86/kernel/acpi/apei.c b/arch/x86/kernel/acpi/apei.c
>> index c280df6..ea3046e 100644
>> --- a/arch/x86/kernel/acpi/apei.c
>> +++ b/arch/x86/kernel/acpi/apei.c
>> @@ -24,9 +24,6 @@ int arch_apei_enable_cmcff(struct acpi_hest_header *hest_hdr, void *data)
>>         struct acpi_hest_ia_corrected *cmc;
>>         struct acpi_hest_ia_error_bank *mc_bank;
>>
>> -       if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK)
>> -               return 0;
>> -
>>         cmc = (struct acpi_hest_ia_corrected *)hest_hdr;
>>         if (!cmc->enabled)
>>                 return 0;
>> diff --git a/drivers/acpi/apei/Kconfig b/drivers/acpi/apei/Kconfig
>> index b0140c8..b037c5c 100644
>> --- a/drivers/acpi/apei/Kconfig
>> +++ b/drivers/acpi/apei/Kconfig
>> @@ -8,6 +8,7 @@ config ACPI_APEI
>>         bool "ACPI Platform Error Interface (APEI)"
>>         select MISC_FILESYSTEMS
>>         select PSTORE
>> +       select EFI if ARM64
>>         select UEFI_CPER
>>         depends on HAVE_ACPI_APEI
>>         help
>> diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c
>> index 20b3fcf..792a0d9 100644
>> --- a/drivers/acpi/apei/hest.c
>> +++ b/drivers/acpi/apei/hest.c
>> @@ -123,7 +123,18 @@ EXPORT_SYMBOL_GPL(apei_hest_parse);
>>   */
>>  static int __init hest_parse_cmc(struct acpi_hest_header *hest_hdr, void *data)
>>  {
>> -       return arch_apei_enable_cmcff(hest_hdr, data);
>> +       if (hest_hdr->type != ACPI_HEST_TYPE_IA32_CORRECTED_CHECK)
>> +               return 0;
>> +
>> +       if (!acpi_disable_cmcff)
>> +               return !arch_apei_enable_cmcff(hest_hdr, data);
>> +
>> +       return 0;
>> +}
>> +
>> +static inline int __init hest_ia32_init(void)
>> +{
>> +       return apei_hest_parse(hest_parse_cmc, NULL);
>>  }
>>
>>  struct ghes_arr {
>> @@ -232,8 +243,9 @@ void __init acpi_hest_init(void)
>>                 goto err;
>>         }
>>
>> -       if (!acpi_disable_cmcff)
>> -               apei_hest_parse(hest_parse_cmc, NULL);
>> +       rc = hest_ia32_init();
>> +       if (rc)
>> +               goto err;
>>
>>         if (!ghes_disable) {
>>                 rc = apei_hest_parse(hest_parse_ghes_count, &ghes_count);
>> --
>> 2.5.0
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel



-- 
Best regards,

Fu Wei
Software Engineer
Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch
Ph: +86 21 61221326(direct)
Ph: +86 186 2020 4684 (mobile)
Room 1512, Regus One Corporate Avenue,Level 15,
One Corporate Avenue,222 Hubin Road,Huangpu District,
Shanghai,China 200021

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-29 16:35 ` Will Deacon
@ 2016-03-30 17:41   ` Fu Wei
  0 siblings, 0 replies; 10+ messages in thread
From: Fu Wei @ 2016-03-30 17:41 UTC (permalink / raw)
  To: Will Deacon
  Cc: Tomasz Nowicki, Rafael Wysocki, len.brown, pavel, Catalin Marinas,
	Thomas Gleixner, mingo, hpa, LKML, linux-acpi, x86,
	Linaro ACPI Mailman List, linux-arm-kernel, linux-pm, G Gregory,
	Al Stone, Hanjun Guo, Mark Rutland, Marc Zyngier,
	Lorenzo Pieralisi, Richard Ruigrok, Abdulhamid, Harb,
	Baicar, Tyler, Jon Masters, Mark Salter, Grant Likely,
	Robert Richter, jarkko.nikula, Jonathan Zhang, Tomasz Nowicki

Hi Will,

On 30 March 2016 at 00:35, Will Deacon <will.deacon@arm.com> wrote:
> On Tue, Mar 29, 2016 at 03:44:18PM +0800, fu.wei@linaro.org wrote:
>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>
>> This commit provides APEI arch-specific bits for aarch64
>>
>> Meanwhile,
>> (1)add a new subfunction "hest_ia32_init" for
>> "acpi_disable_cmcff" which is used by IA-32 Architecture
>> Corrected Machine Check (CMC).
>> (2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>> a generic place.
>> (3)select EFI when ACPI_APEI is set on ARM64,
>> because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.
>>
>> [Fu Wei: improve && upstream]
>>
>> Signed-off-by: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>> Tested-by: Jonathan (Zhixiong) Zhang <zjzhang@codeaurora.org>
>> Signed-off-by: Fu Wei <fu.wei@linaro.org>
>> Acked-by: Hanjun Guo <hanjun.guo@linaro.org>
>> Tested-by: Tyler Baicar <tbaicar@codeaurora.org>
>> ---
>> Changelog:
>> v8: Fix a "undefined reference" bug by selecting EFI when ACPI_APEI is set
>>     on ARM64.
>>
>> v7: https://lkml.org/lkml/2016/3/17/183
>>     Add comment for arch_apei_flush_tlb_one in arch/arm64/include/asm/acpi.h
>>
>> v6: https://lists.linaro.org/pipermail/linaro-acpi/2016-March/006644.html
>>     Move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>>     a generic place.
>>     Delete HAVE_ACPI_APEI_HEST_IA32.
>>
>> v5: https://lkml.org/lkml/2015/12/10/131
>>     Add "HAVE_ACPI_APEI_HEST_IA32" instead of
>>     "#if defined(__i386__) || defined(__x86_64__)".
>>
>> v4: https://lkml.org/lkml/2015/12/8/188
>>     Rebase to latest kernel version(4.4-rc4).
>>     Move arch_apei_flush_tlb_one into header file as a inline function
>>     Add a new subfunction "hest_ia_init" for "acpi_disable_cmcff".
>>
>> v3: https://lkml.org/lkml/2015/12/3/521
>>     Remove "acpi_disable_cmcff" from arm64 code,
>>     and wrap it in hest.c by "#if defined(__i386__) || defined(__x86_64__)"
>>
>> v2: https://lkml.org/lkml/2015/12/2/432
>>     Rebase to latest kernel version(4.4-rc3).
>>     Move arch_apei_flush_tlb_one() to arch/arm64/kernel/acpi.c
>>
>> v1: https://lkml.org/lkml/2015/8/14/199
>>     Move arch_apei_flush_tlb_one() to arch/arm64/include/asm/apci.h.
>>     Delete arch/arm64/kernel/apei.c.
>>     Add "#ifdef CONFIG_ACPI_APEI" for "acpi_disable_cmcff".
>>
>>  arch/arm64/Kconfig            |  1 +
>>  arch/arm64/include/asm/acpi.h | 15 ++++++++++++++-
>>  arch/x86/kernel/acpi/apei.c   |  3 ---
>>  drivers/acpi/apei/Kconfig     |  1 +
>>  drivers/acpi/apei/hest.c      | 18 +++++++++++++++---
>>  5 files changed, 31 insertions(+), 7 deletions(-)
>>
>> diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig
>> index 4f43622..08952ec 100644
>> --- a/arch/arm64/Kconfig
>> +++ b/arch/arm64/Kconfig
>> @@ -3,6 +3,7 @@ config ARM64
>>       select ACPI_CCA_REQUIRED if ACPI
>>       select ACPI_GENERIC_GSI if ACPI
>>       select ACPI_REDUCED_HARDWARE_ONLY if ACPI
>> +     select HAVE_ACPI_APEI if ACPI
>>       select ARCH_HAS_DEVMEM_IS_ALLOWED
>>       select ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE
>>       select ARCH_HAS_ELF_RANDOMIZE
>> diff --git a/arch/arm64/include/asm/acpi.h b/arch/arm64/include/asm/acpi.h
>> index aee323b..4a6c959 100644
>> --- a/arch/arm64/include/asm/acpi.h
>> +++ b/arch/arm64/include/asm/acpi.h
>> @@ -17,6 +17,7 @@
>>
>>  #include <asm/cputype.h>
>>  #include <asm/smp_plat.h>
>> +#include <asm/tlbflush.h>
>>
>>  /* Macros for consistency checks of the GICC subtable of MADT */
>>  #define ACPI_MADT_GICC_LENGTH        \
>> @@ -110,7 +111,19 @@ static inline const char *acpi_get_enable_method(int cpu)
>>  }
>>
>>  #ifdef       CONFIG_ACPI_APEI
>> +#define acpi_disable_cmcff 1
>>  pgprot_t arch_apei_get_mem_attribute(phys_addr_t addr);
>> -#endif
>>
>> +/*
>> + * This inline function is used in IRQ context (by GHES driver now),
>> + * see ghes_iounmap_irq and ghes_iounmap_nmi in drivers/acpi/apei/ghes.c.
>> + * The page mapped is reserved for firmware in kernel. This invalidate TLB
>> + * maintenance should be broadcasted safely to make sure that all the cores
>> + * will do TLB invalidation, then get the right pages.
>> + */
>
> How about:
>
>  /*
>   * Despite its name, this function must still broadcast the TLB
>   * invalidation in order to ensure other CPUs don't up with with junk
>   * entries as a result of speculation. Unusually, its also called in
>   * IRQ context (ghes_iounmap_irq) so if we ever need to use IPIs for
>   * TLB broadcasting, then we're in trouble here.
>   */

Good, thanks for your help

>
> With that,
>
> Acked-by: Will Deacon <will.deacon@arm.com>

Thanks ! :-)

>
> Will



-- 
Best regards,

Fu Wei
Software Engineer
Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch
Ph: +86 21 61221326(direct)
Ph: +86 186 2020 4684 (mobile)
Room 1512, Regus One Corporate Avenue,Level 15,
One Corporate Avenue,222 Hubin Road,Huangpu District,
Shanghai,China 200021

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-30  6:50 ` kbuild test robot
@ 2016-03-30 17:55   ` Fu Wei
  2016-03-31  7:52     ` Ard Biesheuvel
  0 siblings, 1 reply; 10+ messages in thread
From: Fu Wei @ 2016-03-30 17:55 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Tomasz Nowicki, Rafael Wysocki, len.brown, pavel,
	Catalin Marinas, Will Deacon, Thomas Gleixner, mingo, hpa, LKML,
	linux-acpi, x86, Linaro ACPI Mailman List, linux-arm-kernel,
	linux-pm, G Gregory, Al Stone, Hanjun Guo, Mark Rutland,
	Marc Zyngier, Lorenzo Pieralisi, Richard Ruigrok,
	Abdulhamid, Harb, Baicar, Tyler, Jon Masters, Mark Salter,
	Grant Likely, Robert Richter, jarkko.nikula, Jonathan Zhang,
	Tomasz Nowicki

Hi Tomasz

On 30 March 2016 at 14:50, kbuild test robot <lkp@intel.com> wrote:
> Hi Tomasz,
>
> [auto build test WARNING on arm64/for-next/core]
> [also build test WARNING on v4.6-rc1 next-20160330]
> [if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
>
> url:    https://github.com/0day-ci/linux/commits/fu-wei-linaro-org/acpi-apei-arm64-APEI-initial-support-for-aarch64/20160329-154730
> base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux for-next/core
> config: arm64-allyesconfig (attached as .config)
> reproduce:
>         wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         make.cross ARCH=arm64
>
> All warnings (new ones prefixed by >>):
>
> warning: (ACPI_APEI) selects EFI which has unmet direct dependencies (OF && !CPU_BIG_ENDIAN)

I think it's caused by  CPU_BIG_ENDIAN, because  ARM64 selects OF.

Any suggestion ?


>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



-- 
Best regards,

Fu Wei
Software Engineer
Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch
Ph: +86 21 61221326(direct)
Ph: +86 186 2020 4684 (mobile)
Room 1512, Regus One Corporate Avenue,Level 15,
One Corporate Avenue,222 Hubin Road,Huangpu District,
Shanghai,China 200021

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-30 17:55   ` Fu Wei
@ 2016-03-31  7:52     ` Ard Biesheuvel
  0 siblings, 0 replies; 10+ messages in thread
From: Ard Biesheuvel @ 2016-03-31  7:52 UTC (permalink / raw)
  To: Fu Wei
  Cc: kbuild test robot, Mark Rutland, Linaro ACPI Mailman List,
	Catalin Marinas, Baicar, Tyler, Will Deacon, Richard Ruigrok,
	pavel, hpa@zytor.com, Lorenzo Pieralisi, Al Stone, Tomasz Nowicki,
	x86@kernel.org, Abdulhamid, Harb, linux-acpi@vger.kernel.org,
	mingo@redhat.com, Mark Salter, Grant Likely, Hanjun Guo,
	len.brown, linux-pm, Marc Zyngier, Jon Masters, Tomasz Nowicki,
	Robert Richter, Thomas Gleixner,
	linux-arm-kernel@lists.infradead.org, G Gregory, Rafael Wysocki,
	LKML, jarkko.nikula, kbuild-all, Jonathan Zhang

On 30 March 2016 at 19:55, Fu Wei <fu.wei@linaro.org> wrote:
> Hi Tomasz
>
> On 30 March 2016 at 14:50, kbuild test robot <lkp@intel.com> wrote:
>> Hi Tomasz,
>>
>> [auto build test WARNING on arm64/for-next/core]
>> [also build test WARNING on v4.6-rc1 next-20160330]
>> [if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
>>
>> url:    https://github.com/0day-ci/linux/commits/fu-wei-linaro-org/acpi-apei-arm64-APEI-initial-support-for-aarch64/20160329-154730
>> base:   https://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux for-next/core
>> config: arm64-allyesconfig (attached as .config)
>> reproduce:
>>         wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         # save the attached .config to linux build tree
>>         make.cross ARCH=arm64
>>
>> All warnings (new ones prefixed by >>):
>>
>> warning: (ACPI_APEI) selects EFI which has unmet direct dependencies (OF && !CPU_BIG_ENDIAN)
>
> I think it's caused by  CPU_BIG_ENDIAN, because  ARM64 selects OF.
>

No, as I pointed out, it is caused by the fact that you 'select' EFI
rather than 'depend on' it.

> Any suggestion ?
>

replace

select EFI if ARM64

with

depends on EFI || !ARM64

but it would be even better to make ACPI_APEI depend on ACPI, since
the above dependency will be implied then, although I am not sure how
that affects other architectures.

-- 
Ard.

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-03-30  7:05 ` Ard Biesheuvel
  2016-03-30 17:40   ` Fu Wei
@ 2016-04-04  8:32   ` Tomasz Nowicki
  2016-04-05 13:49     ` Fu Wei
  1 sibling, 1 reply; 10+ messages in thread
From: Tomasz Nowicki @ 2016-04-04  8:32 UTC (permalink / raw)
  To: Ard Biesheuvel, Fu Wei
  Cc: Rafael J. Wysocki, len.brown, pavel, Catalin Marinas, Will Deacon,
	tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, Mark Rutland,
	Linaro ACPI Mailman List, Baicar, Tyler, Richard Ruigrok,
	Lorenzo Pieralisi, Al Stone, x86@kernel.org, Abdulhamid, Harb,
	linux-acpi@vger.kernel.org, Mark Salter, Grant Likely, linux-pm,
	Marc Zyngier, Jon Masters, Tomasz Nowicki, Robert Richter,
	linux-arm-kernel@lists.infradead.org, G Gregory,
	linux-kernel@vger.kernel.org, jarkko.nikula, Hanjun Guo,
	jon.zhixiong.zhang

On 30.03.2016 09:05, Ard Biesheuvel wrote:
> On 29 March 2016 at 09:44,  <fu.wei@linaro.org> wrote:
>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>
>> This commit provides APEI arch-specific bits for aarch64
>>
>> Meanwhile,
>> (1)add a new subfunction "hest_ia32_init" for
>> "acpi_disable_cmcff" which is used by IA-32 Architecture
>> Corrected Machine Check (CMC).
>> (2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>> a generic place.
>> (3)select EFI when ACPI_APEI is set on ARM64,
>> because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.
>
> I think selecting 'EFI' is not the right approach here, especially
> since EFI is implied by ACPI on that architecture. But selecting a
> user configurable option like this is typically not recommended. Why
> doesn't ACPI_APEI depend on ACPI?

It does, ACPI_APEI is subsection of the main ACPI menu option, but I 
don't see that ACPI implies EFI in Kconfig.

Also, I agree with Ard, EFI should not be selected conditionally for 
ARM64 for ACPI_APEI.

We need EFI only for ARM64 so how about:
+       select HAVE_ACPI_APEI if (ACPI && EFI)
in arch/arm64/Kconfig and leave ACPI_APEI as is?

Regards,
Tomasz

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

* Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
  2016-04-04  8:32   ` Tomasz Nowicki
@ 2016-04-05 13:49     ` Fu Wei
  0 siblings, 0 replies; 10+ messages in thread
From: Fu Wei @ 2016-04-05 13:49 UTC (permalink / raw)
  To: Tomasz Nowicki
  Cc: Ard Biesheuvel, Rafael J. Wysocki, len.brown, pavel,
	Catalin Marinas, Will Deacon, tglx@linutronix.de,
	mingo@redhat.com, hpa@zytor.com, Mark Rutland,
	Linaro ACPI Mailman List, Baicar, Tyler, Richard Ruigrok,
	Lorenzo Pieralisi, Al Stone, x86@kernel.org, Abdulhamid, Harb,
	linux-acpi@vger.kernel.org, Mark Salter, Grant Likely, linux-pm,
	Marc Zyngier, Jon Masters, Tomasz Nowicki, Robert Richter,
	linux-arm-kernel@lists.infradead.org, G Gregory,
	linux-kernel@vger.kernel.org, jarkko.nikula, Hanjun Guo,
	Jonathan Zhang

Hi Tomasz,

On 4 April 2016 at 16:32, Tomasz Nowicki <tn@semihalf.com> wrote:
> On 30.03.2016 09:05, Ard Biesheuvel wrote:
>>
>> On 29 March 2016 at 09:44,  <fu.wei@linaro.org> wrote:
>>>
>>> From: Tomasz Nowicki <tomasz.nowicki@linaro.org>
>>>
>>> This commit provides APEI arch-specific bits for aarch64
>>>
>>> Meanwhile,
>>> (1)add a new subfunction "hest_ia32_init" for
>>> "acpi_disable_cmcff" which is used by IA-32 Architecture
>>> Corrected Machine Check (CMC).
>>> (2)move HEST type (ACPI_HEST_TYPE_IA32_CORRECTED_CHECK) checking to
>>> a generic place.
>>> (3)select EFI when ACPI_APEI is set on ARM64,
>>> because arch_apei_get_mem_attribute is using efi_mem_attributes on ARM64.
>>
>>
>> I think selecting 'EFI' is not the right approach here, especially
>> since EFI is implied by ACPI on that architecture. But selecting a
>> user configurable option like this is typically not recommended. Why
>> doesn't ACPI_APEI depend on ACPI?
>
>
> It does, ACPI_APEI is subsection of the main ACPI menu option, but I don't
> see that ACPI implies EFI in Kconfig.
>
> Also, I agree with Ard, EFI should not be selected conditionally for ARM64
> for ACPI_APEI.
>
> We need EFI only for ARM64 so how about:
> +       select HAVE_ACPI_APEI if (ACPI && EFI)
> in arch/arm64/Kconfig and leave ACPI_APEI as is?

I also agree with Ard, and I like "select HAVE_ACPI_APEI if (ACPI && EFI)"

Thanks for your suggestion !! :-)

>
> Regards,
> Tomasz
>
>



-- 
Best regards,

Fu Wei
Software Engineer
Red Hat Software (Beijing) Co.,Ltd.Shanghai Branch
Ph: +86 21 61221326(direct)
Ph: +86 186 2020 4684 (mobile)
Room 1512, Regus One Corporate Avenue,Level 15,
One Corporate Avenue,222 Hubin Road,Huangpu District,
Shanghai,China 200021

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

end of thread, other threads:[~2016-04-05 13:49 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-29  7:44 [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64 fu.wei
2016-03-29 16:35 ` Will Deacon
2016-03-30 17:41   ` Fu Wei
2016-03-30  6:50 ` kbuild test robot
2016-03-30 17:55   ` Fu Wei
2016-03-31  7:52     ` Ard Biesheuvel
2016-03-30  7:05 ` Ard Biesheuvel
2016-03-30 17:40   ` Fu Wei
2016-04-04  8:32   ` Tomasz Nowicki
2016-04-05 13:49     ` Fu Wei

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox