Lines Matching full:pid

30 					unsigned int pid,  in tlbiel_radix_set_isa300()  argument
37 rs = ((unsigned long)pid << PPC_BITLSHIFT(31)); in tlbiel_radix_set_isa300()
94 static __always_inline void __tlbiel_pid(unsigned long pid, int set, in __tlbiel_pid() argument
101 rs = ((unsigned long)pid) << PPC_BITLSHIFT(31); in __tlbiel_pid()
110 static __always_inline void __tlbie_pid(unsigned long pid, unsigned long ric) in __tlbie_pid() argument
115 rs = pid << PPC_BITLSHIFT(31); in __tlbie_pid()
152 static __always_inline void __tlbiel_va(unsigned long va, unsigned long pid, in __tlbiel_va() argument
159 rs = pid << PPC_BITLSHIFT(31); in __tlbiel_va()
168 static __always_inline void __tlbie_va(unsigned long va, unsigned long pid, in __tlbie_va() argument
175 rs = pid << PPC_BITLSHIFT(31); in __tlbie_va()
201 static inline void fixup_tlbie_va(unsigned long va, unsigned long pid, in fixup_tlbie_va() argument
211 __tlbie_va(va, pid, ap, RIC_FLUSH_TLB); in fixup_tlbie_va()
215 static inline void fixup_tlbie_va_range(unsigned long va, unsigned long pid, in fixup_tlbie_va_range() argument
225 __tlbie_va(va, pid, ap, RIC_FLUSH_TLB); in fixup_tlbie_va_range()
229 static inline void fixup_tlbie_pid(unsigned long pid) in fixup_tlbie_pid() argument
244 __tlbie_va(va, pid, mmu_get_ap(MMU_PAGE_64K), RIC_FLUSH_TLB); in fixup_tlbie_pid()
285 static __always_inline void _tlbiel_pid(unsigned long pid, unsigned long ric) in _tlbiel_pid() argument
295 __tlbiel_pid(pid, 0, ric); in _tlbiel_pid()
305 __tlbiel_pid(pid, set, RIC_FLUSH_TLB); in _tlbiel_pid()
311 static inline void _tlbie_pid(unsigned long pid, unsigned long ric) in _tlbie_pid() argument
322 __tlbie_pid(pid, RIC_FLUSH_TLB); in _tlbie_pid()
323 fixup_tlbie_pid(pid); in _tlbie_pid()
326 __tlbie_pid(pid, RIC_FLUSH_PWC); in _tlbie_pid()
330 __tlbie_pid(pid, RIC_FLUSH_ALL); in _tlbie_pid()
331 fixup_tlbie_pid(pid); in _tlbie_pid()
337 unsigned long pid; member
346 _tlbiel_pid(t->pid, RIC_FLUSH_TLB); in do_tlbiel_pid()
348 _tlbiel_pid(t->pid, RIC_FLUSH_PWC); in do_tlbiel_pid()
350 _tlbiel_pid(t->pid, RIC_FLUSH_ALL); in do_tlbiel_pid()
354 unsigned long pid, unsigned long ric) in _tlbiel_pid_multicast() argument
357 struct tlbiel_pid t = { .pid = pid, .ric = ric }; in _tlbiel_pid_multicast()
366 _tlbie_pid(pid, RIC_FLUSH_ALL); in _tlbiel_pid_multicast()
417 unsigned long pid, unsigned long page_size, in __tlbiel_va_range() argument
424 __tlbiel_va(addr, pid, ap, RIC_FLUSH_TLB); in __tlbiel_va_range()
427 static __always_inline void _tlbiel_va(unsigned long va, unsigned long pid, in _tlbiel_va() argument
433 __tlbiel_va(va, pid, ap, ric); in _tlbiel_va()
438 unsigned long pid, unsigned long page_size, in _tlbiel_va_range() argument
443 __tlbiel_pid(pid, 0, RIC_FLUSH_PWC); in _tlbiel_va_range()
444 __tlbiel_va_range(start, end, pid, page_size, psize); in _tlbiel_va_range()
449 unsigned long pid, unsigned long page_size, in __tlbie_va_range() argument
456 __tlbie_va(addr, pid, ap, RIC_FLUSH_TLB); in __tlbie_va_range()
458 fixup_tlbie_va_range(addr - page_size, pid, ap); in __tlbie_va_range()
461 static __always_inline void _tlbie_va(unsigned long va, unsigned long pid, in _tlbie_va() argument
467 __tlbie_va(va, pid, ap, ric); in _tlbie_va()
468 fixup_tlbie_va(va, pid, ap); in _tlbie_va()
473 unsigned long pid; member
484 _tlbiel_va(t->va, t->pid, t->psize, RIC_FLUSH_TLB); in do_tlbiel_va()
486 _tlbiel_va(t->va, t->pid, t->psize, RIC_FLUSH_PWC); in do_tlbiel_va()
488 _tlbiel_va(t->va, t->pid, t->psize, RIC_FLUSH_ALL); in do_tlbiel_va()
492 unsigned long va, unsigned long pid, in _tlbiel_va_multicast() argument
496 struct tlbiel_va t = { .va = va, .pid = pid, .psize = psize, .ric = ric }; in _tlbiel_va_multicast()
499 _tlbie_va(va, pid, psize, RIC_FLUSH_TLB); in _tlbiel_va_multicast()
503 unsigned long pid; member
515 _tlbiel_va_range(t->start, t->end, t->pid, t->page_size, in do_tlbiel_va_range()
531 unsigned long pid, unsigned long page_size, in _tlbie_va_range() argument
536 __tlbie_pid(pid, RIC_FLUSH_PWC); in _tlbie_va_range()
537 __tlbie_va_range(start, end, pid, page_size, psize); in _tlbie_va_range()
543 unsigned long pid, unsigned long page_size, in _tlbiel_va_range_multicast() argument
548 .pid = pid, .page_size = page_size, in _tlbiel_va_range_multicast()
553 _tlbie_va_range(start, end, pid, page_size, psize, also_pwc); in _tlbiel_va_range_multicast()
569 unsigned long pid; in radix__local_flush_tlb_mm() local
572 pid = mm->context.id; in radix__local_flush_tlb_mm()
573 if (pid != MMU_NO_CONTEXT) in radix__local_flush_tlb_mm()
574 _tlbiel_pid(pid, RIC_FLUSH_TLB); in radix__local_flush_tlb_mm()
582 unsigned long pid; in radix__local_flush_all_mm() local
585 pid = mm->context.id; in radix__local_flush_all_mm()
586 if (pid != MMU_NO_CONTEXT) in radix__local_flush_all_mm()
587 _tlbiel_pid(pid, RIC_FLUSH_ALL); in radix__local_flush_all_mm()
601 unsigned long pid; in radix__local_flush_tlb_page_psize() local
604 pid = mm->context.id; in radix__local_flush_tlb_page_psize()
605 if (pid != MMU_NO_CONTEXT) in radix__local_flush_tlb_page_psize()
606 _tlbiel_va(vmaddr, pid, psize, RIC_FLUSH_TLB); in radix__local_flush_tlb_page_psize()
635 * RIC = 0 for a PID/LPID invalidate in mm_needs_flush_escalation()
646 unsigned long pid = mm->context.id; in do_exit_flush_lazy_tlb() local
671 _tlbiel_pid(pid, RIC_FLUSH_ALL); in do_exit_flush_lazy_tlb()
689 unsigned long pid; in radix__flush_tlb_mm() local
691 pid = mm->context.id; in radix__flush_tlb_mm()
692 if (unlikely(pid == MMU_NO_CONTEXT)) in radix__flush_tlb_mm()
712 pseries_rpt_invalidate(pid, tgt, H_RPTI_TYPE_TLB, in radix__flush_tlb_mm()
716 _tlbie_pid(pid, RIC_FLUSH_ALL); in radix__flush_tlb_mm()
718 _tlbie_pid(pid, RIC_FLUSH_TLB); in radix__flush_tlb_mm()
720 _tlbiel_pid_multicast(mm, pid, RIC_FLUSH_TLB); in radix__flush_tlb_mm()
724 _tlbiel_pid(pid, RIC_FLUSH_TLB); in radix__flush_tlb_mm()
732 unsigned long pid; in __flush_all_mm() local
734 pid = mm->context.id; in __flush_all_mm()
735 if (unlikely(pid == MMU_NO_CONTEXT)) in __flush_all_mm()
754 pseries_rpt_invalidate(pid, tgt, type, in __flush_all_mm()
757 _tlbie_pid(pid, RIC_FLUSH_ALL); in __flush_all_mm()
759 _tlbiel_pid_multicast(mm, pid, RIC_FLUSH_ALL); in __flush_all_mm()
762 _tlbiel_pid(pid, RIC_FLUSH_ALL); in __flush_all_mm()
776 unsigned long pid; in radix__flush_tlb_page_psize() local
778 pid = mm->context.id; in radix__flush_tlb_page_psize()
779 if (unlikely(pid == MMU_NO_CONTEXT)) in radix__flush_tlb_page_psize()
798 pseries_rpt_invalidate(pid, tgt, H_RPTI_TYPE_TLB, in radix__flush_tlb_page_psize()
802 _tlbie_va(vmaddr, pid, psize, RIC_FLUSH_TLB); in radix__flush_tlb_page_psize()
804 _tlbiel_va_multicast(mm, vmaddr, pid, psize, RIC_FLUSH_TLB); in radix__flush_tlb_page_psize()
807 _tlbiel_va(vmaddr, pid, psize, RIC_FLUSH_TLB); in radix__flush_tlb_page_psize()
868 * Number of pages above which we invalidate the entire PID rather than
873 * invalidating a full PID, so it has a far lower threshold to change from
874 * individual page flushes to full-pid flushes.
883 unsigned long pid; in __radix__flush_tlb_range() local
889 pid = mm->context.id; in __radix__flush_tlb_range()
890 if (unlikely(pid == MMU_NO_CONTEXT)) in __radix__flush_tlb_range()
920 pseries_rpt_invalidate(pid, tgt, H_RPTI_TYPE_TLB, pg_sizes, in __radix__flush_tlb_range()
924 _tlbiel_pid(pid, RIC_FLUSH_TLB); in __radix__flush_tlb_range()
928 _tlbie_pid(pid, RIC_FLUSH_ALL); in __radix__flush_tlb_range()
930 _tlbie_pid(pid, RIC_FLUSH_TLB); in __radix__flush_tlb_range()
932 _tlbiel_pid_multicast(mm, pid, RIC_FLUSH_TLB); in __radix__flush_tlb_range()
948 __tlbiel_va_range(start, end, pid, page_size, mmu_virtual_psize); in __radix__flush_tlb_range()
950 __tlbiel_va_range(hstart, hend, pid, in __radix__flush_tlb_range()
955 __tlbie_va_range(start, end, pid, page_size, mmu_virtual_psize); in __radix__flush_tlb_range()
957 __tlbie_va_range(hstart, hend, pid, in __radix__flush_tlb_range()
962 start, end, pid, page_size, mmu_virtual_psize, false); in __radix__flush_tlb_range()
965 hstart, hend, pid, PMD_SIZE, MMU_PAGE_2M, false); in __radix__flush_tlb_range()
1075 unsigned long pid; in __radix__flush_tlb_range_psize() local
1081 pid = mm->context.id; in __radix__flush_tlb_range_psize()
1082 if (unlikely(pid == MMU_NO_CONTEXT)) in __radix__flush_tlb_range_psize()
1113 pseries_rpt_invalidate(pid, tgt, type, pg_sizes, start, end); in __radix__flush_tlb_range_psize()
1116 _tlbiel_pid(pid, also_pwc ? RIC_FLUSH_ALL : RIC_FLUSH_TLB); in __radix__flush_tlb_range_psize()
1122 _tlbie_pid(pid, in __radix__flush_tlb_range_psize()
1125 _tlbiel_pid_multicast(mm, pid, in __radix__flush_tlb_range_psize()
1132 _tlbiel_va_range(start, end, pid, page_size, psize, also_pwc); in __radix__flush_tlb_range_psize()
1134 _tlbie_va_range(start, end, pid, page_size, psize, also_pwc); in __radix__flush_tlb_range_psize()
1137 start, end, pid, page_size, psize, also_pwc); in __radix__flush_tlb_range_psize()
1157 unsigned long pid, end; in radix__flush_tlb_collapsed_pmd() local
1159 pid = mm->context.id; in radix__flush_tlb_collapsed_pmd()
1160 if (unlikely(pid == MMU_NO_CONTEXT)) in radix__flush_tlb_collapsed_pmd()
1189 pseries_rpt_invalidate(pid, tgt, type, pg_sizes, in radix__flush_tlb_collapsed_pmd()
1192 _tlbie_va_range(addr, end, pid, PAGE_SIZE, mmu_virtual_psize, true); in radix__flush_tlb_collapsed_pmd()
1195 addr, end, pid, PAGE_SIZE, mmu_virtual_psize, true); in radix__flush_tlb_collapsed_pmd()
1198 _tlbiel_va_range(addr, end, pid, PAGE_SIZE, mmu_virtual_psize, true); in radix__flush_tlb_collapsed_pmd()
1239 unsigned long pid = mm->context.id; in radix_kvm_prefetch_workaround() local
1241 if (unlikely(pid == MMU_NO_CONTEXT)) in radix_kvm_prefetch_workaround()
1251 * this CPU due to a bad prefetch using the guest PID on in radix_kvm_prefetch_workaround()
1256 * and thus we flush that PID from the core. in radix_kvm_prefetch_workaround()
1259 * have never been used on the system and avoid it if the PID in radix_kvm_prefetch_workaround()
1276 _tlbiel_pid(pid, RIC_FLUSH_ALL); in radix_kvm_prefetch_workaround()