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 E8D173FB05B for ; Thu, 14 May 2026 13:54:50 +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=1778766892; cv=none; b=rT0ERfptYyaZTe+szgoeyQMdhXAx/Qsblaz4Lpfh1wSLTD8Jhql4h//WI4dC3f5Ii+Sq4mJRdA6pk/QNChE05FRxZ/5y6+5D3HH4K8Du551wsWnLV+hWPPyZs4Chu7n7XR3FrWKyYnwgfy+7c1gjQyipjPNFfQHXfQNqfnE7Y4g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778766892; c=relaxed/simple; bh=GhAfgX9cJ7jP15j1+grgn8Gt5zI3BjvXaBhW/QC8YrQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=n+Z8yqUbIoFxgYzmUQaMrGKIgxaYDR2iTk20Oo3w6LfGV/GRRr8Y6Ault2Q7aMh8OqoRAGlmHEH1j0uqIPzqpl4oJteJiXsL7UqHgKQyNgJAOsz8bvAJ9oCRO0PgyyZusAF4KCyN0JIFNWLAhDfI44nCmnJLo+klvvVlfIh6WRM= 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=psN6SNR4; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=AykCxkbl; 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="psN6SNR4"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="AykCxkbl" Received: from pps.filterd (m0279866.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64EBeYof1717897 for ; Thu, 14 May 2026 13:54:50 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=jWB8IsiT3LX TyyABiITmFtV+44Tckxt2wHe2PuWE1WE=; b=psN6SNR4Qwpg6h9puonGz/3AZ89 BUs2yHNi2GiBaHU1VAuqgtvmZAseDQklEp9JImWZthUGmkl9O+Ox2mV1W9qDRdPH qRoZDNPPCl48adb3Ejw4aajmQG9NUssI8BqhLTUDF414AXoIWinCVG1KF3RIpMf8 DRPoj3NHR3VBERAJvNAytw8wx7sgZWV2jlBt1y+o61Pjdn4XaWDakLmtqbgEUo2n lfnVL0UhJ7f5gWsLaY+AUaHUXuSOdySn5wrezne9eOpOZJ2NfzXcE4IHvyOwVvHW k87Yx3aTWGMT2Q+U4hgfWY9AdjtQYRFqt4U9FW1ChrK4VmENP5+V+W1Gs/A== Received: from mail-pf1-f197.google.com (mail-pf1-f197.google.com [209.85.210.197]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4e57y7hr66-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Thu, 14 May 2026 13:54:50 +0000 (GMT) Received: by mail-pf1-f197.google.com with SMTP id d2e1a72fcca58-837d0d71c61so4825713b3a.1 for ; Thu, 14 May 2026 06:54:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1778766889; x=1779371689; 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=jWB8IsiT3LXTyyABiITmFtV+44Tckxt2wHe2PuWE1WE=; b=AykCxkbl8IN7n1zHxV/pdIjA443eZWxgdJD5PplB0fPUSYMbFPkKkBKNJotW0uIrT9 BPmNhqRMtY1+9onAl0TtxA5SCEw/WIGpuYeo++lhi9M842TICeQ4KS2KmqHC/j9n6H0w 3X5h+DOO3PR4B+7OhAqCNnVp9hZbuhHDRPh7SBhi7SP2/t2ROQH08aihm3fPcHNQSmwv PTo9zlW/b1k+NAst0mpJszqrq7FgouQebQ7b0P3knglAt5wkP0Cg94IPXygOEXBnAs8o oAd3TZ5sh7zcjrL+R9i5BncClkahsN/gwgz0hGJpW2/pAFq5i5S2M5efIaF5aTXeqs69 SSIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778766889; x=1779371689; 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=jWB8IsiT3LXTyyABiITmFtV+44Tckxt2wHe2PuWE1WE=; b=PLjEjQ0TC+EFI61u3vrwVsm5FVVg1tbxfVwfp0GWOxRKZ1mNUhlOvhjNQ9Yr46TOZ/ v8VuTW6gQHucJqs6MYhvDBygM3Ee+b/SLKvKZwGhu40qWZT6ayZuXRq6uQ3VK5gPg/+C FvfW+M5ajZBasNl4rOZ6Qt3cef+V9zROK+Qg3xcClLN9O7xfK+HAfnzahLNenePuTykg MNvK7In0ZCpUnFSBxc/BFjgv+2I5VV7AZwCsXskS0foxRu720k9X80E1U6RsA3jTTfkR Vhn3IIfaB2K1DXLhVFmeQe4SuWCJvfpWSEDjJeCB1LsS03Zx7eEi/bJ9RNBbGvWDP66O c9XA== X-Forwarded-Encrypted: i=1; AFNElJ/zk4ZBMfnU8FFSqw7lwF2gf1vQcFdWnmqI1d/7CY2ewthXkbyh4BPmtguGK7apyglUYSND38WWbq//ciM=@vger.kernel.org X-Gm-Message-State: AOJu0Yx3XoZg8/M0O1QUEyWCq2ArrGJGb4zQn5M8hwGX8czqKgRTEATs CHbzcbQ2jrezdljxHAsvBjyFFNDE2xhqW1g8e9UeyHJ3GlryH3QzDGG3psP2lDy6nqzh1CzLvLY x+eM+X8dEJ3KZHjAOLV4rDqAsSB3QfY3cQS4FA9g14JCYhX06E5on++bHfg/l+eancmk= X-Gm-Gg: Acq92OFyxXD6/m8gEP4KOSfC+dX0lw/wnDwRupQMgfoP5Rixw2hJvz+qaCtBwGOuKh3 re7m+buOyXeNvDkbCuu1Nl7gEwtgR5IhaYxBG8lKLC8b9Rdy43FCrqAiDUzxxmE6s+uG1LsZPrA mfm8jf+HN2Zp9Uz/stiCtzgEWMKPSXTfphaa25m9agi1rHkKxw9FPm1fLVfZ9sSmx8yEYVcsw7j w1YGePtFd9unqFOroc3Q7zoza7Dkk5OlU1C93UCSoCzBTfTD0HjaC6SEERiutTVQxC4hYg/CeMx B/Nm95CrT7xXdoxMCK7DKfX9Jj6aBttKXC9iL4n3YvQi64Mfl8BD/82xFEVgpHsOBSm+MWLD4oE bAGKC8UNqCIV/iUfWip2yRw2sGb9gLn3f X-Received: by 2002:a05:6a00:194e:b0:837:40f6:cb88 with SMTP id d2e1a72fcca58-83f0427d8b2mr8611805b3a.26.1778766889358; Thu, 14 May 2026 06:54:49 -0700 (PDT) X-Received: by 2002:a05:6a00:194e:b0:837:40f6:cb88 with SMTP id d2e1a72fcca58-83f0427d8b2mr8611772b3a.26.1778766888800; Thu, 14 May 2026 06:54:48 -0700 (PDT) Received: from localhost ([2601:1c0:5000:d5c:4ec8:83f5:8254:6891]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19f79b60sm3162132b3a.52.2026.05.14.06.54.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 14 May 2026 06:54:47 -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 , Anna Maniscalco , 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 v6 16/16] drm/msm/a6xx: Allow IFPC with perfcntr stream Date: Thu, 14 May 2026 06:40:04 -0700 Message-ID: <20260514134052.361771-17-robin.clark@oss.qualcomm.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260514134052.361771-1-robin.clark@oss.qualcomm.com> References: <20260514134052.361771-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-ORIG-GUID: VnrBhsiFK0D1uTH2ynPEtWMl6F8mXu9N X-Authority-Analysis: v=2.4 cv=UY9hjqSN c=1 sm=1 tr=0 ts=6a05d42a cx=c_pps a=rEQLjTOiSrHUhVqRoksmgQ==:117 a=xqWC_Br6kY4A:10 a=NGcC8JguVDcA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=YMgV9FUhrdKAYTUUvYB2:22 a=EUspDBNiAAAA:8 a=pGLkceISAAAA:8 a=5obZvuzjGUYrwyXX1KsA:9 a=2VI0MkxyNR6bbpdq8BZq:22 X-Proofpoint-GUID: VnrBhsiFK0D1uTH2ynPEtWMl6F8mXu9N X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTE0MDE0MCBTYWx0ZWRfX1bMvYb9BX8Dn sSa0LB5ubqqMw9uqlVp2Ff6wur8wVK7YKNDkXy0hECps229Kbd6xCQgYNC6n05H/0VzyERozGcF iRRIgIiMX+4pVNrL9aLyF65ZHTVdSBDZ1Zp6Bzzh7keToDGahypOuNOBoBJNe5f3URGmV6/bODN r9yMW7WfPyXXy/9VXNEYog40qYeCXnfvCZTjjZEuAuDg4FZcrtBaEo4W4wxm9Y3qiW724Ny+cIw iFVq7zofDS6alb2XpoyFG16loARqPzcE86ToEZI22saKHFd+ZbBLuNEafgWd6yv5j9adwM1Lh7y dywXzOWsX6VQyZ29sEeQWcu8by5sWsH88lbqLHtiEt8wcYm0bz91EY29f+rvu7sqLNWcsvMir7p 6k4Q7ujrSoWoWYNIFcxxK9ruQnK3+pAoHxnJ5yEBWLK0axgcYtF3rZ3kq45T0lkZy1jM5I+KMjc XJdZ5Z3CJ7Z9vJTET8Q== 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-14_03,2026-05-13_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 adultscore=0 malwarescore=0 clxscore=1015 lowpriorityscore=0 priorityscore=1501 bulkscore=0 impostorscore=0 phishscore=0 spamscore=0 suspectscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605050000 definitions=main-2605140140 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 d6716ce0657a..df8c2602b4bc 100644 --- a/drivers/gpu/drm/msm/msm_perfcntr.c +++ b/drivers/gpu/drm/msm/msm_perfcntr.c @@ -261,6 +261,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); @@ -295,6 +299,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