public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Zhu, Yonghong" <yonghong.zhu@intel.com>
To: "edk2-devel@lists.01.org" <edk2-devel@lists.01.org>
Subject: [RFC][BaseTools] Build report update for Structure PCD value and SKU, DefaultStore info
Date: Mon, 4 Sep 2017 05:03:12 +0000	[thread overview]
Message-ID: <B9726D6DCCFB8B4CA276A9169B02216D51EEA4C8@SHSMSX103.ccr.corp.intel.com> (raw)

- Requirement
Report Structure PCD value and SKU, DefaultStore info in the build report.

- Proposal
1. Report Structure Pcd Value
    a) Pcd value format use byte array format, eg. {0x1, 0x2, ..} , each line print 16 bytes values
    b) Report the field value specified in the DSC/DEC file
    c) Only the field specified in DSC/DEC will be in the report, not  the full structure field list
    d) the field value is from DSC/DEC file, not from the final structure byte array
    e) the field order in the report base on their field name’s alphabetical
2. In the build report, Platform Summary report current platform support SKU and DefaultStore info if those info exist
3. For Dynamic/DynamicEX Pcd, report every SKU info. The order base on SKU’s alphabetical. If Pcd is specified for SubSku, its value will print for SubSku. If SKUB is inherited from SKUA, Pcd for SKUB will include its value for SKUA.
4. For DynamicHII/DynamicExHII Pcd, report every DefaultStore info. The order base on DefaultStore’s alphabetical.

- Spec update
13.4 Platform Summary
    SKUID: %Platform SKUID String%
    DefaultStore: %Platform DefaultStore String%
    Note: This two items are optional.
13.4.1 Pcds in Conditional Directives
    [*P|*F|*B] <PcdCName>: <PcdType> (<DatumType>) = <PcdValue>
    Note: If the Pcd is a Structure PCD, we will use the Struct Name as the <DatumType>
13.4.2 Pcds not used
    [*P|*F|*B] <PcdCName>: <PcdType> (<DatumType>) [(<SKUID>)][(<DefaultStore>)] = <PcdValue>
    Note: If the Pcd is a Structure PCD, we will use the Struct Name as the <DatumType>
13.6 Global Pcd Section
13.6.1 Required line
    [*P|*F|*B] <PcdCName>: <PcdType> (<DatumType>) [(<SKUID>)][(<DefaultStore>)] = <PcdValue>
    Note: If the Pcd is a Structure PCD, we will use the Struct Name as the <DatumType>
13.6.2 Optional lines
13.6.2.4  Field value for Structure PCD
    If the Pcd is a Structure Pcd, we will also print out every field value that user specified in DSC/DEC file.
13.8 Module Section

13.8.3      Pcd Sub-section
   1.The first line is a mandatory line with the following format:
    [*P|*M|*F|*B] <PcdCName>:<PcdType> (<DatumType>) [(<SKUID>)][(<DefaultStore>)] = <PcdValue>
    Note: If the Pcd is a Structure PCD, we will use the Struct Name as the <DatumType>

- Example
DEC:
[PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
gEfiMdePkgTokenSpaceGuid. TestFix | {0xFF, 0xFF}|TEST|0x00010071 {
    <HeaderFiles>
      Guid/Test.h     # for Guid/Ppi/Protocol, reuse header file.
      # Pcd/PcdTest.h # New Pcd directory in Include dir for PCD only
    <Packages>
      MdePkg/MdePkg.dec
      TestPkg/TestPkg.dec
  }
  gEfiMdePkgTokenSpaceGuid.TestFix.A|0xF
gEfiMdePkgTokenSpaceGuid.TestFix.C|0xF

gEfiMdePkgTokenSpaceGuid.TestDynamic| L"COM1!COM0"|VOID*|0x00010073

gEfiMdePkgTokenSpaceGuid.TestDynamicExHii|{0xFF, 0xFF}|TEST|0x00010074 {
    <HeaderFiles>
      Guid/Test.h
    <Packages>
      MdePkg/MdePkg.dec
      TestPkg/TestPkg.dec
  }
  gEfiMdePkgTokenSpaceGuid.TestDynamicExHii.A|0xF
  gEfiMdePkgTokenSpaceGuid.TestDynamicExHii.C|0xF

DSC:
[PcdsFixedAtBuild]
gEfiMdePkgTokenSpaceGuid. TestFix.A |0x2
gEfiMdePkgTokenSpaceGuid. TestFix.C |0x0
gEfiMdePkgTokenSpaceGuid. TestFix. Array | GUID("6F08F62E-5C19-498E-9157-B59CE6F362F1")
gEfiMdePkgTokenSpaceGuid. TestFix. FlexibleArray | L"World"

[PcdsDynamicDefault.Common. DEFAULT]
gEfiMdePkgTokenSpaceGuid.TestDynamic |L"COM1!COM2"|VOID*|20

[PcdsDynamicDefault.Common.SKU1]
gEfiMdePkgTokenSpaceGuid.TestDynamic |L"COM3!COM4"|VOID*|20

[PcdsDynamicDefault.Common.SKU2]
gEfiMdePkgTokenSpaceGuid.TestDynamic |L"COM5!COM6"|VOID*|20

[PcdsDynamicExHii.common.SKU1. STANDARD]
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii.A |0x1
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii.C |0x0
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii. Array | GUID("6F08F62E-5C19-498E-9157-B59CE6F362F1")
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii. FlexibleArray | L"World"

[PcdsDynamicExHii.common.SKU1. Manufacturing]
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii.A |0x2
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii.C |0x0
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii. Array | GUID("6F08F13E-5C19-498E-9157-B59CE6F362F1")
gEfiMdePkgTokenSpaceGuid. TestDynamicExHii. FlexibleArray | L"World"

Report:
gEfiMdePkgTokenSpaceGuid
*P TestFix                                  :  FIXED     (TEST) = {
0xff,0x02,0x00,0x2e,0xf6,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57,0xb5,0x9c,0xe6,
    0xf3,0x62,0xf1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x57,0x00,
    0x6f,0x00,0x72,0x00,0x6c,0x00,0x64,0x00,0x00,0x00}
           .A             = 0x2
           .C             = 0x0
           .Array         = GUID("6F08F62E-5C19-498E-9157-B59CE6F362F1")
           .FlexibleArray = L"World"
                                                    DEC DEFAULT = {0xFF,0xFF}
           .A             = 0xF
           .C             = 0xF

*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"

*P TestDynamicExHii          : DEXHII    (TEST) (SKU1) (STANDARD ) = {
0xff,0x01,0x00,0x2e,0xf6,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57,0xb5,0x9c, 0xe6,
    0xf3,0x62,0xf1,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
    0x00,0x00,0x02,0x00,0x57,0x00,0x6f,0x00,0x72,0x00,0x6c,0x00,0x64,0x00,0x00,0x00}
           .A                 = 0x1
           .C                 = 0x0
           .Array         = GUID("6F08F62E-5C19-498E-9157-B59CE6F362F1")
           .FlexibleArray = L"World“
                                                 : DEXHII    (TEST) (SKU1) (Manufacturing) = {
0xff,0x02,0x00,0x3e,0xf1,0x08,0x6f,0x19,0x5c,0x8e,0x49,0x91,0x57,0xb5,0x9c, 0xe6,
    0xf3,0x62,0xf1,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,
    0x00,0x00,0x02,0x00,0x57,0x00,0x6f,0x00,0x72,0x00,0x6c,0x00,0x64,0x00,0x00,0x00}
           .A             = 0x2
           .C             = 0x0
           .Array         = GUID("6F08F13E-5C19-498E-9157-B59CE6F362F1")
           .FlexibleArray = L"World"
                                                 DEC DEFAULT = {0xFF,0xFF}
           .A             = 0xF
           .C             = 0xF


Best Regards,
Zhu Yonghong


                 reply	other threads:[~2017-09-04  5:00 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

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=B9726D6DCCFB8B4CA276A9169B02216D51EEA4C8@SHSMSX103.ccr.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