Re: [PATCH 3/5] ppc/spapr: Add FWNMI machine check delivery warnings
Greg Kurz's on March 17, 2020 10:20 pm: > On Tue, 17 Mar 2020 15:02:13 +1000 > Nicholas Piggin wrote: > >> Add some messages which explain problems and guest misbehaviour that >> may be difficult to diagnose in rare cases of machine checks. >> >> Signed-off-by: Nicholas Piggin >> --- >> hw/ppc/spapr_events.c | 4 >> hw/ppc/spapr_rtas.c | 4 >> 2 files changed, 8 insertions(+) >> >> diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c >> index 05337f0671..d35151eeb0 100644 >> --- a/hw/ppc/spapr_events.c >> +++ b/hw/ppc/spapr_events.c >> @@ -807,6 +807,8 @@ static void spapr_mce_dispatch_elog(PowerPCCPU *cpu, >> bool recovered) >> /* get rtas addr from fdt */ >> rtas_addr = spapr_get_rtas_addr(); >> if (!rtas_addr) { >> +warn_report("FWNMI: Unable to deliver machine check to guest: " >> +"rtas_addr not found."); > > Why a warning and not an error ? > > Also maybe change the string to fit on one line ? Not sure, I guess it should be. Thanks, Nick
Re: [PATCH 3/5] ppc/spapr: Add FWNMI machine check delivery warnings
On Tue, 17 Mar 2020 15:02:13 +1000 Nicholas Piggin wrote: > Add some messages which explain problems and guest misbehaviour that > may be difficult to diagnose in rare cases of machine checks. > > Signed-off-by: Nicholas Piggin > --- > hw/ppc/spapr_events.c | 4 > hw/ppc/spapr_rtas.c | 4 > 2 files changed, 8 insertions(+) > > diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c > index 05337f0671..d35151eeb0 100644 > --- a/hw/ppc/spapr_events.c > +++ b/hw/ppc/spapr_events.c > @@ -807,6 +807,8 @@ static void spapr_mce_dispatch_elog(PowerPCCPU *cpu, bool > recovered) > /* get rtas addr from fdt */ > rtas_addr = spapr_get_rtas_addr(); > if (!rtas_addr) { > +warn_report("FWNMI: Unable to deliver machine check to guest: " > +"rtas_addr not found."); Why a warning and not an error ? Also maybe change the string to fit on one line ? > qemu_system_guest_panicked(NULL); > g_free(ext_elog); > return; > @@ -848,6 +850,8 @@ void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered) > * that CPU called "ibm,nmi-interlock") > */ > if (spapr->fwnmi_machine_check_interlock == cpu->vcpu_id) { > +warn_report("FWNMI: Unable to deliver machine check to guest: " > +"nested machine check."); Ditto. > qemu_system_guest_panicked(NULL); > return; > } > diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c > index 29abe66d01..12cd09701c 100644 > --- a/hw/ppc/spapr_rtas.c > +++ b/hw/ppc/spapr_rtas.c > @@ -462,6 +462,10 @@ static void rtas_ibm_nmi_interlock(PowerPCCPU *cpu, > } > > if (spapr->fwnmi_machine_check_addr == -1) { > +qemu_log_mask(LOG_GUEST_ERROR, > + "FWNMI: ibm,nmi-interlock RTAS called with FWNMI not " > + "registered.\n"); whitespace damage here ^ best fixed by making the message a one liner. > + > /* NMI register not called */ > rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); > return;
[PATCH 3/5] ppc/spapr: Add FWNMI machine check delivery warnings
Add some messages which explain problems and guest misbehaviour that may be difficult to diagnose in rare cases of machine checks. Signed-off-by: Nicholas Piggin --- hw/ppc/spapr_events.c | 4 hw/ppc/spapr_rtas.c | 4 2 files changed, 8 insertions(+) diff --git a/hw/ppc/spapr_events.c b/hw/ppc/spapr_events.c index 05337f0671..d35151eeb0 100644 --- a/hw/ppc/spapr_events.c +++ b/hw/ppc/spapr_events.c @@ -807,6 +807,8 @@ static void spapr_mce_dispatch_elog(PowerPCCPU *cpu, bool recovered) /* get rtas addr from fdt */ rtas_addr = spapr_get_rtas_addr(); if (!rtas_addr) { +warn_report("FWNMI: Unable to deliver machine check to guest: " +"rtas_addr not found."); qemu_system_guest_panicked(NULL); g_free(ext_elog); return; @@ -848,6 +850,8 @@ void spapr_mce_req_event(PowerPCCPU *cpu, bool recovered) * that CPU called "ibm,nmi-interlock") */ if (spapr->fwnmi_machine_check_interlock == cpu->vcpu_id) { +warn_report("FWNMI: Unable to deliver machine check to guest: " +"nested machine check."); qemu_system_guest_panicked(NULL); return; } diff --git a/hw/ppc/spapr_rtas.c b/hw/ppc/spapr_rtas.c index 29abe66d01..12cd09701c 100644 --- a/hw/ppc/spapr_rtas.c +++ b/hw/ppc/spapr_rtas.c @@ -462,6 +462,10 @@ static void rtas_ibm_nmi_interlock(PowerPCCPU *cpu, } if (spapr->fwnmi_machine_check_addr == -1) { +qemu_log_mask(LOG_GUEST_ERROR, + "FWNMI: ibm,nmi-interlock RTAS called with FWNMI not " + "registered.\n"); + /* NMI register not called */ rtas_st(rets, 0, RTAS_OUT_PARAM_ERROR); return; -- 2.23.0