mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-18 01:34:14 +08:00
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>
This commit is contained in:
parent
19aa7ee432
commit
78c3b329b9
@ -137,6 +137,52 @@ static resource_size_t get_res_add_size(struct resource_list_x *realloc_head,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Sort resources by alignment */
|
||||
static void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
|
||||
struct resource *r;
|
||||
struct resource_list *list, *tmp;
|
||||
resource_size_t r_align;
|
||||
|
||||
r = &dev->resource[i];
|
||||
|
||||
if (r->flags & IORESOURCE_PCI_FIXED)
|
||||
continue;
|
||||
|
||||
if (!(r->flags) || r->parent)
|
||||
continue;
|
||||
|
||||
r_align = pci_resource_alignment(dev, r);
|
||||
if (!r_align) {
|
||||
dev_warn(&dev->dev, "BAR %d: %pR has bogus alignment\n",
|
||||
i, r);
|
||||
continue;
|
||||
}
|
||||
for (list = head; ; list = list->next) {
|
||||
resource_size_t align = 0;
|
||||
struct resource_list *ln = list->next;
|
||||
|
||||
if (ln)
|
||||
align = pci_resource_alignment(ln->dev, ln->res);
|
||||
|
||||
if (r_align > align) {
|
||||
tmp = kmalloc(sizeof(*tmp), GFP_KERNEL);
|
||||
if (!tmp)
|
||||
panic("pdev_sort_resources(): "
|
||||
"kmalloc() failed!\n");
|
||||
tmp->next = ln;
|
||||
tmp->res = r;
|
||||
tmp->dev = dev;
|
||||
list->next = tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void __dev_sort_resources(struct pci_dev *dev,
|
||||
struct resource_list *head)
|
||||
{
|
||||
|
@ -302,53 +302,6 @@ int pci_assign_resource(struct pci_dev *dev, int resno)
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
/* Sort resources by alignment */
|
||||
void pdev_sort_resources(struct pci_dev *dev, struct resource_list *head)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < PCI_NUM_RESOURCES; i++) {
|
||||
struct resource *r;
|
||||
struct resource_list *list, *tmp;
|
||||
resource_size_t r_align;
|
||||
|
||||
r = &dev->resource[i];
|
||||
|
||||
if (r->flags & IORESOURCE_PCI_FIXED)
|
||||
continue;
|
||||
|
||||
if (!(r->flags) || r->parent)
|
||||
continue;
|
||||
|
||||
r_align = pci_resource_alignment(dev, r);
|
||||
if (!r_align) {
|
||||
dev_warn(&dev->dev, "BAR %d: %pR has bogus alignment\n",
|
||||
i, r);
|
||||
continue;
|
||||
}
|
||||
for (list = head; ; list = list->next) {
|
||||
resource_size_t align = 0;
|
||||
struct resource_list *ln = list->next;
|
||||
|
||||
if (ln)
|
||||
align = pci_resource_alignment(ln->dev, ln->res);
|
||||
|
||||
if (r_align > align) {
|
||||
tmp = kmalloc(sizeof(*tmp), GFP_KERNEL);
|
||||
if (!tmp)
|
||||
panic("pdev_sort_resources(): "
|
||||
"kmalloc() failed!\n");
|
||||
tmp->next = ln;
|
||||
tmp->res = r;
|
||||
tmp->dev = dev;
|
||||
list->next = tmp;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int pci_enable_resources(struct pci_dev *dev, int mask)
|
||||
{
|
||||
u16 cmd, old_cmd;
|
||||
|
@ -899,7 +899,6 @@ int pci_claim_resource(struct pci_dev *, int);
|
||||
void pci_assign_unassigned_resources(void);
|
||||
void pci_assign_unassigned_bridge_resources(struct pci_dev *bridge);
|
||||
void pdev_enable_device(struct pci_dev *);
|
||||
void pdev_sort_resources(struct pci_dev *, struct resource_list *);
|
||||
int pci_enable_resources(struct pci_dev *, int mask);
|
||||
void pci_fixup_irqs(u8 (*)(struct pci_dev *, u8 *),
|
||||
int (*)(const struct pci_dev *, u8, u8));
|
||||
|
Loading…
Reference in New Issue
Block a user