Lines Matching refs:slb
25 static bool sste_matches(struct cxl_sste *sste, struct copro_slb *slb) in sste_matches() argument
27 return ((sste->vsid_data == cpu_to_be64(slb->vsid)) && in sste_matches()
28 (sste->esid_data == cpu_to_be64(slb->esid))); in sste_matches()
36 struct copro_slb *slb) in find_free_sste() argument
43 if (slb->vsid & SLB_VSID_B_1T) in find_free_sste()
44 hash = (slb->esid >> SID_SHIFT_1T) & mask; in find_free_sste()
46 hash = (slb->esid >> SID_SHIFT) & mask; in find_free_sste()
53 if (sste_matches(sste, slb)) in find_free_sste()
66 static void cxl_load_segment(struct cxl_context *ctx, struct copro_slb *slb) in cxl_load_segment() argument
73 sste = find_free_sste(ctx, slb); in cxl_load_segment()
78 sste - ctx->sstp, slb->vsid, slb->esid); in cxl_load_segment()
79 trace_cxl_ste_write(ctx, sste - ctx->sstp, slb->esid, slb->vsid); in cxl_load_segment()
81 sste->vsid_data = cpu_to_be64(slb->vsid); in cxl_load_segment()
82 sste->esid_data = cpu_to_be64(slb->esid); in cxl_load_segment()
90 struct copro_slb slb = {0,0}; in cxl_fault_segment() local
93 if (!(rc = copro_calculate_slb(mm, ea, &slb))) { in cxl_fault_segment()
94 cxl_load_segment(ctx, &slb); in cxl_fault_segment()
263 struct copro_slb slb; in cxl_prefault_vma() local
283 ea = next_segment(ea, slb.vsid)) { in cxl_prefault_vma()
284 rc = copro_calculate_slb(mm, ea, &slb); in cxl_prefault_vma()
288 if (last_esid == slb.esid) in cxl_prefault_vma()
291 cxl_load_segment(ctx, &slb); in cxl_prefault_vma()
292 last_esid = slb.esid; in cxl_prefault_vma()