From: "Pankaj Bansal" <pankaj.bansal@nxp.com>
To: Leif Lindholm <leif@nuviainc.com>,
"Pankaj Bansal (OSS)" <pankaj.bansal@oss.nxp.com>
Cc: Meenakshi Aggarwal <meenakshi.aggarwal@nxp.com>,
Michael D Kinney <michael.d.kinney@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>,
Varun Sethi <V.Sethi@nxp.com>,
Samer El-Haj-Mahmoud <Samer.El-Haj-Mahmoud@arm.com>,
Jon Nettleton <jon@solid-run.com>,
Ard Biesheuvel <ard.biesheuvel@linaro.org>
Subject: Re: [PATCH edk2-platforms v4 12/24] Silicon/NXP: Move RAM retrieval from SocLib
Date: Fri, 8 May 2020 05:31:53 +0000 [thread overview]
Message-ID: <VI1PR04MB5933D43CBD3CEE68515936AEF1A20@VI1PR04MB5933.eurprd04.prod.outlook.com> (raw)
In-Reply-To: <20200507101535.GQ21486@vanye>
>
> On Thu, May 07, 2020 at 07:28:30 +0000, Pankaj Bansal (OSS) wrote:
> > Hi Leif,
> >
> > > > + ARM_SMC_ARGS ArmSmcArgs;
> > > >
> > > > -Routine Description:
> > > > + ArmSmcArgs.Arg0 = SMC_DRAM_BANK_INFO;
> > > > + ArmSmcArgs.Arg1 = -1;
> > >
> > > Should this be SMC_UNK?
> >
> > No. SMC_OK / SMC_UNK is returned values.
> > While x0, x1 are arguments.
> > I have explained this in the MemoryInitPeiLib.h
>
> OK, then that -1 needs a separate #define.
OK. That I will take care.
>
> > // This SMC call works in this way:
> > // x1 = -1 : return x0: SMC_OK, x1: total DDR Ram size
> > // x1 >= number of DRAM regions to which DDR RAM is mapped : return x0:
> SMC_UNK
> > // 0 <= x1 < number of DRAM regions to which DDR RAM is mapped : return
> > // x0: SMC_OK, x1: Base address of DRAM region,
> > // x2: Size of DRAM region
> >
> > >
> > > >
> > > > + ArmCallSmc (&ArmSmcArgs);
> > > >
> > > > + if (ArmSmcArgs.Arg0 == SMC_OK) {
> > > > + return ArmSmcArgs.Arg1;
> > > > + }
> > > >
> >
> > ....
> >
> > > > - {
> > > > - Found = TRUE;
> > > > - break;
> > > > - }
> > > > - NextHob.Raw = GET_NEXT_HOB (NextHob);
> > > > + Status = GetDramRegionsInfo (DramRegions, ARRAY_SIZE
> (DramRegions));
> > > > + ASSERT_EFI_ERROR (Status);
> > >
> > > Slightly concerned here because we end up with a variable Status that
> > > is only *used* in DEBUG builds. That could lead to toolchain warnings.
> >
> > I don't think this would cause build warnings in RELEASE builds. I have tested it.
> > Also the Status is frequently being handled in this way in other places in edk2:
> >
> >
> https://github.com/tianocore/edk2/blob/master/ArmPlatformPkg/PlatformPei/
> PlatformPeim.c#L90
>
> The example you point to sets Status, overwrites it (once or twice
> depending on conditionals), then returns it.
> This patch in its current form sets Status, accesses it only in DEBUG
> builds and does not return it.
Ok. Then I can return status at the end of this function (MemoryPeim).
I still can't bring myself to just ignore the critical error status from a function.
>
> > > And I was completely serious last time around, I am OK with the return
> > > value being cast away explicitly. What I meant with that is:
> > > (VOID)GetDramRegionsInfo (DramRegions, ARRAY_SIZE (DramRegions));
> >
> > I agreed with your suggestion to return EFI_BUFFER_TOO_SMALL from
> GetDramRegionsInfo,
> > But If we discard the return value it means we are OK with some RAM not
> being reported to UEFI firmware
> > and subsequently to OS. Isn't this a critical error ?
>
> ASSERTs are only triggered in DEBUG builds, and send the processor
> into WFI.
>
> If it is a critical error (is it critical if you have found some RAM,
> but been unable to fully reconcile all of the RAM in the system?), it
> should do more than that.
>
> I am all for properly handling that situation, but this patch has
> never done that. Feel free to rework before submitting v5, or leave it
> until (if) adding ACPI support and report the condition properly
> through BERT.
I have referred reference platform lib https://github.com/tianocore/edk2/blob/master/ArmVirtPkg/Library/QemuVirtMemInfoLib/QemuVirtMemInfoPeiLibConstructor.c#L83
As per this lib, I have added ASSERTS in all the scenarios, which are critical.
I thought ASSERT means we will halt the program execution regardless of DEBUG or RELEASE build.
Can you point me to a reference platform which handles these errors using ACPI BERT methods ?
I see that in DebugLib.h :
Note that a reserved macro named MDEPKG_NDEBUG is introduced for the intention
of size reduction when compiler optimization is disabled. If MDEPKG_NDEBUG is
defined, then debug and assert related macros wrapped by it are the NULL implementations.
We have NOT defined MDEPKG_NDEBUG in our platforms for RELEASE or DEBUG builds.
Up until we have not implemented the ACPI BERT methods, can we keep it this way to avoid masking the errors?
>
> /
> Leif
next prev parent reply other threads:[~2020-05-08 5:31 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-05-01 5:49 [PATCH edk2-platforms v4 00/24] Add PEI phase to LS1043ARDB Platform Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 01/24] Silicon/NXP: Add I2c lib Pankaj Bansal
2020-05-05 15:11 ` Leif Lindholm
2020-05-01 5:49 ` [PATCH edk2-platforms v4 02/24] Silicon/NXP: changes to use I2clib in i2cdxe Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 03/24] Silicon/NXP/I2cDxe: Fix I2c Timeout with RTC Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 04/24] Silicon/Maxim: Fix bug in RtcWrite in Ds1307RtcLib Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 05/24] Silicon/Maxim: Add comments " Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 06/24] NXP/LS1043aRdb: Move Soc specific components to soc files Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 07/24] Silicon/NXP: remove print information from Soc lib Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 08/24] Silicon/NXP: remove not needed components Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 09/24] Silicon/NXP: Remove unnecessary PCDs Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 10/24] Silicon/NXP: Move dsc file Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 11/24] Platform/NXP: rename the ArmPlatformLib as per ArmPlatformPkg Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 12/24] Silicon/NXP: Move RAM retrieval from SocLib Pankaj Bansal
2020-05-06 10:44 ` Leif Lindholm
2020-05-07 7:28 ` Pankaj Bansal
2020-05-07 10:15 ` Leif Lindholm
2020-05-08 5:31 ` Pankaj Bansal [this message]
2020-05-11 10:27 ` Leif Lindholm
2020-05-01 5:49 ` [PATCH edk2-platforms v4 13/24] Platform/NXP/LS1043aRdbPkg: Add Clock retrieval APIs Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 14/24] Silicon/NXP: Use Clock retrieval PPI in modules Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 15/24] Silicon: NXP: Remove direct calls to SwapMmio* APIs Pankaj Bansal
2020-05-06 10:48 ` Leif Lindholm
2020-05-01 5:49 ` [PATCH edk2-platforms v4 16/24] Silicon/NXP: Add Chassis2 Package Pankaj Bansal
2020-05-06 10:52 ` Leif Lindholm
2020-05-01 5:49 ` [PATCH edk2-platforms v4 17/24] Silicon/NXP/LS1043A: Use ChassisLib from Chassis2 Pkg Pankaj Bansal
2020-05-06 10:54 ` Leif Lindholm
2020-05-01 5:49 ` [PATCH edk2-platforms v4 18/24] Silicon/NXP/LS1043A: Move SocLib to Soc Package Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 19/24] NXP/LS1043aRdbPkg/ArmPlatformLib: Remove extern SocInit Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 20/24] NXP: LS1043aRdbPkg: Use ArmPlatformHelper.S from ArmPlatformPkg Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 21/24] Platform/NXP: Use FV rules from ArmVirtPkg Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 22/24] Platform/NXP/LS1043aRdbPkg: Add VarStore Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 23/24] Silicon/NXP: move MemoryInitPeiLib as per PEIM structures Pankaj Bansal
2020-05-01 5:49 ` [PATCH edk2-platforms v4 24/24] Platform/NXP/LS1043aRdbPkg: Add PEI Phase Pankaj Bansal
2020-05-06 10:57 ` Leif Lindholm
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=VI1PR04MB5933D43CBD3CEE68515936AEF1A20@VI1PR04MB5933.eurprd04.prod.outlook.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