From: Mahesh Jagannath Salgaonkar <mahesh@linux.vnet.ibm.com>
To: Santosh Sivaraj <santosh@fossix.org>,
linuxppc-dev <linuxppc-dev@lists.ozlabs.org>
Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com>,
Mahesh Salgaonkar <mahesh@linux.ibm.com>,
Nicholas Piggin <npiggin@gmail.com>,
Chandan Rajendra <chandan@linux.vnet.ibm.com>,
Reza Arbab <arbab@linux.ibm.com>
Subject: Re: [PATCH 05/13] powerpc/mce: Allow notifier callback to handle MCE
Date: Fri, 21 Jun 2019 12:35:08 +0530 [thread overview]
Message-ID: <d0a93aa6-be25-f0ed-21f5-f2929139a414@linux.vnet.ibm.com> (raw)
In-Reply-To: <196df6a74f259c041a4269e6cba026a1248ed4af.1561020760.git.santosh@fossix.org>
On 6/21/19 6:27 AM, Santosh Sivaraj wrote:
> From: Reza Arbab <arbab@linux.ibm.com>
>
> If a notifier returns NOTIFY_STOP, consider the MCE handled, just as we
> do when machine_check_early() returns 1.
>
> Signed-off-by: Reza Arbab <arbab@linux.ibm.com>
> ---
> arch/powerpc/include/asm/asm-prototypes.h | 2 +-
> arch/powerpc/kernel/exceptions-64s.S | 3 +++
> arch/powerpc/kernel/mce.c | 28 ++++++++++++++++-------
> 3 files changed, 24 insertions(+), 9 deletions(-)
>
> diff --git a/arch/powerpc/include/asm/asm-prototypes.h b/arch/powerpc/include/asm/asm-prototypes.h
> index f66f26ef3ce0..49ee8f08de2a 100644
> --- a/arch/powerpc/include/asm/asm-prototypes.h
> +++ b/arch/powerpc/include/asm/asm-prototypes.h
> @@ -72,7 +72,7 @@ void machine_check_exception(struct pt_regs *regs);
> void emulation_assist_interrupt(struct pt_regs *regs);
> long do_slb_fault(struct pt_regs *regs, unsigned long ea);
> void do_bad_slb_fault(struct pt_regs *regs, unsigned long ea, long err);
> -void machine_check_notify(struct pt_regs *regs);
> +long machine_check_notify(struct pt_regs *regs);
>
> /* signals, syscalls and interrupts */
> long sys_swapcontext(struct ucontext __user *old_ctx,
> diff --git a/arch/powerpc/kernel/exceptions-64s.S b/arch/powerpc/kernel/exceptions-64s.S
> index 2e56014fca21..c83e38a403fd 100644
> --- a/arch/powerpc/kernel/exceptions-64s.S
> +++ b/arch/powerpc/kernel/exceptions-64s.S
> @@ -460,6 +460,9 @@ EXC_COMMON_BEGIN(machine_check_handle_early)
>
> addi r3,r1,STACK_FRAME_OVERHEAD
> bl machine_check_notify
> + ld r11,RESULT(r1)
> + or r3,r3,r11
> + std r3,RESULT(r1)
>
> ld r12,_MSR(r1)
> BEGIN_FTR_SECTION
> diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c
> index 0ab171b41ede..912efe58e0b1 100644
> --- a/arch/powerpc/kernel/mce.c
> +++ b/arch/powerpc/kernel/mce.c
> @@ -647,16 +647,28 @@ long hmi_exception_realmode(struct pt_regs *regs)
> return 1;
> }
>
> -void machine_check_notify(struct pt_regs *regs)
> +long machine_check_notify(struct pt_regs *regs)
> {
> - struct machine_check_event evt;
> + int index = __this_cpu_read(mce_nest_count) - 1;
> + struct machine_check_event *evt;
> + int rc;
>
> - if (!get_mce_event(&evt, MCE_EVENT_DONTRELEASE))
> - return;
> + if (index < 0 || index >= MAX_MC_EVT)
> + return 0;
> +
> + evt = this_cpu_ptr(&mce_event[index]);
>
> - blocking_notifier_call_chain(&mce_notifier_list, 0, &evt);
> + rc = blocking_notifier_call_chain(&mce_notifier_list, 0, evt);
> + if (rc & NOTIFY_STOP_MASK) {
> + evt->disposition = MCE_DISPOSITION_RECOVERED;
> + regs->msr |= MSR_RI;
What is the reason for setting MSR_RI ? I don't think this is a good
idea. MSR_RI = 0 means system got MCE interrupt when SRR0 and SRR1
contents were live and was overwritten by MCE interrupt. Hence this
interrupt is unrecoverable irrespective of whether machine check handler
recovers from it or not.
Thanks,
-Mahesh.
next prev parent reply other threads:[~2019-06-21 7:08 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-21 4:55 [PATCH 00/13] powerpc: implement machine check safe memcpy Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 01/13] powerpc/mce: Make machine_check_ue_event() static Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 02/13] powerpc/mce: Bug fixes for MCE handling in kernel space Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 03/13] powerpc/mce: Add MCE notification chain Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 04/13] powerpc/mce: Move machine_check_ue_event() call Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 05/13] powerpc/mce: Allow notifier callback to handle MCE Santosh Sivaraj
2019-06-21 7:05 ` Mahesh Jagannath Salgaonkar [this message]
2019-06-23 2:14 ` Reza Arbab
2019-06-24 5:19 ` Mahesh Jagannath Salgaonkar
2019-06-21 4:55 ` [PATCH 06/13] powerpc/mce: Do not process notifier-handled UE events Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 07/13] powerpc/mce: Add fixup address to " Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 08/13] powerpc/memcpy: Add memcpy_mcsafe for pmem Santosh Sivaraj
2019-06-29 8:55 ` christophe leroy
2019-06-21 4:55 ` [PATCH 09/13] powerpc/mce: Handle memcpy_mcsafe() Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 10/13] powerpc/mce: Enable MCE notifiers in external modules Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 11/13] powerpc/64s: Save r13 in machine_check_common_early Santosh Sivaraj
2019-06-21 11:47 ` Mahesh J Salgaonkar
2019-06-21 23:21 ` Nicholas Piggin
2019-06-23 2:33 ` Reza Arbab
2019-06-21 4:55 ` [PATCH 12/13] powerpc/memcpy_mcsafe: return remaining bytes Santosh Sivaraj
2019-06-21 4:55 ` [PATCH 13/13] powerpc: add machine check safe copy_to_user Santosh Sivaraj
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=d0a93aa6-be25-f0ed-21f5-f2929139a414@linux.vnet.ibm.com \
--to=mahesh@linux.vnet.ibm.com \
--cc=aneesh.kumar@linux.ibm.com \
--cc=arbab@linux.ibm.com \
--cc=chandan@linux.vnet.ibm.com \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=mahesh@linux.ibm.com \
--cc=npiggin@gmail.com \
--cc=santosh@fossix.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 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).