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);
|
return __find_linux_pte_or_hugepte(pgdir, ea, is_thp, shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned long vmalloc_to_phys(void *vmalloc_addr);
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
|
||||||
#endif /* _ASM_POWERPC_PGTABLE_H */
|
#endif /* _ASM_POWERPC_PGTABLE_H */
|
||||||
|
|
|
@ -243,3 +243,11 @@ void assert_pte_locked(struct mm_struct *mm, unsigned long addr)
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_DEBUG_VM */
|
#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 event_uniq {
|
||||||
struct rb_node node;
|
struct rb_node node;
|
||||||
|
|
Loading…
Reference in New Issue