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 > >
next prev 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: linkBe 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).