From: "Ard Biesheuvel" <ardb@kernel.org>
To: devel@edk2.groups.io, tphan@ventanamicro.com
Cc: michael.d.kinney@intel.com, gaoliming@byosoft.com.cn,
zhiguang.liu@intel.com, sunilvl@ventanamicro.com,
git@danielschaefer.me, andrei.warkentin@intel.com
Subject: Re: [edk2-devel] [PATCH v3 7/7] OvmfPkg/RiscVVirt: SEC: Add IO memory resource hob for platform devices
Date: Mon, 29 May 2023 16:07:28 +0200 [thread overview]
Message-ID: <CAMj1kXEF8y9GAJsZU-4K72s6_+oJ-FJ9b84tH9hhiPpi1VDqkw@mail.gmail.com> (raw)
In-Reply-To: <20230526231733.6755-8-tphan@ventanamicro.com>
On Sat, 27 May 2023 at 01:18, Tuan Phan <tphan@ventanamicro.com> wrote:
>
> 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.
>
Why should these be in the GCD to begin with?
> Signed-off-by: Tuan Phan <tphan@ventanamicro.com>
> Reviewed-by: Andrei Warkentin <andrei.warkentin@intel.com>
> ---
> 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/Platform.c
> index 3645c27b0b12..944b82c84a6e 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 <libfdt.h>
> #include <Guid/FdtHob.h>
>
> +/**
> + 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 = 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.
> +
> + @param FdtBase Fdt base address
> + @param Compatible Compatible string
> +
> +**/
> +STATIC
> +VOID
> +PopulateIoResources (
> + VOID *FdtBase,
> + CONST CHAR8* Compatible
> + )
> +{
> + UINT64 *Reg;
> + INT32 Node, LenP;
> +
> + Node = fdt_node_offset_by_compatible (FdtBase, -1, Compatible);
> + while (Node != -FDT_ERR_NOTFOUND) {
> + Reg = (UINT64 *)fdt_getprop (FdtBase, Node, "reg", &LenP);
> + if (Reg) {
> + ASSERT (LenP == (2 * sizeof (UINT64)));
> + AddIoMemoryBaseSizeHob (SwapBytes64 (Reg[0]), SwapBytes64 (Reg[1]));
> + }
> + Node = 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 (
>
> BuildFvHob (PcdGet32 (PcdOvmfDxeMemFvBase), PcdGet32 (PcdOvmfDxeMemFvSize));
>
> + PopulateIoResources (Base, "ns16550a");
> + PopulateIoResources (Base, "qemu,fw-cfg-mmio");
> + PopulateIoResources (Base, "virtio,mmio");
> + AddIoMemoryBaseSizeHob (PcdGet32 (PcdOvmfFdBaseAddress), PcdGet32 (PcdOvmfFirmwareFdSize));
> +
> return EFI_SUCCESS;
> }
> diff --git a/OvmfPkg/RiscVVirt/Sec/SecMain.inf b/OvmfPkg/RiscVVirt/Sec/SecMain.inf
> index 0e2a5785e8a4..75d5b74b3d3f 100644
> --- a/OvmfPkg/RiscVVirt/Sec/SecMain.inf
> +++ b/OvmfPkg/RiscVVirt/Sec/SecMain.inf
> @@ -62,6 +62,7 @@
> gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamBase
> gUefiOvmfPkgTokenSpaceGuid.PcdOvmfSecPeiTempRamSize
> gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress
> + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFirmwareFdSize
>
> [Guids]
> gFdtHobGuid
> --
> 2.25.1
>
>
>
> ------------
> Groups.io Links: You receive all messages sent to this group.
> View/Reply Online (#105346): https://edk2.groups.io/g/devel/message/105346
> Mute This Topic: https://groups.io/mt/99160000/1131722
> Group Owner: devel+owner@edk2.groups.io
> Unsubscribe: https://edk2.groups.io/g/devel/unsub [ardb@kernel.org]
> ------------
>
>
next prev parent reply other threads:[~2023-05-29 14:07 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-26 23:17 [PATCH v3 0/7] RISC-V: MMU support Tuan Phan
2023-05-26 23:17 ` [PATCH v3 1/7] MdePkg/BaseLib: RISC-V: Support getting satp register value Tuan Phan
2023-06-06 10:29 ` Sunil V L
2023-05-26 23:17 ` [PATCH v3 2/7] MdePkg/Register: RISC-V: Add satp mode bits shift definition Tuan Phan
2023-06-06 10:31 ` Sunil V L
2023-05-26 23:17 ` [PATCH v3 3/7] UefiCpuPkg: RISC-V: Support MMU with SV39/48/57 mode Tuan Phan
2023-05-26 23:17 ` [PATCH v3 4/7] OvmfPkg/RiscVVirt: Remove satp bare mode setting Tuan Phan
2023-06-06 10:35 ` Sunil V L
2023-05-26 23:17 ` [PATCH v3 5/7] OvmfPkg/RiscVVirt: VirtNorFlashPlatformLib: Fix wrong flash size Tuan Phan
2023-06-06 10:34 ` Sunil V L
2023-05-26 23:17 ` [PATCH v3 6/7] OvmfPkg/VirtNorFlashDxe: Not add memory space if it exists Tuan Phan
2023-05-26 23:17 ` [PATCH v3 7/7] OvmfPkg/RiscVVirt: SEC: Add IO memory resource hob for platform devices Tuan Phan
2023-05-29 14:07 ` Ard Biesheuvel [this message]
2023-05-30 17:37 ` [edk2-devel] " Tuan Phan
[not found] ` <1763FC7B83488280.11718@groups.io>
2023-06-22 18:41 ` Tuan Phan
2023-06-22 20:27 ` Tuan Phan
2023-12-08 7:36 ` Andrei Warkentin
2023-12-14 18:59 ` Tuan Phan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-list from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAMj1kXEF8y9GAJsZU-4K72s6_+oJ-FJ9b84tH9hhiPpi1VDqkw@mail.gmail.com \
--to=devel@edk2.groups.io \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox