
On Wed, 2009-02-25 at 19:58 +0000, Daniel P. Berrange wrote:
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.
I wonder if we should generalize that beyond just host device, to cover VM device hotplug in general, passing in the same XML doc you'd use for the subsequent virDomainAttachDevice() call.
virDomainCanAttachDevice(virDomainPtr dom, const char *xml);
Though, obviously that won't help for scenarios before a virDomainPtr exists. So might also want a way to ask whether a device is likely to be supported before creating a VM
virConnectSupportsDevice(virConnectPtr conn, const char *xml)
But then maybe this is getting into overkill, and just rename the reset function to
int virNodeDeviceAssignable(virNodeDevicePtr dev);
so we're not explicitly saying 'reset' is the test we're doing, even though that may be the internal impl
I see what you're getting at - we may in future want have an "is assignable" API that goes beyond just "does reset" work and it would be a pity to have to add yet another API. However, "is assignable" in the context of a hotplugging into a running guest is an operation on a given domain - e.g. if you're hotplugging a device on the same bus as a device previously assigned to the same guest, then that's allowed. "reset" seems to me to be a pretty sane operation to expose - especially for what we're now calling "non-managed" assigned devices. It doesn't cover all cases, but it's an step in the right direction. Cheers, Mark.