]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
PCI/DPC: Print all TLP Prefixes, not just the first
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Thu, 18 Jan 2024 11:08:15 +0000 (13:08 +0200)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:19:43 +0000 (18:19 -0400)
[ Upstream commit 6568d82512b0a64809acff3d7a747362fa4288c8 ]

The TLP Prefix Log Register consists of multiple DWORDs (PCIe r6.1 sec
7.9.14.13) but the loop in dpc_process_rp_pio_error() keeps reading from
the first DWORD, so we print only the first PIO TLP Prefix (duplicated
several times), and we never print the second, third, etc., Prefixes.

Add the iteration count based offset calculation into the config read.

Fixes: f20c4ea49ec4 ("PCI/DPC: Add eDPC support")
Link: https://lore.kernel.org/r/20240118110815.3867-1-ilpo.jarvinen@linux.intel.com
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
[bhelgaas: add user-visible details to commit log]
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/pci/pcie/dpc.c

index 3ceed8e3de4167a6c81a334f94fde125c5e832b5..b4818007788f951edec08dd39e2c40410a84f95c 100644 (file)
@@ -230,7 +230,7 @@ static void dpc_process_rp_pio_error(struct pci_dev *pdev)
 
        for (i = 0; i < pdev->dpc_rp_log_size - 5; i++) {
                pci_read_config_dword(pdev,
-                       cap + PCI_EXP_DPC_RP_PIO_TLPPREFIX_LOG, &prefix);
+                       cap + PCI_EXP_DPC_RP_PIO_TLPPREFIX_LOG + i * 4, &prefix);
                pci_err(pdev, "TLP Prefix Header: dw%d, %#010x\n", i, prefix);
        }
  clear_status: