diff options
author | Yinghai Lu <yinghai@kernel.org> | 2010-02-10 04:20:11 -0500 |
---|---|---|
committer | H. Peter Anvin <hpa@zytor.com> | 2010-02-10 20:47:17 -0500 |
commit | 9ad3f2c7c69659c343843393944d739fec1f2e73 (patch) | |
tree | b1eef2d30a70d8386c3fdfe8bd73cf15de657f8c /arch/x86 | |
parent | 97445c3b86e0b64e059b4829a7193f8e26fb5bfc (diff) |
x86/pci: Add cap_resource()
Prepare for 32bit pci root bus
-v2: hpa said we should compare with (resource_size_t)~0
-v3: according to Linus to use MAX_RESOURCE instead.
also need need to put related patches together
-v4: according to Andrew, use min in cap_resource()
Signed-off-by: Yinghai Lu <yinghai@kernel.org>
LKML-Reference: <1265793639-15071-8-git-send-email-yinghai@kernel.org>
Acked-by: Jesse Barnes <jbarnes@virtuousgeek.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/pci/amd_bus.c | 8 | ||||
-rw-r--r-- | arch/x86/pci/bus_numa.c | 4 |
2 files changed, 9 insertions, 3 deletions
diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c index f06bb1b4a80a..f7e13b63154e 100644 --- a/arch/x86/pci/amd_bus.c +++ b/arch/x86/pci/amd_bus.c | |||
@@ -201,7 +201,7 @@ static int __init early_fill_mp_bus_info(void) | |||
201 | 201 | ||
202 | memset(range, 0, sizeof(range)); | 202 | memset(range, 0, sizeof(range)); |
203 | /* 0xfd00000000-0xffffffffff for HT */ | 203 | /* 0xfd00000000-0xffffffffff for HT */ |
204 | range[0].end = (0xfdULL<<32) - 1; | 204 | range[0].end = cap_resource((0xfdULL<<32) - 1); |
205 | 205 | ||
206 | /* need to take out [0, TOM) for RAM*/ | 206 | /* need to take out [0, TOM) for RAM*/ |
207 | address = MSR_K8_TOP_MEM1; | 207 | address = MSR_K8_TOP_MEM1; |
@@ -286,7 +286,8 @@ static int __init early_fill_mp_bus_info(void) | |||
286 | } | 286 | } |
287 | } | 287 | } |
288 | 288 | ||
289 | update_res(info, start, end, IORESOURCE_MEM, 1); | 289 | update_res(info, cap_resource(start), cap_resource(end), |
290 | IORESOURCE_MEM, 1); | ||
290 | subtract_range(range, RANGE_NUM, start, end); | 291 | subtract_range(range, RANGE_NUM, start, end); |
291 | printk(KERN_CONT "\n"); | 292 | printk(KERN_CONT "\n"); |
292 | } | 293 | } |
@@ -321,7 +322,8 @@ static int __init early_fill_mp_bus_info(void) | |||
321 | if (!range[i].end) | 322 | if (!range[i].end) |
322 | continue; | 323 | continue; |
323 | 324 | ||
324 | update_res(info, range[i].start, range[i].end, | 325 | update_res(info, cap_resource(range[i].start), |
326 | cap_resource(range[i].end), | ||
325 | IORESOURCE_MEM, 1); | 327 | IORESOURCE_MEM, 1); |
326 | } | 328 | } |
327 | } | 329 | } |
diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c index 3411687b676e..3510778aa8bb 100644 --- a/arch/x86/pci/bus_numa.c +++ b/arch/x86/pci/bus_numa.c | |||
@@ -1,5 +1,6 @@ | |||
1 | #include <linux/init.h> | 1 | #include <linux/init.h> |
2 | #include <linux/pci.h> | 2 | #include <linux/pci.h> |
3 | #include <linux/range.h> | ||
3 | 4 | ||
4 | #include "bus_numa.h" | 5 | #include "bus_numa.h" |
5 | 6 | ||
@@ -55,6 +56,9 @@ void __devinit update_res(struct pci_root_info *info, resource_size_t start, | |||
55 | if (start > end) | 56 | if (start > end) |
56 | return; | 57 | return; |
57 | 58 | ||
59 | if (start == MAX_RESOURCE) | ||
60 | return; | ||
61 | |||
58 | if (!merge) | 62 | if (!merge) |
59 | goto addit; | 63 | goto addit; |
60 | 64 | ||