From: "Rohit Mathew" <rohit.mathew@arm.com>
To: Ard Biesheuvel <ardb@kernel.org>,devel@edk2.groups.io
Subject: Re: [edk2-devel] [edk2][PATCH V1 1/1] ArmPlatformPkg/PrePeiCore: Explicitly invoke constructor for SEC phase
Date: Mon, 20 Jun 2022 06:49:53 -0700 [thread overview]
Message-ID: <10348.1655732993084547107@groups.io> (raw)
In-Reply-To: <CAMj1kXFuJOtUc4iugAehLQbFa51B-5+p10sVNcHzYqCuYguqjQ@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3508 bytes --]
Hi Ard,
Apologies, I missed your response.
On Tue, May 3, 2022 at 09:43 AM, Ard Biesheuvel wrote:
>
> (+ Rebecca)
>
> On Tue, 8 Mar 2022 at 12:55, Rohit Mathew <rohit.mathew@arm.com> wrote:
>
>> PrePeiCore's CEntry function calls DebugLib library's print API before
>> the library is initialized. So, invoke the constructor in the SEC phase
>> to call into initialization functions associated with libraries linked
>> with this particular module. This change is essential to initialize
>> uart for SEC.
>>
>> Signed-off-by: Rohit Mathew <rohit.mathew@arm.com>
>> ---
>> ArmPlatformPkg/PrePeiCore/PrePeiCore.h | 11 ++++++++++-
>> ArmPlatformPkg/PrePeiCore/PrePeiCore.c | 9 +++++++--
>> 2 files changed, 17 insertions(+), 3 deletions(-)
>>
>> Link to github branch with the patches in this series -
>> https://github.com/rohit-arm/edk2/tree/sec_constructor_issue
>>
>> diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.h
>> b/ArmPlatformPkg/PrePeiCore/PrePeiCore.h
>> index 0345dd7bdd2a..d2491aa586ee 100644
>> --- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.h
>> +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.h
>> @@ -1,7 +1,7 @@
>> /** @file
>> Main file supporting the transition to PEI Core in Normal World for
>> Versatile Express
>>
>> - Copyright (c) 2011, ARM Limited. All rights reserved.
>> + Copyright (c) 2011-2022, ARM Limited. All rights reserved.
>>
>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> @@ -73,4 +73,13 @@ PeiCommonExceptionEntry (
>> IN UINTN LR
>> );
>>
>> +/*
>> + * Constructor for SEC phase
>> + */
>> +VOID
>> +EFIAPI
>> +ProcessLibraryConstructorList (
>> + VOID
>> + );
>> +
>
> Why do we need this? Can't we just include PiPei.h or something like that?
PiPei.h has already been included in ArmPlatformPkg/PrePeiCore/PrePeiCore.h. I tried including ArmPlatformPkg/PrePi/PrePi.h which had ProcessLibraryConstructorList prototype, but both PrePeicore.h and PrePi.h have there own versions for "VOID PrimaryMain(*)" which resulted in conflict.
>
>
>> #endif
>> diff --git a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
>> b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
>> index 6dd9bcdea24f..b5f7d2f05b1e 100644
>> --- a/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
>> +++ b/ArmPlatformPkg/PrePeiCore/PrePeiCore.c
>> @@ -1,7 +1,7 @@
>> /** @file
>> Main file supporting the transition to PEI Core in Normal World for
>> Versatile Express
>>
>> - Copyright (c) 2011-2014, ARM Limited. All rights reserved.
>> + Copyright (c) 2011-2022, ARM Limited. All rights reserved.
>>
>> SPDX-License-Identifier: BSD-2-Clause-Patent
>>
>> @@ -86,7 +86,12 @@ CEntryPoint (
>> ArmEnableVFP ();
>> }
>>
>> - // Note: The MMU will be enabled by MemoryPeim. Only the primary core
>> will have the MMU on.
>> + // In the Sec phase, explicitly invoke the library constructors. This
>> helps
>> + // the DebugPrint library to be initialized before it is used by
>> subsequent
>> + // code executed in the sec phase.
>
> Please drop the reference to DebugLib - calling library constructors
> could be needed for any library dependency.
Sure.
>
>
>> + ProcessLibraryConstructorList();
>> +
>> + //Note: The MMU will be enabled by MemoryPeim. Only the primary core
>> will have the MMU on.
>
> Please leave this comment as before.
Will do that.
>
>
>> // If not primary Jump to Secondary Main
>> if (ArmPlatformIsPrimaryCore (MpId)) {
>> --
>> 2.25.1
>
>
Regards,
Rohit
[-- Attachment #2: Type: text/html, Size: 3874 bytes --]
prev parent reply other threads:[~2022-06-20 13:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-08 11:55 [edk2-platforms][PATCH V1 1/1] ArmPlatformPkg/PrePeiCore: Explicitly invoke constructor for SEC phase rohit.mathew
2022-05-03 8:43 ` Ard Biesheuvel
2022-06-20 13:49 ` Rohit Mathew [this message]
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=10348.1655732993084547107@groups.io \
--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