[dpdk-dev] vfio: failed to select IOMMU type

Andrew Rybchenko arybchenko at solarflare.com
Tue Apr 4 17:29:32 CEST 2017


On 04/03/2017 07:11 PM, Burakov, Anatoly wrote:
>> From: Andrew Rybchenko [mailto:arybchenko at solarflare.com]
>> Sent: Saturday, April 1, 2017 11:47 AM
>> To: dev at dpdk.org; Alejandro Lucero <alejandro.lucero at netronome.com>
>> Cc: Burakov, Anatoly <anatoly.burakov at intel.com>
>> Subject: vfio: failed to select IOMMU type
>>
>> Hi,
>>
>> after the following commit (it was picked up by dpdk-next-net recently), I
>> have problems with VFIO:
>> ===
>> commit 94c0776b1badd1ee715d60f07391058f23494365
>> Author: Alejandro Lucero <alejandro.lucero at netronome.com>
>> Date:   Wed Mar 29 10:54:50 2017 +0100
>>
>>       vfio: support hotplug
>>
>>       Current device hotplug is just supported by UIO managed devices.
>>       This patch adds same functionality with VFIO.
>>
>>       It has been validated through tests using IOMMU and also with
>>       VFIO and no-iommu mode.
>>
>>       Signed-off-by: Alejandro Lucero <alejandro.lucero at netronome.com>
>>       Acked-by: Anatoly Burakov <anatoly.burakov at intel.com> ===
>>
>> The second PCI function fails to bind:
>> # testpmd -w 06:00.0 -w 06:00.1 -c 0xc -n 4  -- --rxd=512 --txd=512 --crc-strip -
>> -disable-hw-vlan-filter --disable-hw-vlan-strip
>> EAL: Detected 16 lcore(s)
>> EAL: 2048 hugepages of size 2097152 reserved, but no mounted hugetlbfs
>> found for that size
>> EAL: Probing VFIO support...
>> EAL: VFIO support initialized
>> EAL: PCI device 0000:06:00.0 on NUMA socket 0
>> EAL:   probe driver: 1924:a03 net_sfc_efx
>> EAL:   using IOMMU type 1 (Type 1)
>> EAL: Ignore mapping IO port bar(0) addr: 2101
>> EAL: PCI device 0000:06:00.1 on NUMA socket 0
>> EAL:   probe driver: 1924:a03 net_sfc_efx
>> EAL:   0000:06:00.1 failed to select IOMMU type
>> EAL: Requested device 0000:06:00.1 cannot be used
>> EAL: Requested device 0000:7f:08.0 cannot be used
>> EAL: Requested device 0000:7f:08.2 cannot be used
>> EAL: Requested device 0000:7f:08.3 cannot be used ...
>>
>> Also I don't understand why it spams about many other PCI functions taking
>> into account that just 2 are specified in whitelist.
>>
>> I've bisected to find commit when the problem appears, but has not found
>> root cause yet.
>>
>> Andrew.
> Hi Andrew,
>
> It would be interesting to know what was wrong there. The whitelist issue is surprising, and from the logs it seems like EAL is trying to set up DMA mappings multiple times. Posting a more detailed log would be very helpful in tracking down the issue as well. I have tested that code with ixgbe devices, so I'm not too sure what can go wrong there.

Hi Anatoly,

I've sent patch to fix whitelist issue. It the result of rte_exit 
substitution with just logging.

I think a key to the main problem is the same IOMMU group used for both 
PCI functions.
It tries to set IOMMU type using the same file descriptor twice. The 
second set is dummy, since the same value is set, but still fails, I 
guess, because it is already in use.
See logs with debug enabled and few extra logs below:

EAL: PCI device 0000:06:00.0 on NUMA socket 0
EAL:   probe driver: 1924:a03 net_sfc_efx
EAL: vfio_get_group_fd:75: group-no=53
EAL: vfio_get_group_fd:135: group-no=53 fd=16 filename=/dev/vfio/53
EAL: vfio_setup_device:319: ps-type=0 groups=1
EAL:   using IOMMU type 1 (Type 1)
EAL: Ignore mapping IO port bar(0) addr: 2101
EAL:   PCI memory mapped at 0x7fffc0000000
EAL: Trying to map BAR 4 that contains the MSI-X table. Trying offsets: 
0x40000000000:0x0000, 0x40000001000:0x3000
EAL:   PCI memory mapped at 0x7fffc0801000
PMD: sfc_efx 0000:06:00.0 #0: use ef10 Rx datapath
PMD: sfc_efx 0000:06:00.0 #0: use ef10_simple Tx datapath
EAL: PCI device 0000:06:00.1 on NUMA socket 0
EAL:   probe driver: 1924:a03 net_sfc_efx
EAL: vfio_get_group_fd:75: group-no=53
EAL: vfio_setup_device:319: ps-type=0 groups=1
EAL:   set IOMMU type 1 (Type 1) failed, error 22 (Invalid argument)
EAL:   set IOMMU type 7 (sPAPR) failed, error 22 (Invalid argument)
EAL:   set IOMMU type 8 (No-IOMMU) failed, error 22 (Invalid argument)
EAL:   0000:06:00.1 failed to select IOMMU type
EAL: Requested device 0000:06:00.1 cannot be used

Andrew.


More information about the dev mailing list