}
spin_unlock_irqrestore(&dev_data->lock, flags);
- pcistub_put_pci_dev(found_dev, 0);
+ pcistub_put_pci_dev(found_dev);
}
int pciback_init_devices(struct pciback_device *pdev)
list_for_each_entry_safe(dev_entry, d,
&cntrl_entry->dev_list, list) {
list_del(&dev_entry->list);
- pcistub_put_pci_dev(dev_entry->dev, 0);
+ pcistub_put_pci_dev(dev_entry->dev);
kfree(dev_entry);
}
list_del(&cntrl_entry->list);
spin_unlock_irqrestore(&dev_data->lock, flags);
if (found_dev)
- pcistub_put_pci_dev(found_dev, 1);
+ pcistub_put_pci_dev(found_dev);
}
int pciback_init_devices(struct pciback_device *pdev)
list_for_each_entry_safe(dev_entry, t, &dev_data->dev_list, list) {
list_del(&dev_entry->list);
- pcistub_put_pci_dev(dev_entry->dev, 1);
+ pcistub_put_pci_dev(dev_entry->dev);
kfree(dev_entry);
}
return found_dev;
}
-void pcistub_put_pci_dev(struct pci_dev *dev, int do_flr)
+void pcistub_put_pci_dev(struct pci_dev *dev)
{
struct pcistub_device *psdev, *found_psdev = NULL;
unsigned long flags;
spin_unlock_irqrestore(&pcistub_devices_lock, flags);
+ if (found_psdev == NULL)
+ return;
+
/*hold this lock for avoiding breaking link between
* pcistub and pciback when AER is in processing
*/
down_write(&pcistub_sem);
- /* For pass-through devices, do an FLR (or approximate) for the device
- * before it is put back and ready for the next domain
- */
- if (!disable_all_flr && do_flr)
- pciback_flr_device(dev);
-
/* Cleanup our device
* (so it's ready for the next domain)
*/
int slot, int func);
struct pci_dev *pcistub_get_pci_dev(struct pciback_device *pdev,
struct pci_dev *dev);
-void pcistub_put_pci_dev(struct pci_dev *dev, int do_flr);
+void pcistub_put_pci_dev(struct pci_dev *dev);
/* Reference/unreference PCI Devices and stubs without changing the state */
struct pci_dev *pcistub_ref_pci_dev(struct pci_dev *dev);
spin_unlock_irqrestore(&slot_dev->lock, flags);
if (found_dev)
- pcistub_put_pci_dev(found_dev, 0);
+ pcistub_put_pci_dev(found_dev);
}
int pciback_init_devices(struct pciback_device *pdev)
for (slot = 0; slot < PCI_SLOT_MAX; slot++) {
dev = slot_dev->slots[bus][slot];
if (dev != NULL)
- pcistub_put_pci_dev(dev, 0);
+ pcistub_put_pci_dev(dev);
}
kfree(slot_dev);
spin_unlock_irqrestore(&vpci_dev->lock, flags);
if (found_dev)
- pcistub_put_pci_dev(found_dev, 0);
+ pcistub_put_pci_dev(found_dev);
}
int pciback_init_devices(struct pciback_device *pdev)
list_for_each_entry_safe(e, tmp, &vpci_dev->dev_list[slot],
list) {
list_del(&e->list);
- pcistub_put_pci_dev(e->dev, 0);
+ pcistub_put_pci_dev(e->dev);
kfree(e);
}
}