powerpc: Make vmalloc_to_phys() public
This makes vmalloc_to_phys() public as there will be another user (KVM in-kernel VFIO acceleration) for it soon. As this new user can be compiled as a module, this exports the symbol. As a little optimization, this changes the helper to call vmalloc_to_pfn() instead of vmalloc_to_page() as the size of the struct page may not be power-of-two aligned which will make gcc use multiply instructions instead of shifts. Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru> Acked-by: Michael Ellerman <mpe@ellerman.id.au> Reviewed-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
178a787502
commit
e9ab1a1caf
|
@ -78,6 +78,9 @@ static inline pte_t *find_linux_pte_or_hugepte(pgd_t *pgdir, unsigned long ea,
|
|||
}
|
||||
return __find_linux_pte_or_hugepte(pgdir, ea, is_thp, shift);
|
||||
}
|
||||
|
||||
unsigned long vmalloc_to_phys(void *vmalloc_addr);
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
#endif /* _ASM_POWERPC_PGTABLE_H */
|
||||
|
|
|
@ -243,3 +243,11 @@ void assert_pte_locked(struct mm_struct *mm, unsigned long addr)
|
|||
}
|
||||
#endif /* CONFIG_DEBUG_VM */
|
||||
|
||||
unsigned long vmalloc_to_phys(void *va)
|
||||
{
|
||||
unsigned long pfn = vmalloc_to_pfn(va);
|
||||
|
||||
BUG_ON(!pfn);
|
||||
return __pa(pfn_to_kaddr(pfn)) + offset_in_page(va);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(vmalloc_to_phys);
|
||||
|
|
|
@ -493,14 +493,6 @@ static size_t event_to_attr_ct(struct hv_24x7_event_data *event)
|
|||
}
|
||||
}
|
||||
|
||||
static unsigned long vmalloc_to_phys(void *v)
|
||||
{
|
||||
struct page *p = vmalloc_to_page(v);
|
||||
|
||||
BUG_ON(!p);
|
||||
return page_to_phys(p) + offset_in_page(v);
|
||||
}
|
||||
|
||||
/* */
|
||||
struct event_uniq {
|
||||
struct rb_node node;
|
||||
|
|
Loading…
Reference in New Issue