Переглянути джерело

machine: Use host_memory_backend_is_mapped() in machine_consume_memdev()

memory_region_is_mapped() is the wrong check, we actually want to check
whether the backend is already marked mapped.

For example, memory regions mapped via an alias, such as NVDIMMs,
currently don't make memory_region_is_mapped() return "true". As the
machine is initialized before any memory devices (and thereby before
NVDIMMs are initialized), this isn't a fix but merely a cleanup.

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20211102164317.45658-2-david@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
David Hildenbrand 3 роки тому
батько
коміт
eef3a7abff
1 змінених файлів з 1 додано та 1 видалено
  1. 1 1
      hw/core/machine.c

+ 1 - 1
hw/core/machine.c

@@ -1091,7 +1091,7 @@ MemoryRegion *machine_consume_memdev(MachineState *machine,
 {
 {
     MemoryRegion *ret = host_memory_backend_get_memory(backend);
     MemoryRegion *ret = host_memory_backend_get_memory(backend);
 
 
-    if (memory_region_is_mapped(ret)) {
+    if (host_memory_backend_is_mapped(backend)) {
         error_report("memory backend %s can't be used multiple times.",
         error_report("memory backend %s can't be used multiple times.",
                      object_get_canonical_path_component(OBJECT(backend)));
                      object_get_canonical_path_component(OBJECT(backend)));
         exit(EXIT_FAILURE);
         exit(EXIT_FAILURE);