From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100750+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100750+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124008; cv=none; d=zohomail.com; s=zohoarc; b=dqmxE0EHCAhJK4ZXWgjObbHTVaB6EmvONMCsiq2yw0LUU7MUOzjm4xvnzRE1Mb/s2xF99AJvof314MjlJZBhV0/DM91t/XhOSKFGgGbxsDyNW1LMxkPPqeVyZTl1/OIX/NU/D73WvQQBqU7xMm56CwIn+t3uPjDSkuz8PVoIHUE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124008; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=8/BAh/i9vvG9DwSX/wD/iLUC/dwEqc2DQVpn7WcQz6w=; b=DYpFIB7cjEHQCaWjKHPtgyRtSa1LWvjoKwf/sUIXahsPf6CnU3955vQoUOJYHotASia5vawpBMmxvhSDqmKPAKcAFJ/V3XYHXVe26d5EWGNqDKTdVtJQFMOwINPmPo65dxCAyzCfk8OhedKUEW4n59liv7Ia5T8EHGczp2dWchM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100750+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678124008783972.6643330277027; Mon, 6 Mar 2023 09:33:28 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id FDQVYY1788612xAOtWXHnZtX; Mon, 06 Mar 2023 09:33:28 -0800 X-Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) by mx.groups.io with SMTP id smtpd.web10.1077.1678124007835288108 for ; Mon, 06 Mar 2023 09:33:27 -0800 X-Received: by mail-pf1-f177.google.com with SMTP id cp12so6337267pfb.5 for ; Mon, 06 Mar 2023 09:33:27 -0800 (PST) X-Gm-Message-State: Zv8NRRi5dRzOKtenocdAXFiCx1787277AA= X-Google-Smtp-Source: AK7set+HFkI72Ysok/kul+miG8KZT6f+BBeQ2g7Ick8tzbCpt1iPkkyeNuFubb4MIVDsZf/aP5ZcYw== X-Received: by 2002:a62:6416:0:b0:593:ebc7:a6d2 with SMTP id y22-20020a626416000000b00593ebc7a6d2mr11743617pfb.21.1678124006923; Mon, 06 Mar 2023 09:33:26 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:26 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 1/7] MdePkg/BaseLib: RISC-V: Support getting satp register value Date: Mon, 6 Mar 2023 09:33:10 -0800 Message-Id: <20230306173316.10319-2-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124008; bh=BL/ICGmb9NoAn96hHcvtDcKKVwk6rZ3YSg7naYtdNJk=; h=Cc:Date:From:Reply-To:Subject:To; b=bpwV+Eq027M6AznhzelUkowQXG+dEE8ikiMCysulwxQauNL5AqIBM4bW4TFNBF8PTZ/ mLgTcoV3RZgX1kOR8r5uvnrdSGqU4WqEOfzuGu9LxFy063OsTu4QSksWkkeGQmkadSEBq IS3vRASTGFwDuoaymvfzksmcyg7ZmAebdBM= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124009644100003 Content-Type: text/plain; charset="utf-8" Add an API to retrieve satp register value. Signed-off-by: Tuan Phan --- MdePkg/Include/Library/BaseLib.h | 5 +++++ MdePkg/Library/BaseLib/RiscV64/RiscVMmu.S | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/MdePkg/Include/Library/BaseLib.h b/MdePkg/Include/Library/Base= Lib.h index 8f2df76c29a3..5d7067ee854e 100644 --- a/MdePkg/Include/Library/BaseLib.h +++ b/MdePkg/Include/Library/BaseLib.h @@ -181,6 +181,11 @@ RiscVSetSupervisorAddressTranslationRegister ( IN UINT64 ); =20 +UINT64 +RiscVGetSupervisorAddressTranslationRegister ( + VOID + ); + UINT64 RiscVReadTimer ( VOID diff --git a/MdePkg/Library/BaseLib/RiscV64/RiscVMmu.S b/MdePkg/Library/Bas= eLib/RiscV64/RiscVMmu.S index ac8f92f38aed..c9cf60c1664b 100644 --- a/MdePkg/Library/BaseLib/RiscV64/RiscVMmu.S +++ b/MdePkg/Library/BaseLib/RiscV64/RiscVMmu.S @@ -21,3 +21,11 @@ ASM_FUNC (RiscVSetSupervisorAddressTranslationRegister) csrw CSR_SATP, a0 ret + +// +// Get the value of Supervisor Address Translation and +// Protection Register. +// +ASM_FUNC (RiscVGetSupervisorAddressTranslationRegister) + csrr a0, CSR_SATP + ret --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100750): https://edk2.groups.io/g/devel/message/100750 Mute This Topic: https://groups.io/mt/97430548/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100751+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100751+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124009; cv=none; d=zohomail.com; s=zohoarc; b=FIaZvCpvNElm+RTrByN3NRbnX4WIc2oHzTf0agXvdHlZAyiKOyDC9D272O9hWPpgiWIlCoLdm6jpV2Ruc8POb0EQ7MNuiVXHBLhEEZhrVwgaF2XGBXjTKYY3d5XkDM5//ZhW7shT4AxhbgUOKEdDuPn9iJqKaU8yd8fxdz3TD8A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124009; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=TeKzZ7NgKx8Xipxh7I0pCHu0fpLpE7bW6a9x5CWGxq0=; b=SYH4uc37NXFvRyGUDbE4JyawdHMMKKxGqmp0QwN6iNj5FycizbWCtx241VBeds+JvsuLHjjxs4hvlWgLvYx5UrxT/y8IeS2ZNNyXXRztTHkMGkPua5EIMm4+4YD7ToW+R+e00nS5t0PQCZwRwpzsZrScL8M5HrZNV7JNFMMZcYk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100751+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678124009906763.0864006678842; Mon, 6 Mar 2023 09:33:29 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id ywdZYY1788612xusavvLVWrG; Mon, 06 Mar 2023 09:33:29 -0800 X-Received: from mail-pg1-f181.google.com (mail-pg1-f181.google.com [209.85.215.181]) by mx.groups.io with SMTP id smtpd.web10.1078.1678124008921805525 for ; Mon, 06 Mar 2023 09:33:28 -0800 X-Received: by mail-pg1-f181.google.com with SMTP id q189so6024509pga.9 for ; Mon, 06 Mar 2023 09:33:28 -0800 (PST) X-Gm-Message-State: 7snmHPWwdCKQWTzc9jPhrup4x1787277AA= X-Google-Smtp-Source: AK7set9ZKlOVJ1QAg986D1srceNTySsDt1+rHapVkNA7HLsYzdmKCK3LW8JZ+XjCIqcnc4pH/I89iA== X-Received: by 2002:aa7:96e2:0:b0:5a9:cbc3:ca70 with SMTP id i2-20020aa796e2000000b005a9cbc3ca70mr10753095pfq.24.1678124008042; Mon, 06 Mar 2023 09:33:28 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:27 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 2/7] MdePkg/Register: RISC-V: Add satp mode bits shift definition Date: Mon, 6 Mar 2023 09:33:11 -0800 Message-Id: <20230306173316.10319-3-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124009; bh=ho2Ue8mtHHMhhPjbApfW+Qoj+LgIZ0AiZp1q/ujm3Z4=; h=Cc:Date:From:Reply-To:Subject:To; b=hNxXoV2wIKMlJzFNI+VMp68Y5PQ854HaegWVlLA9AU/nOwYXp81CcHDjOu6tQZwf8n0 izifzIe1snLMHFyiHC2TufKbFmC/bp/ppVml5N+0j9ky56uUJjEpZ3MFkrSGBmrCLE3Vl F9kb9GVxAtYum0y+UbvQSwGIUp7kiNcUhTU= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124011647100009 Content-Type: text/plain; charset="utf-8" The satp mode bits shift is used cross modules. It should be defined in one place. Signed-off-by: Tuan Phan --- MdePkg/Include/Register/RiscV64/RiscVEncoding.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/MdePkg/Include/Register/RiscV64/RiscVEncoding.h b/MdePkg/Inclu= de/Register/RiscV64/RiscVEncoding.h index 5c2989b797bf..c60972892825 100644 --- a/MdePkg/Include/Register/RiscV64/RiscVEncoding.h +++ b/MdePkg/Include/Register/RiscV64/RiscVEncoding.h @@ -58,9 +58,10 @@ #define PRV_S 1UL #define PRV_M 3UL =20 -#define SATP64_MODE 0xF000000000000000ULL -#define SATP64_ASID 0x0FFFF00000000000ULL -#define SATP64_PPN 0x00000FFFFFFFFFFFULL +#define SATP64_MODE 0xF000000000000000ULL +#define SATP64_MODE_SHIFT 60 +#define SATP64_ASID 0x0FFFF00000000000ULL +#define SATP64_PPN 0x00000FFFFFFFFFFFULL =20 #define SATP_MODE_OFF 0UL #define SATP_MODE_SV32 1UL --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100751): https://edk2.groups.io/g/devel/message/100751 Mute This Topic: https://groups.io/mt/97430549/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100752+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100752+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124011; cv=none; d=zohomail.com; s=zohoarc; b=SZRE7RaKSj1w6GHvroaMFxZa3Q/NvRwNRC6/ju/vj3kf1cKZAFbEytolnScpmIN+LHYFphrExE5JiKiQ6WUI1cJ6PkRUdoTTIBCKVYeunnpoHwzpiriW289HalKZXaUmlhppYYnCwZbDTfNgS07v3zycjlS08VShv7l9yuZkXx4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124011; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=yauczRF+b+YfO2sH7AlSOeTdxk3f+7SDcUdyCnH4C+s=; b=H0SQMfK66BYWjSPHMs5lx4rGmrbZ6ZdYJY6qn9HV5Ew2SBu5dPVUO64X0ins/3tvg1c2K/Xfz2rR/yVZ1ckirL/rV4XbwY6pL31R34YV/fbGURJGOfU4lpSB3TIuXu+pd/HTlpVih/Vc/hqyOi1KZpdbROZjsKrknC84qebmtlc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100752+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 16781240114431022.7328466435557; Mon, 6 Mar 2023 09:33:31 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id x2IyYY1788612xRTSzBQtjhh; Mon, 06 Mar 2023 09:33:31 -0800 X-Received: from mail-pl1-f175.google.com (mail-pl1-f175.google.com [209.85.214.175]) by mx.groups.io with SMTP id smtpd.web10.1080.1678124010583357001 for ; Mon, 06 Mar 2023 09:33:30 -0800 X-Received: by mail-pl1-f175.google.com with SMTP id a2so11257856plm.4 for ; Mon, 06 Mar 2023 09:33:30 -0800 (PST) X-Gm-Message-State: oHlyuNMl8XcKw4nRBxFwu9r9x1787277AA= X-Google-Smtp-Source: AK7set9CYBVyNJfwGRhb5uLje8UaCTM+jYhaUggFgzb4gSk+E7i7lKKLVrpj4IWNEfdnwIujGO0tkg== X-Received: by 2002:a05:6a21:6d81:b0:cb:cd6a:2e42 with SMTP id wl1-20020a056a216d8100b000cbcd6a2e42mr14518809pzb.29.1678124009353; Mon, 06 Mar 2023 09:33:29 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:28 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 3/7] UefiCpuPkg: RISC-V: Support MMU with SV39/48/57 mode Date: Mon, 6 Mar 2023 09:33:12 -0800 Message-Id: <20230306173316.10319-4-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124011; bh=22y3sH/oWMQ+f5aAT4aD9QWkPVUFcpYTXvbPZulpnTU=; h=Cc:Date:From:Reply-To:Subject:To; b=iCPBvanzRe28J61ODchIzYf/yrYf3BKXsfVymXcOVfylzm0RxV2dStqxSeLQtXmRUPC fhFb+szOgaT+WPwNivd4O1faickKvla9sHZ+0ROXYGwNh5WZ8RJuHKMUZ1LJC4/QyHYrT Qi219TTVpAgACyxVKwdkDpIAhPb3cpXCpz4= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124011694100011 Content-Type: text/plain; charset="utf-8" During CpuDxe initialization, MMU will be setup based on the value get from the PCD satp mode. Default is bare mode. Signed-off-by: Tuan Phan --- UefiCpuPkg/CpuDxeRiscV64/CpuDxe.c | 10 +- UefiCpuPkg/CpuDxeRiscV64/CpuDxe.h | 1 + UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf | 5 + UefiCpuPkg/CpuDxeRiscV64/Mmu.c | 493 +++++++++++++++++++++ UefiCpuPkg/CpuDxeRiscV64/Mmu.h | 33 ++ UefiCpuPkg/CpuDxeRiscV64/MmuCore.S | 29 ++ UefiCpuPkg/UefiCpuPkg.dec | 8 + 7 files changed, 577 insertions(+), 2 deletions(-) create mode 100644 UefiCpuPkg/CpuDxeRiscV64/Mmu.c create mode 100644 UefiCpuPkg/CpuDxeRiscV64/Mmu.h create mode 100644 UefiCpuPkg/CpuDxeRiscV64/MmuCore.S diff --git a/UefiCpuPkg/CpuDxeRiscV64/CpuDxe.c b/UefiCpuPkg/CpuDxeRiscV64/C= puDxe.c index 7551e0653603..144e4b49ea5a 100644 --- a/UefiCpuPkg/CpuDxeRiscV64/CpuDxe.c +++ b/UefiCpuPkg/CpuDxeRiscV64/CpuDxe.c @@ -9,6 +9,7 @@ **/ =20 #include "CpuDxe.h" +#include "Mmu.h" =20 // // Global Variables @@ -296,8 +297,7 @@ CpuSetMemoryAttributes ( IN UINT64 Attributes ) { - DEBUG ((DEBUG_INFO, "%a: Set memory attributes not supported yet\n", __F= UNCTION__)); - return EFI_SUCCESS; + return RiscVSetMemoryAttributes (BaseAddress, Length, Attributes); } =20 /** @@ -340,6 +340,12 @@ InitializeCpu ( // DisableInterrupts (); =20 + // + // Enable MMU + // + Status =3D RiscVConfigureMmu (PcdGet64 (PcdCpuRiscVSatpMode)); + ASSERT_EFI_ERROR (Status); + // // Install Boot protocol // diff --git a/UefiCpuPkg/CpuDxeRiscV64/CpuDxe.h b/UefiCpuPkg/CpuDxeRiscV64/C= puDxe.h index 49f4e119665a..2f2f970a7887 100644 --- a/UefiCpuPkg/CpuDxeRiscV64/CpuDxe.h +++ b/UefiCpuPkg/CpuDxeRiscV64/CpuDxe.h @@ -20,6 +20,7 @@ #include #include #include +#include =20 /** Flush CPU data cache. If the instruction cache is fully coherent diff --git a/UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf b/UefiCpuPkg/CpuDxe= RiscV64/CpuDxeRiscV64.inf index e8fa25446aef..6c2d65be789d 100644 --- a/UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf +++ b/UefiCpuPkg/CpuDxeRiscV64/CpuDxeRiscV64.inf @@ -37,10 +37,14 @@ TimerLib PeCoffGetEntryPointLib RiscVSbiLib + CacheMaintenanceLib =20 [Sources] CpuDxe.c CpuDxe.h + Mmu.c + Mmu.h + MmuCore.S =20 [Protocols] gEfiCpuArchProtocolGuid ## PRODUCES @@ -60,6 +64,7 @@ gUefiCpuPkgTokenSpaceGuid.PcdCpuStackSwitchExceptionList ##= CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuKnownGoodStackSize ##= CONSUMES gUefiCpuPkgTokenSpaceGuid.PcdCpuCoreCrystalClockFrequency ##= CONSUMES + gUefiCpuPkgTokenSpaceGuid.PcdCpuRiscVSatpMode ##= CONSUMES =20 [Depex] TRUE diff --git a/UefiCpuPkg/CpuDxeRiscV64/Mmu.c b/UefiCpuPkg/CpuDxeRiscV64/Mmu.c new file mode 100644 index 000000000000..bec78b0ea514 --- /dev/null +++ b/UefiCpuPkg/CpuDxeRiscV64/Mmu.c @@ -0,0 +1,493 @@ +/** @file +* MMU implementation for RISC-V +* +* Copyright (c) 2011-2020, ARM Limited. All rights reserved. +* Copyright (c) 2016, Linaro Limited. All rights reserved. +* Copyright (c) 2017, Intel Corporation. All rights reserved.
+* Copyright (c) 2023, Ventana Micro Systems Inc. All Rights Reserved.
+* +* SPDX-License-Identifier: BSD-2-Clause-Patent +* +**/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "Mmu.h" + +#define RISCV_PG_V BIT0 +#define RISCV_PG_R BIT1 +#define RISCV_PG_W BIT2 +#define RISCV_PG_X BIT3 +#define RISCV_PG_G BIT5 +#define RISCV_PG_A BIT6 +#define RISCV_PG_D BIT7 +#define PTE_ATTRIBUTES_MASK 0xE + +#define PTE_PPN_MASK 0x3FFFFFFFFFFC00ULL +#define PTE_PPN_SHIFT 10 +#define RISCV_MMU_PAGE_SHIFT 12 + +STATIC UINTN mMaxRootTableLevel; +STATIC UINTN mBitPerLevel; +STATIC UINTN mTableEntryCount; + +STATIC +BOOLEAN +RiscVMmuEnabled (VOID) +{ + return ((RiscVGetSupervisorAddressTranslationRegister () & + SATP64_MODE) !=3D (SATP_MODE_OFF << SATP64_MODE_SHIFT)); +} + +STATIC +UINTN +RiscVGetRootTranslateTable (VOID) +{ + return (RiscVGetSupervisorAddressTranslationRegister () & SATP64_PPN) << + RISCV_MMU_PAGE_SHIFT; +} + +STATIC +BOOLEAN +IsValidPte ( + IN UINTN Entry + ) +{ + if (!(Entry & RISCV_PG_V) || + (((Entry & (RISCV_PG_R | RISCV_PG_W)) =3D=3D RISCV_PG_W))) { + return FALSE; + } + + return TRUE; +} + +STATIC +UINTN +SetValidPte ( + IN UINTN Entry + ) +{ + /* Set Valid and Global mapping bits */ + return Entry | RISCV_PG_G | RISCV_PG_V; +} + +STATIC +BOOLEAN +IsBlockEntry ( + IN UINTN Entry + ) +{ + return IsValidPte (Entry) && + (Entry & (RISCV_PG_X | RISCV_PG_R)); +} + +STATIC +BOOLEAN +IsTableEntry ( + IN UINTN Entry + ) +{ + return IsValidPte (Entry) && + !IsBlockEntry (Entry); +} + +STATIC +UINTN +SetTableEntry ( + IN UINTN Entry + ) +{ + Entry =3D SetValidPte (Entry); + Entry &=3D ~(RISCV_PG_X | RISCV_PG_W | RISCV_PG_R); + + return Entry; +} + +STATIC +VOID +ReplaceTableEntry ( + IN UINTN *Entry, + IN UINTN Value, + IN UINTN RegionStart, + IN BOOLEAN IsLiveBlockMapping + ) +{ + *Entry =3D Value; + + if (IsLiveBlockMapping && RiscVMmuEnabled ()) { + RiscVLocalTlbFlush (RegionStart); + } +} + +STATIC +UINTN +GetPpnfromPte (UINTN Entry, UINTN Level) +{ + return ((Entry & PTE_PPN_MASK) >> PTE_PPN_SHIFT); +} + +STATIC +UINTN +SetPpnToPte (UINTN Entry, UINTN Address, UINTN Level) +{ + UINTN Ppn; + + Ppn =3D ((Address >> RISCV_MMU_PAGE_SHIFT) << PTE_PPN_SHIFT); + ASSERT (~(Ppn & ~PTE_PPN_MASK)); + Entry &=3D ~PTE_PPN_MASK; + return Entry | Ppn; +} + +STATIC +VOID +FreePageTablesRecursive ( + IN UINTN *TranslationTable, + IN UINTN Level + ) +{ + UINTN Index; + + if (Level < mMaxRootTableLevel - 1) { + for (Index =3D 0; Index < mTableEntryCount; Index++) { + if (IsTableEntry (TranslationTable[Index])) { + FreePageTablesRecursive ( + (UINTN *)(GetPpnfromPte ((TranslationTable[Index]), Level) << + RISCV_MMU_PAGE_SHIFT), + Level + 1 + ); + } + } + } + + FreePages (TranslationTable, 1); +} + +STATIC +EFI_STATUS +UpdateRegionMappingRecursive ( + IN UINTN RegionStart, + IN UINTN RegionEnd, + IN UINTN AttributeSetMask, + IN UINTN AttributeClearMask, + IN UINTN *PageTable, + IN UINTN Level, + IN BOOLEAN TableIsLive + ) +{ + EFI_STATUS Status; + UINTN BlockShift; + UINTN BlockMask; + UINTN BlockEnd; + UINTN *Entry; + UINTN EntryValue; + UINTN *TranslationTable; + BOOLEAN NextTableIsLive; + + ASSERT (Level < mMaxRootTableLevel); + ASSERT (((RegionStart | RegionEnd) & EFI_PAGE_MASK) =3D=3D 0); + + BlockShift =3D (mMaxRootTableLevel - Level - 1) * mBitPerLevel + RISCV_M= MU_PAGE_SHIFT; + BlockMask =3D MAX_ADDRESS >> (64 - BlockShift); + + DEBUG (( + DEBUG_VERBOSE, + "%a(%d): %llx - %llx set %lx clr %lx\n", + __func__, + Level, + RegionStart, + RegionEnd, + AttributeSetMask, + AttributeClearMask + )); + + for ( ; RegionStart < RegionEnd; RegionStart =3D BlockEnd) { + BlockEnd =3D MIN (RegionEnd, (RegionStart | BlockMask) + 1); + Entry =3D &PageTable[(RegionStart >> BlockShift) & (mTableEntryCoun= t - 1)]; + + // + // If RegionStart or BlockEnd is not aligned to the block size at this + // level, we will have to create a table mapping in order to map less + // than a block, and recurse to create the block or page entries at + // the next level. No block mappings are allowed at all at level 0, + // so in that case, we have to recurse unconditionally. + // + if (Level =3D=3D 0 || + (((RegionStart | BlockEnd) & BlockMask) !=3D 0) || IsTableEntry (*= Entry)) + { + ASSERT (Level < mMaxRootTableLevel - 1); + if (!IsTableEntry (*Entry)) { + // + // No table entry exists yet, so we need to allocate a page table + // for the next level. + // + TranslationTable =3D AllocatePages (1); + if (TranslationTable =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + ZeroMem (TranslationTable, EFI_PAGE_SIZE); + + if (IsBlockEntry (*Entry)) { + // + // We are splitting an existing block entry, so we have to popul= ate + // the new table with the attributes of the block entry it repla= ces. + // + Status =3D UpdateRegionMappingRecursive ( + RegionStart & ~BlockMask, + (RegionStart | BlockMask) + 1, + *Entry & PTE_ATTRIBUTES_MASK, + PTE_ATTRIBUTES_MASK, + TranslationTable, + Level + 1, + FALSE + ); + if (EFI_ERROR (Status)) { + // + // The range we passed to UpdateRegionMappingRecursive () is b= lock + // aligned, so it is guaranteed that no further pages were all= ocated + // by it, and so we only have to free the page we allocated he= re. + // + FreePages (TranslationTable, 1); + return Status; + } + } + NextTableIsLive =3D FALSE; + } else { + TranslationTable =3D (UINTN *)(GetPpnfromPte (*Entry, Level) << RI= SCV_MMU_PAGE_SHIFT); + NextTableIsLive =3D TableIsLive; + } + + // + // Recurse to the next level + // + Status =3D UpdateRegionMappingRecursive ( + RegionStart, + BlockEnd, + AttributeSetMask, + AttributeClearMask, + TranslationTable, + Level + 1, + NextTableIsLive + ); + if (EFI_ERROR (Status)) { + if (!IsTableEntry (*Entry)) { + // + // We are creating a new table entry, so on failure, we can free= all + // allocations we made recursively, given that the whole subhier= archy + // has not been wired into the live page tables yet. (This is not + // possible for existing table entries, since we cannot revert t= he + // modifications we made to the subhierarchy it represents.) + // + FreePageTablesRecursive (TranslationTable, Level + 1); + } + return Status; + } + + if (!IsTableEntry (*Entry)) { + EntryValue =3D SetPpnToPte (0, (UINTN)TranslationTable, Level); + EntryValue =3D SetTableEntry (EntryValue); + ReplaceTableEntry ( + Entry, + EntryValue, + RegionStart, + TableIsLive + ); + } + } else { + EntryValue =3D (*Entry & ~AttributeClearMask) | AttributeSetMask; + // + // We don't have page fault exception handler when a virtual page is= accessed and + // the A bit is clear, or is written and the D bit is clear. + // So just set A for read and D for write permission. + // + if (AttributeSetMask & RISCV_PG_R) { + EntryValue |=3D RISCV_PG_A; + } + if (AttributeSetMask & RISCV_PG_W) { + EntryValue |=3D RISCV_PG_D; + } + EntryValue =3D SetPpnToPte (EntryValue, RegionStart, Level); + EntryValue =3D SetValidPte (EntryValue); + ReplaceTableEntry (Entry, EntryValue, RegionStart, TableIsLive); + } + } + + return EFI_SUCCESS; +} + +STATIC +EFI_STATUS +UpdateRegionMapping ( + IN UINTN RegionStart, + IN UINTN RegionLength, + IN UINTN AttributeSetMask, + IN UINTN AttributeClearMask, + IN UINTN *RootTable, + IN BOOLEAN TableIsLive + ) +{ + if (((RegionStart | RegionLength) & EFI_PAGE_MASK) !=3D 0) { + return EFI_INVALID_PARAMETER; + } + + return UpdateRegionMappingRecursive ( + RegionStart, + RegionStart + RegionLength, + AttributeSetMask, + AttributeClearMask, + RootTable, + 0, + TableIsLive + ); +} + +STATIC +UINTN +GcdAttributeToPageAttribute ( + IN UINTN GcdAttributes + ) +{ + UINTN RiscVAttributes =3D RISCV_PG_R | RISCV_PG_W | RISCV_PG_X; + + // Determine protection attributes + if (GcdAttributes & EFI_MEMORY_RO) { + RiscVAttributes &=3D ~(RISCV_PG_W); + } + + // Process eXecute Never attribute + if (GcdAttributes & EFI_MEMORY_XP) { + RiscVAttributes &=3D ~RISCV_PG_X; + } + + return RiscVAttributes; +} + +EFI_STATUS +EFIAPI +RiscVSetMemoryAttributes ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINTN Length, + IN UINTN Attributes + ) +{ + UINTN PageAttributesSet =3D GcdAttributeToPageAttribute (Attributes); + + if (!RiscVMmuEnabled ()) { + return EFI_SUCCESS; + } + + DEBUG (( + DEBUG_VERBOSE, + "%a: Set %llX page attribute 0x%X\n", + __func__, + BaseAddress, + PageAttributesSet + )); + + return UpdateRegionMapping ( + BaseAddress, + Length, + PageAttributesSet, + PTE_ATTRIBUTES_MASK, + (UINTN *)RiscVGetRootTranslateTable (), + TRUE + ); +} + +EFI_STATUS +EFIAPI +RiscVConfigureMmu (UINTN SatpMode) +{ + VOID *TranslationTable; + UINTN SatpReg; + UINTN Ppn; + EFI_GCD_MEMORY_SPACE_DESCRIPTOR *MemoryMap; + UINTN NumberOfDescriptors; + UINTN Index; + EFI_STATUS Status; + + switch (SatpMode) { + case SATP_MODE_OFF: + return EFI_SUCCESS; + case SATP_MODE_SV39: + mMaxRootTableLevel =3D 3; + mBitPerLevel =3D 9; + mTableEntryCount =3D 512; + break; + case SATP_MODE_SV48: + mMaxRootTableLevel =3D 4; + mBitPerLevel =3D 9; + mTableEntryCount =3D 512; + break; + case SATP_MODE_SV57: + mMaxRootTableLevel =3D 5; + mBitPerLevel =3D 9; + mTableEntryCount =3D 512; + break; + default: + return EFI_INVALID_PARAMETER; + } + + // Allocate pages for translation table + TranslationTable =3D AllocatePages (1); + if (TranslationTable =3D=3D NULL) { + return EFI_OUT_OF_RESOURCES; + } + ZeroMem (TranslationTable, mTableEntryCount * sizeof (UINTN)); + + NumberOfDescriptors =3D 0; + MemoryMap =3D NULL; + Status =3D gDS->GetMemorySpaceMap ( + &NumberOfDescriptors, + &MemoryMap + ); + ASSERT_EFI_ERROR (Status); + + for (Index =3D 0; Index < NumberOfDescriptors; Index++) { + if (MemoryMap[Index].GcdMemoryType =3D=3D EfiGcdMemoryTypeMemoryMapped= Io) { + // Default Read/Write attribute for memory mapped IO + UpdateRegionMapping (MemoryMap[Index].BaseAddress, + MemoryMap[Index].Length, + RISCV_PG_R | RISCV_PG_W, + PTE_ATTRIBUTES_MASK, + TranslationTable, + FALSE); + } else if (MemoryMap[Index].GcdMemoryType =3D=3D EfiGcdMemoryTypeSyste= mMemory) { + // Default Read/Write/Execute attribute for system memory + UpdateRegionMapping (MemoryMap[Index].BaseAddress, + MemoryMap[Index].Length, + RISCV_PG_R | RISCV_PG_W | RISCV_PG_X, + PTE_ATTRIBUTES_MASK, + TranslationTable, + FALSE); + } + } + FreePool ((VOID *)MemoryMap); + + if (GetInterruptState ()) { + DisableInterrupts (); + } + + Ppn =3D (UINTN)TranslationTable >> RISCV_MMU_PAGE_SHIFT; + ASSERT (!(Ppn & ~(SATP64_PPN))); + + SatpReg =3D Ppn; + SatpReg |=3D (SatpMode << + SATP64_MODE_SHIFT) & SATP64_MODE; + RiscVSetSupervisorAddressTranslationRegister (SatpReg); + RiscVLocalTlbFlushAll (); + + if (GetInterruptState ()) { + EnableInterrupts (); + } + + return Status; +} diff --git a/UefiCpuPkg/CpuDxeRiscV64/Mmu.h b/UefiCpuPkg/CpuDxeRiscV64/Mmu.h new file mode 100644 index 000000000000..9ee0a4bfab61 --- /dev/null +++ b/UefiCpuPkg/CpuDxeRiscV64/Mmu.h @@ -0,0 +1,33 @@ +/** @file + + Copyright (c) 2015 - 2016, Linaro Ltd. All rights reserved.
+ Copyright (c) 2023, Ventana Micro Systems Inc. All Rights Reserved.
+ + SPDX-License-Identifier: BSD-2-Clause-Patent + +**/ + +#ifndef MMU_H_ +#define MMU_H_ + +VOID +EFIAPI +RiscVLocalTlbFlushAll (VOID); + +VOID +EFIAPI +RiscVLocalTlbFlush (UINTN VirtAddr); + +EFI_STATUS +EFIAPI +RiscVSetMemoryAttributes ( + IN EFI_PHYSICAL_ADDRESS BaseAddress, + IN UINT64 Length, + IN UINT64 Attributes + ); + +EFI_STATUS +EFIAPI +RiscVConfigureMmu (UINTN SatpMode); + +#endif /* MMU_H_ */ diff --git a/UefiCpuPkg/CpuDxeRiscV64/MmuCore.S b/UefiCpuPkg/CpuDxeRiscV64/= MmuCore.S new file mode 100644 index 000000000000..d0cbd91ffcc0 --- /dev/null +++ b/UefiCpuPkg/CpuDxeRiscV64/MmuCore.S @@ -0,0 +1,29 @@ +/** @file +* +* Copyright (c) 2023, Ventana Micro Systems Inc. All Rights Reserved.
+* +* SPDX-License-Identifier: BSD-2-Clause-Patent +* +**/ + +#include +#include + +.text +.align 3 + +// +// Local tlb flush all. +// +// +ASM_FUNC (RiscVLocalTlbFlushAll) + sfence.vma + ret + +// +// Local tlb flush at a virtual address +// @retval a0 : virtual address. +// +ASM_FUNC (RiscVLocalTlbFlush) + sfence.vma a0 + ret diff --git a/UefiCpuPkg/UefiCpuPkg.dec b/UefiCpuPkg/UefiCpuPkg.dec index 2115aa4387a2..b4e2be2e3880 100644 --- a/UefiCpuPkg/UefiCpuPkg.dec +++ b/UefiCpuPkg/UefiCpuPkg.dec @@ -360,6 +360,14 @@ # @Prompt Access to non-SMRAM memory is restricted to reserved, runtime = and ACPI NVS type after SmmReadyToLock. gUefiCpuPkgTokenSpaceGuid.PcdCpuSmmRestrictedMemoryAccess|TRUE|BOOLEAN|0= x3213210F =20 +[PcdsFixedAtBuild.RISCV64] + ## Configure SATP mode for RISCV + # 0 - Bare mode + # 8 - SV39 mode + # 9 - SV48 mode + # 10 - SV57 mode + gUefiCpuPkgTokenSpaceGuid.PcdCpuRiscVSatpMode|0x0|UINT64|0x70000001 + [PcdsDynamic, PcdsDynamicEx] ## Contains the pointer to a CPU S3 data buffer of structure ACPI_CPU_DA= TA. # @Prompt The pointer to a CPU S3 data buffer. --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100752): https://edk2.groups.io/g/devel/message/100752 Mute This Topic: https://groups.io/mt/97430550/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100753+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100753+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124012; cv=none; d=zohomail.com; s=zohoarc; b=cDvQKj8wV5rKCvP7g24hco5A7ydTm9jGAjf1k1A0uluAILROGxwjgQnVS32+yydrXtDwJcfuBmO3em1f4uIc/PnA3MyDgE+lx3JXdo7YdI8ab1dlrZBkighfZKngxADhUX3t5qE9SRofr1Oq0KrObWunQAxa3tQPTfkw/yGtuQ4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124012; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=WhpSTHG2dCS0I0vulwBo8hLvjgxkNqicQ1gKKnFJPvI=; b=P1p2YQ4bOXi1s4bjivOcfmmS0WvtE+sHnOeS92VlrsbAkoSTahB+B2ylN9ChsNDsw2lMTxDUfXA3UMDSjM3QAL/cuImwSHVqnzZL8Les7C3e2GAlR9jhJ4T6JWb9fDBui4Acl1qZkK4SQ5b8vtd/ZmfVjSHfpuDuTuLINYfmn6c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100753+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 16781240125001004.9811117605555; Mon, 6 Mar 2023 09:33:32 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id I58NYY1788612xFrNTOsWV7s; Mon, 06 Mar 2023 09:33:32 -0800 X-Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by mx.groups.io with SMTP id smtpd.web10.1082.1678124011746371711 for ; Mon, 06 Mar 2023 09:33:31 -0800 X-Received: by mail-pj1-f53.google.com with SMTP id l1so10555958pjt.2 for ; Mon, 06 Mar 2023 09:33:31 -0800 (PST) X-Gm-Message-State: X4gc61cuxzgAI1y5GM4MnD9Wx1787277AA= X-Google-Smtp-Source: AK7set8IUZfuZzE5uoPbJbeJQHI1T4bAeefNi8jzBAsvmKzke/TJilSWWwC0PaJC9LOwtM5EWfd71Q== X-Received: by 2002:a05:6a20:8c97:b0:c7:5cb6:2ff7 with SMTP id k23-20020a056a208c9700b000c75cb62ff7mr12229965pzh.22.1678124010905; Mon, 06 Mar 2023 09:33:30 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:30 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 4/7] OvmfPkg/RiscVVirt: VirtNorFlashPlatformLib: Fix wrong flash size Date: Mon, 6 Mar 2023 09:33:13 -0800 Message-Id: <20230306173316.10319-5-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124012; bh=OZ2nfTuWt5WDkAQtc1Zq4XLUgnyrhatV+X6qLEE/PQg=; h=Cc:Date:From:Reply-To:Subject:To; b=wiee8TBPQ5MTlFcAdjlTvhJp5S8ikMFQVGrTtdMht5x5sdnOPj/+PFU3mFNF8f3ii0N mOvrSVYyLHn0ISZ7pAOFpr0YA3NGG84viTH/cPwcfs6aIoBOTvhtb1/BAd9aYM6JUTH/O 8nnUWYof8ASswx8UKfWRKtKU7Z2PvYerGw0= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124013673100017 Content-Type: text/plain; charset="utf-8" The size should be for single region, not the whole firmware FD. Signed-off-by: Tuan Phan --- .../Library/VirtNorFlashPlatformLib/VirtNorFlashStaticLib.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlash= StaticLib.c b/OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlas= hStaticLib.c index fdc2ccb6294e..067065bd6ef9 100644 --- a/OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlashStaticL= ib.c +++ b/OvmfPkg/RiscVVirt/Library/VirtNorFlashPlatformLib/VirtNorFlashStaticL= ib.c @@ -24,7 +24,8 @@ VIRT_NOR_FLASH_DESCRIPTION mNorFlashDevice =3D { FixedPcdGet32 (PcdOvmfFdBaseAddress), FixedPcdGet64 (PcdFlashNvStorageVariableBase), - FixedPcdGet32 (PcdOvmfFirmwareFdSize), + FixedPcdGet32 (PcdOvmfFirmwareFdSize) -=20 + (FixedPcdGet64 (PcdFlashNvStorageVariableBase) - FixedPcdGet32 (= PcdOvmfFdBaseAddress)), QEMU_NOR_BLOCK_SIZE }; =20 --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100753): https://edk2.groups.io/g/devel/message/100753 Mute This Topic: https://groups.io/mt/97430552/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100754+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100754+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124013; cv=none; d=zohomail.com; s=zohoarc; b=Goh0JIuBkjDHubnp7vzc9GWn8VgWKkxmJ3FyhRjKaPfKapbUOh9Vbsb0FQcyGDFZWkNFMnu7XADK/j9ICXNc+APURt3sanx9fNl5ecq25soXp2OnrzUXWX4xFLdu5TyVUMmwYhzJW8GDC0+6mLUKthL2fs47ZqwF+FkjVMEvjn4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124013; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=LrtzdeEvbAuDkAAKLluVftjzwItFwjDpB3h9XvxkI/I=; b=CPsf1gWIsZ+QZVxUHet1nUkvcd0wXzFc/R9eezvREvIZsc50wk8v5SX0ywGjDgS7tJGNTLkfErCaUMLL6ztCq4CeE5+9U5iZPwhWdnUo1orXxsUqOeApziGufh3SV2e4bzrt4wjHeM8YlPnpyMNIJ2bJQgF/l6GdEGfzTOrbFiA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100754+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678124013753135.39694406971773; Mon, 6 Mar 2023 09:33:33 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id h4OtYY1788612x9OqqtJNZEW; Mon, 06 Mar 2023 09:33:33 -0800 X-Received: from mail-pf1-f179.google.com (mail-pf1-f179.google.com [209.85.210.179]) by mx.groups.io with SMTP id smtpd.web11.1139.1678124006645284517 for ; Mon, 06 Mar 2023 09:33:32 -0800 X-Received: by mail-pf1-f179.google.com with SMTP id a7so6310770pfx.10 for ; Mon, 06 Mar 2023 09:33:32 -0800 (PST) X-Gm-Message-State: 90zd1p2LsfUgwQo1nprpFETQx1787277AA= X-Google-Smtp-Source: AK7set9XRlKLaqjhH00vtT+2mRJDMtCaTpaG/f28sx9r+0JpTTX1tXnMseyBxHBygoQ2pkjr4YYomQ== X-Received: by 2002:a62:4e83:0:b0:5cd:81a7:41cc with SMTP id c125-20020a624e83000000b005cd81a741ccmr9164024pfb.13.1678124012047; Mon, 06 Mar 2023 09:33:32 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:31 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 5/7] OvmfPkg/VirtNorFlashDxe: Not add memory space if it exists Date: Mon, 6 Mar 2023 09:33:14 -0800 Message-Id: <20230306173316.10319-6-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124013; bh=slorckFueS/jsto5jkYUANrTerRkqNV54iuMmRMn6/s=; h=Cc:Date:From:Reply-To:Subject:To; b=bDzRSIfOBCl6GplnVosj9nBQnbQFQiKPsTEbBVSgzfWLTY38OJx5UOjgOTGeU81hgzr Geh1Ll/CaTz+GSVU0BQcDUSKj+/cpTEucmmQN3KKtRULTOyvGall8WyaE3lhUFx5k0sG3 6MDnuLRmUf95AcqjUj+n+Ci4eifA2bnj3go= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124015688100019 Content-Type: text/plain; charset="utf-8" The flash base address can be added to GCD before this driver run. So only add it if it has not been done. Signed-off-by: Tuan Phan --- OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c | 25 +++++++++++++++-------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c b/OvmfPkg/VirtNorFla= shDxe/VirtNorFlashDxe.c index f9a41f6aab0f..8875824f3333 100644 --- a/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c +++ b/OvmfPkg/VirtNorFlashDxe/VirtNorFlashDxe.c @@ -372,10 +372,11 @@ NorFlashFvbInitialize ( IN NOR_FLASH_INSTANCE *Instance ) { - EFI_STATUS Status; - UINT32 FvbNumLba; - EFI_BOOT_MODE BootMode; - UINTN RuntimeMmioRegionSize; + EFI_STATUS Status; + UINT32 FvbNumLba; + EFI_BOOT_MODE BootMode; + UINTN RuntimeMmioRegionSize; + EFI_GCD_MEMORY_SPACE_DESCRIPTOR Desc; =20 DEBUG ((DEBUG_BLKIO, "NorFlashFvbInitialize\n")); ASSERT ((Instance !=3D NULL)); @@ -390,13 +391,19 @@ NorFlashFvbInitialize ( // is written as the base of the flash region (ie: Instance->Devic= eBaseAddress) RuntimeMmioRegionSize =3D (Instance->RegionBaseAddress - Instance->Devic= eBaseAddress) + Instance->Size; =20 - Status =3D gDS->AddMemorySpace ( - EfiGcdMemoryTypeMemoryMappedIo, + Status =3D gDS->GetMemorySpaceDescriptor ( Instance->DeviceBaseAddress, - RuntimeMmioRegionSize, - EFI_MEMORY_UC | EFI_MEMORY_RUNTIME + &Desc ); - ASSERT_EFI_ERROR (Status); + if (Status =3D=3D EFI_NOT_FOUND) { + Status =3D gDS->AddMemorySpace ( + EfiGcdMemoryTypeMemoryMappedIo, + Instance->DeviceBaseAddress, + RuntimeMmioRegionSize, + EFI_MEMORY_UC | EFI_MEMORY_RUNTIME + ); + ASSERT_EFI_ERROR (Status); + } =20 Status =3D gDS->SetMemorySpaceAttributes ( Instance->DeviceBaseAddress, --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100754): https://edk2.groups.io/g/devel/message/100754 Mute This Topic: https://groups.io/mt/97430554/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100755+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100755+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124015; cv=none; d=zohomail.com; s=zohoarc; b=dTQbMLkQsYnj3Fdya+yg4nX1Em6LhfGnjcXV4FLu+G73De4VZe9Udf7ZmQjS7I+brXInrvJ/qB+/HKOyB1/EjLstAIbdtPrR6ZHZryxUNxL3fJ/KafD35ad95ECKNvX/LqmggjFGyPHNTmyT1gGmysajjV/5I2K65JijutGSc2Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124015; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=yHxokBQLwpbm967L4tp963vzNx3a0OPa1nOrrHmCI+s=; b=llxDGTDs8s/PEty3+huA6X5TV2ZzP/lZthxydbIBgzYJ8b89Nadu9cBUu797TlO09FXtdB7/gLItXOY6a37ncs3JxMSwcNw90F9rHXgRjpSyhA5LSBChdZ3CUyRsq3K5N690cDvfER3BLxR4B2+0F9VOaEDpEXeqlfCuh9U6u4U= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100755+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678124015019856.4988664282722; Mon, 6 Mar 2023 09:33:35 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id kI3QYY1788612xWkbhwR8ES6; Mon, 06 Mar 2023 09:33:34 -0800 X-Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) by mx.groups.io with SMTP id smtpd.web10.1083.1678124014134125831 for ; Mon, 06 Mar 2023 09:33:34 -0800 X-Received: by mail-pj1-f44.google.com with SMTP id qa18-20020a17090b4fd200b0023750b675f5so13876688pjb.3 for ; Mon, 06 Mar 2023 09:33:34 -0800 (PST) X-Gm-Message-State: 3cqTCxMm00WhWJPzHW3wfMzax1787277AA= X-Google-Smtp-Source: AK7set9sFaLeG2LBiXuAN4XntdrDiVSxhkAmCoI8a2Y0XTh1aljQpoR4k1BW7SdR0HumB+GlvjtxLw== X-Received: by 2002:a05:6a20:ba94:b0:cd:f8c5:a9b4 with SMTP id fb20-20020a056a20ba9400b000cdf8c5a9b4mr10674725pzb.24.1678124013170; Mon, 06 Mar 2023 09:33:33 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:32 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 6/7] OvmfPkg/RiscVVirt: SEC: Add IO memory resource hob for platform devices Date: Mon, 6 Mar 2023 09:33:15 -0800 Message-Id: <20230306173316.10319-7-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124014; bh=NVoS9vU0LErHzlcUfb6zR3hBhNpobqNnUjuOIOben3g=; h=Cc:Date:From:Reply-To:Subject:To; b=dea/KfHNXeLqSCYeuhC29j+C9oXCvmzVi0UfDskdJQYMy21tzqZOMfVH9zdj65BG361 2DNwmcGlK2pSdpeNh4HW9slouUDhGTM/597UyFOLO8IwVcqWMwtNTyFP1P69yY68UCDUB kxaak6k29C25yffitIdoow/jVmxn6W3Q1/o= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124015704100021 Content-Type: text/plain; charset="utf-8" Normally, DXE driver would add device resource to GCD before start using. But some key resources such as uart, flash base address are being accessing directly in some core modules. Those resources should be populated to HOB in SEC phase so they are added to GCD before anyone can access them. Signed-off-by: Tuan Phan --- OvmfPkg/RiscVVirt/Sec/Platform.c | 62 +++++++++++++++++++++++++++++++ OvmfPkg/RiscVVirt/Sec/SecMain.inf | 1 + 2 files changed, 63 insertions(+) diff --git a/OvmfPkg/RiscVVirt/Sec/Platform.c b/OvmfPkg/RiscVVirt/Sec/Platf= orm.c index e8fd126cf800..63bc21eb3f60 100644 --- a/OvmfPkg/RiscVVirt/Sec/Platform.c +++ b/OvmfPkg/RiscVVirt/Sec/Platform.c @@ -21,6 +21,63 @@ SPDX-License-Identifier: BSD-2-Clause-Patent #include #include =20 +/** + Build memory map I/O range resource HOB using the + base address and size. + + @param MemoryBase Memory map I/O base. + @param MemorySize Memory map I/O size. + +**/ +STATIC +VOID +AddIoMemoryBaseSizeHob ( + EFI_PHYSICAL_ADDRESS MemoryBase, + UINT64 MemorySize + ) +{ + /* Align to EFI_PAGE_SIZE */ + MemorySize =3D ALIGN_VALUE (MemorySize, EFI_PAGE_SIZE); + BuildResourceDescriptorHob ( + EFI_RESOURCE_MEMORY_MAPPED_IO, + EFI_RESOURCE_ATTRIBUTE_PRESENT | + EFI_RESOURCE_ATTRIBUTE_INITIALIZED | + EFI_RESOURCE_ATTRIBUTE_UNCACHEABLE | + EFI_RESOURCE_ATTRIBUTE_TESTED, + MemoryBase, + MemorySize + ); +} + +/** + Populate IO resources from FDT that not added to GCD by its + driver in the DXE phase.=20 + + @param FdtBase Fdt base address + @param Compatible Compatible string + +**/ +STATIC +VOID +PopulateIoResources ( + VOID *FdtBase, + CONST CHAR8* Compatible + ) +{ + UINT64 *Reg; + INT32 Node, LenP; + + Node =3D fdt_node_offset_by_compatible (FdtBase, -1, Compatible); + while (Node !=3D -FDT_ERR_NOTFOUND) { + Reg =3D (UINT64 *)fdt_getprop (FdtBase, Node, "reg", &LenP); + if (Reg) { + ASSERT (LenP =3D=3D (2 * sizeof (UINT64))); + AddIoMemoryBaseSizeHob (SwapBytes64 (Reg[0]), SwapBytes64 (Reg[1])); + } + Node =3D fdt_node_offset_by_compatible (FdtBase, Node, Compatible); + } +} + /** @retval EFI_SUCCESS The address of FDT is passed in HOB. EFI_UNSUPPORTED Can't locate FDT. @@ -80,5 +137,10 @@ PlatformPeimInitialization ( =20 BuildFvHob (PcdGet32 (PcdOvmfDxeMemFvBase), PcdGet32 (PcdOvmfDxeMemFvSiz= e)); =20 + PopulateIoResources (Base, "ns16550a"); + PopulateIoResources (Base, "qemu,fw-cfg-mmio"); + PopulateIoResources (Base, "virtio,mmio"); + AddIoMemoryBaseSizeHob (PcdGet32 (PcdOvmfFdBaseAddress), PcdGet32 (PcdOv= mfFirmwareFdSize)); + return EFI_SUCCESS; } diff --git a/OvmfPkg/RiscVVirt/Sec/SecMain.inf b/OvmfPkg/RiscVVirt/Sec/SecM= ain.inf index aed35d3af596..e1f562264eea 100644 --- a/OvmfPkg/RiscVVirt/Sec/SecMain.inf +++ b/OvmfPkg/RiscVVirt/Sec/SecMain.inf @@ -61,6 +61,7 @@ gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize =20 [Guids] gFdtHobGuid --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100755): https://edk2.groups.io/g/devel/message/100755 Mute This Topic: https://groups.io/mt/97430555/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- From nobody Mon Apr 29 11:21:17 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) client-ip=66.175.222.108; envelope-from=bounce+27952+100756+1787277+3901457@groups.io; helo=mail02.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100756+1787277+3901457@groups.io ARC-Seal: i=1; a=rsa-sha256; t=1678124016; cv=none; d=zohomail.com; s=zohoarc; b=ndX8bZoHk5SPuknzTYJsg7puXsDtEZG9TbukaNE+v1fha19U4TsGkMmUSHwx7hgWKn60akpTxxpLQqaI6piwudvzX0Ggh4ECdXYIEYBsqrzwscMuyocSbC67n2pFUdIRRIqSC+x6jho3FC0RpZ/5Dc7dHLTip9pajbxWdrf4GEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1678124016; h=Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Reply-To:References:Sender:Subject:To; bh=/+MhxWJeXnDChJs7CtSWSqCgKzB+V+GvrqXrPAFjQzg=; b=WwIaK2f+TDDy8Q6UXqu92ZGLa4plSmWex/dNDSyv119bU8hrPeTCjPF9+1wOkgylzgS95LNIIPCKhjc66NavR7sbN3K7crB944d4RDr5YeywtKqlTd9zUyGFuKn6FIEGyNJrjrtR29wcXPDcm9wmJpXzaIO5pWG4X3D61z5IKjE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce+27952+100756+1787277+3901457@groups.io Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by mx.zohomail.com with SMTPS id 1678124016870981.0297462886167; Mon, 6 Mar 2023 09:33:36 -0800 (PST) Return-Path: X-Received: by 127.0.0.2 with SMTP id cYFiYY1788612xAYY2ywXAYu; Mon, 06 Mar 2023 09:33:36 -0800 X-Received: from mail-pj1-f53.google.com (mail-pj1-f53.google.com [209.85.216.53]) by mx.groups.io with SMTP id smtpd.web10.1082.1678124011746371711 for ; Mon, 06 Mar 2023 09:33:35 -0800 X-Received: by mail-pj1-f53.google.com with SMTP id l1so10556149pjt.2 for ; Mon, 06 Mar 2023 09:33:35 -0800 (PST) X-Gm-Message-State: elXXYThStgkTtqxFMVIpn7hXx1787277AA= X-Google-Smtp-Source: AK7set8vqoIPwJle0r1EwnJQkp8LgewzTU1b1lCEvsFIMPZV8LK5qJ59VZUz2JJRXHm3p/as1CJWrQ== X-Received: by 2002:a05:6a20:7d8b:b0:cc:39c5:1241 with SMTP id v11-20020a056a207d8b00b000cc39c51241mr16929826pzj.16.1678124014391; Mon, 06 Mar 2023 09:33:34 -0800 (PST) X-Received: from localhost.localdomain (c-174-50-177-95.hsd1.ca.comcast.net. [174.50.177.95]) by smtp.gmail.com with ESMTPSA id v6-20020aa78506000000b005dd975176c3sm6579722pfn.53.2023.03.06.09.33.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 06 Mar 2023 09:33:34 -0800 (PST) From: "Tuan Phan" To: devel@edk2.groups.io Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn, zhiguang.liu@intel.com, sunilvl@ventanamicro.com, git@danielschaefer.me, andrei.warkentin@intel.com, Tuan Phan Subject: [edk2-devel] [PATCH 7/7] OvmfPkg/RiscVVirt: Enable MMU with SV39 mode Date: Mon, 6 Mar 2023 09:33:16 -0800 Message-Id: <20230306173316.10319-8-tphan@ventanamicro.com> In-Reply-To: <20230306173316.10319-1-tphan@ventanamicro.com> References: <20230306173316.10319-1-tphan@ventanamicro.com> MIME-Version: 1.0 Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,tphan@ventanamicro.com Content-Transfer-Encoding: quoted-printable DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1678124016; bh=Tjjsb4lx5heontTAEojU5Lbn+DUNBqP+hLZr23WoUY8=; h=Cc:Date:From:Reply-To:Subject:To; b=T6GDRoaRpYyIS6N7EgCPw0dLKwgW9oZ1E8x8EJmRE05cFrwcWNKHUbr+plyZ0SzFaKF ON42ULwEDGN5D7bnKovq6+I161QV3auj8HphXBnNeZCrN7+x8LP0fxuRLJl5gH8int9kN UDVSF3+mwxL5jSU2aN9pd7/uONWlckLPwOI= X-ZohoMail-DKIM: pass (identity @groups.io) X-ZM-MESSAGEID: 1678124017704100027 Content-Type: text/plain; charset="utf-8" As MMU will be enabled in CpuDxe, remove the code that set up satp mode in SEC phase. Enable SV39 as default mode. Signed-off-by: Tuan Phan --- OvmfPkg/RiscVVirt/RiscVVirt.dsc.inc | 1 + OvmfPkg/RiscVVirt/Sec/Memory.c | 17 ----------------- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/OvmfPkg/RiscVVirt/RiscVVirt.dsc.inc b/OvmfPkg/RiscVVirt/RiscVV= irt.dsc.inc index 731f54f73f81..ef268481ca07 100644 --- a/OvmfPkg/RiscVVirt/RiscVVirt.dsc.inc +++ b/OvmfPkg/RiscVVirt/RiscVVirt.dsc.inc @@ -207,6 +207,7 @@ gEfiMdePkgTokenSpaceGuid.PcdMaximumLinkedListLength|0 gEfiMdePkgTokenSpaceGuid.PcdSpinLockTimeout|10000000 gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize|320 + gUefiCpuPkgTokenSpaceGuid.PcdCpuRiscVSatpMode|8 =20 # DEBUG_ASSERT_ENABLED 0x01 # DEBUG_PRINT_ENABLED 0x02 diff --git a/OvmfPkg/RiscVVirt/Sec/Memory.c b/OvmfPkg/RiscVVirt/Sec/Memory.c index 70935b07b56b..0b589cd1d071 100644 --- a/OvmfPkg/RiscVVirt/Sec/Memory.c +++ b/OvmfPkg/RiscVVirt/Sec/Memory.c @@ -110,21 +110,6 @@ AddMemoryRangeHob ( AddMemoryBaseSizeHob (MemoryBase, (UINT64)(MemoryLimit - MemoryBase)); } =20 -/** - Configure MMU -**/ -STATIC -VOID -InitMmu ( - ) -{ - // - // Set supervisor translation mode to Bare mode - // - RiscVSetSupervisorAddressTranslationRegister ((UINT64)SATP_MODE_OFF << 6= 0); - DEBUG ((DEBUG_INFO, "%a: Set Supervisor address mode to bare-metal mode.= \n", __FUNCTION__)); -} - /** Publish system RAM and reserve memory regions. =20 @@ -255,8 +240,6 @@ MemoryPeimInitialization ( } } =20 - InitMmu (); - BuildMemoryTypeInformationHob (); =20 return EFI_SUCCESS; --=20 2.25.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#100756): https://edk2.groups.io/g/devel/message/100756 Mute This Topic: https://groups.io/mt/97430556/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-