/kernel/linux/linux-6.6/arch/arm64/mm/ |
H A D | context.c | 38 #define ctxid2asid(asid) ((asid) & ~ASID_MASK) 39 #define asid2ctxid(asid, genid) ((asid) | (genid)) 44 u32 asid; in get_cpu_asid_bits() local 54 asid = 8; in get_cpu_asid_bits() 57 asid = 16; in get_cpu_asid_bits() 60 return asid; in get_cpu_asid_bits() 66 u32 asid = get_cpu_asid_bits(); in verify_cpu_asid_bits() local 68 if (asid < asid_bit in verify_cpu_asid_bits() 107 u64 asid; flush_context() local 134 check_update_reserved_asid(u64 asid, u64 newasid) check_update_reserved_asid() argument 161 u64 asid = atomic64_read(&mm->context.id); new_context() local 219 u64 asid, old_active_asid; check_and_switch_context() local 258 atomic64_set(this_cpu_ptr(&active_asids), asid); check_and_switch_context() local 276 u64 asid; arm64_mm_context_get() local 322 u64 asid = atomic64_read(&mm->context.id); arm64_mm_context_put() local 352 unsigned long asid = ASID(mm); cpu_do_switch_mm() local [all...] |
/kernel/linux/linux-5.10/arch/arm64/mm/ |
H A D | context.c | 38 #define asid2idx(asid) ((asid) & ~ASID_MASK) 44 u32 asid; in get_cpu_asid_bits() local 54 asid = 8; in get_cpu_asid_bits() 57 asid = 16; in get_cpu_asid_bits() 60 return asid; in get_cpu_asid_bits() 66 u32 asid = get_cpu_asid_bits(); in verify_cpu_asid_bits() local 68 if (asid < asid_bits) { in verify_cpu_asid_bits() 74 smp_processor_id(), asid, asid_bits); in verify_cpu_asid_bits() 101 #define asid_gen_match(asid) \ 107 u64 asid; flush_context() local 134 check_update_reserved_asid(u64 asid, u64 newasid) check_update_reserved_asid() argument 161 u64 asid = atomic64_read(&mm->context.id); new_context() local 219 u64 asid, old_active_asid; check_and_switch_context() local 258 atomic64_set(this_cpu_ptr(&active_asids), asid); check_and_switch_context() local 276 u64 asid; arm64_mm_context_get() local 322 u64 asid = atomic64_read(&mm->context.id); arm64_mm_context_put() local 352 unsigned long asid = ASID(mm); cpu_do_switch_mm() local [all...] |
/kernel/linux/linux-5.10/arch/arm/mm/ |
H A D | context.c | 56 u64 context_id, asid; in a15_erratum_get_cpumask() local 67 asid = per_cpu(active_asids, cpu).counter; in a15_erratum_get_cpumask() 68 if (asid == 0) in a15_erratum_get_cpumask() 69 asid = per_cpu(reserved_asids, cpu); in a15_erratum_get_cpumask() 70 if (context_id == asid) in a15_erratum_get_cpumask() 139 u64 asid; in flush_context() local 144 asid = atomic64_xchg(&per_cpu(active_asids, i), 0); in flush_context() 152 if (asid == 0) in flush_context() 153 asid = per_cpu(reserved_asids, i); in flush_context() 154 __set_bit(asid in flush_context() 165 check_update_reserved_asid(u64 asid, u64 newasid) check_update_reserved_asid() argument 192 u64 asid = atomic64_read(&mm->context.id); new_context() local 241 u64 asid; check_and_switch_context() local 271 atomic64_set(&per_cpu(active_asids, cpu), asid); check_and_switch_context() local [all...] |
/kernel/linux/linux-6.6/arch/arm/mm/ |
H A D | context.c | 56 u64 context_id, asid; in a15_erratum_get_cpumask() local 67 asid = per_cpu(active_asids, cpu).counter; in a15_erratum_get_cpumask() 68 if (asid == 0) in a15_erratum_get_cpumask() 69 asid = per_cpu(reserved_asids, cpu); in a15_erratum_get_cpumask() 70 if (context_id == asid) in a15_erratum_get_cpumask() 139 u64 asid; in flush_context() local 144 asid = atomic64_xchg(&per_cpu(active_asids, i), 0); in flush_context() 152 if (asid == 0) in flush_context() 153 asid = per_cpu(reserved_asids, i); in flush_context() 154 __set_bit(asid in flush_context() 165 check_update_reserved_asid(u64 asid, u64 newasid) check_update_reserved_asid() argument 192 u64 asid = atomic64_read(&mm->context.id); new_context() local 241 u64 asid; check_and_switch_context() local 270 atomic64_set(&per_cpu(active_asids, cpu), asid); check_and_switch_context() local [all...] |
/kernel/linux/linux-5.10/arch/csky/mm/ |
H A D | asid.c | 14 #include <asm/asid.h> 21 #define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift) 27 u64 asid; in flush_context() local 33 asid = atomic64_xchg_relaxed(&active_asid(info, i), 0); in flush_context() 41 if (asid == 0) in flush_context() 42 asid = reserved_asid(info, i); in flush_context() 43 __set_bit(asid2idx(info, asid), info->map); in flush_context() 44 reserved_asid(info, i) = asid; in flush_context() 54 static bool check_update_reserved_asid(struct asid_info *info, u64 asid, in check_update_reserved_asid() argument 83 u64 asid = atomic64_read(pasid); new_context() local 141 u64 asid; asid_new_context() local 154 atomic64_set(&active_asid(info, cpu), asid); asid_new_context() local [all...] |
/kernel/linux/linux-6.6/arch/csky/mm/ |
H A D | asid.c | 14 #include <asm/asid.h> 21 #define asid2idx(info, asid) (((asid) & ~ASID_MASK(info)) >> (info)->ctxt_shift) 27 u64 asid; in flush_context() local 33 asid = atomic64_xchg_relaxed(&active_asid(info, i), 0); in flush_context() 41 if (asid == 0) in flush_context() 42 asid = reserved_asid(info, i); in flush_context() 43 __set_bit(asid2idx(info, asid), info->map); in flush_context() 44 reserved_asid(info, i) = asid; in flush_context() 54 static bool check_update_reserved_asid(struct asid_info *info, u64 asid, in check_update_reserved_asid() argument 83 u64 asid = atomic64_read(pasid); new_context() local 141 u64 asid; asid_new_context() local 154 atomic64_set(&active_asid(info, cpu), asid); asid_new_context() local [all...] |
/kernel/linux/linux-6.6/arch/riscv/mm/ |
H A D | tlbflush.c | 9 static inline void local_flush_tlb_all_asid(unsigned long asid) in local_flush_tlb_all_asid() argument 11 if (asid != FLUSH_TLB_NO_ASID) in local_flush_tlb_all_asid() 14 : "r" (asid) in local_flush_tlb_all_asid() 21 unsigned long asid) in local_flush_tlb_page_asid() 23 if (asid != FLUSH_TLB_NO_ASID) in local_flush_tlb_page_asid() 26 : "r" (addr), "r" (asid) in local_flush_tlb_page_asid() 41 unsigned long asid) in local_flush_tlb_range_threshold_asid() 47 local_flush_tlb_all_asid(asid); in local_flush_tlb_range_threshold_asid() 52 local_flush_tlb_page_asid(start, asid); in local_flush_tlb_range_threshold_asid() 58 unsigned long size, unsigned long stride, unsigned long asid) in local_flush_tlb_range_asid() 20 local_flush_tlb_page_asid(unsigned long addr, unsigned long asid) local_flush_tlb_page_asid() argument 38 local_flush_tlb_range_threshold_asid(unsigned long start, unsigned long size, unsigned long stride, unsigned long asid) local_flush_tlb_range_threshold_asid() argument 57 local_flush_tlb_range_asid(unsigned long start, unsigned long size, unsigned long stride, unsigned long asid) local_flush_tlb_range_asid() argument 88 unsigned long asid; global() member 106 unsigned long asid = FLUSH_TLB_NO_ASID; __flush_tlb_range() local [all...] |
/kernel/linux/linux-5.10/arch/sh/include/asm/ |
H A D | mmu_context_32.h | 15 static inline void set_asid(unsigned long asid) in set_asid() argument 17 __raw_writel(asid, MMU_PTEAEX); in set_asid() 25 static inline void set_asid(unsigned long asid) in set_asid() argument 34 : "r" (asid), "m" (__m(MMU_PTEH)), in set_asid() 40 unsigned long asid; in get_asid() local 43 : "=r" (asid) in get_asid() 45 asid &= MMU_CONTEXT_ASID_MASK; in get_asid() 46 return asid; in get_asid()
|
H A D | mmu_context.h | 57 unsigned long asid = asid_cache(cpu); in get_mmu_context() local 60 if (((cpu_context(cpu, mm) ^ asid) & MMU_CONTEXT_VERSION_MASK) == 0) in get_mmu_context() 65 if (!(++asid & MMU_CONTEXT_ASID_MASK)) { in get_mmu_context() 76 if (!asid) in get_mmu_context() 77 asid = MMU_CONTEXT_FIRST_VERSION; in get_mmu_context() 80 cpu_context(cpu, mm) = asid_cache(cpu) = asid; in get_mmu_context() 129 #define set_asid(asid) do { } while (0) 132 #define switch_and_save_asid(asid) (0)
|
/kernel/linux/linux-6.6/arch/sh/include/asm/ |
H A D | mmu_context_32.h | 6 static inline void set_asid(unsigned long asid) in set_asid() argument 8 __raw_writel(asid, MMU_PTEAEX); in set_asid() 16 static inline void set_asid(unsigned long asid) in set_asid() argument 25 : "r" (asid), "m" (__m(MMU_PTEH)), in set_asid() 31 unsigned long asid; in get_asid() local 34 : "=r" (asid) in get_asid() 36 asid &= MMU_CONTEXT_ASID_MASK; in get_asid() 37 return asid; in get_asid()
|
H A D | mmu_context.h | 57 unsigned long asid = asid_cache(cpu); in get_mmu_context() local 60 if (((cpu_context(cpu, mm) ^ asid) & MMU_CONTEXT_VERSION_MASK) == 0) in get_mmu_context() 65 if (!(++asid & MMU_CONTEXT_ASID_MASK)) { in get_mmu_context() 76 if (!asid) in get_mmu_context() 77 asid = MMU_CONTEXT_FIRST_VERSION; in get_mmu_context() 80 cpu_context(cpu, mm) = asid_cache(cpu) = asid; in get_mmu_context() 128 #define set_asid(asid) do { } while (0) 131 #define switch_and_save_asid(asid) (0)
|
/kernel/linux/linux-5.10/arch/xtensa/include/asm/ |
H A D | mmu_context.h | 72 unsigned long asid = cpu_asid_cache(cpu); in get_new_mmu_context() local 73 if ((++asid & ASID_MASK) == 0) { in get_new_mmu_context() 75 * Start new asid cycle; continue counting with next in get_new_mmu_context() 79 asid += ASID_USER_FIRST; in get_new_mmu_context() 81 cpu_asid_cache(cpu) = asid; in get_new_mmu_context() 82 mm->context.asid[cpu] = asid; in get_new_mmu_context() 93 unsigned long asid = mm->context.asid[cpu]; in get_mmu_context() local 95 if (asid in get_mmu_context() [all...] |
/kernel/linux/linux-5.10/arch/sh/mm/ |
H A D | tlbflush_32.c | 21 unsigned long asid; in local_flush_tlb_page() local 24 asid = cpu_asid(cpu, vma->vm_mm); in local_flush_tlb_page() 30 set_asid(asid); in local_flush_tlb_page() 32 local_flush_tlb_one(asid, page); in local_flush_tlb_page() 56 unsigned long asid; in local_flush_tlb_range() local 59 asid = cpu_asid(cpu, mm); in local_flush_tlb_range() 65 set_asid(asid); in local_flush_tlb_range() 68 local_flush_tlb_one(asid, start); in local_flush_tlb_range() 89 unsigned long asid; in local_flush_tlb_kernel_range() local 92 asid in local_flush_tlb_kernel_range() [all...] |
/kernel/linux/linux-6.6/arch/sh/mm/ |
H A D | tlbflush_32.c | 21 unsigned long asid; in local_flush_tlb_page() local 24 asid = cpu_asid(cpu, vma->vm_mm); in local_flush_tlb_page() 30 set_asid(asid); in local_flush_tlb_page() 32 local_flush_tlb_one(asid, page); in local_flush_tlb_page() 56 unsigned long asid; in local_flush_tlb_range() local 59 asid = cpu_asid(cpu, mm); in local_flush_tlb_range() 65 set_asid(asid); in local_flush_tlb_range() 68 local_flush_tlb_one(asid, start); in local_flush_tlb_range() 89 unsigned long asid; in local_flush_tlb_kernel_range() local 92 asid in local_flush_tlb_kernel_range() [all...] |
/kernel/linux/linux-6.6/arch/xtensa/include/asm/ |
H A D | mmu_context.h | 72 unsigned long asid = cpu_asid_cache(cpu); in get_new_mmu_context() local 73 if ((++asid & ASID_MASK) == 0) { in get_new_mmu_context() 75 * Start new asid cycle; continue counting with next in get_new_mmu_context() 79 asid += ASID_USER_FIRST; in get_new_mmu_context() 81 cpu_asid_cache(cpu) = asid; in get_new_mmu_context() 82 mm->context.asid[cpu] = asid; in get_new_mmu_context() 93 unsigned long asid = mm->context.asid[cpu]; in get_mmu_context() local 95 if (asid in get_mmu_context() [all...] |
/kernel/linux/linux-6.6/arch/arm64/include/asm/ |
H A D | tlbflush.h | 58 #define __TLBI_VADDR(addr, asid) \ 62 __ta |= (unsigned long)(asid) << 48; \ 137 #define __TLBI_VADDR_RANGE(addr, asid, scale, num, ttl) \ 145 __ta |= (unsigned long)(asid) << 48; \ 249 unsigned long asid; in flush_tlb_mm() local 252 asid = __TLBI_VADDR(0, ASID(mm)); in flush_tlb_mm() 253 __tlbi(aside1is, asid); in flush_tlb_mm() 254 __tlbi_user(aside1is, asid); in flush_tlb_mm() 345 * @asid: The ASID of the task (0 for IPA instructions) 368 asid, tlb_leve 408 unsigned long asid, pages; __flush_tlb_range() local [all...] |
/kernel/linux/linux-5.10/drivers/iommu/arm/arm-smmu-v3/ |
H A D | arm-smmu-v3-sva.c | 20 arm_smmu_share_asid(struct mm_struct *mm, u16 asid) in arm_smmu_share_asid() argument 28 cd = xa_load(&arm_smmu_asid_xa, asid); in arm_smmu_share_asid() 52 cd->asid = new_asid; in arm_smmu_share_asid() 61 arm_smmu_tlb_inv_asid(smmu, asid); in arm_smmu_share_asid() 63 xa_erase(&arm_smmu_asid_xa, asid); in arm_smmu_share_asid() 70 u16 asid; in arm_smmu_alloc_shared_cd() local 76 asid = arm64_mm_context_get(mm); in arm_smmu_alloc_shared_cd() 77 if (!asid) in arm_smmu_alloc_shared_cd() 89 ret = arm_smmu_share_asid(mm, asid); in arm_smmu_alloc_shared_cd() 95 err = xa_insert(&arm_smmu_asid_xa, asid, c in arm_smmu_alloc_shared_cd() [all...] |
/kernel/linux/linux-6.6/arch/riscv/kvm/ |
H A D | tlb.c | 78 unsigned long asid, in kvm_riscv_local_hfence_vvma_asid_gva() 86 kvm_riscv_local_hfence_vvma_asid_all(vmid, asid); in kvm_riscv_local_hfence_vvma_asid_gva() 96 : : "r" (pos), "r" (asid) : "memory"); in kvm_riscv_local_hfence_vvma_asid_gva() 101 : : "r" (pos), "r" (asid) : "memory"); in kvm_riscv_local_hfence_vvma_asid_gva() 108 unsigned long asid) in kvm_riscv_local_hfence_vvma_asid_all() 114 asm volatile(HFENCE_VVMA(zero, %0) : : "r" (asid) : "memory"); in kvm_riscv_local_hfence_vvma_asid_all() 269 READ_ONCE(v->vmid), d.asid, in kvm_riscv_hfence_process() 275 READ_ONCE(v->vmid), d.asid); in kvm_riscv_hfence_process() 340 data.asid = 0; in kvm_riscv_hfence_gvma_vmid_gpa() 358 unsigned long order, unsigned long asid) in kvm_riscv_hfence_vvma_asid_gva() 77 kvm_riscv_local_hfence_vvma_asid_gva(unsigned long vmid, unsigned long asid, unsigned long gva, unsigned long gvsz, unsigned long order) kvm_riscv_local_hfence_vvma_asid_gva() argument 107 kvm_riscv_local_hfence_vvma_asid_all(unsigned long vmid, unsigned long asid) kvm_riscv_local_hfence_vvma_asid_all() argument 355 kvm_riscv_hfence_vvma_asid_gva(struct kvm *kvm, unsigned long hbase, unsigned long hmask, unsigned long gva, unsigned long gvsz, unsigned long order, unsigned long asid) kvm_riscv_hfence_vvma_asid_gva() argument 371 kvm_riscv_hfence_vvma_asid_all(struct kvm *kvm, unsigned long hbase, unsigned long hmask, unsigned long asid) kvm_riscv_hfence_vvma_asid_all() argument [all...] |
/kernel/linux/linux-5.10/arch/x86/mm/ |
H A D | tlb.c | 101 * Given @asid, compute kPCID 103 static inline u16 kern_pcid(u16 asid) in kern_pcid() argument 105 VM_WARN_ON_ONCE(asid > MAX_ASID_AVAILABLE); in kern_pcid() 118 VM_WARN_ON_ONCE(asid & (1 << X86_CR3_PTI_PCID_USER_BIT)); in kern_pcid() 133 return asid + 1; in kern_pcid() 137 * Given @asid, compute uPCID 139 static inline u16 user_pcid(u16 asid) in user_pcid() argument 141 u16 ret = kern_pcid(asid); in user_pcid() 148 static inline unsigned long build_cr3(pgd_t *pgd, u16 asid) in build_cr3() argument 151 return __sme_pa(pgd) | kern_pcid(asid); in build_cr3() 158 build_cr3_noflush(pgd_t *pgd, u16 asid) build_cr3_noflush() argument 178 u16 asid; clear_asid_other() local 208 u16 asid; choose_new_asid() local 248 invalidate_user_asid(u16 asid) invalidate_user_asid() argument [all...] |
/kernel/linux/linux-6.6/arch/x86/mm/ |
H A D | tlb.c | 111 * Given @asid, compute kPCID 113 static inline u16 kern_pcid(u16 asid) in kern_pcid() argument 115 VM_WARN_ON_ONCE(asid > MAX_ASID_AVAILABLE); in kern_pcid() 128 VM_WARN_ON_ONCE(asid & (1 << X86_CR3_PTI_PCID_USER_BIT)); in kern_pcid() 143 return asid + 1; in kern_pcid() 147 * Given @asid, compute uPCID 149 static inline u16 user_pcid(u16 asid) in user_pcid() argument 151 u16 ret = kern_pcid(asid); in user_pcid() 158 static inline unsigned long build_cr3(pgd_t *pgd, u16 asid, unsigned long lam) in build_cr3() argument 163 VM_WARN_ON_ONCE(asid > MAX_ASID_AVAILABL in build_cr3() 172 build_cr3_noflush(pgd_t *pgd, u16 asid, unsigned long lam) build_cr3_noflush() argument 192 u16 asid; clear_asid_other() local 222 u16 asid; choose_new_asid() local 262 invalidate_user_asid(u16 asid) invalidate_user_asid() argument [all...] |
/kernel/linux/linux-5.10/arch/arm64/include/asm/ |
H A D | tlbflush.h | 57 #define __TLBI_VADDR(addr, asid) \ 61 __ta |= (unsigned long)(asid) << 48; \ 136 #define __TLBI_VADDR_RANGE(addr, asid, scale, num, ttl) \ 144 __ta |= (unsigned long)(asid) << 48; \ 248 unsigned long asid; in flush_tlb_mm() local 251 asid = __TLBI_VADDR(0, ASID(mm)); in flush_tlb_mm() 252 __tlbi(aside1is, asid); in flush_tlb_mm() 253 __tlbi_user(aside1is, asid); in flush_tlb_mm() 288 unsigned long asid, addr, pages; in __flush_tlb_range() local 308 asid in __flush_tlb_range() [all...] |
/kernel/linux/linux-5.10/drivers/misc/sgi-gru/ |
H A D | grumain.c | 62 * asid in use ("x"s below). Set "limit" to this value. 70 * Each time MAX_ASID is reached, increment the asid generation. Since 73 * a context, the asid generation of the GTS asid is rechecked. If it 74 * doesn't match the current generation, a new asid will be assigned. 79 * All asid manipulation & context loading/unloading is protected by the 83 /* Hit the asid limit. Start over */ 93 static int gru_reset_asid_limit(struct gru_state *gru, int asid) in gru_reset_asid_limit() argument 97 gru_dbg(grudev, "gid %d, asid 0x%x\n", gru->gs_gid, asid); in gru_reset_asid_limit() 139 int asid; gru_assign_asid() local 230 int asid; gru_load_mm_tracker() local 582 int i, err, asid, ctxnum = gts->ts_ctxnum; gru_load_context() local [all...] |
/kernel/linux/linux-6.6/drivers/misc/sgi-gru/ |
H A D | grumain.c | 62 * asid in use ("x"s below). Set "limit" to this value. 70 * Each time MAX_ASID is reached, increment the asid generation. Since 73 * a context, the asid generation of the GTS asid is rechecked. If it 74 * doesn't match the current generation, a new asid will be assigned. 79 * All asid manipulation & context loading/unloading is protected by the 83 /* Hit the asid limit. Start over */ 93 static int gru_reset_asid_limit(struct gru_state *gru, int asid) in gru_reset_asid_limit() argument 97 gru_dbg(grudev, "gid %d, asid 0x%x\n", gru->gs_gid, asid); in gru_reset_asid_limit() 139 int asid; gru_assign_asid() local 230 int asid; gru_load_mm_tracker() local 582 int i, err, asid, ctxnum = gts->ts_ctxnum; gru_load_context() local [all...] |
/kernel/linux/linux-5.10/drivers/misc/habanalabs/common/ |
H A D | asid.c | 51 void hl_asid_free(struct hl_device *hdev, unsigned long asid) in hl_asid_free() argument 53 if (WARN((asid == 0 || asid >= hdev->asic_prop.max_asid), in hl_asid_free() 54 "Invalid ASID %lu", asid)) in hl_asid_free() 56 clear_bit(asid, hdev->asid_bitmap); in hl_asid_free()
|
/kernel/linux/linux-6.6/drivers/accel/habanalabs/common/ |
H A D | asid.c | 50 void hl_asid_free(struct hl_device *hdev, unsigned long asid) in hl_asid_free() argument 52 if (asid == HL_KERNEL_ASID_ID || asid >= hdev->asic_prop.max_asid) { in hl_asid_free() 53 dev_crit(hdev->dev, "Invalid ASID %lu", asid); in hl_asid_free() 57 clear_bit(asid, hdev->asid_bitmap); in hl_asid_free()
|