Skip to content

MemoryDevice: use multi stage hotplug handlers

David Hildenbrand qemu-devel 3 versions – In review

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v4 Latest14 patches 61 repliesIn review
  2. v318 patches 6 repliesSuperseded
  3. v217 patches 11 repliesSuperseded

Changes in v4 from the cover letter

- Removed the s390x bits, will send that out separately (was just a proof that it works just fine with s390x)
- Fixed a typo and reworded a comment

Patches in v4 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/14memory-device: drop assert related to align and start of address spacehw/mem/memory-device.c+1 -28 replies
2/14memory-device: introduce separate config optiondefault-configs/i386-softmmu.mak default-configs/ppc64-softmmu.mak default-configs/x86_64-softmmu.mak +3 more+10 -71 reply
3/14qdev: let machine hotplug handler to override bus hotplug handlerhw/core/qdev.c include/hw/qdev-core.h+13 -41 reply
4/14pc: prepare for multi stage hotplug handlershw/i386/pc.c+31 -820 replies
5/14pc: route all memory devices through the machine hotplug handlerhw/i386/pc.c+2 -04 replies
6/14spapr: prepare for multi stage hotplug handlershw/ppc/spapr.c+43 -115 replies
7/14spapr: route all memory devices through the machine hotplug handlerhw/ppc/spapr.c+1 -02 replies
8/14spapr: handle pc-dimm unplug via hotplug handler chainhw/ppc/spapr.c+19 -42 replies
9/14spapr: handle cpu core unplug via hotplug handler chainhw/ppc/spapr.c+12 -12 replies
10/14memory-device: new functions to handle plug/unpluginclude/hw/mem/memory-device.h+10 -00 replies
11/14pc-dimm: implement new memory device functionshw/mem/pc-dimm.c+17 -00 replies
12/14memory-device: factor out pre-plug into hotplug handlerhw/i386/pc.c hw/mem/memory-device.c hw/ppc/spapr.c +1 more+57 -394 replies
13/14memory-device: factor out unplug into hotplug handlerhw/i386/pc.c hw/mem/memory-device.c hw/mem/pc-dimm.c +3 more+46 -72 replies
14/14memory-device: factor out plug into hotplug handlerhw/i386/pc.c hw/mem/memory-device.c hw/mem/pc-dimm.c +4 more+71 -603 replies

Reviews trailers per patch

4 of 14 patches have a Reviewed-by or Acked-by.

PatchGreg KurzIgor MammedovDavid Gibson
1/14
2/14R-b
3/14R-b
4/14
5/14
6/14R-b
7/14
8/14
9/14A-b A-b
10/14
11/14
12/14
13/14
14/14

Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes. Scroll the table sideways for all 3 reviewers.

Read the v4 thread

Cover letter [Qemu-devel] [PATCH v4 00/14] MemoryDevice: use multi stage hotplug handlers

We can have devices that need certain other resources that are e.g. system resources managed by the machine. We need a clean way to assign these resources (without violating layers as brought up by Igor).

One example is virtio-mem/virtio-pmem. Both device types need to be assigned some region in guest physical address space. This device memory belongs to the machine and is managed by it. However, virito devices are hotplugged using the hotplug handler their proxy device implements. So we could trigger e.g. a PCI hotplug handler for virtio-pci or a CSS/CCW hotplug handler for virtio-ccw. But definetly not the machine.

Now, we can route other devices through the machine hotplug handler, to properly assign/unassign resources - like a portion in guest physical address space.

v3 -> v4:
- Removed the s390x bits, will send that out separately (was just a proof that it works just fine with s390x)
- Fixed a typo and reworded a comment

v2 -> v3:
- Added "memory-device: introduce separate config option"
- Dropped "parent_bus" check from hotplug handler lookup functions
- "Handly" -> "Handle" in patch description.

v1 -> v2:
- Use multi stage hotplug handler instead of resource handler
- MemoryDevices only compiled if necessary (CONFIG_MEM_HOTPLUG)
- Prepare PC/SPAPR machines properly for multi stage hotplug handlers
- Route SPAPR unplug code via the hotunplug handler
- Directly include s390x support. But there are no usable memory devices yet (well, only my virtio-mem prototype)
- Included "memory-device: drop assert related to align and start of address space"

David Hildenbrand (13):
memory-device: drop assert related to align and start of address space
memory-device: introduce separate config option
pc: prepare for multi stage hotplug handlers
pc: route all memory devices through the machine hotplug handler
spapr: prepare for multi stage hotplug handlers
spapr: route all memory devices through the machine hotplug handler
spapr: handle pc-dimm unplug via hotplug handler chain
spapr: handle cpu core unplug via hotplug handler chain
memory-device: new functions to handle plug/unplug
pc-dimm: implement new memory device functions
memory-device: factor out pre-plug into hotplug handler
memory-device: factor out unplug into hotplug handler
memory-device: factor out plug into hotplug handler

Igor Mammedov (1):
qdev: let machine hotplug handler to override bus hotplug handler

 default-configs/i386-softmmu.mak   |   3 +-
 default-configs/ppc64-softmmu.mak  |   3 +-
 default-configs/x86_64-softmmu.mak |   3 +-
 hw/Makefile.objs                   |   2 +-
 hw/core/qdev.c                     |   6 +-
 hw/i386/pc.c                       | 102 ++++++++++++++++++++++-------
 hw/mem/Makefile.objs               |   4 +-
 hw/mem/memory-device.c             | 129 +++++++++++++++++++++++--------------
 hw/mem/pc-dimm.c                   |  48 ++++++--------
 hw/mem/trace-events                |   4 +-
 hw/ppc/spapr.c                     | 129 +++++++++++++++++++++++++++++++------
 include/hw/mem/memory-device.h     |  21 ++++--
 include/hw/mem/pc-dimm.h           |   3 +-
 include/hw/qdev-core.h             |  11 ++++
 qapi/misc.json                     |   2 +-
 15 files changed, 330 insertions(+), 140 deletions(-)
Signature · 1 line
2.14.3