From: Steven Smith Date: Tue, 30 Jun 2009 11:55:48 +0000 (+0100) Subject: patch remove-release-flr X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=1e9c9eb35f0e2571897af333a8d9d1c6c68b8041;p=people%2Fssmith%2Fnc2-2.6.27.git patch remove-release-flr --- diff --git a/drivers/xen/pciback/controller.c b/drivers/xen/pciback/controller.c index 4c1aaf35..294e48f8 100644 --- a/drivers/xen/pciback/controller.c +++ b/drivers/xen/pciback/controller.c @@ -208,7 +208,7 @@ void pciback_release_pci_dev(struct pciback_device *pdev, struct pci_dev *dev) } 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) @@ -396,7 +396,7 @@ void pciback_release_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); diff --git a/drivers/xen/pciback/passthrough.c b/drivers/xen/pciback/passthrough.c index b9948a5e..9e7a0c45 100644 --- a/drivers/xen/pciback/passthrough.c +++ b/drivers/xen/pciback/passthrough.c @@ -88,7 +88,7 @@ void pciback_release_pci_dev(struct pciback_device *pdev, struct pci_dev *dev) 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) @@ -157,7 +157,7 @@ void pciback_release_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); } diff --git a/drivers/xen/pciback/pci_stub.c b/drivers/xen/pciback/pci_stub.c index 486034f2..fb40598b 100644 --- a/drivers/xen/pciback/pci_stub.c +++ b/drivers/xen/pciback/pci_stub.c @@ -237,7 +237,7 @@ struct pci_dev *pcistub_get_pci_dev(struct pciback_device *pdev, 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; @@ -253,17 +253,14 @@ void pcistub_put_pci_dev(struct pci_dev *dev, int do_flr) 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) */ diff --git a/drivers/xen/pciback/pciback.h b/drivers/xen/pciback/pciback.h index 5cd967cd..f2a50fa2 100644 --- a/drivers/xen/pciback/pciback.h +++ b/drivers/xen/pciback/pciback.h @@ -71,7 +71,7 @@ struct pci_dev *pcistub_get_pci_dev_by_slot(struct pciback_device *pdev, 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); diff --git a/drivers/xen/pciback/slot.c b/drivers/xen/pciback/slot.c index 9c666333..105a8b6a 100644 --- a/drivers/xen/pciback/slot.c +++ b/drivers/xen/pciback/slot.c @@ -109,7 +109,7 @@ void pciback_release_pci_dev(struct pciback_device *pdev, 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) @@ -149,7 +149,7 @@ void pciback_release_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); diff --git a/drivers/xen/pciback/vpci.c b/drivers/xen/pciback/vpci.c index 259e71db..a5b7ecee 100644 --- a/drivers/xen/pciback/vpci.c +++ b/drivers/xen/pciback/vpci.c @@ -162,7 +162,7 @@ void pciback_release_pci_dev(struct pciback_device *pdev, struct pci_dev *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) @@ -202,7 +202,7 @@ void pciback_release_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); } }