On Tue, 11 Mar 2025 00:58:33 +0100 Vasilis Liaskovitis <vliaskovi...@suse.com> wrote:
> 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 <vliaskovi...@suse.com> > --- > hw/vfio/pci-quirks.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c > index c53591fe2b..15598bbaf4 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; > } > We should probably predicate calls to vfio_bar_quirk_setup() on VFIOBAR.size to avoid such segfaults, but agree this likely fixes the reported issue as well. Reviewed-by: Alex Williamson <alex.william...@redhat.com>