mirror of https://gitee.com/openkylin/linux.git
[PATCH] PCI: start paying attention to a lot of pci function return values
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
085ae41f66
commit
95a629657d
|
@ -140,10 +140,11 @@ void __devinit pci_bus_add_devices(struct pci_bus *bus)
|
||||||
void pci_enable_bridges(struct pci_bus *bus)
|
void pci_enable_bridges(struct pci_bus *bus)
|
||||||
{
|
{
|
||||||
struct pci_dev *dev;
|
struct pci_dev *dev;
|
||||||
|
int retval;
|
||||||
|
|
||||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||||
if (dev->subordinate) {
|
if (dev->subordinate) {
|
||||||
pci_enable_device(dev);
|
retval = pci_enable_device(dev);
|
||||||
pci_set_master(dev);
|
pci_set_master(dev);
|
||||||
pci_enable_bridges(dev->subordinate);
|
pci_enable_bridges(dev->subordinate);
|
||||||
}
|
}
|
||||||
|
|
|
@ -272,17 +272,19 @@ static int pci_device_suspend(struct device * dev, pm_message_t state)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Default resume method for devices that have no driver provided resume,
|
* Default resume method for devices that have no driver provided resume,
|
||||||
* or not even a driver at all.
|
* or not even a driver at all.
|
||||||
*/
|
*/
|
||||||
static void pci_default_resume(struct pci_dev *pci_dev)
|
static void pci_default_resume(struct pci_dev *pci_dev)
|
||||||
{
|
{
|
||||||
|
int retval;
|
||||||
|
|
||||||
/* restore the PCI config space */
|
/* restore the PCI config space */
|
||||||
pci_restore_state(pci_dev);
|
pci_restore_state(pci_dev);
|
||||||
/* if the device was enabled before suspend, reenable */
|
/* if the device was enabled before suspend, reenable */
|
||||||
if (pci_dev->is_enabled)
|
if (pci_dev->is_enabled)
|
||||||
pci_enable_device(pci_dev);
|
retval = pci_enable_device(pci_dev);
|
||||||
/* if the device was busmaster before the suspend, make it busmaster again */
|
/* if the device was busmaster before the suspend, make it busmaster again */
|
||||||
if (pci_dev->is_busmaster)
|
if (pci_dev->is_busmaster)
|
||||||
pci_set_master(pci_dev);
|
pci_set_master(pci_dev);
|
||||||
|
|
|
@ -444,8 +444,11 @@ pci_enable_device_bars(struct pci_dev *dev, int bars)
|
||||||
{
|
{
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
pci_set_power_state(dev, PCI_D0);
|
err = pci_set_power_state(dev, PCI_D0);
|
||||||
if ((err = pcibios_enable_device(dev, bars)) < 0)
|
if (err)
|
||||||
|
return err;
|
||||||
|
err = pcibios_enable_device(dev, bars);
|
||||||
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,15 +90,19 @@ static void pcie_portdrv_save_config(struct pci_dev *dev)
|
||||||
pci_save_msi_state(dev);
|
pci_save_msi_state(dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pcie_portdrv_restore_config(struct pci_dev *dev)
|
static int pcie_portdrv_restore_config(struct pci_dev *dev)
|
||||||
{
|
{
|
||||||
struct pcie_port_device_ext *p_ext = pci_get_drvdata(dev);
|
struct pcie_port_device_ext *p_ext = pci_get_drvdata(dev);
|
||||||
|
int retval;
|
||||||
|
|
||||||
pci_restore_state(dev);
|
pci_restore_state(dev);
|
||||||
if (p_ext->interrupt_mode == PCIE_PORT_MSI_MODE)
|
if (p_ext->interrupt_mode == PCIE_PORT_MSI_MODE)
|
||||||
pci_restore_msi_state(dev);
|
pci_restore_msi_state(dev);
|
||||||
pci_enable_device(dev);
|
retval = pci_enable_device(dev);
|
||||||
|
if (retval)
|
||||||
|
return retval;
|
||||||
pci_set_master(dev);
|
pci_set_master(dev);
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -260,8 +260,10 @@ int usb_hcd_pci_suspend (struct pci_dev *dev, pm_message_t message)
|
||||||
retval = pci_set_power_state (dev, PCI_D3hot);
|
retval = pci_set_power_state (dev, PCI_D3hot);
|
||||||
if (retval == 0) {
|
if (retval == 0) {
|
||||||
dev_dbg (hcd->self.controller, "--> PCI D3\n");
|
dev_dbg (hcd->self.controller, "--> PCI D3\n");
|
||||||
pci_enable_wake (dev, PCI_D3hot, hcd->remote_wakeup);
|
retval = pci_enable_wake (dev, PCI_D3hot, hcd->remote_wakeup);
|
||||||
pci_enable_wake (dev, PCI_D3cold, hcd->remote_wakeup);
|
if (retval)
|
||||||
|
break;
|
||||||
|
retval = pci_enable_wake (dev, PCI_D3cold, hcd->remote_wakeup);
|
||||||
} else if (retval < 0) {
|
} else if (retval < 0) {
|
||||||
dev_dbg (&dev->dev, "PCI D3 suspend fail, %d\n",
|
dev_dbg (&dev->dev, "PCI D3 suspend fail, %d\n",
|
||||||
retval);
|
retval);
|
||||||
|
@ -335,8 +337,20 @@ int usb_hcd_pci_resume (struct pci_dev *dev)
|
||||||
dev->current_state);
|
dev->current_state);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
pci_enable_wake (dev, dev->current_state, 0);
|
retval = pci_enable_wake (dev, dev->current_state, 0);
|
||||||
pci_enable_wake (dev, PCI_D3cold, 0);
|
if (retval) {
|
||||||
|
dev_err(hcd->self.controller,
|
||||||
|
"can't enable_wake to %d, %d!\n",
|
||||||
|
dev->current_state, retval);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
|
retval = pci_enable_wake (dev, PCI_D3cold, 0);
|
||||||
|
if (retval) {
|
||||||
|
dev_err(hcd->self.controller,
|
||||||
|
"can't enable_wake to %d, %d!\n",
|
||||||
|
PCI_D3cold, retval);
|
||||||
|
return retval;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
/* Same basic cases: clean (powered/not), dirty */
|
/* Same basic cases: clean (powered/not), dirty */
|
||||||
dev_dbg(hcd->self.controller, "PCI legacy resume\n");
|
dev_dbg(hcd->self.controller, "PCI legacy resume\n");
|
||||||
|
@ -376,7 +390,7 @@ int usb_hcd_pci_resume (struct pci_dev *dev)
|
||||||
usb_hc_died (hcd);
|
usb_hc_died (hcd);
|
||||||
}
|
}
|
||||||
|
|
||||||
pci_enable_device(dev);
|
retval = pci_enable_device(dev);
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL (usb_hcd_pci_resume);
|
EXPORT_SYMBOL (usb_hcd_pci_resume);
|
||||||
|
|
|
@ -549,7 +549,9 @@ static int ehci_start (struct usb_hcd *hcd)
|
||||||
hcd->can_wakeup = (port_wake & 1) != 0;
|
hcd->can_wakeup = (port_wake & 1) != 0;
|
||||||
|
|
||||||
/* help hc dma work well with cachelines */
|
/* help hc dma work well with cachelines */
|
||||||
pci_set_mwi (pdev);
|
retval = pci_set_mwi(pdev);
|
||||||
|
if (retval)
|
||||||
|
ehci_dbg(ehci, "unable to enable MWI - not fatal.\n");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue