mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
memory_mapping: Improve qemu_get_guest_memory_mapping() error reporting
Pass any Error out into dump_init() and have it actually stop on errors. Whether it is unsupported on a certain CPU can be checked by looking for a NULL CPUClass::get_memory_mapping field. Reviewed-by: Luiz Capitulino <lcapitulino@redhat.com> [AF: Reverted changes to CPU loops] Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
1b3509ca5b
commit
11ed09cf07
7
dump.c
7
dump.c
@ -707,6 +707,7 @@ static int dump_init(DumpState *s, int fd, bool paging, bool has_filter,
|
||||
{
|
||||
CPUArchState *env;
|
||||
int nr_cpus;
|
||||
Error *err = NULL;
|
||||
int ret;
|
||||
|
||||
if (runstate_is_running()) {
|
||||
@ -757,7 +758,11 @@ static int dump_init(DumpState *s, int fd, bool paging, bool has_filter,
|
||||
/* get memory mapping */
|
||||
memory_mapping_list_init(&s->list);
|
||||
if (paging) {
|
||||
qemu_get_guest_memory_mapping(&s->list);
|
||||
qemu_get_guest_memory_mapping(&s->list, &err);
|
||||
if (err != NULL) {
|
||||
error_propagate(errp, err);
|
||||
goto cleanup;
|
||||
}
|
||||
} else {
|
||||
qemu_get_guest_simple_memory_mapping(&s->list);
|
||||
}
|
||||
|
@ -45,13 +45,7 @@ void memory_mapping_list_free(MemoryMappingList *list);
|
||||
|
||||
void memory_mapping_list_init(MemoryMappingList *list);
|
||||
|
||||
/*
|
||||
* Return value:
|
||||
* 0: success
|
||||
* -1: failed
|
||||
* -2: unsupported
|
||||
*/
|
||||
int qemu_get_guest_memory_mapping(MemoryMappingList *list);
|
||||
void qemu_get_guest_memory_mapping(MemoryMappingList *list, Error **errp);
|
||||
|
||||
/* get guest's memory mapping without do paging(virtual address is 0). */
|
||||
void qemu_get_guest_simple_memory_mapping(MemoryMappingList *list);
|
||||
|
@ -178,7 +178,7 @@ static CPUArchState *find_paging_enabled_cpu(CPUArchState *start_cpu)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int qemu_get_guest_memory_mapping(MemoryMappingList *list)
|
||||
void qemu_get_guest_memory_mapping(MemoryMappingList *list, Error **errp)
|
||||
{
|
||||
CPUArchState *env, *first_paging_enabled_cpu;
|
||||
RAMBlock *block;
|
||||
@ -190,11 +190,11 @@ int qemu_get_guest_memory_mapping(MemoryMappingList *list)
|
||||
Error *err = NULL;
|
||||
cpu_get_memory_mapping(ENV_GET_CPU(env), list, &err);
|
||||
if (err) {
|
||||
error_free(err);
|
||||
return -1;
|
||||
error_propagate(errp, err);
|
||||
return;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
return;
|
||||
}
|
||||
|
||||
/*
|
||||
@ -206,8 +206,6 @@ int qemu_get_guest_memory_mapping(MemoryMappingList *list)
|
||||
length = block->length;
|
||||
create_new_memory_mapping(list, offset, offset, length);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void qemu_get_guest_simple_memory_mapping(MemoryMappingList *list)
|
||||
|
Loading…
Reference in New Issue
Block a user