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