diff options
| -rw-r--r-- | arch/x86/pci/amd_bus.c | 8 | ||||
| -rw-r--r-- | arch/x86/pci/bus_numa.c | 4 | ||||
| -rw-r--r-- | include/linux/range.h | 8 | 
3 files changed, 17 insertions, 3 deletions
diff --git a/arch/x86/pci/amd_bus.c b/arch/x86/pci/amd_bus.c index f06bb1b4a80..f7e13b63154 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)  	memset(range, 0, sizeof(range));  	/* 0xfd00000000-0xffffffffff for HT */ -	range[0].end = (0xfdULL<<32) - 1; +	range[0].end = cap_resource((0xfdULL<<32) - 1);  	/* need to take out [0, TOM) for RAM*/  	address = MSR_K8_TOP_MEM1; @@ -286,7 +286,8 @@ static int __init early_fill_mp_bus_info(void)  			}  		} -		update_res(info, start, end, IORESOURCE_MEM, 1); +		update_res(info, cap_resource(start), cap_resource(end), +				 IORESOURCE_MEM, 1);  		subtract_range(range, RANGE_NUM, start, end);  		printk(KERN_CONT "\n");  	} @@ -321,7 +322,8 @@ static int __init early_fill_mp_bus_info(void)  			if (!range[i].end)  				continue; -			update_res(info, range[i].start, range[i].end, +			update_res(info, cap_resource(range[i].start), +				   cap_resource(range[i].end),  				   IORESOURCE_MEM, 1);  		}  	} diff --git a/arch/x86/pci/bus_numa.c b/arch/x86/pci/bus_numa.c index 3411687b676..3510778aa8b 100644 --- a/arch/x86/pci/bus_numa.c +++ b/arch/x86/pci/bus_numa.c @@ -1,5 +1,6 @@  #include <linux/init.h>  #include <linux/pci.h> +#include <linux/range.h>  #include "bus_numa.h" @@ -55,6 +56,9 @@ void __devinit update_res(struct pci_root_info *info, resource_size_t start,  	if (start > end)  		return; +	if (start == MAX_RESOURCE) +		return; +  	if (!merge)  		goto addit; diff --git a/include/linux/range.h b/include/linux/range.h index 0789f1412e1..bd184a5db79 100644 --- a/include/linux/range.h +++ b/include/linux/range.h @@ -19,4 +19,12 @@ int clean_sort_range(struct range *range, int az);  void sort_range(struct range *range, int nr_range); +#define MAX_RESOURCE ((resource_size_t)~0) +static inline resource_size_t cap_resource(u64 val) +{ +	if (val > MAX_RESOURCE) +		return MAX_RESOURCE; + +	return val; +}  #endif  |