[PATCH v5 5/7] powerpc/pseries: flush SLB contents on SLB MCE errors.

Michael Ellerman mpe at ellerman.id.au
Thu Jul 19 23:08:02 AEST 2018


Michal Suchánek <msuchanek at suse.de> writes:
> On Tue, 3 Jul 2018 08:08:14 +1000
> "Nicholas Piggin" <npiggin at gmail.com> wrote: >> On Mon, 02 Jul 2018 11:17:06 +0530
>> Mahesh J Salgaonkar <mahesh at linux.vnet.ibm.com> wrote:
>> > From: Mahesh Salgaonkar <mahesh at linux.vnet.ibm.com>
>> > diff --git a/arch/powerpc/kernel/mce.c b/arch/powerpc/kernel/mce.c
>> > index efdd16a79075..221271c96a57 100644
>> > --- a/arch/powerpc/kernel/mce.c
>> > +++ b/arch/powerpc/kernel/mce.c
>> > @@ -488,9 +488,21 @@ long machine_check_early(struct pt_regs *regs)
>> >  {
>> >  	long handled = 0;
>> >  
>> > -	__this_cpu_inc(irq_stat.mce_exceptions);
>> > +	/*
>> > +	 * For pSeries we count mce when we go into virtual mode
>> > machine
>> > +	 * check handler. Hence skip it. Also, We can't access per
>> > cpu
>> > +	 * variables in real mode for LPAR.
>> > +	 */
>> > +	if (early_cpu_has_feature(CPU_FTR_HVMODE))
>> > +		__this_cpu_inc(irq_stat.mce_exceptions);
>> >  
>> > -	if (cur_cpu_spec && cur_cpu_spec->machine_check_early)
>> > +	/*
>> > +	 * See if platform is capable of handling machine check.
>> > +	 * Otherwise fallthrough and allow CPU to handle this
>> > machine check.
>> > +	 */
>> > +	if (ppc_md.machine_check_early)
>> > +		handled = ppc_md.machine_check_early(regs);
>> > +	else if (cur_cpu_spec && cur_cpu_spec->machine_check_early)
>> >  		handled =
>> > cur_cpu_spec->machine_check_early(regs);  
>> 
>> Would be good to add a powernv ppc_md handler which does the
>> cur_cpu_spec->machine_check_early() call now that other platforms are
>> calling this code. Because those aren't valid as a fallback call, but
>> specific to powernv.
>> 
>
> Something like this (untested)?
>
> Subject: [PATCH] powerpc/powernv: define platform MCE handler.

LGTM.

cheers


More information about the Linuxppc-dev mailing list