On Wed, Aug 24, 2011 at 04:16:33AM -0400, Laine Stump wrote:
On 08/23/2011 06:50 AM, Daniel P. Berrange wrote:
>>Although I realize that many people are predisposed to not like the
>>idea of PCI passthrough of ethernet devices (including me), it seems
>>that it's going to be used, so we may as well provide the management
>>tools to do it in a sane manner.
>Reluctantly I think we need to provide the neccessary information
>underneath the<hostdev> element. Fortunately we already have an
>XML schema for port profile and such things, that we share between
>the<interface> device element and the<network> schema.
I had actually been considering from the beginning that a <hostdev>
element would end up in the live XML (after being created based on
the <interface> (and the <network> it references) while the guest is
starting up). This keeps network device config out of hostdev space,
and hostdev config out of network device space (and fits in with the
idea of eliminating host-specific config info from the domain config
(since the actual PCI device to be used isn't in the domain XML, but
is instead determined at domain startup.)
If it's acceptable to add non-persistent <hostdev>s to the live XML,
the main open item I see is that the management apps trying to
migrate a guest containing them will need to understand that these
transient <hostdev> devices will have replacements automatically
plugged in on the destination by the networking code. For that
matter, the management app shouldn't be unplugging them either (and
neither should "virsh detach-device", for example), because they
will require extra code not normally run during a PCI hot-unplug (to
disassociate the port profile, and return the ethernet device to the
network's pool) (So maybe the hostdev does need some reference back
to the higher level device definition (in this case <interface>)
after all. Bah.)
Having transient <hostdev>s does not really work nicely, because we want
all PCI devices in the guest to be persistently in the XML, so we can
ensure the guest PCI address does not get changed each time the guest
is run. It also doesn't really solve the problem of finding all attached
host devices for a guest, since you still have to look at two different
places when the guest is shutoff. IMHO the <hostdev> needs to be persistent
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|