diff options
Diffstat (limited to 'arch/x86/mm/ioremap.c')
-rw-r--r-- | arch/x86/mm/ioremap.c | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/arch/x86/mm/ioremap.c b/arch/x86/mm/ioremap.c index f45d5e29a72e..62773abdf088 100644 --- a/arch/x86/mm/ioremap.c +++ b/arch/x86/mm/ioremap.c | |||
@@ -38,8 +38,7 @@ unsigned long __phys_addr(unsigned long x) | |||
38 | } else { | 38 | } else { |
39 | VIRTUAL_BUG_ON(x < PAGE_OFFSET); | 39 | VIRTUAL_BUG_ON(x < PAGE_OFFSET); |
40 | x -= PAGE_OFFSET; | 40 | x -= PAGE_OFFSET; |
41 | VIRTUAL_BUG_ON(system_state == SYSTEM_BOOTING ? x > MAXMEM : | 41 | VIRTUAL_BUG_ON(!phys_addr_valid(x)); |
42 | !phys_addr_valid(x)); | ||
43 | } | 42 | } |
44 | return x; | 43 | return x; |
45 | } | 44 | } |
@@ -56,10 +55,8 @@ bool __virt_addr_valid(unsigned long x) | |||
56 | if (x < PAGE_OFFSET) | 55 | if (x < PAGE_OFFSET) |
57 | return false; | 56 | return false; |
58 | x -= PAGE_OFFSET; | 57 | x -= PAGE_OFFSET; |
59 | if (system_state == SYSTEM_BOOTING ? | 58 | if (!phys_addr_valid(x)) |
60 | x > MAXMEM : !phys_addr_valid(x)) { | ||
61 | return false; | 59 | return false; |
62 | } | ||
63 | } | 60 | } |
64 | 61 | ||
65 | return pfn_valid(x >> PAGE_SHIFT); | 62 | return pfn_valid(x >> PAGE_SHIFT); |
@@ -76,10 +73,9 @@ static inline int phys_addr_valid(unsigned long addr) | |||
76 | #ifdef CONFIG_DEBUG_VIRTUAL | 73 | #ifdef CONFIG_DEBUG_VIRTUAL |
77 | unsigned long __phys_addr(unsigned long x) | 74 | unsigned long __phys_addr(unsigned long x) |
78 | { | 75 | { |
79 | /* VMALLOC_* aren't constants; not available at the boot time */ | 76 | /* VMALLOC_* aren't constants */ |
80 | VIRTUAL_BUG_ON(x < PAGE_OFFSET); | 77 | VIRTUAL_BUG_ON(x < PAGE_OFFSET); |
81 | VIRTUAL_BUG_ON(system_state != SYSTEM_BOOTING && | 78 | VIRTUAL_BUG_ON(__vmalloc_start_set && is_vmalloc_addr((void *) x)); |
82 | is_vmalloc_addr((void *) x)); | ||
83 | return x - PAGE_OFFSET; | 79 | return x - PAGE_OFFSET; |
84 | } | 80 | } |
85 | EXPORT_SYMBOL(__phys_addr); | 81 | EXPORT_SYMBOL(__phys_addr); |
@@ -89,7 +85,7 @@ bool __virt_addr_valid(unsigned long x) | |||
89 | { | 85 | { |
90 | if (x < PAGE_OFFSET) | 86 | if (x < PAGE_OFFSET) |
91 | return false; | 87 | return false; |
92 | if (system_state != SYSTEM_BOOTING && is_vmalloc_addr((void *) x)) | 88 | if (__vmalloc_start_set && is_vmalloc_addr((void *) x)) |
93 | return false; | 89 | return false; |
94 | return pfn_valid((x - PAGE_OFFSET) >> PAGE_SHIFT); | 90 | return pfn_valid((x - PAGE_OFFSET) >> PAGE_SHIFT); |
95 | } | 91 | } |
@@ -348,7 +344,7 @@ EXPORT_SYMBOL(ioremap_nocache); | |||
348 | * | 344 | * |
349 | * Must be freed with iounmap. | 345 | * Must be freed with iounmap. |
350 | */ | 346 | */ |
351 | void __iomem *ioremap_wc(unsigned long phys_addr, unsigned long size) | 347 | void __iomem *ioremap_wc(resource_size_t phys_addr, unsigned long size) |
352 | { | 348 | { |
353 | if (pat_enabled) | 349 | if (pat_enabled) |
354 | return __ioremap_caller(phys_addr, size, _PAGE_CACHE_WC, | 350 | return __ioremap_caller(phys_addr, size, _PAGE_CACHE_WC, |