Re: [RFC PATCH] vfio: add fixup for broken PCI devices

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

 



On 07/06/12 09:17, Alex Williamson wrote:
> On Fri, 2012-05-25 at 17:35 +1000, Alexey Kardashevskiy wrote:
>> Some adapters (like NEC PCI USB controller) do not flush their config
>> on a sioftware reset and remember DMA config, etc.
>>
>> If we use such an adapter with QEMU, then crash QEMU (stop it with
>> ctrl-A ctrl-X), and try to use it in QEMU again, it may start working
>> immediately with previous config when pci_enable_device() is called
>> on that PCI function.
>>
>> To eliminate such effect, some quirk should be called. The proposed
>> pci_fixup_final does its job well for mentioned NEC PCI USB but not
>> sure if it is 100% correct.
>>
>> Signed-off-by: Alexey Kardashevskiy <aik@xxxxxxxxx>
>> ---
>>  drivers/vfio/pci/vfio_pci.c |    2 ++
>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/drivers/vfio/pci/vfio_pci.c b/drivers/vfio/pci/vfio_pci.c
>> index 1e5315c..6e7c12d 100644
>> --- a/drivers/vfio/pci/vfio_pci.c
>> +++ b/drivers/vfio/pci/vfio_pci.c
>> @@ -88,6 +88,8 @@ static void vfio_pci_disable(struct vfio_pci_device *vdev)
>>  {
>>  	int bar;
>>  
>> +	pci_fixup_device(pci_fixup_final, vdev->pdev);
>> +
>>  	pci_disable_device(vdev->pdev);
>>  
>>  	vfio_pci_set_irqs_ioctl(vdev, VFIO_IRQ_SET_DATA_NONE |
> 
> Sorry, just taking a look at this again.  Do you have any idea what
> fixup it is that makes it work?  Calling a fixup at this point seems
> rather odd.  I suspect the problem is that vfio is only calling
> pci_load_and_free_saved_state if pci_reset_function reports that it
> worked.  kvm device assignment doesn't do that and I'm not sure why I
> did that.  If you unconditionally call pci_load_and_free_saved_state a
> bit further down in this function, does it solve the problem?  Thanks,


Checked again.

Seems to be a false alarm, cannot reproduce the bad behavior anymore, looks like it was caused by
another issue which Alex fixed.

So although the problem may arise again, there is nothing urgent to do at the moment.



-- 
Alexey
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux