13.6 Global PCD Section

This section contains the information for all PCDs whose values are the same for all modules in a platform. The content of global PCD sub-section is grouped by token space:

gEfiNt32PkgTokenSpaceGuid
...
...
gEfiMdeModulePkgTokenSpaceGuid
...
...
...

PCD values derived from expressions or other PCDs are not differentiated in the report. Only the final value is displayed.

Each global PCD item contains one or more lines:

13.6.1 Required line

The first line is required:

[*P|*F|*B] <PcdCName>: <PcdType> (<DatumType>) [(<SKUID>)][(<DefaultStore>)] = <PcdValue>

  • *P means the PCD's value was obtained from the DSC file
  • *F means the PCD's value was obtained from the FDF file.
  • *B means the PCD's value was obtained from a build option.
  • If no *P, *F or *B is shown, the PCD's value comes from DEC file. If the value obtained from either a build option, the DSC or FDF is the same as the value in the DEC, then *B, *P or *F will not be shown in the report.

Note: If the Pcd is a Structure PCD, <DatumType> is the Struct Name.

Examples

*P PcdWinNtFirmwareVolume               : FIXED   (VOID*) = L"..\\Fv\\Nt32.fd"
*F PcdWinNtFlashNvStorageFtwWorkingBase : FIXED   (UINT32) = 0x0028E000
                                                  DEC DEFAULT = 0x0

gTokenSpaceGuid
*B LogEnable                            : FIXED   (UNIT32) = 0x1
                                                  DEC DEFAULT = 0x0
*P TestDynamic                          :  DYN    (VOID*) (DEFAULT) = L"COM1!COM2"
                                        :  DYN    (VOID*) (SKU1)    = L"COM3!COM4"
                                        :  DYN    (VOID*) (SKU2)    = L"COM5!COM6"
                                                  DEC DEFAULT = L"COM1!COM0"

13.6.2 Optional lines

13.6.2.1 Dynamic/DynamicEx

  • if <PcdType> is DYN-HII

<VariableGuid>:<VariableName>:<Offset>

Example

*P PcdGMchDvmtTotalSize : DYN-HII (UINT8) = 0
                          gSysConfigGuid: L"Setup": 0xAA
  • if <PcdType> is DYN-VPD

<Offset relative to VPD base address>

Example

*F PcdVpdSample : DYN-VPD (UINT32) = 1
                  0x0001FFF

13.6.2.2 Default (optional) line

The second optional line is present if the value from the DSC was overridden by build option. It is formatted as follows:

DSC DEFAULT = <Value in PCD Section in DSC>

The third optional line is present if the value from the DEC was overridden. It is formatted as follows:

DEC DEFAULT = <Value in DEC>

Example

*P PcdWinNtFirmwareFdSize   : FIXED (UINT32) = 0x2a0000
                              DEC DEFAULT = 0x0

13.6.2.3 Additional optional lines

Additional lines are optional and show if the PCD's value was obtained from the INF file. This will be listed if the module's final PCD value is not the same as the first line. The value can be obtained from the INF file only if a single module uses the PCD.

*M means the PCD's value was obtained from the INF file.

These lines are formatted as:

*M Inf Filename = <Value>

Example

*P PcdDebugPrintErrorLevel : PATCH (UINT32) = 0x80000042
                                DEC DEFAULT = 0x80000000
                                            = 0x80000000
*M Tcp4Dxe.inf                              = 0x0

Note: Global PCD section is present when PCD is specified in -Y option.


13.6.2.4 Field value for Structure PCD

If the Pcd is a Structure Pcd, every field value that user specified in DSC/DEC file and build command will print out. The field value is from DSC/DEC file or build command, not from the final structure byte array, and the field order is same as it in DSC/DEC file. when the field value is from build command, tool will additional print a *B Flag.

Example

gEfiMdePkgTokenSpaceGuid
*P TestFix                        :  FIXED   (TEST) = {
    0xff,0x02,0x00,0x2e,0xf6,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57,0x00,0x00,0x00,
    0x00,0x64,0x00,0x00,0x00}
           .A             = 0x2
           .C             = 0x0
           .Array         = {0x2e,0xf6,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57}
           .D             = 0x64
                                        DEC DEFAULT = {0xFF,0xFF}
           .A             = 0xF
           .C             = 0xF
*B TestDynamicExHii               : DEXHII    (TEST) (SKU1) (STANDARD) = {
    0xff,0x01,0x00,0x2e,0xf6,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57,0x00,0x00,0x00,
    0x00,0x64,0x00,0x00,0x00}
           .A             = 0x1
       *B  .C             = 0x0
           .Array         = {0x2e,0xf6,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57}
           .D             = 0x64
                                  : DEXHII    (TEST) (SKU1) (Manufacturing) = {
    0xff,0x02,0x00,0x2e,0xf6,0x08,0x6f,0x20,0x5c,0x8e,0x49,0x91,0x57,0x00,0x00,0x00,
    0x00,0x68,0x00,0x00,0x00}
           .A             = 0x2
       *B  .C             = 0x0
           .Array         = {0x2e,0xf6,0x08,0x6f,0x20,0x5c,0x8e,0x49,0x91,0x57}
           .D             = 0x68
                                        DEC DEFAULT = {0xFF,0xFF}
           .A             = 0xF
           .C             = 0xF