diff options
Diffstat (limited to 'mm/percpu.c')
-rw-r--r-- | mm/percpu.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/mm/percpu.c b/mm/percpu.c index 5adfc268b408..008fbd9e6fa4 100644 --- a/mm/percpu.c +++ b/mm/percpu.c | |||
@@ -74,6 +74,7 @@ | |||
74 | #include <asm/cacheflush.h> | 74 | #include <asm/cacheflush.h> |
75 | #include <asm/sections.h> | 75 | #include <asm/sections.h> |
76 | #include <asm/tlbflush.h> | 76 | #include <asm/tlbflush.h> |
77 | #include <asm/io.h> | ||
77 | 78 | ||
78 | #define PCPU_SLOT_BASE_SHIFT 5 /* 1-31 shares the same slot */ | 79 | #define PCPU_SLOT_BASE_SHIFT 5 /* 1-31 shares the same slot */ |
79 | #define PCPU_DFL_MAP_ALLOC 16 /* start a map with 16 ents */ | 80 | #define PCPU_DFL_MAP_ALLOC 16 /* start a map with 16 ents */ |
@@ -1302,6 +1303,27 @@ void free_percpu(void *ptr) | |||
1302 | } | 1303 | } |
1303 | EXPORT_SYMBOL_GPL(free_percpu); | 1304 | EXPORT_SYMBOL_GPL(free_percpu); |
1304 | 1305 | ||
1306 | /** | ||
1307 | * per_cpu_ptr_to_phys - convert translated percpu address to physical address | ||
1308 | * @addr: the address to be converted to physical address | ||
1309 | * | ||
1310 | * Given @addr which is dereferenceable address obtained via one of | ||
1311 | * percpu access macros, this function translates it into its physical | ||
1312 | * address. The caller is responsible for ensuring @addr stays valid | ||
1313 | * until this function finishes. | ||
1314 | * | ||
1315 | * RETURNS: | ||
1316 | * The physical address for @addr. | ||
1317 | */ | ||
1318 | phys_addr_t per_cpu_ptr_to_phys(void *addr) | ||
1319 | { | ||
1320 | if ((unsigned long)addr < VMALLOC_START || | ||
1321 | (unsigned long)addr >= VMALLOC_END) | ||
1322 | return __pa(addr); | ||
1323 | else | ||
1324 | return page_to_phys(vmalloc_to_page(addr)); | ||
1325 | } | ||
1326 | |||
1305 | static inline size_t pcpu_calc_fc_sizes(size_t static_size, | 1327 | static inline size_t pcpu_calc_fc_sizes(size_t static_size, |
1306 | size_t reserved_size, | 1328 | size_t reserved_size, |
1307 | ssize_t *dyn_sizep) | 1329 | ssize_t *dyn_sizep) |