Message ID | 20170927195635.16014-1-ehabkost@redhat.com |
---|---|
Headers | show |
Series | Mark conventional/PCIe/hybrid PCI devices using interface names | expand |
On 27/09/2017 22:56, Eduardo Habkost wrote: > Changes v1 -> v2: > * Use "Conventional PCI" instead of "legacy PCI" > * Suggested-by: Alex Williamson <alex.williamson@redhat.com> > * Mark base-xhci as hybrid too > * Reported-by: Marcel Apfelbaum <marcel@redhat.com> > * Mark pcie-pci-bridge as PCI Express only > * New Conventional PCI devices: sungem, sunhme > > v1 was a reimplementation of one portion of an old RFC: > Subject: [RFC v2 00/20] qmp: Report bus information on > 'query-machines' > > This series marks each PCI device type as Conventional PCI, PCI > Express, or "hybrid". It uses two new QOM interface names to do > that: INTERFACE_CONVENTIONAL_PCI_DEVICE > ("conventional-pci-device") and INTERFACE_PCIE_DEVICE > ("pci-express-device"). Conventional PCI devices will implement > only the former; PCIe-only devices will implement only the > latter; hybrid devices will implement both interfaces. > > With this, management software will then be able to use > qom-list-types to find out which PCI devices are > conventional/express/hybrid. > > In the future, the new interface names can be used in the > bus/slot querying commands, to indicate which types of devices > are accepted on each slot. > > The last patch in the series adds an assertion to the PCI device > class code, to ensure we won't forget to add the corresponding > interface names to new PCI device classes. > Hi Eduardo, Now we need to get rid of the "is_express" field, otherwise we have the same information on two places. Thanks, Marcel > Eduardo Habkost (5): > pci: conventional-pci-device and pci-express-device interfaces > pci: Add interface names to hybrid PCI devices > pci: Add INTERFACE_PCIE_DEVICE to all PCIe devices > pci: Add INTERFACE_CONVENTIONAL_PCI_DEVICE to Conventional PCI devices > pci: Validate interfaces on base_class_init > > include/hw/pci/pci.h | 6 ++++++ > hw/acpi/piix4.c | 1 + > hw/audio/ac97.c | 4 ++++ > hw/audio/es1370.c | 4 ++++ > hw/audio/intel-hda.c | 4 ++++ > hw/block/nvme.c | 4 ++++ > hw/char/serial-pci.c | 12 ++++++++++++ > hw/display/cirrus_vga.c | 4 ++++ > hw/display/qxl.c | 4 ++++ > hw/display/sm501.c | 4 ++++ > hw/display/vga-pci.c | 4 ++++ > hw/display/vmware_vga.c | 4 ++++ > hw/i2c/smbus_ich9.c | 4 ++++ > hw/i386/amd_iommu.c | 4 ++++ > hw/i386/kvm/pci-assign.c | 4 ++++ > hw/i386/pc_piix.c | 4 ++++ > hw/i386/xen/xen_platform.c | 4 ++++ > hw/i386/xen/xen_pvdevice.c | 4 ++++ > hw/ide/ich.c | 4 ++++ > hw/ide/pci.c | 4 ++++ > hw/ipack/tpci200.c | 4 ++++ > hw/isa/i82378.c | 4 ++++ > hw/isa/lpc_ich9.c | 1 + > hw/isa/piix4.c | 4 ++++ > hw/isa/vt82c686.c | 16 ++++++++++++++++ > hw/mips/gt64xxx_pci.c | 4 ++++ > hw/misc/edu.c | 5 +++++ > hw/misc/ivshmem.c | 4 ++++ > hw/misc/macio/macio.c | 4 ++++ > hw/misc/pci-testdev.c | 4 ++++ > hw/net/e1000.c | 4 ++++ > hw/net/e1000e.c | 4 ++++ > hw/net/eepro100.c | 4 ++++ > hw/net/ne2000.c | 4 ++++ > hw/net/pcnet-pci.c | 4 ++++ > hw/net/rocker/rocker.c | 4 ++++ > hw/net/rtl8139.c | 4 ++++ > hw/net/sungem.c | 4 ++++ > hw/net/sunhme.c | 4 ++++ > hw/net/vmxnet3.c | 5 +++++ > hw/pci-bridge/dec.c | 8 ++++++++ > hw/pci-bridge/i82801b11.c | 4 ++++ > hw/pci-bridge/pci_bridge_dev.c | 1 + > hw/pci-bridge/pci_expander_bridge.c | 8 ++++++++ > hw/pci-bridge/pcie_pci_bridge.c | 1 + > hw/pci-bridge/pcie_root_port.c | 4 ++++ > hw/pci-bridge/xio3130_downstream.c | 4 ++++ > hw/pci-bridge/xio3130_upstream.c | 4 ++++ > hw/pci-host/apb.c | 8 ++++++++ > hw/pci-host/bonito.c | 4 ++++ > hw/pci-host/gpex.c | 4 ++++ > hw/pci-host/grackle.c | 4 ++++ > hw/pci-host/piix.c | 8 ++++++++ > hw/pci-host/ppce500.c | 4 ++++ > hw/pci-host/prep.c | 4 ++++ > hw/pci-host/q35.c | 4 ++++ > hw/pci-host/uninorth.c | 16 ++++++++++++++++ > hw/pci-host/versatile.c | 4 ++++ > hw/pci-host/xilinx-pcie.c | 4 ++++ > hw/pci/pci.c | 24 ++++++++++++++++++++++++ > hw/ppc/ppc4xx_pci.c | 4 ++++ > hw/scsi/esp-pci.c | 4 ++++ > hw/scsi/lsi53c895a.c | 4 ++++ > hw/scsi/megasas.c | 10 ++++++++++ > hw/scsi/mptsas.c | 4 ++++ > hw/scsi/vmw_pvscsi.c | 2 ++ > hw/sd/sdhci.c | 4 ++++ > hw/sh4/sh_pci.c | 4 ++++ > hw/sparc64/sun4u.c | 4 ++++ > hw/usb/hcd-ehci-pci.c | 4 ++++ > hw/usb/hcd-ohci.c | 4 ++++ > hw/usb/hcd-uhci.c | 4 ++++ > hw/usb/hcd-xhci.c | 5 +++++ > hw/vfio/pci-quirks.c | 4 ++++ > hw/vfio/pci.c | 5 +++++ > hw/virtio/virtio-pci.c | 5 +++++ > hw/watchdog/wdt_i6300esb.c | 4 ++++ > hw/xen/xen_pt.c | 4 ++++ > 78 files changed, 379 insertions(+) >
On Thu, Sep 28, 2017 at 12:39:23PM +0300, Marcel Apfelbaum wrote: > On 27/09/2017 22:56, Eduardo Habkost wrote: > > Changes v1 -> v2: > > * Use "Conventional PCI" instead of "legacy PCI" > > * Suggested-by: Alex Williamson <alex.williamson@redhat.com> > > * Mark base-xhci as hybrid too > > * Reported-by: Marcel Apfelbaum <marcel@redhat.com> > > * Mark pcie-pci-bridge as PCI Express only > > * New Conventional PCI devices: sungem, sunhme > > > > v1 was a reimplementation of one portion of an old RFC: > > Subject: [RFC v2 00/20] qmp: Report bus information on > > 'query-machines' > > > > This series marks each PCI device type as Conventional PCI, PCI > > Express, or "hybrid". It uses two new QOM interface names to do > > that: INTERFACE_CONVENTIONAL_PCI_DEVICE > > ("conventional-pci-device") and INTERFACE_PCIE_DEVICE > > ("pci-express-device"). Conventional PCI devices will implement > > only the former; PCIe-only devices will implement only the > > latter; hybrid devices will implement both interfaces. > > > > With this, management software will then be able to use > > qom-list-types to find out which PCI devices are > > conventional/express/hybrid. > > > > In the future, the new interface names can be used in the > > bus/slot querying commands, to indicate which types of devices > > are accepted on each slot. > > > > The last patch in the series adds an assertion to the PCI device > > class code, to ensure we won't forget to add the corresponding > > interface names to new PCI device classes. > > > > Hi Eduardo, > > Now we need to get rid of the "is_express" field, > otherwise we have the same information on two places. Agreed, it's on my TODO-list. is_express is completely inconsistent on hybrid devices (some of them have is_express=0, some of them have is_express=1).