From nobody Mon Feb 9 16:32:47 2026 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 CD721283FC5 for ; Mon, 10 Nov 2025 16:50:46 +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=1762793448; cv=none; b=QGNaCUCqngRqtV+rSfrUPYE/nsmKGsfn5K8WgiPPRAWbzEy/tzIJm9bKQh2x3OrBelXBPSpwvd2mlA9KD5+50OoHQWlZvYZZMntASj8MQF61VbFDxgTKWUXqWiIUZQmK9Y4UOKrHpCz02jvM2Hyf6fiS3TyXoQIw6z6EEpABkms= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1762793448; c=relaxed/simple; bh=qO7+Zu0jaqw1wGzwD2M4glYIIsdjEUELmwQBxl1LlAQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=dBe/5HZWQB12Vrnl89kii4gF2kp6qD6nwG6kMVWC5XXD27Wn2DudARJSJ1bHXMxsacJxSH03awsnrjn49pmO2e5faWXdDZsjHQ5jPYCfPlSS+cB57bHiJH7wd0Pjd75mjFnAotWY64vesSXlH4uOpJmra8cZtfuoi4vBnhUdHlw= 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=IdqjNAvF; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=LiTRRHGZ; 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="IdqjNAvF"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="LiTRRHGZ" Received: from pps.filterd (m0279862.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5AABZWhX3271033 for ; Mon, 10 Nov 2025 16:50:46 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= MjiTt5ghvaBZ1ee5wBxftA1oQFTxDbd5jXrSSKPsmU8=; b=IdqjNAvFs95sCmbs MnnHhgwGJ8ALXcgJRJ7/Q+JVDTED6H6J9Ru/z/l40B3DoT/BduEjeDGX5YoFJj3l aZVc/E78gWHQiIy6y+P4kTYB6yF+Xfj1G39nzhtA8ydMKSsOwSR5/2FNFn+N2ME+ WFKMzg434+TGrN7F5L4YPEPxp3A9gksw+S/FQFzyuECpxtisL86Zkoy/HLm1CHgt XWGwiRpx/G2KxiJ+ea0uofH/0ngW4Z9OpibZkHUtKD5Zld/VR7dFDapLbHpcYf2e 80pdjbvn6Qd9/K8lgM70WdavcE1FNPriBppJgLXnX8ImY8NmP1XvHZ6D/WMEqSyi YZez7w== Received: from mail-qv1-f71.google.com (mail-qv1-f71.google.com [209.85.219.71]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4abfafrx03-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Mon, 10 Nov 2025 16:50:45 +0000 (GMT) Received: by mail-qv1-f71.google.com with SMTP id 6a1803df08f44-8823acf4db3so64809196d6.3 for ; Mon, 10 Nov 2025 08:50:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1762793445; x=1763398245; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:from:to:cc:subject:date:message-id :reply-to; bh=MjiTt5ghvaBZ1ee5wBxftA1oQFTxDbd5jXrSSKPsmU8=; b=LiTRRHGZpyj10DOkGlml2U8lD9nXx5jq9dNIycAbxeTwmsReeVTuy/pvRuwWy+6J8L nuc79l9Zfr+DB4XC9uZg6D0PsiUmUXnu21SpruXHKLuQ3dGb856DqJdiRG2UljR0w5xD V2PpptOwLmoOGPj/sJxdvPA3Uj1pbLMpJP2/Ce8CEROsVaqfuxKAu5nAhdURU0Z0SQiy zkVZqB6WkVuoRtlk29mUO0OXb+DikxSs2Ap/tsLDTke43+0hLKh0G/JotK5KGN095bUZ kNKK6xhM4zj8LZBtgmzcNytZUx2gv8b+Y5cqlJun3d5En2AHuJEYVdjfZFb+x61ZQAP/ Mogw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1762793445; x=1763398245; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :mime-version:subject:date:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=MjiTt5ghvaBZ1ee5wBxftA1oQFTxDbd5jXrSSKPsmU8=; b=KMXkZd1dyEPMluhaG0xq97XsIhQya7cs1iNnTfMLeWaDRRlsBzpzoVEQtuGuitSCb0 In75OSPSk6RqRSYvzBDHv3LKn8d72b6mFuDVvUV0wg7JeMsS9rg1WJW7bVhVfsJkiVUK tGiUeBzn6grXBKuYd++1/jBhRoU0bjnI+Wl5d08ukFcBGx0Cr21OvYhYL2C0OZ4Lz1bH lX8D2Ud7+fzebUNa8Ug/Wm/z9rdbnCL/khniwhIhZU01+9prblqHZFrgjjcR/Qh3Kc1d ZnZNVEiZSHZYg18Aax1cQqQxQP38jFPWjOOhilqSQ1ujy1tOByofehNvaVbiCgY1zXj2 jW3g== X-Forwarded-Encrypted: i=1; AJvYcCU69RW5J+NfULS9Y52seqY3XM7ioNxim9RYUnWvxEjkUq4KFhEPemSsmX5EFmymm3ajGAYvd09qpUzPb2g=@vger.kernel.org X-Gm-Message-State: AOJu0YyQftV0VbnEKZPEIF3MzUOtRYc9Ep+4D9I8ihY1xJJLwxDOlkII 8zxGW3ddlHmKpEz389ULakE7dkEFZja826bSfAeIEQoF/cYsI5J+pzfxYP2IQHoy45FvbVEhEZl Le4FVKb74ewobxEayJnytQtqyOJt/1c/p3jfPpd8vMusdAQ4W/O36PVt2jyn41M8D6tw= X-Gm-Gg: ASbGncs7+GNTPTUa1/ahbJTcrNF515nPHLOV8rmW558nKKL7Z+vpQkDxVquHc41h858 yOt2WtytN2/TeSHHlW2eRqsnGguyzjYZfikzDAa/4Nuqr5YlyXYVkXJR0C1VpCq4HMI8mnUpJd6 iGe/Fq4O2hZxXL+/XgxWnGsFNHPgtyFiTIDOXwoVhmgEdoWW+oZriSgz9esI+K8pbKP9yfdkEsB xuC94XILVKyqDV1/AlcLDEVii7pn2DX0w12bp3uL9LlaDfWWtB7g9lUkxTAAUIgTrQSNZXczbPA z7z7gEXLOK5UPQWBBDvOTKjOK9DahLfGqEypaov6GyaRP3aERiv5Axa5GdU+Llwu/4qYGTLW1ol uzqaAYFyRfcPg7F+ONjouHqc= X-Received: by 2002:a17:90a:ad97:b0:32e:9da9:3e60 with SMTP id 98e67ed59e1d1-3436cd0f015mr8782686a91.36.1762792802465; Mon, 10 Nov 2025 08:40:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IH8dsQiFeXCA3fQRx1qGyG/iQYXdTGCJDeJX9jjxp7LxaCPRH2dmxyXa0Klr5WF7V5Abo/lOw== X-Received: by 2002:a17:90a:ad97:b0:32e:9da9:3e60 with SMTP id 98e67ed59e1d1-3436cd0f015mr8782625a91.36.1762792801836; Mon, 10 Nov 2025 08:40:01 -0800 (PST) Received: from hu-akhilpo-hyd.qualcomm.com ([202.46.23.25]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3434c337b20sm11468922a91.13.2025.11.10.08.39.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 10 Nov 2025 08:40:01 -0800 (PST) From: Akhil P Oommen Date: Mon, 10 Nov 2025 22:07:20 +0530 Subject: [PATCH v2 14/21] drm/msm/adreno: Support AQE engine Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251110-kaana-gpu-support-v2-14-bef18acd5e94@oss.qualcomm.com> References: <20251110-kaana-gpu-support-v2-0-bef18acd5e94@oss.qualcomm.com> In-Reply-To: <20251110-kaana-gpu-support-v2-0-bef18acd5e94@oss.qualcomm.com> To: Rob Clark , Bjorn Andersson , Konrad Dybcio , Sean Paul , Dmitry Baryshkov , Abhinav Kumar , Jessica Zhang , Marijn Suijten , David Airlie , Simona Vetter , Jonathan Marek , Jordan Crouse , Will Deacon , Robin Murphy , Joerg Roedel , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , Connor Abbott Cc: linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org, linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, devicetree@vger.kernel.org, Akhil P Oommen X-Mailer: b4 0.14.3 X-Developer-Signature: v=1; a=ed25519-sha256; t=1762792679; l=3675; i=akhilpo@oss.qualcomm.com; s=20240726; h=from:subject:message-id; bh=qO7+Zu0jaqw1wGzwD2M4glYIIsdjEUELmwQBxl1LlAQ=; b=hZZOFcaPhVuWtqncNPi1IHicthjYztjO/P4SCnU7EW1A8P0x5HCdnawmFDGbHm+nWpUXFDXsl jCAWRGM4iwACOOTExMrXI98NF5IldyXXWJfe9aGT5YfMU1e+uh9mzI9 X-Developer-Key: i=akhilpo@oss.qualcomm.com; a=ed25519; pk=lmVtttSHmAUYFnJsQHX80IIRmYmXA4+CzpGcWOOsfKA= X-Proofpoint-ORIG-GUID: iXP-klGPPssyZe-qn40U6bV8PMNwIvPE X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMTEwMDE0MiBTYWx0ZWRfX98beLmUPYObK 3Ffp+9DdsDDyPyci1SKLY+poLuiW88f8i/aYVsJqTZX6HiES1aA6ZNysjMt3+wVL/Ch4FE3WNa5 UAWwhrr6wcVcZG8VOmovZ5KcGS0d1ZHQTMo5S/UXpUpGyJKp4YBX4vG7t7F7WwE+T/D3vtHYyT6 I7xCgzYABxYTRZ2wCOiRHZRoiLnbnPVH/0AiqngS+FyFJy9EqaBYzRB21qJ4SMTnrJZwS3TqIqG vki9POB1m0tbq6rCPK7ffnAzdVNL087AmfcPMMvsCTTrWdmv8pdNbkvPqAHCv8AHkPTEzvqoJS3 QyPoneHtBcy+S+Xqrh97ZwjyJTA8cKsBfVIIZr9DS47aQruRuK36hLA8sn3N1pYVIAm7GkEqizu eQFvk4RdfjMX23Yakg9Qs00IlOSoyQ== X-Authority-Analysis: v=2.4 cv=UZJciaSN c=1 sm=1 tr=0 ts=691217e6 cx=c_pps a=UgVkIMxJMSkC9lv97toC5g==:117 a=ZePRamnt/+rB5gQjfz0u9A==:17 a=IkcTkHD0fZMA:10 a=6UeiqGixMTsA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=EUspDBNiAAAA:8 a=o4z2bafxGXL3rZEXBYUA:9 a=QEXdDO2ut3YA:10 a=1HOtulTD9v-eNWfpl4qZ:22 X-Proofpoint-GUID: iXP-klGPPssyZe-qn40U6bV8PMNwIvPE X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-11-10_06,2025-11-10_02,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 clxscore=1015 suspectscore=0 malwarescore=0 impostorscore=0 adultscore=0 priorityscore=1501 spamscore=0 phishscore=0 bulkscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2510240001 definitions=main-2511100142 AQE (Applicaton Qrisc Engine) is a dedicated core inside CP which aides in Raytracing related workloads. Add support for loading the AQE firmware and initialize the necessary registers. Since AQE engine has dependency on preemption context records, expose Raytracing support to userspace only when preemption is enabled. Signed-off-by: Akhil P Oommen --- drivers/gpu/drm/msm/adreno/a6xx_gpu.c | 26 ++++++++++++++++++++++++-- drivers/gpu/drm/msm/adreno/a6xx_gpu.h | 2 ++ drivers/gpu/drm/msm/adreno/a8xx_gpu.c | 3 +++ drivers/gpu/drm/msm/adreno/adreno_gpu.h | 1 + 4 files changed, 30 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c b/drivers/gpu/drm/msm/ad= reno/a6xx_gpu.c index 836100047be3..029f7bd25baf 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.c @@ -1104,6 +1104,23 @@ static int a6xx_ucode_load(struct msm_gpu *gpu) } } =20 + if (!a6xx_gpu->aqe_bo && adreno_gpu->fw[ADRENO_FW_AQE]) { + a6xx_gpu->aqe_bo =3D adreno_fw_create_bo(gpu, + adreno_gpu->fw[ADRENO_FW_AQE], &a6xx_gpu->aqe_iova); + + if (IS_ERR(a6xx_gpu->aqe_bo)) { + int ret =3D PTR_ERR(a6xx_gpu->aqe_bo); + + a6xx_gpu->aqe_bo =3D NULL; + DRM_DEV_ERROR(&gpu->pdev->dev, + "Could not allocate AQE ucode: %d\n", ret); + + return ret; + } + + msm_gem_object_set_name(a6xx_gpu->aqe_bo, "aqefw"); + } + /* * Expanded APRIV and targets that support WHERE_AM_I both need a * privileged buffer to store the RPTR shadow @@ -2132,8 +2149,13 @@ static int a7xx_cx_mem_init(struct a6xx_gpu *a6xx_gp= u) */ fuse_val =3D a6xx_llc_read(a6xx_gpu, REG_A7XX_CX_MISC_SW_FUSE_VALUE); - adreno_gpu->has_ray_tracing =3D - !!(fuse_val & A7XX_CX_MISC_SW_FUSE_VALUE_RAYTRACING); + /* + * AQE requires preemption records, so disable raytracing + * if preemption is not supported + */ + if (gpu->nr_rings =3D=3D 1) + adreno_gpu->has_ray_tracing =3D + !!(fuse_val & A7XX_CX_MISC_SW_FUSE_VALUE_RAYTRACING); } else if (adreno_is_a740(adreno_gpu)) { /* Raytracing is always enabled on a740 */ adreno_gpu->has_ray_tracing =3D true; diff --git a/drivers/gpu/drm/msm/adreno/a6xx_gpu.h b/drivers/gpu/drm/msm/ad= reno/a6xx_gpu.h index b507ff4e1756..7921b4a68937 100644 --- a/drivers/gpu/drm/msm/adreno/a6xx_gpu.h +++ b/drivers/gpu/drm/msm/adreno/a6xx_gpu.h @@ -58,6 +58,8 @@ struct a6xx_gpu { =20 struct drm_gem_object *sqe_bo; uint64_t sqe_iova; + struct drm_gem_object *aqe_bo; + uint64_t aqe_iova; =20 struct msm_ringbuffer *cur_ring; struct msm_ringbuffer *next_ring; diff --git a/drivers/gpu/drm/msm/adreno/a8xx_gpu.c b/drivers/gpu/drm/msm/ad= reno/a8xx_gpu.c index 78dcb9bc3377..2ef69161f1d0 100644 --- a/drivers/gpu/drm/msm/adreno/a8xx_gpu.c +++ b/drivers/gpu/drm/msm/adreno/a8xx_gpu.c @@ -616,6 +616,9 @@ static int hw_init(struct msm_gpu *gpu) goto out; =20 gpu_write64(gpu, REG_A8XX_CP_SQE_INSTR_BASE, a6xx_gpu->sqe_iova); + if (a6xx_gpu->aqe_iova) + gpu_write64(gpu, REG_A8XX_CP_AQE_INSTR_BASE_0, a6xx_gpu->aqe_iova); + /* Set the ringbuffer address */ gpu_write64(gpu, REG_A6XX_CP_RB_BASE, gpu->rb[0]->iova); gpu_write(gpu, REG_A6XX_CP_RB_CNTL, MSM_GPU_RB_CNTL_DEFAULT); diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/= adreno/adreno_gpu.h index 17863c3287f5..4c0d9024d497 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h @@ -27,6 +27,7 @@ enum { ADRENO_FW_PFP =3D 1, ADRENO_FW_GMU =3D 1, /* a6xx */ ADRENO_FW_GPMU =3D 2, + ADRENO_FW_AQE =3D 3, ADRENO_FW_MAX, }; =20 --=20 2.51.0