qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 00/11 v3] Refactor PCI/SHPC/PCIE hotplug to use


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH 00/11 v3] Refactor PCI/SHPC/PCIE hotplug to use a more generic hotplug API
Date: Mon, 16 Dec 2013 15:26:37 -0800
User-agent: Notmuch/0.15.2+202~g0c4b8aa (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu)

Igor Mammedov <address@hidden> writes:

> changes since v2:
> * s/hotplugable/hotpluggable/
> * move hotplug check to an earlier patch:
>   "qdev: add "hotpluggable" property to Device"
> --
> Refactor PCI specific hotplug API to a more generic/reusable one.
> Model it after SCSI-BUS like hotplug API replacing single hotplug
> callback with hotplug/hot_unplug pair of callbacks as suggested by
> Paolo.
> Difference between SCSI-BUS and this approach is that the former
> is BUS centric while the latter is device centred. Which is evolved
> from the fact that hotplug callbacks used by ACPI/SHPC/PCIE are
> implemented by devices rather than by bus and bus serves only as
> a proxy to forward event to hotplug device.
> Memory hotplug also exposes tha same usage pattern hence an attempt
> to generalize hotplug API.
>
> Refactoring also simplifies wiring of a hotplug device with a bus,
> all it needs is to set "hotplug-device" link on bus, which
> would potentially allow to do it from configuration file,
> there is not need to setup hotplug device callbacks on bus
> synce it can get them via HOTPLUG_DEVICE API of "hotplug-device"
> target.
>
> In addition device centred hotplug API may be used by bus-less
> hotplug implementations as well if it's decided to use
> link<foo...> instead of bus.

I'm having a hard time parsing this description.

Sharing hot plug code is a good thing.  Making hotplug a qdev-level
concept seems like a bad thing to me.

The series is a net add of code so I don't think we're winning anything
by generalizing here.

Is there a use-case this enables that isn't possible today?

Regards,

Anthony Liguori

>
> Patches 8-11 are should be merged as one and are split only for
> simplifying review (they compile fine but PCI hotplug is broken
> until the last patch is applyed).
>
> git tree for testing:
> https://github.com/imammedo/qemu/commits/hotplug_dev_inf_v3
>
> tested only ACPI and PCIE hotplug.
>
> Hervé Poussineau (1):
>   qom: detect bad reentrance during object_class_foreach
>
> Igor Mammedov (9):
>   define hotplug interface
>   qdev: add to BusState "hotplug-handler" link
>   qdev: add "hotpluggable" property to Device
>   hw/acpi: move typeinfo to the file end
>   qdev:pci: refactor PCIDevice to use generic "hotpluggable" property
>   acpi/piix4pm: convert ACPI PCI hotplug to use hotplug-handler API
>   pci/shpc: convert SHPC hotplug to use hotplug-handler API
>   pci/pcie: convert PCIE hotplug to use hotplug-handler API
>   hw/pci: switch to a generic hotplug handling for PCIDevice
>
> Paolo Bonzini (1):
>   qom: do not register interface "types" in the type table
>
>  hw/acpi/piix4.c                | 151 
> ++++++++++++++++++++++-------------------
>  hw/core/Makefile.objs          |   1 +
>  hw/core/hotplug.c              |  48 +++++++++++++
>  hw/core/qdev.c                 |  50 ++++++++++++--
>  hw/display/cirrus_vga.c        |   2 +-
>  hw/display/qxl.c               |   2 +-
>  hw/display/vga-pci.c           |   2 +-
>  hw/display/vmware_vga.c        |   2 +-
>  hw/i386/acpi-build.c           |   6 +-
>  hw/ide/piix.c                  |   4 +-
>  hw/isa/piix4.c                 |   2 +-
>  hw/pci-bridge/pci_bridge_dev.c |   9 +++
>  hw/pci-host/piix.c             |   6 +-
>  hw/pci/pci.c                   |  40 +----------
>  hw/pci/pcie.c                  |  73 +++++++++++++-------
>  hw/pci/pcie_port.c             |   8 +++
>  hw/pci/shpc.c                  | 133 +++++++++++++++++++++++-------------
>  hw/usb/hcd-ehci-pci.c          |   2 +-
>  hw/usb/hcd-ohci.c              |   2 +-
>  hw/usb/hcd-uhci.c              |   2 +-
>  hw/usb/hcd-xhci.c              |   2 +-
>  include/hw/hotplug.h           |  75 ++++++++++++++++++++
>  include/hw/pci/pci.h           |  13 ----
>  include/hw/pci/pci_bus.h       |   2 -
>  include/hw/pci/pcie.h          |   5 ++
>  include/hw/pci/shpc.h          |   8 +++
>  include/hw/qdev-core.h         |   8 +++
>  qom/object.c                   |  17 ++++-
>  28 files changed, 455 insertions(+), 220 deletions(-)
>  create mode 100644 hw/core/hotplug.c
>  create mode 100644 include/hw/hotplug.h
>
> -- 
> 1.8.3.1



reply via email to

[Prev in Thread] Current Thread [Next in Thread]