aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnthony Liguori <aliguori@amazon.com>2013-11-05 08:29:56 -0800
committerAnthony Liguori <aliguori@amazon.com>2013-11-05 08:29:56 -0800
commitf772a83113a9b692b94dc48b4f282224a2c6ccf2 (patch)
treec68210ff65af3469dc990d7e1c8a154fc17edd9d
parent0d6e9a23ae6a839f4fa6e3e2816367e0ffa09869 (diff)
parentdf39076850958b842ac9e414dc3ab2895f1877bf (diff)
Merge remote-tracking branch 'mst/tags/for_anthony' into staging
pci, pc, pvpanic bug fixes This fixes strange pvpanic behaviour: you had to pause to let VM continue (and potentially reboot on panic if enabled). This also fixes two bugs reported by Andreas. One is a long-standing bug exposed by recent pci changes, the other affects old piix machine types and was caused by recent acpi changes. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> # gpg: Signature made Mon 04 Nov 2013 05:42:46 AM PST using RSA key ID D28D5469 # gpg: Can't check signature: public key not found # By Michael S. Tsirkin (2) and Paolo Bonzini (1) # Via Michael S. Tsirkin * mst/tags/for_anthony: vl: allow "cont" from panicked state exec: limit system memory size pc: disable acpi info for isapc and old pc machine Message-id: 1383572851-28326-1-git-send-email-mst@redhat.com Signed-off-by: Anthony Liguori <aliguori@amazon.com>
-rw-r--r--exec.c7
-rw-r--r--gdbstub.c3
-rw-r--r--hw/i386/pc_piix.c2
-rw-r--r--vl.c6
4 files changed, 10 insertions, 8 deletions
diff --git a/exec.c b/exec.c
index b453713bdb..79610ce37a 100644
--- a/exec.c
+++ b/exec.c
@@ -1741,7 +1741,12 @@ void address_space_destroy_dispatch(AddressSpace *as)
static void memory_map_init(void)
{
system_memory = g_malloc(sizeof(*system_memory));
- memory_region_init(system_memory, NULL, "system", INT64_MAX);
+
+ assert(TARGET_PHYS_ADDR_SPACE_BITS <= 64);
+
+ memory_region_init(system_memory, NULL, "system",
+ TARGET_PHYS_ADDR_SPACE_BITS == 64 ?
+ UINT64_MAX : (0x1ULL << TARGET_PHYS_ADDR_SPACE_BITS));
address_space_init(&address_space_memory, system_memory, "memory");
system_io = g_malloc(sizeof(*system_io));
diff --git a/gdbstub.c b/gdbstub.c
index 0e5a3f5bf9..e8ab0b2992 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -368,9 +368,6 @@ static inline void gdb_continue(GDBState *s)
#ifdef CONFIG_USER_ONLY
s->running_state = 1;
#else
- if (runstate_check(RUN_STATE_GUEST_PANICKED)) {
- runstate_set(RUN_STATE_DEBUG);
- }
if (!runstate_needs_reset()) {
vm_start();
}
diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
index 24a98cbee7..4fdb7b62c5 100644
--- a/hw/i386/pc_piix.c
+++ b/hw/i386/pc_piix.c
@@ -309,6 +309,7 @@ static void pc_init_pci_1_2(QEMUMachineInitArgs *args)
static void pc_init_pci_no_kvmclock(QEMUMachineInitArgs *args)
{
has_pci_info = false;
+ has_acpi_build = false;
disable_kvm_pv_eoi();
enable_compat_apic_id_mode();
pc_init1(args, 1, 0);
@@ -317,6 +318,7 @@ static void pc_init_pci_no_kvmclock(QEMUMachineInitArgs *args)
static void pc_init_isa(QEMUMachineInitArgs *args)
{
has_pci_info = false;
+ has_acpi_build = false;
if (!args->cpu_model) {
args->cpu_model = "486";
}
diff --git a/vl.c b/vl.c
index efbff6512a..4ad15b808c 100644
--- a/vl.c
+++ b/vl.c
@@ -638,9 +638,8 @@ static const RunStateTransition runstate_transitions_def[] = {
{ RUN_STATE_WATCHDOG, RUN_STATE_RUNNING },
{ RUN_STATE_WATCHDOG, RUN_STATE_FINISH_MIGRATE },
- { RUN_STATE_GUEST_PANICKED, RUN_STATE_PAUSED },
+ { RUN_STATE_GUEST_PANICKED, RUN_STATE_RUNNING },
{ RUN_STATE_GUEST_PANICKED, RUN_STATE_FINISH_MIGRATE },
- { RUN_STATE_GUEST_PANICKED, RUN_STATE_DEBUG },
{ RUN_STATE_MAX, RUN_STATE_MAX },
};
@@ -686,8 +685,7 @@ int runstate_is_running(void)
bool runstate_needs_reset(void)
{
return runstate_check(RUN_STATE_INTERNAL_ERROR) ||
- runstate_check(RUN_STATE_SHUTDOWN) ||
- runstate_check(RUN_STATE_GUEST_PANICKED);
+ runstate_check(RUN_STATE_SHUTDOWN);
}
StatusInfo *qmp_query_status(Error **errp)