Lines Matching refs:sr

33 	struct xe_reg_sr *sr = arg;
35 xa_destroy(&sr->xa);
36 kfree(sr->pool.arr);
37 memset(&sr->pool, 0, sizeof(sr->pool));
40 int xe_reg_sr_init(struct xe_reg_sr *sr, const char *name, struct xe_device *xe)
42 xa_init(&sr->xa);
43 memset(&sr->pool, 0, sizeof(sr->pool));
44 sr->pool.grow_step = XE_REG_SR_GROW_STEP_DEFAULT;
45 sr->name = name;
47 return drmm_add_action_or_reset(&xe->drm, reg_sr_fini, sr);
51 static struct xe_reg_sr_entry *alloc_entry(struct xe_reg_sr *sr)
53 if (sr->pool.used == sr->pool.allocated) {
56 arr = krealloc_array(sr->pool.arr,
57 ALIGN(sr->pool.allocated + 1, sr->pool.grow_step),
62 sr->pool.arr = arr;
63 sr->pool.allocated += sr->pool.grow_step;
66 return &sr->pool.arr[sr->pool.used++];
86 static void reg_sr_inc_error(struct xe_reg_sr *sr)
89 sr->errors++;
93 int xe_reg_sr_add(struct xe_reg_sr *sr,
98 struct xe_reg_sr_entry *pentry = xa_load(&sr->xa, idx);
114 pentry = alloc_entry(sr);
121 ret = xa_err(xa_store(&sr->xa, idx, pentry, GFP_KERNEL));
134 reg_sr_inc_error(sr);
186 void xe_reg_sr_apply_mmio(struct xe_reg_sr *sr, struct xe_gt *gt)
192 if (xa_empty(&sr->xa))
195 xe_gt_dbg(gt, "Applying %s save-restore MMIOs\n", sr->name);
201 xa_for_each(&sr->xa, reg, entry)
215 struct xe_reg_sr *sr = &hwe->reg_whitelist;
225 if (xa_empty(&sr->xa))
228 drm_dbg(&xe->drm, "Whitelisting %s registers\n", sr->name);
235 xa_for_each(&sr->xa, reg, entry) {
267 * @sr: Save/restore entries
270 void xe_reg_sr_dump(struct xe_reg_sr *sr, struct drm_printer *p)
275 if (!sr->name || xa_empty(&sr->xa))
278 drm_printf(p, "%s\n", sr->name);
279 xa_for_each(&sr->xa, reg, entry)