public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Laszlo Ersek" <lersek@redhat.com>
To: "Kinney, Michael D" <michael.d.kinney@intel.com>,
	"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Gao, Liming" <liming.gao@intel.com>
Subject: Re: [edk2-devel] [Patch V2 1/6] MdePkg: Add PcdSpeculationBarrierType
Date: Tue, 30 Apr 2019 17:43:19 +0200	[thread overview]
Message-ID: <4c23e600-15b4-0754-a0f0-11ec04884c46@redhat.com> (raw)
In-Reply-To: <E92EE9817A31E24EB0585FDF735412F5B9CA02E7@ORSMSX113.amr.corp.intel.com>

On 04/30/19 17:16, Kinney, Michael D wrote:
> Laszlo,
> 
> I tried to design this PCD so it could be used for other
> architectures as needed in the future by expanding the enum.
> I marked enum values 0x01(LFENCE) and 0x02(CPUID) for
> IA32/X64.  Value 0x00 (NOP) is for all archs.

Ah, good point. In fact, this has more or less crossed my mind, but I
ruled out the idea, as (I thought) a multi-arch PCD would have to be a
bitmap, not a simple enum.

Of course, I was wrong about that -- in any given platform build, the
PCD doesn't have to contain the right setting for every possible
architecture supported by edk2. It only need contain the right setting
for the arch of the current platform build.

So yes, this design is great; please apply my R-b.

Thanks
Laszlo



>> -----Original Message-----
>> From: devel@edk2.groups.io
>> [mailto:devel@edk2.groups.io] On Behalf Of Laszlo Ersek
>> Sent: Tuesday, April 30, 2019 4:47 AM
>> To: devel@edk2.groups.io; Kinney, Michael D
>> <michael.d.kinney@intel.com>
>> Cc: Gao, Liming <liming.gao@intel.com>
>> Subject: Re: [edk2-devel] [Patch V2 1/6] MdePkg: Add
>> PcdSpeculationBarrierType
>>
>> On 04/30/19 03:30, Michael D Kinney wrote:
>>> Add
>> gEfiMdePkgTokenSpaceGuid.PcdSpeculationBarrierType that
>>> uses the PCD type FixedAtBuild.  This performs a
>> build time
>>> selection for the type of speculation barrier to use
>> in the
>>> BaseLib function SpeculationBarrier().  The
>> recommended
>>> speculation barrier for x86 is LFENCE and this is the
>> default
>>> value for this PCD.  x86 CPUs that do not support
>> LFENCE must
>>> select one of the other supported values which
>> includes CPUID
>>> and nothing.
>>>
>>> Cc: Liming Gao <liming.gao@intel.com>
>>> Signed-off-by: Michael D Kinney
>> <michael.d.kinney@intel.com>
>>> ---
>>>  MdePkg/MdePkg.dec | 9 +++++++++
>>>  MdePkg/MdePkg.uni | 8 ++++++++
>>>  2 files changed, 17 insertions(+)
>>>
>>> diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec
>>> index e2ea8fff66..28d4a966c2 100644
>>> --- a/MdePkg/MdePkg.dec
>>> +++ b/MdePkg/MdePkg.dec
>>> @@ -2062,6 +2062,15 @@ [PcdsFixedAtBuild]
>>>    # @Prompt Enable control flow enforcement.
>>>
>> gEfiMdePkgTokenSpaceGuid.PcdControlFlowEnforcementPrope
>> rtyMask|0x0|UINT32|0x30001017
>>>
>>> +  ## Indicates the type of instruction sequence to
>> use for a speculation
>>> +  #  barrier.  The default instruction sequence is
>> LFENCE.<BR><BR>
>>> +  #   0x00 - No operation.<BR>
>>> +  #   0x01 - LFENCE (IA32/X64).<BR>
>>> +  #   0x02 - CPUID  (IA32/X64).<BR>
>>> +  #   Other - reserved
>>> +  # @Prompt Speculation Barrier Type.
>>> +
>> gEfiMdePkgTokenSpaceGuid.PcdSpeculationBarrierType|0x01
>> |UINT8|0x30001018
>>> +
>>>  [PcdsFixedAtBuild,PcdsPatchableInModule]
>>>    ## Indicates the maximum length of unicode string
>> used in the following
>>>    #  BaseLib functions: StrLen(), StrSize(),
>> StrCmp(), StrnCmp(), StrCpy(), StrnCpy()<BR><BR>
>>
>> In MdePkg.dec, we have:
>> - [Includes.X64]
>> - [LibraryClasses.X64]
>> - [Guids.X64]
>>
>> but no PCD declarations that are architecture-specific.
>> Is that
>> intentional? Because, this PCD could be a good
>> candidate for "IA32/X64
>> only". (Looking at the next patch too.)
>>
>> But, that's just my curiosity.
>>
>> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
>>
>> Thanks
>> Laszlo
>>
>>
>>> diff --git a/MdePkg/MdePkg.uni b/MdePkg/MdePkg.uni
>>> index c359bb4b5b..5c1fa24065 100644
>>> --- a/MdePkg/MdePkg.uni
>>> +++ b/MdePkg/MdePkg.uni
>>> @@ -149,6 +149,14 @@
>>>
>> " BIT0 - SMM CET Shadow Stack is enabled.<BR>\n"
>>>
>> " Other - reserved"
>>>
>>> +#string
>> STR_gEfiMdePkgTokenSpaceGuid_PcdSpeculationBarrierType_
>> PROMPT  #language en-US "Speculation Barrier Type."
>>> +
>>> +#string
>> STR_gEfiMdePkgTokenSpaceGuid_PcdSpeculationBarrierType_
>> HELP  #language en-US  "Indicates the type of
>> instruction sequence to use for a speculation.barrier.
>> The default instruction sequence is LFENCE.<BR><BR>\n"
>>> +
>> "0x00 - No operation.<BR>\n"
>>> +
>> "0x01 - LFENCE (IA32/X64).<BR>\n"
>>> +
>> "0x02 - CPUID  (IA32/X64).<BR>\n"
>>> +
>> "Other - reserved"
>>> +
>>>  #string
>> STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumAsciiStringLengt
>> h_PROMPT  #language en-US "Maximum Length of Ascii
>> String"
>>>
>>>  #string
>> STR_gEfiMdePkgTokenSpaceGuid_PcdMaximumAsciiStringLengt
>> h_HELP  #language en-US "Sets the maximum number of
>> ASCII characters used for string functions.  This
>> affects the following BaseLib functions: AsciiStrLen(),
>> AsciiStrSize(), AsciiStrCmp(), AsciiStrnCmp(),
>> AsciiStrCpy(), AsciiStrnCpy(). <BR><BR>\n"
>>>
>>
>>
>> 
> 


  reply	other threads:[~2019-04-30 15:43 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-30  1:30 [Patch V2 0/6] Resolve Quark build and boot issues Michael D Kinney
2019-04-30  1:30 ` [Patch V2 1/6] MdePkg: Add PcdSpeculationBarrierType Michael D Kinney
2019-04-30 11:47   ` [edk2-devel] " Laszlo Ersek
2019-04-30 15:16     ` Michael D Kinney
2019-04-30 15:43       ` Laszlo Ersek [this message]
2019-04-30  1:30 ` [Patch V2 2/6] MdePkg/BaseLib: Use PcdSpeculationBarrierType Michael D Kinney
2019-04-30 11:49   ` [edk2-devel] " Laszlo Ersek
2019-04-30 15:17     ` Michael D Kinney
2019-04-30 22:24   ` Brian J. Johnson
2019-04-30  1:30 ` [Patch V2 3/6] QuarkPlatformPkg: Set PcdSpeculationBarrierType to CPUID Michael D Kinney
2019-04-30  1:30 ` [Patch V2 4/6] UefiCpuPkg/MpInitLib: Avoid MSR_IA32_APIC_BASE for single core Michael D Kinney
2019-04-30 10:31   ` Laszlo Ersek
2019-04-30  1:30 ` [Patch V2 5/6] QuarkSocPkg/SmmAccessDxe: Set region to UC on SMRAM close Michael D Kinney
2019-04-30  1:30 ` [Patch V2 6/6] QuarkPlatformPkg/PlatformInit: Resolve ResetSystemLib name collision Michael D Kinney

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=4c23e600-15b4-0754-a0f0-11ec04884c46@redhat.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