qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Neo Jia <cjia@nvidia.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Yan Zhao <yan.y.zhao@intel.com>,
	intel-gvt-dev@lists.freedesktop.org, kvm@vger.kernel.org,
	aik@ozlabs.ru, Zhengxiao.zx@alibaba-inc.com,
	shuangtai.tst@alibaba-inc.com, qemu-devel@nongnu.org,
	kwankhede@nvidia.com, eauger@redhat.com, yi.l.liu@intel.com,
	eskultet@redhat.com, ziye.yang@intel.com, mlevitsk@redhat.com,
	pasic@linux.ibm.com, libvir-list@redhat.com,
	arei.gonglei@huawei.com, felipe@nutanix.com, Ken.Xue@amd.com,
	kevin.tian@intel.com, dgilbert@redhat.com,
	zhenyuw@linux.intel.com, alex.williamson@redhat.com,
	changpeng.liu@intel.com, cohuck@redhat.com,
	linux-kernel@vger.kernel.org, zhi.a.wang@intel.com,
	jonathan.davies@nutanix.com, shaopeng.he@intel.com
Subject: Re: [Qemu-devel] [PATCH 1/2] vfio/mdev: add version field as mandatory attribute for mdev device
Date: Tue, 23 Apr 2019 21:13:41 -0700	[thread overview]
Message-ID: <20190424041340.GA5498@nvidia.com> (raw)
In-Reply-To: <20190423103939.GF6022@redhat.com>

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

> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: Neo Jia <cjia@nvidia.com>
To: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: kvm@vger.kernel.org, aik@ozlabs.ru, Zhengxiao.zx@alibaba-inc.com,
	shuangtai.tst@alibaba-inc.com, qemu-devel@nongnu.org,
	kwankhede@nvidia.com, eauger@redhat.com, yi.l.liu@intel.com,
	eskultet@redhat.com, ziye.yang@intel.com, mlevitsk@redhat.com,
	pasic@linux.ibm.com, libvir-list@redhat.com,
	arei.gonglei@huawei.com, felipe@nutanix.com, Ken.Xue@amd.com,
	kevin.tian@intel.com, Yan Zhao <yan.y.zhao@intel.com>,
	dgilbert@redhat.com, zhenyuw@linux.intel.com,
	alex.williamson@redhat.com, intel-gvt-dev@lists.freedesktop.org,
	changpeng.liu@intel.com, cohuck@redhat.com,
	linux-kernel@vger.kernel.org, zhi.a.wang@intel.com,
	jonathan.davies@nutanix.com, shaopeng.he@intel.com
Subject: Re: [Qemu-devel] [PATCH 1/2] vfio/mdev: add version field as mandatory attribute for mdev device
Date: Tue, 23 Apr 2019 21:13:41 -0700	[thread overview]
Message-ID: <20190424041340.GA5498@nvidia.com> (raw)
Message-ID: <20190424041341.kjOLWuPC3rz7MR7dQErWGI5B6JpnKhZu8yL_FBQiDMw@z> (raw)
In-Reply-To: <20190423103939.GF6022@redhat.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="UTF-8", Size: 3491 bytes --]

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

> 
> 


  parent reply	other threads:[~2019-04-24  4:18 UTC|newest]

Thread overview: 64+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-19  8:32 [Qemu-devel] [PATCH 0/2] introduction of version attribute for VFIO live migration Yan Zhao
2019-04-19  8:32 ` Yan Zhao
2019-04-19  8:35 ` [Qemu-devel] [PATCH 1/2] vfio/mdev: add version field as mandatory attribute for mdev device Yan Zhao
2019-04-19  8:35   ` Yan Zhao
2019-04-22 14:39   ` Alex Williamson
2019-04-22 14:39     ` Alex Williamson
2019-04-23  1:01     ` Yan Zhao
2019-04-23  1:01       ` Yan Zhao
2019-04-23  1:21       ` Alex Williamson
2019-04-23  1:21         ` Alex Williamson
2019-04-23  5:41         ` Yan Zhao
2019-04-23  5:41           ` Yan Zhao
2019-04-23  9:45           ` Cornelia Huck
2019-04-23  9:45             ` Cornelia Huck
2019-04-23 10:24           ` Daniel P. Berrangé
2019-04-23 10:24             ` Daniel P. Berrangé
2019-04-24  3:33             ` Yan Zhao
2019-04-24  3:33               ` Yan Zhao
2019-04-23 15:02           ` Alex Williamson
2019-04-23 15:02             ` Alex Williamson
2019-04-24  3:39             ` Yan Zhao
2019-04-24  3:39               ` Yan Zhao
2019-04-24 14:14               ` Alex Williamson
2019-04-24 14:14                 ` Alex Williamson
2019-04-26  1:44                 ` Yan Zhao
2019-04-26  1:44                   ` Yan Zhao
2019-04-23  9:59   ` Cornelia Huck
2019-04-23  9:59     ` Cornelia Huck
2019-04-24  3:10     ` Yan Zhao
2019-04-24  3:10       ` Yan Zhao
2019-04-24  7:56       ` Cornelia Huck
2019-04-24  7:56         ` Cornelia Huck
2019-04-24  8:15         ` Yan Zhao
2019-04-24  8:15           ` Yan Zhao
2019-04-30 15:29           ` Cornelia Huck
2019-04-30 15:29             ` Cornelia Huck
2019-05-07  5:39             ` Yan Zhao
2019-05-07  8:51               ` Cornelia Huck
2019-04-23 10:39   ` Daniel P. Berrangé
2019-04-23 10:39     ` Daniel P. Berrangé
2019-04-23 12:35     ` Alex Williamson
2019-04-23 12:35       ` Alex Williamson
2019-04-23 13:44       ` Daniel P. Berrangé
2019-04-23 13:44         ` Daniel P. Berrangé
2019-04-23 14:48         ` Alex Williamson
2019-04-23 14:48           ` Alex Williamson
2019-04-23 14:57           ` Daniel P. Berrangé
2019-04-23 14:57             ` Daniel P. Berrangé
2019-04-24  4:13     ` Neo Jia [this message]
2019-04-24  4:13       ` Neo Jia
2019-04-24  9:10     ` Christophe de Dinechin
2019-04-24  9:10       ` Christophe de Dinechin
2019-04-26  2:01       ` Yan Zhao
2019-04-26  2:01         ` Yan Zhao
2019-04-19  8:35 ` [Qemu-devel] [PATCH 2/2] drm/i915/gvt: export mdev device version to sysfs for Intel vGPU Yan Zhao
2019-04-19  8:35   ` Yan Zhao
2019-04-22  8:37   ` Zhenyu Wang
2019-04-22  8:37     ` Zhenyu Wang
2019-04-23  0:33     ` Yan Zhao
2019-04-23  0:33       ` Yan Zhao
2019-04-23 11:39   ` Cornelia Huck
2019-04-23 11:39     ` Cornelia Huck
2019-04-24  2:33     ` Yan Zhao
2019-04-24  2:33       ` Yan Zhao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190424041340.GA5498@nvidia.com \
    --to=cjia@nvidia.com \
    --cc=Ken.Xue@amd.com \
    --cc=Zhengxiao.zx@alibaba-inc.com \
    --cc=aik@ozlabs.ru \
    --cc=alex.williamson@redhat.com \
    --cc=arei.gonglei@huawei.com \
    --cc=berrange@redhat.com \
    --cc=changpeng.liu@intel.com \
    --cc=cohuck@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eauger@redhat.com \
    --cc=eskultet@redhat.com \
    --cc=felipe@nutanix.com \
    --cc=intel-gvt-dev@lists.freedesktop.org \
    --cc=jonathan.davies@nutanix.com \
    --cc=kevin.tian@intel.com \
    --cc=kvm@vger.kernel.org \
    --cc=kwankhede@nvidia.com \
    --cc=libvir-list@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mlevitsk@redhat.com \
    --cc=pasic@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=shaopeng.he@intel.com \
    --cc=shuangtai.tst@alibaba-inc.com \
    --cc=yan.y.zhao@intel.com \
    --cc=yi.l.liu@intel.com \
    --cc=zhenyuw@linux.intel.com \
    --cc=zhi.a.wang@intel.com \
    --cc=ziye.yang@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).