aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2010-02-17 18:05:26 +0100
committerMarkus Armbruster <armbru@redhat.com>2010-03-16 16:55:05 +0100
commit8ad00f84251c7aefca26461faccfbb557e1dba47 (patch)
tree456c0ecba3062d3a1cbd0a19d35b7550bb4a66b8
parent03cd4655cbbc304f355deffd3413f7e3cbbcbe5e (diff)
pc: Fix error reporting for -boot once
Commit 0ecdffbb created pc_boot_set() for use from monitor command "boot_set", via qemu_boot_set(). pc_boot_set() reports errors to cur_mon, which works fine for monitor code. Commit e0f084bf reused the function int reset handler restore_boot_devices(). Use of cur_mon is problematic in that context. For instance, the "Too many boot devices for PC" error for "-boot order=abcdefgh,once=c" goes to the monitor instead of stderr. The monitor may not even exist. Fix by switching to qemu_error().
-rw-r--r--hw/pc.c7
1 files changed, 3 insertions, 4 deletions
diff --git a/hw/pc.c b/hw/pc.c
index e50a48848d..0c190439be 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -234,7 +234,6 @@ static int boot_device2nibble(char boot_device)
and used there as well */
static int pc_boot_set(void *opaque, const char *boot_device)
{
- Monitor *mon = cur_mon;
#define PC_MAX_BOOT_DEVICES 3
RTCState *s = (RTCState *)opaque;
int nbds, bds[3] = { 0, };
@@ -242,14 +241,14 @@ static int pc_boot_set(void *opaque, const char *boot_device)
nbds = strlen(boot_device);
if (nbds > PC_MAX_BOOT_DEVICES) {
- monitor_printf(mon, "Too many boot devices for PC\n");
+ qemu_error("Too many boot devices for PC\n");
return(1);
}
for (i = 0; i < nbds; i++) {
bds[i] = boot_device2nibble(boot_device[i]);
if (bds[i] == 0) {
- monitor_printf(mon, "Invalid boot device for PC: '%c'\n",
- boot_device[i]);
+ qemu_error("Invalid boot device for PC: '%c'\n",
+ boot_device[i]);
return(1);
}
}