From: "Leif Lindholm" <leif@nuviainc.com>
To: "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: Mon, 11 May 2020 11:27:00 +0100 [thread overview]
Message-ID: <20200511102700.GU21486@vanye> (raw)
In-Reply-To: <VI1PR04MB5933D43CBD3CEE68515936AEF1A20@VI1PR04MB5933.eurprd04.prod.outlook.com>
Hi Pankaj,
On Fri, May 08, 2020 at 05:31:53 +0000, Pankaj Bansal (OSS) wrote:
> > > > > - {
> > > > > - 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.
If it is considered critical, it needs to be handled. If it is not
critical (but would, for example, be useful to log and tell someone
about) it can be explicitly cast away until such a time as the full
error reporting can be iplemented. That should not be confused for
ignoring it.
> > > > 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.
Adding the ASSERT is good hygiene, I have no objection to that.
> I thought ASSERT means we will halt the program execution regardless
> of DEBUG or RELEASE build.
Dying without attempted recovery is not an appropriate response for a
RELEASE build. Especially in the case where we have successfully
located memory to use, but have not fully managed to reconcile all
entries.
> Can you point me to a reference platform which handles these errors
> using ACPI BERT methods ?
Sadly, no. The Hisilicon 1620 platform implements BERT support as part
of its APEI driver, but it does not appear to actually log anything.
> 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?
It would be unfortunate if the NXP platforms behaved differently from
the majority of other EDK2 platforms. It would also mean that if
someone was to create a derivative platform (which I expect is what
NXP wants), then various drivers in this reference implementation
would start failing to build if *they* added MDEPKG_NDEBUG to *their*
.dsc.
So it would be much preferred if you could add the MDEPKG_NDEBUG
stanzas to RELEASE CC_FLAGS.
But thank you for explaining why I wasn't seeing the "set but not
used" warning :)
Best Regards,
Leif
next prev parent reply other threads:[~2020-05-11 10:27 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
2020-05-11 10:27 ` Leif Lindholm [this message]
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=20200511102700.GU21486@vanye \
--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