|
@@ -145,7 +145,6 @@ static struct eeh_stats eeh_stats;
|
|
|
static size_t eeh_gather_pci_data(struct eeh_dev *edev, char * buf, size_t len)
|
|
|
{
|
|
|
struct device_node *dn = eeh_dev_to_of_node(edev);
|
|
|
- struct pci_dev *dev = eeh_dev_to_pci_dev(edev);
|
|
|
u32 cfg;
|
|
|
int cap, i;
|
|
|
int n = 0;
|
|
@@ -161,13 +160,8 @@ static size_t eeh_gather_pci_data(struct eeh_dev *edev, char * buf, size_t len)
|
|
|
n += scnprintf(buf+n, len-n, "cmd/stat:%x\n", cfg);
|
|
|
pr_warn("EEH: PCI cmd/status register: %08x\n", cfg);
|
|
|
|
|
|
- if (!dev) {
|
|
|
- pr_warn("EEH: no PCI device for this of node\n");
|
|
|
- return n;
|
|
|
- }
|
|
|
-
|
|
|
/* Gather bridge-specific registers */
|
|
|
- if (dev->class >> 16 == PCI_BASE_CLASS_BRIDGE) {
|
|
|
+ if (edev->mode & EEH_DEV_BRIDGE) {
|
|
|
eeh_ops->read_config(dn, PCI_SEC_STATUS, 2, &cfg);
|
|
|
n += scnprintf(buf+n, len-n, "sec stat:%x\n", cfg);
|
|
|
pr_warn("EEH: Bridge secondary status: %04x\n", cfg);
|
|
@@ -178,7 +172,7 @@ static size_t eeh_gather_pci_data(struct eeh_dev *edev, char * buf, size_t len)
|
|
|
}
|
|
|
|
|
|
/* Dump out the PCI-X command and status regs */
|
|
|
- cap = pci_find_capability(dev, PCI_CAP_ID_PCIX);
|
|
|
+ cap = edev->pcix_cap;
|
|
|
if (cap) {
|
|
|
eeh_ops->read_config(dn, cap, 4, &cfg);
|
|
|
n += scnprintf(buf+n, len-n, "pcix-cmd:%x\n", cfg);
|
|
@@ -189,28 +183,29 @@ static size_t eeh_gather_pci_data(struct eeh_dev *edev, char * buf, size_t len)
|
|
|
pr_warn("EEH: PCI-X status: %08x\n", cfg);
|
|
|
}
|
|
|
|
|
|
- /* If PCI-E capable, dump PCI-E cap 10, and the AER */
|
|
|
- if (pci_is_pcie(dev)) {
|
|
|
+ /* If PCI-E capable, dump PCI-E cap 10 */
|
|
|
+ cap = edev->pcie_cap;
|
|
|
+ if (cap) {
|
|
|
n += scnprintf(buf+n, len-n, "pci-e cap10:\n");
|
|
|
pr_warn("EEH: PCI-E capabilities and status follow:\n");
|
|
|
|
|
|
for (i=0; i<=8; i++) {
|
|
|
- eeh_ops->read_config(dn, dev->pcie_cap+4*i, 4, &cfg);
|
|
|
+ eeh_ops->read_config(dn, cap+4*i, 4, &cfg);
|
|
|
n += scnprintf(buf+n, len-n, "%02x:%x\n", 4*i, cfg);
|
|
|
pr_warn("EEH: PCI-E %02x: %08x\n", i, cfg);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- cap = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
|
|
|
- if (cap) {
|
|
|
- n += scnprintf(buf+n, len-n, "pci-e AER:\n");
|
|
|
- pr_warn("EEH: PCI-E AER capability register "
|
|
|
- "set follows:\n");
|
|
|
-
|
|
|
- for (i=0; i<14; i++) {
|
|
|
- eeh_ops->read_config(dn, cap+4*i, 4, &cfg);
|
|
|
- n += scnprintf(buf+n, len-n, "%02x:%x\n", 4*i, cfg);
|
|
|
- pr_warn("EEH: PCI-E AER %02x: %08x\n", i, cfg);
|
|
|
- }
|
|
|
+ /* If AER capable, dump it */
|
|
|
+ cap = edev->aer_cap;
|
|
|
+ if (cap) {
|
|
|
+ n += scnprintf(buf+n, len-n, "pci-e AER:\n");
|
|
|
+ pr_warn("EEH: PCI-E AER capability register set follows:\n");
|
|
|
+
|
|
|
+ for (i=0; i<14; i++) {
|
|
|
+ eeh_ops->read_config(dn, cap+4*i, 4, &cfg);
|
|
|
+ n += scnprintf(buf+n, len-n, "%02x:%x\n", 4*i, cfg);
|
|
|
+ pr_warn("EEH: PCI-E AER %02x: %08x\n", i, cfg);
|
|
|
}
|
|
|
}
|
|
|
|