public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Marc W Chen" <marc.w.chen@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
	"lersek@redhat.com" <lersek@redhat.com>,
	"Ni, Ray" <ray.ni@intel.com>,
	"Gao, Liming" <liming.gao@intel.com>
Cc: "Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [PATCH] MdePkg: Add MmAccess and MmControl definition.
Date: Sat, 10 Aug 2019 03:32:52 +0000	[thread overview]
Message-ID: <AF60760DA41C634EBADDE512AA3D4E537E310B6D@PGSMSX108.gar.corp.intel.com> (raw)
In-Reply-To: <324c388e-b964-f2c9-3719-e47293649351@redhat.com>

Hi Liming

Since the SmmAccess.h of MdeModulePkg removal is still under discussion, can we push the MmAccess.h and MmControl.h to MdePkg first? I have other tasks pending by this.
We can keep discussing the SmmAccess after push the code.

Thanks,
Marc

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Laszlo
> Ersek
> Sent: Thursday, August 8, 2019 12:11 AM
> To: Ni, Ray <ray.ni@intel.com>; Chen, Marc W <marc.w.chen@intel.com>;
> devel@edk2.groups.io; Gao, Liming <liming.gao@intel.com>
> Cc: Kinney, Michael D <michael.d.kinney@intel.com>
> Subject: Re: [edk2-devel] [PATCH] MdePkg: Add MmAccess and MmControl
> definition.
> 
> On 08/06/19 12:08, Ni, Ray wrote:
> > Laszlo,
> > Do you want to avoid touching the OvmfPkg due the file removal in
> MdeModulePkg?
> 
> My main problem with this *specific* update proposal is that the
> identifiers (type names and such) that would be subject to removal were
> publicly specified in earlier PI spec releases.
> 
> I don't suggest that we maintain two parallel sets of typedefs and such
> in edk2. It's fine to keep the new "MM" nomenclature the main one. But
> we should keep the "SMM" set of terms too, as a thin wrapper, if that's
> technically feasible.
> 
> If we remove "SMM", that will not only affect OvmfPkg unpleasantly, but
> a bunch of other, out-of-tree code. And the reason I suddenly care about
> out-of-tree code is that such code was written against a public industry
> spec (= earlier versions of the PI spec).
> 
> I don't think that the simplicity that would come from removing "SMM"
> altogether, is well-balanced against the pain that it would cause for
> platforms.
> 
> Earlier this was solved in the following commits:
> - 07c6a47e70ba ("MdePkg: Add new definitions for Management Mode.",
> 2017-08-29)
> - 2f208e59e4b9 ("MdePkg: Reference new definitions for Management
> Mode.", 2017-08-29)
> 
> Thanks
> Laszlo
> 
> > I prefer to remove the files in MdeModulePkg to avoid future confusion.
> >
> > Thanks,
> > Ray
> >
> >> -----Original Message-----
> >> From: Chen, Marc W
> >> Sent: Tuesday, August 6, 2019 4:57 PM
> >> To: devel@edk2.groups.io; lersek@redhat.com; Ni, Ray
> <ray.ni@intel.com>;
> >> Gao, Liming <liming.gao@intel.com>
> >> Cc: Kinney, Michael D <michael.d.kinney@intel.com>
> >> Subject: RE: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> MmControl
> >> definition.
> >>
> >> Hi Liming and Ray
> >>
> >> Do you also agree?
> >>
> >> Thanks,
> >> Marc
> >>
> >>> -----Original Message-----
> >>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> Laszlo
> >>> Ersek
> >>> Sent: Friday, August 2, 2019 10:14 AM
> >>> To: devel@edk2.groups.io; Chen, Marc W <marc.w.chen@intel.com>; Ni,
> >>> Ray <ray.ni@intel.com>; Gao, Liming <liming.gao@intel.com>
> >>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>
> >>> Subject: Re: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> >> MmControl
> >>> definition.
> >>>
> >>> On 08/01/19 12:15, Marc W Chen wrote:
> >>>> Yes, my purpose is to avoid platform code update if the package is
> >>>> allowed
> >>> to use MdeModulePkg like OvmfPkg.
> >>>> For those packages that cannot depend on MdeModulePkg must
> change
> >> to
> >>> use new definition.
> >>>
> >>> Agreed.
> >>>
> >>> Thanks!
> >>> Laszlo
> >>>
> >>>>> -----Original Message-----
> >>>>> From: Ni, Ray
> >>>>> Sent: Thursday, August 1, 2019 6:04 PM
> >>>>> To: Chen, Marc W <marc.w.chen@intel.com>; Gao, Liming
> >>>>> <liming.gao@intel.com>; devel@edk2.groups.io
> >>>>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>
> >>>>> Subject: RE: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> >>> MmControl
> >>>>> definition.
> >>>>>
> >>>>> Marc,
> >>>>> Is the purpose to avoid platform code update with the wrapper
> >>>>> header
> >>> file in
> >>>>> MdeModulePkg?
> >>>>> Certain platforms they may require to not depend on MdeModulePkg
> >>>>> but just depend on MdePkg.
> >>>>> Having SmmAccess.h in MdeModulePkg doesn't help.
> >>>>>
> >>>>> It also bring confusing.
> >>>>>
> >>>>> Thanks,
> >>>>> Ray
> >>>>>
> >>>>>> -----Original Message-----
> >>>>>> From: Chen, Marc W
> >>>>>> Sent: Thursday, August 1, 2019 4:53 PM
> >>>>>> To: Gao, Liming <liming.gao@intel.com>; devel@edk2.groups.io
> >>>>>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Ni, Ray
> >>>>>> <ray.ni@intel.com>
> >>>>>> Subject: RE: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> >>> MmControl
> >>>>>> definition.
> >>>>>>
> >>>>>> Hi Liming
> >>>>>>
> >>>>>> Another thought, do you think it is ok to keep SmmAccess.h in
> >>>>>> MdeModulePkg? We can use #define and typedef to convert
> >> MmAccess
> >>> to
> >>>>>> SmmAccess, just like current SmmAccess Protocol in MdePkg.
> >>>>>>
> >>>>>> Thanks,
> >>>>>> Marc
> >>>>>>
> >>>>>>> -----Original Message-----
> >>>>>>> From: Chen, Marc W
> >>>>>>> Sent: Thursday, August 1, 2019 4:48 PM
> >>>>>>> To: Gao, Liming <liming.gao@intel.com>; devel@edk2.groups.io
> >>>>>>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Ni, Ray
> >>>>>>> <ray.ni@intel.com>
> >>>>>>> Subject: RE: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> >>>>>> MmControl
> >>>>>>> definition.
> >>>>>>>
> >>>>>>> Hi Liming
> >>>>>>>
> >>>>>>> Since there are multiple packages are still using SmmAccess.h, we
> >>>>>>> need to change all packages to use MmAccess.h instead of
> >>>>>>> SmmAccess.h first, then clean up SmmAccess.h from
> MdeModulePkg
> >> will be the last step.
> >>>>>>> Below are the packages that has "include <Ppi/SmmAccess.h>" for
> >>>>>>> your reference.
> >>>>>>> *	Edk2 repo:
> >>>>>>> o	MdeModulePkg
> >>>>>>> o	OvmfPkg
> >>>>>>> o	UefiCpuPkg
> >>>>>>> *	Edk2Platform repo:
> >>>>>>> o	MinPlatformPkg
> >>>>>>> o	QuarkSocPkg
> >>>>>>>
> >>>>>>> Thanks,
> >>>>>>> Marc
> >>>>>>>
> >>>>>>>> -----Original Message-----
> >>>>>>>> From: Gao, Liming
> >>>>>>>> Sent: Thursday, August 1, 2019 4:42 PM
> >>>>>>>> To: devel@edk2.groups.io; Chen, Marc W
> <marc.w.chen@intel.com>
> >>>>>>>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Ni, Ray
> >>>>>>>> <ray.ni@intel.com>
> >>>>>>>> Subject: RE: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> >>>>>> MmControl
> >>>>>>>> definition.
> >>>>>>>>
> >>>>>>>> Marc:
> >>>>>>>>   The change is good. Reviewed-by: Liming Gao
> >>> <liming.gao@intel.com>
> >>>>>>>>
> >>>>>>>>   Besides, I see BZ also mention to remove the one in
> >> MdeModulePkg.
> >>>>>>>> Have you the following patches for the change in MdeModulePkg?
> >>>>>>>>
> >>>>>>>> Thanks
> >>>>>>>> Liming
> >>>>>>>>> -----Original Message-----
> >>>>>>>>> From: devel@edk2.groups.io [mailto:devel@edk2.groups.io] On
> >>>>> Behalf
> >>>>>>>>> Of Marc W Chen
> >>>>>>>>> Sent: Monday, July 29, 2019 12:26 PM
> >>>>>>>>> To: devel@edk2.groups.io
> >>>>>>>>> Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao,
> Liming
> >>>>>>>>> <liming.gao@intel.com>; Ni, Ray <ray.ni@intel.com>
> >>>>>>>>> Subject: [edk2-devel] [PATCH] MdePkg: Add MmAccess and
> >>>>> MmControl
> >>>>>>>>> definition.
> >>>>>>>>>
> >>>>>>>>> EFI MmAccess and MmControl PPIs are defined in the PI 1.5
> >>>>>> specification.
> >>>>>>>>>
> >>>>>>>>> Cc: Michael D Kinney <michael.d.kinney@intel.com>
> >>>>>>>>> Cc: Liming Gao <liming.gao@intel.com>
> >>>>>>>>> Cc: Ray Ni <ray.ni@intel.com>
> >>>>>>>>> Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=2023
> >>>>>>>>> Signed-off-by: Marc W Chen <marc.w.chen@intel.com>
> >>>>>>>>> ---
> >>>>>>>>> MdePkg/Include/Ppi/MmAccess.h  | 155
> >>>>>>>>> +++++++++++++++++++++++++++++++++++++++++
> >>>>>>>>> MdePkg/Include/Ppi/MmControl.h |  90
> >>>>>> ++++++++++++++++++++++++
> >>>>>>>>> MdePkg/MdePkg.dec              |   6 ++
> >>>>>>>>> 3 files changed, 251 insertions(+) create mode 100644
> >>>>>>>>> MdePkg/Include/Ppi/MmAccess.h create mode 100644
> >>>>>>>>> MdePkg/Include/Ppi/MmControl.h
> >>>>>>>>>
> >>>>>>>>> diff --git a/MdePkg/Include/Ppi/MmAccess.h
> >>>>>>>>> b/MdePkg/Include/Ppi/MmAccess.h new file mode 100644
> index
> >>>>>>>>> 0000000000..636e7288a0
> >>>>>>>>> --- /dev/null
> >>>>>>>>> +++ b/MdePkg/Include/Ppi/MmAccess.h
> >>>>>>>>> @@ -0,0 +1,155 @@
> >>>>>>>>> +/** @file
> >>>>>>>>> +  EFI MM Access PPI definition.
> >>>>>>>>> +
> >>>>>>>>> +  This PPI is used to control the visibility of the MMRAM on
> >>>>>>>>> + the
> >>>>>> platform.
> >>>>>>>>> +  The EFI_PEI_MM_ACCESS_PPI abstracts the location and
> >>>>>>>>> + characteristics
> >>>>>>> of
> >>>>>>>>> MMRAM. The
> >>>>>>>>> +  principal functionality found in the memory controller
> >>>>>>>>> + includes the
> >>>>>>>> following:
> >>>>>>>>> +  - Exposing the MMRAM to all non-MM agents, or the "open"
> >>>>>>>>> + state
> >>>>>>>>> +  - Shrouding the MMRAM to all but the MM agents, or the
> >> "closed"
> >>>>>>>>> + state
> >>>>>>>>> +  - Preserving the system integrity, or "locking" the MMRAM,
> >>>>>>>>> + such that
> >>>>>>> the
> >>>>>>>>> settings cannot be
> >>>>>>>>> +    perturbed by either boot service or runtime agents
> >>>>>>>>> +
> >>>>>>>>> +  Copyright (c) 2019, Intel Corporation. All rights
> >>>>>>>>> + reserved.<BR>
> >>>>>>>>> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> >>>>>>>>> +
> >>>>>>>>> +  @par Revision Reference:
> >>>>>>>>> +  This PPI is introduced in PI Version 1.5.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +
> >>>>>>>>> +#ifndef _MM_ACCESS_PPI_H_
> >>>>>>>>> +#define _MM_ACCESS_PPI_H_
> >>>>>>>>> +
> >>>>>>>>> +#define EFI_PEI_MM_ACCESS_PPI_GUID \
> >>>>>>>>> +  { 0x268f33a9, 0xcccd, 0x48be, { 0x88, 0x17, 0x86, 0x5, 0x3a,
> >>>>>>>>> +0xc3, 0x2e,
> >>>>>>>>> 0xd6 }}
> >>>>>>>>> +
> >>>>>>>>> +typedef struct _EFI_PEI_MM_ACCESS_PPI
> >> EFI_PEI_MM_ACCESS_PPI;
> >>>>>>>>> +
> >>>>>>>>> +/**
> >>>>>>>>> +  Opens the MMRAM area to be accessible by a PEIM.
> >>>>>>>>> +
> >>>>>>>>> +  This function "opens" MMRAM so that it is visible while not
> >>>>>>>>> + inside of
> >>>>>>> MM.
> >>>>>>>>> The function should
> >>>>>>>>> +  return EFI_UNSUPPORTED if the hardware does not support
> >>>>>>>>> + hiding of
> >>>>>>>>> MMRAM. The function
> >>>>>>>>> +  should return EFI_DEVICE_ERROR if the MMRAM
> configuration
> >> is
> >>>>>> locked.
> >>>>>>>>> +
> >>>>>>>>> +  @param  PeiServices            An indirect pointer to the PEI
> Services
> >>>>>> Table
> >>>>>>>>> published by the PEI Foundation.
> >>>>>>>>> +  @param  This                   The EFI_PEI_MM_ACCESS_PPI instance.
> >>>>>>>>> +  @param  DescriptorIndex        The region of MMRAM to Open.
> >>>>>>>>> +
> >>>>>>>>> +  @retval EFI_SUCCESS            The operation was successful.
> >>>>>>>>> +  @retval EFI_UNSUPPORTED        The system does not support
> >>>>> opening
> >>>>>>>> and
> >>>>>>>>> closing of MMRAM.
> >>>>>>>>> +  @retval EFI_DEVICE_ERROR       MMRAM cannot be opened,
> >>>>> perhaps
> >>>>>>>>> because it is locked.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +typedef
> >>>>>>>>> +EFI_STATUS
> >>>>>>>>> +(EFIAPI *EFI_PEI_MM_OPEN)(
> >>>>>>>>> +  IN EFI_PEI_SERVICES                **PeiServices,
> >>>>>>>>> +  IN EFI_PEI_MM_ACCESS_PPI           *This,
> >>>>>>>>> +  IN UINTN                           DescriptorIndex
> >>>>>>>>> +  );
> >>>>>>>>> +
> >>>>>>>>> +/**
> >>>>>>>>> +  Inhibits access to the MMRAM.
> >>>>>>>>> +
> >>>>>>>>> +  This function "closes" MMRAM so that it is not visible while
> >>>>>>>>> + outside of
> >>>>>>>> MM.
> >>>>>>>>> The function should
> >>>>>>>>> +  return EFI_UNSUPPORTED if the hardware does not support
> >>>>>>>>> + hiding of
> >>>>>>>>> MMRAM.
> >>>>>>>>> +
> >>>>>>>>> +  @param  PeiServices            An indirect pointer to the PEI
> Services
> >>>>>> Table
> >>>>>>>>> published by the PEI Foundation.
> >>>>>>>>> +  @param  This                   The EFI_PEI_MM_ACCESS_PPI instance.
> >>>>>>>>> +  @param  DescriptorIndex        The region of MMRAM to Close.
> >>>>>>>>> +
> >>>>>>>>> +  @retval EFI_SUCCESS            The operation was successful.
> >>>>>>>>> +  @retval EFI_UNSUPPORTED        The system does not support
> >>>>> opening
> >>>>>>>> and
> >>>>>>>>> closing of MMRAM.
> >>>>>>>>> +  @retval EFI_DEVICE_ERROR       MMRAM cannot be closed.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +typedef
> >>>>>>>>> +EFI_STATUS
> >>>>>>>>> +(EFIAPI *EFI_PEI_MM_CLOSE)(
> >>>>>>>>> +  IN EFI_PEI_SERVICES                **PeiServices,
> >>>>>>>>> +  IN EFI_PEI_MM_ACCESS_PPI           *This,
> >>>>>>>>> +  IN UINTN                           DescriptorIndex
> >>>>>>>>> +  );
> >>>>>>>>> +
> >>>>>>>>> +/**
> >>>>>>>>> +  This function prohibits access to the MMRAM region. This
> >>>>>>>>> +function is
> >>>>>>>> usually
> >>>>>>>>> implemented such
> >>>>>>>>> +  that it is a write-once operation.
> >>>>>>>>> +
> >>>>>>>>> +  @param  PeiServices            An indirect pointer to the PEI
> Services
> >>>>>> Table
> >>>>>>>>> published by the PEI Foundation.
> >>>>>>>>> +  @param  This                   The EFI_PEI_MM_ACCESS_PPI instance.
> >>>>>>>>> +  @param  DescriptorIndex        The region of MMRAM to Lock.
> >>>>>>>>> +
> >>>>>>>>> +  @retval EFI_SUCCESS            The operation was successful.
> >>>>>>>>> +  @retval EFI_UNSUPPORTED        The system does not support
> >>>>> opening
> >>>>>>>> and
> >>>>>>>>> closing of MMRAM.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +typedef
> >>>>>>>>> +EFI_STATUS
> >>>>>>>>> +(EFIAPI *EFI_PEI_MM_LOCK)(
> >>>>>>>>> +  IN EFI_PEI_SERVICES                **PeiServices,
> >>>>>>>>> +  IN EFI_PEI_MM_ACCESS_PPI           *This,
> >>>>>>>>> +  IN UINTN                           DescriptorIndex
> >>>>>>>>> +  );
> >>>>>>>>> +
> >>>>>>>>> +/**
> >>>>>>>>> +  Queries the memory controller for the possible regions that
> >>>>>>>>> +will support
> >>>>>>>>> MMRAM.
> >>>>>>>>> +
> >>>>>>>>> +  This function describes the MMRAM regions.
> >>>>>>>>> +  This data structure forms the contract between the
> >> MM_ACCESS
> >>>>> and
> >>>>>>>>> MM_IPL drivers. There is an
> >>>>>>>>> +  ambiguity when any MMRAM region is remapped. For
> example,
> >> on
> >>>>>>> some
> >>>>>>>>> chipsets, some MMRAM
> >>>>>>>>> +  regions can be initialized at one physical address but is
> >>>>>>>>> + later accessed at
> >>>>>>>>> another processor address.
> >>>>>>>>> +  There is currently no way for the MM IPL driver to know that
> >>>>>>>>> + it must use
> >>>>>>>>> two different addresses
> >>>>>>>>> +  depending on what it is trying to do. As a result, initial
> >>>>>>>>> + configuration and
> >>>>>>>>> loading can use the
> >>>>>>>>> +  physical address PhysicalStart while MMRAM is open.
> However,
> >>>>>>>>> + once
> >>>>>>> the
> >>>>>>>>> region has been
> >>>>>>>>> +  closed and needs to be accessed by agents in MM, the
> >>>>>>>>> + CpuStart address
> >>>>>>>>> must be used.
> >>>>>>>>> +  This PPI publishes the available memory that the chipset can
> >>>>>>>>> + shroud for
> >>>>>>>> the
> >>>>>>>>> use of installing code.
> >>>>>>>>> +  These regions serve the dual purpose of describing which
> >>>>>>>>> + regions have
> >>>>>>>>> been open, closed, or locked.
> >>>>>>>>> +  In addition, these regions may include overlapping memory
> >>>>>>>>> + ranges,
> >>>>>>>>> depending on the chipset
> >>>>>>>>> +  implementation. The latter might include a chipset that
> >>>>>>>>> + supports T-SEG,
> >>>>>>>>> where memory near the top
> >>>>>>>>> +  of the physical DRAM can be allocated for MMRAM too.
> >>>>>>>>> +  The key thing to note is that the regions that are described
> >>>>>>>>> + by the PPI
> >>>>>>> are
> >>>>>>>> a
> >>>>>>>>> subset of the capabilities
> >>>>>>>>> +  of the hardware.
> >>>>>>>>> +
> >>>>>>>>> +  @param  PeiServices            An indirect pointer to the PEI
> Services
> >>>>>> Table
> >>>>>>>>> published by the PEI Foundation.
> >>>>>>>>> +  @param  This                   The EFI_PEI_MM_ACCESS_PPI instance.
> >>>>>>>>> +  @param  MmramMapSize           A pointer to the size, in bytes,
> of
> >>>>> the
> >>>>>>>>> MmramMemoryMap buffer. On input, this value is
> >>>>>>>>> +                                 the size of the buffer that
> >>>>>>>>> + is allocated by the caller. On
> >>>>>>>>> output, it is the size of the
> >>>>>>>>> +                                 buffer that was returned by
> >>>>>>>>> + the firmware if the buffer
> >>>>>>>> was
> >>>>>>>>> large enough, or, if the
> >>>>>>>>> +                                 buffer was too small, the
> >>>>>>>>> + size of the buffer that is
> >>>>>>>> needed to
> >>>>>>>>> contain the map.
> >>>>>>>>> +  @param MmramMap                A pointer to the buffer in which
> >>>>>> firmware
> >>>>>>>>> places the current memory map. The map is
> >>>>>>>>> +                                 an array of
> >>>>>>>>> + EFI_MMRAM_DESCRIPTORs
> >>>>>>>>> +
> >>>>>>>>> +  @retval EFI_SUCCESS            The chipset supported the given
> >>>>> resource.
> >>>>>>>>> +  @retval EFI_BUFFER_TOO_SMALL   The MmramMap
> parameter
> >>> was
> >>>>>> too
> >>>>>>>>> small. The current
> >>>>>>>>> +                                 buffer size needed to hold
> >>>>>>>>> + the memory map is
> >>>>>>> returned
> >>>>>>>> in
> >>>>>>>>> +                                 MmramMapSize.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +typedef
> >>>>>>>>> +EFI_STATUS
> >>>>>>>>> +(EFIAPI *EFI_PEI_MM_CAPABILITIES)(
> >>>>>>>>> +  IN EFI_PEI_SERVICES                **PeiServices,
> >>>>>>>>> +  IN EFI_PEI_MM_ACCESS_PPI           *This,
> >>>>>>>>> +  IN OUT UINTN                       *MmramMapSize,
> >>>>>>>>> +  IN OUT EFI_MMRAM_DESCRIPTOR        *MmramMap
> >>>>>>>>> +  );
> >>>>>>>>> +
> >>>>>>>>> +///
> >>>>>>>>> +///  EFI MM Access PPI is used to control the visibility of
> >>>>>>>>> +the MMRAM on
> >>>>>>>> the
> >>>>>>>>> platform.
> >>>>>>>>> +///  It abstracts the location and characteristics of MMRAM.
> >>>>>>>>> +The platform
> >>>>>>>>> should report
> >>>>>>>>> +///  all MMRAM via EFI_PEI_MM_ACCESS_PPI. The expectation
> is
> >>> that
> >>>>>>>>> +the
> >>>>>>>>> north bridge or
> >>>>>>>>> +///  memory controller would publish this PPI.
> >>>>>>>>> +///
> >>>>>>>>> +struct _EFI_PEI_MM_ACCESS_PPI {
> >>>>>>>>> +  EFI_PEI_MM_OPEN          Open;
> >>>>>>>>> +  EFI_PEI_MM_CLOSE         Close;
> >>>>>>>>> +  EFI_PEI_MM_LOCK          Lock;
> >>>>>>>>> +  EFI_PEI_MM_CAPABILITIES  GetCapabilities;
> >>>>>>>>> +  BOOLEAN                  LockState;
> >>>>>>>>> +  BOOLEAN                  OpenState;
> >>>>>>>>> +};
> >>>>>>>>> +
> >>>>>>>>> +extern EFI_GUID gEfiPeiMmAccessPpiGuid;
> >>>>>>>>> +
> >>>>>>>>> +#endif
> >>>>>>>>> diff --git a/MdePkg/Include/Ppi/MmControl.h
> >>>>>>>>> b/MdePkg/Include/Ppi/MmControl.h new file mode 100644
> index
> >>>>>>>>> 0000000000..983ed95cd5
> >>>>>>>>> --- /dev/null
> >>>>>>>>> +++ b/MdePkg/Include/Ppi/MmControl.h
> >>>>>>>>> @@ -0,0 +1,90 @@
> >>>>>>>>> +/** @file
> >>>>>>>>> +  EFI MM Control PPI definition.
> >>>>>>>>> +
> >>>>>>>>> +  This PPI is used initiate synchronous MMI activations. This
> >>>>>>>>> + PPI could be
> >>>>>>>>> published by a processor
> >>>>>>>>> +  driver to abstract the MMI IPI or a driver which abstracts
> >>>>>>>>> + the ASIC that
> >>>>>>> is
> >>>>>>>>> supporting the APM port.
> >>>>>>>>> +  Because of the possibility of performing MMI IPI
> >>>>>>>>> + transactions, the ability
> >>>>>>>> to
> >>>>>>>>> generate this event
> >>>>>>>>> +  from a platform chipset agent is an optional capability for
> >>>>>>>>> + both
> >>>>>>>>> + IA-32
> >>>>>>> and
> >>>>>>>>> x64-based systems.
> >>>>>>>>> +
> >>>>>>>>> +  Copyright (c) 2019, Intel Corporation. All rights
> >>>>>>>>> + reserved.<BR>
> >>>>>>>>> +  SPDX-License-Identifier: BSD-2-Clause-Patent
> >>>>>>>>> +
> >>>>>>>>> +  @par Revision Reference:
> >>>>>>>>> +  This PPI is introduced in PI Version 1.5.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +
> >>>>>>>>> +
> >>>>>>>>> +#ifndef _MM_CONTROL_PPI_H_
> >>>>>>>>> +#define _MM_CONTROL_PPI_H_
> >>>>>>>>> +
> >>>>>>>>> +#define EFI_PEI_MM_CONTROL_PPI_GUID \
> >>>>>>>>> +  { 0x61c68702, 0x4d7e, 0x4f43, 0x8d, 0xef, 0xa7, 0x43, 0x5,
> >>>>>>>>> +0xce, 0x74,
> >>>>>>>> 0xc5 }
> >>>>>>>>> +
> >>>>>>>>> +typedef struct _EFI_PEI_MM_CONTROL_PPI
> >>>>>> EFI_PEI_MM_CONTROL_PPI;
> >>>>>>>>> +
> >>>>>>>>> +/**
> >>>>>>>>> +  Invokes PPI activation from the PI PEI environment.
> >>>>>>>>> +
> >>>>>>>>> +  @param  PeiServices           An indirect pointer to the PEI
> Services
> >>>>> Table
> >>>>>>>>> published by the PEI Foundation.
> >>>>>>>>> +  @param  This                  The PEI_MM_CONTROL_PPI instance.
> >>>>>>>>> +  @param  ArgumentBuffer        The value passed to the MMI
> >>> handler.
> >>>>>>> This
> >>>>>>>>> value corresponds to the
> >>>>>>>>> +                                SwMmiInputValue in the
> >>>>>>>>> + RegisterContext parameter
> >>>>>>> for
> >>>>>>>> the
> >>>>>>>>> Register()
> >>>>>>>>> +                                function in the
> >>>>>>>>> + EFI_MM_SW_DISPATCH_PROTOCOL
> >>>>>>> and
> >>>>>>>> in
> >>>>>>>>> the Context parameter
> >>>>>>>>> +                                in the call to the DispatchFunction
> >>>>>>>>> +  @param  ArgumentBufferSize    The size of the data passed in
> >>>>>>>>> ArgumentBuffer or NULL if ArgumentBuffer is NULL.
> >>>>>>>>> +  @param  Periodic              An optional mechanism to periodically
> >>>>> repeat
> >>>>>>>>> activation.
> >>>>>>>>> +  @param  ActivationInterval    An optional parameter to repeat
> at
> >>>>> this
> >>>>>>>> period
> >>>>>>>>> one
> >>>>>>>>> +                                time or, if the Periodic Boolean is set,
> periodically.
> >>>>>>>>> +
> >>>>>>>>> +  @retval EFI_SUCCESS           The MMI has been engendered.
> >>>>>>>>> +  @retval EFI_DEVICE_ERROR      The timing is unsupported.
> >>>>>>>>> +  @retval EFI_INVALID_PARAMETER The activation period is
> >>>>>> unsupported.
> >>>>>>>>> +  @retval EFI_NOT_STARTED       The MM base service has not
> >> been
> >>>>>>>> initialized.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +typedef
> >>>>>>>>> +EFI_STATUS
> >>>>>>>>> +(EFIAPI *EFI_PEI_MM_ACTIVATE) (
> >>>>>>>>> +  IN EFI_PEI_SERVICES                                **PeiServices,
> >>>>>>>>> +  IN EFI_PEI_MM_CONTROL_PPI                          * This,
> >>>>>>>>> +  IN OUT INT8                                        *ArgumentBuffer OPTIONAL,
> >>>>>>>>> +  IN OUT UINTN                                       *ArgumentBufferSize
> >>> OPTIONAL,
> >>>>>>>>> +  IN BOOLEAN                                         Periodic OPTIONAL,
> >>>>>>>>> +  IN UINTN                                           ActivationInterval OPTIONAL
> >>>>>>>>> +  );
> >>>>>>>>> +
> >>>>>>>>> +/**
> >>>>>>>>> +  Clears any system state that was created in response to the
> >>> Trigger()
> >>>>>> call.
> >>>>>>>>> +
> >>>>>>>>> +  @param  PeiServices           General purpose services available
> to
> >>>>> every
> >>>>>>>> PEIM.
> >>>>>>>>> +  @param  This                  The PEI_MM_CONTROL_PPI instance.
> >>>>>>>>> +  @param  Periodic              Optional parameter to repeat at this
> >>>>> period
> >>>>>>> one
> >>>>>>>>> +                                time or, if the Periodic Boolean is set,
> periodically.
> >>>>>>>>> +
> >>>>>>>>> +  @retval EFI_SUCCESS           The MMI has been engendered.
> >>>>>>>>> +  @retval EFI_DEVICE_ERROR      The source could not be
> cleared.
> >>>>>>>>> +  @retval EFI_INVALID_PARAMETER The service did not support
> >>>>>>>>> + the
> >>>>>>>> Periodic
> >>>>>>>>> input argument.
> >>>>>>>>> +
> >>>>>>>>> +**/
> >>>>>>>>> +typedef
> >>>>>>>>> +EFI_STATUS
> >>>>>>>>> +(EFIAPI *PEI_MM_DEACTIVATE) (
> >>>>>>>>> +  IN EFI_PEI_SERVICES                      **PeiServices,
> >>>>>>>>> +  IN EFI_PEI_MM_CONTROL_PPI                * This,
> >>>>>>>>> +  IN BOOLEAN                               Periodic OPTIONAL
> >>>>>>>>> +  );
> >>>>>>>>> +
> >>>>>>>>> +///
> >>>>>>>>> +///  The EFI_PEI_MM_CONTROL_PPI is produced by a PEIM. It
> >>>>>> provides
> >>>>>>> an
> >>>>>>>>> abstraction of the
> >>>>>>>>> +///  platform hardware that generates an MMI. There are often
> >>>>>>>>> +I/O ports
> >>>>>>>>> that, when accessed, will
> >>>>>>>>> +///  generate the MMI. Also, the hardware optionally supports
> >>>>>>>>> +the
> >>>>>>> periodic
> >>>>>>>>> generation of these signals.
> >>>>>>>>> +///
> >>>>>>>>> +struct _PEI_MM_CONTROL_PPI {
> >>>>>>>>> +  PEI_MM_ACTIVATE    Trigger;
> >>>>>>>>> +  PEI_MM_DEACTIVATE  Clear;
> >>>>>>>>> +};
> >>>>>>>>> +
> >>>>>>>>> +extern EFI_GUID gEfiPeiMmControlPpiGuid;
> >>>>>>>>> +
> >>>>>>>>> +#endif
> >>>>>>>>> diff --git a/MdePkg/MdePkg.dec b/MdePkg/MdePkg.dec index
> >>>>>>>>> b382efd578..34e0f39395 100644
> >>>>>>>>> --- a/MdePkg/MdePkg.dec
> >>>>>>>>> +++ b/MdePkg/MdePkg.dec
> >>>>>>>>> @@ -925,6 +925,12 @@
> >>>>>>>>>   ## Include/Ppi/SecHobData.h
> >>>>>>>>>   gEfiSecHobDataPpiGuid = { 0x3ebdaf20, 0x6667, 0x40d8, {0xb4,
> >>>>>>>>> 0xee,
> >>>>>>> 0xf5,
> >>>>>>>>> 0x99, 0x9a, 0xc1, 0xb7, 0x1f } }
> >>>>>>>>>
> >>>>>>>>> +  ## Include/Ppi/MmAccess.h
> >>>>>>>>> +  gEfiPeiMmAccessPpiGuid          =  { 0x268f33a9, 0xcccd, 0x48be,
> >>>>> { 0x88,
> >>>>>>>> 0x17,
> >>>>>>>>> 0x86, 0x5, 0x3a, 0xc3, 0x2e, 0xd6 }}
> >>>>>>>>> +
> >>>>>>>>> +  ## Include/Ppi/MmControl.h
> >>>>>>>>> +  gEfiPeiMmControlPpiGuid         =  { 0x61c68702, 0x4d7e, 0x4f43,
> >>>>> { 0x8d,
> >>>>>>>> 0xef,
> >>>>>>>>> 0xa7, 0x43, 0x5, 0xce, 0x74, 0xc5 }}
> >>>>>>>>> +
> >>>>>>>>>   #
> >>>>>>>>>   # PPIs defined in PI 1.7.
> >>>>>>>>>   #
> >>>>>>>>> --
> >>>>>>>>> 2.16.2.windows.1
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>>
> >
> 
> 
> 


  reply	other threads:[~2019-08-10  3:32 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-29  4:25 [PATCH] MdePkg: Add MmAccess and MmControl definition Marc W Chen
2019-08-01  8:42 ` [edk2-devel] " Liming Gao
2019-08-01  8:48   ` Marc W Chen
2019-08-02  2:12     ` Laszlo Ersek
2019-08-01  8:52   ` Marc W Chen
2019-08-01 10:04     ` Ni, Ray
2019-08-01 10:15       ` Marc W Chen
2019-08-02  2:14         ` Laszlo Ersek
2019-08-06  8:56           ` Marc W Chen
2019-08-06 10:08             ` Ni, Ray
2019-08-07  4:52               ` Liming Gao
2019-08-07 16:10               ` Laszlo Ersek
2019-08-10  3:32                 ` Marc W Chen [this message]
2019-08-10  3:34                   ` Liming Gao
     [not found]                   ` <15B9725390DC0000.29320@groups.io>
2019-08-13  9:19                     ` Liming Gao
2019-08-14  9:53                       ` Marc W Chen
2019-08-18  5:20                         ` Ni, Ray
2019-08-18  5:21                         ` Ni, Ray

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=AF60760DA41C634EBADDE512AA3D4E537E310B6D@PGSMSX108.gar.corp.intel.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