aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2012-01-21 05:08:25 -0500
committerJesse Barnes <jbarnes@virtuousgeek.org>2012-02-14 11:44:54 -0500
commit78c3b329b9dd7097781cb900146e503e499cccfe (patch)
tree0e7648baae8ac6f17b34108f5793aa1e3d4f23f8
parent19aa7ee432cec00b647443719eb5c055b69a5e8e (diff)
PCI: Move pdev_sort_resources() to setup-bus.c
This allows us to move the definition of struct resource_list to setup_bus.c and later convert resource_list to a regular list. Suggested-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Yinghai Lu <yinghai@kernel.org> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
-rw-r--r--drivers/pci/setup-bus.c46
-rw-r--r--drivers/pci/setup-res.c47
-rw-r--r--include/linux/pci.h1
3 files changed, 46 insertions, 48 deletions
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c
index c79ce4ee634b..f233d127ca89 100644
--- a/drivers/pci/setup-bus.c
+++ b/drivers/pci/setup-bus.c
@@ -137,6 +137,52 @@ static resource_size_t get_res_add_size(struct resource_list_x *realloc_head,
137 return 0; 137 return 0;
138} 138}
139 139
140/* Sort resources by alignment */
141static void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
142{
143 int i;
144
145 for (i = 0; i < PCI_NUM_RESOURCES; i++) {
146 struct resource *r;
147 struct resource_list *list, *tmp;
148 resource_size_t r_align;
149
150 r = &dev->resource[i];
151
152 if (r->flags & IORESOURCE_PCI_FIXED)
153 continue;
154
155 if (!(r->flags) || r->parent)
156 continue;
157
158 r_align = pci_resource_alignment(dev, r);
159 if (!r_align) {
160 dev_warn(&dev->dev, "BAR %d: %pR has bogus alignment\n",
161 i, r);
162 continue;
163 }
164 for (list = head; ; list = list->next) {
165 resource_size_t align = 0;
166 struct resource_list *ln = list->next;
167
168 if (ln)
169 align = pci_resource_alignment(ln->dev, ln->res);
170
171 if (r_align > align) {
172 tmp = kmalloc(sizeof(*tmp), GFP_KERNEL);
173 if (!tmp)
174 panic("pdev_sort_resources(): "
175 "kmalloc() failed!\n");
176 tmp->next = ln;
177 tmp->res = r;
178 tmp->dev = dev;
179 list->next = tmp;
180 break;
181 }
182 }
183 }
184}
185
140static void __dev_sort_resources(struct pci_dev *dev, 186static void __dev_sort_resources(struct pci_dev *dev,
141 struct resource_list *head) 187 struct resource_list *head)
142{ 188{
diff --git a/drivers/pci/setup-res.c b/drivers/pci/setup-res.c
index 241de6c2b9cd..f968185aa192 100644
--- a/drivers/pci/setup-res.c
+++ b/drivers/pci/setup-res.c
@@ -302,53 +302,6 @@ int pci_assign_resource(struct pci_dev *dev, int resno)
302 return ret; 302 return ret;
303} 303}
304 304
305
306/* Sort resources by alignment */
307void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
308{
309 int i;
310
311 for (i = 0; i < PCI_NUM_RESOURCES; i++) {
312 struct resource *r;
313 struct resource_list *list, *tmp;
314 resource_size_t r_align;
315
316 r = &dev->resource[i];
317
318 if (r->flags & IORESOURCE_PCI_FIXED)
319 continue;
320
321 if (!(r->flags) || r->parent)
322 continue;
323
324 r_align = pci_resource_alignment(dev, r);
325 if (!r_align) {
326 dev_warn(&dev->dev, "BAR %d: %pR has bogus alignment\n",
327 i, r);
328 continue;
329 }
330 for (list = head; ; list = list->next) {
331 resource_size_t align = 0;
332 struct resource_list *ln = list->next;
333
334 if (ln)
335 align = pci_resource_alignment(ln->dev, ln->res);
336
337 if (r_align > align) {
338 tmp = kmalloc(sizeof(*tmp), GFP_KERNEL);
339 if (!tmp)
340 panic("pdev_sort_resources(): "
341 "kmalloc() failed!\n");
342 tmp->next = ln;
343 tmp->res = r;
344 tmp->dev = dev;
345 list->next = tmp;
346 break;
347 }
348 }
349 }
350}
351
352int pci_enable_resources(struct pci_dev *dev, int mask) 305int pci_enable_resources(struct pci_dev *dev, int mask)
353{ 306{
354 u16 cmd, old_cmd; 307 u16 cmd, old_cmd;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 87507aadf9a2..f8caaab4b3fc 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -899,7 +899,6 @@ int pci_claim_resource(struct pci_dev *, int);
899void pci_assign_unassigned_resources(void); 899void pci_assign_unassigned_resources(void);
900void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge); 900void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
901void pdev_enable_device(struct pci_dev *); 901void pdev_enable_device(struct pci_dev *);
902void pdev_sort_resources(struct pci_dev *, struct resource_list *);
903int pci_enable_resources(struct pci_dev *, int mask); 902int pci_enable_resources(struct pci_dev *, int mask);
904void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *), 903void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
905 int (*)(const struct pci_dev *, u8, u8)); 904 int (*)(const struct pci_dev *, u8, u8));