diff options
-rw-r--r-- | arch/x86/include/asm/io.h | 1 | ||||
-rw-r--r-- | arch/x86/mm/ioremap.c | 14 | ||||
-rw-r--r-- | arch/x86/mm/pgtable_32.c | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/arch/x86/include/asm/io.h b/arch/x86/include/asm/io.h index a1dcfa3ab17d..30a3e9776123 100644 --- a/arch/x86/include/asm/io.h +++ b/arch/x86/include/asm/io.h | |||
@@ -347,6 +347,7 @@ extern void __iomem *early_ioremap(resource_size_t phys_addr, | |||
347 | extern void __iomem *early_memremap(resource_size_t phys_addr, | 347 | extern void __iomem *early_memremap(resource_size_t phys_addr, |
348 | unsigned long size); | 348 | unsigned long size); |
349 | extern void early_iounmap(void __iomem *addr, unsigned long size); | 349 | extern void early_iounmap(void __iomem *addr, unsigned long size); |
350 | extern void fixup_early_ioremap(void); | ||
350 | 351 | ||
351 | #define IO_SPACE_LIMIT 0xffff | 352 | #define IO_SPACE_LIMIT 0xffff |
352 | 353 | ||
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index 5eb1ba74a3a9..12e4d2d3c110 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -448,6 +448,20 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx) | |||
448 | static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata; | 448 | static void __iomem *prev_map[FIX_BTMAPS_SLOTS] __initdata; |
449 | static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata; | 449 | static unsigned long prev_size[FIX_BTMAPS_SLOTS] __initdata; |
450 | 450 | ||
451 | void __init fixup_early_ioremap(void) | ||
452 | { | ||
453 | int i; | ||
454 | |||
455 | for (i = 0; i < FIX_BTMAPS_SLOTS; i++) { | ||
456 | if (prev_map[i]) { | ||
457 | WARN_ON(1); | ||
458 | break; | ||
459 | } | ||
460 | } | ||
461 | |||
462 | early_ioremap_init(); | ||
463 | } | ||
464 | |||
451 | static int __init check_early_ioremap_leak(void) | 465 | static int __init check_early_ioremap_leak(void) |
452 | { | 466 | { |
453 | int count = 0; | 467 | int count = 0; |
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index 1a8faf09afed..26eadaa60e6c 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
@@ -128,6 +128,7 @@ static int __init parse_reservetop(char *arg) | |||
128 | 128 | ||
129 | address = memparse(arg, &arg); | 129 | address = memparse(arg, &arg); |
130 | reserve_top_address(address); | 130 | reserve_top_address(address); |
131 | fixup_early_ioremap(); | ||
131 | return 0; | 132 | return 0; |
132 | } | 133 | } |
133 | early_param("reservetop", parse_reservetop); | 134 | early_param("reservetop", parse_reservetop); |