From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.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 4DADB3EFD24 for ; Mon, 4 May 2026 19:08:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777921720; cv=none; b=V6ItHl6lHYsqQdRAUPJHE3Tv6YmBUBSEQSjHhpYv05VAlznRTK5WKldhHinZz/tU8J/TXsEwAwjdlaJem8VE/mm3/jxOomvb1yAI8+KDVWlBrZbCUwTfCl36Vh5Asx+9RdA02r5xwTR7ACu3Fdt7jlzdgP2k45mj8wC4RCFRH/Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777921720; c=relaxed/simple; bh=XZmlmpKq9dT2OjVxZaCDZBHXjS0SdHaDhZM+xjSaQsI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Y+nS90JyOgsQq0CNbuDJNXFPTvr8b6jTySGXxMNvtHMp2cNtznlno4X4Bip/ZNNQbCNrb1wnfbuDlssu4SK/OssFaCRoQKzJRM1jlsFqC902+90Ua4fvTbQLTyXmB17lfI8xniTHmSIzk970xv0Xs3ZB1vqOufcZcARx4HSczjE= 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=QdjsyUX9; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=ROXWmd5Z; arc=none smtp.client-ip=205.220.168.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="QdjsyUX9"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="ROXWmd5Z" Received: from pps.filterd (m0279864.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 644FOpTP1346341 for ; Mon, 4 May 2026 19:08:37 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=Z+T7DF6d3yj uRFH4Z9NZjry6qzE7sW/NwEF2nzuN/uA=; b=QdjsyUX9GNUH6JmqK45M7BjYJ7i dNlw/I5Fi9YvkjszHEJtSu1cYtFk/P5MID8cZWnvmTQxGEsA0tc/XGVzebZH9zhS aTCD27siMCqhzIRZIt6hXJz8zP0N0BuNy9kGnVwkl4CH0vcAYvA+95x+X66IKIyP DVQlsPjcQ9PyCPVq4BAO4HadB+utUtir9aBQjZv1XVbSu+TE0B4XJgBGfFopbMop hh/awpWEJWMOYSIXY0GUNoUdx/bXO7hR59YTFC2BP0h6o4+Iu+HCS9oK8UWdAM6q vyxnn5++z5q4bXLP9iQn7WxVMUOcpQ7af9kk9DVTS7/w3jTTR59f/wPJFeQ== Received: from mail-pj1-f69.google.com (mail-pj1-f69.google.com [209.85.216.69]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4dxx2x8vhr-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 04 May 2026 19:08:37 +0000 (GMT) Received: by mail-pj1-f69.google.com with SMTP id 98e67ed59e1d1-364edd430e6so4352102a91.2 for ; Mon, 04 May 2026 12:08:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1777921717; x=1778526517; 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=Z+T7DF6d3yjuRFH4Z9NZjry6qzE7sW/NwEF2nzuN/uA=; b=ROXWmd5Z+FJang2QR02Ah1xlKz15TzJO0kLcHsgYXx1LGZyKaNIyI0f23x7e61VURB YAjF7ElHqhp9EozS3jiBSd9NSwbRM+ZZufFZ0/eYP8YZpTLfoQ+JY/t68+DcJXrzLEy+ CBp0gOMGrvjmmg6CkxQMY6OGXATW9tYObh7tEZMjZzs2g9YYaiUovqtfPVZwtyLEwHOO fd95q7NLfbD7FhtNbco/HOjXi4Vo8dp9rrV3XPDqNebuCGdcEatwkzT/Ix2sBf3m3Y30 H1Yp/9RZEVIK9Vr0JC4NU38TaqbEfnCNxC/nk/2h81WN/vhmRd/nbQ25KACW3DfQuvlr qBkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777921717; x=1778526517; 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=Z+T7DF6d3yjuRFH4Z9NZjry6qzE7sW/NwEF2nzuN/uA=; b=GwQYi0spi7tp9rT/m+njLTq3HQyOck7XJhScc4ITXt3GijqAJwtclB0m4UAtdOHUmf 88QFceU5ff/pbiscrolOhM4CW2sapxjWqIoQMy/F57Y3T/2ndIemyLHO2lXXedPkvR8S G3Ethcc91O1vesSUCmJLyYc0HIjI9wDV2W7jLkiTMRJlJfLiSfIN02KLeJwoYWtmu8p8 ev1qmgKAfWevA9VZA68P0KYgtFefwlNy/ukL/brhYqjWG1/ITWRmkIINLPH4d89s6PNu XONO6i7WK9x0Ki4tth9S0t3q682dSEQ7qC1VrL+crwNSV+xDaLbmwg3qK0ZWlxi+kMG9 E1Bw== X-Forwarded-Encrypted: i=1; AFNElJ/cZc9ZlSut0wcWaDTTHKjlrFBhun8aBotjDjvrRQDl6xi/msKaID77C4NO+5DT0g30vu6qb3poPrx1nnI=@vger.kernel.org X-Gm-Message-State: AOJu0Yyc78kVsKjgoqMdaY8n97GdMVU6wqEn2hP7zfNJCl7vpkojHHot 1VK/rG0/fZQkpdqAIfXo3zRCmFE1AXmVfgOCJ+HdWqk9xqSPrOj2q8mRsIpzdL3vwCaYSZm8oks ofOc10UDedigzrKs/6nTWxDfaC72cLcYJOQlA8iqV3UlTs3nQjCj12jcsgHApL214h9EK6Uzis8 E= X-Gm-Gg: AeBDiet41c3NFhcbRCFwtL8jPlLt8EEJ8N1qWr9qdRpChtYB6CCUN/ny5FDDUt6resT U646m5PQIVCRIbx1YRZygsDPV1I95q3W3QKfGO+W3Aoe3M9E5z36jF1xRQCx7eq/60OFB8/BXjZ Dw1CQm/owrPcwMfmxcNEFD1xzc5mefj4plhw5KYhGMf4ZlM6VMR/+s8QcHr0+J0QijzL1EfSDU2 EH/JiBVXVv+B4EBdf9yeKIpZ0z1CoNS5MREkyBh28Quv051fjSZHh9mh8V3TnBLrIL6uJr9R/28 jhq9KIVZYCIO7JA5EPRvOyczGlalQ6VLRRYg/ywGPx0S+JXXkQAWRU0JAqd1tZIeVQPv7gzYIiK L5iOw0Nrs4q1Jun42DemDwSaUhZoO+tqDk1KQTpxL0QA= X-Received: by 2002:a17:90b:33ca:b0:35f:b1f3:ac12 with SMTP id 98e67ed59e1d1-3650cd08154mr10029722a91.4.1777921716645; Mon, 04 May 2026 12:08:36 -0700 (PDT) X-Received: by 2002:a17:90b:33ca:b0:35f:b1f3:ac12 with SMTP id 98e67ed59e1d1-3650cd08154mr10029689a91.4.1777921716094; Mon, 04 May 2026 12:08:36 -0700 (PDT) Received: from localhost ([2601:1c0:5000:d5c:4ec8:83f5:8254:6891]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-364bdf2a71bsm15455932a91.1.2026.05.04.12.08.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 12:08:35 -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 v3 09/16] drm/msm: Add per-context perfcntr state Date: Mon, 4 May 2026 12:06:52 -0700 Message-ID: <20260504190751.61052-10-robin.clark@oss.qualcomm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260504190751.61052-1-robin.clark@oss.qualcomm.com> References: <20260504190751.61052-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-Authority-Analysis: v=2.4 cv=U9eiy+ru c=1 sm=1 tr=0 ts=69f8eeb5 cx=c_pps a=vVfyC5vLCtgYJKYeQD43oA==:117 a=xqWC_Br6kY4A:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=DJpcGTmdVt4CTyJn9g5Z:22 a=EUspDBNiAAAA:8 a=OtV_UDYxk2hhjaRdRjwA:9 a=rl5im9kqc5Lf4LNbBjHf:22 X-Proofpoint-ORIG-GUID: bkpiVGPEfxp9KMJVA5Bta61sBDS4lV2e X-Proofpoint-GUID: bkpiVGPEfxp9KMJVA5Bta61sBDS4lV2e X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTA0MDE3NSBTYWx0ZWRfX5oVLbJa+LC3+ K9e9215GaPXV0yHnI85kP/Z6YzA53m/wMvQblubDV0hobgNjP2/pV2bx8d0fVZoYQL/ZDtR+MZh p4zl7/B1DR3gE/9/W0oiurzzF8gUrSOsP3hHYLMYYv2HxuaJMFtGPTpmETodh6S4i0qDvJmG4ps xOW61qgpo7PjK/Jfw5Cja+RDxQEMsI0M00hsrl/QEDovSTgMH6FZMilZA8pzXCZK8+f4QiZuuuK Dx69OQ8s6sPXhP2K/NVY0W1ACp0nwrL7XhxPoPcgiOArhckbflOUTFHmc7Txfj3SA9LlmZIkKTT w9yecWNPHFpsGOTalDIe5ir9v3pzssdAb3yEMEPUiMARW1ix5gCprpounPIvj0IUQdAHmS1hoVP UZEIiOWFD+BBpvemiEKBp9a88XaKyRhCJxWFNOVgA/pCTe8WULsud+pt5SLQL7DLR3Y53WETq6x KkzgSkBqj9eS6ZagPyQ== 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-05-04_05,2026-04-30_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 lowpriorityscore=0 adultscore=0 phishscore=0 spamscore=0 bulkscore=0 priorityscore=1501 impostorscore=0 clxscore=1015 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2604200000 definitions=main-2605040175 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.54.0