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

Re: [Xen-devel] Multi-Function PCI passthrough not implemented?



>>> On 16.09.13 at 14:11, Sander Eikelenboom <linux@xxxxxxxxxxxxxx> wrote:

> Monday, September 16, 2013, 9:27:58 AM, you wrote:
> 
>>>>> On 13.09.13 at 23:52, Antonin Bas <antoninb@xxxxxxxxxxxxxxx> wrote:
>>> There are several mentions of these features on the wiki
>>> (http://wiki.xen.org/wiki/VTdHowTo,
>>> http://wiki.xen.org/wiki/Bus:Device.Function_(BDF)_Notation). However,
>>> this is definitely not working and I could not see it implemented
>>> anywhere in libxl.
>>> 
>>> I actually even think there is a bug in the code:
>>> 
>>> xlu_pci_parse_bdf in libxlu_pci.c accepts inputs of the form
>>> "domain:bus:dev.*" (* is really a star here), which is supposed to
>>> designate all the functions for this PCI device.
>>> In this case, pcidev->func will be set to an uninitiated value by
>>> pcidev_struct_fill().
>>> Later on, libxl__device_pci_add() and libxl_pcidev_assignable()
>>> (libxl_pci.c) are called with pcidev as an argument. And because
>>> pcidev->func is garbage, an error is thrown.
> 
>> You not mentioning the Xen version I'd assume you talk about
>> -unstable, yet looking at the code I can't match things up with
>> what you say above. In fact it looks to me as if multi-function
>> support was properly dealt with by libxl{u,}_pci.c...
> 
> Hi Jan,
> 
> It is easy to trigger with unstable.
> 
> libxl__device_pci_add early on calls libxl_pcidev_assignable to verify the 
> device func is assignable,
> but this function isn't multifunction aware and tries to match the 
> non-existant function number used
> to to the assignable list which only contains the individual reserved device 
> and function numbers.
> 
> So it returns false and xl gives an error like:
> libxl: error: libxl_pci.c:1056:libxl__device_pci_add: PCI device 0:7:0.f0 is 
> not assignable
> 
> 
> So libxl_pcidev_assignable should check if it's multifunction is specified, 
> and if so check if all 8 func's for this devices
> are assignable.

Ah, okay, I needed to check one call hierarchy level deeper...

Anyway - just wanted to get the situation confirmed, I'll leave
fixing this to our tools experts anyway.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.