|
@@ -639,46 +639,6 @@ void radix__flush_tlb_collapsed_pmd(struct mm_struct *mm, unsigned long addr)
|
|
|
}
|
|
|
#endif /* CONFIG_TRANSPARENT_HUGEPAGE */
|
|
|
|
|
|
-void radix__flush_tlb_lpid_va(unsigned long lpid, unsigned long gpa,
|
|
|
- unsigned long page_size)
|
|
|
-{
|
|
|
- unsigned long rb,rs,prs,r;
|
|
|
- unsigned long ap;
|
|
|
- unsigned long ric = RIC_FLUSH_TLB;
|
|
|
-
|
|
|
- ap = mmu_get_ap(radix_get_mmu_psize(page_size));
|
|
|
- rb = gpa & ~(PPC_BITMASK(52, 63));
|
|
|
- rb |= ap << PPC_BITLSHIFT(58);
|
|
|
- rs = lpid & ((1UL << 32) - 1);
|
|
|
- prs = 0; /* process scoped */
|
|
|
- r = 1; /* raidx format */
|
|
|
-
|
|
|
- asm volatile("ptesync": : :"memory");
|
|
|
- asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
|
|
|
- : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
|
|
|
- asm volatile("eieio; tlbsync; ptesync": : :"memory");
|
|
|
- trace_tlbie(lpid, 0, rb, rs, ric, prs, r);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(radix__flush_tlb_lpid_va);
|
|
|
-
|
|
|
-void radix__flush_tlb_lpid(unsigned long lpid)
|
|
|
-{
|
|
|
- unsigned long rb,rs,prs,r;
|
|
|
- unsigned long ric = RIC_FLUSH_ALL;
|
|
|
-
|
|
|
- rb = 0x2 << PPC_BITLSHIFT(53); /* IS = 2 */
|
|
|
- rs = lpid & ((1UL << 32) - 1);
|
|
|
- prs = 0; /* partition scoped */
|
|
|
- r = 1; /* raidx format */
|
|
|
-
|
|
|
- asm volatile("ptesync": : :"memory");
|
|
|
- asm volatile(PPC_TLBIE_5(%0, %4, %3, %2, %1)
|
|
|
- : : "r"(rb), "i"(r), "i"(prs), "i"(ric), "r"(rs) : "memory");
|
|
|
- asm volatile("eieio; tlbsync; ptesync": : :"memory");
|
|
|
- trace_tlbie(lpid, 0, rb, rs, ric, prs, r);
|
|
|
-}
|
|
|
-EXPORT_SYMBOL(radix__flush_tlb_lpid);
|
|
|
-
|
|
|
void radix__flush_pmd_tlb_range(struct vm_area_struct *vma,
|
|
|
unsigned long start, unsigned long end)
|
|
|
{
|