lspci is a utility on Linux for displaying information about PCI buses in the system and devices connected to them. Most of info it displays are from linux sysfs backend, some are from kernel.

       By  default,  it  shows  a  brief  list  of devices. Use the options described below to request either a more verbose output or output intended for parsing by other programs.

Package and installation

In case your server installation doesn't have the package, for RHEL/CentOS/Fedora/SL, run

yum install pciutils

Default output

# lspci
00:00.0 Host bridge: Intel Corporation 5520 I/O Hub to ESI Port (rev 22)
...
00:16.7 System peripheral: Intel Corporation 5520/5500/X58 Chipset QuickData Technology Device
(rev 22)
00:1a.0 USB controller: Intel Corporation 82801JI (ICH10 Family) USB UHCI Controller #4
...
00:1d.7 USB controller: Intel Corporation 82801JI (ICH10 Family) USB2 EHCI Controller #1
...
0b:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
15:00.0 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
15:00.1 Fibre Channel: QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA (rev 02)
1f:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
(rev b0)

The output shows that the whole system pci devices, the first column is each device slot number.

show device in the slot

# lspci -s 1f:00.0
1f:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
(rev b0)

-s [[[[<domain>]:]<bus>]:][<slot>][.[<func>]]
  Show  only  devices  in the specified domain (in case your machine has several host bridges,
they can either share a common bus number space or each of them can address a PCI domain of
its own; domains are numbered from 0 to ffff), bus (0 to ff), slot  (0 to 1f) and function
(0 to 7).
Each component of the device address can be omitted or set to "*", both meaning "any value".
All numbers are hexadecimal.  E.g., "0:" means all devices on bus 0, "0" means all functions
of device 0 on any bus, "0.3"  selects third function of device 0 on all buses and ".4" shows
only the fourth function of each device.

Device output machine readable form option

-mm    Dump PCI device data in a machine readable form for easy parsing by scripts.

Device verbose output

# lspci -vs 1f:00.0
1f:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] (rev b0)
    Subsystem: Mellanox Technologies Device 0013
    Physical Slot: 4
    Flags: bus master, fast devsel, latency 0, IRQ 30
    Memory at 97a00000 (64-bit, non-prefetchable) [size=1M]
    Memory at fb800000 (64-bit, prefetchable) [size=8M]
    Expansion ROM at <ignored> [disabled]
    Capabilities: [40] Power Management version 3
    Capabilities: [48] Vital Product Data
    Capabilities: [9c] MSI-X: Enable+ Count=128 Masked-
    Capabilities: [60] Express Endpoint, MSI 00
    Capabilities: [100] Alternative Routing-ID Interpretation (ARI)
    Capabilities: [148] Device Serial Number 00-02-c9-03-00-4f-68-7e
    Kernel driver in use: mlx4_core
    Kernel modules: mlx4_en, mlx4_core

Note: more v means more verbose

    -v     Be verbose and display detailed information about all devices.
    -vv    Be very verbose and display more details. This level includes everything deemed useful.
    -vvv   Be even more verbose and display everything we are able to parse,  even  if  it  doesn't  look
              interesting at all (e.g., undefined memory regions).

Combine -m and -v to display tag:value pair info for a pci device

A sequence of records separated by blank lines. Each line containing a single 'tag: value' pair

# lspci -vmms 1f:00.0
Slot:    1f:00.0
Class:    Ethernet controller
Vendor:    Mellanox Technologies
Device:    MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
SVendor:    Mellanox Technologies
SDevice:    Device 0013
PhySlot:    4
Rev:    b0

Display PCI device vendor and device codes as numbers.

-n     Show PCI vendor and device codes as numbers instead of looking them up in the PCI ID
list, useful for scripting and programing

# lspci -nvmms 1f:00.0
Slot:    1f:00.0
Class:    0200
Vendor:    15b3
Device:    6750
SVendor:    15b3
SDevice:    0013
PhySlot:    4
Rev:    b0

In the example above, the following tags are defined

Slot    The name of the slot where the device resides ([domain:]bus:device.function).  
This tag is always the first in a record.
Class   Name of the class.
Vendor  Name of the vendor.
Device  Name of the device.
SVendor  Name of the subsystem vendor (optional).
SDevice  Name of the subsystem (optional).
PhySlot  The physical slot where the device resides (optional, Linux only).
Rev     Revision number (optional).
ProgIf  Programming interface (optional).
Driver  Kernel driver currently handling the device (optional, Linux only).
Module  Kernel module reporting that it is capable of handling the device (optional, Linux only).

Display device by vendor code and device code

Use the vendor/device code you got from above example, you can search the device slot and other info, useful in scripting.
# lspci -vmmd 1077:2532
Slot:    15:00.0
Class:    Fibre Channel
Vendor:    QLogic Corp.
Device:    ISP2532-based 8Gb Fibre Channel to PCI Express HBA
SVendor:    QLogic Corp.
SDevice:    Device 015d
PhySlot:    2
Rev:    02

Slot:    15:00.1
Class:    Fibre Channel
Vendor:    QLogic Corp.
Device:    ISP2532-based 8Gb Fibre Channel to PCI Express HBA
SVendor:    QLogic Corp.
SDevice:    Device 015d
PhySlot:    2
Rev:    02

Show kernel module of a device

# lspci -ks 1f:00.0
1f:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
(rev b0)
  Subsystem: Mellanox Technologies Device 0013
  Kernel driver in use: mlx4_core
  Kernel modules: mlx4_core, mlx4_en

Display pci devices in tree format

# lspci -tv
-[0000:00]-+-00.0  Intel Corporation 5520 I/O Hub to ESI Port
           +-01.0-[0b-0f]--+-00.0  Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
           |               \-00.1  Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
           +-02.0-[10-14]--
           +-03.0-[15-19]--+-00.0  QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA
           |               \-00.1  QLogic Corp. ISP2532-based 8Gb Fibre Channel to PCI Express HBA
           +-05.0-[1a-1e]--
           +-07.0-[1f-23]----00.0  Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
           +-09.0-[24-28]--

Display a device output with -vvv

Pretty much everything you need are here, including device part number

# lspci -vvvs 1f:00.0
1f:00.0 Ethernet controller: Mellanox Technologies MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s]
(rev b0)
    Subsystem: Mellanox Technologies Device 0013
    Physical Slot: 4
    Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr+ Stepping- SERR- FastB2B-
DisINTx+
    Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR-
<PERR- INTx-
    Latency: 0, Cache Line Size: 64 bytes
    Interrupt: pin A routed to IRQ 30
    Region 0: Memory at 97a00000 (64-bit, non-prefetchable) [size=1M]
    Region 2: Memory at fb800000 (64-bit, prefetchable) [size=8M]
    Expansion ROM at <ignored> [disabled]
    Capabilities: [40] Power Management version 3
        Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
        Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
    Capabilities: [48] Vital Product Data
        Product Name: Hawk Dual Port
        Read-only fields:
            [PN] Part number: 81Y1540
            [EC] Engineering changes: A3
            [SN] Serial number: 81Y1540YK502000045L
            [V0] Vendor specific: PCIe Gen2 x8
            [RV] Reserved: checksum good, 0 byte(s) reserved
        Read/write fields:
            [V1] Vendor specific: N/A
            [YA] Asset tag: N/A
            [RW] Read-write area: 106 byte(s) free
        End
    Capabilities: [9c] MSI-X: Enable+ Count=128 Masked-
        Vector table: BAR=0 offset=0007c000
        PBA: BAR=0 offset=0007d000
    Capabilities: [60] Express (v2) Endpoint, MSI 00
        DevCap:    MaxPayload 256 bytes, PhantFunc 0, Latency L0s <64ns, L1 unlimited
            ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+
        DevCtl:    Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported-
            RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- FLReset-
            MaxPayload 256 bytes, MaxReadReq 4096 bytes
        DevSta:   CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
        LnkCap:   Port #8, Speed 5GT/s, Width x8, ASPM L0s, Latency L0 unlimited, L1 unlimited
            ClockPM- Surprise- LLActRep- BwNot-
        LnkCtl:    ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk-
            ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
        LnkSta:    Speed 5GT/s, Width x8, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
        DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported
        DevCtl2: Completion Timeout: 260ms to 900ms, TimeoutDis-, LTR-, OBFF Disabled
        LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-
             Compliance De-emphasis: -6dB
        LnkSta2: Current De-emphasis Level: -3.5dB, EqualizationComplete-, EqualizationPhase1-
             EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
    Capabilities: [100 v1] Alternative Routing-ID Interpretation (ARI)
        ARICap:    MFVC- ACS-, Next Function: 0
        ARICtl:    MFVC- ACS-, Function Group: 0
    Capabilities: [148 v1] Device Serial Number 00-02-c9-03-00-4f-68-7e
    Kernel driver in use: mlx4_core
    Kernel modules: mlx4_core, mlx4_en

For more info about sysfs filesystem
https://www.kernel.org/pub/linux/kernel/people/mochel/doc/papers/ols-2005/mochel.pdf

Also, there is a useful utility called systool and sysfs fc tool kit to help you understand more about Linux sysfs