On 04/03/2017 07:11 PM, Burakov, Anatoly wrote:
From: Andrew Rybchenko [mailto:arybche...@solarflare.com]
Sent: Saturday, April 1, 2017 11:47 AM
To: dev@dpdk.org; Alejandro Lucero <alejandro.luc...@netronome.com>
Cc: Burakov, Anatoly <anatoly.bura...@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.luc...@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.luc...@netronome.com>
      Acked-by: Anatoly Burakov <anatoly.bura...@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.

Reply via email to