Use dmidecode -t slot to find out the slot numbers that are in USE and the Bus Address. Use that bus address in lspci -s <busaddress> to find out what is in the slot.

For example: I have NIC in slot-7, Q-Logic in Slot – 2 and Mellanox in Slot – 3. I can then take this info and put Slot 2 at the top of the list on Set Option ROM Execution Order in BIOS to boot from SAN.

# dmidecode -t slot | grep -E "Designation|Usage|Bus Address
        Designation: Node 1 PCI-Express Slot 1
        Current Usage: Available
        Bus Address: 0000:8b:00.0
        Designation: Node 1 PCI-Express Slot 2
        Current Usage: In Use
        Bus Address: 0000:86:00.0
        Designation: Node 1 PCI-Express Slot 3
        Current Usage: In Use
        Bus Address: 0000:90:00.0
        Designation: Node 1 PCI-Express Slot 4
        Current Usage: Available
        Bus Address: 0000:95:00.0
        Designation: Node 1 PCI-Express Slot 5
        Current Usage: Available
        Bus Address: 0000:0e:00.0
        Designation: Node 1 PCI-Express Slot 6
        Current Usage: Available
        Bus Address: 0000:13:00.0
        Designation: Node 1 PCI-Express Slot 7
        Current Usage: In Use
        Bus Address: 0000:18:00.0


# lspci -s 0000:18:00.0
18:00.0 Ethernet controller: Emulex Corporation OneConnect 10Gb NIC (rev 02)
[root@node04 ~]# lspci -s 0000:86:00.0
86:00.0 Fibre Channel: QLogic Corp. ISP2432-based 4Gb Fibre Channel to PCI Express HBA (rev 03)
[root@node04 ~]# lspci -s 0000:90:00.0
90:00.0 InfiniBand: Mellanox Technologies MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] (rev b0)

There is also a script that is on Dell site. http://linux.dell.com/cgi-bin/cgit.cgi/sys-admin-tools.git/tree/list-pcie-ports.sh