diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 18:17:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2008-10-16 18:17:40 -0400 |
commit | e533b227055598b1f7dc8503a3b4f36b14b9da8a (patch) | |
tree | 28fec4125eac45c8e2fac75b3d10ff5cd987d2f6 /arch | |
parent | 0999d978dcdcf59350dafa25afd70def9f924eee (diff) | |
parent | 6b2ada82101a08e2830fb29d7dc9b858be637dd4 (diff) |
Merge branch 'core-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'core-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
do_generic_file_read: s/EINTR/EIO/ if lock_page_killable() fails
softirq, warning fix: correct a format to avoid a warning
softirqs, debug: preemption check
x86, pci-hotplug, calgary / rio: fix EBDA ioremap()
IO resources, x86: ioremap sanity check to catch mapping requests exceeding, fix
IO resources, x86: ioremap sanity check to catch mapping requests exceeding the BAR sizes
softlockup: Documentation/sysctl/kernel.txt: fix softlockup_thresh description
dmi scan: warn about too early calls to dmi_check_system()
generic: redefine resource_size_t as phys_addr_t
generic: make PFN_PHYS explicitly return phys_addr_t
generic: add phys_addr_t for holding physical addresses
softirq: allocate less vectors
IO resources: fix/remove printk
printk: robustify printk, update comment
printk: robustify printk, fix #2
printk: robustify printk, fix
printk: robustify printk
Fixed up conflicts in:
arch/powerpc/include/asm/types.h
arch/powerpc/platforms/Kconfig.cputype
manually.
Diffstat (limited to 'arch')
-rw-r--r-- | arch/m32r/mm/discontig.c | 4 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 3 | ||||
-rw-r--r-- | arch/powerpc/include/asm/types.h | 7 | ||||
-rw-r--r-- | arch/powerpc/platforms/Kconfig.cputype | 1 | ||||
-rw-r--r-- | arch/powerpc/sysdev/ppc4xx_pci.c | 16 | ||||
-rw-r--r-- | arch/x86/Kconfig | 4 | ||||
-rw-r--r-- | arch/x86/kernel/e820.c | 4 | ||||
-rw-r--r-- | arch/x86/mm/ioremap.c | 6 |
8 files changed, 21 insertions, 24 deletions
diff --git a/arch/m32r/mm/discontig.c b/arch/m32r/mm/discontig.c index cbc3c4c54566..7daf897292cf 100644 --- a/arch/m32r/mm/discontig.c +++ b/arch/m32r/mm/discontig.c | |||
@@ -111,9 +111,9 @@ unsigned long __init setup_memory(void) | |||
111 | initrd_start, INITRD_SIZE); | 111 | initrd_start, INITRD_SIZE); |
112 | } else { | 112 | } else { |
113 | printk("initrd extends beyond end of memory " | 113 | printk("initrd extends beyond end of memory " |
114 | "(0x%08lx > 0x%08lx)\ndisabling initrd\n", | 114 | "(0x%08lx > 0x%08llx)\ndisabling initrd\n", |
115 | INITRD_START + INITRD_SIZE, | 115 | INITRD_START + INITRD_SIZE, |
116 | PFN_PHYS(max_low_pfn)); | 116 | (unsigned long long)PFN_PHYS(max_low_pfn)); |
117 | 117 | ||
118 | initrd_start = 0; | 118 | initrd_start = 0; |
119 | } | 119 | } |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c171f5bcf258..380baa1780e9 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -22,6 +22,9 @@ config WORD_SIZE | |||
22 | config PPC_MERGE | 22 | config PPC_MERGE |
23 | def_bool y | 23 | def_bool y |
24 | 24 | ||
25 | config ARCH_PHYS_ADDR_T_64BIT | ||
26 | def_bool PPC64 || PHYS_64BIT | ||
27 | |||
25 | config MMU | 28 | config MMU |
26 | bool | 29 | bool |
27 | default y | 30 | default y |
diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h index a9a9262e84a3..c004c13f291e 100644 --- a/arch/powerpc/include/asm/types.h +++ b/arch/powerpc/include/asm/types.h | |||
@@ -48,13 +48,6 @@ typedef struct { | |||
48 | 48 | ||
49 | typedef __vector128 vector128; | 49 | typedef __vector128 vector128; |
50 | 50 | ||
51 | /* Physical address used by some IO functions */ | ||
52 | #if defined(CONFIG_PPC64) || defined(CONFIG_PHYS_64BIT) | ||
53 | typedef u64 phys_addr_t; | ||
54 | #else | ||
55 | typedef u32 phys_addr_t; | ||
56 | #endif | ||
57 | |||
58 | #if defined(__powerpc64__) || defined(CONFIG_PHYS_64BIT) | 51 | #if defined(__powerpc64__) || defined(CONFIG_PHYS_64BIT) |
59 | typedef u64 dma_addr_t; | 52 | typedef u64 dma_addr_t; |
60 | #else | 53 | #else |
diff --git a/arch/powerpc/platforms/Kconfig.cputype b/arch/powerpc/platforms/Kconfig.cputype index 439c5ba34ecf..548efa55c8fe 100644 --- a/arch/powerpc/platforms/Kconfig.cputype +++ b/arch/powerpc/platforms/Kconfig.cputype | |||
@@ -135,7 +135,6 @@ config PTE_64BIT | |||
135 | config PHYS_64BIT | 135 | config PHYS_64BIT |
136 | bool 'Large physical address support' if E500 || PPC_86xx | 136 | bool 'Large physical address support' if E500 || PPC_86xx |
137 | depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx | 137 | depends on (44x || E500 || PPC_86xx) && !PPC_83xx && !PPC_82xx |
138 | select RESOURCES_64BIT | ||
139 | ---help--- | 138 | ---help--- |
140 | This option enables kernel support for larger than 32-bit physical | 139 | This option enables kernel support for larger than 32-bit physical |
141 | addresses. This feature may not be available on all cores. | 140 | addresses. This feature may not be available on all cores. |
diff --git a/arch/powerpc/sysdev/ppc4xx_pci.c b/arch/powerpc/sysdev/ppc4xx_pci.c index 9f6f73d584d6..d3e4d61030b5 100644 --- a/arch/powerpc/sysdev/ppc4xx_pci.c +++ b/arch/powerpc/sysdev/ppc4xx_pci.c | |||
@@ -39,13 +39,10 @@ static int dma_offset_set; | |||
39 | #define U64_TO_U32_LOW(val) ((u32)((val) & 0x00000000ffffffffULL)) | 39 | #define U64_TO_U32_LOW(val) ((u32)((val) & 0x00000000ffffffffULL)) |
40 | #define U64_TO_U32_HIGH(val) ((u32)((val) >> 32)) | 40 | #define U64_TO_U32_HIGH(val) ((u32)((val) >> 32)) |
41 | 41 | ||
42 | #ifdef CONFIG_RESOURCES_64BIT | 42 | #define RES_TO_U32_LOW(val) \ |
43 | #define RES_TO_U32_LOW(val) U64_TO_U32_LOW(val) | 43 | ((sizeof(resource_size_t) > sizeof(u32)) ? U64_TO_U32_LOW(val) : (val)) |
44 | #define RES_TO_U32_HIGH(val) U64_TO_U32_HIGH(val) | 44 | #define RES_TO_U32_HIGH(val) \ |
45 | #else | 45 | ((sizeof(resource_size_t) > sizeof(u32)) ? U64_TO_U32_HIGH(val) : (0)) |
46 | #define RES_TO_U32_LOW(val) (val) | ||
47 | #define RES_TO_U32_HIGH(val) (0) | ||
48 | #endif | ||
49 | 46 | ||
50 | static inline int ppc440spe_revA(void) | 47 | static inline int ppc440spe_revA(void) |
51 | { | 48 | { |
@@ -144,12 +141,11 @@ static int __init ppc4xx_parse_dma_ranges(struct pci_controller *hose, | |||
144 | 141 | ||
145 | /* Use that */ | 142 | /* Use that */ |
146 | res->start = pci_addr; | 143 | res->start = pci_addr; |
147 | #ifndef CONFIG_RESOURCES_64BIT | ||
148 | /* Beware of 32 bits resources */ | 144 | /* Beware of 32 bits resources */ |
149 | if ((pci_addr + size) > 0x100000000ull) | 145 | if (sizeof(resource_size_t) == sizeof(u32) && |
146 | (pci_addr + size) > 0x100000000ull) | ||
150 | res->end = 0xffffffff; | 147 | res->end = 0xffffffff; |
151 | else | 148 | else |
152 | #endif | ||
153 | res->end = res->start + size - 1; | 149 | res->end = res->start + size - 1; |
154 | break; | 150 | break; |
155 | } | 151 | } |
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 7ccb6e60e60c..bd3c2c53873e 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -935,13 +935,15 @@ config HIGHMEM | |||
935 | config X86_PAE | 935 | config X86_PAE |
936 | bool "PAE (Physical Address Extension) Support" | 936 | bool "PAE (Physical Address Extension) Support" |
937 | depends on X86_32 && !HIGHMEM4G | 937 | depends on X86_32 && !HIGHMEM4G |
938 | select RESOURCES_64BIT | ||
939 | help | 938 | help |
940 | PAE is required for NX support, and furthermore enables | 939 | PAE is required for NX support, and furthermore enables |
941 | larger swapspace support for non-overcommit purposes. It | 940 | larger swapspace support for non-overcommit purposes. It |
942 | has the cost of more pagetable lookup overhead, and also | 941 | has the cost of more pagetable lookup overhead, and also |
943 | consumes more pagetable space per process. | 942 | consumes more pagetable space per process. |
944 | 943 | ||
944 | config ARCH_PHYS_ADDR_T_64BIT | ||
945 | def_bool X86_64 || X86_PAE | ||
946 | |||
945 | # Common NUMA Features | 947 | # Common NUMA Features |
946 | config NUMA | 948 | config NUMA |
947 | bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" | 949 | bool "Numa Memory Allocation and Scheduler Support (EXPERIMENTAL)" |
diff --git a/arch/x86/kernel/e820.c b/arch/x86/kernel/e820.c index 78e642feac30..ce97bf3bed12 100644 --- a/arch/x86/kernel/e820.c +++ b/arch/x86/kernel/e820.c | |||
@@ -1282,12 +1282,10 @@ void __init e820_reserve_resources(void) | |||
1282 | e820_res = res; | 1282 | e820_res = res; |
1283 | for (i = 0; i < e820.nr_map; i++) { | 1283 | for (i = 0; i < e820.nr_map; i++) { |
1284 | end = e820.map[i].addr + e820.map[i].size - 1; | 1284 | end = e820.map[i].addr + e820.map[i].size - 1; |
1285 | #ifndef CONFIG_RESOURCES_64BIT | 1285 | if (end != (resource_size_t)end) { |
1286 | if (end > 0x100000000ULL) { | ||
1287 | res++; | 1286 | res++; |
1288 | continue; | 1287 | continue; |
1289 | } | 1288 | } |
1290 | #endif | ||
1291 | res->name = e820_type_to_string(e820.map[i].type); | 1289 | res->name = e820_type_to_string(e820.map[i].type); |
1292 | res->start = e820.map[i].addr; | 1290 | res->start = e820.map[i].addr; |
1293 | res->end = end; | 1291 | res->end = end; |
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index e4c43ec71b29..ae71e11eb3e5 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -220,6 +220,12 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr, | |||
220 | return (__force void __iomem *)phys_to_virt(phys_addr); | 220 | return (__force void __iomem *)phys_to_virt(phys_addr); |
221 | 221 | ||
222 | /* | 222 | /* |
223 | * Check if the request spans more than any BAR in the iomem resource | ||
224 | * tree. | ||
225 | */ | ||
226 | WARN_ON(iomem_map_sanity_check(phys_addr, size)); | ||
227 | |||
228 | /* | ||
223 | * Don't allow anybody to remap normal RAM that we're using.. | 229 | * Don't allow anybody to remap normal RAM that we're using.. |
224 | */ | 230 | */ |
225 | for (pfn = phys_addr >> PAGE_SHIFT; | 231 | for (pfn = phys_addr >> PAGE_SHIFT; |