From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 6939928A1F1 for ; Thu, 4 Sep 2025 07:32:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971175; cv=pass; b=oot13XsgK/TYFN4+1/3zHS/FvW3QCaqsq0ElByfEfNqjdB2zAEE/VoC3OCm3PsVSJnI+8ZXpsNhMUkN51v7FaeWmCgdV/FkaRLLOVrMZJipnamjlXaAAVZs0aDUNcL4wIv9C1IelAeW73TSiQDWc5+pts1ApkQV080KN574qS9E= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971175; c=relaxed/simple; bh=cHdy9k1LRZd0qthZ/f13X/xzKN7i2AGyPe4chcKH28E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=dozlnBqxqAsXkjMGhYkOz9KRgZSy+VdxdSKWUfVhJeDRlOSze5LCeDlEoELkNmEkxZwg+Pt5UIyM7Qksgsj+2Rf+sWJu1R13WMXn2zPLzPST3NO/jNpzMraBHRfZZ6LlwNIjfZyuQ+9u+qlHZWo5Nqwat8StOJJOtS4Qeba14x0= 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=md8MrtZ/; arc=pass smtp.client-ip=136.143.188.12 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="md8MrtZ/" ARC-Seal: i=1; a=rsa-sha256; t=1756971156; cv=none; d=zohomail.com; s=zohoarc; b=PDtkBbrQP67DLJK1tUaSkndCHxlHgp018lVKYCP/0v0oHiGqRFSzi9JDmtUVwk3c5w2CZxLQHOcuFks3tOSMS4o2uvMa+tHyyJwws1NdnaCPgN24AYLyJXaBbBqdS0nDmm6/axTHyKtkfmmNjmRFZFyD9oVtIC/bnCNsy4rcd5s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971156; 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=pGOtwpWAaJdT+GipksIOXm3viEyCHLpm9n12DMU0+8E=; b=gVI/yRgvVZkw6b52L/6b47hAio/riXqrtDGHT2YZVTym0w5H6FaOShq8dg9DRfDuzMHm6Ca1li9ZFtMjbKUEcvEH7xDrIZIBl5KmT3KAKMOYevJ9KjNDDbB/0Hj0FowrBD3PabskFLlNZUwjespdHq1VIL2FN0sNGr/36mpGTY4= 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=1756971155; 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=pGOtwpWAaJdT+GipksIOXm3viEyCHLpm9n12DMU0+8E=; b=md8MrtZ/RtRPcNhasxRSGp9SelkBRsMJNu2B3yj595f1EFXLAq/7KAdAVXyqXMP4 +1g5sq4zhUWJP7Rn5OW6DqrYm4k6ouqgczWKEeh4iEyCaeaiOOqP+wn0Kngk0uZiIgi RFSbRAiYodsgIDiRz9N2j5+S0KNwD2syJHLLfST8sNlEbEmzITbvG0YcFDTJAcA/14O PVS1qFscbtl1hdAz0x2OFkga5Qa2/6yFJCTCNFB955Zl6ionDoamaJDQlraWhFz45eD XgL9XBxqRbg9UycTDzxTKOhc6RBbH63xiMFsBfCM3wGWCvNjvcPZFQkbX+fYHqkHKqb 1ZlWvwrYQQ== Received: by mx.zohomail.com with SMTPS id 175697115302280.71846743294384; Thu, 4 Sep 2025 00:32:33 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 1/7] drm/etnaviv: add HWDB entry for GC620 r5552 c20b Date: Thu, 4 Sep 2025 15:31:45 +0800 Message-ID: <20250904073151.686227-2-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- No changes in v2. 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.51.0 From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 9603B29E0E6 for ; Thu, 4 Sep 2025 07:33:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971185; cv=pass; b=pRiftOwS/Wt7SdJfodkSOmz8i5axy2phFsHB86zJanT3H1PvN8LikEHBcxfV5LXJEzauXwl0f8bnHIrRsfMsTrSzYIzSWwgF99WY/MyBQjXquLEsVbgdTer0DQXHHD+0sK3KJHAyqtdsEbpuWTcdHlq14xga9w/hpw+tFZqF+BQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971185; c=relaxed/simple; bh=tGKBKbhkMk+1DImhTC9Ibgp7UPhtIqCx0yp2t7RzQlM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=I4MyeYalpVYAUeqy/NG9s6V6zepzOm7e4xMl9IhopnSdXkYM4lzLU2Hyv5om4WqmsgLd7ZrjGYWCON/dx7wwmAcdaZIXpytRFzx2ywj3h3i0MINdxOSR+wRDGegUM7U6HpublsvjAKf6P8kmz5+Uxcm13AtDTF9aeBg01/4MKsA= 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=AbcNWFp2; arc=pass smtp.client-ip=136.143.188.12 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="AbcNWFp2" ARC-Seal: i=1; a=rsa-sha256; t=1756971165; cv=none; d=zohomail.com; s=zohoarc; b=kN2cnCNlMmCO7J3kgWi82dSr4XxxkJUgwcypQubVToKc9qmmFmAhohJKDygrwua6QHl7MWAAjq6ceOgfXMkMnKhX23dY/o571zsT1HeVaBOaVRcD4+B0BIUKdxrhnfsZCGXpFXwQrKK0TEYjOy+Crjjm/m0CF0RO72CQxrv8VGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971165; 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=APBHIVuMwAIZar0wx0NjyAkMbwfWyquvwS1vjmbzGo8=; b=i7gu/L0Ys5XVPuUKeroW+HQrI0cz21oxNC+up7MgVvMRQag/U0gFz2d34ove86sxHaZsSyHnhzBM+HDklMz93jNSlFWIoY3/2oPUSrVqSljDbpW4QqhDPuyGV0B71YdKeXf7NLzBI5GzwME9ozC7mZ0/U+W9R4EHBoEeoB0tqBU= 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=1756971165; 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=APBHIVuMwAIZar0wx0NjyAkMbwfWyquvwS1vjmbzGo8=; b=AbcNWFp2phw2nPuLuTOnnESdiKQvJJH1v3ieBRgG+au5qwoNRVa16YkzckT1FVA7 FvCwDcHAjkWNB/VM0tD5zdbtLI2ycF5yVPjM9CeETVO+tfWvo7JlQayN/nyAtCyhhB8 Zmzm5uP9osNbdA3ez8imA7dvbTsLqcN7GweYuLv2YM9eY9r4zJ0UUP3bVroydGwteMf 4+ZXHpmzklMe8MtW6lCCDrClT/nbCd2QylW6lVhJqQqjye0TLKMQ1gvByIclm0hBc5u A9fPfIHPRDH5mWBXKLUE3B52sxIIKfd9lSA4U9T9X+XhX8SgXXy8jUwW6E97qjy4g43 IJafOXn3FA== Received: by mx.zohomail.com with SMTPS id 1756971163447251.9203872666401; Thu, 4 Sep 2025 00:32:43 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 2/7] drm/etnaviv: add handle for GPUs with only SECURITY_AHB flag Date: Thu, 4 Sep 2025 15:31:46 +0800 Message-ID: <20250904073151.686227-3-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- No changes in v2. 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.51.0 From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 EB90129E10C for ; Thu, 4 Sep 2025 07:33:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971192; cv=pass; b=OSGgj39W+aH4YQA4vVR6Rq3y1vr9uQmHv9ap6RAOXC6dQLeXD1cud4wIgaWIcq93z2OTWmbf0T0/VOknvnI+Y7LPVlCOG0upFR60YFT1Mw4yzjJhW/zFk3M/u1rQH+2NOSWI7romg0hRUBsoyxTARmQ7jC67VB2LwPCwo9Jn8e4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971192; c=relaxed/simple; bh=M4Ts9Tgr36uviZHojuFSXvN3aCrg3kT06HPPj2FLqns=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Xc9slkVueDd0wwTSbNelB1hNN1bCItoI8vzPwDFTjgEdOZGwwn4Q+pGCVBBxH9KDEPid21XY1zxb9bF4LPydjf/5uER1assY3EpkIt0ir/bPkhOCopREdH7q7SlGqNYkNVC0nFMGGcXP7PcpRBUyU5P6miPGUpxiZzJrvoyziBM= 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=iJRsZ5Ka; arc=pass smtp.client-ip=136.143.188.12 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="iJRsZ5Ka" ARC-Seal: i=1; a=rsa-sha256; t=1756971173; cv=none; d=zohomail.com; s=zohoarc; b=N830F5wCRmvGHXVmsXdayID+KtpY2o6AJO2tdC0f/MH1zdB1usLtXMzO6ttVurh9YjURoo37Ub/Xeh932XUgp72R0QxWNr6lhhQYf2LfhCalx7BAZnpIz3meRa69wbSqjh48nBN3ViCOkgeQ40jzbi64IBHHOkvc2tB1i7oGbr8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971173; 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=p9rz+uqQBiZe0UfpVbdcyvqjvC0WRMUSRqowV8Z/90g=; b=Phi3WAXsrZHdA+DfeIi7LkCkmOTlCTmWg5araHSQb5tZBmjMZCDJyUENygcoq9WoX7Qf5MFPDsPSVlkPPN32jEWJ+VgrjiuQE3+sZFU6atnebIwSR55kUBLSP7cgapQI8CA5kxcVP/KELsFbbYpcQYKcKO6NhquBXUhjdHvbqos= 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=1756971173; 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=p9rz+uqQBiZe0UfpVbdcyvqjvC0WRMUSRqowV8Z/90g=; b=iJRsZ5KaFmvFZsr/OqKS1U0LB+C82w9uTKq2gw3yjnGuhrqWdirmTddpGoSKJNGa jPBKusVIlHBZD3zBs3grmOEaCUD5YysN3xzP2pNJnRttlBOWsYMgksP+hAdjwUZw6CS 0DdpHnb5uB/+TK5e3sAWvqrTkFvrtgTYvj+oTec/NGxsYGZINyLb0TgQDLgiXOyz/tG VleSIqFbtAQ8eSGxQmlCH/tbqLNBjDGW+dqUKWRtHy243kZ3TViprgaIZQA1ekX5raY Tfj2Opj/IfykXHK+i5Y+lpjkNyIaZfcX6DbP2ZeIjoZiZ/kHqtXDaYWMEUjgohx08M3 EuuTn1LlnA== Received: by mx.zohomail.com with SMTPS id 1756971172084895.5447141221532; Thu, 4 Sep 2025 00:32:52 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 3/7] drm/etnaviv: setup DEC400EX on GC620 r5552 Date: Thu, 4 Sep 2025 15:31:47 +0800 Message-ID: <20250904073151.686227-4-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- No changes in v2. 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.51.0 From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 2741E29DB64 for ; Thu, 4 Sep 2025 07:33:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971202; cv=pass; b=HAdwIGqD4RGkYZbK+AX4CA6COA64EUKQ1enOfYtSIXoPqQljNKnsbV6v+5gKM08oZ6RVcmALB3jCmHgsYcozKOIaOKf7ztSfZ17SYN5WZiUMpPrvKnYRG4mmZI0b6nJVXRH58wJ7TqyU0gdzJUlneXJK5tfb1usv2ddnOCBuXcY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971202; c=relaxed/simple; bh=TI9QFctGVgjSYqffzhPC/mWxuk7hfBmjnyRJtMH5l8U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AO9fZiqcVpBlUHnRoOpHwWR2d0EPJDrGsXgbSH/YVq3inrDth4GQ/QVonSq3rLou+2auUj1QJEknpU6aWmFImDp21oIEcjxdKfnYwF53cJDxUDQSV7Zb41CVbZQVMUWakL7Ljq1J2t4lRrw5ZFVAbmj8VBmGyIaI7pyPRn8ba+g= 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=B6bf3QTT; arc=pass smtp.client-ip=136.143.188.12 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="B6bf3QTT" ARC-Seal: i=1; a=rsa-sha256; t=1756971184; cv=none; d=zohomail.com; s=zohoarc; b=no4G4U4VTPUEeCXAYyz0MmsXiOaO0yNzUNM12+zgecrXH2aqWdG6Xz3b3XUDZy505ydhXLrde107DktyYH/JfAuzemSTUgr8D0OixdvA7+DUW+M45AvcQirQEKfrZnW0C/hgKIbo0ClH/9xfv8f2/Cj+DPsocQgjqrOMpSwPV7g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971184; 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=Gpts7NthN3eibQeZcZSvSI9koYWBnwv2X6pMUbjR4LA=; b=FlT2y2BMEKv/azvXnUrNsTlOSPxovipKC4PPdOHhbXkbLlAtvkmT935UiMmge/W7ehEuM4MHzcIkfcdrOcQ7LKmIdVfIuXKgAg6neZdOiiIRxF/TSFF4Jjyvg9RfxNDoLE3FEeD5GPGIWyQaq+Fki3V+Nrg13FKtsUSYZh0Ovls= 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=1756971184; 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=Gpts7NthN3eibQeZcZSvSI9koYWBnwv2X6pMUbjR4LA=; b=B6bf3QTTVN+bwbuz986odcG8+mnqNaZHoKKyjRNlKt4HqBIHjRhZOy3son02rUUR cs40uPIfW/1mD7Ei45RXzzzxJax1zACDC+8d2Kioc45xSfSTna0rdvH60nZFDPWjxe0 SB0wSbeik3PU4W9vC62al5hX636fKVvHUanLgWA3es9U7EPliep0ByhuDyXlSN5Vimu GfjtJCx1xslOhbi4S2WTZYtOsKmQadfHXWRdzIHLHc5Tde3ieZdXiSK4bPB+0YMj9Cu FY8cU1NSs8sd40TW6g9nV47Pf6bXnk4X1YDT+OsJxZCyE11CO/d/j514ipnHj/7LbO2 OP+9/1uezg== Received: by mx.zohomail.com with SMTPS id 1756971181360796.0305334552593; Thu, 4 Sep 2025 00:33:01 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 4/7] drm/etnaviv: protect whole iommuv2 ctx alloc func under global mutex Date: Thu, 4 Sep 2025 15:31:48 +0800 Message-ID: <20250904073151.686227-5-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- No changes in v2. 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.51.0 From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 4A9652C0F95 for ; Thu, 4 Sep 2025 07:33:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971211; cv=pass; b=EDfV8i2mft0k/xHIrxA6ysi3j/Co47k7hsDtEkVHFUCbATy4t6ljjeLd723dKSyPQTwQGRiSv8PlIWwdQZ1ww/P3dOZIbKCHAqJoPjM2SWgsNEjMhPEZCJip25biOcZXqFUkWQOM7pKOsHjZ/M9DTnaEc6YefWKdFM4miI4HHJQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971211; c=relaxed/simple; bh=yThojGq2htGeDtcw2fL4Fpoihpw/WLkZrvOBW1548IM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=TBeP75vGijbO7Y0/aJXIgvkdGC4Xj7KtJ+me7GP/npsnDCLzhFnAMx0DF+Zxo+ussBRtn9FJeTioUj5p4/sjBgHNdXPVbKoaNMY5JMs8Ip/NclqHVoxR+mwIpY+Kg/3edSkgpDFK3aEc4NwjJ84WW1V5jC9MiSxEMSY8n9EkbRE= 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=BC90s7RV; arc=pass smtp.client-ip=136.143.188.12 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="BC90s7RV" ARC-Seal: i=1; a=rsa-sha256; t=1756971194; cv=none; d=zohomail.com; s=zohoarc; b=BZ2ckkvb0Mq/f9c1jiZADoyv5zTkliUo8FpglhP6/2G3APPBMALSFcVOK0dE7N6G9Tz5PwrDmS3B09yezVvrMsK1CiOx6k8xD+ppNRYnNfpOVyhcUUh0IlfesNFQxwfTdL73Uq5LU8oTVc65PmnaGeif+Ix/j1HVTMiq7ebq9vo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971194; 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=oOmHUEYP4hvZPCCzkI8xwnbPllmMO5rCcbMG2UcPsWU=; b=dKjjHLxpmlV+AQErGuosmw3ywwEIwu9+yxOjyQ/65UoKqsqkF5BSzMTPEIRZ6kbN8gLJYnO0pCfdsEJQDJDrhs5e/YrbjZo359pgNqkmE04/C3z49i18ACODR30wmwGATRM1ii5hJBlE3uhMiN+kksMC/lm4s5IgnZfnOfbqSUI= 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=1756971193; 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=oOmHUEYP4hvZPCCzkI8xwnbPllmMO5rCcbMG2UcPsWU=; b=BC90s7RVYAKzOJVgDkT0v7rkNzL+dwoTYdVFyGPuRGwIdFzxN9YRIgI4iZEJVQA4 J5+dXxsf7FTUMyheQWnnTeKtF96jlKcEMqolhJzeaHuLsHcceshPZKxUF3Q0vIBt2DJ OcF6yjGVpoRqGkC/0zXSQhdpn3D1Nqb27K5Y3Z3X60mWZPLtD0NqNdKRK50bbO7s6X+ QWYw8iOFUBoFqyGyfZ7zfdRtirloLHIoGiAOcBP5G8UDko6uY0xGD7MBCgLm3EzYX+L knBCD028Z94p5WnILSwTUFF+d7xfBf/yz03oq9My0OdnT2FscBHnMuQ4Phi0oxuD2Xh BeeRR4qryA== Received: by mx.zohomail.com with SMTPS id 1756971190990998.7721644912724; Thu, 4 Sep 2025 00:33:10 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 5/7] drm/etnaviv: prepare for shared_context support for iommuv2 Date: Thu, 4 Sep 2025 15:31:49 +0800 Message-ID: <20250904073151.686227-6-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- No changes in v2. 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.51.0 From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 DCDFD2D4B5E for ; Thu, 4 Sep 2025 07:33:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971217; cv=pass; b=NVdpADuaF4KGkgKR3v1c04YeBH25GPmM+tj9kW6ltlE48V5E2VXTIb6kIrx+mrGNqABLbw/MlZTV/+zsHI7yM65P1uJ1nfyYHmbPhyLMWdZ0ZG9plhVC0YlZVEiD+v7z/s6FVgHfDMRUYhfziP1GxwBYJMxmje76NkwnAaOmuKw= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971217; c=relaxed/simple; bh=/tB7IRqQ1gYa/UY5/3J4tYcY59vzw6ZarodTXxQvPy0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DkayJx+25th+17q+KF2KxmdKyFm5otJy9TFPkhgeWkfTsV7VIsENZucGJH0K92FpUwdKddQm9VL0/GQa9mvcltWwHKxeM4Rfcv3kE0i8yW+FcIcFmOS+DrivxljahUOsA4Hw+NZEAbngNKLoUBe1jwIHQWtGW1kybw/Tm+MheOY= 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=M1iJPmrW; arc=pass smtp.client-ip=136.143.188.12 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="M1iJPmrW" ARC-Seal: i=1; a=rsa-sha256; t=1756971200; cv=none; d=zohomail.com; s=zohoarc; b=KsWB9vhTV3Jx171RNAqnEnVTrYtaqvxCmLFaquu3v0X1FkKoAUUQG86t0rhApFALyjv7qMdLR184Jtwf/acDWB8WWsDYBsMFXrpMWMsbBvUJaGvIYcKvAQPCzCR1zkPm/KsYFoVFlaegCZRspiNiecpam9fj6CenrUX3lQvsDgE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971200; 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=raIDLtPMitmP5YW+m8SzHU0bUpzsLvufF/gSH5JQmPA=; b=LraDAXYQAwxraei/RrcC2fq5zk+0J1oRtWm6hMfpkocyBwZMNq/02Ip6Rv5xzz78Grql53Ep+TNwkH2YRqww+C1t++oYObntYfwfQnyzAvCyyfK/MzHvsoC5qxQeHkbtQcLKvTB/Psxc3N6gJ9OdeiVVGbgfI5nJ69CzNbgY0N4= 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=1756971200; 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=raIDLtPMitmP5YW+m8SzHU0bUpzsLvufF/gSH5JQmPA=; b=M1iJPmrWwzzCgfwxSUSCRGhWVbVd3G/v9QOiXdIPkMlZ3sCRmV5IqHJuXDWrStv+ 3fOZ/7jWFoQJrzmFhHZA82kOI5t/APum9uY9JrLXX1Mmbs73+P7Np6r2fd8crHNSw7a l8+k4yVbJN08VpQ/Vm3hdHB4LI3MUnNIcqu59KQK70Oh7V/oeftcwr3g5kiOX12Odnp VchQzrux62ZTf+TReOkec7w95IYLhxaDquUCC0jziFZJdRykFTwvPLGzTwJa6zd1VUv oGcIgbWwKASKCD/tQfSCFi+c/D8aOnbVeU9qC+HBtbAOcp87FpgMSAoJ6k5Dj1nn47S 3pwQDDy0OA== Received: by mx.zohomail.com with SMTPS id 1756971198441434.76992287939606; Thu, 4 Sep 2025 00:33:18 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 6/7] drm/etnaviv: add shared context support for iommuv2 Date: Thu, 4 Sep 2025 15:31:50 +0800 Message-ID: <20250904073151.686227-7-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- Changes in v2: - Add the shared_context cleanup code in etnaviv_iommuv2_free() to fix issues when the GPU is closed and opened again. drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c | 11 +++++++++++ drivers/gpu/drm/etnaviv/etnaviv_mmu.c | 1 + drivers/gpu/drm/etnaviv/etnaviv_mmu.h | 2 ++ 3 files changed, 14 insertions(+) diff --git a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c b/drivers/gpu/drm/e= tnaviv/etnaviv_iommu_v2.c index 5654a604c70cf..16b89e72602a3 100644 --- a/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c +++ b/drivers/gpu/drm/etnaviv/etnaviv_iommu_v2.c @@ -63,6 +63,9 @@ static void etnaviv_iommuv2_free(struct etnaviv_iommu_con= text *context) =20 clear_bit(v2_context->id, context->global->v2.pta_alloc); =20 + if (context->global->shared_context =3D=3D context) + context->global->shared_context =3D NULL; + vfree(v2_context); } static int @@ -273,6 +276,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 +310,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.51.0 From nobody Fri Oct 3 06:36:59 2025 Received: from sender4-op-o12.zoho.com (sender4-op-o12.zoho.com [136.143.188.12]) (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 A067729BD81 for ; Thu, 4 Sep 2025 07:33:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.12 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971228; cv=pass; b=CsCMUrQzaVX2i9iKggXahHElLgPYvl9UMeXDMjsk/RqxjMv65XwWPi/D4/TA4Qa2LgviE7ma51qHAGymUXApdJVgc4UthY+MZpBtCxIsWetJAQKMxrTxbVoBMNQEwTOxsvzhNtnUU7/ADFb/LZWMetAOPaQu8RYvC71LFIT3BUU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1756971228; c=relaxed/simple; bh=Rxw+g8M823p79kX5tZEwY9gbi1sjR/LllPAWU3g6A7A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=IhIrMesGtYTRmhhFmzMkCj16U2/JToyh3Ab9ffJBRmx6tDtNksbMK1m1qfQv4WnhsTuJ2yixiAeOB8KHwAwBT/XY7HiVy7djV9HGwhB0ZZhJZXZgIgqgLOb6Zai2JfTA2kgYd9dUKw4WgLnEWJMJLtI9dgZT9VHzkmj51jPbZUM= 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=VQCh6Vix; arc=pass smtp.client-ip=136.143.188.12 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="VQCh6Vix" ARC-Seal: i=1; a=rsa-sha256; t=1756971210; cv=none; d=zohomail.com; s=zohoarc; b=chm57lNvJ9riBqQbo0LKStfYeAL1ujNx1RZ+faJKURC2EDz6dVAkX0mXCT+g2GNotQ/FJCSDO4Oiv8rfYrQ1zNOVlwl6oUeM+xUJg9HryRRvtd3HjpV9N0svGgWIDiNW+qk2ALOb57skhobci2jXzZhnCzNzrJNqkTe6ucUZWUk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1756971210; 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=fCwqZzYjFLFE1aXsxQ6a7vK/RQ+fI8vudZin6LlNzRI=; b=HqDTvMckkf/GLYlTyjCzQWYziLJjW6+slf1Ah/GdRIOHWQpjjGBCpGdo8DfO2FNkCB25i81be7tQju29hoFjyEIilOBmlZoA9B7c1R2QZFVg0RNcs4RvAHwSaVxz++Nr7hi8Kuo8MXirRlNk0X+uT2Ufs96d4hfAlCxTSbHusP8= 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=1756971210; 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=fCwqZzYjFLFE1aXsxQ6a7vK/RQ+fI8vudZin6LlNzRI=; b=VQCh6Vixphv4lpAxB9jBHVDb+fd2IxbakryIb2MoVcRIvySAz51xU+xPhI7JZM99 Lxy2/zYQGTgKOrUNmGpOKZbjHelaqaEGc8OPf/C0L68RYiZ62ue4r95PGn100+q4GJG bn38YlzuMKCy2n9WKHH7mOABx/rmvPC6YjdmME5UHLItSXa5MVch+a2ACzCTmJHQdyo 7iPv7KattTZNujvZ38YdKMdP3+d4+fRRsc4FEAmMuX5+5QRcwgc0NWeJj/OLLiqGyAj AGczcdtAIZyO1wcxV908ns2M41kbGFBzkaw5ObhftFFgc2KLr7OISZwj01foQO3A6GU QjvELnvkxA== Received: by mx.zohomail.com with SMTPS id 175697120750530.399496796533526; Thu, 4 Sep 2025 00:33:27 -0700 (PDT) From: Icenowy Zheng To: Drew Fustini , Guo Ren , Fu Wei , Lucas Stach , Russell King , Christian Gmeiner , David Airlie , Simona Vetter Cc: Han Gao , linux-riscv@lists.infradead.org, etnaviv@lists.freedesktop.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Icenowy Zheng Subject: [PATCH v2 7/7] [NOT FOR UPSTREAM] riscv: dts: thead: enable GC620 G2D on TH1520 Date: Thu, 4 Sep 2025 15:31:51 +0800 Message-ID: <20250904073151.686227-8-uwu@icenowy.me> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20250904073151.686227-1-uwu@icenowy.me> References: <20250904073151.686227-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 --- No changes in v2. 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 03f1d73190499..bc7dd7ee59dd5 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>; @@ -495,6 +502,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.51.0