xemu/hw/vfio
Corvin Köhne 11b5ce95be vfio/igd: add new bar0 quirk to emulate BDSM mirror
The BDSM register is mirrored into MMIO space at least for gen 11 and
later devices. Unfortunately, the Windows driver reads the register
value from MMIO space instead of PCI config space for those devices [1].
Therefore, we either have to keep a 1:1 mapping for the host and guest
address or we have to emulate the MMIO register too. Using the igd in
legacy mode is already hard due to it's many constraints. Keeping a 1:1
mapping may not work in all cases and makes it even harder to use. An
MMIO emulation has to trap the whole MMIO page. This makes accesses to
this page slower compared to using second level address translation.
Nevertheless, it doesn't have any constraints and I haven't noticed any
performance degradation yet making it a better solution.

[1] 5c351bee0f/devicemodel/hw/pci/passthrough.c (L650-L653)

Signed-off-by: Corvin Köhne <c.koehne@beckhoff.com>
Reviewed-by: Alex Williamson <alex.williamson@redhat.com>
2024-09-17 10:37:55 +02:00
..
Kconfig hw/vfio: Move the IGD quirk code to a separate file 2020-02-06 11:55:42 -07:00
amd-xgbe.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
ap.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
calxeda-xgmac.c Include migration/vmstate.h less 2019-08-16 13:31:52 +02:00
ccw.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
common.c vfio queue: 2024-07-24 12:58:46 +10:00
container-base.c vfio-container-base: Introduce vfio_container_get_iova_ranges() helper 2024-07-09 11:50:37 +02:00
container.c vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device() 2024-07-23 17:14:52 +02:00
cpr.c vfio/cpr: Make vfio_cpr_register_container() return bool 2024-05-16 16:59:20 +02:00
display.c vfio/display: Fix vfio_display_edid_init() error path 2024-07-09 11:50:37 +02:00
helpers.c vfio/{iommufd, container}: Invoke HostIOMMUDevice::realize() during attach_device() 2024-07-23 17:14:52 +02:00
igd.c vfio/igd: add new bar0 quirk to emulate BDSM mirror 2024-09-17 10:37:55 +02:00
iommufd.c vfio/iommufd: Implement VFIOIOMMUClass::query_dirty_bitmap support 2024-07-23 17:14:52 +02:00
meson.build vfio: register container for cpr 2024-03-08 22:10:13 +01:00
migration.c qapi/vfio: Rename VfioMigrationState to Qapi*, and drop prefix 2024-09-10 14:03:45 +02:00
pci-quirks.c vfio/igd: add new bar0 quirk to emulate BDSM mirror 2024-09-17 10:37:55 +02:00
pci.c hw: Use device_class_set_legacy_reset() instead of opencoding 2024-09-13 15:31:44 +01:00
pci.h vfio/igd: add new bar0 quirk to emulate BDSM mirror 2024-09-17 10:37:55 +02:00
platform.c vfio/platform: Make vfio_populate_device() and vfio_base_device_init() return bool 2024-05-22 10:04:21 +02:00
spapr.c vfio/container: Change VFIOContainerBase to use QOM 2024-06-24 23:15:31 +02:00
trace-events hw/vfio/pci.c: Use correct type in trace_vfio_msix_early_setup() 2024-09-17 10:37:55 +02:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00