diff options
author | Xiao Guangrong <guangrong.xiao@linux.intel.com> | 2016-07-13 12:18:06 +0800 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2016-07-13 13:30:04 +0200 |
commit | 2aece63c8a9d2c3a8ff41d2febc4cdeff2633331 (patch) | |
tree | 02964fa0c17b241f41f4be55d1381eb8f2b24018 /include | |
parent | 1454d33f0507cb54d62ed80f494884157c9e7130 (diff) | |
download | qemu-2aece63c8a9d2c3a8ff41d2febc4cdeff2633331.tar.gz qemu-2aece63c8a9d2c3a8ff41d2febc4cdeff2633331.tar.bz2 qemu-2aece63c8a9d2c3a8ff41d2febc4cdeff2633331.zip |
hostmem: detect host backend memory is being used properly
Currently, we use memory_region_is_mapped() to detect if the host
backend memory is being used. This works if the memory is directly
mapped into guest's address space, however, it is not true for
nvdimm as it uses aliased memory region to map the memory. This is
why this bug can happen:
https://bugzilla.redhat.com/show_bug.cgi?id=1352769
Fix it by introduce a new filed, is_mapped, to HostMemoryBackend,
we set/clear this filed accordingly when the device link/unlink to
host backend memory
Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/sysemu/hostmem.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h index 4d6617eab7..c903404308 100644 --- a/include/sysemu/hostmem.h +++ b/include/sysemu/hostmem.h @@ -53,7 +53,7 @@ struct HostMemoryBackend { /* protected */ uint64_t size; bool merge, dump; - bool prealloc, force_prealloc; + bool prealloc, force_prealloc, is_mapped; DECLARE_BITMAP(host_nodes, MAX_NODES + 1); HostMemPolicy policy; @@ -63,4 +63,6 @@ struct HostMemoryBackend { MemoryRegion *host_memory_backend_get_memory(HostMemoryBackend *backend, Error **errp); +void host_memory_backend_set_mapped(HostMemoryBackend *backend, bool mapped); +bool host_memory_backend_is_mapped(HostMemoryBackend *backend); #endif |