PCI: update bridge resources to get more big ranges when allocating space (again)
authorYinghai Lu <yinghai@kernel.org>
Fri, 13 May 2011 00:11:37 +0000 (17:11 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Sat, 21 May 2011 19:17:11 +0000 (12:17 -0700)
commitda7822e5ad71ec9b745b412639f1e5e0ba795a20
tree605722e2c2b32fd6450bc91718ac7b4240fcba6c
parentf8fcfd775523347afe460dc3a0f45d0479e784a2
PCI: update bridge resources to get more big ranges when allocating space (again)

With Ram's fixes, this should be safe to do again.  So let's give it
another try.

BIOS separates IO ranges between several IOHs, and on some slots, BIOS
assigns resources to a bridge, but stops assigning resources to the
device under that bridge, because the device needs a big resource.

So:
1. allocate resources and record the failed device resources
2. clear the BIOS assigned resources of the parent bridge of failing device
3. go back and call pci assign unassigned
4. if it still fails, go up the tree, clear more bridges. and try again

Now Ram's allocate requested resource already got into mainline. could
put this one again.

Reviewed-by: Ram Pai <linuxram@us.ibm.com>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
drivers/pci/setup-bus.c