diff options
-rw-r--r-- | drivers/pci/bus.c | 4 | ||||
-rw-r--r-- | drivers/pci/probe.c | 39 | ||||
-rw-r--r-- | drivers/pci/remove.c | 4 | ||||
-rw-r--r-- | include/linux/pci.h | 3 |
4 files changed, 1 insertions, 49 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 | ||
diff --git a/include/linux/pci.h b/include/linux/pci.h index 5e6d0f413fb9..3b8a4e17052f 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
@@ -132,7 +132,6 @@ struct pci_cap_saved_state { | |||
132 | * The pci_dev structure is used to describe PCI devices. | 132 | * The pci_dev structure is used to describe PCI devices. |
133 | */ | 133 | */ |
134 | struct pci_dev { | 134 | struct pci_dev { |
135 | struct list_head global_list; /* node in list of all PCI devices */ | ||
136 | struct list_head bus_list; /* node in per-bus list */ | 135 | struct list_head bus_list; /* node in per-bus list */ |
137 | struct pci_bus *bus; /* bus this device is on */ | 136 | struct pci_bus *bus; /* bus this device is on */ |
138 | struct pci_bus *subordinate; /* bus this device bridges to */ | 137 | struct pci_bus *subordinate; /* bus this device bridges to */ |
@@ -206,7 +205,6 @@ struct pci_dev { | |||
206 | 205 | ||
207 | extern struct pci_dev *alloc_pci_dev(void); | 206 | extern struct pci_dev *alloc_pci_dev(void); |
208 | 207 | ||
209 | #define pci_dev_g(n) list_entry(n, struct pci_dev, global_list) | ||
210 | #define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) | 208 | #define pci_dev_b(n) list_entry(n, struct pci_dev, bus_list) |
211 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) | 209 | #define to_pci_dev(n) container_of(n, struct pci_dev, dev) |
212 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) | 210 | #define for_each_pci_dev(d) while ((d = pci_get_device(PCI_ANY_ID, PCI_ANY_ID, d)) != NULL) |
@@ -450,7 +448,6 @@ extern struct bus_type pci_bus_type; | |||
450 | /* Do NOT directly access these two variables, unless you are arch specific pci | 448 | /* Do NOT directly access these two variables, unless you are arch specific pci |
451 | * code, or pci core code. */ | 449 | * code, or pci core code. */ |
452 | extern struct list_head pci_root_buses; /* list of all known PCI buses */ | 450 | extern struct list_head pci_root_buses; /* list of all known PCI buses */ |
453 | extern struct list_head pci_devices; /* list of all devices */ | ||
454 | /* Some device drivers need know if pci is initiated */ | 451 | /* Some device drivers need know if pci is initiated */ |
455 | extern int no_pci_devices(void); | 452 | extern int no_pci_devices(void); |
456 | 453 | ||