Hello, This is good re-factoring and needed for 'virtio-pmem' as well to reserve memory region in system address space.
I have tested this code with virtio-pmem and its working fine. Thank you for the work. I just have a small suggestion : when functions like(get_addr(), get_plugged_size etc) in the interface are not provided by derived class, Qemu crashes. I think having a contract for must override functions with NULL check and error at the calling sites would be better? Thanks, Pankaj > Right now we can only map PCDIMM/NVDIMM into guest address space. In the > future, we might want to do the same for virtio devices - e.g. > virtio-pmem or virtio-mem. Especially, they should be able to live side > by side to each other. > > E.g. the virto based memory devices regions will not be exposed via ACPI > and friends. They will be detected just like other virtio devices and > indicate the applicable memory region. This makes it possible to also use > them on architectures without memory device detection support (e.g. s390x). > > Let's factor out the memory device code into a MemoryDevice interface. > > > v2 -> v3: > - "pc-dimm: factor out MemoryDevice interface" > --> Lookup both classes when comparing (David Gibson) > > v1 -> v2: > - Fix compile issues on ppc (still untested ) > > > David Hildenbrand (3): > pc-dimm: factor out MemoryDevice interface > machine: make MemoryHotplugState accessible via the machine > pc-dimm: factor out address space logic into MemoryDevice code > > hw/i386/acpi-build.c | 3 +- > hw/i386/pc.c | 24 ++- > hw/mem/Makefile.objs | 1 + > hw/mem/memory-device.c | 282 +++++++++++++++++++++++++ > hw/mem/pc-dimm.c | 304 > +++++++-------------------- > hw/ppc/spapr.c | 24 ++- > hw/ppc/spapr_hcall.c | 1 + > include/hw/boards.h | 16 ++ > include/hw/mem/memory-device.h | 48 +++++ > include/hw/mem/pc-dimm.h | 26 +-- > numa.c | 3 +- > qmp.c | 4 +- > stubs/Makefile.objs | 2 +- > stubs/{qmp_pc_dimm.c => qmp_memory_device.c} | 4 +- > 14 files changed, 465 insertions(+), 277 deletions(-) > create mode 100644 hw/mem/memory-device.c > create mode 100644 include/hw/mem/memory-device.h > rename stubs/{qmp_pc_dimm.c => qmp_memory_device.c} (61%) > > -- > 2.14.3 > > >