LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Dongjiu Geng <gengdongjiu@huawei.com> To: <james.morse@arm.com>, <catalin.marinas@arm.com>, <will.deacon@arm.com>, <christoffer.dall@linaro.org>, <marc.zyngier@arm.com>, <linux-kernel@vger.kernel.org>, <linux-arm-kernel@lists.infradead.org>, <kvmarm@lists.cs.columbia.edu> Cc: <gengdongjiu@huawei.com>, <huangshaoyu@huawei.com> Subject: [PATCH] arm64: rename the function arm64_is_ras_serror() to avoid confusion Date: Fri, 23 Feb 2018 02:02:32 +0800 [thread overview] Message-ID: <1519322552-7374-1-git-send-email-gengdongjiu@huawei.com> (raw) The RAS SError Syndrome can be Implementation-Defined, arm64_is_ras_serror() is used to judge whether it is RAS SError, but arm64_is_ras_serror() does not include this judgement. In order to avoid function name confusion, we rename the arm64_is_ras_serror() to arm64_is_categorized_ras_serror(), this function is used to judge whether it is categorized RAS Serror. Change some code notes, unrecoverable RAS errors is imprecise, but Recoverable RAS errors is precise. Signed-off-by: Dongjiu Geng <gengdongjiu@huawei.com> --- arch/arm64/include/asm/traps.h | 20 ++++++++------------ arch/arm64/kernel/traps.c | 9 +++++---- arch/arm64/kvm/handle_exit.c | 3 ++- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/arch/arm64/include/asm/traps.h b/arch/arm64/include/asm/traps.h index 178e338..2a02b64 100644 --- a/arch/arm64/include/asm/traps.h +++ b/arch/arm64/include/asm/traps.h @@ -72,18 +72,23 @@ static inline int in_entry_text(unsigned long ptr) * CPUs with the RAS extensions have an Implementation-Defined-Syndrome bit * to indicate whether this ESR has a RAS encoding. CPUs without this feature * have a ISS-Valid bit in the same position. - * If this bit is set, we know its not a RAS SError. + * If this bit is set, we know it is not a categorized RAS SError. * If its clear, we need to know if the CPU supports RAS. Uncategorized RAS * errors share the same encoding as an all-zeros encoding from a CPU that * doesn't support RAS. */ -static inline bool arm64_is_ras_serror(u32 esr) +static inline bool arm64_is_categorized_ras_serror(u32 esr) { WARN_ON(preemptible()); + /* This is Implementation-Defined Syndrome */ if (esr & ESR_ELx_IDS) return false; + if ((esr & ESR_ELx_FSC) != ESR_ELx_FSC_SERROR) + /* No severity information : Uncategorized */ + return false; + if (this_cpu_has_cap(ARM64_HAS_RAS_EXTN)) return true; else @@ -101,20 +106,11 @@ static inline u32 arm64_ras_serror_get_severity(u32 esr) { u32 aet = esr & ESR_ELx_AET; - if (!arm64_is_ras_serror(esr)) { + if (!arm64_is_categorized_ras_serror(esr)) { /* Not a RAS error, we can't interpret the ESR. */ return ESR_ELx_AET_UC; } - /* - * AET is RES0 if 'the value returned in the DFSC field is not - * [ESR_ELx_FSC_SERROR]' - */ - if ((esr & ESR_ELx_FSC) != ESR_ELx_FSC_SERROR) { - /* No severity information : Uncategorized */ - return ESR_ELx_AET_UC; - } - return aet; } diff --git a/arch/arm64/kernel/traps.c b/arch/arm64/kernel/traps.c index bbb0fde..e88096a 100644 --- a/arch/arm64/kernel/traps.c +++ b/arch/arm64/kernel/traps.c @@ -689,12 +689,12 @@ bool arm64_is_fatal_ras_serror(struct pt_regs *regs, unsigned int esr) * a more severe error. */ return false; - + /* The exception has been imprecise */ case ESR_ELx_AET_UEU: /* Uncorrected Unrecoverable */ + /* The exception is precise */ case ESR_ELx_AET_UER: /* Uncorrected Recoverable */ /* - * The CPU can't make progress. The exception may have - * been imprecise. + * The CPU can't make progress. */ return true; @@ -710,7 +710,8 @@ asmlinkage void do_serror(struct pt_regs *regs, unsigned int esr) nmi_enter(); /* non-RAS errors are not containable */ - if (!arm64_is_ras_serror(esr) || arm64_is_fatal_ras_serror(regs, esr)) + if (!arm64_is_categorized_ras_serror(esr) || + arm64_is_fatal_ras_serror(regs, esr)) arm64_serror_panic(regs, esr); nmi_exit(); diff --git a/arch/arm64/kvm/handle_exit.c b/arch/arm64/kvm/handle_exit.c index e5e741b..913c19e 100644 --- a/arch/arm64/kvm/handle_exit.c +++ b/arch/arm64/kvm/handle_exit.c @@ -40,7 +40,8 @@ static void kvm_handle_guest_serror(struct kvm_vcpu *vcpu, u32 esr) { - if (!arm64_is_ras_serror(esr) || arm64_is_fatal_ras_serror(NULL, esr)) + if (!arm64_is_categorized_ras_serror(esr) || + arm64_is_fatal_ras_serror(NULL, esr)) kvm_inject_vabt(vcpu); } -- 1.9.1
next reply other threads:[~2018-02-22 9:56 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2018-02-22 18:02 Dongjiu Geng [this message] 2018-02-23 17:58 ` [PATCH] arm64: rename the function arm64_is_ras_serror() to avoid confusion James Morse 2018-02-26 16:13 ` gengdongjiu 2018-03-15 19:52 ` James Morse 2018-03-18 5:00 gengdongjiu
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=1519322552-7374-1-git-send-email-gengdongjiu@huawei.com \ --to=gengdongjiu@huawei.com \ --cc=catalin.marinas@arm.com \ --cc=christoffer.dall@linaro.org \ --cc=huangshaoyu@huawei.com \ --cc=james.morse@arm.com \ --cc=kvmarm@lists.cs.columbia.edu \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=marc.zyngier@arm.com \ --cc=will.deacon@arm.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).