[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190424041340.GA5498@nvidia.com>
Date: Tue, 23 Apr 2019 21:13:41 -0700
From: Neo Jia <cjia@...dia.com>
To: Daniel P. Berrangé <berrange@...hat.com>
CC: Yan Zhao <yan.y.zhao@...el.com>,
<intel-gvt-dev@...ts.freedesktop.org>, <kvm@...r.kernel.org>,
<aik@...abs.ru>, <Zhengxiao.zx@...baba-inc.com>,
<shuangtai.tst@...baba-inc.com>, <qemu-devel@...gnu.org>,
<kwankhede@...dia.com>, <eauger@...hat.com>, <yi.l.liu@...el.com>,
<eskultet@...hat.com>, <ziye.yang@...el.com>,
<mlevitsk@...hat.com>, <pasic@...ux.ibm.com>,
<libvir-list@...hat.com>, <arei.gonglei@...wei.com>,
<felipe@...anix.com>, <Ken.Xue@....com>, <kevin.tian@...el.com>,
<dgilbert@...hat.com>, <zhenyuw@...ux.intel.com>,
<alex.williamson@...hat.com>, <changpeng.liu@...el.com>,
<cohuck@...hat.com>, <linux-kernel@...r.kernel.org>,
<zhi.a.wang@...el.com>, <jonathan.davies@...anix.com>,
<shaopeng.he@...el.com>
Subject: Re: [Qemu-devel] [PATCH 1/2] vfio/mdev: add version field as
mandatory attribute for mdev device
On Tue, Apr 23, 2019 at 11:39:39AM +0100, Daniel P. Berrangé wrote:
> On Fri, Apr 19, 2019 at 04:35:04AM -0400, Yan Zhao wrote:
> > device version attribute in mdev sysfs is used by user space software
> > (e.g. libvirt) to query device compatibility for live migration of VFIO
> > mdev devices. This attribute is mandatory if a mdev device supports live
> > migration.
> >
> > It consists of two parts: common part and vendor proprietary part.
> > common part: 32 bit. lower 16 bits is vendor id and higher 16 bits
> > identifies device type. e.g., for pci device, it is
> > "pci vendor id" | (VFIO_DEVICE_FLAGS_PCI << 16).
> > vendor proprietary part: this part is varied in length. vendor driver can
> > specify any string to identify a device.
> >
> > When reading this attribute, it should show device version string of the
> > device of type <type-id>. If a device does not support live migration, it
> > should return errno.
> > When writing a string to this attribute, it returns errno for
> > incompatibility or returns written string length in compatibility case.
> > If a device does not support live migration, it always returns errno.
> >
> > For user space software to use:
> > 1.
> > Before starting live migration, user space software first reads source side
> > mdev device's version. e.g.
> > "#cat \
> > /sys/bus/pci/devices/0000\:00\:02.0/5ac1fb20-2bbf-4842-bb7e-36c58c3be9cd/mdev_type/version"
> > 00028086-193b-i915-GVTg_V5_4
> >
> > 2.
> > Then, user space software writes the source side returned version string
> > to device version attribute in target side, and checks the return value.
> > If a negative errno is returned in the target side, then mdev devices in
> > source and target sides are not compatible;
> > If a positive number is returned and it equals to the length of written
> > string, then the two mdev devices in source and target side are compatible.
> > e.g.
> > (a) compatibility case
> > "# echo 00028086-193b-i915-GVTg_V5_4 >
> > /sys/bus/pci/devices/0000\:00\:02.0/882cc4da-dede-11e7-9180-078a62063ab1/mdev_type/version"
> >
> > (b) incompatibility case
> > "#echo 00028086-193b-i915-GVTg_V5_1 >
> > /sys/bus/pci/devices/0000\:00\:02.0/882cc4da-dede-11e7-9180-078a62063ab1/mdev_type/version"
> > -bash: echo: write error: Invalid argument
>
> What you have written here seems to imply that each mdev type is able to
> support many different versions at the same time. Writing a version into
> this sysfs file then chooses which of the many versions to actually use.
>
> This is good as it allows for live migration across driver software upgrades.
>
> A mgmt application may well want to know what versions are supported for an
> mdev type *before* starting a migration. A mgmt app can query all the 100's
> of hosts it knows and thus figure out which are valid to use as the target
> of a migration.
>
> IOW, we want to avoid the ever hitting the incompatibility case in the
> first place, by only choosing to migrate to a host that we know is going
> to be compatible.
>
> This would need some kind of way to report the full list of supported
> versions against the mdev supported types on the host.
What would be the typical scenario / use case for mgmt layer to query the version
information? Do they expect this get done completely offline as long as the
vendor driver installed on each host?
Thanks,
Neo
>
>
Powered by blists - more mailing lists