[PATCH] powerpc/xmon: check before calling xive functions

Benjamin Herrenschmidt benh at au1.ibm.com
Thu Oct 19 18:10:46 AEDT 2017


On Thu, 2017-10-19 at 00:02 +1100, Michael Ellerman wrote:
> Breno Leitao <leitao at debian.org> writes:
> 
> > Currently xmon could call XIVE functions from OPAL even if the XIVE is
> > disabled or does not exist in the system, as in POWER8 machines.  This
> > causes the following exception:
> > 
> >  1:mon> dx
> >  cpu 0x1: Vector: 700 (Program Check) at [c000000423c93450]
> >      pc: c00000000009cfa4: opal_xive_dump+0x50/0x68
> >      lr: c0000000000997b8: opal_return+0x0/0x50
> > 
> > This patch simply checks if XIVE is enabled before calling XIVE
> > functions.
> 
> Thanks. I'll merge this.
> 
> But we should also fix it in skiboot.

No that's wrong. xive_enabled() is only set if Linux is using native
xive mode but some of those xmon functions dump the emulated state.

We should fix the actual cause of the crash.

Cheers,
Ben.

> cheers
> 
> > Suggested-by: Guilherme G. Piccoli <gpiccoli at linux.vnet.ibm.com>
> > Signed-off-by: Breno Leitao <leitao at debian.org>
> > ---
> >  arch/powerpc/xmon/xmon.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
> > index 4679aeb84767..b34976c4a6ba 100644
> > --- a/arch/powerpc/xmon/xmon.c
> > +++ b/arch/powerpc/xmon/xmon.c
> > @@ -2508,6 +2508,12 @@ static void dump_xives(void)
> >  	unsigned long num;
> >  	int c;
> >  
> > +	if (!xive_enabled()) {
> > +		printf("Xive disabled on this system\n");
> > +
> > +		return;
> > +	}
> > +
> >  	c = inchar();
> >  	if (c == 'a') {
> >  		dump_all_xives();
> > -- 
> > 2.14.2



More information about the Linuxppc-dev mailing list