* [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 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-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-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-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-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