diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-24 14:22:39 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-03-24 14:22:39 -0400 |
commit | b9e76a00749521f2b080fa8a4fb15f66538ab756 (patch) | |
tree | 814bd118b1a44b370b080d96cbe19763aebf9f69 /lib | |
parent | 92896bd9fd75b1c993b92874d339a8088bb75560 (diff) |
x86-32: Pass the full resource data to ioremap()
It appears that 64-bit PCI resources cannot possibly ever have worked on
x86-32 even when the RESOURCES_64BIT config option was set, because any
driver that tried to [pci_]ioremap() the resource would have been unable
to do so because the high 32 bits would have been silently dropped on
the floor by the ioremap() routines that only used "unsigned long".
Change them to use "resource_size_t" instead, which properly encodes the
whole 64-bit resource data if RESOURCES_64BIT is enabled.
Acked-by: H. Peter Anvin <hpa@kernel.org>
Acked-by: Stefan Richter <stefanr@s5r6.in-berlin.de>
Cc: Ivan Kokshaysky <ink@jurassic.park.msu.ru>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/iomap.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/iomap.c b/lib/iomap.c index db004a9ff50..dd6ca48fe6b 100644 --- a/lib/iomap.c +++ b/lib/iomap.c | |||
@@ -256,7 +256,7 @@ EXPORT_SYMBOL(ioport_unmap); | |||
256 | * */ | 256 | * */ |
257 | void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) | 257 | void __iomem *pci_iomap(struct pci_dev *dev, int bar, unsigned long maxlen) |
258 | { | 258 | { |
259 | unsigned long start = pci_resource_start(dev, bar); | 259 | resource_size_t start = pci_resource_start(dev, bar); |
260 | unsigned long len = pci_resource_len(dev, bar); | 260 | unsigned long len = pci_resource_len(dev, bar); |
261 | unsigned long flags = pci_resource_flags(dev, bar); | 261 | unsigned long flags = pci_resource_flags(dev, bar); |
262 | 262 | ||