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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Daniel P. Berrange wrote:
> 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.
>   

Right.  IMO, sleeping in this test is not papering over a bug.  The bug
is attempting to hotplug/hotunplug devices before the guest has an
opportunity to boot.  As currently written, the attempt to attach/detach
occurs before seabios finishes loading :-).

Regards,
Jim

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list




[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]