Skip to content
  • Greg Kurz's avatar
    0b217571
    numa: set the memory backend "is_mapped" field · 0b217571
    Greg Kurz authored
    
    
    Commit 2aece63c "hostmem: detect host backend memory is being used properly"
    added a way to know if a memory backend is busy or available for use. It
    caused a slight regression if we pass the same backend to a NUMA node and
    to a pc-dimm device:
    
    -m 1G,slots=2,maxmem=2G \
    -object memory-backend-ram,size=1G,id=mem-mem1 \
    -device pc-dimm,id=dimm-mem1,memdev=mem-mem1 \
    -numa node,nodeid=0,memdev=mem-mem1
    
    Before commit 2aece63c, this would cause QEMU to print an error message and
    to exit gracefully:
    
    qemu-system-ppc64: -device pc-dimm,id=dimm-mem1,memdev=mem-mem1:
        can't use already busy memdev: mem-mem1
    
    Since commit 2aece63c, QEMU hits an assertion in the memory code:
    
    qemu-system-ppc64: memory.c:1934: memory_region_add_subregion_common:
        Assertion `!subregion->container' failed.
    Aborted
    
    This happens because pc-dimm devices don't use memory_region_is_mapped()
    anymore and cannot guess the backend is already used by a NUMA node.
    
    Let's revert to the previous behavior by turning the NUMA code to also
    call host_memory_backend_set_mapped() when it uses a backend.
    
    Fixes: 2aece63c
    Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
    Message-Id: <146891691503.15642.9817215371777203794.stgit@bahia.lan>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    0b217571
    numa: set the memory backend "is_mapped" field
    Greg Kurz authored
    
    
    Commit 2aece63c "hostmem: detect host backend memory is being used properly"
    added a way to know if a memory backend is busy or available for use. It
    caused a slight regression if we pass the same backend to a NUMA node and
    to a pc-dimm device:
    
    -m 1G,slots=2,maxmem=2G \
    -object memory-backend-ram,size=1G,id=mem-mem1 \
    -device pc-dimm,id=dimm-mem1,memdev=mem-mem1 \
    -numa node,nodeid=0,memdev=mem-mem1
    
    Before commit 2aece63c, this would cause QEMU to print an error message and
    to exit gracefully:
    
    qemu-system-ppc64: -device pc-dimm,id=dimm-mem1,memdev=mem-mem1:
        can't use already busy memdev: mem-mem1
    
    Since commit 2aece63c, QEMU hits an assertion in the memory code:
    
    qemu-system-ppc64: memory.c:1934: memory_region_add_subregion_common:
        Assertion `!subregion->container' failed.
    Aborted
    
    This happens because pc-dimm devices don't use memory_region_is_mapped()
    anymore and cannot guess the backend is already used by a NUMA node.
    
    Let's revert to the previous behavior by turning the NUMA code to also
    call host_memory_backend_set_mapped() when it uses a backend.
    
    Fixes: 2aece63c
    Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
    Message-Id: <146891691503.15642.9817215371777203794.stgit@bahia.lan>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Loading