diff --git a/backends/hostmem-file.c b/backends/hostmem-file.c index cd038024fae3c056cc2f01e4654c2e962bb0336c..6be6d405417f9cdeda8aa09bab22e5410946241b 100644 --- a/backends/hostmem-file.c +++ b/backends/hostmem-file.c @@ -43,7 +43,6 @@ file_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) gchar *name; if (!backend->size) { - error_setg(errp, "can't create backend with size 0"); return; } if (!fb->mem_path) { diff --git a/backends/hostmem.c b/backends/hostmem.c index c9ddaec849b459b68c458fd014c90483b8dd405b..ae35274620e1a6f9297e69bfd1c3d4510306e5db 100644 --- a/backends/hostmem.c +++ b/backends/hostmem.c @@ -64,12 +64,6 @@ host_memory_backend_set_size(Object *obj, Visitor *v, const char *name, if (!visit_type_size(v, name, &value, errp)) { return; } - if (!value) { - error_setg(errp, - "property '%s' of %s doesn't take value '%" PRIu64 "'", - name, object_get_typename(obj), value); - return; - } backend->size = value; } @@ -337,6 +331,9 @@ host_memory_backend_memory_complete(UserCreatable *uc, Error **errp) goto out; } + if (0 == backend->size) { + return; + } ptr = memory_region_get_ram_ptr(&backend->mr); sz = memory_region_size(&backend->mr); diff --git a/hw/core/machine.c b/hw/core/machine.c index cb539104a1292da1da24564d9411cc721f8da828..68b08f2c861274b7ac5ee6cfc564cfa0e958c816 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -1104,7 +1104,10 @@ MemoryRegion *machine_consume_memdev(MachineState *machine, HostMemoryBackend *backend) { MemoryRegion *ret = host_memory_backend_get_memory(backend); - + if (NULL == ret) + { + return ret; + } if (memory_region_is_mapped(ret)) { error_report("memory backend %s can't be used multiple times.", object_get_canonical_path_component(OBJECT(backend))); diff --git a/hw/core/numa.c b/hw/core/numa.c index 1aa05dcf425f46eca6ac0468d56a96fe0d67bf13..1b9eac4051a7e5201a3bcf0754c0c7a88c418abe 100644 --- a/hw/core/numa.c +++ b/hw/core/numa.c @@ -629,6 +629,10 @@ static void numa_init_memdev_container(MachineState *ms, MemoryRegion *ram) continue; } MemoryRegion *seg = machine_consume_memdev(ms, backend); + if (seg == NULL) + { + continue; + } memory_region_add_subregion(ram, addr, seg); addr += size; }