From nobody Sat Oct 4 12:44:48 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 1864C21E091 for ; Sat, 16 Aug 2025 07:49:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330544; cv=pass; b=TYoUaKqzCDSxq1l5pJju3dtvOh8/hWm8AIafAWV/8Vw743CX/O+QrTSFJqLv/nTurR5lVNOYiKhyorRZn00yzQ2U72Gq0hWsmlLJf6p2KjE+Yw5xpTA5uOY+pJQja77xumbXxwHqDfdusbpXX0T5qnQy3+96Fh41HyL2WlNyK1c= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330544; c=relaxed/simple; bh=rsw/E8fkYiLSxKYzk1YYNZY2UAf5vCmiUnz9JCFM29I=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LoTwoWoOU7NA9PQ2qeQ3v8p0+ZpOYP7yO0rLsRVJsEjFMUyU2Q3KxN6rFJY4mhM3eUC/fjsI9a/MnMSTHmq52sjh42SgtKjxPsFAeMHREbS3m84XHpaHghwPANNcM2QrdxOjji+AigI13uWtPTZh9+K7datgTWVjqgPzB8jA97Q= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=T+Ewstl5; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="T+Ewstl5" ARC-Seal: i=1; a=rsa-sha256; t=1755330525; cv=none; d=zohomail.com; s=zohoarc; b=VJuCYtbP8mrUQI9T1j4bi2711bcd1Ushr3otFT0qX9HfnUBl2yyrca5PiG8z2/j2LUn2yaOLEZQEw5bpGF4soUPnK6OrWeQmranSaxj/it98JH47ji/zQ8nCJr2LFWuWBfqd1C1v6caNqpSTHy/oLOMiNrYqs0c2RdUpF6SWmXU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330525; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=cN9lFebZvsPmUPzA51YhqeWIG+6E3sTLNVCRnql52zU=; b=lsN3UfO1JlPm8BG0r2TtNGoDnKMfDwmIJ3BcTgo9A6rlKgLtsaLSlZ4whakDVutmWOkH7aIGToeh+hDmFA5jPtl/tyz6EK9MiCMJMCvhcYXj6H+9/EQfw1JjpcSUqaX1arzoSDQNte3xI5WWrDB7yOmDir8Wimw8/Cf7DVXtwbM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330525; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=cN9lFebZvsPmUPzA51YhqeWIG+6E3sTLNVCRnql52zU=; b=T+Ewstl5U9bHCOwOiew8z7hoW8vCH01/LbakLU+sxXKDLII9KDCemLjAerWcZtUa TtbWv1JhHUp04mJ3yG9XbCE7PVokb7U9UMYp+qUE9XhEk5Qb3jX3jo26aplbEXz6iKE KnDyJlrKejHjw09N8Yq7IsEBAuExfB3fvUoDvUV6quPKp3PVrwUcvnNZs3HnJLD5cxV QHW/u8qzmZUb2yIl9C8zLEVVYbj11qpNrg5ySI7BiCvX0ugMQbSeerG0sTaDHKeUdPN af2LNR8on3TeSmsd9J6rP3kJ5dbkEAa6LanGb8L5yOzfTcoDk39qzNaW4dOZZLkSEq4 5CZP32aLPg== Received: by mx.zohomail.com with SMTPS id 175533052326799.97496694678875; Sat, 16 Aug 2025 00:48:43 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 1/7] drm/etnaviv: add HWDB entry for GC620 r5552 c20b Date: Sat, 16 Aug 2025 15:47:51 +0800 Message-ID: <20250816074757.2559055-2-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" This is the 2D GPU found on the T-Head TH1520 SoC. Feature bits taken from the downstream kernel driver 6.4.6.9.354872. Signed-off-by: Icenowy Zheng --- drivers/gpu/drm/etnaviv/etnaviv_hwdb.c | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c b/drivers/gpu/drm/etnav= iv/etnaviv_hwdb.c index 8665f2658d51b..6a56f1ab44449 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_hwdb.c @@ -69,6 +69,37 @@ static const struct etnaviv_chip_identity etnaviv_chip_i= dentities[] =3D { .minor_features10 =3D 0x00000000, .minor_features11 =3D 0x00000000, }, + { + .model =3D 0x620, + .revision =3D 0x5552, + .product_id =3D 0x6200, + .customer_id =3D 0x20b, + .eco_id =3D 0, + .stream_count =3D 1, + .register_max =3D 64, + .thread_count =3D 256, + .shader_core_count =3D 1, + .vertex_cache_size =3D 8, + .vertex_output_buffer_size =3D 512, + .pixel_pipes =3D 1, + .instruction_count =3D 256, + .num_constants =3D 168, + .buffer_size =3D 0, + .varyings_count =3D 8, + .features =3D 0x001b4a40, + .minor_features0 =3D 0xa0600080, + .minor_features1 =3D 0x18050000, + .minor_features2 =3D 0x04f30000, + .minor_features3 =3D 0x00060005, + .minor_features4 =3D 0x20629000, + .minor_features5 =3D 0x0003380c, + .minor_features6 =3D 0x00000000, + .minor_features7 =3D 0x00001000, + .minor_features8 =3D 0x00000000, + .minor_features9 =3D 0x00000180, + .minor_features10 =3D 0x00004000, + .minor_features11 =3D 0x00000000, + }, { .model =3D 0x7000, .revision =3D 0x6202, --=20 2.50.1 From nobody Sat Oct 4 12:44:48 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 6A283233D85 for ; Sat, 16 Aug 2025 07:49:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330555; cv=pass; b=miaJgc9MF9b2ea1X+ywaXeCFcclrZ+ovgzBXsn2PAxNILu4ICRGgF6cLCCvNR8ZTQHmnq7qgmhZy04MiGFNMKjGhQhpJy9DvvluYWn1Qlgazy8BXGXy6ULYJqCqmCg9J0r4sk4r79QJfIGKU5+mgRlPvTeLohIc88mXin1NZ0V4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330555; c=relaxed/simple; bh=5HXFA6s5YsxqEJ6WaeXQLZ8o4ACR1KJzM8oA3nLe3UY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=QZU3NjeflTqQKUBEkfCTd+Ykocmc/R2q79KB2cs24Os4qN0CNnbKh/tiQJkEfz8J//e7E/NI6J3DqLygDLYdDpntm0gQ1ek69bHRo6hFwAxteixpI91yEHmG2GWVIOCwCSfHS8UrS0h0Ye4f04nrMPX4CAIdirMSLwlLoEumTwo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=lL0bvAeD; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="lL0bvAeD" ARC-Seal: i=1; a=rsa-sha256; t=1755330537; cv=none; d=zohomail.com; s=zohoarc; b=QrGGBxLbY7j0af7Z/MtfX8YwtrA4ZAbdmEkt7Lh9BpooB/rk1Bqyf1c7/UKu6SYYyBNxJjLm+FBLftOASEYSUENqIofa9tLPw4JGdTmDkDtAxsEZsfc7FuwFfibov8Prs4mSIz4JGO7hAhLhLT7BtxlzZ7rrAj/bTHx/Zlj7nVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330537; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=e7Ngx6Rt/JpIvo0R+kAwIonCUQ/vaWPqz6Ke56ZQkT4=; b=PY/0ctaNQ30JiKmPvDZmdLQBayxyYpFuxB08IMAHspmnH+JCxYotVeicwV2EVnsi0cZlu0rXRD/RlZ7PnGeflqYRen289qwC9bQCRWMjldp53g8kXgJY5W4i8GHtkDSjp9pDfY7eWrWZ0P9o4oWqCW0OGgcjiLkQWjDDUstp1Ok= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330537; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=e7Ngx6Rt/JpIvo0R+kAwIonCUQ/vaWPqz6Ke56ZQkT4=; b=lL0bvAeDZfX7fEYqdGfkrtBSvD2+IDHQLz0TwEMaQhSQRQE1+zOG2LL2Lvf9+fQ3 xK5xF+z9vIPyPsCb/2+kJBKormNUcWmP6mxE9ETl12k6dNFqJA9fhhEQEhib0a+0BU3 N4FVkZcfpEmD/Id3iFDYKPBac+u9y5mj4c5Uv7h+U7pWOyNP5Uq3CLbgSLpUkGtHg5c U7zVSKk5HKYHk23cg+gUqUuvNmXxLIAeRE3oKhwR6zCkcB1dhk16R3hJpQ9c4KyN7uN JCMaf0wqt1U1y2jM0wzrIzAQhnqk1AaEKZEQgPNwMdHTcqn0NaOPKvPluS+g8o/a7V4 p4RUkXSdEA== Received: by mx.zohomail.com with SMTPS id 1755330536462939.8814640628641; Sat, 16 Aug 2025 00:48:56 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 2/7] drm/etnaviv: add handle for GPUs with only SECURITY_AHB flag Date: Sat, 16 Aug 2025 15:47:52 +0800 Message-ID: <20250816074757.2559055-3-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" In the GC620 on T-Head TH1520 SoC, the SECURITY feature flag isn't set but the SECURITY_AHB feature flag is set. In this situation, the VIVS_MMUv2_AHB_CONTROL register isn't available, but the GPU otherwise behave like secure ones and require commands to load PTA. The 6.4.6.9.354872 driver from T-Head asserts SECURITY_AHB feature flag is set when SECURITY one is set, so it could be assumed that the situation that only SECURITY is set do not exist. Signed-off-by: Icenowy Zheng --- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnavi= v/etnaviv_gpu.c index cf0d9049bcf1e..7431e180b3ae4 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -559,7 +559,7 @@ static int etnaviv_hw_reset(struct etnaviv_gpu *gpu) control |=3D VIVS_HI_CLOCK_CONTROL_ISOLATE_GPU; gpu_write(gpu, VIVS_HI_CLOCK_CONTROL, control); =20 - if (gpu->sec_mode =3D=3D ETNA_SEC_KERNEL) { + if (gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) { gpu_write(gpu, VIVS_MMUv2_AHB_CONTROL, VIVS_MMUv2_AHB_CONTROL_RESET); } else { @@ -797,7 +797,7 @@ static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gpu) gpu_write(gpu, VIVS_MC_BUS_CONFIG, bus_config); } =20 - if (gpu->sec_mode =3D=3D ETNA_SEC_KERNEL) { + if (gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) { u32 val =3D gpu_read(gpu, VIVS_MMUv2_AHB_CONTROL); val |=3D VIVS_MMUv2_AHB_CONTROL_NONSEC_ACCESS; gpu_write(gpu, VIVS_MMUv2_AHB_CONTROL, val); @@ -853,7 +853,7 @@ int etnaviv_gpu_init(struct etnaviv_gpu *gpu) * On cores with security features supported, we claim control over the * security states. */ - if ((gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) && + if ((gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) || (gpu->identity.minor_features10 & chipMinorFeatures10_SECURITY_AHB)) gpu->sec_mode =3D ETNA_SEC_KERNEL; =20 --=20 2.50.1 From nobody Sat Oct 4 12:44:48 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 3DAB623183B for ; Sat, 16 Aug 2025 07:49:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330570; cv=pass; b=PQmsel48r5ZpTcajfTqs+WyivQFdNpe2oBVLyuoF3oMlJzB7laov7cX1XIOre1Zs7wCvBbhA4cQVJ8Jz8KiHIEgNhE+FhlLJpK9WR4rvo/dJqxSZ48b7WyCYl+0LkWJXOAOr8PgSz2N7SCYiAOuMfV5zuuRo5JP+6+oEusgYsJM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330570; c=relaxed/simple; bh=4h5SEZKxipwerxJY+MPENwlzwNQMS8EFhHT9fVAZ+nI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=tyeylcfHpfDPwtGcZkTHKWym617RzKdDYRG0p+XmoXYlz6o3xfXqHN27rS4oYYnrRLSukzpntK+/WHNW35nXWUiqwYYJ6nwUJnSZLSVtgc62meP+c9oL1/HO3Lc1vVhNLpJBOh3QwXTtFCg3/SjIh/2xMWgeTLPOD9+R3fEtXVs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=jUmOF3tp; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="jUmOF3tp" ARC-Seal: i=1; a=rsa-sha256; t=1755330551; cv=none; d=zohomail.com; s=zohoarc; b=GGx/y22vt2n1+VvXqcL2yWNISLQy4SswC3PcUorScO2WXW70gvIjkkcb8kSaKdDQIafkgPuRGr+/0gGiNJzSTDqYog+q4VV5Fh3NDjxibz04TKFC+yV3xCD1q+FQ+I5bbOPaqrOG49zq14gmMQGL56ZoE0l9zfBP/YEA9WDq08I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330551; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=cUbeoz3eH2Lp/NXawnV6Nuu9wKEOZRT4VvJUTFslJ1M=; b=JE6YfCJ4AaU1Dwlvhzd60dYfZzy+C8zMgltuqNXSaanwAkTwnumHETf/QIzxB3j1xvY3ssIOVFbi5yHv1Aw6P6u3o5lYlk8anlTwGoc/v3vRsnsbXnZLtA1yXEmYMjCK9iukawYr1n225tfNiOHzu4hl4Gh1sgEaQ8JB7Y/D3Mg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330551; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=cUbeoz3eH2Lp/NXawnV6Nuu9wKEOZRT4VvJUTFslJ1M=; b=jUmOF3tpWt6gG0OC6wxeq1XDIjFVEXlKRh3WkQCtROEYE4OJRzhrgRmBQ9RS7hrv Bwrzmv/CfFWEkfgZhfnt5pUMQb1l1eVEiQEwU/q3vfiSfXMbxxrIskYN/HX7NsFGouY z6Jm8m2OqtHSX3SS2biCDxFynVBSPGyN2BSleC6rwMi6JR1tQdppG9fLq19CgP4VbDN HYnOooly7hRmXUdvxN7DJg9Ljiz77t2shehAFugY5xf8jgXQEmWsiDdC3RRH7U4rWp7 i9y8UCgCnn9I9vS4TvzA1e5fttjypXdYfvmZaaNQzusw7tbK1MgdnqzeKhv8K7jr9/C evok/aeJTQ== Received: by mx.zohomail.com with SMTPS id 1755330548740860.1574521157502; Sat, 16 Aug 2025 00:49:08 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 3/7] drm/etnaviv: setup DEC400EX on GC620 r5552 Date: Sat, 16 Aug 2025 15:47:53 +0800 Message-ID: <20250816074757.2559055-4-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" The GC620 r5552 GPU found on T-Head TH1520 features (and requires) a DEC400EX buffer compressor that needs to be set up. In addition, some quirk exist for the DEC400 part that needs to be handled during GPU reset, otherwise the reset will not happen. Set the DEC400EX up and add the quirk code to the GPU reset codepath. Currently the DEC400EX setup is gated by this specific GPU identity, however in future we should add a feature flag for it. Signed-off-by: Icenowy Zheng --- drivers/gpu/drm/etnaviv/etnaviv_gpu.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c b/drivers/gpu/drm/etnavi= v/etnaviv_gpu.c index 7431e180b3ae4..a8d4394c8f637 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_gpu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_gpu.c @@ -559,6 +559,10 @@ static int etnaviv_hw_reset(struct etnaviv_gpu *gpu) control |=3D VIVS_HI_CLOCK_CONTROL_ISOLATE_GPU; gpu_write(gpu, VIVS_HI_CLOCK_CONTROL, control); =20 + if (etnaviv_is_model_rev(gpu, 0x620, 0x5552)) { + gpu_write(gpu, VIVS_DEC400EX_UNK00800, 0x10); + } + if (gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) { gpu_write(gpu, VIVS_MMUv2_AHB_CONTROL, VIVS_MMUv2_AHB_CONTROL_RESET); @@ -797,6 +801,15 @@ static void etnaviv_gpu_hw_init(struct etnaviv_gpu *gp= u) gpu_write(gpu, VIVS_MC_BUS_CONFIG, bus_config); } =20 + /* + * FIXME: Required by GC620 r5552 as a bug workaround, but might be + * useful on other GPUs with G2D_DEC400EX feature too. + */ + if (etnaviv_is_model_rev(gpu, 0x620, 0x5552)) { + gpu_write(gpu, VIVS_DEC400EX_UNK00800, 0x2010188); + gpu_write(gpu, VIVS_DEC400EX_UNK00808, 0x3fc104); + } + if (gpu->identity.minor_features7 & chipMinorFeatures7_BIT_SECURITY) { u32 val =3D gpu_read(gpu, VIVS_MMUv2_AHB_CONTROL); val |=3D VIVS_MMUv2_AHB_CONTROL_NONSEC_ACCESS; --=20 2.50.1 From nobody Sat Oct 4 12:44:49 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 3DEE522FDEC for ; Sat, 16 Aug 2025 07:49:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330582; cv=pass; b=LhNbWsn25lvwSRruxNm2mSSGGpunTfvCNAPRmU9a7hr/UvuPqMthJON7WC5iRevYDEjzbwMX1+TUgxnIpZXSBViF9WwXkBRSonbrAO+VMj7tjZ842WeryD2HPCF3USrBUR2nfBybSgsvJ4FBU6ZC57cO9FK40/U549AMVtRWgVM= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330582; c=relaxed/simple; bh=ihZ0YvzK6Jc2oHoFU1M3i5d95DQ9EnyyRoUvPF2/drQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Nl41ovWFrxVSEoZBq0uJ3NR5lBQqpIkQuYbFjuVJGjvXM9hF1Y59S5aHa05ZnbFwqTaK9N3KdK50ZFMynxnpT5JSs2sqNb1wpy6Pe5WVwrpfiFfkPBkZbSUJBM4nCm2kR29R8YN+W9g4caVb84cqiPLCIByTwIo8k7KDKvaHHmY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=MLtMwvYk; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="MLtMwvYk" ARC-Seal: i=1; a=rsa-sha256; t=1755330562; cv=none; d=zohomail.com; s=zohoarc; b=YF099E5zO967bfyuMBSXww0TlAsPeeVUp0FDTkm7ijV2KgWJqGA+Ey/9EoYHL7HPPUasiP517CDtSRy1AZfS453P8bRCkWVd7BHExUEjjTOCYqLhDPHLipHnBM79DwHs2wnoCIxiQjRvkyOltQkat0SrSkgduRrfCpnWpobgyuM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330562; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=AKJEL0/mUZ/C7FGFS07m14Rz7LamiiUDHM253Sk2BSE=; b=UMMTl3bQajSs/p1bd/6QET/MeUaKE32TkIUzGhXw9EdKv5eIhQQ4LoVRfBxxDGAX6I5RAP9iWJVcBNeoLk0tnLX2Csnm1ZutuKKnJ7mCkz82Tca3KHWjUZwhGTDNG74sMi18pa9sUjCwAzvwaQkb24H8ku2KgcwJ7+HgRjwK9Ww= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330561; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=AKJEL0/mUZ/C7FGFS07m14Rz7LamiiUDHM253Sk2BSE=; b=MLtMwvYkp435pUtnIwCuxI96Wy0IhxZWcrBhkN/6+YY9rYhTYBYyB//fjetjD1G1 HRAq3MzYR+1CLiT/1CQMP/HPCSi/FDk7ICszj+qMy96dntc+zfr68OAwiBEsTXnAdca InjK15saqPyBKk26BawfUumJZVh3nUXLB4snCv11u4Y+xj6xp1H3zJ8I98AMKGeXr7s zMZWhPKKX9Dl7upFbBTMYwF4N47z4T6KJTVLb2xtnseSW26/trxHFcc9dTeBKyIbbS7 8SHj+L4LMaz6JAMVI8xps8zaHmCz1P02Yipxd0HevQYk5mMUBVI5nzFB6hp24Lfv18m VwqSVH7yYw== Received: by mx.zohomail.com with SMTPS id 1755330559475160.36739447746152; Sat, 16 Aug 2025 00:49:19 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 4/7] drm/etnaviv: protect whole iommuv2 ctx alloc func under global mutex Date: Sat, 16 Aug 2025 15:47:54 +0800 Message-ID: <20250816074757.2559055-5-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" As we are forced to use a global shared context on some PTA-equipped-but-broken GPUs, the fine-grained mutex locking in the current implemtnation of etnaviv_iommuv2_context_alloc() won't be meaningful any more. Make the whole function to be protected by the global lock, in order to prevent reentrance when allocating global shared context. Signed-off-by: Icenowy Zheng --- drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c b/drivers/gpu/drm/e= tnaviv/etnaviv_iommu_v2.c index d664ae29ae209..5654a604c70cf 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c @@ -272,20 +272,18 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_gl= obal *global) struct etnaviv_iommuv2_context *v2_context; struct etnaviv_iommu_context *context; =20 + mutex_lock(&global->lock); + v2_context =3D vzalloc(sizeof(*v2_context)); if (!v2_context) - return NULL; + goto out_mutex_unlock; =20 - mutex_lock(&global->lock); v2_context->id =3D find_first_zero_bit(global->v2.pta_alloc, ETNAVIV_PTA_ENTRIES); - if (v2_context->id < ETNAVIV_PTA_ENTRIES) { + if (v2_context->id < ETNAVIV_PTA_ENTRIES) set_bit(v2_context->id, global->v2.pta_alloc); - } else { - mutex_unlock(&global->lock); + else goto out_free; - } - mutex_unlock(&global->lock); =20 v2_context->mtlb_cpu =3D dma_alloc_wc(global->dev, SZ_4K, &v2_context->mtlb_dma, GFP_KERNEL); @@ -304,11 +302,14 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_gl= obal *global) INIT_LIST_HEAD(&context->mappings); drm_mm_init(&context->mm, SZ_4K, (u64)SZ_1G * 4 - SZ_4K); =20 + mutex_unlock(&global->lock); return context; =20 out_free_id: clear_bit(v2_context->id, global->v2.pta_alloc); out_free: vfree(v2_context); +out_mutex_unlock: + mutex_unlock(&global->lock); return NULL; } --=20 2.50.1 From nobody Sat Oct 4 12:44:49 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 80CC71DA21 for ; Sat, 16 Aug 2025 07:50:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330620; cv=pass; b=q2QYSTx6LyX82Ka1QqeFmVxKtcCxnF109KXxsb4AJWbChRULOPaBfqekyr4bACaT4r/lZbAtJzjEZJnhfjdyod9EYl2Vbel/69zXuMJRnMeOqxXHippBkZ2ff7poBxGb2qM77BWOoZVm055P9T//67JyHWFfmOboxv5hV1OSNMc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330620; c=relaxed/simple; bh=X9MF6mfc4iPUFHvTdaOf2OOcZiXy41ri15W59j59Hbo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cLPwbqOJqu6sDAnI0YaDGZIAhE4Ur27L0yWXriA7sUllp0fV6VbuzPx69qvz16T4fNJipIFLGaHlA/A6g/jBKQrV9LMmv9yK1Z7VT93qBZO5gzTJllVKqtp93w9Hip87lEwPdt11RAyKEdizZJpAAhsm8ip4FqbKtx9Zfa2HHF0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=F/nRtus4; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="F/nRtus4" ARC-Seal: i=1; a=rsa-sha256; t=1755330596; cv=none; d=zohomail.com; s=zohoarc; b=SnNrqvFDzgNV5KJ3LbmREpj4lP9rVFATsmMgKcd5J68M27/MoPHtT1SufEGnPkBJqpMIdhu1Ghoat3wRlZwt8HVBVFTxAnAuL3fb/JrwFOjFUXRZTtmuSDmlzT8qgpTsxGKXtQ1SklhLmE0dTyqT1ueCenM04Q6X2D4xZfhSpww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330596; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=JoRCF6ssZwmH7R938xLhOJLH6I8iPbEeE3FkzT0OL4I=; b=d79zLvaW2ZE1XwPjonVBq98wiOfcPe4rvQGgUqzGsrMt7PboLu3xda7vViUhokeLNfv+UdM+AoaHpXQzKqACD2vbCy44bpD5ZicNVeRwk+xAAcFn/uzlA0f8Sq/Cbb33jDqXLpNge0UPMlK0JWhzrUcTsfoc9KR8zP42AfXI3fk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330596; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=JoRCF6ssZwmH7R938xLhOJLH6I8iPbEeE3FkzT0OL4I=; b=F/nRtus4XTVwvujBNyWX5E0zTKi12Rm8SQlz4pKqTnKxKqisCqwDQ5UQHJ8wnrQ8 9BwJrnuRGWtwHNqQ4j4/VvBYRmFaOrZs4sCP5DJLgejTMUJ/3vUnQ7onShVqht9pzd/ wncsAgwvSGs8g5eONFnoRHylwa8i/nVgrovAo98bnVGlDRkjY+XgmxA2zyXzsfT4/GI nfwgzynMpucRQ07lipj+Ul+sTAHjAgzeH4Vxo6DfxTWs16vPdL63IYD2R6YJfdnJP+h rugoHM1Sgb+dC9rjhYjTk82Eu8Mku41p/8s42rRJ1dK3s49unqnWDV+Ll3ORsiqvQfD UuE8TmImww== Received: by mx.zohomail.com with SMTPS id 1755330593074146.76093361763662; Sat, 16 Aug 2025 00:49:53 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 5/7] drm/etnaviv: prepare for shared_context support for iommuv2 Date: Sat, 16 Aug 2025 15:47:55 +0800 Message-ID: <20250816074757.2559055-6-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" As we have some unfortunate GPUs with IOMMUv2 but broken PTA (reloading a different page table at runtime always fails), shared_context is now not a v1-only thing. Move it out of the v1 struct in the union. Signed-off-by: Icenowy Zheng --- drivers/gpu/drm/etnaviv/etnaviv_iommu.c | 8 ++++---- drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 22 +++++++--------------- 2 files changed, 11 insertions(+), 19 deletions(-) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu.c b/drivers/gpu/drm/etna= viv/etnaviv_iommu.c index afe5dd6a9925b..6fdce63b9971a 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_iommu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu.c @@ -39,7 +39,7 @@ static void etnaviv_iommuv1_free(struct etnaviv_iommu_con= text *context) dma_free_wc(context->global->dev, PT_SIZE, v1_context->pgtable_cpu, v1_context->pgtable_dma); =20 - context->global->v1.shared_context =3D NULL; + context->global->shared_context =3D NULL; =20 kfree(v1_context); } @@ -136,8 +136,8 @@ etnaviv_iommuv1_context_alloc(struct etnaviv_iommu_glob= al *global) * a stop the world operation, so we only support a single shared * context with this version. */ - if (global->v1.shared_context) { - context =3D global->v1.shared_context; + if (global->shared_context) { + context =3D global->shared_context; etnaviv_iommu_context_get(context); mutex_unlock(&global->lock); return context; @@ -163,7 +163,7 @@ etnaviv_iommuv1_context_alloc(struct etnaviv_iommu_glob= al *global) mutex_init(&context->lock); INIT_LIST_HEAD(&context->mappings); drm_mm_init(&context->mm, GPU_MEM_START, PT_ENTRIES * SZ_4K); - context->global->v1.shared_context =3D context; + context->global->shared_context =3D context; =20 mutex_unlock(&global->lock); =20 diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.h b/drivers/gpu/drm/etnavi= v/etnaviv_mmu.h index 7f8ac01785474..2ec4acda02bc6 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.h +++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.h @@ -49,21 +49,13 @@ struct etnaviv_iommu_global { =20 u32 memory_base; =20 - /* - * This union holds members needed by either MMUv1 or MMUv2, which - * can not exist at the same time. - */ - union { - struct { - struct etnaviv_iommu_context *shared_context; - } v1; - struct { - /* P(age) T(able) A(rray) */ - u64 *pta_cpu; - dma_addr_t pta_dma; - DECLARE_BITMAP(pta_alloc, ETNAVIV_PTA_ENTRIES); - } v2; - }; + struct etnaviv_iommu_context *shared_context; + struct { + /* P(age) T(able) A(rray) */ + u64 *pta_cpu; + dma_addr_t pta_dma; + DECLARE_BITMAP(pta_alloc, ETNAVIV_PTA_ENTRIES); + } v2; }; =20 struct etnaviv_iommu_context { --=20 2.50.1 From nobody Sat Oct 4 12:44:49 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 80D37223DCB for ; Sat, 16 Aug 2025 07:50:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330621; cv=pass; b=s4hzaOxdaiR18IJE9KR1jeySWh+WReLrH68x4+x5a+o3NsS4m6A1Uoft9I9mYMSGKwTpGht6U3glSxuDuEsbQnFJH4xzFXRjk2Ddq5j5bPPvbsDQTz3woAaETbMPyn6nGMBywydRTwLFID+NMs1zVj3n7zqV88WylRfCqJKK+30= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330621; c=relaxed/simple; bh=E0FjB6kMfQY5O+yJBZwSthSOmMxaZjsAugPmNRW5CwY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DoHbqTell3ZQyS1e3OReKPtGWDMjcBfcz0To/okk+ga80xI2asW0t2z4vi232IB5fDJgP5faJM7WSpp5hFj6KJp9bVvGSRP+bU0WizPitN6XYH6jS+mZhAwTrHWDpUz48zDQoN5zAAD2nmYrnYh1Jq5ugpl+ewxv5I8oEX4jg0o= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=hPzr9B4Y; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="hPzr9B4Y" ARC-Seal: i=1; a=rsa-sha256; t=1755330602; cv=none; d=zohomail.com; s=zohoarc; b=Wk3n11qAalAXzPVmgZZZEaJ/zqMH94YdP8W8QseZQilV6/fFOzeOtrnBU1TXIvODhpSNzdlGWIDJ2+yw8ymZzysVuRQZrsozLJKUaQYITfoMVeCLl0s72kHk5mri7VtzVqYEDJZlftbhE5hojvDdXmbRdlvChgRpybVpG3Tvxjs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330602; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=Dl80jSPpC5O2vp6knEfeEZ6aNBmqt3cz1+4K1LZ3LiI=; b=me6QuRwSn9njgRjEz6S5/2cYS5Y092ZrOcumAsy52X6gIcD8JZRPVwxs3sfBsCVIpNwf9NEFfoZSqrxcnL9ii/k+y+uwzAAsySjpgqVPnHfzEsEXQ7NeAFt8VCBtlG1+HLv8IBp80yjAwKlxunj7CaPW4Z3/bafXVJQ2Hg4UiW0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330602; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=Dl80jSPpC5O2vp6knEfeEZ6aNBmqt3cz1+4K1LZ3LiI=; b=hPzr9B4YznreZqMCWBxJhlGuLr6dC74K5IcxVNIzU4nYbGEWF5KX2wfOyZc8e3D5 jJjl9MYmwzB9mVo8Anoq/4kaoy1EeojMnCvxKjOg4gD4s06PQRP5WFJo1P9abFcXmpF Rv3apgURWVbMaCFXp+Oe5nERN8N/roueIkSvSGRUsnKox7sX9OVieVFX6LCaFe7LNNs YTlRpGK2pqrb7KwKB6MyHyNAJgF9O6zWVoVRzrWdUXW9lueVYcuffMw7AapQibVMJ0q /wgA/we+W/iAHt1pLdokwdSy+0YjxmcExLkgwFoumAyTTt6f+4kgJrn+60zDlHV7fvV PE0+R4f2Zw== Received: by mx.zohomail.com with SMTPS id 175533059910433.10218510901905; Sat, 16 Aug 2025 00:49:59 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 6/7] drm/etnaviv: add shared context support for iommuv2 Date: Sat, 16 Aug 2025 15:47:56 +0800 Message-ID: <20250816074757.2559055-7-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" Unfortunately the GC620 GPU seems to have broken PTA capibility, and switching page table ID in command stream after it's running won't work. As directly switching mtlb isn't working either, there will be no reliable way to switch page table in the command stream, and a shared context, like iommuv1, is needed. Add support for this shared context situation. Shared context is set when the broken PTA is known, and the context allocation code will be made short circuit when a shared context is set. Signed-off-by: Icenowy Zheng --- drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 8 ++++++++ drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 1 + drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 2 ++ 3 files changed, 11 insertions(+) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c b/drivers/gpu/drm/e= tnaviv/etnaviv_iommu_v2.c index 5654a604c70cf..960ba3d659dc5 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c @@ -273,6 +273,12 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_glo= bal *global) struct etnaviv_iommu_context *context; =20 mutex_lock(&global->lock); + if (global->shared_context) { + context =3D global->shared_context; + etnaviv_iommu_context_get(context); + mutex_unlock(&global->lock); + return context; + } =20 v2_context =3D vzalloc(sizeof(*v2_context)); if (!v2_context) @@ -301,6 +307,8 @@ etnaviv_iommuv2_context_alloc(struct etnaviv_iommu_glob= al *global) mutex_init(&context->lock); INIT_LIST_HEAD(&context->mappings); drm_mm_init(&context->mm, SZ_4K, (u64)SZ_1G * 4 - SZ_4K); + if (global->v2.broken_pta) + global->shared_context =3D context; =20 mutex_unlock(&global->lock); return context; diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c b/drivers/gpu/drm/etnavi= v/etnaviv_mmu.c index df5192083b201..a0f9c950504e0 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.c @@ -504,6 +504,7 @@ int etnaviv_iommu_global_init(struct etnaviv_gpu *gpu) memset32(global->bad_page_cpu, 0xdead55aa, SZ_4K / sizeof(u32)); =20 if (version =3D=3D ETNAVIV_IOMMU_V2) { + global->v2.broken_pta =3D gpu->identity.model =3D=3D chipModel_GC620; global->v2.pta_cpu =3D dma_alloc_wc(dev, ETNAVIV_PTA_SIZE, &global->v2.pta_dma, GFP_KERNEL); if (!global->v2.pta_cpu) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_mmu.h b/drivers/gpu/drm/etnavi= v/etnaviv_mmu.h index 2ec4acda02bc6..5627d2a0d0237 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_mmu.h +++ b/drivers/gpu/drm/etnaviv/etnaviv_mmu.h @@ -55,6 +55,8 @@ struct etnaviv_iommu_global { u64 *pta_cpu; dma_addr_t pta_dma; DECLARE_BITMAP(pta_alloc, ETNAVIV_PTA_ENTRIES); + /* Whether runtime switching page table ID will fail */ + bool broken_pta; } v2; }; =20 --=20 2.50.1 From nobody Sat Oct 4 12:44:49 2025 Received: from sender4-op-o15.zoho.com (sender4-op-o15.zoho.com [136.143.188.15]) (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 DBF67223DCB for ; Sat, 16 Aug 2025 07:50:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.15 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330626; cv=pass; b=o3NI74ieoaFCBfk5jk09qeIT9ok0gUy2m1xHhwzZLu0qTNYdojtt1WUaRvl4kMRvmI4zORwL6jW+pMRDQ8ZnUSLFUEFhGB5nFV/+NBHxAnx8syGCrWO7ok+ev6WvfZwR6po4F2Y8pEgdpDVXaVBkJ+VM+T38xjorTY4HBcWyLqU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755330626; c=relaxed/simple; bh=lArGCjFVKd4sqLoCTFlFq1QowlCm/vKWS/y8bEx3K9w=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=NRye3bBcsxYd4ZfeQzfokGQaeoiU+tL41/4v09igRwdMLBYL8H++VNCaxGJ7dM0SoI3W4VA4TRfGe62Q2hLkFafsghfeHQeS0GBG2ecLlwtqc1tUOCwqVUHBPrZs9/TkB12ECeJbK/Xj7RTb7LDXcEaVfgBteZR9DLGbHK0YdQE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me; spf=pass smtp.mailfrom=icenowy.me; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b=lr2ya7xb; arc=pass smtp.client-ip=136.143.188.15 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=icenowy.me Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=icenowy.me Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=icenowy.me header.i=uwu@icenowy.me header.b="lr2ya7xb" ARC-Seal: i=1; a=rsa-sha256; t=1755330608; cv=none; d=zohomail.com; s=zohoarc; b=bRIBP23Y2ylQdHyImJXvD14HwjwUSpPUyjy5Yo1t7D8EXFbNZu+m0zYe68AenkV8T9/1ogDPszwlEPJangV45qbJJOgkN3s4ZAhd6xMPbQGSIz/MrP0Q1TUXItKY5L5wPWwySTPFRHo3LDzmM2O1nGhdbaPtyWV280E1YpMWgyc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1755330608; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=RKVNLFhAmULFUVk/4/UgqVYn12Un3zwHAL+8oU8wrEY=; b=b9lwSazD+oDggzY75pFgNp2ioqLk1kjXpP7YAgzBrlWU5MiJF+ucS12rb7sJRQBxmWXCQYdGl5bLub/a4hdcxMrH4YO3x61NujThAzaWOZmW+IX1Zrs5mu3yj5GIcl/bK/iLk+QrQWXv+2mbl2dLBtBpMCVrXkQLyHcEtpsVpvQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=icenowy.me; spf=pass smtp.mailfrom=uwu@icenowy.me; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1755330608; s=zmail2; d=icenowy.me; i=uwu@icenowy.me; h=From:From:To:To:Cc:Cc:Subject:Subject:Date:Date:Message-ID:In-Reply-To:References:MIME-Version:Content-Transfer-Encoding:Message-Id:Reply-To; bh=RKVNLFhAmULFUVk/4/UgqVYn12Un3zwHAL+8oU8wrEY=; b=lr2ya7xbDyoj/LKhQv0oLLFaHdP7+1e7ch5bc2tO92CVWCWllMQyLHhOG93ElCXn Udoq4fyzAXn4v97KFumIyVcr/WDjbpV34IifKu1/g5eAaCx2iciw8SzOvBNqMbhSGAk a3AtSFXptFiV3eDQuySJwo51gjiLICgCrT54h6puQpfT6jtut66YrIzDd3b3FM4Ye84 8OINcyNE//uRAywRwMzqm2oeE0XeslceYyufky1oqsS3r1ZWgdVnJlPWuvZjYHBRGdd ZD8pLVEMZpgPSPMN+Pvef3rHLcb6V/nGjMc0tivuQKJ87d1kzAduP9AeT8M6BjOpZNr VgVssPGulA== Received: by mx.zohomail.com with SMTPS id 1755330606588202.98819779340647; Sat, 16 Aug 2025 00:50:06 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: linux-riscv@lists.infradead.org, linux-kernel@vger.kernel.org, etnaviv@lists.freedesktop.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH 7/7] [NOT FOR UPSTREAM] riscv: dts: thead: enable GC620 G2D on TH1520 Date: Sat, 16 Aug 2025 15:47:57 +0800 Message-ID: <20250816074757.2559055-8-uwu@icenowy.me> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20250816074757.2559055-1-uwu@icenowy.me> References: <20250816074757.2559055-1-uwu@icenowy.me> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMailClient: External Content-Type: text/plain; charset="utf-8" The T-Head TH1520 SoC contains a GC620 2D graphics accelerator. Enable it in the devicetree to allow using etnaviv driver with it. This patch is currently very dirty because it relies on the bootloader leaving the clocks enabled, and the core clock is a fake one. Signed-off-by: Icenowy Zheng --- arch/riscv/boot/dts/thead/th1520.dtsi | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/th= ead/th1520.dtsi index 42626f35de37b..f21598aec82a7 100644 --- a/arch/riscv/boot/dts/thead/th1520.dtsi +++ b/arch/riscv/boot/dts/thead/th1520.dtsi @@ -225,6 +225,13 @@ aonsys_clk: clock-73728000 { #clock-cells =3D <0>; }; =20 + gc620_cclk: clk-gc620-fake { + compatible =3D "fixed-clock"; + clock-frequency =3D <264000000>; + clock-output-names =3D "gc620_cclk"; + #clock-cells =3D <0>; + }; + stmmac_axi_config: stmmac-axi-config { snps,wr_osr_lmt =3D <15>; snps,rd_osr_lmt =3D <15>; @@ -516,6 +523,18 @@ uart2: serial@ffec010000 { status =3D "disabled"; }; =20 + /* Vivante GC620, 2D only */ + g2d: gpu@ffecc80000 { + compatible =3D "vivante,gc"; + reg =3D <0xff 0xecc80000 0x0 0x40000>; + interrupt-parent =3D <&plic>; + interrupts =3D <101 IRQ_TYPE_LEVEL_HIGH>; + + clocks =3D <&gc620_cclk>; + clock-names =3D "core"; + status =3D "okay"; + }; + clk: clock-controller@ffef010000 { compatible =3D "thead,th1520-clk-ap"; reg =3D <0xff 0xef010000 0x0 0x1000>; --=20 2.50.1