Lines Matching refs:slb
22 static bool sste_matches(struct cxl_sste *sste, struct copro_slb *slb)
24 return ((sste->vsid_data == cpu_to_be64(slb->vsid)) &&
25 (sste->esid_data == cpu_to_be64(slb->esid)));
33 struct copro_slb *slb)
40 if (slb->vsid & SLB_VSID_B_1T)
41 hash = (slb->esid >> SID_SHIFT_1T) & mask;
43 hash = (slb->esid >> SID_SHIFT) & mask;
50 if (sste_matches(sste, slb))
63 static void cxl_load_segment(struct cxl_context *ctx, struct copro_slb *slb)
70 sste = find_free_sste(ctx, slb);
75 sste - ctx->sstp, slb->vsid, slb->esid);
76 trace_cxl_ste_write(ctx, sste - ctx->sstp, slb->esid, slb->vsid);
78 sste->vsid_data = cpu_to_be64(slb->vsid);
79 sste->esid_data = cpu_to_be64(slb->esid);
87 struct copro_slb slb = {0,0};
90 if (!(rc = copro_calculate_slb(mm, ea, &slb))) {
91 cxl_load_segment(ctx, &slb);
296 struct copro_slb slb;
304 ea = next_segment(ea, slb.vsid)) {
305 rc = copro_calculate_slb(mm, ea, &slb);
309 if (last_esid == slb.esid)
312 cxl_load_segment(ctx, &slb);
313 last_esid = slb.esid;