]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/xe/rtp: Toggle 'deny' bit to (de-)whitelist OA regs
authorAshutosh Dixit <ashutosh.dixit@intel.com>
Mon, 15 Jun 2026 22:42:24 +0000 (15:42 -0700)
committerThomas Hellström <thomas.hellstrom@linux.intel.com>
Thu, 2 Jul 2026 10:29:42 +0000 (12:29 +0200)
Whitelist or de-whitelist OA registers by setting or resetting the 'deny'
bit in OA nonpriv registers and writing new register values to HW.

Fixes: 828a8eaf37c3 ("drm/xe/oa: Add MMIO trigger support")
Cc: stable@vger.kernel.org # v6.12+
Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com>
Reviewed-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa@intel.com>
Link: https://patch.msgid.link/20260615224227.34880-7-ashutosh.dixit@intel.com
(cherry picked from commit aeaa7d2bb017272ab9e18759fe00bf758cd3299f)
Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
drivers/gpu/drm/xe/xe_reg_whitelist.c

index 76ac23644a4df05819c59baca2a10d3bb7e505de..7186998df498ccb159173325f6580cd240e3079e 100644 (file)
@@ -229,6 +229,21 @@ void xe_reg_whitelist_process_engine(struct xe_hw_engine *hwe)
        whitelist_apply_to_hwe(hwe, &hwe->oa_whitelist, &hwe->reg_sr, first_oa_slot);
 }
 
+__maybe_unused static void __whitelist_oa_regs(struct xe_hw_engine *hwe, bool whitelist)
+{
+       struct xe_reg_sr_entry *entry;
+       unsigned long reg;
+
+       xa_for_each(&hwe->oa_sr.xa, reg, entry) {
+               if (whitelist)
+                       entry->set_bits &= ~RING_FORCE_TO_NONPRIV_DENY;
+               else
+                       entry->set_bits |= RING_FORCE_TO_NONPRIV_DENY;
+       }
+
+       xe_reg_sr_apply_mmio(&hwe->oa_sr, hwe->gt);
+}
+
 /**
  * xe_reg_whitelist_print_entry - print one whitelist entry
  * @p: DRM printer