Message ID | 1508264418-13448-1-git-send-email-leitao@debian.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 402e172a2ce76210f2fe921cf419d12103851344 |
Headers | show |
Series | powerpc/xmon: check before calling xive functions | expand |
Breno Leitao <leitao@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. cheers > Suggested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com> > Signed-off-by: Breno Leitao <leitao@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
On Thu, 2017-10-19 at 00:02 +1100, Michael Ellerman wrote: > Breno Leitao <leitao@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@linux.vnet.ibm.com> > > Signed-off-by: Breno Leitao <leitao@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
On 10/19/2017 09:10 AM, Benjamin Herrenschmidt wrote: > On Thu, 2017-10-19 at 00:02 +1100, Michael Ellerman wrote: >> Breno Leitao <leitao@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. which should be in the OPAL XIVE dump routines then ? Cheers C. > > Cheers, > Ben. > >> cheers >> >>> Suggested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com> >>> Signed-off-by: Breno Leitao <leitao@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 >
On Thu, 2017-10-19 at 15:09 +0200, Cédric Le Goater wrote: > > 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. > > which should be in the OPAL XIVE dump routines then ? Yup, probably needs a NULL check or something... Cheers, Ben.
On Tue, 2017-10-17 at 18:20:18 UTC, Breno Leitao wrote: > 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. > > Suggested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com> > Signed-off-by: Breno Leitao <leitao@debian.org> Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/402e172a2ce76210f2fe921cf419d1 cheers
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();
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. Suggested-by: Guilherme G. Piccoli <gpiccoli@linux.vnet.ibm.com> Signed-off-by: Breno Leitao <leitao@debian.org> --- arch/powerpc/xmon/xmon.c | 6 ++++++ 1 file changed, 6 insertions(+)