From: Will Deacon <will.deacon@arm.com>
To: fu.wei@linaro.org
Cc: tn@semihalf.com, rjw@rjwysocki.net, len.brown@intel.com,
pavel@ucw.cz, catalin.marinas@arm.com, tglx@linutronix.de,
mingo@redhat.com, hpa@zytor.com, linux-kernel@vger.kernel.org,
linux-acpi@vger.kernel.org, x86@kernel.org,
linaro-acpi@lists.linaro.org,
linux-arm-kernel@lists.infradead.org, linux-pm@vger.kernel.org,
graeme.gregory@linaro.org, al.stone@linaro.org,
hanjun.guo@linaro.org, mark.rutland@arm.com,
Marc.Zyngier@arm.com, lorenzo.pieralisi@arm.com,
rruigrok@codeaurora.org, harba@qti.qualcomm.com,
tbaicar@codeaurora.org, jcm@redhat.com, msalter@redhat.com,
grant.likely@linaro.org, rrichter@cavium.com,
jarkko.nikula@linux.intel.com, jon.zhixiong.zhang@gmail.com,
Tomasz Nowicki <tomasz.nowicki@linaro.org>
Subject: Re: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
Date: Tue, 29 Mar 2016 17:35:00 +0100 [thread overview]
Message-ID: <20160329163500.GI6745@arm.com> (raw)
In-Reply-To: <1459237458-12352-1-git-send-email-fu.wei@linaro.org>
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
WARNING: multiple messages have this Message-ID (diff)
From: will.deacon@arm.com (Will Deacon)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64.
Date: Tue, 29 Mar 2016 17:35:00 +0100 [thread overview]
Message-ID: <20160329163500.GI6745@arm.com> (raw)
In-Reply-To: <1459237458-12352-1-git-send-email-fu.wei@linaro.org>
On Tue, Mar 29, 2016 at 03:44:18PM +0800, fu.wei at 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
next prev parent reply other threads:[~2016-03-29 16:34 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-29 7:44 [PATCH v8] acpi, apei, arm64: APEI initial support for aarch64 fu.wei
2016-03-29 7:44 ` fu.wei at linaro.org
2016-03-29 16:35 ` Will Deacon [this message]
2016-03-29 16:35 ` Will Deacon
2016-03-30 17:41 ` Fu Wei
2016-03-30 17:41 ` Fu Wei
2016-03-30 17:41 ` Fu Wei
2016-03-30 6:50 ` kbuild test robot
2016-03-30 6:50 ` kbuild test robot
2016-03-30 6:50 ` kbuild test robot
2016-03-30 17:55 ` Fu Wei
2016-03-30 17:55 ` Fu Wei
2016-03-30 17:55 ` Fu Wei
2016-03-31 7:52 ` Ard Biesheuvel
2016-03-31 7:52 ` Ard Biesheuvel
2016-03-31 7:52 ` Ard Biesheuvel
2016-03-30 7:05 ` Ard Biesheuvel
2016-03-30 7:05 ` Ard Biesheuvel
2016-03-30 7:05 ` Ard Biesheuvel
2016-03-30 17:40 ` Fu Wei
2016-03-30 17:40 ` Fu Wei
2016-03-30 17:40 ` Fu Wei
2016-04-04 8:32 ` Tomasz Nowicki
2016-04-04 8:32 ` Tomasz Nowicki
2016-04-04 8:32 ` Tomasz Nowicki
2016-04-05 13:49 ` Fu Wei
2016-04-05 13:49 ` Fu Wei
2016-04-05 13:49 ` Fu Wei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160329163500.GI6745@arm.com \
--to=will.deacon@arm.com \
--cc=Marc.Zyngier@arm.com \
--cc=al.stone@linaro.org \
--cc=catalin.marinas@arm.com \
--cc=fu.wei@linaro.org \
--cc=graeme.gregory@linaro.org \
--cc=grant.likely@linaro.org \
--cc=hanjun.guo@linaro.org \
--cc=harba@qti.qualcomm.com \
--cc=hpa@zytor.com \
--cc=jarkko.nikula@linux.intel.com \
--cc=jcm@redhat.com \
--cc=jon.zhixiong.zhang@gmail.com \
--cc=len.brown@intel.com \
--cc=linaro-acpi@lists.linaro.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=lorenzo.pieralisi@arm.com \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=msalter@redhat.com \
--cc=pavel@ucw.cz \
--cc=rjw@rjwysocki.net \
--cc=rrichter@cavium.com \
--cc=rruigrok@codeaurora.org \
--cc=tbaicar@codeaurora.org \
--cc=tglx@linutronix.de \
--cc=tn@semihalf.com \
--cc=tomasz.nowicki@linaro.org \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.