On Wed, Aug 19, 2020 at 09:13:45PM -0600, Alex Williamson wrote:
On Thu, 20 Aug 2020 08:18:10 +0800
Yan Zhao <yan.y.zhao(a)intel.com> wrote:
> On Wed, Aug 19, 2020 at 11:50:21AM -0600, Alex Williamson wrote:
> <...>
> > > > > > What I care about is that we have a *standard* userspace
API for
> > > > > > performing device compatibility checking / state migration,
for use by
> > > > > > QEMU/libvirt/ OpenStack, such that we can write code
without countless
> > > > > > vendor specific code paths.
> > > > > >
> > > > > > If there is vendor specific stuff on the side, that's
fine as we can
> > > > > > ignore that, but the core functionality for device compat /
migration
> > > > > > needs to be standardized.
> > > > >
> > > > > To summarize:
> > > > > - choose one of sysfs or devlink
> > > > > - have a common interface, with a standardized way to add
> > > > > vendor-specific attributes
> > > > > ?
> > > >
> > > > Please refer to my previous email which has more example and details.
> > > hi Parav,
> > > the example is based on a new vdpa tool running over netlink, not based
> > > on devlink, right?
> > > For vfio migration compatibility, we have to deal with both mdev and
physical
> > > pci devices, I don't think it's a good idea to write a new tool
for it, given
> > > we are able to retrieve the same info from sysfs and there's already
an
> > > mdevctl from Alex (
https://github.com/mdevctl/mdevctl).
> > >
> > > hi All,
> > > could we decide that sysfs is the interface that every VFIO vendor driver
> > > needs to provide in order to support vfio live migration, otherwise the
> > > userspace management tool would not list the device into the compatible
> > > list?
> > >
> > > if that's true, let's move to the standardizing of the sysfs
interface.
> > > (1) content
> > > common part: (must)
> > > - software_version: (in major.minor.bugfix scheme)
> > > - device_api: vfio-pci or vfio-ccw ...
> > > - type: mdev type for mdev device or
> > > a signature for physical device which is a counterpart for
> > > mdev type.
> > >
> > > device api specific part: (must)
> > > - pci id: pci id of mdev parent device or pci id of physical pci
> > > device (device_api is vfio-pci)
> >
> > As noted previously, the parent PCI ID should not matter for an mdev
> > device, if a vendor has a dependency on matching the parent device PCI
> > ID, that's a vendor specific restriction. An mdev device can also
> > expose a vfio-pci device API without the parent device being PCI. For
> > a physical PCI device, shouldn't the PCI ID be encompassed in the
> > signature? Thanks,
> >
> you are right. I need to put the PCI ID as a vendor specific field.
> I didn't do that because I wanted all fields in vendor specific to be
> configurable by management tools, so they can configure the target device
> according to the value of a vendor specific field even they don't know
> the meaning of the field.
> But maybe they can just ignore the field when they can't find a matching
> writable field to configure the target.
If fields can be ignored, what's the point of reporting them? Seems
it's no longer a requirement. Thanks,
sorry about the confusion. I mean this condition:
about to migrate, openstack searches if there are existing matching
MDEVs,
if yes, i.e. all common/vendor specific fields match, then just create
a VM with the matching target MDEV. (in this condition, the PCI ID field
is not ignored);
if not, openstack tries to create one MDEV according to mdev_type, and
configures MDEV according to the vendor specific attributes.
as PCI ID is not a configurable field, it just ignore the field.
Thanks
Yan