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 7753D39A050 for ; Mon, 18 May 2026 19:08:35 +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=1779131317; cv=none; b=E4RNEnoct2MYh8YFGgJeBawmY0rK2J7z9o045hRRrlf33RSWZ19qyYnSHeLGE4inpcThEIAkJMK8ESt9+R1JVhzmYAe8PqzbhLow6Y4GMgvi7WowI90NzF/axMzz46gtYtgD0xJZPM98cFjx4rIEfVX9wvm7LHyoYNYNIA+qF5U= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779131317; c=relaxed/simple; bh=aEg6qv/MhNxT9vLy7tOPVIfFb1MrsJHJCvcM47yPnBc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JlfXJT3e3pIkY51KYknicThIH0+06ViCGiUFKlFk916VZBjWAdnTHvnik34JwaRU/u85fBC/41kcfzjzOhSpSotmYin6CgjxmimOrWST4bv+DUR4/V3XB+b9dQSAKZiRyySwGUKF9btH3xfkQr7R5cnDposdKfxJbgi/JWTm1ZI= 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=pvYv4GC7; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=dMw8ogqA; 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="pvYv4GC7"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="dMw8ogqA" Received: from pps.filterd (m0279870.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64IGcXYM2090999 for ; Mon, 18 May 2026 19:08:34 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=55Z0+HKKOjd 4ey37cISeALnhSf6P7jsMdBMIO2WE5Vw=; b=pvYv4GC7HArbaVawg/BoTjQFhqQ xoVo5uLDbmtNJpTEdhPKvCPXb27uO5HVWiDUc7Scs+Y04mlMRiNWFcariT2FmEP+ 1lSWF3W5zYz9LzyRw7VWIEz/BBZLgF1v40DeEIGkHtBVfdf+F2xYje8oxQBEUte4 Kkczdd+6B3vLNckjrpvM5y3ng741+ciZhRopRlhdN43bI5tLzFqZtK87mZw6I1Bq wIUjFYmwex+hu7TbL5R3eVbFJkYJbzC1lqVw+mIJOw+CPacItl6aEJUHoQM4h19P aVmI0YhRaW83HddRi05X2NwvB1mKMBcuaZyA5MhXSrLGxJ2gJkUv/9bJ40A== Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e80rpj3yn-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 18 May 2026 19:08:34 +0000 (GMT) Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2b2ecc96a9aso31561975ad.1 for ; Mon, 18 May 2026 12:08:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1779131313; x=1779736113; 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=55Z0+HKKOjd4ey37cISeALnhSf6P7jsMdBMIO2WE5Vw=; b=dMw8ogqAFOek6vTtQA+KZtyGS5viUderWr+rVMS32iJd3tMEhddGeUbVmr3raHEUyt nfESOTPRYP1p7glXVy9hDP1TJh++8R0bvP8Cf/m6SGiakpCfX6u2qPZTkc0i4hckJq1X b3LoYMpHbe352B2lNsz1wz6wMHDRbW9ec/Nz+F1z7IvpgELmee+15BUBgMBaAGHir4J3 oLlHLurUTb39tLA0mmctR97RSAHu1z7xidf6VI2RFJ1vyGbsspbKZoVc36stmMMkFi+f nGzJqJNDilQmML6B5tJQQ/POeKJrLrtdS9tJ8rJ2WpKFvNTmdYlNXcIzEu4zs3IaaSuG Lq6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779131313; x=1779736113; 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=55Z0+HKKOjd4ey37cISeALnhSf6P7jsMdBMIO2WE5Vw=; b=DGsjUF1VWhXd4vjN/O4PKjUZ0YSm5+Um6M3cwZsNjdhBRteXVdnyvZpGXOD24N9Ot1 e5M3QfzieD6DFNkL/5kDeNt3/in0tUmzRWathfzIrPmysQK2TBdCNvZ7Q3Bwmyic4vv+ soyUOIY/ts/IyG3kUUGqBuQsrGbrhrrP6i5HkZ0AdT66d/G7vEe3iJCy4Gvo4w6LzHzV HK5nYrr5nqy4P+LJmBpfejTJLiFxr96+7oIOKdKyDg0uZunICTk5c5Qu/HpXO6dZe72V FlIgUWM6HYMOSntP6xVX47ZHRZkhyZMwVXGZU1ZSwNC8W2Y7mmLqmkhUatbOEZhouegy 6BTQ== X-Forwarded-Encrypted: i=1; AFNElJ+tFgG0vN1i6EtBp2/hv6CF/Xi6D7jUBgFYROT2WxdFxabfFuUx/AiyqFMYiohRPT/Fp2zcN7xs1/sZDqk=@vger.kernel.org X-Gm-Message-State: AOJu0Yx6qmVm54WOrOeUA/BsWeWbUPsfGqiAdTTFICD2z9CsFFzujp1B lsqfu/k7kF8DMDt54O/bP0x3ddO2rSrJ85jExzp4MZ+Er3D3AwCZde3S0S1GugFkHj5436QYdzy ZSqGMnauM57a2QsbvuDrXtS2L40z9pnSKCCtOF89moNT0aa6cv8ZKnFKLl56G+W0CUpk= X-Gm-Gg: Acq92OHrs3M8tP9G02xifeY/j4/9aO21cUXSVt5RRc9hpW2AWgRA2cJjpMexbs7RLkW 19Gs08DnYbXiC2opMlKIJ7K8/XFgsXF6SJcS0Cohp2I+jcqhcbGPRRuYYhZykJTpGcA0Cx5EjYy 2B3XJOwHYtpoyZ8Y3YBFBsVE6zlOTfT6313hFQyH5AsGwe7072V/0XzEvSlhcwZ73Whvzrxz4uN YF/6WGojo5jFinbnYYHpZa01bW0OhecugbQA1APXFUH0bg+iMQT5CawVn55yA0sh4owg/FIXqk3 lZ1FqNymFXkGoDggvRaTszMCDOyDuOG4vSYYYVqGkRRB3f7Dqyn9yXIOfU36lF4afrPe/nFVOOV QHtjKvuEHJrWmAGkOFxOF5lp0WiI4UrK2 X-Received: by 2002:a17:902:7484:b0:2bc:ac76:c1d3 with SMTP id d9443c01a7336-2bd7e9af975mr125817225ad.29.1779131313172; Mon, 18 May 2026 12:08:33 -0700 (PDT) X-Received: by 2002:a17:902:7484:b0:2bc:ac76:c1d3 with SMTP id d9443c01a7336-2bd7e9af975mr125816965ad.29.1779131312681; Mon, 18 May 2026 12:08:32 -0700 (PDT) Received: from localhost ([2601:1c0:5000:d5c:4ec8:83f5:8254:6891]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2bd5d0f94c6sm161995935ad.56.2026.05.18.12.08.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 May 2026 12:08:32 -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 , Anna Maniscalco , 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 v7 16/16] drm/msm/a6xx: Allow IFPC with perfcntr stream Date: Mon, 18 May 2026 12:06:43 -0700 Message-ID: <20260518190735.16236-17-robin.clark@oss.qualcomm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260518190735.16236-1-robin.clark@oss.qualcomm.com> References: <20260518190735.16236-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-GUID: QaRLdUOgVTa_NNXJtFoIsPqzy7IETKd2 X-Proofpoint-ORIG-GUID: QaRLdUOgVTa_NNXJtFoIsPqzy7IETKd2 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE4MDE4OCBTYWx0ZWRfX7ixeaY8nOlY+ MifNNgimHMqPPgtoGN31rzvDH4wNBOfbZJBIp7xGo8/PWFhtcf6rsCceMDeBgydGEq6dtlzL+1h XBA0d40YadCX4X+F+oYO/FKX31nMNmWyEwTndUba7W7fTii28NPx2OQErgxqSVqnvTbxRupzVkR gcacjeWDEMI8IY+NTqnkOtUnQAVrAOH/3olfcb8BrUApxyxb4Gzbl3piyUkbPhQWLQex69n4ZGJ 7OBtKDne0cGwNsRlGU5AgF68r1lKFInb/GLyEd93TfAjGNHKqIrgJHnAsfhOnElfQJi6HDuhkcc T8KmEJnv5zKt2yt6EYoBdVRha3/BB0yI/h1UithYPH0hH0xYQCDzYOW98wfBdNRZrCtsskybdzk SjtdZxqeef44t+oi/mh03mTFj6lyHHO/xThQABowpeNcORToSVWC5igqEfVCp4EmAhNo107sc8b iJQNjjf6h79Q+S5YuiA== X-Authority-Analysis: v=2.4 cv=ecMNubEH c=1 sm=1 tr=0 ts=6a0b63b2 cx=c_pps a=MTSHoo12Qbhz2p7MsH1ifg==:117 a=xqWC_Br6kY4A:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=gowsoOTTUOVcmtlkKump:22 a=EUspDBNiAAAA:8 a=pGLkceISAAAA:8 a=5obZvuzjGUYrwyXX1KsA:9 a=GvdueXVYPmCkWapjIL-Q:22 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-18_03,2026-05-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 spamscore=0 adultscore=0 lowpriorityscore=0 impostorscore=0 phishscore=0 priorityscore=1501 bulkscore=0 clxscore=1015 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605180188 Now that the dynamic pwrup reglist has SEL reg values to restore appended, so that SEL regs are restored on IFPC exit, we can stop completely disabling IFPC while global counter sampling is active. To accomplish this, we re-use sysprof_setup() with a force_on param to inhibit IFPC specifically while the counter regs are being read, while leaving IFPC enabled the rest of the time. Signed-off-by: Rob Clark Reviewed-by: Anna Maniscalco --- drivers/gpu/drm/msm/adreno/a6xx_gmu.c | 4 ++-- drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 2 +- drivers/gpu/drm/msm/msm_gpu.h | 10 ++-------- drivers/gpu/drm/msm/msm_perfcntr.c | 8 ++++++++ drivers/gpu/drm/msm/msm_submitqueue.c | 2 +- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c index aba08fb76249..0a7d49a2c877 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gmu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gmu.c @@ -2034,9 +2034,9 @@ static int a6xx_gmu_get_irq(struct a6xx_gmu *gmu, struct platform_device *pdev, return irq; } -void a6xx_gmu_sysprof_setup(struct msm_gpu *gpu) +void a6xx_gmu_sysprof_setup(struct msm_gpu *gpu, bool force_on) { - bool sysprof = msm_gpu_sysprof_no_ifpc(gpu); + bool sysprof = msm_gpu_sysprof_no_ifpc(gpu) || force_on; struct adreno_gpu *adreno_gpu = to_adreno_gpu(gpu); struct a6xx_gpu *a6xx_gpu = to_a6xx_gpu(adreno_gpu); struct a6xx_gmu *gmu = &a6xx_gpu->gmu; diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.h b/drivers/gpu/drm/msm/adreno/a6xx_gpu.h index f3cc9478b079..eecc71843bed 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.h +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.h @@ -280,7 +280,7 @@ void a6xx_gmu_clear_oob(struct a6xx_gmu *gmu, enum a6xx_gmu_oob_state state); int a6xx_gmu_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node); int a6xx_gmu_wrapper_init(struct a6xx_gpu *a6xx_gpu, struct device_node *node); void a6xx_gmu_remove(struct a6xx_gpu *a6xx_gpu); -void a6xx_gmu_sysprof_setup(struct msm_gpu *gpu); +void a6xx_gmu_sysprof_setup(struct msm_gpu *gpu, bool force_on); void a6xx_preempt_init(struct msm_gpu *gpu); void a6xx_preempt_hw_init(struct msm_gpu *gpu); diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index cb74b7606987..e3b5fab6f68f 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h @@ -93,7 +93,7 @@ struct msm_gpu_funcs { * for cmdstream that is buffered in this FIFO upstream of the CP fw. */ bool (*progress)(struct msm_gpu *gpu, struct msm_ringbuffer *ring); - void (*sysprof_setup)(struct msm_gpu *gpu); + void (*sysprof_setup)(struct msm_gpu *gpu, bool force_on); /* Configure perfcntr SELect regs: */ void (*perfcntr_configure)(struct msm_gpu *gpu, struct msm_ringbuffer *ring, @@ -378,13 +378,7 @@ msm_gpu_sysprof_no_perfcntr_zap(struct msm_gpu *gpu) static inline bool msm_gpu_sysprof_no_ifpc(struct msm_gpu *gpu) { - /* - * For now, this is the same condition as disabling perfcntr clears - * on context switch. But once kernel perfcntr IFPC support is in - * place, we will only need to disable IFPC for legacy userspace - * setting SYSPROF param. - */ - return msm_gpu_sysprof_no_perfcntr_zap(gpu); + return refcount_read(&gpu->sysprof_active) > 1; } /* diff --git a/drivers/gpu/drm/msm/msm_perfcntr.c b/drivers/gpu/drm/msm/msm_perfcntr.c index 38f1130b99fb..6875c44222fe 100644 --- a/drivers/gpu/drm/msm/msm_perfcntr.c +++ b/drivers/gpu/drm/msm/msm_perfcntr.c @@ -256,6 +256,10 @@ sample_worker(struct kthread_work *work) return; } + /* Inhibit IFPC while accessing registers: */ + if (gpu->funcs->sysprof_setup) + gpu->funcs->sysprof_setup(gpu, true); + if (gpu->funcs->perfcntr_flush) gpu->funcs->perfcntr_flush(gpu); @@ -290,6 +294,10 @@ sample_worker(struct kthread_work *work) } } + /* Re-enable IFPC: */ + if (gpu->funcs->sysprof_setup) + gpu->funcs->sysprof_setup(gpu, false); + smp_store_release(&stream->fifo.head, head); wake_up_all(&stream->poll_wq); } diff --git a/drivers/gpu/drm/msm/msm_submitqueue.c b/drivers/gpu/drm/msm/msm_submitqueue.c index a58fe41602c6..1a5a77b28016 100644 --- a/drivers/gpu/drm/msm/msm_submitqueue.c +++ b/drivers/gpu/drm/msm/msm_submitqueue.c @@ -42,7 +42,7 @@ int msm_context_set_sysprof(struct msm_context *ctx, struct msm_gpu *gpu, int sy /* Some gpu families require additional setup for sysprof */ if (gpu->funcs->sysprof_setup) - gpu->funcs->sysprof_setup(gpu); + gpu->funcs->sysprof_setup(gpu, false); ctx->sysprof = sysprof; -- 2.54.0