From nobody Wed Dec 17 19:04:16 2025 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 EBD25204680 for ; Fri, 14 Mar 2025 17:40:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974024; cv=pass; b=WsGzHyHbqkEgODhRnl0DhDDmBr9MXFoF0uZ5Ni0Au4/x6vOOr9wokOpP8I/Tcwp43LbYs4Ylqs+1AU/dvgvpWpY8fDrrs0mTk/NbxkgNmd7+bIAA2Azm2FjUSfyzCTxyfN4P3fmRWwlxzRwQpCyX1nYTF8RpMWkiH+5GtPrDtBk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974024; c=relaxed/simple; bh=p++KVk3Fw8pgMe8xXWu7SiuG6QOWrS2JQmXG3WQYqmQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=N6OqL8Y4JoImf4JuBH91SO0VUu3w4nrsDQSAlUA7pTNDEs5OTNVTcAspiYycWikxJgywojCTyYFqJJag4/LupLCCFT47hPCIl7estpo6iU0UU1UniYwkugDeANIJNhMhqbodB1teAGwO2DeR3mGWvYEnps8fsXec8Y4bNlyS0UY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=dIdUMG9c; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="dIdUMG9c" ARC-Seal: i=1; a=rsa-sha256; t=1741974001; cv=none; d=zohomail.com; s=zohoarc; b=ZCkG7Az+Ny0TDQTThm2KSY658Yw0UhGBTaHip7knOva8Lf7dJfNoepNPQtE+NZMoRG4XwU3lpsLZIuhblJ3SHzwaxttdE/qaSi8Fp2K0W8Gu/ChNEyV648raEfLGZe/9yviYWb4/VdQSfPiNDubq2UgdYZQT77qVdlBP9+X925E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741974001; 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=ghqsESCSlYDpPWVp7MysrBKDg3K0+nOb0GO49Q1Vkh8=; b=a8o2pkyrf+OOmozU3zWIN3kOGW00HreHdVHlLtuxMaLx6f+7UMQJuDladIDtMmivcCupJuW9gWdEHh2wvcE8xc5mfnHGdWErHJYpA7oiiCKZAVWixCgInpELw2pv8kslAiGAId3PCnqiFpCEMdqRJK4vmCxmEsYKVxTKGUBsXqU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1741974001; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; 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=ghqsESCSlYDpPWVp7MysrBKDg3K0+nOb0GO49Q1Vkh8=; b=dIdUMG9czft3lYTgdhVH62QHefFWoI8PFRxt6BzyTd6/5J0mU775O123d/KGbsO6 xNWkpjFKRKftz33ip1akzwfc5GO+ivGlcQrvCZVk6Qdg1sBZxHc8htF34sxXknkMmPa XfqLhPOO1JwjCQ4T4A1mDH1WSBYaBXyPEDsc9IP0= Received: by mx.zohomail.com with SMTPS id 1741973998131839.7415151177113; Fri, 14 Mar 2025 10:39:58 -0700 (PDT) From: Ariel D'Alessandro To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: boris.brezillon@collabora.com, robh@kernel.org, steven.price@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, kernel@collabora.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, sjoerd@collabora.com, angelogioacchino.delregno@collabora.com, Ariel D'Alessandro Subject: [PATCH v2 1/6] drm/panfrost: Set IOMMU_CACHE flag Date: Fri, 14 Mar 2025 14:38:53 -0300 Message-ID: <20250314173858.212264-2-ariel.dalessandro@collabora.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250314173858.212264-1-ariel.dalessandro@collabora.com> References: <20250314173858.212264-1-ariel.dalessandro@collabora.com> 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" Panfrost does not support uncached mappings, so flag them properly. Also flag the pages that are mapped as response to a page fault as cached. Signed-off-by: Boris Brezillon Signed-off-by: Ariel D'Alessandro Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Steven Price --- drivers/gpu/drm/panfrost/panfrost_mmu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panf= rost/panfrost_mmu.c index b91019cd5acb1..9e6f198ef5c1b 100644 --- a/drivers/gpu/drm/panfrost/panfrost_mmu.c +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c @@ -327,7 +327,7 @@ int panfrost_mmu_map(struct panfrost_gem_mapping *mappi= ng) struct drm_gem_object *obj =3D &shmem->base; struct panfrost_device *pfdev =3D to_panfrost_device(obj->dev); struct sg_table *sgt; - int prot =3D IOMMU_READ | IOMMU_WRITE; + int prot =3D IOMMU_READ | IOMMU_WRITE | IOMMU_CACHE; =20 if (WARN_ON(mapping->active)) return 0; @@ -528,7 +528,7 @@ static int panfrost_mmu_map_fault_addr(struct panfrost_= device *pfdev, int as, goto err_map; =20 mmu_map_sg(pfdev, bomapping->mmu, addr, - IOMMU_WRITE | IOMMU_READ | IOMMU_NOEXEC, sgt); + IOMMU_WRITE | IOMMU_READ | IOMMU_CACHE | IOMMU_NOEXEC, sgt); =20 bomapping->active =3D true; bo->heap_rss_size +=3D SZ_2M; --=20 2.47.2 From nobody Wed Dec 17 19:04:16 2025 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 68CB6204C1B for ; Fri, 14 Mar 2025 17:40:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974029; cv=pass; b=daJme/WnsJG+iAbzUS7fGLhqc4GGfbX80wql1kPTcas3ybTUdzaJPH9RU2KLMlAS+mjGoZbgLIYMAcTu8PP82hLw0/I7VPDIr9n+31/P4dtf7TBlU0f50MLl6cVfhcOYw/z0kNk4GhFxcitf5YGM26D9PyaKlmshrKztmyDFKK8= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974029; c=relaxed/simple; bh=7UTfBAh6W8ZjE7uIa2/12wzqhz3gjNHpfworaZRIunA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sSGlQkuI2XQ87ulCk3xn8JWS3ROjflmXbcGKQyHBHvxXPInf4ep+T0T5VuuQ21oWsixeA0N7rwTdUvMB6oORzzjRc99akkYvjOLAreZ2CEmuI5VVOsps4v7zlN0ztKLJi0QDgxJ/bjWNtOYqjdZe7Sn/M8ZcR5i4pexun6ygb8c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=WEZoHlmp; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="WEZoHlmp" ARC-Seal: i=1; a=rsa-sha256; t=1741974005; cv=none; d=zohomail.com; s=zohoarc; b=OVx2ZuZb2XbvfWtMGwMg8Yd0k228JvVaahatKEamQAftK+jWRYdQYJQiuZmwj03/+RU9UdJhI0hOGi900yrTgLZuxpk+c52TtBwIMZQXYGX3bJOmrqLj+tntigc07APGB5YBA579ij98U2SEK2U5ZvQLICoyNLDH0e6iYgb/NaI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741974005; 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=QlTpBVrKFp8ajXuiOKOxz/qINTtZfJYc0IqswtnjYwY=; b=Zq8MA0MmwqHgLcIGKFtsBK44nimk5YNtztCbczsCyvBJUMf5qJ9a3HYV04Y5yjFaJGnGn7FPTZSp+IcQ+A6/fvD01CN8DIQJKIhBLr9ETezGiftR2vHKxc0ilI9YaPznsO2/oHQJ7U7J1Zb2YnJrumTzFhTWf0t2oY6QfDX849c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1741974005; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; 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=QlTpBVrKFp8ajXuiOKOxz/qINTtZfJYc0IqswtnjYwY=; b=WEZoHlmpT7Gpb3AMOEo16QBCyqfYyokefO5v5Jlyw1H1P81z8y/Y6X3ebPffM2WX 3KMBELRSMUVrK7tYUY8IAElD9lzHupDodgJqF2iDHJR6lFYQlrC1hsFzc3j3cRiLsIR gPUSFfRaeitpJV4X0Hp6kNK21hHPt93gtXXn0N6M= Received: by mx.zohomail.com with SMTPS id 1741974003843833.6972540225984; Fri, 14 Mar 2025 10:40:03 -0700 (PDT) From: Ariel D'Alessandro To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: boris.brezillon@collabora.com, robh@kernel.org, steven.price@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, kernel@collabora.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, sjoerd@collabora.com, angelogioacchino.delregno@collabora.com, Ariel D'Alessandro Subject: [PATCH v2 2/6] drm/panfrost: Use GPU_MMU_FEATURES_VA_BITS/PA_BITS macros Date: Fri, 14 Mar 2025 14:38:54 -0300 Message-ID: <20250314173858.212264-3-ariel.dalessandro@collabora.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250314173858.212264-1-ariel.dalessandro@collabora.com> References: <20250314173858.212264-1-ariel.dalessandro@collabora.com> 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 done in panthor, define and use these GPU_MMU_FEATURES_* macros, which makes code easier to read and reuse. Signed-off-by: Ariel D'Alessandro Reviewed-by: Boris Brezillon Reviewed-by: Steven Price Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/panfrost/panfrost_mmu.c | 6 ++++-- drivers/gpu/drm/panfrost/panfrost_regs.h | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panf= rost/panfrost_mmu.c index 9e6f198ef5c1b..294f86b3c25e7 100644 --- a/drivers/gpu/drm/panfrost/panfrost_mmu.c +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c @@ -615,6 +615,8 @@ static void panfrost_drm_mm_color_adjust(const struct d= rm_mm_node *node, =20 struct panfrost_mmu *panfrost_mmu_ctx_create(struct panfrost_device *pfdev) { + u32 va_bits =3D GPU_MMU_FEATURES_VA_BITS(pfdev->features.mmu_features); + u32 pa_bits =3D GPU_MMU_FEATURES_PA_BITS(pfdev->features.mmu_features); struct panfrost_mmu *mmu; =20 mmu =3D kzalloc(sizeof(*mmu), GFP_KERNEL); @@ -633,8 +635,8 @@ struct panfrost_mmu *panfrost_mmu_ctx_create(struct pan= frost_device *pfdev) =20 mmu->pgtbl_cfg =3D (struct io_pgtable_cfg) { .pgsize_bitmap =3D SZ_4K | SZ_2M, - .ias =3D FIELD_GET(0xff, pfdev->features.mmu_features), - .oas =3D FIELD_GET(0xff00, pfdev->features.mmu_features), + .ias =3D va_bits, + .oas =3D pa_bits, .coherent_walk =3D pfdev->coherent, .tlb =3D &mmu_tlb_ops, .iommu_dev =3D pfdev->dev, diff --git a/drivers/gpu/drm/panfrost/panfrost_regs.h b/drivers/gpu/drm/pan= frost/panfrost_regs.h index c7bba476ab3f3..b5f279a19a084 100644 --- a/drivers/gpu/drm/panfrost/panfrost_regs.h +++ b/drivers/gpu/drm/panfrost/panfrost_regs.h @@ -16,6 +16,8 @@ #define GROUPS_L2_COHERENT BIT(0) /* Cores groups are l2 coherent */ =20 #define GPU_MMU_FEATURES 0x014 /* (RO) MMU features */ +#define GPU_MMU_FEATURES_VA_BITS(x) ((x) & GENMASK(7, 0)) +#define GPU_MMU_FEATURES_PA_BITS(x) (((x) >> 8) & GENMASK(7, 0)) #define GPU_AS_PRESENT 0x018 /* (RO) Address space slots present */ #define GPU_JS_PRESENT 0x01C /* (RO) Job slots present */ =20 --=20 2.47.2 From nobody Wed Dec 17 19:04:16 2025 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 CA432204F90 for ; Fri, 14 Mar 2025 17:40:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974034; cv=pass; b=TVRB7WyaPFo4iJRgiZlPZfnlXm+nfK7gtcAF5PC/j/cFE51QCf1jEsnlhJBOv0KU8PVeRIMfzAkV9RvACYKV7az6hrTY9TlgoBEl9ObDuvXZDXQgWrYVGQbyasDdU1h8PVtnLu78j7oyRIem7nVx+xD/OKNRYWXJKbWuRQrvzy4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974034; c=relaxed/simple; bh=xoE+KY+CoChZUTXAiQGn3BIJQNZ8oLfYQQHhw3hyYCM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nS2LVk+DBu/vLFg1Wvkk4HjRVoqwAAPKMDK29LnMJL/pHIRUrODTO+RGaw89vZOzZbFQ6bBoro0SlwW6/RdfuQKtOjcsXo4oDht6q2cZ0sA9Votl0nxrpvaHAVWlNumkJTKzOSPmP/rywJMl2w0YCgyXEi2mKHSe566fqlOP11k= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=YjW0o1d+; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="YjW0o1d+" ARC-Seal: i=1; a=rsa-sha256; t=1741974011; cv=none; d=zohomail.com; s=zohoarc; b=laszCL+xymvxUAlHSLmV/VVSrB+qO9n+Pcz2vQfeqj8jyUfYmBHn+GEPljifBtcIPlERWKS7SdmsSNudyS8K8haIVKoeYMNe2kkQMaLC8R2R+LoSTmcGnPquuXwkj/wLiL1r/x38zEvzfLqPgwiQhtQqhY+XbwZZjoP0I7cTX1I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741974011; 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=ue3BpmFyUsYRwD1wWp1a0iuC4FefTH8SxucMqzrgyVg=; b=T6tSgYcC/IEpIuCQaAILw9nsaWqNaqD7ZiYO48MTOYZpELktios50KCKhwii4OCtaMu6fgFktfJtMiefnBNovSQzbTPzsVG0NJa5dEUUIyom/xIMxC5kQBngfYsry/eQXIcvozWJeQZZM2KpGGWRaIPym7kGZRcDxaHakRiWVYY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1741974011; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; 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=ue3BpmFyUsYRwD1wWp1a0iuC4FefTH8SxucMqzrgyVg=; b=YjW0o1d+WXIqjZ6Qfzadvx5imyrCc1RYXHJbNms05xNKdSKZD02i9ONGiXlqxule 7XJ7ONkZesPKSbI4G6vkQUZNgNsn56MUKag+emoo0uipX1pYsFVjPxmoxuWs2tcCb4r iKHgpAfKdaou9ocL5yAqKDZWwx3TsdQ0tG85YeHY= Received: by mx.zohomail.com with SMTPS id 1741974009961643.9425677323535; Fri, 14 Mar 2025 10:40:09 -0700 (PDT) From: Ariel D'Alessandro To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: boris.brezillon@collabora.com, robh@kernel.org, steven.price@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, kernel@collabora.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, sjoerd@collabora.com, angelogioacchino.delregno@collabora.com, Ariel D'Alessandro Subject: [PATCH v2 3/6] drm/panfrost: Set HW_FEATURE_AARCH64_MMU feature flag on Bifrost models Date: Fri, 14 Mar 2025 14:38:55 -0300 Message-ID: <20250314173858.212264-4-ariel.dalessandro@collabora.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250314173858.212264-1-ariel.dalessandro@collabora.com> References: <20250314173858.212264-1-ariel.dalessandro@collabora.com> 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" Set this feature flag on all Mali Bifrost platforms as the MMU supports AARCH64 4K page table format. Signed-off-by: Ariel D'Alessandro Reviewed-by: Boris Brezillon Reviewed-by: Steven Price Reviewed-by: AngeloGioacchino Del Regno --- drivers/gpu/drm/panfrost/panfrost_features.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/gpu/drm/panfrost/panfrost_features.h b/drivers/gpu/drm= /panfrost/panfrost_features.h index 7ed0cd3ea2d4c..52f9d69f6db9d 100644 --- a/drivers/gpu/drm/panfrost/panfrost_features.h +++ b/drivers/gpu/drm/panfrost/panfrost_features.h @@ -54,6 +54,7 @@ enum panfrost_hw_feature { BIT_ULL(HW_FEATURE_THREAD_GROUP_SPLIT) | \ BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ + BIT_ULL(HW_FEATURE_AARCH64_MMU) | \ BIT_ULL(HW_FEATURE_COHERENCY_REG)) =20 #define hw_features_g72 (\ @@ -64,6 +65,7 @@ enum panfrost_hw_feature { BIT_ULL(HW_FEATURE_FLUSH_REDUCTION) | \ BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ + BIT_ULL(HW_FEATURE_AARCH64_MMU) | \ BIT_ULL(HW_FEATURE_COHERENCY_REG)) =20 #define hw_features_g51 hw_features_g72 @@ -77,6 +79,7 @@ enum panfrost_hw_feature { BIT_ULL(HW_FEATURE_PROTECTED_MODE) | \ BIT_ULL(HW_FEATURE_PROTECTED_DEBUG_MODE) | \ BIT_ULL(HW_FEATURE_IDVS_GROUP_SIZE) | \ + BIT_ULL(HW_FEATURE_AARCH64_MMU) | \ BIT_ULL(HW_FEATURE_COHERENCY_REG)) =20 #define hw_features_g76 (\ --=20 2.47.2 From nobody Wed Dec 17 19:04:16 2025 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 633B3204598 for ; Fri, 14 Mar 2025 17:40:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974041; cv=pass; b=IM8MEtzI2xHmGUo2L1/VBz7WrYcHp9YRCu1gkYdYGx5apYeI6U4tTZfQpcOgJF0q97xDahXXfk6GHYZiCn0vMBDxfTJAaOODXjSucVuJV0w1FZnhpB2THsY7qduOBJAt4fUQUEHND1eAXN1pviTmHrbRGG8931DMcFaRpwKF0Wc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974041; c=relaxed/simple; bh=aFDu5UxocVz7ukL+R7lbaRrtgbeZqugh0zCcUMDH1PM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Jfb5RiIMMQQqO9B0miy8FpQ0pBokZJjRgdilT5kYmCPg7ahQ4JGaS8lEZqauaIq7UA24l3cuk7WpPMvnehie6X12JfzgyhJJfARL5VS14qf7yHlaUaJgn19jgvEGBHS07UOLSTkylNaoAppByu3V/dUo8e4JVsCw+DkUYUZquiY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=IOZ1yf58; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="IOZ1yf58" ARC-Seal: i=1; a=rsa-sha256; t=1741974017; cv=none; d=zohomail.com; s=zohoarc; b=GeAzO45lCTLvNchk7f/rl+GLhRnFB47j8vWFgKStuwZ85Br3pAal/KiCejRg93ET9JIK4IrRuu5sZNFAmRORYdCXU1fizfSoaezjVgPmhFq32jYcSE0OzDE3CxErbpmF0ZXdw/bEay9zZmphrGrKvg5ih3O6CykQ43F2UPIUb0c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741974017; 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=+FgnMrE9JObDtE83Smi5cKpv1/oLmKp0/6Wpy6Wa3ro=; b=XPPa0BHTYR74SjaoNDTHvYcj+3Fp6JyvXv7076OuecuoOPCkAggXSakFhKAjpNIc11cTUZy0x5OkFLb/r2TamJlWY8wu4oYUoKNL/oz1g4x8txAqDjCuCqSCmbN8y6XPsuG8+QxlFCTjJoE1PBo9e6upnqfx0aqTEhQu+0vBGCU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1741974017; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; 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=+FgnMrE9JObDtE83Smi5cKpv1/oLmKp0/6Wpy6Wa3ro=; b=IOZ1yf58YUZYU24+ZHLqNjHfZ+3VRpEAnyiq6lf/YnDKfO6nS/wYgBfhgEFN0dkq pnTJGwvRdKO0/Y6mFdTWAmVnYOSEoe7OUaZ/jStbhgnV9GFqvmQKilO+sue+WGAQP8e YLR8LIwUu71lHuG/wW5mS96C/2BA26r9Jafm4AjY= Received: by mx.zohomail.com with SMTPS id 1741974015544215.19897470066087; Fri, 14 Mar 2025 10:40:15 -0700 (PDT) From: Ariel D'Alessandro To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: boris.brezillon@collabora.com, robh@kernel.org, steven.price@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, kernel@collabora.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, sjoerd@collabora.com, angelogioacchino.delregno@collabora.com, Ariel D'Alessandro Subject: [PATCH v2 4/6] drm/panfrost: Add support for AARCH64_4K page table format Date: Fri, 14 Mar 2025 14:38:56 -0300 Message-ID: <20250314173858.212264-5-ariel.dalessandro@collabora.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250314173858.212264-1-ariel.dalessandro@collabora.com> References: <20250314173858.212264-1-ariel.dalessandro@collabora.com> 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" Currently, Panfrost only supports MMU configuration in "LEGACY" (as Bifrost calls it) mode, a (modified) version of LPAE "Large Physical Address Extension", which in Linux we've called "mali_lpae". This commit adds support for conditionally enabling AARCH64_4K page table format. To achieve that, a "GPU optional quirks" field was added to `struct panfrost_features` with the related flag. Note that, in order to enable AARCH64_4K mode, the GPU variant must have the HW_FEATURE_AARCH64_MMU feature flag present. Signed-off-by: Ariel D'Alessandro Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Boris Brezillon --- drivers/gpu/drm/panfrost/panfrost_device.h | 16 +++ drivers/gpu/drm/panfrost/panfrost_mmu.c | 136 +++++++++++++++++++-- drivers/gpu/drm/panfrost/panfrost_regs.h | 34 ++++++ 3 files changed, 177 insertions(+), 9 deletions(-) diff --git a/drivers/gpu/drm/panfrost/panfrost_device.h b/drivers/gpu/drm/p= anfrost/panfrost_device.h index cffcb0ac7c111..ad95f2ed31d9a 100644 --- a/drivers/gpu/drm/panfrost/panfrost_device.h +++ b/drivers/gpu/drm/panfrost/panfrost_device.h @@ -42,6 +42,14 @@ enum panfrost_gpu_pm { GPU_PM_VREG_OFF, }; =20 +/** + * enum panfrost_gpu_quirks - GPU optional quirks + * @GPU_QUIRK_FORCE_AARCH64_PGTABLE: Use AARCH64_4K page table format + */ +enum panfrost_gpu_quirks { + GPU_QUIRK_FORCE_AARCH64_PGTABLE, +}; + struct panfrost_features { u16 id; u16 revision; @@ -95,6 +103,9 @@ struct panfrost_compatible { =20 /* Allowed PM features */ u8 pm_features; + + /* GPU configuration quirks */ + u8 gpu_quirks; }; =20 struct panfrost_device { @@ -162,6 +173,11 @@ struct panfrost_mmu { int as; atomic_t as_count; struct list_head list; + struct { + u64 transtab; + u64 memattr; + u64 transcfg; + } cfg; }; =20 struct panfrost_engine_usage { diff --git a/drivers/gpu/drm/panfrost/panfrost_mmu.c b/drivers/gpu/drm/panf= rost/panfrost_mmu.c index 294f86b3c25e7..f24c23e1f67b8 100644 --- a/drivers/gpu/drm/panfrost/panfrost_mmu.c +++ b/drivers/gpu/drm/panfrost/panfrost_mmu.c @@ -26,6 +26,48 @@ #define mmu_write(dev, reg, data) writel(data, dev->iomem + reg) #define mmu_read(dev, reg) readl(dev->iomem + reg) =20 +static u64 mair_to_memattr(u64 mair, bool coherent) +{ + u64 memattr =3D 0; + u32 i; + + for (i =3D 0; i < 8; i++) { + u8 in_attr =3D mair >> (8 * i), out_attr; + u8 outer =3D in_attr >> 4, inner =3D in_attr & 0xf; + + /* For caching to be enabled, inner and outer caching policy + * have to be both write-back, if one of them is write-through + * or non-cacheable, we just choose non-cacheable. Device + * memory is also translated to non-cacheable. + */ + if (!(outer & 3) || !(outer & 4) || !(inner & 4)) { + out_attr =3D AS_MEMATTR_AARCH64_INNER_OUTER_NC | + AS_MEMATTR_AARCH64_SH_MIDGARD_INNER | + AS_MEMATTR_AARCH64_INNER_ALLOC_EXPL(false, false); + } else { + out_attr =3D AS_MEMATTR_AARCH64_INNER_OUTER_WB | + AS_MEMATTR_AARCH64_INNER_ALLOC_EXPL(inner & 1, inner & 2); + /* Use SH_MIDGARD_INNER mode when device isn't coherent, + * so SH_IS, which is used when IOMMU_CACHE is set, maps + * to Mali's internal-shareable mode. As per the Mali + * Spec, inner and outer-shareable modes aren't allowed + * for WB memory when coherency is disabled. + * Use SH_CPU_INNER mode when coherency is enabled, so + * that SH_IS actually maps to the standard definition of + * inner-shareable. + */ + if (!coherent) + out_attr |=3D AS_MEMATTR_AARCH64_SH_MIDGARD_INNER; + else + out_attr |=3D AS_MEMATTR_AARCH64_SH_CPU_INNER; + } + + memattr |=3D (u64)out_attr << (8 * i); + } + + return memattr; +} + static int wait_ready(struct panfrost_device *pfdev, u32 as_nr) { int ret; @@ -124,9 +166,9 @@ static int mmu_hw_do_operation(struct panfrost_device *= pfdev, static void panfrost_mmu_enable(struct panfrost_device *pfdev, struct panf= rost_mmu *mmu) { int as_nr =3D mmu->as; - struct io_pgtable_cfg *cfg =3D &mmu->pgtbl_cfg; - u64 transtab =3D cfg->arm_mali_lpae_cfg.transtab; - u64 memattr =3D cfg->arm_mali_lpae_cfg.memattr; + u64 transtab =3D mmu->cfg.transtab; + u64 memattr =3D mmu->cfg.memattr; + u64 transcfg =3D mmu->cfg.transcfg; =20 mmu_hw_do_operation_locked(pfdev, as_nr, 0, ~0ULL, AS_COMMAND_FLUSH_MEM); =20 @@ -139,6 +181,9 @@ static void panfrost_mmu_enable(struct panfrost_device = *pfdev, struct panfrost_m mmu_write(pfdev, AS_MEMATTR_LO(as_nr), lower_32_bits(memattr)); mmu_write(pfdev, AS_MEMATTR_HI(as_nr), upper_32_bits(memattr)); =20 + mmu_write(pfdev, AS_TRANSCFG_LO(as_nr), lower_32_bits(transcfg)); + mmu_write(pfdev, AS_TRANSCFG_HI(as_nr), upper_32_bits(transcfg)); + write_cmd(pfdev, as_nr, AS_COMMAND_UPDATE); } =20 @@ -152,9 +197,66 @@ static void panfrost_mmu_disable(struct panfrost_devic= e *pfdev, u32 as_nr) mmu_write(pfdev, AS_MEMATTR_LO(as_nr), 0); mmu_write(pfdev, AS_MEMATTR_HI(as_nr), 0); =20 + mmu_write(pfdev, AS_TRANSCFG_LO(as_nr), AS_TRANSCFG_ADRMODE_UNMAPPED); + mmu_write(pfdev, AS_TRANSCFG_HI(as_nr), 0); + write_cmd(pfdev, as_nr, AS_COMMAND_UPDATE); } =20 +static int mmu_cfg_init_mali_lpae(struct panfrost_mmu *mmu) +{ + struct io_pgtable_cfg *pgtbl_cfg =3D &mmu->pgtbl_cfg; + + /* TODO: The following fields are duplicated between the MMU and Page + * Table config structs. Ideally, should be kept in one place. + */ + mmu->cfg.transtab =3D pgtbl_cfg->arm_mali_lpae_cfg.transtab; + mmu->cfg.memattr =3D pgtbl_cfg->arm_mali_lpae_cfg.memattr; + mmu->cfg.transcfg =3D AS_TRANSCFG_ADRMODE_LEGACY; + + return 0; +} + +static int mmu_cfg_init_aarch64_4k(struct panfrost_mmu *mmu) +{ + struct io_pgtable_cfg *pgtbl_cfg =3D &mmu->pgtbl_cfg; + struct panfrost_device *pfdev =3D mmu->pfdev; + + if (drm_WARN_ON(pfdev->ddev, pgtbl_cfg->arm_lpae_s1_cfg.ttbr & + ~AS_TRANSTAB_AARCH64_4K_ADDR_MASK)) + return -EINVAL; + + mmu->cfg.transtab =3D pgtbl_cfg->arm_lpae_s1_cfg.ttbr; + + mmu->cfg.memattr =3D mair_to_memattr(pgtbl_cfg->arm_lpae_s1_cfg.mair, + pgtbl_cfg->coherent_walk); + + mmu->cfg.transcfg =3D AS_TRANSCFG_PTW_MEMATTR_WB | + AS_TRANSCFG_PTW_RA | + AS_TRANSCFG_ADRMODE_AARCH64_4K | + AS_TRANSCFG_INA_BITS(55 - pgtbl_cfg->ias); + if (pgtbl_cfg->coherent_walk) + mmu->cfg.transcfg |=3D AS_TRANSCFG_PTW_SH_OS; + + return 0; +} + +static int panfrost_mmu_cfg_init(struct panfrost_mmu *mmu, + enum io_pgtable_fmt fmt) +{ + struct panfrost_device *pfdev =3D mmu->pfdev; + + switch (fmt) { + case ARM_64_LPAE_S1: + return mmu_cfg_init_aarch64_4k(mmu); + case ARM_MALI_LPAE: + return mmu_cfg_init_mali_lpae(mmu); + default: + /* This should never happen */ + return drm_WARN_ON(pfdev->ddev, -EINVAL); + } +} + u32 panfrost_mmu_as_get(struct panfrost_device *pfdev, struct panfrost_mmu= *mmu) { int as; @@ -618,6 +720,18 @@ struct panfrost_mmu *panfrost_mmu_ctx_create(struct pa= nfrost_device *pfdev) u32 va_bits =3D GPU_MMU_FEATURES_VA_BITS(pfdev->features.mmu_features); u32 pa_bits =3D GPU_MMU_FEATURES_PA_BITS(pfdev->features.mmu_features); struct panfrost_mmu *mmu; + enum io_pgtable_fmt fmt; + + if (pfdev->comp->gpu_quirks & BIT(GPU_QUIRK_FORCE_AARCH64_PGTABLE)) { + if (!panfrost_has_hw_feature(pfdev, HW_FEATURE_AARCH64_MMU)) { + dev_err_once(pfdev->dev, + "AARCH64_4K page table not supported\n"); + return ERR_PTR(-EINVAL); + } + fmt =3D ARM_64_LPAE_S1; + } else { + fmt =3D ARM_MALI_LPAE; + } =20 mmu =3D kzalloc(sizeof(*mmu), GFP_KERNEL); if (!mmu) @@ -642,16 +756,20 @@ struct panfrost_mmu *panfrost_mmu_ctx_create(struct p= anfrost_device *pfdev) .iommu_dev =3D pfdev->dev, }; =20 - mmu->pgtbl_ops =3D alloc_io_pgtable_ops(ARM_MALI_LPAE, &mmu->pgtbl_cfg, - mmu); - if (!mmu->pgtbl_ops) { - kfree(mmu); - return ERR_PTR(-EINVAL); - } + mmu->pgtbl_ops =3D alloc_io_pgtable_ops(fmt, &mmu->pgtbl_cfg, mmu); + if (!mmu->pgtbl_ops) + goto err_free_mmu; + + if (panfrost_mmu_cfg_init(mmu, fmt)) + goto err_free_mmu; =20 kref_init(&mmu->refcount); =20 return mmu; + +err_free_mmu: + kfree(mmu); + return ERR_PTR(-EINVAL); } =20 static const char *access_type_name(struct panfrost_device *pfdev, diff --git a/drivers/gpu/drm/panfrost/panfrost_regs.h b/drivers/gpu/drm/pan= frost/panfrost_regs.h index b5f279a19a084..2b8f1617b8369 100644 --- a/drivers/gpu/drm/panfrost/panfrost_regs.h +++ b/drivers/gpu/drm/panfrost/panfrost_regs.h @@ -301,6 +301,17 @@ #define AS_TRANSTAB_HI(as) (MMU_AS(as) + 0x04) /* (RW) Translation Table = Base Address for address space n, high word */ #define AS_MEMATTR_LO(as) (MMU_AS(as) + 0x08) /* (RW) Memory attributes f= or address space n, low word. */ #define AS_MEMATTR_HI(as) (MMU_AS(as) + 0x0C) /* (RW) Memory attributes f= or address space n, high word. */ +#define AS_MEMATTR_AARCH64_INNER_ALLOC_IMPL (2 << 2) +#define AS_MEMATTR_AARCH64_INNER_ALLOC_EXPL(w, r) ((3 << 2) | \ + ((w) ? BIT(0) : 0) | \ + ((r) ? BIT(1) : 0)) +#define AS_MEMATTR_AARCH64_SH_MIDGARD_INNER (0 << 4) +#define AS_MEMATTR_AARCH64_SH_CPU_INNER (1 << 4) +#define AS_MEMATTR_AARCH64_SH_CPU_INNER_SHADER_COH (2 << 4) +#define AS_MEMATTR_AARCH64_SHARED (0 << 6) +#define AS_MEMATTR_AARCH64_INNER_OUTER_NC (1 << 6) +#define AS_MEMATTR_AARCH64_INNER_OUTER_WB (2 << 6) +#define AS_MEMATTR_AARCH64_FAULT (3 << 6) #define AS_LOCKADDR_LO(as) (MMU_AS(as) + 0x10) /* (RW) Lock region addres= s for address space n, low word */ #define AS_LOCKADDR_HI(as) (MMU_AS(as) + 0x14) /* (RW) Lock region addres= s for address space n, high word */ #define AS_COMMAND(as) (MMU_AS(as) + 0x18) /* (WO) MMU command register = for address space n */ @@ -311,6 +322,24 @@ /* Additional Bifrost AS registers */ #define AS_TRANSCFG_LO(as) (MMU_AS(as) + 0x30) /* (RW) Translation table = configuration for address space n, low word */ #define AS_TRANSCFG_HI(as) (MMU_AS(as) + 0x34) /* (RW) Translation table = configuration for address space n, high word */ +#define AS_TRANSCFG_ADRMODE_LEGACY (0 << 0) +#define AS_TRANSCFG_ADRMODE_UNMAPPED (1 << 0) +#define AS_TRANSCFG_ADRMODE_IDENTITY (2 << 0) +#define AS_TRANSCFG_ADRMODE_AARCH64_4K (6 << 0) +#define AS_TRANSCFG_ADRMODE_AARCH64_64K (8 << 0) +#define AS_TRANSCFG_INA_BITS(x) ((x) << 6) +#define AS_TRANSCFG_OUTA_BITS(x) ((x) << 14) +#define AS_TRANSCFG_SL_CONCAT BIT(22) +#define AS_TRANSCFG_PTW_MEMATTR_NC (1 << 24) +#define AS_TRANSCFG_PTW_MEMATTR_WB (2 << 24) +#define AS_TRANSCFG_PTW_SH_NS (0 << 28) +#define AS_TRANSCFG_PTW_SH_OS (2 << 28) +#define AS_TRANSCFG_PTW_SH_IS (3 << 28) +#define AS_TRANSCFG_PTW_RA BIT(30) +#define AS_TRANSCFG_DISABLE_HIER_AP BIT(33) +#define AS_TRANSCFG_DISABLE_AF_FAULT BIT(34) +#define AS_TRANSCFG_WXN BIT(35) +#define AS_TRANSCFG_XREADABLE BIT(36) #define AS_FAULTEXTRA_LO(as) (MMU_AS(as) + 0x38) /* (RO) Secondary fault = address for address space n, low word */ #define AS_FAULTEXTRA_HI(as) (MMU_AS(as) + 0x3C) /* (RO) Secondary fault = address for address space n, high word */ =20 @@ -326,6 +355,11 @@ #define AS_TRANSTAB_LPAE_READ_INNER BIT(2) #define AS_TRANSTAB_LPAE_SHARE_OUTER BIT(4) =20 +/* + * Begin AARCH64_4K MMU TRANSTAB register values + */ +#define AS_TRANSTAB_AARCH64_4K_ADDR_MASK 0xfffffffffffffff0 + #define AS_STATUS_AS_ACTIVE 0x01 =20 #define AS_FAULTSTATUS_ACCESS_TYPE_MASK (0x3 << 8) --=20 2.47.2 From nobody Wed Dec 17 19:04:16 2025 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 78428204684 for ; Fri, 14 Mar 2025 17:40:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974047; cv=pass; b=ELvhXIwOiS2ACqgsnEIQHETzaRJLxfhdJsoOD+oY42q1tpygvlz41kYMVCcRC9wajKPpFfrSovMtXw2ZRYEiuEhqwI3NhPvMALli5xbSzS11siXMH0FzKwwL2ZPawBQKZJkCVcLbTbFjDXawWUWvJj0NZjPqcCst2LIF8t22B/s= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974047; c=relaxed/simple; bh=+b4U3LJz1vB7D0UDwstEPbmwTlT00zWqYKS6INfK70o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GQ0HgUOUWBgaozL3+jyAKYiOgMiA8+6tUUfdLhy+4Lp6VKlOlYIf8Gxm1tdJDAmgPBTwNJRKmO4TgzzRM3iRvtOAUq0eDTB+cLDaDlsoF5GvaeWv4Hvk48k1aUwnfRFjJp8ip4izPuSwYX26+aZh0cZwIbj7BafTZGgC104U9xw= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=hMgiWr2b; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="hMgiWr2b" ARC-Seal: i=1; a=rsa-sha256; t=1741974023; cv=none; d=zohomail.com; s=zohoarc; b=bJbiAG9LSQ+x4bOHoIC9xDu2iOeJH1hafofDoR9AY4jfRVO83OwEW6TX870dj7MigH/+WgpvcAjKC/nKkf+SXslv7RZXEhIdzR6LFZ7bffyN/I0kle/TNkxg7RYkyovZ3CTI49236zgSgEZIyIZNHngsijEENnOQFHSBK3qQQFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741974023; 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=S9mLEJ4wU0OThnD85l5/tcj+3b+DKxl3RKGucACMmN8=; b=P8i+sAcjqtFV42513VQsmKyecq4jFUZpS+Q246nGlzdpSTFblTa4SDdgf7OiBXKcuyZsOeV9CNKUUkrnMgCWN/baLSEM0BSAmcNZYavjuZtds8caki355n+QE3+3VHHW7P9C54lKD3aJghVd+M/uw7ugAlS5N0L5R3IuVjQ8sHE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1741974023; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; 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=S9mLEJ4wU0OThnD85l5/tcj+3b+DKxl3RKGucACMmN8=; b=hMgiWr2byfyTUNQqTo9ftHBizACLWwxnGYUWkNihyn8ow/y0TbC9Wc6L/TGZRgj7 MmbJ2HI0TRGzCql4i0Hs8VP5+/koB8gPmRPJxCd8LtD+6XiJPZILkZEaKKZTo0QMegc D5z6nnJ29+YP264ODL+TKMcfOY6N+M62xeXOuJ/E= Received: by mx.zohomail.com with SMTPS id 174197402139047.56598304813804; Fri, 14 Mar 2025 10:40:21 -0700 (PDT) From: Ariel D'Alessandro To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: boris.brezillon@collabora.com, robh@kernel.org, steven.price@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, kernel@collabora.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, sjoerd@collabora.com, angelogioacchino.delregno@collabora.com, Ariel D'Alessandro Subject: [PATCH v2 5/6] drm/panfrost: Force AARCH64_4K page table format on MediaTek MT8188 Date: Fri, 14 Mar 2025 14:38:57 -0300 Message-ID: <20250314173858.212264-6-ariel.dalessandro@collabora.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250314173858.212264-1-ariel.dalessandro@collabora.com> References: <20250314173858.212264-1-ariel.dalessandro@collabora.com> 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" MediaTek MT8188 SoC has an ARM Mali-G57 MC3 GPU (Valhall-JM), which constantly faults with the current panfrost support. For instance, running `glmark2-es2-drm` benchmark test: ``` [ 79.617461] panfrost 13000000.gpu: js fault, js=3D1, status=3DJOB_BUS_FA= ULT, head=3D0xaadc380, tail=3D0xaadc380 [ 80.119811] panfrost 13000000.gpu: gpu sched timeout, js=3D0, config=3D0= x7300, status=3D0x58, head=3D0xaaca180, tail=3D0xaaca180, sched_job=3D00000= 0002fd03ccc [ 80.129083] panfrost 13000000.gpu: Unhandled Page fault in AS0 at VA 0x0= 000000000000000 [ 80.129083] Reason: TODO [ 80.129083] raw fault status: 0x1C2 [ 80.129083] decoded fault status: SLAVE FAULT [ 80.129083] exception type 0xC2: TRANSLATION_FAULT_2 [ 80.129083] access type 0x1: EXECUTE [ 80.129083] source id 0x0 ``` Note that current panfrost mode (Mali LPAE - LEGACY) only allows to specify write-cache or implementation-defined as the caching policy, probably not matching the right configuration. As depicted in the source code: drivers/iommu/io-pgtable-arm.c: ``` * MEMATTR: Mali has no actual notion of a non-cacheable type, so the * best we can do is mimic the out-of-tree driver and hope that the * "implementation-defined caching policy" is good enough... ``` Now that Panfrost supports AARCH64_4K page table format, let's enable it on Mediatek MT8188 and configure the cache/shareability policies properly. Signed-off-by: Ariel D'Alessandro Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Boris Brezillon --- drivers/gpu/drm/panfrost/panfrost_drv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panf= rost/panfrost_drv.c index 0f3935556ac76..e854f290858f9 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -824,6 +824,7 @@ static const struct panfrost_compatible mediatek_mt8188= _data =3D { .num_pm_domains =3D ARRAY_SIZE(mediatek_mt8183_pm_domains), .pm_domain_names =3D mediatek_mt8183_pm_domains, .pm_features =3D BIT(GPU_PM_CLK_DIS) | BIT(GPU_PM_VREG_OFF), + .gpu_quirks =3D BIT(GPU_QUIRK_FORCE_AARCH64_PGTABLE), }; =20 static const char * const mediatek_mt8192_supplies[] =3D { "mali", NULL }; --=20 2.47.2 From nobody Wed Dec 17 19:04:16 2025 Received: from sender4-pp-f112.zoho.com (sender4-pp-f112.zoho.com [136.143.188.112]) (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 C53DA204C14 for ; Fri, 14 Mar 2025 17:40:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=136.143.188.112 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974053; cv=pass; b=sxQA3bInRZn6xepwMVXIPdiVnBv6hGu54/Pa/7gI04/y0prN6SGmcv+I3oaeWfQaj272GpLZhtRxWfrlZZzKNjX8XDVL79daWrREVsB2un8RETJxCCxKwYnvy0LArysML9KSCIRtGGrpwImuH2pkTnCzgCl6KFiQWe2kaTKsSMc= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1741974053; c=relaxed/simple; bh=1BwIRZC40VMZEZSyJIll031+muDxKnQdexYIW1265us=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=EpvZvC17RoelcgnmP694vctaIcU/LKvlMg38MK8cGWUmY5h+PVJA+fV92T9vlczb2skdukpgk1xtBu920K+KURJhidrz3YZsjsCkBPRETMSMKJOrB7ygUJmNTYJH3QJyjsheKTI6qruwXOzuCWlqDh9dIrMuzN5pOQ1Hqrw6hC0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b=AMkNsEAW; arc=pass smtp.client-ip=136.143.188.112 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=collabora.com header.i=ariel.dalessandro@collabora.com header.b="AMkNsEAW" ARC-Seal: i=1; a=rsa-sha256; t=1741974029; cv=none; d=zohomail.com; s=zohoarc; b=RNfoLYrPcM5k+wBec+Ms/i559bYXoXcUmmz1PNU5mjFxjHmbsphVyTukDQBetPUpXWTT0v5mAc1q63mq3RFdn92Yd4JRiOkJKmVQWhzSy6pd4zSmew00j14JVbxBzawC6fQtNIm0cQ7Erg2fL0QT6nqh+gU+SejTVgxLPqK09Dg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1741974029; 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=8buXX1p3SURBMsTZcHdbZSaeDVkNSZ0ppj4rFscaaHQ=; b=DOCwy5MrXkFSoLugFoUydcHQU/JPbVHOe9XWTSkRq8PkBpogPYe8CREedZJz5HYRmNWQ12q4New14Si8IZLRWpV5ASsPPdFcnrY8vkVA7AuE4yy8W0QqE6nwYZtdRKjGjZIGTik3H2/zBW+PlQYpR/AOGFy+idQyYGPs6iChwBY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=collabora.com; spf=pass smtp.mailfrom=ariel.dalessandro@collabora.com; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1741974029; s=zohomail; d=collabora.com; i=ariel.dalessandro@collabora.com; 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=8buXX1p3SURBMsTZcHdbZSaeDVkNSZ0ppj4rFscaaHQ=; b=AMkNsEAWcF7JhcLYqecczRzn9fdLEf+3Eo0YksMngnTWgXanMox8HPLGbV7w0No4 zzqcH5J2U/s5DYzDQqBEdtbYgkdIIkk1LSdOKeaTh5DHUpt1F7TyZBJHbZPF2RLikjQ TvAfwEpwQpeuxVzOtUlMCjBieFNpUCHnHLMYTnas= Received: by mx.zohomail.com with SMTPS id 1741974027158733.9448801872073; Fri, 14 Mar 2025 10:40:27 -0700 (PDT) From: Ariel D'Alessandro To: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Cc: boris.brezillon@collabora.com, robh@kernel.org, steven.price@arm.com, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, kernel@collabora.com, linux-mediatek@lists.infradead.org, linux-arm-kernel@lists.infradead.org, sjoerd@collabora.com, angelogioacchino.delregno@collabora.com, Ariel D'Alessandro Subject: [PATCH v2 6/6] drm/panfrost: Force AARCH64_4K page table format on MediaTek MT8192 Date: Fri, 14 Mar 2025 14:38:58 -0300 Message-ID: <20250314173858.212264-7-ariel.dalessandro@collabora.com> X-Mailer: git-send-email 2.47.2 In-Reply-To: <20250314173858.212264-1-ariel.dalessandro@collabora.com> References: <20250314173858.212264-1-ariel.dalessandro@collabora.com> 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" MediaTek MT8192 SoC has an ARM Mali-G57 MC5 GPU (Valhall-JM). Now that Panfrost supports AARCH64_4K page table format, let's enable it on this SoC. Running glmark2-es2-drm [0] benchmark, reported the same performance score on both modes Mali LPAE (LEGACY) vs. AARCH64_4K, before and after this commit. Tested on a Mediatek (MT8395) Genio 1200 EVK board. [0] https://github.com/glmark2/glmark2 Signed-off-by: Ariel D'Alessandro Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Boris Brezillon --- drivers/gpu/drm/panfrost/panfrost_drv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpu/drm/panfrost/panfrost_drv.c b/drivers/gpu/drm/panf= rost/panfrost_drv.c index e854f290858f9..ef30d314b2281 100644 --- a/drivers/gpu/drm/panfrost/panfrost_drv.c +++ b/drivers/gpu/drm/panfrost/panfrost_drv.c @@ -836,6 +836,7 @@ static const struct panfrost_compatible mediatek_mt8192= _data =3D { .num_pm_domains =3D ARRAY_SIZE(mediatek_mt8192_pm_domains), .pm_domain_names =3D mediatek_mt8192_pm_domains, .pm_features =3D BIT(GPU_PM_CLK_DIS) | BIT(GPU_PM_VREG_OFF), + .gpu_quirks =3D BIT(GPU_QUIRK_FORCE_AARCH64_PGTABLE), }; =20 static const struct of_device_id dt_match[] =3D { --=20 2.47.2