[Qemu-devel] [PATCH v2 0/5] Mark conventional/PCIe/hybrid PCI devices using interface names

Eduardo Habkost posted 5 patches 6 years, 6 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170927195635.16014-1-ehabkost@redhat.com
Test checkpatch passed
Test docker passed
Test s390x passed
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(+)
[Qemu-devel] [PATCH v2 0/5] Mark conventional/PCIe/hybrid PCI devices using interface names
Posted by Eduardo Habkost 6 years, 6 months ago
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.

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(+)

-- 
2.13.5


Re: [Qemu-devel] [PATCH v2 0/5] Mark conventional/PCIe/hybrid PCI devices using interface names
Posted by Marcel Apfelbaum 6 years, 6 months ago
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(+)
> 


Re: [Qemu-devel] [PATCH v2 0/5] Mark conventional/PCIe/hybrid PCI devices using interface names
Posted by Eduardo Habkost 6 years, 6 months ago
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).

-- 
Eduardo