[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH RFCv2 0/9] qdev: Hotplug handler chaining + virtio-p
From: |
David Hildenbrand |
Subject: |
[Qemu-devel] [PATCH RFCv2 0/9] qdev: Hotplug handler chaining + virtio-pmem |
Date: |
Wed, 23 Jan 2019 20:55:18 +0100 |
This series implements supprt for hotplug handler chaining (proposed
by Igor), something that is necessary to turn selected virtio devices into
memory devices. Planned devices inlude virtio-mem and virtio-pmem. The
current prototype of virtio-pmem is included.
The machine hotplug handler can intercept hotplug handler calls
to properly prepare/teardown the memory device part of a device. Control
is then passed on to the actual bus hotplug handler. So the default hotplug
handler is effectively overwritten to make interception possible.
It is based on the following patches/series
- [PATCH v1] pc: Use hotplug_handler_(plug|unplug|unplug_request)
-- Queued by Paolo
- [PATCH v3 0/2] s390x/pci: hotplug handler fixes and reworks
Patch 1-3 are the preparations for hotplug handler chaining. The remaining
patches are a modified prototype of virtio-pmem.
TODO:
- More testing for patch #1 + eventually write some unplug tests
- Pankaj has to fixup some things in "virtio-pmem: Prototype"
-- See patch description for details
I modified Pankajs work to work with this series. virtio-pmem is included
as it was requested during review of previous preparations to showcase a
real user, so we can discuss if this is good enough for us or if we have
to do further changes.
More details about virtio-pmem (including the Linux guest driver side)
can be found at:
https://lkml.org/lkml/2018/7/13/102
https://lkml.org/lkml/2019/1/9/756
Example: defining a simple virtio-pmem device (on /dev/zero for simplicity):
qemu-system-x86_64 \
-machine pc \
-monitor stdio \
-m 8G,maxmem=20G \
-object memory-backend-file,id=mem1,mem-path=/dev/zero,size=4G \
-device virtio-pmem-pci,id=vp1,memdev=mem1
QEMU 3.0.50 monitor - type 'help' for more information
(qemu) info memory-devices
Memory device [virtio-pmem]: "vp1"
memaddr: 0x240000000
size: 4294967296
memdev: /objects/mem1
(qemu) info memory_size_summary
base memory: 8589934592
plugged memory: 4294967296
RFC -> RFCv2
- "virtio-pmem: Prototype"
- Minor documentation/style changes
- "virtio-pci: Proxy for virtio-pmem"
-- Separate header file virtio-pmem-pci.h
- "pc: Support for virtio-pmem-pci"
-- Only handle virtio-pmem-pci specially
David Hildenbrand (6):
qdev: Let the hotplug_handler_unplug() caller delete the device
qdev: Provide qdev_get_bus_hotplug_handler()
virtio-pci: Allow to specify additional interfaces for the base type
hmp: Handle virtio-pmem when printing memory device infos
numa: Handle virtio-pmem in NUMA stats
pc: Support for virtio-pmem-pci
Igor Mammedov (1):
qdev: Let machine hotplug handler to override bus hotplug handler
Pankaj Gupta (2):
virtio-pmem: Prototype
virtio-pci: Proxy for virtio-pmem
default-configs/i386-softmmu.mak | 1 +
hmp.c | 27 +--
hw/acpi/cpu.c | 1 +
hw/acpi/memory_hotplug.c | 1 +
hw/acpi/pcihp.c | 3 +-
hw/core/qdev.c | 19 +-
hw/i386/pc.c | 75 +++++++-
hw/pci/pcie.c | 3 +-
hw/pci/shpc.c | 3 +-
hw/ppc/spapr.c | 4 +-
hw/ppc/spapr_pci.c | 3 +-
hw/s390x/css-bridge.c | 2 +-
hw/s390x/s390-pci-bus.c | 13 +-
hw/virtio/Makefile.objs | 3 +
hw/virtio/virtio-pci.c | 1 +
hw/virtio/virtio-pci.h | 1 +
hw/virtio/virtio-pmem-pci.c | 144 +++++++++++++++
hw/virtio/virtio-pmem-pci.h | 39 ++++
hw/virtio/virtio-pmem.c | 191 ++++++++++++++++++++
include/hw/qdev-core.h | 12 ++
include/hw/virtio/virtio-pmem.h | 54 ++++++
include/standard-headers/linux/virtio_ids.h | 1 +
numa.c | 24 +--
qapi/misc.json | 28 ++-
qdev-monitor.c | 9 +-
25 files changed, 612 insertions(+), 50 deletions(-)
create mode 100644 hw/virtio/virtio-pmem-pci.c
create mode 100644 hw/virtio/virtio-pmem-pci.h
create mode 100644 hw/virtio/virtio-pmem.c
create mode 100644 include/hw/virtio/virtio-pmem.h
--
2.17.2
- [Qemu-devel] [PATCH RFCv2 0/9] qdev: Hotplug handler chaining + virtio-pmem,
David Hildenbrand <=
- [Qemu-devel] [PATCH RFCv2 9/9] pc: Support for virtio-pmem-pci, David Hildenbrand, 2019/01/23
- [Qemu-devel] [PATCH RFCv2 8/9] numa: Handle virtio-pmem in NUMA stats, David Hildenbrand, 2019/01/23
- [Qemu-devel] [PATCH RFCv2 7/9] hmp: Handle virtio-pmem when printing memory device infos, David Hildenbrand, 2019/01/23
- [Qemu-devel] [PATCH RFCv2 4/9] virtio-pmem: Prototype, David Hildenbrand, 2019/01/23
- [Qemu-devel] [PATCH RFCv2 6/9] virtio-pci: Proxy for virtio-pmem, David Hildenbrand, 2019/01/23
- [Qemu-devel] [PATCH RFCv2 5/9] virtio-pci: Allow to specify additional interfaces for the base type, David Hildenbrand, 2019/01/23