[PATCH v3 3/3] powernv/kdump: Fix cases where the kdump kernel can get HMI's
Nicholas Piggin
npiggin at gmail.com
Fri Dec 15 15:47:33 AEDT 2017
On Fri, 15 Dec 2017 14:34:03 +1100
Balbir Singh <bsingharora at gmail.com> wrote:
> On Fri, Dec 15, 2017 at 2:10 PM, Nicholas Piggin <npiggin at gmail.com> wrote:
> > On Fri, 15 Dec 2017 12:27:40 +1100
> > Balbir Singh <bsingharora at gmail.com> wrote:
> > But then you still need an explicit kdump check for non-sreset wakeups
> > because the platform may not implement sreset, or it may fall back to
> > normal IPI if the sreset scom fails. So you then still need your
> >
> > if (kdump) crash_ipi_callback
>
> Yep, its required for the the non NMI case.
>
>
> How does this look -- based on your comment
>
> + } else if ((srr1 & wmask) == SRR1_WAKESRESET) {
> + irq_set_pending_from_srr1(srr1);
> + /* Does not return */
> }
> +
> smp_mb();
>
> /*
> * For kdump kernels, we process the ipi and jump to
> - * handling the system reset exception.
> + * crash_ipi_callback
> */
> - if (kdump_in_progress())
> - irq_set_pending_from_srr1(srr1);
> + if (kdump_in_progress()) {
> + /*
> + * If we got to this point, we've not used
> + * NMI's, otherwise we would have gone
> + * via the SRR1_WAKESRESET path. We are
> + * using regular IPI's for waking up offline
> + * threads.
> + */
> + struct pt_regs regs;
> +
> + ppc_save_regs(®s);
> + crash_ipi_callback(regs);
> + /* Does not return */
> + }
That looks like it should do the trick.
Thanks,
Nick
More information about the Linuxppc-dev
mailing list