From: Vasilis Liaskovitis Date: Mon, 10 Mar 2025 23:58:33 +0000 (+0100) Subject: vfio/pci-quirks: Exclude non-ioport BAR from ATI quirk X-Git-Tag: v10.0.0-rc0~9^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=63316f973ad9f1465b1cb820c5be954260663c8a;p=thirdparty%2Fqemu.git vfio/pci-quirks: Exclude non-ioport BAR from ATI quirk The ATI BAR4 quirk is targeting an ioport BAR. Older devices may have a BAR4 which is not an ioport, causing a segfault here. Test the BAR type to skip these devices. Similar to "8f419c5b: vfio/pci-quirks: Exclude non-ioport BAR from NVIDIA quirk" Untested, as I don't have the card to test. Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2856 Signed-off-by: Vasilis Liaskovitis Reviewed-by: Alex Williamson Link: https://lore.kernel.org/qemu-devel/20250310235833.41026-1-vliaskovitis@suse.com Signed-off-by: Cédric Le Goater --- diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index f998761abc..3f002252ac 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -403,7 +403,7 @@ static void vfio_probe_ati_bar4_quirk(VFIOPCIDevice *vdev, int nr) /* This windows doesn't seem to be used except by legacy VGA code */ if (!vfio_pci_is(vdev, PCI_VENDOR_ID_ATI, PCI_ANY_ID) || - !vdev->vga || nr != 4) { + !vdev->vga || nr != 4 || !vdev->bars[4].ioport) { return; }