PCI: hv: Remove bus device removal unused refcount/functions
With the new method of flushing/stopping the workqueue before doing bus removal, the old mechanism of using refcount and wait for completion is no longer needed. Remove those dead code. Link: https://lore.kernel.org/r/1620806809-31055-1-git-send-email-longli@linuxonhyperv.com Signed-off-by: Long Li <longli@microsoft.com> [lorenzo.pieralisi@arm.com: Reworded subject] Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Reviewed-by: Michael Kelley <mikelley@microsoft.com>
This commit is contained in:
parent
94d2276320
commit
326dc2e1e5
|
@ -452,7 +452,6 @@ struct hv_pcibus_device {
|
|||
/* Protocol version negotiated with the host */
|
||||
enum pci_protocol_version_t protocol_version;
|
||||
enum hv_pcibus_state state;
|
||||
refcount_t remove_lock;
|
||||
struct hv_device *hdev;
|
||||
resource_size_t low_mmio_space;
|
||||
resource_size_t high_mmio_space;
|
||||
|
@ -460,7 +459,6 @@ struct hv_pcibus_device {
|
|||
struct resource *low_mmio_res;
|
||||
struct resource *high_mmio_res;
|
||||
struct completion *survey_event;
|
||||
struct completion remove_event;
|
||||
struct pci_bus *pci_bus;
|
||||
spinlock_t config_lock; /* Avoid two threads writing index page */
|
||||
spinlock_t device_list_lock; /* Protect lists below */
|
||||
|
@ -592,9 +590,6 @@ static void put_pcichild(struct hv_pci_dev *hpdev)
|
|||
kfree(hpdev);
|
||||
}
|
||||
|
||||
static void get_hvpcibus(struct hv_pcibus_device *hv_pcibus);
|
||||
static void put_hvpcibus(struct hv_pcibus_device *hv_pcibus);
|
||||
|
||||
/*
|
||||
* There is no good way to get notified from vmbus_onoffer_rescind(),
|
||||
* so let's use polling here, since this is not a hot path.
|
||||
|
@ -2063,10 +2058,8 @@ static void pci_devices_present_work(struct work_struct *work)
|
|||
}
|
||||
spin_unlock_irqrestore(&hbus->device_list_lock, flags);
|
||||
|
||||
if (!dr) {
|
||||
put_hvpcibus(hbus);
|
||||
if (!dr)
|
||||
return;
|
||||
}
|
||||
|
||||
/* First, mark all existing children as reported missing. */
|
||||
spin_lock_irqsave(&hbus->device_list_lock, flags);
|
||||
|
@ -2149,7 +2142,6 @@ static void pci_devices_present_work(struct work_struct *work)
|
|||
break;
|
||||
}
|
||||
|
||||
put_hvpcibus(hbus);
|
||||
kfree(dr);
|
||||
}
|
||||
|
||||
|
@ -2190,12 +2182,10 @@ static int hv_pci_start_relations_work(struct hv_pcibus_device *hbus,
|
|||
list_add_tail(&dr->list_entry, &hbus->dr_list);
|
||||
spin_unlock_irqrestore(&hbus->device_list_lock, flags);
|
||||
|
||||
if (pending_dr) {
|
||||
if (pending_dr)
|
||||
kfree(dr_wrk);
|
||||
} else {
|
||||
get_hvpcibus(hbus);
|
||||
else
|
||||
queue_work(hbus->wq, &dr_wrk->wrk);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -2338,8 +2328,6 @@ static void hv_eject_device_work(struct work_struct *work)
|
|||
put_pcichild(hpdev);
|
||||
put_pcichild(hpdev);
|
||||
/* hpdev has been freed. Do not use it any more. */
|
||||
|
||||
put_hvpcibus(hbus);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2363,7 +2351,6 @@ static void hv_pci_eject_device(struct hv_pci_dev *hpdev)
|
|||
hpdev->state = hv_pcichild_ejecting;
|
||||
get_pcichild(hpdev);
|
||||
INIT_WORK(&hpdev->wrk, hv_eject_device_work);
|
||||
get_hvpcibus(hbus);
|
||||
queue_work(hbus->wq, &hpdev->wrk);
|
||||
}
|
||||
|
||||
|
@ -2963,17 +2950,6 @@ static int hv_send_resources_released(struct hv_device *hdev)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void get_hvpcibus(struct hv_pcibus_device *hbus)
|
||||
{
|
||||
refcount_inc(&hbus->remove_lock);
|
||||
}
|
||||
|
||||
static void put_hvpcibus(struct hv_pcibus_device *hbus)
|
||||
{
|
||||
if (refcount_dec_and_test(&hbus->remove_lock))
|
||||
complete(&hbus->remove_event);
|
||||
}
|
||||
|
||||
#define HVPCI_DOM_MAP_SIZE (64 * 1024)
|
||||
static DECLARE_BITMAP(hvpci_dom_map, HVPCI_DOM_MAP_SIZE);
|
||||
|
||||
|
@ -3093,14 +3069,12 @@ static int hv_pci_probe(struct hv_device *hdev,
|
|||
hbus->sysdata.domain = dom;
|
||||
|
||||
hbus->hdev = hdev;
|
||||
refcount_set(&hbus->remove_lock, 1);
|
||||
INIT_LIST_HEAD(&hbus->children);
|
||||
INIT_LIST_HEAD(&hbus->dr_list);
|
||||
INIT_LIST_HEAD(&hbus->resources_for_children);
|
||||
spin_lock_init(&hbus->config_lock);
|
||||
spin_lock_init(&hbus->device_list_lock);
|
||||
spin_lock_init(&hbus->retarget_msi_interrupt_lock);
|
||||
init_completion(&hbus->remove_event);
|
||||
hbus->wq = alloc_ordered_workqueue("hv_pci_%x", 0,
|
||||
hbus->sysdata.domain);
|
||||
if (!hbus->wq) {
|
||||
|
@ -3337,8 +3311,6 @@ static int hv_pci_remove(struct hv_device *hdev)
|
|||
hv_pci_free_bridge_windows(hbus);
|
||||
irq_domain_remove(hbus->irq_domain);
|
||||
irq_domain_free_fwnode(hbus->sysdata.fwnode);
|
||||
put_hvpcibus(hbus);
|
||||
wait_for_completion(&hbus->remove_event);
|
||||
|
||||
hv_put_dom_num(hbus->sysdata.domain);
|
||||
|
||||
|
|
Loading…
Reference in New Issue