TianoCore Community Design Meeting Minutes


Ni, Ray
 

In this meeting, Liming Gao showed the progress of new CLANG tool chain, Hao Wu raised a SDMMC host controller customization requirement and potential solutions.
Details below. Please reply to this mail for any questions or comments.

1. LLVM/CLANG tool chain (BZ1603) - Liming Gao
- Existing tool chain: VS2015/2017 - Win, GCC5 - Linux, XCODE - Mac, CLANG38 - Linux
- New tool chain: CLANG(8) - Win/Linux/Mac
* LLD supports generating ELF/PE in all OSes.
* Status: met some troubles when directly generating PE.

- Tool chain name: CLANG8LLDELF or CLANG8ELF? -> CLANG8ELF.
The linker information can be documented in docs.

- Maybe a 3rd toolchain CLANG8 which generates default executable image format depending on OS?

- Always use ELF or PE as output instead of having two options otherwise may lose the benefit of using CLANG tool chain.
* Developers can choose which output to generate. they can always choose ELF or PE.

- Size impact?
* PE requires 4K section alignment, ELF requires 32-byte section alignment.
So PE when uncompressed needs more size.
* LTO (link optimization) is enabled.
* Will provide OVMF size data after the meeting.

- Status: CLANG8ELF builds of OVMF32/OVMF64/OVMF32PEI-64DXE can boot.
CLANG8PE builds of on OVMF32/32PEI-64DXE can boot, but that of OMVF64 cannot.
CLANG8PE fails to build NetworkPkg due to big local variable in CryptoPkg.
CLANGELF cannot generate HII resource section, similar issue exists in XCODE5. Felix can provide help on that.

- Hope CLANG static analyzer can be enabled in future.
* Some POC was done.

- If CLANG8 can generate DWARF/PDB debug symbols no matter the output executable format (ELF/PE) is, maybe it's worth
to investigate further in single output executable format direction.

2. Customization during SDMMD HC
- Parameters that need customization:
a. bus width
b. bus speed mode
c. strength
d. clock freq
- SdMMcPciHc consumes SdMmcOverride(optional). Its interfaces Capability(), NotifyPhase() are not enough for the customizations.
* bus speed mode -> Capability() helps
* bus width -> Capability() doesn't help with 1 bit which cannot choose from 3 options.
* strength -> NoitfyPhase() doesn't help with absense of passthru.
* clock freq -> NO

- P1. NotifyPhase (GetOperatingParam) - preferred
- P2. New interface OperatingParameter()
- P3. New protocol SD_MMC_OPERATING_PARAMETER

Thanks,
Ray


Liming Gao
 

1. LLVM/CLANG tool chain image size collected on OvmfIa32X64. The code is from https://github.com/lgao4/edk2/tree/Clang. The image is built on Windows OS. LLVM/CLANG is from LLVM8.0 release. CLANG8PE tool chain must enable 4K alignment as PE section alignment. So, its image size is bigger than others. But, the compressed size is smaller. The image size shows new CLANG8ELF tool chain to get the smaller image size than GCC5 and VS2015x86 tool chain. So, I prefer to add CLANG8ELF tool chain first. Then, I will continue to investigate CLANG8PE tool chain and how to generate the different format debug symbol.



OvmfIa32X64 (Bytes)


GCC5 (LTO)


VS2015x86 (GL)


CLANG8ELF (LTO)


CLANG8PE (LTO)


PEIFV (IA32)


0x2ff28


0x2dfe8


0x2a5a8


0x57028


DXEFV (X64)


0x418528


0x429650


0x3ba6f8


0x502900


FVCOMPACT(Compress)


0x1372e8


0x1204d8


0x1177f0


0x116110




Thanks

Liming

-----Original Message-----
From: announce@edk2.groups.io [mailto:announce@edk2.groups.io] On Behalf Of Ni, Ray
Sent: Friday, May 10, 2019 5:57 PM
To: 'announce@edk2.groups.io' <announce@edk2.groups.io>
Subject: [edk2-announce] TianoCore Community Design Meeting Minutes
In this meeting, Liming Gao showed the progress of new CLANG tool chain, Hao Wu raised a SDMMC host controller customization
requirement and potential solutions.
Details below. Please reply to this mail for any questions or comments.
1. LLVM/CLANG tool chain (BZ1603) - Liming Gao
- Existing tool chain: VS2015/2017 - Win, GCC5 - Linux, XCODE - Mac, CLANG38 - Linux
- New tool chain: CLANG(8) - Win/Linux/Mac
* LLD supports generating ELF/PE in all OSes.
* Status: met some troubles when directly generating PE.
- Tool chain name: CLANG8LLDELF or CLANG8ELF? -> CLANG8ELF.
The linker information can be documented in docs.
- Maybe a 3rd toolchain CLANG8 which generates default executable image format depending on OS?
- Always use ELF or PE as output instead of having two options otherwise may lose the benefit of using CLANG tool chain.
* Developers can choose which output to generate. they can always choose ELF or PE.
- Size impact?
* PE requires 4K section alignment, ELF requires 32-byte section alignment.
So PE when uncompressed needs more size.
* LTO (link optimization) is enabled.
* Will provide OVMF size data after the meeting.
- Status: CLANG8ELF builds of OVMF32/OVMF64/OVMF32PEI-64DXE can boot.
CLANG8PE builds of on OVMF32/32PEI-64DXE can boot, but that of OMVF64 cannot.
CLANG8PE fails to build NetworkPkg due to big local variable in CryptoPkg.
CLANGELF cannot generate HII resource section, similar issue exists in XCODE5. Felix can provide help on that.
- Hope CLANG static analyzer can be enabled in future.
* Some POC was done.
- If CLANG8 can generate DWARF/PDB debug symbols no matter the output executable format (ELF/PE) is, maybe it's worth
to investigate further in single output executable format direction.
2. Customization during SDMMD HC
- Parameters that need customization:
a. bus width
b. bus speed mode
c. strength
d. clock freq
- SdMMcPciHc consumes SdMmcOverride(optional). Its interfaces Capability(), NotifyPhase() are not enough for the customizations.
* bus speed mode -> Capability() helps
* bus width -> Capability() doesn't help with 1 bit which cannot choose from 3 options.
* strength -> NoitfyPhase() doesn't help with absense of passthru.
* clock freq -> NO
- P1. NotifyPhase (GetOperatingParam) - preferred
- P2. New interface OperatingParameter()
- P3. New protocol SD_MMC_OPERATING_PARAMETER
Thanks,
Ray


Liming Gao
 

Update the image size table for OvmfIa32x64 (Bytes). GCC and CLANG enables LTO, VS2015 enables GL.

OvmfIa32X64 (Bytes) GCC5 VS2015x86 CLANG8ELF CLANG8PE
PEIFV (IA32) 0x2ff28 0x2dfe8 0x2a5a8 0x57028
DXEFV (X64) 0x418528 0x429650 0x3ba6f8 0x502900
FVCOMPACT(Compress) 0x1372e8 0x1204d8 0x1177f0 0x116110

Thanks
Liming

-----Original Message-----
From: announce@edk2.groups.io [mailto:announce@edk2.groups.io] On Behalf Of Liming Gao
Sent: Tuesday, May 14, 2019 8:10 PM
To: Ni, Ray <ray.ni@intel.com>; 'announce@edk2.groups.io' <announce@edk2.groups.io>
Subject: Re: [edk2-announce] TianoCore Community Design Meeting Minutes

1. LLVM/CLANG tool chain image size collected on OvmfIa32X64. The code is from https://github.com/lgao4/edk2/tree/Clang. The
image is built on Windows OS. LLVM/CLANG is from LLVM8.0 release. CLANG8PE tool chain must enable 4K alignment as PE section
alignment. So, its image size is bigger than others. But, the compressed size is smaller. The image size shows new CLANG8ELF tool chain to
get the smaller image size than GCC5 and VS2015x86 tool chain. So, I prefer to add CLANG8ELF tool chain first. Then, I will continue to
investigate CLANG8PE tool chain and how to generate the different format debug symbol.



OvmfIa32X64 (Bytes)


GCC5 (LTO)


VS2015x86 (GL)


CLANG8ELF (LTO)


CLANG8PE (LTO)


PEIFV (IA32)


0x2ff28


0x2dfe8


0x2a5a8


0x57028


DXEFV (X64)


0x418528


0x429650


0x3ba6f8


0x502900


FVCOMPACT(Compress)


0x1372e8


0x1204d8


0x1177f0


0x116110




Thanks

Liming

-----Original Message-----
From: announce@edk2.groups.io [mailto:announce@edk2.groups.io] On Behalf Of Ni, Ray
Sent: Friday, May 10, 2019 5:57 PM
To: 'announce@edk2.groups.io' <announce@edk2.groups.io>
Subject: [edk2-announce] TianoCore Community Design Meeting Minutes
In this meeting, Liming Gao showed the progress of new CLANG tool chain, Hao Wu raised a SDMMC host controller customization
requirement and potential solutions.
Details below. Please reply to this mail for any questions or comments.
1. LLVM/CLANG tool chain (BZ1603) - Liming Gao
- Existing tool chain: VS2015/2017 - Win, GCC5 - Linux, XCODE - Mac, CLANG38 - Linux
- New tool chain: CLANG(8) - Win/Linux/Mac
* LLD supports generating ELF/PE in all OSes.
* Status: met some troubles when directly generating PE.
- Tool chain name: CLANG8LLDELF or CLANG8ELF? -> CLANG8ELF.
The linker information can be documented in docs.
- Maybe a 3rd toolchain CLANG8 which generates default executable image format depending on OS?
- Always use ELF or PE as output instead of having two options otherwise may lose the benefit of using CLANG tool chain.
* Developers can choose which output to generate. they can always choose ELF or PE.
- Size impact?
* PE requires 4K section alignment, ELF requires 32-byte section alignment.
So PE when uncompressed needs more size.
* LTO (link optimization) is enabled.
* Will provide OVMF size data after the meeting.
- Status: CLANG8ELF builds of OVMF32/OVMF64/OVMF32PEI-64DXE can boot.
CLANG8PE builds of on OVMF32/32PEI-64DXE can boot, but that of OMVF64 cannot.
CLANG8PE fails to build NetworkPkg due to big local variable in CryptoPkg.
CLANGELF cannot generate HII resource section, similar issue exists in XCODE5. Felix can provide help on that.
- Hope CLANG static analyzer can be enabled in future.
* Some POC was done.
- If CLANG8 can generate DWARF/PDB debug symbols no matter the output executable format (ELF/PE) is, maybe it's worth
to investigate further in single output executable format direction.
2. Customization during SDMMD HC
- Parameters that need customization:
a. bus width
b. bus speed mode
c. strength
d. clock freq
- SdMMcPciHc consumes SdMmcOverride(optional). Its interfaces Capability(), NotifyPhase() are not enough for the customizations.
* bus speed mode -> Capability() helps
* bus width -> Capability() doesn't help with 1 bit which cannot choose from 3 options.
* strength -> NoitfyPhase() doesn't help with absense of passthru.
* clock freq -> NO
- P1. NotifyPhase (GetOperatingParam) - preferred
- P2. New interface OperatingParameter()
- P3. New protocol SD_MMC_OPERATING_PARAMETER
Thanks,
Ray