Leif suggested that FDF include files should preferably refer with their names to the FDF file sections from which they are included. Therefore - rename "OvmfPkg.fdf.inc" to "OvmfPkgDefines.fdf.inc" (included from the [Defines] section), - rename "DecomprScratchEnd.fdf.inc" to "FvmainCompactScratchEnd.fdf.inc" (included under the [FV.FVMAIN_COMPACT] section). Cc: Anthony Perard <anthony.perard@citrix.com> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Julien Grall <julien@xen.org> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Philippe Mathieu-Daudé <philmd@redhat.com> Ref: http://mid.mail-archive.com/20200312142006.GG23627@bivouac.eciton.net Ref: https://edk2.groups.io/g/devel/message/55812 Suggested-by: Leif Lindholm <leif@nuviainc.com> Signed-off-by: Laszlo Ersek <lersek@redhat.com> Message-Id: <20200312223555.29267-3-lersek@redhat.com> Reviewed-by: Leif Lindholm <leif@nuviainc.com>
		
			
				
	
	
		
			66 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| ## @file
 | |
| #  This FDF include file computes the end of the scratch buffer used in
 | |
| #  DecompressMemFvs() [OvmfPkg/Sec/SecMain.c]. It is based on the decompressed
 | |
| #  (ie. original) size of the LZMA-compressed section of the one FFS file in
 | |
| #  the FVMAIN_COMPACT firmware volume.
 | |
| #
 | |
| #  Copyright (C) 2015, Red Hat, Inc.
 | |
| #
 | |
| #  SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| ##
 | |
| 
 | |
| # The GUID EE4E5898-3914-4259-9D6E-DC7BD79403CF means "LzmaCustomDecompress".
 | |
| # The decompressed output will have the following structure (see the file
 | |
| # "9E21FD93-9C72-4c15-8C4B-E77F1DB2D792SEC1.guided.dummy" in the
 | |
| # Build/Ovmf*/*/FV/Ffs/9E21FD93-9C72-4c15-8C4B-E77F1DB2D792/ directory):
 | |
| #
 | |
| # Size                 Contents
 | |
| # -------------------  --------------------------------------------------------
 | |
| #                   4  EFI_COMMON_SECTION_HEADER, stating size 124 (0x7C) and
 | |
| #                      type 0x19 (EFI_SECTION_RAW). The purpose of this section
 | |
| #                      is to pad the start of PEIFV to 128 bytes.
 | |
| #                 120  Zero bytes (padding).
 | |
| #
 | |
| #                   4  EFI_COMMON_SECTION_HEADER, stating size
 | |
| #                      (PcdOvmfPeiMemFvSize + 4), and type 0x17
 | |
| #                      (EFI_SECTION_FIRMWARE_VOLUME_IMAGE).
 | |
| # PcdOvmfPeiMemFvSize  PEIFV. Note that the above sizes pad the offset of this
 | |
| #                      object to 128 bytes. See also the "guided.dummy.txt"
 | |
| #                      file in the same directory.
 | |
| #
 | |
| #                   4  EFI_COMMON_SECTION_HEADER, stating size 12 (0xC) and
 | |
| #                      type 0x19 (EFI_SECTION_RAW). The purpose of this section
 | |
| #                      is to pad the start of DXEFV to 16 bytes.
 | |
| #                   8  Zero bytes (padding).
 | |
| #
 | |
| #                   4  EFI_COMMON_SECTION_HEADER, stating size
 | |
| #                      (PcdOvmfDxeMemFvSize + 4), and type 0x17
 | |
| #                      (EFI_SECTION_FIRMWARE_VOLUME_IMAGE).
 | |
| # PcdOvmfDxeMemFvSize  DXEFV. Note that the above sizes pad the offset of this
 | |
| #                      object to 16 bytes. See also the "guided.dummy.txt" file
 | |
| #                      in the same directory.
 | |
| #
 | |
| # The total size after decompression is (128 + PcdOvmfPeiMemFvSize + 16 +
 | |
| # PcdOvmfDxeMemFvSize).
 | |
| 
 | |
| DEFINE OUTPUT_SIZE = (128 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfPeiMemFvSize + 16 + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvSize)
 | |
| 
 | |
| # LzmaCustomDecompressLib uses a constant scratch buffer size of 64KB; see
 | |
| # SCRATCH_BUFFER_REQUEST_SIZE in
 | |
| # "MdeModulePkg/Library/LzmaCustomDecompressLib/LzmaDecompress.c".
 | |
| 
 | |
| DEFINE DECOMP_SCRATCH_SIZE = 0x00010000
 | |
| 
 | |
| # Note: when we use PcdOvmfDxeMemFvBase in this context, BaseTools have not yet
 | |
| # offset it with MEMFD's base address. For that reason we have to do it manually.
 | |
| #
 | |
| # The calculation below mirrors DecompressMemFvs() [OvmfPkg/Sec/SecMain.c].
 | |
| 
 | |
| DEFINE OUTPUT_BASE                   = ($(MEMFD_BASE_ADDRESS) + gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDxeMemFvBase + 0x00100000)
 | |
| DEFINE DECOMP_SCRATCH_BASE_UNALIGNED = ($(OUTPUT_BASE) + $(OUTPUT_SIZE))
 | |
| DEFINE DECOMP_SCRATCH_BASE_ALIGNMENT = 0x000FFFFF
 | |
| DEFINE DECOMP_SCRATCH_BASE_MASK      = 0xFFF00000
 | |
| DEFINE DECOMP_SCRATCH_BASE           = (($(DECOMP_SCRATCH_BASE_UNALIGNED) + $(DECOMP_SCRATCH_BASE_ALIGNMENT)) & $(DECOMP_SCRATCH_BASE_MASK))
 | |
| 
 | |
| SET gUefiOvmfPkgTokenSpaceGuid.PcdOvmfDecompressionScratchEnd = $(DECOMP_SCRATCH_BASE) + $(DECOMP_SCRATCH_SIZE)
 |