PCI/x86: don't assume prefetchable ranges are 64bit
authorYinghai Lu <yinghai@kernel.org>
Fri, 24 Apr 2009 03:48:32 +0000 (20:48 -0700)
committerJesse Barnes <jbarnes@virtuousgeek.org>
Thu, 11 Jun 2009 19:04:06 +0000 (12:04 -0700)
commit1f82de10d6b1d845155363c895c552e61b36b51a
tree3e93b9d1c97ae48509133fbbec9c81b4823816a5
parent67b5db6502ddd27d65dea43bf036abbd82d0dfc9
PCI/x86: don't assume prefetchable ranges are 64bit

We should not assign 64bit ranges to PCI devices that only take 32bit
prefetchable addresses.

Try to set IORESOURCE_MEM_64 in 64bit resource of pci_device/pci_bridge
and make the bus resource only have that bit set when all devices under
it support 64bit prefetchable memory.  Use that flag to allocate
resources from that range.

Reported-by: Yannick <yannick.roehlly@free.fr>
Reviewed-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org>
arch/x86/include/asm/pci.h
drivers/pci/bus.c
drivers/pci/probe.c
drivers/pci/setup-bus.c
include/linux/ioport.h
include/linux/pci.h