Message ID | 20240521013029.30082-3-npiggin@gmail.com |
---|---|
State | New |
Headers | show |
Series | target/ppc: Various TCG emulation patches | expand |
Reviewed-by: Glenn Miles <milesg@linux.ibm.com> Thanks, Glenn On Tue, 2024-05-21 at 11:30 +1000, Nicholas Piggin wrote: > Change the logging not to print to stderr as well, because a > checkstop is a guest error (or perhaps a simulated machine error) > rather than a QEMU error, so send it to the log. > > Update the checkstop message, and log CPU registers too. > > Signed-off-by: Nicholas Piggin <npiggin@gmail.com> > --- > target/ppc/excp_helper.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) > > diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c > index b2b51537b7..17bf8df9d7 100644 > --- a/target/ppc/excp_helper.c > +++ b/target/ppc/excp_helper.c > @@ -430,17 +430,19 @@ static void > powerpc_mcheck_checkstop(CPUPPCState *env) > /* KVM guests always have MSR[ME] enabled */ > #ifdef CONFIG_TCG > CPUState *cs = env_cpu(env); > + FILE *f; > > if (FIELD_EX64(env->msr, MSR, ME)) { > return; > } > > - /* Machine check exception is not enabled. Enter checkstop > state. */ > - fprintf(stderr, "Machine check while not allowed. " > - "Entering checkstop state\n"); > - if (qemu_log_separate()) { > - qemu_log("Machine check while not allowed. " > - "Entering checkstop state\n"); > + f = qemu_log_trylock(); > + if (f) { > + fprintf(f, "Entering checkstop state: " > + "machine check with MSR[ME]=0\n"); > + cpu_dump_state(cs, f, CPU_DUMP_FPU | CPU_DUMP_CCOP); > + qemu_log_unlock(f); > + } > > /* > * This stops the machine and logs CPU state without killing > QEMU
On 5/20/24 18:30, Nicholas Piggin wrote: > Change the logging not to print to stderr as well, because a > checkstop is a guest error (or perhaps a simulated machine error) > rather than a QEMU error, so send it to the log. > > Update the checkstop message, and log CPU registers too. > > Signed-off-by: Nicholas Piggin<npiggin@gmail.com> > --- > target/ppc/excp_helper.c | 14 ++++++++------ > 1 file changed, 8 insertions(+), 6 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/target/ppc/excp_helper.c b/target/ppc/excp_helper.c index b2b51537b7..17bf8df9d7 100644 --- a/target/ppc/excp_helper.c +++ b/target/ppc/excp_helper.c @@ -430,17 +430,19 @@ static void powerpc_mcheck_checkstop(CPUPPCState *env) /* KVM guests always have MSR[ME] enabled */ #ifdef CONFIG_TCG CPUState *cs = env_cpu(env); + FILE *f; if (FIELD_EX64(env->msr, MSR, ME)) { return; } - /* Machine check exception is not enabled. Enter checkstop state. */ - fprintf(stderr, "Machine check while not allowed. " - "Entering checkstop state\n"); - if (qemu_log_separate()) { - qemu_log("Machine check while not allowed. " - "Entering checkstop state\n"); + f = qemu_log_trylock(); + if (f) { + fprintf(f, "Entering checkstop state: " + "machine check with MSR[ME]=0\n"); + cpu_dump_state(cs, f, CPU_DUMP_FPU | CPU_DUMP_CCOP); + qemu_log_unlock(f); + } /* * This stops the machine and logs CPU state without killing QEMU
Change the logging not to print to stderr as well, because a checkstop is a guest error (or perhaps a simulated machine error) rather than a QEMU error, so send it to the log. Update the checkstop message, and log CPU registers too. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> --- target/ppc/excp_helper.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-)