Skip to content

Commit

Permalink
hw/misc/sifive_test.c: replace exit calls with proper shutdown
Browse files Browse the repository at this point in the history
This replaces the exit calls by shutdown requests, ensuring a proper
cleanup of Qemu. Otherwise, some connections like gdb could be broken
before its final packet ("Wxx") is being sent. This part, being done
inside qemu_cleanup function, can be reached only when the main loop
exits after a shutdown request.

Signed-off-by: Clément Chigot <chigot@adacore.com>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Message-ID: <20231003071427.188697-4-chigot@adacore.com>
Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
  • Loading branch information
Helflym authored and alistair23 committed Oct 12, 2023
1 parent 66bbe3e commit 215128e
Showing 1 changed file with 7 additions and 2 deletions.
9 changes: 7 additions & 2 deletions hw/misc/sifive_test.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
#include "qemu/module.h"
#include "sysemu/runstate.h"
#include "hw/misc/sifive_test.h"
#include "sysemu/sysemu.h"

static uint64_t sifive_test_read(void *opaque, hwaddr addr, unsigned int size)
{
Expand All @@ -39,9 +40,13 @@ static void sifive_test_write(void *opaque, hwaddr addr,
int code = (val64 >> 16) & 0xffff;
switch (status) {
case FINISHER_FAIL:
exit(code);
qemu_system_shutdown_request_with_code(
SHUTDOWN_CAUSE_GUEST_PANIC, code);
return;
case FINISHER_PASS:
exit(0);
qemu_system_shutdown_request_with_code(
SHUTDOWN_CAUSE_GUEST_SHUTDOWN, code);
return;
case FINISHER_RESET:
qemu_system_reset_request(SHUTDOWN_CAUSE_GUEST_RESET);
return;
Expand Down

0 comments on commit 215128e

Please sign in to comment.