Re: [Qemu-devel] [PATCH 4/5] pci: Add INTERFACE_LEGACY_PCI_DEVICE to legacy PCI devices
On Wed, Aug 23, 2017 at 07:14:44PM -0300, Eduardo Habkost wrote: > Add INTERFACE_LEGACY_PCI_DEVICE to all direct subtypes of > TYPE_PCI_DEVICE, except: > > 1) The ones that already have INTERFACE_PCIE_DEVICE set: > > * base-xhci > * e1000e > * nvme > * pvscsi > * vfio-pci > * virtio-pci > * vmxnet3 > > 2) base-pci-bridge > > Not all PCI bridges are legacy PCI devices, so > INTERFACE_LEGACY_PCI_DEVICE is added only to the subtypes that > are actually legacy PCI devices: > > * dec-21154-p2p-bridge > * i82801b11-bridge > * pbm-bridge > * pci-bridge > > The direct subtypes of base-pci-bridge not touched by this patch > are: > > * xilinx-pcie-root: Already marked as PCIe-only device. > * pcie-port: all non-abstract subtypes of pcie-port are already > marked as PCIe-only devices. > > 3) megasas-base > > Not all megasas devices are legacy PCI devices, so the interface > names are added to the subclasses registered by > megasas_register_types(), according to information in the > megasas_devices[] array. > > "megasas-gen2" already implements INTERFACE_PCIE_DEVICE, so add > INTERFACE_LEGACY_PCI_DEVICE only to "megasas". > > Signed-off-by: Eduardo Habkost> --- > hw/i386/xen/xen_platform.c | 4 > hw/i386/xen/xen_pvdevice.c | 4 > hw/xen/xen_pt.c | 4 > 62 files changed, 288 insertions(+) > > diff --git a/hw/i386/xen/xen_platform.c b/hw/i386/xen/xen_platform.c > index 9ba7474..2113bd0 100644 > --- a/hw/i386/xen/xen_platform.c > +++ b/hw/i386/xen/xen_platform.c > @@ -517,6 +517,10 @@ static const TypeInfo xen_platform_info = { > .parent= TYPE_PCI_DEVICE, > .instance_size = sizeof(PCIXenPlatformState), > .class_init= xen_platform_class_init, > +.interfaces = (InterfaceInfo[]) { > +{ INTERFACE_LEGACY_PCI_DEVICE }, > +{ }, > +}, > }; > > static void xen_platform_register_types(void) > diff --git a/hw/i386/xen/xen_pvdevice.c b/hw/i386/xen/xen_pvdevice.c > index c093b34..e2ae81b 100644 > --- a/hw/i386/xen/xen_pvdevice.c > +++ b/hw/i386/xen/xen_pvdevice.c > @@ -127,6 +127,10 @@ static const TypeInfo xen_pv_type_info = { > .parent= TYPE_PCI_DEVICE, > .instance_size = sizeof(XenPVDevice), > .class_init= xen_pv_class_init, > +.interfaces = (InterfaceInfo[]) { > +{ INTERFACE_LEGACY_PCI_DEVICE }, > +{ }, > +}, > }; > > static void xen_pv_register_types(void) > diff --git a/hw/xen/xen_pt.c b/hw/xen/xen_pt.c > index 375efa6..4fc 100644 > --- a/hw/xen/xen_pt.c > +++ b/hw/xen/xen_pt.c > @@ -964,6 +964,10 @@ static const TypeInfo xen_pci_passthrough_info = { > .instance_size = sizeof(XenPCIPassthroughState), > .instance_finalize = xen_pci_passthrough_finalize, > .class_init = xen_pci_passthrough_class_init, > +.interfaces = (InterfaceInfo[]) { > +{ INTERFACE_LEGACY_PCI_DEVICE }, > +{ }, > +}, > }; > > static void xen_pci_passthrough_register_types(void) Acked-by: Anthony PERARD -- Anthony PERARD
Re: [Qemu-devel] [PATCH 4/5] pci: Add INTERFACE_LEGACY_PCI_DEVICE to legacy PCI devices
On Mon, Aug 28, 2017 at 06:58:37PM -0400, John Snow wrote: > > > On 08/25/2017 03:39 PM, Eduardo Habkost wrote: > > CCing maintainers of affected devices (sorry for not CCing you > > before). > > > > On Wed, Aug 23, 2017 at 07:14:44PM -0300, Eduardo Habkost wrote: > >> Add INTERFACE_LEGACY_PCI_DEVICE to all direct subtypes of > >> TYPE_PCI_DEVICE, except: > >> > >> 1) The ones that already have INTERFACE_PCIE_DEVICE set: > >> > >> * base-xhci > >> * e1000e > >> * nvme > >> * pvscsi > >> * vfio-pci > >> * virtio-pci > >> * vmxnet3 > >> > >> 2) base-pci-bridge > >> > >> Not all PCI bridges are legacy PCI devices, so > >> INTERFACE_LEGACY_PCI_DEVICE is added only to the subtypes that > >> are actually legacy PCI devices: > >> > >> * dec-21154-p2p-bridge > >> * i82801b11-bridge > >> * pbm-bridge > >> * pci-bridge > >> > >> The direct subtypes of base-pci-bridge not touched by this patch > >> are: > >> > >> * xilinx-pcie-root: Already marked as PCIe-only device. > >> * pcie-port: all non-abstract subtypes of pcie-port are already > >> marked as PCIe-only devices. > >> > >> 3) megasas-base > >> > >> Not all megasas devices are legacy PCI devices, so the interface > >> names are added to the subclasses registered by > >> megasas_register_types(), according to information in the > >> megasas_devices[] array. > >> > >> "megasas-gen2" already implements INTERFACE_PCIE_DEVICE, so add > >> INTERFACE_LEGACY_PCI_DEVICE only to "megasas". > >> > >> Signed-off-by: Eduardo Habkost> >> --- > > [...] > > >> hw/ide/ich.c| 4 > >> hw/ide/pci.c| 4 > > Acked-by: John Snow > > > (Random fly-by comment without looking at the other patches: I assume > there are reasons it's not appropriate or good to add a legacy PCI > device parent that we inherit from, and it's instead better to manually > add the property to all children?) Yes, the reason I'm using interfaces instead of regular inheritance is the existence of hybrid devices (see patch 2/5). -- Eduardo
Re: [Qemu-devel] [PATCH 4/5] pci: Add INTERFACE_LEGACY_PCI_DEVICE to legacy PCI devices
On 08/25/2017 03:39 PM, Eduardo Habkost wrote: > CCing maintainers of affected devices (sorry for not CCing you > before). > > On Wed, Aug 23, 2017 at 07:14:44PM -0300, Eduardo Habkost wrote: >> Add INTERFACE_LEGACY_PCI_DEVICE to all direct subtypes of >> TYPE_PCI_DEVICE, except: >> >> 1) The ones that already have INTERFACE_PCIE_DEVICE set: >> >> * base-xhci >> * e1000e >> * nvme >> * pvscsi >> * vfio-pci >> * virtio-pci >> * vmxnet3 >> >> 2) base-pci-bridge >> >> Not all PCI bridges are legacy PCI devices, so >> INTERFACE_LEGACY_PCI_DEVICE is added only to the subtypes that >> are actually legacy PCI devices: >> >> * dec-21154-p2p-bridge >> * i82801b11-bridge >> * pbm-bridge >> * pci-bridge >> >> The direct subtypes of base-pci-bridge not touched by this patch >> are: >> >> * xilinx-pcie-root: Already marked as PCIe-only device. >> * pcie-port: all non-abstract subtypes of pcie-port are already >> marked as PCIe-only devices. >> >> 3) megasas-base >> >> Not all megasas devices are legacy PCI devices, so the interface >> names are added to the subclasses registered by >> megasas_register_types(), according to information in the >> megasas_devices[] array. >> >> "megasas-gen2" already implements INTERFACE_PCIE_DEVICE, so add >> INTERFACE_LEGACY_PCI_DEVICE only to "megasas". >> >> Signed-off-by: Eduardo Habkost>> --- [...] >> hw/ide/ich.c| 4 >> hw/ide/pci.c| 4 Acked-by: John Snow (Random fly-by comment without looking at the other patches: I assume there are reasons it's not appropriate or good to add a legacy PCI device parent that we inherit from, and it's instead better to manually add the property to all children?)
Re: [Qemu-devel] [PATCH 4/5] pci: Add INTERFACE_LEGACY_PCI_DEVICE to legacy PCI devices
On Fri 25 Aug 2017 09:39:22 PM CEST, Eduardo Habkost wrote: > CCing maintainers of affected devices (sorry for not CCing you > before). >> diff --git a/hw/ipack/tpci200.c b/hw/ipack/tpci200.c >> index 4dfa6b3..e380378 100644 >> --- a/hw/ipack/tpci200.c >> +++ b/hw/ipack/tpci200.c >> @@ -646,6 +646,10 @@ static const TypeInfo tpci200_info = { >> .parent= TYPE_PCI_DEVICE, >> .instance_size = sizeof(TPCI200State), >> .class_init= tpci200_class_init, >> +.interfaces = (InterfaceInfo[]) { >> +{ INTERFACE_LEGACY_PCI_DEVICE }, >> +{ }, >> +}, >> }; Acked-by: Alberto GarciaBerto
Re: [Qemu-devel] [PATCH 4/5] pci: Add INTERFACE_LEGACY_PCI_DEVICE to legacy PCI devices
CCing maintainers of affected devices (sorry for not CCing you before). On Wed, Aug 23, 2017 at 07:14:44PM -0300, Eduardo Habkost wrote: > Add INTERFACE_LEGACY_PCI_DEVICE to all direct subtypes of > TYPE_PCI_DEVICE, except: > > 1) The ones that already have INTERFACE_PCIE_DEVICE set: > > * base-xhci > * e1000e > * nvme > * pvscsi > * vfio-pci > * virtio-pci > * vmxnet3 > > 2) base-pci-bridge > > Not all PCI bridges are legacy PCI devices, so > INTERFACE_LEGACY_PCI_DEVICE is added only to the subtypes that > are actually legacy PCI devices: > > * dec-21154-p2p-bridge > * i82801b11-bridge > * pbm-bridge > * pci-bridge > > The direct subtypes of base-pci-bridge not touched by this patch > are: > > * xilinx-pcie-root: Already marked as PCIe-only device. > * pcie-port: all non-abstract subtypes of pcie-port are already > marked as PCIe-only devices. > > 3) megasas-base > > Not all megasas devices are legacy PCI devices, so the interface > names are added to the subclasses registered by > megasas_register_types(), according to information in the > megasas_devices[] array. > > "megasas-gen2" already implements INTERFACE_PCIE_DEVICE, so add > INTERFACE_LEGACY_PCI_DEVICE only to "megasas". > > Signed-off-by: Eduardo Habkost> --- > hw/acpi/piix4.c | 1 + > hw/audio/ac97.c | 4 > hw/audio/es1370.c | 4 > hw/audio/intel-hda.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/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/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-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/ppc/ppc4xx_pci.c | 4 > hw/scsi/esp-pci.c | 4 > hw/scsi/lsi53c895a.c| 4 > hw/scsi/megasas.c | 4 > hw/scsi/mptsas.c| 4 > 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/vfio/pci-quirks.c| 4 > hw/watchdog/wdt_i6300esb.c | 4 > hw/xen/xen_pt.c | 4 > 62 files changed, 288 insertions(+) > > diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c > index f276967..defe98a 100644 > --- a/hw/acpi/piix4.c > +++ b/hw/acpi/piix4.c > @@ -723,6 +723,7 @@ static const TypeInfo piix4_pm_info = { > .interfaces = (InterfaceInfo[]) { > { TYPE_HOTPLUG_HANDLER }, > { TYPE_ACPI_DEVICE_IF }, > +{ INTERFACE_LEGACY_PCI_DEVICE }, > { } > } > }; > diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c > index 959c786..6027e15 100644 > --- a/hw/audio/ac97.c > +++ b/hw/audio/ac97.c > @@ -1431,6 +1431,10 @@ static const TypeInfo ac97_info = { > .parent=
[Qemu-devel] [PATCH 4/5] pci: Add INTERFACE_LEGACY_PCI_DEVICE to legacy PCI devices
Add INTERFACE_LEGACY_PCI_DEVICE to all direct subtypes of TYPE_PCI_DEVICE, except: 1) The ones that already have INTERFACE_PCIE_DEVICE set: * base-xhci * e1000e * nvme * pvscsi * vfio-pci * virtio-pci * vmxnet3 2) base-pci-bridge Not all PCI bridges are legacy PCI devices, so INTERFACE_LEGACY_PCI_DEVICE is added only to the subtypes that are actually legacy PCI devices: * dec-21154-p2p-bridge * i82801b11-bridge * pbm-bridge * pci-bridge The direct subtypes of base-pci-bridge not touched by this patch are: * xilinx-pcie-root: Already marked as PCIe-only device. * pcie-port: all non-abstract subtypes of pcie-port are already marked as PCIe-only devices. 3) megasas-base Not all megasas devices are legacy PCI devices, so the interface names are added to the subclasses registered by megasas_register_types(), according to information in the megasas_devices[] array. "megasas-gen2" already implements INTERFACE_PCIE_DEVICE, so add INTERFACE_LEGACY_PCI_DEVICE only to "megasas". Signed-off-by: Eduardo Habkost--- hw/acpi/piix4.c | 1 + hw/audio/ac97.c | 4 hw/audio/es1370.c | 4 hw/audio/intel-hda.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/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/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-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/ppc/ppc4xx_pci.c | 4 hw/scsi/esp-pci.c | 4 hw/scsi/lsi53c895a.c| 4 hw/scsi/megasas.c | 4 hw/scsi/mptsas.c| 4 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/vfio/pci-quirks.c| 4 hw/watchdog/wdt_i6300esb.c | 4 hw/xen/xen_pt.c | 4 62 files changed, 288 insertions(+) diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index f276967..defe98a 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -723,6 +723,7 @@ static const TypeInfo piix4_pm_info = { .interfaces = (InterfaceInfo[]) { { TYPE_HOTPLUG_HANDLER }, { TYPE_ACPI_DEVICE_IF }, +{ INTERFACE_LEGACY_PCI_DEVICE }, { } } }; diff --git a/hw/audio/ac97.c b/hw/audio/ac97.c index 959c786..6027e15 100644 --- a/hw/audio/ac97.c +++ b/hw/audio/ac97.c @@ -1431,6 +1431,10 @@ static const TypeInfo ac97_info = { .parent= TYPE_PCI_DEVICE, .instance_size = sizeof (AC97LinkState), .class_init= ac97_class_init, +.interfaces = (InterfaceInfo[]) { +{ INTERFACE_LEGACY_PCI_DEVICE }, +{ }, +}, }; static void ac97_register_types (void) diff --git a/hw/audio/es1370.c b/hw/audio/es1370.c index dd7c23d..ed14ec3 100644 --- a/hw/audio/es1370.c +++ b/hw/audio/es1370.c @@ -1082,6