.. | .. |
---|
2 | 2 | #ifndef _ASM_POWERPC_TLBFLUSH_RADIX_H |
---|
3 | 3 | #define _ASM_POWERPC_TLBFLUSH_RADIX_H |
---|
4 | 4 | |
---|
| 5 | +#include <asm/hvcall.h> |
---|
| 6 | + |
---|
5 | 7 | struct vm_area_struct; |
---|
6 | 8 | struct mm_struct; |
---|
7 | 9 | struct mmu_gather; |
---|
| 10 | + |
---|
| 11 | +static inline u64 psize_to_rpti_pgsize(unsigned long psize) |
---|
| 12 | +{ |
---|
| 13 | + if (psize == MMU_PAGE_4K) |
---|
| 14 | + return H_RPTI_PAGE_4K; |
---|
| 15 | + if (psize == MMU_PAGE_64K) |
---|
| 16 | + return H_RPTI_PAGE_64K; |
---|
| 17 | + if (psize == MMU_PAGE_2M) |
---|
| 18 | + return H_RPTI_PAGE_2M; |
---|
| 19 | + if (psize == MMU_PAGE_1G) |
---|
| 20 | + return H_RPTI_PAGE_1G; |
---|
| 21 | + return H_RPTI_PAGE_ALL; |
---|
| 22 | +} |
---|
8 | 23 | |
---|
9 | 24 | static inline int mmu_get_ap(int psize) |
---|
10 | 25 | { |
---|
.. | .. |
---|
13 | 28 | |
---|
14 | 29 | #ifdef CONFIG_PPC_RADIX_MMU |
---|
15 | 30 | extern void radix__tlbiel_all(unsigned int action); |
---|
| 31 | +extern void radix__flush_tlb_lpid_page(unsigned int lpid, |
---|
| 32 | + unsigned long addr, |
---|
| 33 | + unsigned long page_size); |
---|
| 34 | +extern void radix__flush_pwc_lpid(unsigned int lpid); |
---|
| 35 | +extern void radix__flush_all_lpid(unsigned int lpid); |
---|
| 36 | +extern void radix__flush_all_lpid_guest(unsigned int lpid); |
---|
16 | 37 | #else |
---|
17 | 38 | static inline void radix__tlbiel_all(unsigned int action) { WARN_ON(1); }; |
---|
| 39 | +static inline void radix__flush_tlb_lpid_page(unsigned int lpid, |
---|
| 40 | + unsigned long addr, |
---|
| 41 | + unsigned long page_size) |
---|
| 42 | +{ |
---|
| 43 | + WARN_ON(1); |
---|
| 44 | +} |
---|
| 45 | +static inline void radix__flush_pwc_lpid(unsigned int lpid) |
---|
| 46 | +{ |
---|
| 47 | + WARN_ON(1); |
---|
| 48 | +} |
---|
| 49 | +static inline void radix__flush_all_lpid(unsigned int lpid) |
---|
| 50 | +{ |
---|
| 51 | + WARN_ON(1); |
---|
| 52 | +} |
---|
| 53 | +static inline void radix__flush_all_lpid_guest(unsigned int lpid) |
---|
| 54 | +{ |
---|
| 55 | + WARN_ON(1); |
---|
| 56 | +} |
---|
18 | 57 | #endif |
---|
19 | 58 | |
---|
20 | 59 | extern void radix__flush_hugetlb_tlb_range(struct vm_area_struct *vma, |
---|
.. | .. |
---|
48 | 87 | extern void radix__flush_tlb_pwc(struct mmu_gather *tlb, unsigned long addr); |
---|
49 | 88 | extern void radix__flush_tlb_collapsed_pmd(struct mm_struct *mm, unsigned long addr); |
---|
50 | 89 | extern void radix__flush_tlb_all(void); |
---|
51 | | - |
---|
52 | | -extern void radix__flush_tlb_lpid_page(unsigned int lpid, |
---|
53 | | - unsigned long addr, |
---|
54 | | - unsigned long page_size); |
---|
55 | | -extern void radix__flush_pwc_lpid(unsigned int lpid); |
---|
56 | | -extern void radix__local_flush_tlb_lpid(unsigned int lpid); |
---|
57 | | -extern void radix__local_flush_tlb_lpid_guest(unsigned int lpid); |
---|
58 | 90 | |
---|
59 | 91 | #endif |
---|