mmid
atomic64_t mmid;
return atomic64_read(&mm->context.mmid);
atomic64_set(&mm->context.mmid, ctx);
mmid = read_c0_memorymapid();
mmid = entryhi & asidmask;
if (!((entrylo0 | entrylo1) & ENTRYLO_G) && (mmid != asid))
asidwidth, mmid);
unsigned long s_entryhi, entryhi, asid, mmid;
if (per_cpu(reserved_mmids, cpu) == mmid) {
u64 mmid, version, mmid_mask;
mmid = cpu_context(0, mm);
if (!asid_versions_eq(0, mmid, 0)) {
u64 newmmid = version | (mmid & mmid_mask);
if (check_update_reserved_mmid(mmid, newmmid)) {
mmid = newmmid;
if (!__test_and_set_bit(mmid & mmid_mask, mmid_map)) {
mmid = newmmid;
mmid = find_next_zero_bit(mmid_map, num_mmids, cur_idx);
if (mmid != num_mmids)
mmid = find_first_zero_bit(mmid_map, num_mmids);
__set_bit(mmid, mmid_map);
cur_idx = mmid;
mmid |= version;
set_cpu_context(0, mm, mmid);
return mmid;
u64 mmid;
mmid = xchg_relaxed(&cpu_data[cpu].asid_cache, 0);
if (mmid == 0)
mmid = per_cpu(reserved_mmids, cpu);
__set_bit(mmid & cpu_asid_mask(&cpu_data[cpu]), mmid_map);
per_cpu(reserved_mmids, cpu) = mmid;
static bool check_update_reserved_mmid(u64 mmid, u64 newmmid)
u32 mmid;
mmid = stag >> 8;
pr_debug("mmid 0x%x mhp %p\n", mmid, mhp);
return xa_insert_irq(&mhp->rhp->mrs, mmid, mhp, GFP_KERNEL);
u32 mmid;
mmid = (stag) >> 8;
if (xa_insert_irq(&rhp->mrs, mmid, mhp, GFP_KERNEL)) {
pr_debug("mmid 0x%x mhp %p stag 0x%x\n", mmid, mhp, stag);
u32 mmid;
mmid = mhp->attr.stag >> 8;
xa_erase_irq(&rhp->mrs, mmid);
pr_debug("mmid 0x%x ptr %p\n", mmid, mhp);
mmu->mmid, (unsigned int)mmu->iova_trash_page);
void __iomem *base, int mmid,
mmu->mmid = mmid;
unsigned int mmid;
void __iomem *base, int mmid,
int mmid;
mmu->mmid, (unsigned int)mmu->iova_trash_page);
void __iomem *base, int mmid,
mmu->mmid = mmid;
unsigned int mmid;
void __iomem *base, int mmid,
int mmid;