Commit 1ff8f36f authored by Sam Bobroff's avatar Sam Bobroff Committed by Michael Ellerman

powerpc/eeh: Convert log messages to eeh_edev_* macros

Convert existing messages, where appropriate, to use the eeh_edev_*
logging macros.

The only effect should be minor adjustments to the log messages, apart
from:

- A new message in pseries_eeh_probe() "Probing device" to match the
powernv case.
- The "Probing device" message in pnv_eeh_probe() is now generated
slightly later, which will mean that it is no longer emitted for
devices that aren't probed due to the initial checks.
Signed-off-by: default avatarSam Bobroff <sbobroff@linux.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/ce505a0a7a4a5b0367f0f40f8b26e7c0a9cf4cb7.1565930772.git.sbobroff@linux.ibm.com
parent b093f2cb
...@@ -62,11 +62,6 @@ void eeh_pe_dev_mode_mark(struct eeh_pe *pe, int mode); ...@@ -62,11 +62,6 @@ void eeh_pe_dev_mode_mark(struct eeh_pe *pe, int mode);
void eeh_sysfs_add_device(struct pci_dev *pdev); void eeh_sysfs_add_device(struct pci_dev *pdev);
void eeh_sysfs_remove_device(struct pci_dev *pdev); void eeh_sysfs_remove_device(struct pci_dev *pdev);
static inline const char *eeh_pci_name(struct pci_dev *pdev)
{
return pdev ? pci_name(pdev) : "<null>";
}
static inline const char *eeh_driver_name(struct pci_dev *pdev) static inline const char *eeh_driver_name(struct pci_dev *pdev)
{ {
return (pdev && pdev->driver) ? pdev->driver->name : "<null>"; return (pdev && pdev->driver) ? pdev->driver->name : "<null>";
......
...@@ -470,8 +470,7 @@ int eeh_dev_check_failure(struct eeh_dev *edev) ...@@ -470,8 +470,7 @@ int eeh_dev_check_failure(struct eeh_dev *edev)
/* Access to IO BARs might get this far and still not want checking. */ /* Access to IO BARs might get this far and still not want checking. */
if (!pe) { if (!pe) {
eeh_stats.ignored_check++; eeh_stats.ignored_check++;
pr_debug("EEH: Ignored check for %s\n", eeh_edev_dbg(edev, "Ignored check\n");
eeh_pci_name(dev));
return 0; return 0;
} }
...@@ -511,12 +510,11 @@ int eeh_dev_check_failure(struct eeh_dev *edev) ...@@ -511,12 +510,11 @@ int eeh_dev_check_failure(struct eeh_dev *edev)
if (dn) if (dn)
location = of_get_property(dn, "ibm,loc-code", location = of_get_property(dn, "ibm,loc-code",
NULL); NULL);
printk(KERN_ERR "EEH: %d reads ignored for recovering device at " eeh_edev_err(edev, "%d reads ignored for recovering device at location=%s driver=%s\n",
"location=%s driver=%s pci addr=%s\n",
pe->check_count, pe->check_count,
location ? location : "unknown", location ? location : "unknown",
eeh_driver_name(dev), eeh_pci_name(dev)); eeh_driver_name(dev));
printk(KERN_ERR "EEH: Might be infinite loop in %s driver\n", eeh_edev_err(edev, "Might be infinite loop in %s driver\n",
eeh_driver_name(dev)); eeh_driver_name(dev));
dump_stack(); dump_stack();
} }
...@@ -1188,12 +1186,11 @@ void eeh_add_device_late(struct pci_dev *dev) ...@@ -1188,12 +1186,11 @@ void eeh_add_device_late(struct pci_dev *dev)
if (!dev) if (!dev)
return; return;
pr_debug("EEH: Adding device %s\n", pci_name(dev));
pdn = pci_get_pdn_by_devfn(dev->bus, dev->devfn); pdn = pci_get_pdn_by_devfn(dev->bus, dev->devfn);
edev = pdn_to_eeh_dev(pdn); edev = pdn_to_eeh_dev(pdn);
eeh_edev_dbg(edev, "Adding device\n");
if (edev->pdev == dev) { if (edev->pdev == dev) {
pr_debug("EEH: Device %s already referenced!\n", pci_name(dev)); eeh_edev_dbg(edev, "Device already referenced!\n");
return; return;
} }
...@@ -1296,10 +1293,10 @@ void eeh_remove_device(struct pci_dev *dev) ...@@ -1296,10 +1293,10 @@ void eeh_remove_device(struct pci_dev *dev)
edev = pci_dev_to_eeh_dev(dev); edev = pci_dev_to_eeh_dev(dev);
/* Unregister the device with the EEH/PCI address search system */ /* Unregister the device with the EEH/PCI address search system */
pr_debug("EEH: Removing device %s\n", pci_name(dev)); dev_dbg(&dev->dev, "EEH: Removing device\n");
if (!edev || !edev->pdev || !edev->pe) { if (!edev || !edev->pdev || !edev->pe) {
pr_debug("EEH: Not referenced !\n"); dev_dbg(&dev->dev, "EEH: Device not referenced!\n");
return; return;
} }
......
...@@ -148,8 +148,8 @@ eeh_addr_cache_insert(struct pci_dev *dev, resource_size_t alo, ...@@ -148,8 +148,8 @@ eeh_addr_cache_insert(struct pci_dev *dev, resource_size_t alo,
piar->pcidev = dev; piar->pcidev = dev;
piar->flags = flags; piar->flags = flags;
pr_debug("PIAR: insert range=[%pap:%pap] dev=%s\n", eeh_edev_dbg(piar->edev, "PIAR: insert range=[%pap:%pap]\n",
&alo, &ahi, pci_name(dev)); &alo, &ahi);
rb_link_node(&piar->rb_node, parent, p); rb_link_node(&piar->rb_node, parent, p);
rb_insert_color(&piar->rb_node, &pci_io_addr_cache_root.rb_root); rb_insert_color(&piar->rb_node, &pci_io_addr_cache_root.rb_root);
...@@ -229,8 +229,8 @@ static inline void __eeh_addr_cache_rmv_dev(struct pci_dev *dev) ...@@ -229,8 +229,8 @@ static inline void __eeh_addr_cache_rmv_dev(struct pci_dev *dev)
piar = rb_entry(n, struct pci_io_addr_range, rb_node); piar = rb_entry(n, struct pci_io_addr_range, rb_node);
if (piar->pcidev == dev) { if (piar->pcidev == dev) {
pr_debug("PIAR: remove range=[%pap:%pap] dev=%s\n", eeh_edev_dbg(piar->edev, "PIAR: remove range=[%pap:%pap]\n",
&piar->addr_lo, &piar->addr_hi, pci_name(dev)); &piar->addr_lo, &piar->addr_hi);
rb_erase(n, &pci_io_addr_cache_root.rb_root); rb_erase(n, &pci_io_addr_cache_root.rb_root);
kfree(piar); kfree(piar);
goto restart; goto restart;
......
...@@ -456,12 +456,9 @@ static void *eeh_add_virt_device(struct eeh_dev *edev) ...@@ -456,12 +456,9 @@ static void *eeh_add_virt_device(struct eeh_dev *edev)
{ {
struct pci_driver *driver; struct pci_driver *driver;
struct pci_dev *dev = eeh_dev_to_pci_dev(edev); struct pci_dev *dev = eeh_dev_to_pci_dev(edev);
struct pci_dn *pdn = eeh_dev_to_pdn(edev);
if (!(edev->physfn)) { if (!(edev->physfn)) {
pr_warn("%s: EEH dev %04x:%02x:%02x.%01x not for VF\n", eeh_edev_warn(edev, "Not for VF\n");
__func__, pdn->phb->global_number, pdn->busno,
PCI_SLOT(pdn->devfn), PCI_FUNC(pdn->devfn));
return NULL; return NULL;
} }
...@@ -475,7 +472,7 @@ static void *eeh_add_virt_device(struct eeh_dev *edev) ...@@ -475,7 +472,7 @@ static void *eeh_add_virt_device(struct eeh_dev *edev)
} }
#ifdef CONFIG_PCI_IOV #ifdef CONFIG_PCI_IOV
pci_iov_add_virtfn(edev->physfn, pdn->vf_index); pci_iov_add_virtfn(edev->physfn, eeh_dev_to_pdn(edev)->vf_index);
#endif #endif
return NULL; return NULL;
} }
......
...@@ -379,8 +379,7 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev) ...@@ -379,8 +379,7 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)
/* Check if the PE number is valid */ /* Check if the PE number is valid */
if (!eeh_has_flag(EEH_VALID_PE_ZERO) && !edev->pe_config_addr) { if (!eeh_has_flag(EEH_VALID_PE_ZERO) && !edev->pe_config_addr) {
pr_err("%s: Invalid PE#0 for edev 0x%x on PHB#%x\n", eeh_edev_err(edev, "PE#0 is invalid for this PHB!\n");
__func__, config_addr, pdn->phb->global_number);
return -EINVAL; return -EINVAL;
} }
...@@ -398,12 +397,7 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev) ...@@ -398,12 +397,7 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)
/* Put the edev to PE */ /* Put the edev to PE */
list_add_tail(&edev->entry, &pe->edevs); list_add_tail(&edev->entry, &pe->edevs);
pr_debug("EEH: Add %04x:%02x:%02x.%01x to Bus PE#%x\n", eeh_edev_dbg(edev, "Added to bus PE\n");
pdn->phb->global_number,
pdn->busno,
PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn),
pe->addr);
return 0; return 0;
} else if (pe && (pe->type & EEH_PE_INVALID)) { } else if (pe && (pe->type & EEH_PE_INVALID)) {
list_add_tail(&edev->entry, &pe->edevs); list_add_tail(&edev->entry, &pe->edevs);
...@@ -420,13 +414,8 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev) ...@@ -420,13 +414,8 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)
parent = parent->parent; parent = parent->parent;
} }
pr_debug("EEH: Add %04x:%02x:%02x.%01x to Device " eeh_edev_dbg(edev, "Added to device PE (parent: PE#%x)\n",
"PE#%x, Parent PE#%x\n", pe->parent->addr);
pdn->phb->global_number,
pdn->busno,
PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn),
pe->addr, pe->parent->addr);
return 0; return 0;
} }
...@@ -468,13 +457,8 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev) ...@@ -468,13 +457,8 @@ int eeh_add_to_parent_pe(struct eeh_dev *edev)
list_add_tail(&pe->child, &parent->child_list); list_add_tail(&pe->child, &parent->child_list);
list_add_tail(&edev->entry, &pe->edevs); list_add_tail(&edev->entry, &pe->edevs);
edev->pe = pe; edev->pe = pe;
pr_debug("EEH: Add %04x:%02x:%02x.%01x to " eeh_edev_dbg(edev, "Added to device PE (parent: PE#%x)\n",
"Device PE#%x, Parent PE#%x\n", pe->parent->addr);
pdn->phb->global_number,
pdn->busno,
PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn),
pe->addr, pe->parent->addr);
return 0; return 0;
} }
...@@ -492,15 +476,10 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev) ...@@ -492,15 +476,10 @@ int eeh_rmv_from_parent_pe(struct eeh_dev *edev)
{ {
struct eeh_pe *pe, *parent, *child; struct eeh_pe *pe, *parent, *child;
int cnt; int cnt;
struct pci_dn *pdn = eeh_dev_to_pdn(edev);
pe = eeh_dev_to_pe(edev); pe = eeh_dev_to_pe(edev);
if (!pe) { if (!pe) {
pr_debug("%s: No PE found for device %04x:%02x:%02x.%01x\n", eeh_edev_dbg(edev, "No PE found for device.\n");
__func__, pdn->phb->global_number,
pdn->busno,
PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn));
return -EEXIST; return -EEXIST;
} }
...@@ -717,17 +696,13 @@ static void eeh_bridge_check_link(struct eeh_dev *edev) ...@@ -717,17 +696,13 @@ static void eeh_bridge_check_link(struct eeh_dev *edev)
if (!(edev->mode & (EEH_DEV_ROOT_PORT | EEH_DEV_DS_PORT))) if (!(edev->mode & (EEH_DEV_ROOT_PORT | EEH_DEV_DS_PORT)))
return; return;
pr_debug("%s: Check PCIe link for %04x:%02x:%02x.%01x ...\n", eeh_edev_dbg(edev, "Checking PCIe link...\n");
__func__, pdn->phb->global_number,
pdn->busno,
PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn));
/* Check slot status */ /* Check slot status */
cap = edev->pcie_cap; cap = edev->pcie_cap;
eeh_ops->read_config(pdn, cap + PCI_EXP_SLTSTA, 2, &val); eeh_ops->read_config(pdn, cap + PCI_EXP_SLTSTA, 2, &val);
if (!(val & PCI_EXP_SLTSTA_PDS)) { if (!(val & PCI_EXP_SLTSTA_PDS)) {
pr_debug(" No card in the slot (0x%04x) !\n", val); eeh_edev_dbg(edev, "No card in the slot (0x%04x) !\n", val);
return; return;
} }
...@@ -736,7 +711,7 @@ static void eeh_bridge_check_link(struct eeh_dev *edev) ...@@ -736,7 +711,7 @@ static void eeh_bridge_check_link(struct eeh_dev *edev)
if (val & PCI_EXP_SLTCAP_PCP) { if (val & PCI_EXP_SLTCAP_PCP) {
eeh_ops->read_config(pdn, cap + PCI_EXP_SLTCTL, 2, &val); eeh_ops->read_config(pdn, cap + PCI_EXP_SLTCTL, 2, &val);
if (val & PCI_EXP_SLTCTL_PCC) { if (val & PCI_EXP_SLTCTL_PCC) {
pr_debug(" In power-off state, power it on ...\n"); eeh_edev_dbg(edev, "In power-off state, power it on ...\n");
val &= ~(PCI_EXP_SLTCTL_PCC | PCI_EXP_SLTCTL_PIC); val &= ~(PCI_EXP_SLTCTL_PCC | PCI_EXP_SLTCTL_PIC);
val |= (0x0100 & PCI_EXP_SLTCTL_PIC); val |= (0x0100 & PCI_EXP_SLTCTL_PIC);
eeh_ops->write_config(pdn, cap + PCI_EXP_SLTCTL, 2, val); eeh_ops->write_config(pdn, cap + PCI_EXP_SLTCTL, 2, val);
...@@ -752,7 +727,7 @@ static void eeh_bridge_check_link(struct eeh_dev *edev) ...@@ -752,7 +727,7 @@ static void eeh_bridge_check_link(struct eeh_dev *edev)
/* Check link */ /* Check link */
eeh_ops->read_config(pdn, cap + PCI_EXP_LNKCAP, 4, &val); eeh_ops->read_config(pdn, cap + PCI_EXP_LNKCAP, 4, &val);
if (!(val & PCI_EXP_LNKCAP_DLLLARC)) { if (!(val & PCI_EXP_LNKCAP_DLLLARC)) {
pr_debug(" No link reporting capability (0x%08x) \n", val); eeh_edev_dbg(edev, "No link reporting capability (0x%08x) \n", val);
msleep(1000); msleep(1000);
return; return;
} }
...@@ -769,10 +744,10 @@ static void eeh_bridge_check_link(struct eeh_dev *edev) ...@@ -769,10 +744,10 @@ static void eeh_bridge_check_link(struct eeh_dev *edev)
} }
if (val & PCI_EXP_LNKSTA_DLLLA) if (val & PCI_EXP_LNKSTA_DLLLA)
pr_debug(" Link up (%s)\n", eeh_edev_dbg(edev, "Link up (%s)\n",
(val & PCI_EXP_LNKSTA_CLS_2_5GB) ? "2.5GB" : "5GB"); (val & PCI_EXP_LNKSTA_CLS_2_5GB) ? "2.5GB" : "5GB");
else else
pr_debug(" Link not ready (0x%04x)\n", val); eeh_edev_dbg(edev, "Link not ready (0x%04x)\n", val);
} }
#define BYTE_SWAP(OFF) (8*((OFF)/4)+3-(OFF)) #define BYTE_SWAP(OFF) (8*((OFF)/4)+3-(OFF))
......
...@@ -44,7 +44,7 @@ void pnv_pcibios_bus_add_device(struct pci_dev *pdev) ...@@ -44,7 +44,7 @@ void pnv_pcibios_bus_add_device(struct pci_dev *pdev)
if (eeh_has_flag(EEH_FORCE_DISABLED)) if (eeh_has_flag(EEH_FORCE_DISABLED))
return; return;
pr_debug("%s: EEH: Setting up device %s.\n", __func__, pci_name(pdev)); dev_dbg(&pdev->dev, "EEH: Setting up device\n");
eeh_add_device_early(pdn); eeh_add_device_early(pdn);
eeh_add_device_late(pdev); eeh_add_device_late(pdev);
eeh_sysfs_add_device(pdev); eeh_sysfs_add_device(pdev);
...@@ -370,10 +370,6 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -370,10 +370,6 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data)
int ret; int ret;
int config_addr = (pdn->busno << 8) | (pdn->devfn); int config_addr = (pdn->busno << 8) | (pdn->devfn);
pr_debug("%s: probing %04x:%02x:%02x.%01x\n",
__func__, hose->global_number, pdn->busno,
PCI_SLOT(pdn->devfn), PCI_FUNC(pdn->devfn));
/* /*
* When probing the root bridge, which doesn't have any * When probing the root bridge, which doesn't have any
* subordinate PCI devices. We don't have OF node for * subordinate PCI devices. We don't have OF node for
...@@ -387,6 +383,8 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -387,6 +383,8 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data)
if ((pdn->class_code >> 8) == PCI_CLASS_BRIDGE_ISA) if ((pdn->class_code >> 8) == PCI_CLASS_BRIDGE_ISA)
return NULL; return NULL;
eeh_edev_dbg(edev, "Probing device\n");
/* Initialize eeh device */ /* Initialize eeh device */
edev->class_code = pdn->class_code; edev->class_code = pdn->class_code;
edev->mode &= 0xFFFFFF00; edev->mode &= 0xFFFFFF00;
...@@ -412,9 +410,7 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -412,9 +410,7 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data)
/* Create PE */ /* Create PE */
ret = eeh_add_to_parent_pe(edev); ret = eeh_add_to_parent_pe(edev);
if (ret) { if (ret) {
pr_warn("%s: Can't add PCI dev %04x:%02x:%02x.%01x to parent PE (%x)\n", eeh_edev_warn(edev, "Failed to add device to PE (code %d)\n", ret);
__func__, hose->global_number, pdn->busno,
PCI_SLOT(pdn->devfn), PCI_FUNC(pdn->devfn), ret);
return NULL; return NULL;
} }
...@@ -472,10 +468,7 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -472,10 +468,7 @@ static void *pnv_eeh_probe(struct pci_dn *pdn, void *data)
/* Save memory bars */ /* Save memory bars */
eeh_save_bars(edev); eeh_save_bars(edev);
pr_debug("%s: EEH enabled on %02x:%02x.%01x PHB#%x-PE#%x\n", eeh_edev_dbg(edev, "EEH enabled on device\n");
__func__, pdn->busno, PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn), edev->pe->phb->global_number,
edev->pe->addr);
return NULL; return NULL;
} }
......
...@@ -49,7 +49,7 @@ void pseries_pcibios_bus_add_device(struct pci_dev *pdev) ...@@ -49,7 +49,7 @@ void pseries_pcibios_bus_add_device(struct pci_dev *pdev)
if (eeh_has_flag(EEH_FORCE_DISABLED)) if (eeh_has_flag(EEH_FORCE_DISABLED))
return; return;
pr_debug("%s: EEH: Setting up device %s.\n", __func__, pci_name(pdev)); dev_dbg(&pdev->dev, "EEH: Setting up device\n");
#ifdef CONFIG_PCI_IOV #ifdef CONFIG_PCI_IOV
if (pdev->is_virtfn) { if (pdev->is_virtfn) {
struct pci_dn *physfn_pdn; struct pci_dn *physfn_pdn;
...@@ -238,10 +238,6 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -238,10 +238,6 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data)
int enable = 0; int enable = 0;
int ret; int ret;
pr_debug("%s: probing %04x:%02x:%02x.%01x\n",
__func__, pdn->phb->global_number, pdn->busno,
PCI_SLOT(pdn->devfn), PCI_FUNC(pdn->devfn));
/* Retrieve OF node and eeh device */ /* Retrieve OF node and eeh device */
edev = pdn_to_eeh_dev(pdn); edev = pdn_to_eeh_dev(pdn);
if (!edev || edev->pe) if (!edev || edev->pe)
...@@ -255,6 +251,8 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -255,6 +251,8 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data)
if ((pdn->class_code >> 8) == PCI_CLASS_BRIDGE_ISA) if ((pdn->class_code >> 8) == PCI_CLASS_BRIDGE_ISA)
return NULL; return NULL;
eeh_edev_dbg(edev, "Probing device\n");
/* /*
* Update class code and mode of eeh device. We need * Update class code and mode of eeh device. We need
* correctly reflects that current device is root port * correctly reflects that current device is root port
...@@ -284,12 +282,10 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -284,12 +282,10 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data)
pe.config_addr = (pdn->busno << 16) | (pdn->devfn << 8); pe.config_addr = (pdn->busno << 16) | (pdn->devfn << 8);
/* Enable EEH on the device */ /* Enable EEH on the device */
eeh_edev_dbg(edev, "Enabling EEH on device\n");
ret = eeh_ops->set_option(&pe, EEH_OPT_ENABLE); ret = eeh_ops->set_option(&pe, EEH_OPT_ENABLE);
if (ret) { if (ret) {
pr_debug("%s: EEH failed to enable on %02x:%02x.%01x PHB#%x-PE#%x (code %d)\n", eeh_edev_dbg(edev, "EEH failed to enable on device (code %d)\n", ret);
__func__, pdn->busno, PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn), pe.phb->global_number,
pe.addr, ret);
} else { } else {
/* Retrieve PE address */ /* Retrieve PE address */
edev->pe_config_addr = eeh_ops->get_pe_addr(&pe); edev->pe_config_addr = eeh_ops->get_pe_addr(&pe);
...@@ -314,11 +310,8 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data) ...@@ -314,11 +310,8 @@ static void *pseries_eeh_probe(struct pci_dn *pdn, void *data)
edev->pe_config_addr = pdn_to_eeh_dev(pdn->parent)->pe_config_addr; edev->pe_config_addr = pdn_to_eeh_dev(pdn->parent)->pe_config_addr;
eeh_add_to_parent_pe(edev); eeh_add_to_parent_pe(edev);
} }
pr_debug("%s: EEH %s on %02x:%02x.%01x PHB#%x-PE#%x (code %d)\n", eeh_edev_dbg(edev, "EEH is %s on device (code %d)\n",
__func__, (enable ? "enabled" : "unsupported"), (enable ? "enabled" : "unsupported"), ret);
pdn->busno, PCI_SLOT(pdn->devfn),
PCI_FUNC(pdn->devfn), pe.phb->global_number,
pe.addr, ret);
} }
/* Save memory bars */ /* Save memory bars */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment