Skip to content

memory-device: complete refactoring

David Hildenbrand qemu-devel 3 versions – Applied

Status from this message: Queued on machine-next, thanks!

Get series with b4
b4 am [email protected]

Versions newest first · linked by author and title

  1. v5 Latest16 patches 4 repliesApplied
  2. v220 patches 20 repliesSuperseded
  3. v111 patches 2 repliesSuperseded

Changes in v5 from the cover letter

- Added a bunch of RB's
- Minor spelling fixed
- Dropped "memory-device: add class function get_device_id()"
- Added "memory-device: improve "range conflicts" error message
- Dropped "memory-device: handle integer overflows properly" -- Will require more changes. But I am able to reproduce some overflows.
- "memory-device: document MemoryDeviceClass"
-- Changed documentation format as requested by Auger
- "memory-device: trace when pre_plugging/plugging/unplugging" -- Include device ID and rename tracepoints.

Patches in v5 Applied

#Subject and filesSizeRepliesApplied
1/16memory-device: fix alignment error messagehw/mem/memory-device.c+1 -10 replies
2/16memory-device: fix error message when hinted address is too smallhw/mem/memory-device.c+2 -10 replies
3/16memory-device: improve "range conflicts" error messagehw/mem/memory-device.c+2 -12 replies
4/16pc-dimm: pass PCDIMMDevice to pc_dimm_.*plughw/i386/pc.c hw/mem/pc-dimm.c hw/ppc/spapr.c +1 more+21 -230 replies
5/16memory-device: use memory device terminology in error messageshw/mem/memory-device.c+3 -30 replies
6/16memory-device: introduce separate config optiondefault-configs/i386-softmmu.mak default-configs/ppc64-softmmu.mak hw/Makefile.objs +2 more+8 -60 replies
7/16memory-device: forward errors in get_region_size()/get_plugged_size()hw/mem/memory-device.c hw/mem/pc-dimm.c include/hw/mem/memory-device.h+8 -100 replies
8/16memory-device: document MemoryDeviceClassinclude/hw/mem/memory-device.h+36 -00 replies
9/16memory-device: add and use memory_device_get_region_size()hw/mem/memory-device.c hw/mem/pc-dimm.c hw/ppc/spapr.c +1 more+23 -230 replies
10/16memory-device: factor out get_memory_region() from pc-dimmhw/mem/nvdimm.c hw/mem/pc-dimm.c include/hw/mem/memory-device.h +1 more+39 -160 replies
11/16memory-device: drop get_region_size()hw/mem/memory-device.c hw/mem/pc-dimm.c include/hw/mem/memory-device.h+10 -200 replies
12/16memory-device: add device class function set_addr()hw/mem/pc-dimm.c include/hw/mem/memory-device.h+15 -00 replies
13/16memory-device: complete factoring out pre_plug handlinghw/mem/memory-device.c hw/mem/pc-dimm.c include/hw/mem/memory-device.h+34 -180 replies
14/16memory-device: complete factoring out plug handlinghw/mem/memory-device.c hw/mem/pc-dimm.c include/hw/mem/memory-device.h+12 -130 replies
15/16memory-device: complete factoring out unplug handlinghw/mem/memory-device.c hw/mem/pc-dimm.c include/hw/mem/memory-device.h+11 -70 replies
16/16memory-device: trace when pre_plugging/plugging/unplugginghw/mem/memory-device.c hw/mem/pc-dimm.c hw/mem/trace-events+12 -90 replies

Reviews trailers per patch

All 16 patches have a Reviewed-by or Acked-by.

PatchDavid GibsonIgor MammedovEric AugerDr. David Alan GilbertPhilippe Mathieu-Daudé
1/16R-b R-b
2/16R-b R-b R-b
3/16R-b R-b
4/16R-b A-b R-b R-b
5/16R-b R-b R-b
6/16R-b A-b R-b
7/16R-b R-b R-b
8/16R-b R-b
9/16R-b R-b
10/16R-b R-b
11/16R-b R-b
12/16R-b R-b R-b
13/16R-b R-b
14/16R-b R-b R-b
15/16R-b R-b R-b
16/16R-b R-b

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

Read the v5 thread

Cover letter [Qemu-devel] [PATCH v5 00/16] memory-device: complete refactoring

This series completes refactoring of pre_plug, plug and unplug logic of memory devices. With this as a basis, we can built e.g. virtio based memory devices or internal "RAM chip" devices.

I dropped the virtio-pmem prototype for now, I will look into plugging it differently next. But this part in this series here is independent of hotplug handler changes required to make it work for virtio devices.

v4 -> v5:
- Added a bunch of RB's
- Minor spelling fixed
- Dropped "memory-device: add class function get_device_id()"
- Added "memory-device: improve "range conflicts" error message
- Dropped "memory-device: handle integer overflows properly" -- Will require more changes. But I am able to reproduce some overflows.
- "memory-device: document MemoryDeviceClass"
-- Changed documentation format as requested by Auger
- "memory-device: trace when pre_plugging/plugging/unplugging" -- Include device ID and rename tracepoints.

v3 -> v4:
- Minor comment and subject fixes
- Added "memory-device: fix alignment error message"
- Added "pc-dimm: pass PCDIMMDevice to pc_dimm_.*plug"
- Dropped "hw/acpi-build: only indicate nvdimm and pc-dimm"
- "memory-device: document MemoryDeviceClass"
-- add more details about get_plugged_size
- "memory-device: add and use memory_device_get_region_size()"
-- fixed "local_err" usage
-- due to "pc-dimm: pass PCDIMMDevice to pc_dimm_.*plug", keep PC_DIMM cast
- "memory-device: add class function get_device_id()"
-- provide default handler
- "hmp: handle virtio-pmem when printing memory device infos"
-- avoid fall-through switch case
-- add g_assert_not_reached()
- "numa: handle virtio-pmem in NUMA stats"
-- avoid fall-through switch case
-- add g_assert_not_reached()
- Added "qdev: hotplug: provide do_unplug handler"
-- unplug/unplug_request are not called for devices inside a device hierarchy
This new handler is always called when unrealizing and doesn't trigger the unrealize (in contrast to unplug/unplug_request)
- "pc: support for virtio-pmem" and "virtio-pmem: hotplug support functions" -- use do_unplug handler
- Tested "device_del vp1". It works, and I can see in the traces the address getting unassigned. QEMU crashes when shutting down, that most most likely is a result of virtio-pmem not properly unrealizing and cleaning up virtqueues. (@Pankaj if you read this )

v2 -> v3:
- Rephrased some patch subjects/descriptions
- Added "memory-device: handle integer overflows properly"
- "memory-device: forward errors in get_region_size()/get_plugged_size()" -- drop superfluous error check
- "memory-device: document MemoryDeviceClass"
-- some rewording
- replaced "memory-device: convert get_region_size() to get_memory_region()" by "memory-device: add and use memory_device_get_region_size()" and "memory-device: factor out get_memory_region() from pc-dimm" and "memory-device: drop get_region_size()"
- squashed "memory-device: add device class function set_addr()" and "pc-dimm: implement memory device class function set_addr()"
- replaced "memory-device: ids of virtio based devices are special" by "memory-device: add optional function get_device_id()"
- fixed up the virtio-pmem prototype

v1 -> v2:
- Include virtio-pmem prototype
- Add "memory-device: fix error message when hinted address is too small"
- Add "memory-device: use memory device terminology in error messages"
- Add "hw/acpi-build: only indicate nvdimm and pc-dimm"
- Add "memory-device: ids of virtio based devices are special"
- Add "memory-device: ids of virtio based devices are special"
- Minor changes/fixes for other patches

David Hildenbrand (16):
memory-device: fix alignment error message
memory-device: fix error message when hinted address is too small
memory-device: improve "range conflicts" error message
pc-dimm: pass PCDIMMDevice to pc_dimm_.*plug
memory-device: use memory device terminology in error messages
memory-device: introduce separate config option
memory-device: forward errors in get_region_size()/get_plugged_size()
memory-device: document MemoryDeviceClass
memory-device: add and use memory_device_get_region_size()
memory-device: factor out get_memory_region() from pc-dimm
memory-device: drop get_region_size()
memory-device: add device class function set_addr()
memory-device: complete factoring out pre_plug handling
memory-device: complete factoring out plug handling
memory-device: complete factoring out unplug handling
memory-device: trace when pre_plugging/plugging/unplugging

 default-configs/i386-softmmu.mak  |   3 +-
 default-configs/ppc64-softmmu.mak |   3 +-
 hw/Makefile.objs                  |   2 +-
 hw/i386/pc.c                      |   6 +-
 hw/mem/Makefile.objs              |   4 +-
 hw/mem/memory-device.c            | 103 ++++++++++++++++++++++++------
 hw/mem/nvdimm.c                   |   9 ++-
 hw/mem/pc-dimm.c                  |  84 ++++++++----------------
 hw/mem/trace-events               |   5 +-
 hw/ppc/spapr.c                    |  29 ++++-----
 include/hw/mem/memory-device.h    |  74 ++++++++++++++++++---
 include/hw/mem/pc-dimm.h          |  10 +--
 qapi/misc.json                    |   2 +-
 13 files changed, 210 insertions(+), 124 deletions(-)
Signature · 1 line
2.17.1