From: Alex Williamson <alex.williamson@redhat.com>
To: Cornelia Huck <cohuck@redhat.com>
Cc: "John G Johnson" <john.g.johnson@oracle.com>,
"Tian, Kevin" <kevin.tian@intel.com>,
mtsirkin@redhat.com, "Daniel P. Berrangé" <berrange@redhat.com>,
quintela@redhat.com, "Jason Wang" <jasowang@redhat.com>,
"Felipe Franciosi" <felipe@nutanix.com>,
"Zeng, Xin" <xin.zeng@intel.com>,
qemu-devel@nongnu.org,
"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
"Kirti Wankhede" <kwankhede@nvidia.com>,
"Thanos Makatos" <thanos.makatos@nutanix.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Christophe de Dinechin" <dinechin@redhat.com>,
"Yan Zhao" <yan.y.zhao@intel.com>
Subject: Re: [RFC v3] VFIO Migration
Date: Mon, 16 Nov 2020 10:30:15 -0700 [thread overview]
Message-ID: <20201116103015.5dc20ab2@w520.home> (raw)
In-Reply-To: <20201116145226.57139a21.cohuck@redhat.com>
On Mon, 16 Nov 2020 14:52:26 +0100
Cornelia Huck <cohuck@redhat.com> wrote:
> On Mon, 16 Nov 2020 11:02:51 +0000
> Stefan Hajnoczi <stefanha@redhat.com> wrote:
>
> > On Wed, Nov 11, 2020 at 04:35:43PM +0100, Cornelia Huck wrote:
> > > On Wed, 11 Nov 2020 15:14:49 +0000
> > > Stefan Hajnoczi <stefanha@redhat.com> wrote:
> > >
> > > > On Wed, Nov 11, 2020 at 12:48:53PM +0100, Cornelia Huck wrote:
> > > > > On Tue, 10 Nov 2020 13:14:04 -0700
> > > > > Alex Williamson <alex.williamson@redhat.com> wrote:
> > > > > > On Tue, 10 Nov 2020 09:53:49 +0000
> > > > > > Stefan Hajnoczi <stefanha@redhat.com> wrote:
> > > > >
> > > > > > > Device models supported by an mdev driver and their details can be read from
> > > > > > > the migration_info.json attr. Each mdev type supports one device model. If a
> > > > > > > parent device supports multiple device models then each device model has an
> > > > > > > mdev type. There may be multiple mdev types for a single device model when they
> > > > > > > offer different migration parameters such as resource capacity or feature
> > > > > > > availability.
> > > > > > >
> > > > > > > For example, a graphics card that supports 4 GB and 8 GB device instances would
> > > > > > > provide gfx-4GB and gfx-8GB mdev types with memory=4096 and memory=8192
> > > > > > > migration parameters, respectively.
> > > > > >
> > > > > >
> > > > > > I think this example could be expanded for clarity. I think this is
> > > > > > suggesting we have mdev_types of gfx-4GB and gfx-8GB, which each
> > > > > > implement some common device model, ie. com.gfx/GPU, where the
> > > > > > migration parameter 'memory' for each defaults to a value matching the
> > > > > > type name. But it seems like this can also lead to some combinatorial
> > > > > > challenges for management tools if these parameters are writable. For
> > > > > > example, should a management tool create a gfx-4GB device and change to
> > > > > > memory parameter to 8192 or a gfx-8GB device with the default parameter?
> > > > >
> > > > > I would expect that the mdev types need to match in the first place.
> > > > > What role would the memory= parameter play, then? Allowing gfx-4GB to
> > > > > have memory=8192 feels wrong to me.
> > > >
> > > > Yes, I expected these mdev types to only accept a fixed "memory" value,
> > > > but there's nothing stopping a driver author from making "memory" accept
> > > > any value.
> > >
> > > I'm wondering how useful the memory parameter is, then. The layer
> > > checking for compatibility can filter out inconsistent settings, but
> > > why would we need to express something that is already implied in the
> > > mdev type separately?
> >
> > To avoid tying device instances to specific mdev types. An mdev type is
> > a device implementation, but the goal is to enable migration between
> > device implementations (new/old or completely different
> > implementations).
> >
> > Imagine a new physical device that now offers variable memory because
> > users found the static mdev types too constraining. How do you migrate
> > back and forth between new and old physical devices if the migration
> > parameters don't describe the memory size? Migration parameters make it
> > possible. Without them the management tool needs to hard-code knowledge
> > of specific mdev types that support migration.
>
> But doesn't the management tool *still* need to keep hardcoded
> information about what the value of that memory parameter was for an
> existing mdev type? If we have gfx-variable with a memory parameter,
> fine; but if the target is supposed to accept a gfx-4GB device, it
> should simply instantiate a gfx-4GB device.
>
> I'm getting a bit worried about the complexity of the checking that
> management software is supposed to perform. Is it really that bad to
> restrict the models to a few, well-defined ones? Especially in the mdev
> case, where we have control about what is getting instantiated?
This is exactly what I was noting with the combinatorial challenges of
the management tool. If a vendor chooses to use a generic base device
model which they modify with parameters to match an assortment of mdev
types, then management tools will need to match every mdev type
implementing that device model to determine if compatible parameters
exist. OTOH, the vendor could choose to create a device model that
specifically describes a single configuration of known parameters.
For example, mdev type gfx-4GB might be a device model com.gfx/GPU with
a fixed memory parameter of 4GB or it could be a device model
com.gfx/GPU-4G with no additional parameter. The hard part is when the
vendor offers an mdev type gfx-varGB with device model com.gfx/GPU and
available memory options of 1GB, 2GB, 4GB, 8GB. At that point a
management tool might decide to create a gfx-varGB device instance and
tune the memory parameter or create a gfx-4GB instance, either would be
correct and we've expressed no preference for one or the other. Thanks,
Alex
next prev parent reply other threads:[~2020-11-16 17:32 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-10 9:53 [RFC v3] VFIO Migration Stefan Hajnoczi
2020-11-10 11:12 ` Paolo Bonzini
2020-11-11 14:36 ` Stefan Hajnoczi
2020-11-11 15:48 ` Daniel P. Berrangé
2020-11-12 15:26 ` Cornelia Huck
2020-11-16 10:48 ` Stefan Hajnoczi
2020-11-16 11:15 ` Stefan Hajnoczi
2020-11-16 11:41 ` Daniel P. Berrangé
2020-11-16 12:03 ` Michael S. Tsirkin
2020-11-16 12:05 ` Daniel P. Berrangé
2020-11-16 12:34 ` Michael S. Tsirkin
2020-11-16 12:45 ` Daniel P. Berrangé
2020-11-16 12:51 ` Michael S. Tsirkin
2020-11-16 12:48 ` Gerd Hoffmann
2020-11-16 12:54 ` Michael S. Tsirkin
2020-11-16 12:06 ` Michael S. Tsirkin
2020-11-10 20:14 ` Alex Williamson
2020-11-11 11:48 ` Cornelia Huck
2020-11-11 15:14 ` Stefan Hajnoczi
2020-11-11 15:35 ` Cornelia Huck
2020-11-16 11:02 ` Stefan Hajnoczi
2020-11-16 13:52 ` Cornelia Huck
2020-11-16 17:30 ` Alex Williamson [this message]
2020-11-24 17:24 ` Dr. David Alan Gilbert
2020-11-11 15:10 ` Stefan Hajnoczi
2020-11-11 15:28 ` Cornelia Huck
2020-11-16 11:36 ` Stefan Hajnoczi
2020-11-11 11:19 ` Cornelia Huck
2020-11-11 15:35 ` Stefan Hajnoczi
2020-11-11 12:56 ` Dr. David Alan Gilbert
2020-11-11 15:34 ` Stefan Hajnoczi
2020-11-11 15:41 ` Dr. David Alan Gilbert
2020-11-16 14:38 ` Stefan Hajnoczi
2020-11-17 9:44 ` Michael S. Tsirkin
2020-12-01 13:17 ` Stefan Hajnoczi
2020-11-11 16:18 ` Thanos Makatos
2020-11-16 15:24 ` Stefan Hajnoczi
2020-11-24 17:29 ` Dr. David Alan Gilbert
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=20201116103015.5dc20ab2@w520.home \
--to=alex.williamson@redhat.com \
--cc=berrange@redhat.com \
--cc=cohuck@redhat.com \
--cc=dgilbert@redhat.com \
--cc=dinechin@redhat.com \
--cc=felipe@nutanix.com \
--cc=jasowang@redhat.com \
--cc=john.g.johnson@oracle.com \
--cc=kevin.tian@intel.com \
--cc=kraxel@redhat.com \
--cc=kwankhede@nvidia.com \
--cc=mtsirkin@redhat.com \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
--cc=stefanha@redhat.com \
--cc=thanos.makatos@nutanix.com \
--cc=xin.zeng@intel.com \
--cc=yan.y.zhao@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).