On Tue, Nov 04, 2025 at 03:27:14PM -0400, Jason Gunthorpe wrote:
> On Tue, Nov 04, 2025 at 11:41:53AM -0600, Lucas De Marchi wrote:
> 
> > > > > +#define INTEL_VGA_VFIO_DEVICE(_id, _info) { \
> > > > > +     PCI_DEVICE(PCI_VENDOR_ID_INTEL, (_id)), \
> > > > > +     .class = PCI_BASE_CLASS_DISPLAY << 16, .class_mask = 0xff << 
> > > > > 16, \
> > > > > +     .driver_data = (kernel_ulong_t)(_info), \
> > > > > +     .override_only = PCI_ID_F_VFIO_DRIVER_OVERRIDE, \
> > > > 
> > > > why do we need this and can't use PCI_DRIVER_OVERRIDE_DEVICE_VFIO()
> > > > directly? Note that there are GPUs that wouldn't match the display class
> > > > above.
> > > > 
> > > >         edb660ad79ff ("drm/intel/pciids: Add match on vendor/id only")
> > > >         5e0de2dfbc1b ("drm/xe/cri: Add CRI platform definition")
> > > > 
> > > > Lucas De Marchi
> > > > 
> > > 
> > > I'll define it on xe-vfio-pci side and use
> > 
> > but no matter where it's defined, why do you need it to match on the
> > class? The vid/devid should be sufficient.
> 
> +1
> 
> Jason

I don't need to match on class.

With PCI_DRIVER_OVERRIDE_DEVICE_VFIO it just becomes:
#define INTEL_PCI_VFIO_DEVICE(_id) { \
        PCI_DRIVER_OVERRIDE_DEVICE_VFIO(PCI_VENDOR_ID_INTEL, (_id)) \
}

static const struct pci_device_id xe_vfio_pci_table[] = {
        INTEL_PTL_IDS(INTEL_PCI_VFIO_DEVICE),
        INTEL_WCL_IDS(INTEL_PCI_VFIO_DEVICE),
        INTEL_BMG_IDS(INTEL_PCI_VFIO_DEVICE),
        {}
};

So, no matching on class, but I still do need a helper macro.

Thanks,
-Michał

Reply via email to