vPASID capability for VF

From: Tian, Kevin
Date: Tue May 09 2023 - 04:37:04 EST


According to PCIe spec (7.8.9 PASID Extended Capability Structure):

The PASID configuration of the single non-VF Function representing
the device is also used by all VFs in the device. A PF is permitted
to implement the PASID capability, but VFs must not implement it.

To enable PASID on VF then one open is where to locate the PASID
capability in VF's vconfig space. vfio-pci doesn't know which offset
may contain VF specific config registers. Finding such offset must
come from a device specific knowledge.

iirc we haven't closed this open in previous discussion. It's probably
right time to revisit it and agree on a solution now.

Three options on the table:

1) Use vfio-pci variant driver. Easy to support especially when the VF
also plans to support live migration. is it overburdened otherwise?

2) Have vfio-pci maintain a table tracking hard-coded offset per
vendor/device ID.

3) Extend PCI core to allow PF driver specifying the offset for VF

Which one is cleanest in your view?

Thanks
Kevin