pcie/layerscape: fix bug in bus number computation when setting msi-map
PATCH 1/1 pcie/layerscape: fix bug in bus number computation when setting msi-map
When multiple PCI cards are present in an ls2080a board, the second card does not get its msi-map set up properly due to a bug in computing the bus number.
The bus number returned by PCI_BDF() is not the actual PCI bus number, but instead represents a global u-boot PCI bus number. A given bus number is relative to hose->first_busno, so that has to be subtracted from the PCI device id.
--- drivers/pci/pcie_layerscape.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
drivers/pci/pcie_layerscape.c +6 -3
@@ -569,7 +569,7 @@ static void fdt_fixup_pcie(void *blob)unsigned char header_type;int index;u32 streamid; -pci_dev_t dev; +pci_dev_t dev, bdf;int bus;unsigned short id;struct pci_controller *hose;
@@ -611,12 +611,15 @@ static void fdt_fixup_pcie(void *blob)continue ; } +/* the DT fixup must be relative to the hose first_busno */ + bdf = dev -PCI_BDF (hose->first_busno,0 ,0 ); +/* map PCI b.d.f to streamID in LUT */ -ls_pcie_lut_set_mapping (pcie, index, dev >>8 , +ls_pcie_lut_set_mapping (pcie, index, bdf >>8 , streamid);/* update msi-map in device tree */ -fdt_pcie_set_msi_map_entry (blob, pcie, dev >>8 , +fdt_pcie_set_msi_map_entry (blob, pcie, bdf >>8 , streamid); } }
Signature · 1 line
1.9.1
PATCH 1/1 pcie/layerscape: fix bug in bus number computation when setting msi-map
Ping?
Bogdan P.
Quoted 47 lines · Bogdan Purcareata
When multiple PCI cards are present in an ls2080a board, the second card does not get its msi-map set up properly due to a bug in computing the bus number.
The bus number returned by
PCI_BDF()is not the actual PCI bus number, but instead represents a global u-boot PCI bus number. A given bus number is relative tohose->first_busno, so that has to be subtracted from the PCI device id.Signed-off-by Bogdan Purcareata <[email protected]>Acked-by Stuart Yoder <[email protected]>--- drivers/pci/pcie_layerscape.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)drivers/pci/pcie_layerscape.c +6
-3@@ -569,7 +569,7 @@ static void fdt_fixup_pcie(void *blob)unsigned char header_type;int index;u32 streamid; -pci_dev_t dev; +pci_dev_t dev, bdf;int bus;unsigned short id;struct pci_controller *hose;@@ -611,12 +611,15 @@ static void fdt_fixup_pcie(void *blob)continue ; } +/* the DT fixup must be relative to the hose first_busno */ + bdf = dev -PCI_BDF (hose->first_busno,0 ,0 ); +/* map PCI b.d.f to streamID in LUT */ -ls_pcie_lut_set_mapping (pcie, index, dev >>8 , +ls_pcie_lut_set_mapping (pcie, index, bdf >>8 , streamid);/* update msi-map in device tree */ -fdt_pcie_set_msi_map_entry (blob, pcie, dev >>8 , +fdt_pcie_set_msi_map_entry (blob, pcie, bdf >>8 , streamid); } }
PATCH 1/1 pcie/layerscape: fix bug in bus number computation when setting msi-map
Quoted 1 line · Bogdan Purcareata
Ping?
If you checked patchwork, you would see this patch is marked as "under review". It is in my test queue and will be merged along with other patches.
York
Quoted 51 lines
Bogdan P.
Quoted 47 lines · Bogdan Purcareata
When multiple PCI cards are present in an ls2080a board, the second card does not get its msi-map set up properly due to a bug in computing the bus number.
The bus number returned by
PCI_BDF()is not the actual PCI bus number, but instead represents a global u-boot PCI bus number. A given bus number is relative tohose->first_busno, so that has to be subtracted from the PCI device id.Signed-off-by Bogdan Purcareata <[email protected]>Acked-by Stuart Yoder <[email protected]>--- drivers/pci/pcie_layerscape.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)drivers/pci/pcie_layerscape.c +6
-3@@ -569,7 +569,7 @@ static void fdt_fixup_pcie(void *blob)unsigned char header_type;int index;u32 streamid; -pci_dev_t dev; +pci_dev_t dev, bdf;int bus;unsigned short id;struct pci_controller *hose;@@ -611,12 +611,15 @@ static void fdt_fixup_pcie(void *blob)continue ; } +/* the DT fixup must be relative to the hose first_busno */ + bdf = dev -PCI_BDF (hose->first_busno,0 ,0 ); +/* map PCI b.d.f to streamID in LUT */ -ls_pcie_lut_set_mapping (pcie, index, dev >>8 , +ls_pcie_lut_set_mapping (pcie, index, bdf >>8 , streamid);/* update msi-map in device tree */ -fdt_pcie_set_msi_map_entry (blob, pcie, dev >>8 , +fdt_pcie_set_msi_map_entry (blob, pcie, bdf >>8 , streamid); } }
York Sun
AppliedPATCH 1/1 pcie/layerscape: fix bug in bus number computation when setting msi-map
In reply to Bogdan PurcareataQuoted 9 lines · Bogdan Purcareata
When multiple PCI cards are present in an ls2080a board, the second card does not get its msi-map set up properly due to a bug in computing the bus number.
The bus number returned by
PCI_BDF()is not the actual PCI bus number, but instead represents a global u-boot PCI bus number. A given bus number is relative tohose->first_busno, so that has to be subtracted from the PCI device id.
Quoted 6 lines
Signed-off-by Bogdan Purcareata <[email protected]>Acked-by Stuart Yoder <[email protected]>--- drivers/pci/pcie_layerscape.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
Applied to fsl-qoriq master branch. Awaiting upstream. Thanks.
York