On Mon, Apr 23, 2018 at 06:51:15PM +0200, David Hildenbrand 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. > > Please note that the "slots" assignment code is not relevant for memory > devices that will not be exposed via ACPI or similar. That's why that > part won't be exposed. KVM/vhost "slots" for memory regions are still > necessary but don't have to be manually specified (e.g. the slot number > doesn't mather). > > So we are basically converting the hotplug memory region to a memory device > region. I have patches that also set up such a region for s390x.
Reviewed-by: Michael S. Tsirkin <m...@redhat.com> Who's merging this? Eduardo? > v3 -> v4: > - "pc-dimm: factor out MemoryDevice interface" > -- dropped the "errp" parameter from the interface functions > -- made as many pointers const as I could :) > -- s/built/build/ > - machine: make MemoryHotplugState accessible via the machine > -- State now kept via a pointer, not queried. > -- Added patches that rename the type and cleanup the terminology for > spapr and pc > - Split up the big "pc-dimm: factor out address space logic into MemoryDevice > code" into sub patches > -- We now pass the machine to the pc-dimm and MemoryDevice plug/unplug > functions, so we can avoid qdev_get_machine() > -- Moved some checks around as requested by Igor > - Added a patch to make maxmem not depend on slots > > 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 (11): > pc-dimm: factor out MemoryDevice interface > machine: make MemoryHotplugState accessible via the machine > pc-dimm: no need to pass the memory region > pc-dimm: pass in the machine and to the MemoryHotplugState > pc-dimm: factor out address search into MemoryDevice code > pc-dimm: factor out capacity and slot checks into MemoryDevice > pc-dimm: move actual plug/unplug of a memory region to MemoryDevice > machine: rename MemoryHotplugState to DeviceMemoryState > pc: rename "hotplug memory" terminology to "device memory" > spapr: rename "hotplug memory" terminology to "device memory" > vl: allow 'maxmem' without 'slot' > > hw/i386/acpi-build.c | 7 +- > hw/i386/pc.c | 65 +++--- > hw/mem/Makefile.objs | 1 + > hw/mem/memory-device.c | 275 ++++++++++++++++++++++++ > hw/mem/pc-dimm.c | 304 > +++++++-------------------- > hw/ppc/spapr.c | 65 +++--- > hw/ppc/spapr_hcall.c | 7 +- > hw/ppc/spapr_rtas_ddw.c | 5 +- > include/hw/boards.h | 12 ++ > include/hw/i386/pc.h | 3 +- > include/hw/mem/memory-device.h | 51 +++++ > include/hw/mem/pc-dimm.h | 27 +-- > include/hw/ppc/spapr.h | 5 +- > numa.c | 3 +- > qmp.c | 4 +- > stubs/Makefile.objs | 2 +- > stubs/{qmp_pc_dimm.c => qmp_memory_device.c} | 4 +- > vl.c | 19 +- > 18 files changed, 506 insertions(+), 353 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