switchtec: Fix minor bug with partition ID register
When a switch endpoint is configured without NTB, the mmio_ntb registers will read all zeros. However, in corner case configurations where the partition ID is not zero and NTB is not enabled, the code will have the wrong partition ID and this causes the driver to use the wrong set of drivers. To fix this we simply take the partition ID from the system info region. Reported-by: Dingbao Chen <dingbao.chen@microsemi.com> Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
This commit is contained in:
parent
e40cf640b8
commit
9871e9bb5c
|
@ -1441,12 +1441,15 @@ static int switchtec_init_pci(struct switchtec_dev *stdev,
|
|||
stdev->mmio_sys_info = stdev->mmio + SWITCHTEC_GAS_SYS_INFO_OFFSET;
|
||||
stdev->mmio_flash_info = stdev->mmio + SWITCHTEC_GAS_FLASH_INFO_OFFSET;
|
||||
stdev->mmio_ntb = stdev->mmio + SWITCHTEC_GAS_NTB_OFFSET;
|
||||
stdev->partition = ioread8(&stdev->mmio_ntb->partition_id);
|
||||
stdev->partition = ioread8(&stdev->mmio_sys_info->partition_id);
|
||||
stdev->partition_count = ioread8(&stdev->mmio_ntb->partition_count);
|
||||
stdev->mmio_part_cfg_all = stdev->mmio + SWITCHTEC_GAS_PART_CFG_OFFSET;
|
||||
stdev->mmio_part_cfg = &stdev->mmio_part_cfg_all[stdev->partition];
|
||||
stdev->mmio_pff_csr = stdev->mmio + SWITCHTEC_GAS_PFF_CSR_OFFSET;
|
||||
|
||||
if (stdev->partition_count < 1)
|
||||
stdev->partition_count = 1;
|
||||
|
||||
init_pff(stdev);
|
||||
|
||||
pci_set_drvdata(pdev, stdev);
|
||||
|
|
Loading…
Reference in New Issue