[libvirt] [libvirt-tck PATCH] Fix PCI device hotplug tests

Daniel P. Berrange berrange at redhat.com
Fri Oct 24 15:19:33 UTC 2014


On Fri, Oct 24, 2014 at 09:15:42AM -0600, Jim Fehlig wrote:
> Eric Blake wrote:
> > On 10/23/2014 03:21 PM, Jim Fehlig wrote:
> >   
> >> This patch fixes a few issues noted while enabling the TCK PCI device
> >> hotplug tests.
> >>
> >> First, the call to node device dettach function misses parameters, resulting
> >> in the following failure
> >>
> >>  Failed test 'detached device from host OS'
> >>  at /usr/share/libvirt-tck/tests/domain/250-pci-host-hotplug.t line 90.
> >>  died: Usage: Sys::Virt::NodeDevice::dettach(dev, driversv, flags=0)
> >>  at /usr/share/libvirt-tck/tests/domain/250-pci-host-hotplug.t line 90.
> >>
> >> Trivally fixed by adding the missing parameters when calling node device
> >> dettach function.
> >>     
> >
> > That part is fine to fix (note that 'dettach' is a typo but part of the
> > API, so we are stuck with it; it's nice to use 'detach' where possible).
> >
> >   
> >> Second, it appears qemu needs to reach some state of initialization before
> >> host device attach/detach works properly.  Currently, the test fails when
> >> detaching the device from the guest, resetting it, and reattaching it to
> >> the host
> >>
> >>  Failed test 'reset the host PCI device'
> >>  at /usr/share/libvirt-tck/tests/domain/250-pci-host-hotplug.t line 110.
> >>  died: Sys::Virt::Error (libvirt error code: 1, message: internal error:
> >>  Not resetting active device 0000:03:00.1)
> >>
> >>  Failed test 'reattached device to host OS'
> >>  at /usr/share/libvirt-tck/tests/domain/250-pci-host-hotplug.t line 111.
> >>  died: Sys::Virt::Error (libvirt error code: 55, message: Requested operation
> >>  is not valid: PCI device 0000:03:00.1 is still in use by driver QEMU, domain
> >>  tck)
> >>
> >> I've found that sleeping for a bit after creating the guest allows the
> >> tests to pass.
> >>     
> >
> > But that papers over the bug.  Ideally, the libvirt API should be
> > waiting longer for the guest to relinquish control of the device before
> > returning success on the first call, so that the second call cannot hit
> > a collision.
> 
> Even with this delay, the guest has not completely booted when the test
> successfully completes.  So it is not clear to me how much guest
> cooperation is needed.
> 
> >   I'm not so sure that this is the right patch to make to
> > TCK, and wonder if we should instead be patching libvirt proper.  Or is
> > it a case that because detach requires guest cooperation, we need to
> > wait long enough for the guest to boot to the point that it can
> > cooperate?
> 
> Perhaps.  Maybe acpiphp needs to be loaded in the guest kernel before
> this will work.

Yeah, I'm a little fuzzy on just how functiuonal the guest OS has to
be. I suspect the kernel mod is sufficient, so whether it finishes
booting is probably not important as long as the mod is loaded.


Regards,
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 :|




More information about the libvir-list mailing list