diff options
Diffstat (limited to 'arch/x86/mm/ioremap.c')
-rw-r--r-- | arch/x86/mm/ioremap.c | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index d4b6e6a29ae3..6ab3196d12b4 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -83,6 +83,25 @@ int page_is_ram(unsigned long pagenr) | |||
83 | return 0; | 83 | return 0; |
84 | } | 84 | } |
85 | 85 | ||
86 | int pagerange_is_ram(unsigned long start, unsigned long end) | ||
87 | { | ||
88 | int ram_page = 0, not_rampage = 0; | ||
89 | unsigned long page_nr; | ||
90 | |||
91 | for (page_nr = (start >> PAGE_SHIFT); page_nr < (end >> PAGE_SHIFT); | ||
92 | ++page_nr) { | ||
93 | if (page_is_ram(page_nr)) | ||
94 | ram_page = 1; | ||
95 | else | ||
96 | not_rampage = 1; | ||
97 | |||
98 | if (ram_page == not_rampage) | ||
99 | return -1; | ||
100 | } | ||
101 | |||
102 | return ram_page; | ||
103 | } | ||
104 | |||
86 | /* | 105 | /* |
87 | * Fix up the linear direct mapping of the kernel to avoid cache attribute | 106 | * Fix up the linear direct mapping of the kernel to avoid cache attribute |
88 | * conflicts. | 107 | * conflicts. |
@@ -421,7 +440,7 @@ void unxlate_dev_mem_ptr(unsigned long phys, void *addr) | |||
421 | return; | 440 | return; |
422 | } | 441 | } |
423 | 442 | ||
424 | int __initdata early_ioremap_debug; | 443 | static int __initdata early_ioremap_debug; |
425 | 444 | ||
426 | static int __init early_ioremap_debug_setup(char *str) | 445 | static int __init early_ioremap_debug_setup(char *str) |
427 | { | 446 | { |
@@ -547,7 +566,7 @@ static inline void __init early_clear_fixmap(enum fixed_addresses idx) | |||
547 | } | 566 | } |
548 | 567 | ||
549 | 568 | ||
550 | int __initdata early_ioremap_nested; | 569 | static int __initdata early_ioremap_nested; |
551 | 570 | ||
552 | static int __init check_early_ioremap_leak(void) | 571 | static int __init check_early_ioremap_leak(void) |
553 | { | 572 | { |