From: "Abner Chang" <abner.chang@hpe.com>
To: devel@edk2.groups.io
Cc: abner.chang@hpe.com
Subject: [PATCH 22/79] Silicon/SiFive: Handle case of NULL FirmwareContext
Date: Sat, 8 Jan 2022 12:10:42 +0800 [thread overview]
Message-ID: <20220108041121.16005-21-abner.chang@hpe.com> (raw)
In-Reply-To: <20220108041121.16005-1-abner.chang@hpe.com>
(This is migrated from edk2-platforms:Silicon)
Abort creating the SMBIOS HOBs if there's no firmware context to get the
information from.
Turn SbiLib functions for getting mscratch into VOID since they can never
practically fail.
Signed-off-by: Daniel Schaefer <daniel.schaefer@hpe.com>
Reviewed-by: Abner Chang <abner.chang@hpe.com>
Cc: Abner Chang <abner.chang@hpe.com>
Cc: Leif Lindholm <leif@nuviainc.com>
---
.../Include/Library/RiscVEdk2SbiLib.h | 12 ++---
.../PlatformPkg/Universal/Sec/SecMain.c | 11 +++--
.../Library/RiscVEdk2SbiLib/RiscVEdk2SbiLib.c | 46 +++++++------------
3 files changed, 28 insertions(+), 41 deletions(-)
diff --git a/Silicon/RISC-V/ProcessorPkg/Include/Library/RiscVEdk2SbiLib.h b/Silicon/RISC-V/ProcessorPkg/Include/Library/RiscVEdk2SbiLib.h
index 558841a970..f81ea06b05 100644
--- a/Silicon/RISC-V/ProcessorPkg/Include/Library/RiscVEdk2SbiLib.h
+++ b/Silicon/RISC-V/ProcessorPkg/Include/Library/RiscVEdk2SbiLib.h
@@ -514,9 +514,8 @@ SbiVendorCall (
access the firmware context.
@param[out] ScratchSpace The scratch space pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiGetMscratch (
OUT SBI_SCRATCH **ScratchSpace
@@ -527,9 +526,8 @@ SbiGetMscratch (
@param[in] HartId The hart id.
@param[out] ScratchSpace The scratch space pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiGetMscratchHartid (
IN UINTN HartId,
@@ -540,9 +538,8 @@ SbiGetMscratchHartid (
Get firmware context of the calling hart.
@param[out] FirmwareContext The firmware context pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiGetFirmwareContext (
OUT EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT **FirmwareContext
@@ -552,9 +549,8 @@ SbiGetFirmwareContext (
Set firmware context of the calling hart.
@param[in] FirmwareContext The firmware context pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiSetFirmwareContext (
IN EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *FirmwareContext
diff --git a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c
index 877777bfa1..fa9ecd789a 100644
--- a/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c
+++ b/Platform/RISC-V/PlatformPkg/Universal/Sec/SecMain.c
@@ -415,7 +415,10 @@ EFI_STATUS EFIAPI TemporaryRamDone (
return EFI_SUCCESS;
}
-/** Handles SBI calls of EDK2's SBI FW extension
+/**
+ Handles SBI calls of EDK2's SBI FW extension.
+
+ The return value is the error code returned by the SBI call.
@param[in] ExtId The extension ID of the FW extension.
@param[in] FuncId The called function ID.
@@ -424,7 +427,7 @@ EFI_STATUS EFIAPI TemporaryRamDone (
@param[out] OutTrap Trap info for trapping further, see OpenSBI code.
Is ignored if return value is not SBI_ETRAP.
- @retval 0 If the handler succeeds.
+ @retval SBI_OK If the handler succeeds.
@retval SBI_ENOTSUPP If there's no function with the given ID.
@retval SBI_ETRAP If the called SBI functions wants to trap further.
**/
@@ -436,7 +439,7 @@ STATIC int SbiEcallFirmwareHandler (
OUT struct sbi_trap_info *OutTrap
)
{
- int Ret = 0;
+ int Ret = SBI_OK;
switch (FuncId) {
case SBI_EXT_FW_MSCRATCH_FUNC:
@@ -447,6 +450,8 @@ STATIC int SbiEcallFirmwareHandler (
break;
default:
Ret = SBI_ENOTSUPP;
+ DEBUG ((DEBUG_ERROR, "%a: Called SBI firmware ecall with invalid function ID\n", __FUNCTION__));
+ ASSERT (FALSE);
};
return Ret;
diff --git a/Silicon/RISC-V/ProcessorPkg/Library/RiscVEdk2SbiLib/RiscVEdk2SbiLib.c b/Silicon/RISC-V/ProcessorPkg/Library/RiscVEdk2SbiLib/RiscVEdk2SbiLib.c
index 0df505d267..9bbeaaec3f 100644
--- a/Silicon/RISC-V/ProcessorPkg/Library/RiscVEdk2SbiLib/RiscVEdk2SbiLib.c
+++ b/Silicon/RISC-V/ProcessorPkg/Library/RiscVEdk2SbiLib/RiscVEdk2SbiLib.c
@@ -801,9 +801,8 @@ SbiVendorCall (
access the firmware context.
@param[out] ScratchSpace The scratch space pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiGetMscratch (
OUT SBI_SCRATCH **ScratchSpace
@@ -811,11 +810,10 @@ SbiGetMscratch (
{
SbiRet Ret = SbiCall (SBI_EDK2_FW_EXT, SBI_EXT_FW_MSCRATCH_FUNC, 0);
- if (!Ret.Error) {
- *ScratchSpace = (SBI_SCRATCH *)Ret.Value;
- }
+ // Our ecall handler never returns an error, only when the func id is invalid
+ ASSERT (Ret.Error == SBI_OK);
- return EFI_SUCCESS;
+ *ScratchSpace = (SBI_SCRATCH *)Ret.Value;
}
/**
@@ -823,9 +821,8 @@ SbiGetMscratch (
@param[in] HartId The hart id.
@param[out] ScratchSpace The scratch space pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiGetMscratchHartid (
IN UINTN HartId,
@@ -839,11 +836,10 @@ SbiGetMscratchHartid (
HartId
);
- if (!Ret.Error) {
- *ScratchSpace = (SBI_SCRATCH *)Ret.Value;
- }
+ // Our ecall handler never returns an error, only when the func id is invalid
+ ASSERT (Ret.Error == SBI_OK);
- return EFI_SUCCESS;
+ *ScratchSpace = (SBI_SCRATCH *)Ret.Value;
}
/**
@@ -852,7 +848,7 @@ SbiGetMscratchHartid (
@param[out] FirmwareContext The firmware context pointer.
@retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiGetFirmwareContext (
OUT EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT **FirmwareContext
@@ -860,24 +856,18 @@ SbiGetFirmwareContext (
{
SBI_SCRATCH *ScratchSpace;
SBI_PLATFORM *SbiPlatform;
- SbiRet Ret = SbiCall (SBI_EDK2_FW_EXT, SBI_EXT_FW_MSCRATCH_FUNC, 0);
-
- if (!Ret.Error) {
- ScratchSpace = (SBI_SCRATCH *)Ret.Value;
- SbiPlatform = (SBI_PLATFORM *)sbi_platform_ptr(ScratchSpace);
- *FirmwareContext = (EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *)SbiPlatform->firmware_context;
- }
- return EFI_SUCCESS;
+ SbiGetMscratch(&ScratchSpace);
+ SbiPlatform = (SBI_PLATFORM *)sbi_platform_ptr(ScratchSpace);
+ *FirmwareContext = (EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *)SbiPlatform->firmware_context;
}
/**
Set firmware context of the calling hart.
@param[in] FirmwareContext The firmware context pointer.
- @retval EFI_SUCCESS The operation succeeds.
**/
-EFI_STATUS
+VOID
EFIAPI
SbiSetFirmwareContext (
IN EFI_RISCV_OPENSBI_FIRMWARE_CONTEXT *FirmwareContext
@@ -885,13 +875,9 @@ SbiSetFirmwareContext (
{
SBI_SCRATCH *ScratchSpace;
SBI_PLATFORM *SbiPlatform;
- SbiRet Ret = SbiCall (SBI_EDK2_FW_EXT, SBI_EXT_FW_MSCRATCH_FUNC, 0);
- if (!Ret.Error) {
- ScratchSpace = (SBI_SCRATCH *)Ret.Value;
- SbiPlatform = (SBI_PLATFORM *)sbi_platform_ptr (ScratchSpace);
- SbiPlatform->firmware_context = (UINTN)FirmwareContext;
- }
+ SbiGetMscratch(&ScratchSpace);
- return EFI_SUCCESS;
+ SbiPlatform = (SBI_PLATFORM *)sbi_platform_ptr (ScratchSpace);
+ SbiPlatform->firmware_context = (UINTN)FirmwareContext;
}
--
2.31.1
next prev parent reply other threads:[~2022-01-08 5:12 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-08 4:10 [PATCH 02/79] ProcessorPkg/Library: RISC-V CPU library Abner Chang
2022-01-08 4:10 ` [PATCH 03/79] ProcessorPkg/Library: Add RISC-V exception library Abner Chang
2022-01-08 4:10 ` [PATCH 04/79] ProcessorPkg/Library: Add RISC-V timer library Abner Chang
2022-01-08 4:10 ` [PATCH 05/79] ProcessorPkg/RiscVOpensbLib: Add opensbi submodule Abner Chang
2022-01-08 4:10 ` [PATCH 06/79] ProcessorPkg/Library: Add RiscVOpensbiLib Abner Chang
2022-01-08 4:10 ` [PATCH 07/79] ProcessorPkg/Library: Add RiscVEdk2SbiLib Abner Chang
2022-01-08 4:10 ` [PATCH 08/79] ProcessorPkg/Library: RISC-V PEI Service Table Pointer library Abner Chang
2022-01-08 4:10 ` [PATCH 09/79] ProcessorPkg/CpuDxe: Add RISC-V CPU DXE driver Abner Chang
2022-01-08 4:10 ` [PATCH 10/79] ProcessorPkg/SmbiosDxe: Generic SMBIOS DXE driver for RISC-V platforms Abner Chang
2022-01-08 4:10 ` [PATCH 11/79] ProcesorPkg/Library: NULL instance of RISC-V platform timer library Abner Chang
2022-01-08 4:10 ` [PATCH 12/79] RISC-V/ProcessorPkg: RISC-V package Abner Chang
2022-01-08 4:10 ` [PATCH 13/79] PlatformPkg/Library: RISC-V Platform Temporary Memory library Abner Chang
2022-01-08 4:10 ` [PATCH 14/79] PlatformPkg/Library: Add FirmwareContextProcessorSpecificLib module Abner Chang
2022-01-08 4:10 ` [PATCH 15/79] PlatformPkg/Library: NULL instance of RiscVOpensbiPlatformLib Abner Chang
2022-01-08 4:10 ` [PATCH 16/79] PlatformPkg/Library: NULL instance of PlatformMemoryTestLib Abner Chang
2022-01-08 4:10 ` [PATCH 17/79] PlatformPkg/Library: NULL instance of PlatformUpdateProgressLib Abner Chang
2022-01-08 4:10 ` [PATCH 18/79] PlatformPkg/Library: Platform Boot Manager library Abner Chang
2022-01-08 4:10 ` [PATCH 19/79] PlatformPkg/SecMain: RISC-V SecMain module Abner Chang
2022-01-08 4:10 ` [PATCH 20/79] PlatformPkg: Add RiscVPlatformPkg Abner Chang
2022-01-08 4:10 ` [PATCH 21/79] RISC-V/PlatformPkg: Revise Readme.md Abner Chang
2022-01-08 4:10 ` Abner Chang [this message]
2022-01-08 4:10 ` [PATCH 23/79] Silicon/RISC-V: Update old SMBIOS struct filed name Abner Chang
2022-01-08 4:10 ` [PATCH 24/79] Platform/RISC-V: Consume MdeLibs.dsc.inc for RegisterFilterLib Abner Chang
2022-01-08 4:10 ` [PATCH 25/79] Silicon/RISC_V: " Abner Chang
2022-01-08 4:10 ` [PATCH 26/79] RISC-V/CpuDxe: Ignore set memory attributes failure Abner Chang
2022-01-08 4:10 ` [PATCH 27/79] Signal EndOfDxe in boot manager Abner Chang
2022-01-08 4:10 ` [PATCH 28/79] U5SeriesPkg: Deduplicate PlatformPei Abner Chang
2022-01-08 4:10 ` [PATCH 29/79] RISC-V: Split SMBIOS out of PlatformPei Abner Chang
2022-01-08 4:10 ` [PATCH 30/79] RISC-V: Use U5 SMBIOS library only for those platforms Abner Chang
2022-01-08 4:10 ` [PATCH 31/79] Silicon/RISC-V: Introduce FirmwareContext library Abner Chang
2022-01-08 4:10 ` [PATCH 32/79] Silicon/RISC-V: PeiServiceTableLib uses RiscVFirmwareContextLib Abner Chang
2022-01-08 4:10 ` [PATCH 33/79] RISC-V/PlatformPkg: Build DeviceTree and use that in SEC Abner Chang
2022-01-08 4:10 ` [PATCH 34/79] RISC-V/PlatformPkg: Add FdtPeim to pass DTB from PEI to DXE via HOB Abner Chang
2022-01-08 4:10 ` [PATCH 35/79] RISC-V/PlatformPkg: Fixup FDT from HOB and install into config table Abner Chang
2022-01-08 4:10 ` [PATCH 36/79] RISC-V: Switch to latest OpenSBI Abner Chang
2022-01-08 4:10 ` [PATCH 37/79] RISC-V: Implement ResetSystem RT call Abner Chang
2022-01-08 4:10 ` [PATCH 38/79] Move OpenSbiPlatformLib to RISC-V/PlatformPkg Abner Chang
2022-01-08 4:10 ` [PATCH 39/79] RISC-V/PlatformPkg: Update document Abner Chang
2022-01-08 4:11 ` [PATCH 40/79] RISC-V: Add RISC-V PeiCoreEntryPoint library Abner Chang
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=20220108041121.16005-21-abner.chang@hpe.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