From nobody Sat Jul 25 21:59:35 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D9F40353A74 for ; Mon, 13 Jul 2026 08:31:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783931468; cv=none; b=Csk05OMYiipZcFDhFAACXHYWC55wqDPGNUx9I3YwjfZqGmMaptCfKibmewA6vpcCKNzClDEcalpK2vA12MRXS6WxtyQDFHld7yR8nAbBTU7qdpSTPTVwvotobMh8VlRsI57njtWGAQlF8pIw08s4aNUVsdvdf1opSK+ZZPa02jo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783931468; c=relaxed/simple; bh=upLl2Ca5Pd9WUtguWk6GJl/PxpqYpYVtE5uVJYJX9rg=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=Wpy8KpfgpsMro/KUeEtr1YLPtUu6tDBoYv57+HWpbbYVzrW508PmvkEJxzmNQHof1fYN32h2O6num2AjYZLiIhgBNGS9ahhFrDPj4o9fD4BqI1otL2cCTT/8gemRJSb+taDNbG3V4Z9RV/0fmlLN3M76uuqnHzr0NKZVi6JaiR4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 2c0d83c87e9511f1aa26b74ffac11d73-20260713 X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.12,REQID:1c3859d4-f82f-4cc0-9ce0-488c3dc37588,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:e7bac3a,CLOUDID:5c2935fe4293b9d09a414be2a6fa101d,BulkI D:nil,BulkQuantity:0,Recheck:0,SF:102|136|850|865|898,TC:nil,Content:0|15| 50,EDM:-3,IP:nil,URL:0,File:nil,RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0 ,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 2c0d83c87e9511f1aa26b74ffac11d73-20260713 X-User: lilinmao@kylinos.cn Received: from localhost.localdomain [(10.44.16.150)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA with TLSv1.3 TLS_AES_256_GCM_SHA384 256/256) with ESMTP id 255197116; Mon, 13 Jul 2026 16:30:57 +0800 From: Linmao Li To: Ashutosh Dixit , Matthew Brost , =?UTF-8?q?Thomas=20Hellstr=C3=B6m?= , Rodrigo Vivi Cc: David Airlie , Simona Vetter , =?UTF-8?q?Jos=C3=A9=20Roberto=20de=20Souza?= , Umesh Nerlige Ramappa , intel-xe@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, Linmao Li Subject: [PATCH] drm/xe/oa: Check managed mutex initialization errors Date: Mon, 13 Jul 2026 16:30:53 +0800 Message-Id: <20260713083053.321091-1-lilinmao@kylinos.cn> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" drmm_mutex_init() can fail while registering its managed cleanup action. On failure, the reset path destroys the mutex, so continuing OA setup leaves an unusable lock that later paths may acquire. Return the error from per-GT OA initialization and abort device-wide OA initialization if the metrics lock cannot be initialized. Fixes: a9f905ae7b6f ("drm/xe/oa/uapi: Initialize OA units") Fixes: cdf02fe1a94a ("drm/xe/oa/uapi: Add/remove OA config perf ops") Signed-off-by: Linmao Li Reviewed-by: Umesh Nerlige Ramappa --- drivers/gpu/drm/xe/xe_oa.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/xe/xe_oa.c b/drivers/gpu/drm/xe/xe_oa.c index 2dce6a47202c..f3a0d5bf7894 100644 --- a/drivers/gpu/drm/xe/xe_oa.c +++ b/drivers/gpu/drm/xe/xe_oa.c @@ -2713,9 +2713,7 @@ static int xe_oa_init_gt(struct xe_gt *gt) =20 __xe_oa_init_oa_units(gt); =20 - drmm_mutex_init(>_to_xe(gt)->drm, >->oa.gt_lock); - - return 0; + return drmm_mutex_init(>_to_xe(gt)->drm, >->oa.gt_lock); } =20 static void xe_oa_print_gt_oa_units(struct xe_gt *gt) @@ -2855,7 +2853,10 @@ int xe_oa_init(struct xe_device *xe) oa->xe =3D xe; oa->oa_formats =3D oa_formats; =20 - drmm_mutex_init(&oa->xe->drm, &oa->metrics_lock); + ret =3D drmm_mutex_init(&oa->xe->drm, &oa->metrics_lock); + if (ret) + goto exit; + idr_init_base(&oa->metrics_idr, 1); =20 ret =3D xe_oa_init_oa_units(oa); --=20 2.25.1