mirror of
https://github.com/torvalds/linux.git
synced 2024-12-12 14:12:51 +00:00
PCI/DPC: Remove unnecessary RP PIO register structs
We read and immediately print the RP PIO log registers. We don't save them, so there's no need to define structs for them. Remove the structs and read the registers into local variables instead. No functional change intended. Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> Reviewed-by: Keith Busch <keith.busch@intel.com> Reviewed-by: Sinan Kaya <okaya@codeaurora.org>
This commit is contained in:
parent
f5ec5a0737
commit
f784c41f9c
@ -17,26 +17,6 @@
|
|||||||
#include "../pci.h"
|
#include "../pci.h"
|
||||||
#include "aer/aerdrv.h"
|
#include "aer/aerdrv.h"
|
||||||
|
|
||||||
struct rp_pio_header_log_regs {
|
|
||||||
u32 dw0;
|
|
||||||
u32 dw1;
|
|
||||||
u32 dw2;
|
|
||||||
u32 dw3;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dpc_rp_pio_regs {
|
|
||||||
u32 status;
|
|
||||||
u32 mask;
|
|
||||||
u32 severity;
|
|
||||||
u32 syserror;
|
|
||||||
u32 exception;
|
|
||||||
|
|
||||||
struct rp_pio_header_log_regs header_log;
|
|
||||||
u32 impspec_log;
|
|
||||||
u32 tlp_prefix_log[4];
|
|
||||||
u16 first_error;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct dpc_dev {
|
struct dpc_dev {
|
||||||
struct pcie_device *dev;
|
struct pcie_device *dev;
|
||||||
struct work_struct work;
|
struct work_struct work;
|
||||||
@ -142,78 +122,66 @@ static void dpc_work(struct work_struct *work)
|
|||||||
ctl | PCI_EXP_DPC_CTL_INT_EN);
|
ctl | PCI_EXP_DPC_CTL_INT_EN);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dpc_rp_pio_get_info(struct dpc_dev *dpc,
|
static void dpc_rp_pio_get_info(struct dpc_dev *dpc)
|
||||||
struct dpc_rp_pio_regs *rp_pio)
|
|
||||||
{
|
{
|
||||||
struct device *dev = &dpc->dev->device;
|
struct device *dev = &dpc->dev->device;
|
||||||
struct pci_dev *pdev = dpc->dev->port;
|
struct pci_dev *pdev = dpc->dev->port;
|
||||||
|
u16 cap = dpc->cap_pos, dpc_status, first_error;
|
||||||
|
u32 status, mask, sev, syserr, exc, dw0, dw1, dw2, dw3, log, prefix;
|
||||||
int i;
|
int i;
|
||||||
u16 cap = dpc->cap_pos, dpc_status;
|
|
||||||
u32 status;
|
|
||||||
|
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_STATUS,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_STATUS, &status);
|
||||||
&rp_pio->status);
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_MASK, &mask);
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_MASK,
|
|
||||||
&rp_pio->mask);
|
|
||||||
dev_err(dev, "rp_pio_status: %#010x, rp_pio_mask: %#010x\n",
|
dev_err(dev, "rp_pio_status: %#010x, rp_pio_mask: %#010x\n",
|
||||||
rp_pio->status, rp_pio->mask);
|
status, mask);
|
||||||
|
|
||||||
dpc->rp_pio_status = rp_pio->status;
|
dpc->rp_pio_status = status;
|
||||||
|
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_SEVERITY,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_SEVERITY, &sev);
|
||||||
&rp_pio->severity);
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_SYSERROR, &syserr);
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_SYSERROR,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_EXCEPTION, &exc);
|
||||||
&rp_pio->syserror);
|
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_EXCEPTION,
|
|
||||||
&rp_pio->exception);
|
|
||||||
dev_err(dev, "RP PIO severity=%#010x, syserror=%#010x, exception=%#010x\n",
|
dev_err(dev, "RP PIO severity=%#010x, syserror=%#010x, exception=%#010x\n",
|
||||||
rp_pio->severity, rp_pio->syserror, rp_pio->exception);
|
sev, syserr, exc);
|
||||||
|
|
||||||
/* Get First Error Pointer */
|
/* Get First Error Pointer */
|
||||||
pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &dpc_status);
|
pci_read_config_word(pdev, cap + PCI_EXP_DPC_STATUS, &dpc_status);
|
||||||
rp_pio->first_error = (dpc_status & 0x1f00) >> 8;
|
first_error = (dpc_status & 0x1f00) >> 8;
|
||||||
|
|
||||||
status = (rp_pio->status & ~rp_pio->mask);
|
status &= ~mask;
|
||||||
for (i = 0; i < ARRAY_SIZE(rp_pio_error_string); i++) {
|
for (i = 0; i < ARRAY_SIZE(rp_pio_error_string); i++) {
|
||||||
if (status & (1 << i))
|
if (status & (1 << i))
|
||||||
dev_err(dev, "[%2d] %s%s\n", i, rp_pio_error_string[i],
|
dev_err(dev, "[%2d] %s%s\n", i, rp_pio_error_string[i],
|
||||||
rp_pio->first_error == i ? " (First)" : "");
|
first_error == i ? " (First)" : "");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dpc->rp_log_size < 4)
|
if (dpc->rp_log_size < 4)
|
||||||
return;
|
return;
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG,
|
||||||
&rp_pio->header_log.dw0);
|
&dw0);
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG + 4,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG + 4,
|
||||||
&rp_pio->header_log.dw1);
|
&dw1);
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG + 8,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG + 8,
|
||||||
&rp_pio->header_log.dw2);
|
&dw2);
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG + 12,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_HEADER_LOG + 12,
|
||||||
&rp_pio->header_log.dw3);
|
&dw3);
|
||||||
dev_err(dev, "TLP Header: %#010x %#010x %#010x %#010x\n",
|
dev_err(dev, "TLP Header: %#010x %#010x %#010x %#010x\n",
|
||||||
rp_pio->header_log.dw0, rp_pio->header_log.dw1,
|
dw0, dw1, dw2, dw3);
|
||||||
rp_pio->header_log.dw2, rp_pio->header_log.dw3);
|
|
||||||
|
|
||||||
if (dpc->rp_log_size < 5)
|
if (dpc->rp_log_size < 5)
|
||||||
return;
|
return;
|
||||||
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_IMPSPEC_LOG,
|
pci_read_config_dword(pdev, cap + PCI_EXP_DPC_RP_PIO_IMPSPEC_LOG, &log);
|
||||||
&rp_pio->impspec_log);
|
dev_err(dev, "RP PIO ImpSpec Log %#010x\n", log);
|
||||||
dev_err(dev, "RP PIO ImpSpec Log %#010x\n", rp_pio->impspec_log);
|
|
||||||
|
|
||||||
for (i = 0; i < dpc->rp_log_size - 5; i++) {
|
for (i = 0; i < dpc->rp_log_size - 5; i++) {
|
||||||
pci_read_config_dword(pdev,
|
pci_read_config_dword(pdev,
|
||||||
cap + PCI_EXP_DPC_RP_PIO_TLPPREFIX_LOG,
|
cap + PCI_EXP_DPC_RP_PIO_TLPPREFIX_LOG, &prefix);
|
||||||
&rp_pio->tlp_prefix_log[i]);
|
dev_err(dev, "TLP Prefix Header: dw%d, %#010x\n", i, prefix);
|
||||||
dev_err(dev, "TLP Prefix Header: dw%d, %#010x\n", i,
|
|
||||||
rp_pio->tlp_prefix_log[i]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dpc_process_rp_pio_error(struct dpc_dev *dpc)
|
static void dpc_process_rp_pio_error(struct dpc_dev *dpc)
|
||||||
{
|
{
|
||||||
struct dpc_rp_pio_regs rp_pio_regs;
|
dpc_rp_pio_get_info(dpc);
|
||||||
|
|
||||||
dpc_rp_pio_get_info(dpc, &rp_pio_regs);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user