From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0b-0031df01.pphosted.com (mx0b-0031df01.pphosted.com [205.220.180.131]) (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 709A1318ED9 for ; Fri, 24 Apr 2026 15:12:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.180.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777043536; cv=none; b=d6tsfoEL4nts8/mzXqeXsWnDDsxtsOdFiof5PNSEXrvr0vQDXFgNeJsu6ad0LT2NP/WJMd6/HMOF1tjMGZnUOjA54Y3n0GmX+UxO84PDQWtwAcxaO8yBMBmSEbI3ycTaJxyOWZ6YXuwqmn2//JTGQGGUQ5AODgdh/Ca7M35yrTA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777043536; c=relaxed/simple; bh=yPWb66bAIoSeoVbGKbJy3czH0fsxgSHyCkFJ/vJx4nc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mb/nA9/iYmJaMnhV+icBuNNi9dfUk60AvoEtwMnXYE9WUKT2XP8tXwpEwXMH2nvw67xHY3KrORANTPG0nNotXGXfr0rn2h/f5IucQtL3rTw5Gkd9D5IdOfkFu6/l/y6aRh6ffqzX5ukyHa+BmM8rxIxoV+LSmVshCrf136pEI7c= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=KNiqVHra; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=Rzpc1jdw; arc=none smtp.client-ip=205.220.180.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="KNiqVHra"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="Rzpc1jdw" Received: from pps.filterd (m0279871.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 63O9CEcT756669 for ; Fri, 24 Apr 2026 15:12:13 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=qcppdkim1; bh=38TAuDgn/y0 0OaDm7XX1LoDb33XqmHE1sUyo3NaO6Eg=; b=KNiqVHravKN1HO/jXLQ6E76BAbV YA+dtQR6blNm12Rr9GsvLlpYxjTzFpc22GutPwxOicW+phU46TMN6mV9fjChGKUh cHnM6tQVToQanytQXfh8WXtHODdqxAXEFPrQQI4iyv2NAbVwcXzfqERTVrV4XvDO HwIDw1mJiE+R1eJDZPE8qNvhLuvUOm0lrge0UtxYgTyWDDtQVASg0QjOCofO9uuX Gv67123NdqLdjyyy2UavK1PO0nkS5UvB3wW37UnwE2yx3FkYRs5O6rUCF5nNyWJ5 53eKkftEAV4lgZeHliQ308bg/B7vxI1intVmstiOpgQoLXNl4QniYIfJ9Nw== Received: from mail-pg1-f198.google.com (mail-pg1-f198.google.com [209.85.215.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dqr4bmn31-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Fri, 24 Apr 2026 15:12:13 +0000 (GMT) Received: by mail-pg1-f198.google.com with SMTP id 41be03b00d2f7-b630b4d8d52so4710655a12.3 for ; Fri, 24 Apr 2026 08:12:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777043532; x=1777648332; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=38TAuDgn/y00OaDm7XX1LoDb33XqmHE1sUyo3NaO6Eg=; b=Rzpc1jdwjc5mALDuzD5eq7JrBwt4J7dxRhU0uoy/MSzaemahuMyisUsSjXklL1NdFL GGtEyO/e1PZpeXHwpI+ljZ93bXvpv7lx7TVfcVtsRXFoq5wQnVIAXz9HFOWugLqIK7IB jBRNdddINJ8GrnYHfxOXnGUetmUAvZV/iCNzgeVdvlOw77wgvfoGDVxVmQI6DxKydK31 ljbKH44dw32UdTXQBIxzdz1Y5SjutyL7VgmIlIR1hu1pIf5geLtT9QuGl2Vq4pCWZGDt p96gFGok29ME+XVAsU4Z918z0DSHCxWjaVsCnqvX42Kn/tkNK4myiF7+F2MRu95YbeAg ccTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777043532; x=1777648332; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=38TAuDgn/y00OaDm7XX1LoDb33XqmHE1sUyo3NaO6Eg=; b=HeFWur9e8cpEo5EUTVP3pDScGhxjK4/RLGQ+01sBCcmVVfMjwCODUH4zWFds2qkPMd UY2hq1EiXkZW4Xy3QrEYHRv9iYbEa+kiiRVj0CWN4eluwsXr+qcySdgMmRlbuioDpetQ YOmnUkR4pJzxC9nJdU7ehvh55B7ac5Js5OZdhpTdvJeqp3Uy5LqiUrPfsv5z32axCPAQ OLCOIf6E3ffeJk0JjOa+KVRHWlrRZ6B3DIZAWEUNVPXB3fQOmofOzXKI440cgijscxie W8880MZi1Te5XzxPLXuoosg/YF9mFLIC7jl0ouvSxedV3LuXCqi7Sj8XHT1n43i2XJHe /YCw== X-Forwarded-Encrypted: i=1; AFNElJ9FmGK9WXD2ykzYhf2VMLrpHsax53QbdKA1jEwQWENQskBSif2KwaIIVUIGU8GtxyVOjogjO3BLePvcfWk=@vger.kernel.org X-Gm-Message-State: AOJu0YzUxZHW561YhbLbuJxM9cRrdxTGrba2vez6tp+2unZ2bADm3Iw2 utxg34zw02hyW8iAgjKQRgNxkae1YRZl1dV73YZsPH0ft8n0y6SrYj3aOS7b8I82HWczynL4v8/ fe9lCiYPjHQbJ/9eWNaIllREeGm1N/PHxO/rdiQ6zsUXkFakYkgahGhu1nfuy/AjZ/TI= X-Gm-Gg: AeBDiet3GyHj+8iTeN+LmwG6lGA6wXnVXSRlsKlgaFT/q/mxcB1fW7M30O78LFflWpK 98NT7KLksB3aS+U9sXBlrrd3yFKXO+5dGlqArDabsXXYrii1qwT7sOwrycgIA07CgbfoK1hriPp x7CeZb2GpXSpcs1PUa30g6QSciBTR23TWM8cB7MtYJvDHre1mYnNeUjR+hThnGEwmvr9irtO/Sk 0ZKoINNH4744nx/S285K1bobKpW9hPplqi4FcmENuy0RgZiyYDiW+mBNQO5x3mEEORM84gPNh45 W4S+9qorN20rls6bVZ1D8X9EAg/rCn+Y596yzeXuZs28EI51O4AULZVB6lHi+jE4biqMx34mNXB +DvddheHhHohGHPMeKIlDPxTY0VtnYsqOD9qWonz1c/Y= X-Received: by 2002:a05:6a20:7d9c:b0:39b:f026:6f8d with SMTP id adf61e73a8af0-3a08d8e27f9mr36956106637.43.1777043531898; Fri, 24 Apr 2026 08:12:11 -0700 (PDT) X-Received: by 2002:a05:6a20:7d9c:b0:39b:f026:6f8d with SMTP id adf61e73a8af0-3a08d8e27f9mr36956061637.43.1777043531369; Fri, 24 Apr 2026 08:12:11 -0700 (PDT) Received: from localhost ([2601:1c0:5000:d5c:4ec8:83f5:8254:6891]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7976f8f356sm18521903a12.4.2026.04.24.08.12.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Apr 2026 08:12:10 -0700 (PDT) From: Rob Clark To: dri-devel@lists.freedesktop.org Cc: linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, Akhil P Oommen , Rob Clark , Sean Paul , Konrad Dybcio , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Marijn Suijten , David Airlie , Simona Vetter , linux-kernel@vger.kernel.org (open list) Subject: [PATCH v2 09/16] drm/msm: Add per-context perfcntr state Date: Fri, 24 Apr 2026 08:10:44 -0700 Message-ID: <20260424151140.104093-10-robin.clark@oss.qualcomm.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260424151140.104093-1-robin.clark@oss.qualcomm.com> References: <20260424151140.104093-1-robin.clark@oss.qualcomm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNDI0MDE0NyBTYWx0ZWRfX9rL8COIto+5J QmG/yFF5hpLeltPiq3rhthI/RJ2Xw+b7AjNT+leOehbSi0Hs/2hk3mGbXNX+7sOMllgxFjWy6G4 AkksMPUk151YnSkU6keeq6hFwyKFNPLpDiZPK4TKScMnq88FaoZviJvpjAw5kZliHYVjEU4aH2M 3V5t0ptua3TtRPuoQot7YSZkZUvlNZ59cR/clh3csy59w4T6VI7ouVSzs0Cyv6NciXkKGiVqmPZ 0RCCvAvD/Ph9xD9THm2AxmrGT0+7ZjjDb419lhqK8Fau5tLw9IVy9HOwpDURO+b4wp7UzUZ95o0 soMffCkoBolRHY5Kge2cVAdRDbewG39izsrgPkStt8QpKCI18WsmOpceZauCgCuPqb2V4Aie8Kc lh+et+H47x5Pk2EHCW1EWH3Psmfs3VeVlK/o7cC50HWWpe5PSYKzZNpatuRVFpaVzQKvEzFoc4r 6S/S1xbqPB6afBqA3mA== X-Authority-Analysis: v=2.4 cv=TtnWQjXh c=1 sm=1 tr=0 ts=69eb884d cx=c_pps a=Qgeoaf8Lrialg5Z894R3/Q==:117 a=xqWC_Br6kY4A:10 a=A5OVakUREuEA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=3WHJM1ZQz_JShphwDgj5:22 a=EUspDBNiAAAA:8 a=OtV_UDYxk2hhjaRdRjwA:9 a=x9snwWr2DeNwDh03kgHS:22 X-Proofpoint-ORIG-GUID: hk1EazWoHwvJl89imJ2llIkOkg5Iqc29 X-Proofpoint-GUID: hk1EazWoHwvJl89imJ2llIkOkg5Iqc29 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-04-24_01,2026-04-21_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 malwarescore=0 clxscore=1015 adultscore=0 spamscore=0 bulkscore=0 suspectscore=0 phishscore=0 lowpriorityscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2604240147 The upcoming PERFCNTR_CONFIG ioctl will allow for both global counter collection, and per-context counter reservation for local (ie. within a single GEM_SUBMIT ioctl) counter collection. Any number of contexts can reserve the same counters, but we will need to ensure that counters reserved for local counter collection do not conflict with counters used for global counter collection. So add tracking for per-context local counter reservations. Signed-off-by: Rob Clark --- drivers/gpu/drm/msm/msm_gpu.h | 5 +++++ drivers/gpu/drm/msm/msm_perfcntr.h | 21 +++++++++++++++++++++ drivers/gpu/drm/msm/msm_submitqueue.c | 1 + 3 files changed, 27 insertions(+) diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index 9e5c753437c2..19484774f369 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -434,6 +434,11 @@ struct msm_context { * this context. */ atomic64_t ctx_mem; + + /** + * @perfcntrs: Per-context reserved perfcntrs state + */ + struct msm_perfcntr_context_state *perfctx; }; struct drm_gpuvm *msm_context_vm(struct drm_device *dev, struct msm_context *ctx); diff --git a/drivers/gpu/drm/msm/msm_perfcntr.h b/drivers/gpu/drm/msm/msm_perfcntr.h index 64a5d29feba1..7f0654182496 100644 --- a/drivers/gpu/drm/msm/msm_perfcntr.h +++ b/drivers/gpu/drm/msm/msm_perfcntr.h @@ -35,6 +35,27 @@ struct msm_perfcntr_group { const struct msm_perfcntr_counter *counters; }; +/** + * struct msm_perfcntr_context_state - per-msm_context counter state + * + * A given counter can either be unused, reserved for global counter + * collection exclusively, or reserved for local per-context counter + * collection inclusively. Multiple contexts can reserve the same + * counter, since SEL reg programming and counter begin/end sampling + * happen locally (within a single GEM_SUBMIT ioctl). + */ +struct msm_perfcntr_context_state { + /** @dummy: Some compilers dislike structs with only a flex array */ + unsigned dummy; + + /** + * @reserved_counters: + * + * The number of reserved counters indexed by perfcntr group. + */ + unsigned reserved_counters[]; +}; + extern const struct msm_perfcntr_group a6xx_perfcntr_groups[]; extern const unsigned a6xx_num_perfcntr_groups; diff --git a/drivers/gpu/drm/msm/msm_submitqueue.c b/drivers/gpu/drm/msm/msm_submitqueue.c index 2598d674a99d..a58fe41602c6 100644 --- a/drivers/gpu/drm/msm/msm_submitqueue.c +++ b/drivers/gpu/drm/msm/msm_submitqueue.c @@ -66,6 +66,7 @@ void __msm_context_destroy(struct kref *kref) drm_gpuvm_put(ctx->vm); kfree(ctx->comm); kfree(ctx->cmdline); + kfree(ctx->perfctx); kfree(ctx); } -- 2.53.0