PCI: conditional resource-reallocation through kernel parameter pci=realloc
Multiple attempts to dynamically reallocate pci resources have unfortunately lead to regressions. Though we continue to fix the regressions and fine tune the dynamic-reallocation behavior, we have not reached a acceptable state yet. This patch provides a interim solution. It disables dynamic reallocation by default, but adds the ability to enable it through pci=realloc kernel command line parameter. Tested-by: Oliver Hartkopp <socketcan@hartkopp.net> Signed-off-by: Ram Pai <linuxram@us.ibm.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
This commit is contained in:
@ -47,6 +47,13 @@ struct resource_list_x {
|
||||
(head)->next = NULL; \
|
||||
} while (0)
|
||||
|
||||
int pci_realloc_enable = 0;
|
||||
#define pci_realloc_enabled() pci_realloc_enable
|
||||
void pci_realloc(void)
|
||||
{
|
||||
pci_realloc_enable = 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* add_to_list() - add a new resource tracker to the list
|
||||
* @head: Head of the list
|
||||
@ -1025,6 +1032,7 @@ static int __init pci_get_max_depth(void)
|
||||
return depth;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* first try will not touch pci bridge res
|
||||
* second and later try will clear small leaf bridge res
|
||||
@ -1068,6 +1076,13 @@ again:
|
||||
/* any device complain? */
|
||||
if (!head.next)
|
||||
goto enable_and_dump;
|
||||
|
||||
/* don't realloc if asked to do so */
|
||||
if (!pci_realloc_enabled()) {
|
||||
free_list(resource_list_x, &head);
|
||||
goto enable_and_dump;
|
||||
}
|
||||
|
||||
failed_type = 0;
|
||||
for (list = head.next; list;) {
|
||||
failed_type |= list->flags;
|
||||
|
Reference in New Issue
Block a user