From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by mx.groups.io with SMTP id smtpd.web10.50204.1685369262800819082 for ; Mon, 29 May 2023 07:07:42 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=IsWUPnbM; spf=pass (domain: kernel.org, ip: 139.178.84.217, mailfrom: ardb@kernel.org) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 39BC7624F8 for ; Mon, 29 May 2023 14:07:42 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE607C433A1 for ; Mon, 29 May 2023 14:07:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1685369261; bh=S0VSi/QXDhWmha7byH96nWtYzbiliafBCsLjoxmyhEk=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=IsWUPnbMYakNK+UWax0ePU3eAxBLyptsGWB30gnpSaHRNmH2APSYWDZCWfHiQzxUt 0bcbhI4iNuZOVM/IWIEj34ufL8Srn58P7aVbHygnuNjKcwNzOK/9QiUuMpb5xeA7EU JiyLJTruUl+27jIXrJIsEUahLRzL0x9BuW9lPoN4Ir+91TPuWr5mryL8l9rs26XjCY YprNyFh16QxnlqVMvLQAeu0ZC5JZp38/J9xNJno0D6NMcVnl2pgLH0uiVLO9HeQC5J I5+PijW8MgVUs15+p7SBTox8TPZVE7QMfguNWkDpVIO798QOQ9O26w5jwFTwjsm2cF JLk4RwgBzPFdA== Received: by mail-lj1-f174.google.com with SMTP id 38308e7fff4ca-2afb2874e83so35267921fa.0 for ; Mon, 29 May 2023 07:07:41 -0700 (PDT) X-Gm-Message-State: AC+VfDxKD6pebzk+D3yAmX7H2VImjkH5mUvT4FvDYfe+PownsMk/jzB+ 2wUMIR6K4ZPWBsOa8f3gZf3FrtLF790KUmK5lPY= X-Google-Smtp-Source: ACHHUZ4GSfKjSPqU3BXo9uEscnaQHBSO62+rF+KV4O++77sOxHrGhDgqpTsgVKnN2i51Lw+KPR1Gn6k9MQiXCA6vAYk= X-Received: by 2002:a05:651c:23b:b0:2a7:b1de:3ff7 with SMTP id z27-20020a05651c023b00b002a7b1de3ff7mr3704825ljn.16.1685369259920; Mon, 29 May 2023 07:07:39 -0700 (PDT) MIME-Version: 1.0 References: <20230526231733.6755-1-tphan@ventanamicro.com> <20230526231733.6755-8-tphan@ventanamicro.com> In-Reply-To: <20230526231733.6755-8-tphan@ventanamicro.com> From: "Ard Biesheuvel" Date: Mon, 29 May 2023 16:07:28 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [edk2-devel] [PATCH v3 7/7] OvmfPkg/RiscVVirt: SEC: Add IO memory resource hob for platform devices 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 Content-Type: text/plain; charset="UTF-8" On Sat, 27 May 2023 at 01:18, Tuan Phan 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 > Reviewed-by: Andrei Warkentin > --- > 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 > #include > > +/** > + 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] > ------------ > >