mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
hw/vfio: Move the IGD quirk code to a separate file
The IGD quirk code defines a separate device, the so-called "vfio-pci-igd-lpc-bridge" which shows up as a user-creatable device in all QEMU binaries that include the vfio code. This is a little bit unfortunate for two reasons: First, this device is completely useless in binaries like qemu-system-s390x. Second we also would like to disable it in downstream RHEL which currently requires some extra patches there since the device does not have a proper Kconfig-style switch yet. So it would be good if the device could be disabled more easily, thus let's move the code to a separate file instead and introduce a proper Kconfig switch for it which gets only enabled by default if we also have CONFIG_PC_PCI enabled. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
committed by
Alex Williamson
parent
2021b7c971
commit
29d62771c8
@@ -36,3 +36,8 @@ config VFIO_AP
|
||||
default y
|
||||
select VFIO
|
||||
depends on LINUX && S390_CCW_VIRTIO
|
||||
|
||||
config VFIO_IGD
|
||||
bool
|
||||
default y if PC_PCI
|
||||
depends on VFIO_PCI
|
||||
|
||||
@@ -5,3 +5,4 @@ obj-$(CONFIG_VFIO_PLATFORM) += platform.o
|
||||
obj-$(CONFIG_VFIO_XGMAC) += calxeda-xgmac.o
|
||||
obj-$(CONFIG_VFIO_AMD_XGBE) += amd-xgbe.o
|
||||
obj-$(CONFIG_VFIO_AP) += ap.o
|
||||
obj-$(CONFIG_VFIO_IGD) += igd.o
|
||||
|
||||
+616
File diff suppressed because it is too large
Load Diff
+3
-611
File diff suppressed because it is too large
Load Diff
@@ -172,6 +172,21 @@ typedef struct VFIOPCIDevice {
|
||||
Notifier irqchip_change_notifier;
|
||||
} VFIOPCIDevice;
|
||||
|
||||
/* Use uin32_t for vendor & device so PCI_ANY_ID expands and cannot match hw */
|
||||
static inline bool vfio_pci_is(VFIOPCIDevice *vdev, uint32_t vendor, uint32_t device)
|
||||
{
|
||||
return (vendor == PCI_ANY_ID || vendor == vdev->vendor_id) &&
|
||||
(device == PCI_ANY_ID || device == vdev->device_id);
|
||||
}
|
||||
|
||||
static inline bool vfio_is_vga(VFIOPCIDevice *vdev)
|
||||
{
|
||||
PCIDevice *pdev = &vdev->pdev;
|
||||
uint16_t class = pci_get_word(pdev->config + PCI_CLASS_DEVICE);
|
||||
|
||||
return class == PCI_CLASS_DISPLAY_VGA;
|
||||
}
|
||||
|
||||
uint32_t vfio_pci_read_config(PCIDevice *pdev, uint32_t addr, int len);
|
||||
void vfio_pci_write_config(PCIDevice *pdev,
|
||||
uint32_t addr, uint32_t val, int len);
|
||||
@@ -189,6 +204,8 @@ void vfio_bar_quirk_finalize(VFIOPCIDevice *vdev, int nr);
|
||||
void vfio_setup_resetfn_quirk(VFIOPCIDevice *vdev);
|
||||
int vfio_add_virt_caps(VFIOPCIDevice *vdev, Error **errp);
|
||||
void vfio_quirk_reset(VFIOPCIDevice *vdev);
|
||||
VFIOQuirk *vfio_quirk_alloc(int nr_mem);
|
||||
void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr);
|
||||
|
||||
extern const PropertyInfo qdev_prop_nv_gpudirect_clique;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user