FAILED: patch "[PATCH] drm/xe/rtp: Ensure locking/ref counting for OA whitelists" failed to apply to 6.12-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 6.12-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-6.12.y
git checkout FETCH_HEAD
git cherry-pick -x ef78e2a22f72c892fd6663f0760abd208d49a3e2
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026072915-scratch-tavern-3987@gregkh' --subject-prefix 'PATCH 6.12.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From ef78e2a22f72c892fd6663f0760abd208d49a3e2 Mon Sep 17 00:00:00 2001
From: Ashutosh Dixit <[email protected]>
Date: Mon, 15 Jun 2026 15:42:27 -0700
Subject: [PATCH] drm/xe/rtp: Ensure locking/ref counting for OA whitelists
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Since multiple OA streams might be open in parallel on a gt, ensure that proper locking is in place. Also ensure that OA registers are whitelisted when the first OA stream is open and de-whitelisted after the last OA stream is closed.
drivers/gpu/drm/xe/xe_oa_types.h +3 -0
@@ -126,6 +126,9 @@ struct xe_oa_gt {/** @oa_unit: array of oa_units */ struct xe_oa_unit *oa_unit; + +/** @whitelist_count: number of open streams for which oa registers are whitelisted */ +u32 whitelist_count; };/**
drivers/gpu/drm/xe/xe_reg_whitelist.c +9 -0
@@ -255,6 +255,10 @@ void xe_reg_whitelist_oa_regs(struct xe_gt *gt)struct xe_hw_engine *hwe;enum xe_hw_engine_id id; +lockdep_assert_held (>->oa.gt_lock); +if (gt->oa.whitelist_count++) +return ; +for_each_hw_engine (hwe, gt, id)__whitelist_oa_regs (hwe, true); }
@@ -270,6 +274,11 @@ void xe_reg_dewhitelist_oa_regs(struct xe_gt *gt)struct xe_hw_engine *hwe;enum xe_hw_engine_id id; +lockdep_assert_held (>->oa.gt_lock); +xe_assert (gt_to_xe (gt), gt->oa.whitelist_count); +if (--gt->oa.whitelist_count) +return ; +for_each_hw_engine (hwe, gt, id)__whitelist_oa_regs (hwe, false); }