On Fri, 2020-12-11 at 22:11 +0530, Puranjay Mohan wrote: > PCI core calls __pcie_print_link_status() for every device, it prints > both the link width and the link speed. skd_pci_info() does the same > thing again, hence it can be removed. Hmmm... On my box, I see this for the skd card: [ 8.509243] pci 0000:d8:00.0: [1b39:0001] type 00 class 0x018000 [ 8.515933] pci 0000:d8:00.0: reg 0x10: [mem 0xfbe00000-0xfbe0ffff] [ 8.521924] pci 0000:d8:00.0: reg 0x14: [mem 0xfbe10000-0xfbe10fff] [ 8.527957] pci 0000:d8:00.0: reg 0x30: [mem 0xfbd00000-0xfbdfffff pref] [ 8.534999] pci 0000:d8:00.0: supports D1 D2 No link speed. Checking the code, I think you need to actually call pcie_print_link_status() (which calls __pcie_print_link_status() with verbose = true) from the driver to see anything. Otherwise, the PCIe core will not print anything if the driver is just probing and getting resources for the card. > > Signed-off-by: Puranjay Mohan <puranjay12@xxxxxxxxx> > --- > drivers/block/skd_main.c | 31 ------------------------------- > 1 file changed, 31 deletions(-) > > diff --git a/drivers/block/skd_main.c b/drivers/block/skd_main.c > index a962b4551bed..da7aac5335d9 100644 > --- a/drivers/block/skd_main.c > +++ b/drivers/block/skd_main.c [...] > static int skd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > { > int i; > int rc = 0; > - char pci_str[32]; > struct skd_device *skdev; > > dev_dbg(&pdev->dev, "vendor=%04X device=%04x\n", pdev->vendor, > @@ -3201,8 +3172,6 @@ static int skd_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent) > goto err_out_regions; > } > > - skd_pci_info(skdev, pci_str); > - dev_info(&pdev->dev, "%s 64bit\n", pci_str); Replace these 2 lines with: pcie_print_link_status(pdev); And the link speed information will be printed. -- Damien Le Moal Western Digital Research