> On May 11, 2015, at 9:16 PM, Gao, Liming <liming....@intel.com> wrote:
>
> Andrew:
> Yes. Those PCD can support Dynamic and DynamicEx. DxeIpl can use them
> instead of EFI variable. But, Platform DSC should configure those PCDs as
> DynamicHii. This is an impact for the existing platform. To minimize the
> impact, I suggest to define those PCDs with all PCD types, and keep DxeIpl,
> Bds without change. Platform can decide to configure PCD type, and configure
> PCD as DynamicHii with MemoryTypeInfo variable. If so, the platform PEI can
> be simplified to only consume PCDs to build HOB, not require to access
> variable again.
>
I'm fine if the PCDs are flexible, but we keep the same scheme in all the
platforms.
Thanks,
Andrew Fish
> Thanks
> Liming
> From: Andrew Fish [mailto:af...@apple.com]
> Sent: Thursday, May 07, 2015 12:20 AM
> To: edk2-devel@lists.sourceforge.net
> Subject: Re: [edk2] MdeModulePkg: Should have a library to produce the
> gEfiMemoryTypeInformationGuid HOB driven by PCDs.
>
>
> On May 6, 2015, at 8:30 AM, Olivier Martin <olivier.mar...@arm.com
> <mailto:olivier.mar...@arm.com>> wrote:
>
> As I said before I would be happy to see these PCDs moved into MdeModulePkg
> (instead of being defined by EmbeddedPkg).
>
> On 06/05/15 15:58, Gao, Liming wrote:
> Olivier:
> I think it will be good to share those PCDs in the different platforms. My
> comments is to define those PCDs to support FixedAtBuild and
> PatchableInModule both. PCD Name may be changed to
> PcdEfiACPIReclaimMemorySizeInMemoryTypeInfo.
>
>
> We might want to think about adding Dynamic? There is currently a variable
> set by BDS that is read by the DXE IPL to override the HOB. It my be possible
> to not require this variable if Dynamic PCDs are used?
>
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c
>
> <https://svn.code.sf.net/p/edk2/code/trunk/edk2/MdeModulePkg/Core/DxeIplPeim/DxeLoad.c>
> DataSize = sizeof (MemoryData);
> Status = Variable->GetVariable (
> Variable,
> EFI_MEMORY_TYPE_INFORMATION_VARIABLE_NAME,
> &gEfiMemoryTypeInformationGuid,
> NULL,
> &DataSize,
> &MemoryData
> );
> if (!EFI_ERROR (Status) && ValidateMemoryTypeInfoVariable(MemoryData,
> DataSize)) {
> //
> // Build the GUID'd HOB for DXE
> //
> BuildGuidDataHob (
> &gEfiMemoryTypeInformationGuid,
> MemoryData,
> DataSize
> );
> }
>
> Thanks,
>
> Andrew Fish
>
>
> Thanks
> Liming <>
> From: Olivier Martin [mailto:olivier.mar...@arm.com
> <mailto:olivier.mar...@arm.com>]
> Sent: Friday, May 1, 2015 7:11 PM
> To: edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net>
> Subject: Re: [edk2] MdeModulePkg: Should have a library to produce the
> gEfiMemoryTypeInformationGuid HOB driven by PCDs.
>
> I wrote a section in the wikipage to tune UEFI to avoid memory fragmentation
> (mainly to avoid Runtime memory fragmentation):
> http://tianocore.sourceforge.net/wiki/ArmPkg/Runtime#Tuning
> <http://tianocore.sourceforge.net/wiki/ArmPkg/Runtime#Tuning>
> The tuning is based on these PCDs.
> I would also be happy to see these PCDs moved to MdeModulePkg.
>
>
> From: Andrew Fish [mailto:af...@apple.com <mailto:af...@apple.com>]
> Sent: 29 April 2015 04:10
> To: edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net>
> Subject: [edk2] MdeModulePkg: Should have a library to produce the
> gEfiMemoryTypeInformationGuid HOB driven by PCDs.
>
> I noticed the EmbeddedPkg has PCDs to set the gEfiMemoryTypeInformationGuid
> HOB (EFI_MEMORY_TYPE_INFORMATION array) default values. Given this is
> something that needs to get tuned per platform it seems like we should have
> PCD values. I noticed some ARM platforms use PCD values, but a lot of
> platforms just have a global.
>
> Seems like the MdeModulePkg should have these PCDs, and it could also contain
> a library to produce the HOB based on the PCDs
>
> For those not familiar with the gEfiMemoryTypeInformationGuid HOB it has 2
> functions:
> 1) Keep the runtime memory allocations constant across S4 reboots. You do
> this by having PcdMemoryTypeEfiACPIReclaimMemory,
> PcdMemoryTypeEfiACPIMemoryNVS, PcdMemoryTypeEfiReservedMemoryType,
> PcdMemoryTypeEfiRuntimeServicesData, and PcdMemoryTypeEfiRuntimeServicesCode
> first in the list and make sure you allocate a few more pages than needed for
> each type.
> 2) Defragment the EFI memory map. The boot service memory types all get freed
> back to the OS, but having the “buckets” for them reduces the number of EFI
> memory map entires.
>
> ~/work/src/edk2(master)>git grep PcdMemoryTypeEfiACPIReclaimMemory -- *.dec
> EmbeddedPkg/EmbeddedPkg.dec:107:
> gEmbeddedTokenSpaceGuid.PcdMemoryTypeEfiACPIReclaimMemory|0|UINT32|0x00000012
>
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c
>
> <https://svn.code.sf.net/p/edk2/code/trunk/edk2/ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c>
> VOID
> BuildMemoryTypeInformationHob (
> VOID
> )
> {
> EFI_MEMORY_TYPE_INFORMATION Info[10];
>
> Info[0].Type = EfiACPIReclaimMemory;
> Info[0].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiACPIReclaimMemory);
> Info[1].Type = EfiACPIMemoryNVS;
> Info[1].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiACPIMemoryNVS);
> Info[2].Type = EfiReservedMemoryType;
> Info[2].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiReservedMemoryType);
> Info[3].Type = EfiRuntimeServicesData;
> Info[3].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiRuntimeServicesData);
> Info[4].Type = EfiRuntimeServicesCode;
> Info[4].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiRuntimeServicesCode);
> Info[5].Type = EfiBootServicesCode;
> Info[5].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiBootServicesCode);
> Info[6].Type = EfiBootServicesData;
> Info[6].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiBootServicesData);
> Info[7].Type = EfiLoaderCode;
> Info[7].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiLoaderCode);
> Info[8].Type = EfiLoaderData;
> Info[8].NumberOfPages = PcdGet32 (PcdMemoryTypeEfiLoaderData);
>
> // Terminator for the list
> Info[9].Type = EfiMaxMemoryType;
> Info[9].NumberOfPages = 0;
>
> BuildGuidDataHob (&gEfiMemoryTypeInformationGuid, &Info, sizeof (Info));
> }
>
> vs.
>
> https://svn.code.sf.net/p/edk2/code/trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/MemoryPeim.c
>
> <https://svn.code.sf.net/p/edk2/code/trunk/edk2/Vlv2TbltDevicePkg/PlatformInitPei/MemoryPeim.c>
> EFI_MEMORY_TYPE_INFORMATION mDefaultMemoryTypeInformation[] = {
> { EfiACPIReclaimMemory, 0x40 }, // 0x40 pages = 256k for ASL
> { EfiACPIMemoryNVS, 0x100 }, // 0x100 pages = 1 MB for S3,
> SMM, HII, etc
> { EfiReservedMemoryType, 0x600 }, // 48k for BIOS Reserved
> { EfiMemoryMappedIO, 0 },
> { EfiMemoryMappedIOPortSpace, 0 },
> { EfiPalCode, 0 },
> { EfiRuntimeServicesCode, 0x200 },
> { EfiRuntimeServicesData, 0x100 },
> { EfiLoaderCode, 0x100 },
> { EfiLoaderData, 0x100 },
> { EfiBootServicesCode, 0x800 },
> { EfiBootServicesData, 0x2500},
> { EfiConventionalMemory, 0 },
> { EfiUnusableMemory, 0 },
> { EfiMaxMemoryType, 0 }
> };
>
>
> Thanks,
>
> Andrew Fish
>
> -- IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No: 2557590
> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No: 2548782
>
>
> -- IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
> ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No: 2557590
> ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ,
> Registered in England & Wales, Company No: 2548782
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y_______________________________________________
>
> <http://ad.doubleclick.net/ddm/clk/290420510;117567292;y_______________________________________________>
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> <https://lists.sourceforge.net/lists/listinfo/edk2-devel>
>
> ------------------------------------------------------------------------------
> One dashboard for servers and applications across Physical-Virtual-Cloud
> Widest out-of-the-box monitoring support with 50+ applications
> Performance metrics, stats and reports that give you Actionable Insights
> Deep dive visibility with transaction tracing using APM Insight.
> http://ad.doubleclick.net/ddm/clk/290420510;117567292;y_______________________________________________
>
> <http://ad.doubleclick.net/ddm/clk/290420510;117567292;y_______________________________________________>
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net <mailto:edk2-devel@lists.sourceforge.net>
> https://lists.sourceforge.net/lists/listinfo/edk2-devel
> <https://lists.sourceforge.net/lists/listinfo/edk2-devel>
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel