diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/pci/bus.c | 4 | ||||
-rw-r--r-- | drivers/pci/probe.c | 39 | ||||
-rw-r--r-- | drivers/pci/remove.c | 4 |
3 files changed, 1 insertions, 46 deletions
diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c index e1c079aa0e82..529d9d7727b0 100644 --- a/drivers/pci/bus.c +++ b/drivers/pci/bus.c | |||
@@ -85,10 +85,6 @@ int pci_bus_add_device(struct pci_dev *dev) | |||
85 | return retval; | 85 | return retval; |
86 | 86 | ||
87 | dev->is_added = 1; | 87 | dev->is_added = 1; |
88 | down_write(&pci_bus_sem); | ||
89 | list_add_tail(&dev->global_list, &pci_devices); | ||
90 | up_write(&pci_bus_sem); | ||
91 | |||
92 | pci_proc_attach_device(dev); | 88 | pci_proc_attach_device(dev); |
93 | pci_create_sysfs_dev_files(dev); | 89 | pci_create_sysfs_dev_files(dev); |
94 | return 0; | 90 | return 0; |
diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 7217f4283ce8..504f19b2af45 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c | |||
@@ -20,8 +20,6 @@ | |||
20 | LIST_HEAD(pci_root_buses); | 20 | LIST_HEAD(pci_root_buses); |
21 | EXPORT_SYMBOL(pci_root_buses); | 21 | EXPORT_SYMBOL(pci_root_buses); |
22 | 22 | ||
23 | LIST_HEAD(pci_devices); | ||
24 | |||
25 | 23 | ||
26 | static int find_anything(struct device *dev, void *data) | 24 | static int find_anything(struct device *dev, void *data) |
27 | { | 25 | { |
@@ -860,7 +858,6 @@ struct pci_dev *alloc_pci_dev(void) | |||
860 | if (!dev) | 858 | if (!dev) |
861 | return NULL; | 859 | return NULL; |
862 | 860 | ||
863 | INIT_LIST_HEAD(&dev->global_list); | ||
864 | INIT_LIST_HEAD(&dev->bus_list); | 861 | INIT_LIST_HEAD(&dev->bus_list); |
865 | 862 | ||
866 | pci_msi_init_pci_dev(dev); | 863 | pci_msi_init_pci_dev(dev); |
@@ -957,7 +954,6 @@ void pci_device_add(struct pci_dev *dev, struct pci_bus *bus) | |||
957 | * Add the device to our list of discovered devices | 954 | * Add the device to our list of discovered devices |
958 | * and the bus list for fixup functions, etc. | 955 | * and the bus list for fixup functions, etc. |
959 | */ | 956 | */ |
960 | INIT_LIST_HEAD(&dev->global_list); | ||
961 | down_write(&pci_bus_sem); | 957 | down_write(&pci_bus_sem); |
962 | list_add_tail(&dev->bus_list, &bus->devices); | 958 | list_add_tail(&dev->bus_list, &bus->devices); |
963 | up_write(&pci_bus_sem); | 959 | up_write(&pci_bus_sem); |
@@ -1186,7 +1182,7 @@ static void __init pci_insertion_sort_klist(struct pci_dev *a, struct list_head | |||
1186 | list_move_tail(&a->dev.knode_bus.n_node, list); | 1182 | list_move_tail(&a->dev.knode_bus.n_node, list); |
1187 | } | 1183 | } |
1188 | 1184 | ||
1189 | static void __init pci_sort_breadthfirst_klist(void) | 1185 | void __init pci_sort_breadthfirst(void) |
1190 | { | 1186 | { |
1191 | LIST_HEAD(sorted_devices); | 1187 | LIST_HEAD(sorted_devices); |
1192 | struct list_head *pos, *tmp; | 1188 | struct list_head *pos, *tmp; |
@@ -1207,36 +1203,3 @@ static void __init pci_sort_breadthfirst_klist(void) | |||
1207 | list_splice(&sorted_devices, &device_klist->k_list); | 1203 | list_splice(&sorted_devices, &device_klist->k_list); |
1208 | spin_unlock(&device_klist->k_lock); | 1204 | spin_unlock(&device_klist->k_lock); |
1209 | } | 1205 | } |
1210 | |||
1211 | static void __init pci_insertion_sort_devices(struct pci_dev *a, struct list_head *list) | ||
1212 | { | ||
1213 | struct pci_dev *b; | ||
1214 | |||
1215 | list_for_each_entry(b, list, global_list) { | ||
1216 | if (pci_sort_bf_cmp(a, b) <= 0) { | ||
1217 | list_move_tail(&a->global_list, &b->global_list); | ||
1218 | return; | ||
1219 | } | ||
1220 | } | ||
1221 | list_move_tail(&a->global_list, list); | ||
1222 | } | ||
1223 | |||
1224 | static void __init pci_sort_breadthfirst_devices(void) | ||
1225 | { | ||
1226 | LIST_HEAD(sorted_devices); | ||
1227 | struct pci_dev *dev, *tmp; | ||
1228 | |||
1229 | down_write(&pci_bus_sem); | ||
1230 | list_for_each_entry_safe(dev, tmp, &pci_devices, global_list) { | ||
1231 | pci_insertion_sort_devices(dev, &sorted_devices); | ||
1232 | } | ||
1233 | list_splice(&sorted_devices, &pci_devices); | ||
1234 | up_write(&pci_bus_sem); | ||
1235 | } | ||
1236 | |||
1237 | void __init pci_sort_breadthfirst(void) | ||
1238 | { | ||
1239 | pci_sort_breadthfirst_devices(); | ||
1240 | pci_sort_breadthfirst_klist(); | ||
1241 | } | ||
1242 | |||
diff --git a/drivers/pci/remove.c b/drivers/pci/remove.c index d3c77cbe3279..b6824833343f 100644 --- a/drivers/pci/remove.c +++ b/drivers/pci/remove.c | |||
@@ -23,10 +23,6 @@ static void pci_stop_dev(struct pci_dev *dev) | |||
23 | pci_remove_sysfs_dev_files(dev); | 23 | pci_remove_sysfs_dev_files(dev); |
24 | device_unregister(&dev->dev); | 24 | device_unregister(&dev->dev); |
25 | dev->is_added = 0; | 25 | dev->is_added = 0; |
26 | down_write(&pci_bus_sem); | ||
27 | list_del(&dev->global_list); | ||
28 | dev->global_list.next = dev->global_list.prev = NULL; | ||
29 | up_write(&pci_bus_sem); | ||
30 | } | 26 | } |
31 | } | 27 | } |
32 | 28 | ||