Cannot create VFs on one PF, but can create on another

On Host side ,I can create VFs on enp1s0f0 like

echo 2 > /sys/class/net/enp1s0f0/device/sriov_numvfs

But it doesn’t work on enp1s0f1

echo 2 > /sys/class/net/enp1s0f1/device/sriov_numvfs

It returns

bash: echo: write error: Input/output error

I check the driver using -s

and mlxconfig tool ,nothing different between two ports except some SF configuration

dmesg log shows below

mlx5_core 0000:01:00.1: mlx5_sriov_enable:186:(pid 6253): pci_enable_sriov failed : -5

Hi Waterzhu,

What OS/Kernel/MLNX_OFED/FW are running on the host?
What type of server?
SRIOV has been enabled on the second port via our mlxconfig utility, am I correct?
Is this server running the latest BIOS version?
Can you check if your BIOS ARI (Alternate Routing ID) setting is enabled?



Summary of Hardware Considerations for SR-IOV

Firmware (BIOS or UEFI) must support SR-IOV. Check if the extension is enabled by default. If not, enable it manually. This is similar to enabling the virtualization extension (VT-d or AMD-Vi). Refer to vendor manuals for specific details.

Root ports, or ports immediately upstream of the PCIe device (such as a PCIe switch), must support ARI.

PCIe device must support SR-IOV.

It’s Ubuntu 20.0,5.4.0-26-generic
super-micro x11
what’s I mean is One BF2 on the same Host , But One port can use SR-IOV on the host, but the other one cannot. I use the kernel echo 2 > /sys/class/net/enp1s0f0/device/sriov_numvfs, not via mlxconifg.
I just use the mlxconfig to check sriov Flag is set.
I supposed that the Hardware is OK,because One port use SR-IOV success.
Or you mean if BIOS has problem, it is expressed as one port can create success and the other cannot