
On Wed, Feb 25, 2009 at 07:16:28PM +0000, Mark McLoughlin wrote:
On Wed, 2009-02-25 at 17:51 +0000, Daniel P. Berrange wrote:
On Tue, Feb 24, 2009 at 10:21:48PM +0000, Mark McLoughlin wrote:
Before starting a guest virNodeDeviceAttach() is intended to be called on all node devices to be assigned to a guest, followed by virNodeDeviceReset() on those devices.
Once the guest has been shutdown, virNodeDeviceReset() followed by virNodeDeviceReAttach() should be called in order to make the device available to the host again.
This patch merely adds the APIs and stubs out the driver implementations.
While I can see a point in providing public APIs to attach/detach drivers to devices - because we need this for Xen driver PCI passthrough, I'm not sure theres a compelling need for exposing a reset function, because both Xen & your KVM impl are quite happy doing the resets themselves.
The idea with the reset function is that calling reset is a way for the app to query whether this is an assignable device - e.g. if the user chooses a given NIC to pass through in one of the early screens in virt-manager, we can give a "you can't assign that device" error at that point rather than just having the guest fail to start up much later on.
It needs to be a separate API from dettach() because reset() may succeed (in future) if e.g. you dettach() all the functions on a multi-function device before calling reset() on one of those functions.
I think the attach/detach functions should be in the nodedev driver too, because they're not really part of the HV functionality. On modern Linux kernels, both Xen & KVM (and any other users) have the same pci-stub.ko code for managed driver binding. On older Xen kernels, there is the functionally equivalent pci-back.ko.
Sure, but the logic to choose between pci-stub vs. pci-back is HV specific, right?
No, its really kernel version depedant. On old Xen kernels it is always pci-back. On mainline KVM / pv_ops Xen kernels, it'll always be pci-stub There's no need for Xen's pci-back, now the generic pci-stub exists. Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|