When memory-backend-xen is used, the label_data pointer can not be got via memory_region_get_ram_ptr(). We will use other functions to get label_data once we introduce NVDIMM label support to Xen.
Signed-off-by: Haozhong Zhang <haozhong.zh...@intel.com> --- Cc: Xiao Guangrong <guangrong.x...@linux.intel.com> Cc: "Michael S. Tsirkin" <m...@redhat.com> Cc: Igor Mammedov <imamm...@redhat.com> --- hw/mem/nvdimm.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hw/mem/nvdimm.c b/hw/mem/nvdimm.c index 7895805..d25993b 100644 --- a/hw/mem/nvdimm.c +++ b/hw/mem/nvdimm.c @@ -87,7 +87,9 @@ static void nvdimm_realize(PCDIMMDevice *dimm, Error **errp) align = memory_region_get_alignment(mr); pmem_size = size - nvdimm->label_size; - nvdimm->label_data = memory_region_get_ram_ptr(mr) + pmem_size; + if (nvdimm->label_size) { + nvdimm->label_data = memory_region_get_ram_ptr(mr) + pmem_size; + } pmem_size = QEMU_ALIGN_DOWN(pmem_size, align); if (size <= nvdimm->label_size || !pmem_size) { -- 2.10.1