On Fri, 20 Apr 2018 14:34:53 +0200 David Hildenbrand <da...@redhat.com> wrote:
> 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. A couple of high level questions as relevant code is not here: 1. what would hotplug/unplug call chain look like in case of virtio-pmem device (reason I'm asking is that pmem being PCI device would trigger PCI bus hotplug controller and then it somehow should piggyback to Machine provided hotplug handlers, so I wonder what kind of havoc it would cause on hotplug infrastructure) 2. why not use PCI bar mapping mechanism to do mapping since pmem is PCI device? > 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%) >