From: "Chiu, Chasel" <chasel.chiu@intel.com>
To: "Kubacki, Michael A" <michael.a.kubacki@intel.com>,
"devel@edk2.groups.io" <devel@edk2.groups.io>
Cc: "Desimone, Nathaniel L" <nathaniel.l.desimone@intel.com>
Subject: Re: [edk2-platforms][PATCH V2 30/47] KabylakeOpenBoardPkg/KabylakeRvp3: Add FvAdvancedPreMemory
Date: Fri, 29 Nov 2019 06:45:12 +0000 [thread overview]
Message-ID: <3C3EFB470A303B4AB093197B6777CCEC505B1F1E@PGSMSX111.gar.corp.intel.com> (raw)
In-Reply-To: <20191128010614.43628-31-michael.a.kubacki@intel.com>
Reviewed-by: Chasel Chiu <chasel.chiu@intel.com>
> -----Original Message-----
> From: Kubacki, Michael A <michael.a.kubacki@intel.com>
> Sent: Thursday, November 28, 2019 9:06 AM
> To: devel@edk2.groups.io
> Cc: Chiu, Chasel <chasel.chiu@intel.com>; Desimone, Nathaniel L
> <nathaniel.l.desimone@intel.com>
> Subject: [edk2-platforms][PATCH V2 30/47]
> KabylakeOpenBoardPkg/KabylakeRvp3: Add FvAdvancedPreMemory
>
> This change adds a standalone firmware volume for pre-memory advanced
> features called FvAdvancedPreMemory to the flash map.
>
> Pre-memory advanced feature modules were previously kept in a child
> firmware volume of FvAdvanced called FvAdvancedPreMem. This change
> simplifies the flash layout and separation of pre-memory and post-memory
> modules.
>
> Cc: Chasel Chiu <chasel.chiu@intel.com>
> Cc: Nate DeSimone <nathaniel.l.desimone@intel.com>
> Signed-off-by: Michael Kubacki <michael.a.kubacki@intel.com>
> Reviewed-by: Nate DeSimone <nathaniel.l.desimone@intel.com>
> ---
>
> Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Include/Fdf/FlashMapI
> nclude.fdf | 30 +++++++------
> Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf
> | 46 +++++++-------------
> 2 files changed, 32 insertions(+), 44 deletions(-)
>
> diff --git
> a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Include/Fdf/FlashMa
> pInclude.fdf
> b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Include/Fdf/FlashMa
> pInclude.fdf
> index 6cb49c941c..b5e3f66cea 100644
> ---
> a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Include/Fdf/FlashMa
> pInclude.fdf
> +++
> b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/Include/Fdf/Flash
> +++ MapInclude.fdf
> @@ -1,5 +1,5 @@
> ## @file
> -# FDF file of Platform.
> +# FDF file for the KabylakeRvp3 board.
> #
> # Copyright (c) 2017 - 2019, Intel Corporation. All rights reserved.<BR> #
> @@ -19,28 +19,30 @@ DEFINE FLASH_NUM_BLOCKS
> = 0x00000080
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashNvStorageOffset
> = 0x00000000 # Flash addr (0xFF800000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashNvStorageSize
> = 0x00040000 #
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashNvStorageVariableOffset =
> 0x00000000 # Flash addr (0xFF800000)
> -SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
> = 0x0001E000 #
> +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageVariableSize
> = 0x0001E000 #
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingOffset
> = 0x0001E000 # Flash addr (0xFF81E000)
> -SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
> = 0x00002000 #
> +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwWorkingSize
> =
> +0x00002000 #
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareOffset
> = 0x00020000 # Flash addr (0xFF820000)
> -SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
> = 0x00020000 #
> +SET gEfiMdeModulePkgTokenSpaceGuid.PcdFlashNvStorageFtwSpareSize
> = 0x00020000 #
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedOffset
> = 0x00040000 # Flash addr (0xFF840000)
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedSize
> = 0x00060000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvSecurityOffset =
> 0x000A0000 # Flash addr (0xFF8A0000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedSize
> = 0x00050000 #
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvSecurityOffset
> = 0x00090000 # Flash addr (0xFF890000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvSecuritySize
> = 0x00070000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvOsBootOffset
> = 0x00110000 # Flash addr (0xFF910000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvOsBootOffset
> = 0x00100000 # Flash addr (0xFF900000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvOsBootSize
> = 0x00090000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvUefiBootOffset
> = 0x001A0000 # Flash addr (0xFF9A0000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvUefiBootOffset
> = 0x00190000 # Flash addr (0xFF990000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvUefiBootSize
> = 0x001E0000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPostMemoryOffset
> = 0x00380000 # Flash addr (0xFFB80000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPostMemoryOffset
> = 0x00370000 # Flash addr (0xFFB70000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPostMemorySize
> = 0x00180000 #
> -SET gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvOffset
> = 0x00500000 # Flash addr (0xFFD00000)
> -SET gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize
> = 0x000A0000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspSOffset
> = 0x005A0000 # Flash addr (0xFFDA0000)
> +SET gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvOffset
> = 0x004F0000 # Flash addr (0xFFCF0000)
> +SET gSiPkgTokenSpaceGuid.PcdFlashMicrocodeFvSize
> = 0x000A0000 #
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspSOffset
> = 0x00590000 # Flash addr (0xFFD90000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspSSize
> = 0x00060000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspMOffset
> = 0x00600000 # Flash addr (0xFFE00000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspMOffset
> = 0x005F0000 # Flash addr (0xFFDF0000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspMSize
> = 0x000BC000 #
> -SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspTOffset
> = 0x006BC000 # Flash addr (0xFFEBC000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspTOffset
> = 0x006AC000 # Flash addr (0xFFEAC000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspTSize
> = 0x00014000 #
> +SET
> gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedPreMemoryOffset =
> 0x006C0000 # Flash addr (0xFFEC0000)
> +SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedPreMemorySize
> = 0x00010000 #
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPreMemoryOffset
> = 0x006D0000 # Flash addr (0xFFED0000)
> SET gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPreMemorySize
> = 0x00130000 #
> diff --git
> a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf
> b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf
> index 3b3b153b68..59f764f49c 100644
> --- a/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf
> +++
> b/Platform/Intel/KabylakeOpenBoardPkg/KabylakeRvp3/OpenBoardPkg.fdf
> @@ -173,6 +173,10 @@
> gMinPlatformPkgTokenSpaceGuid.PcdFlashFvFspTBase|gMinPlatformPkgToke
> nSpaceGuid.P
> # FSP_T Section
> FILE = $(PLATFORM_FSP_BIN_PACKAGE)/Fsp_Rebased_T.fd
>
> +gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedPreMemoryOffset|g
> MinPla
> +tformPkgTokenSpaceGuid.PcdFlashFvAdvancedPreMemorySize
> +gMinPlatformPkgTokenSpaceGuid.PcdFlashFvAdvancedPreMemoryBase|gMi
> nPlatf
> +ormPkgTokenSpaceGuid.PcdFlashFvAdvancedPreMemorySize
> +FV = FvAdvancedPreMemory
> +
>
> gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPreMemoryOffset|gMinPlatform
> PkgTokenSpaceGuid.PcdFlashFvPreMemorySize
>
> gMinPlatformPkgTokenSpaceGuid.PcdFlashFvPreMemoryBase|gMinPlatformP
> kgTokenSpaceGuid.PcdFlashFvPreMemorySize
> FV = FvPreMemory
> @@ -612,7 +616,10 @@ FILE FV_IMAGE =
> C83522D9-80A1-4D95-8C25-3F1370497406 {
> }
> }
>
> -[FV.FvAdvancedPreMem]
> +#
> +# Pre-memory Advanced Features
> +#
> +[FV.FvAdvancedPreMemory]
> FvAlignment = 16
> ERASE_POLARITY = 1
> MEMORY_MAPPED = TRUE
> @@ -635,7 +642,10 @@ FvNameGuid =
> 6053D78A-457E-4490-A237-31D0FBE2F305
> INF $(PLATFORM_BOARD_PACKAGE)/Features/Tbt/TbtInit/Pei/PeiTbtInit.inf
> !endif
>
> -[FV.FvAdvancedPostMem]
> +#
> +# Post-Memory Advanced Features
> +#
> +[FV.FvAdvancedUncompact]
> FvAlignment = 16
> ERASE_POLARITY = 1
> MEMORY_MAPPED = TRUE
> @@ -654,31 +664,15 @@ READ_LOCK_CAP = TRUE
> READ_LOCK_STATUS = TRUE
> FvNameGuid = BE3DF86F-E464-44A3-83F7-0D27E6B88C27
>
> -[FV.FvAdvancedLate]
> -FvAlignment = 16
> -ERASE_POLARITY = 1
> -MEMORY_MAPPED = TRUE
> -STICKY_WRITE = TRUE
> -LOCK_CAP = TRUE
> -LOCK_STATUS = TRUE
> -WRITE_DISABLED_CAP = TRUE
> -WRITE_ENABLED_CAP = TRUE
> -WRITE_STATUS = TRUE
> -WRITE_LOCK_CAP = TRUE
> -WRITE_LOCK_STATUS = TRUE
> -READ_DISABLED_CAP = TRUE
> -READ_ENABLED_CAP = TRUE
> -READ_STATUS = TRUE
> -READ_LOCK_CAP = TRUE
> -READ_LOCK_STATUS = TRUE
> -FvNameGuid = 11F6E304-43F9-4B2F-90AB-B8FFEAD6205D
> -
> !if gKabylakeOpenBoardPkgTokenSpaceGuid.PcdTbtEnable == TRUE INF
> $(PLATFORM_BOARD_PACKAGE)/Features/Tbt/TbtInit/Dxe/TbtDxe.inf
> INF $(PLATFORM_BOARD_PACKAGE)/Features/PciHotPlug/PciHotPlug.inf
> INF
> $(PLATFORM_BOARD_PACKAGE)/Features/Tbt/TbtInit/Smm/TbtSmm.inf
> !endif
>
> +#
> +# Compressed FV with Post-Memory Advanced Features #
> [FV.FvAdvanced]
> BlockSize = $(FLASH_BLOCK_SIZE)
> FvAlignment = 16
> @@ -699,17 +693,9 @@ READ_LOCK_CAP = TRUE
> READ_LOCK_STATUS = TRUE
> FvNameGuid = B23E7388-9953-45C7-9201-0473DDE5487A
>
> -FILE FV_IMAGE = 35E7406A-5842-4F2B-BC62-19022C12AF74 {
> - SECTION FV_IMAGE = FvAdvancedPreMem
> - }
> -
> -FILE FV_IMAGE = F5DCB34F-27EA-48AC-9406-C894F6D587CA {
> - SECTION FV_IMAGE = FvAdvancedPostMem
> - }
> -
> FILE FV_IMAGE = 5248467B-B87B-4E74-AC02-398AF4BCB712 {
> SECTION GUIDED EE4E5898-3914-4259-9D6E-DC7BD79403CF
> PROCESSING_REQUIRED = TRUE {
> - SECTION FV_IMAGE = FvAdvancedLate
> + SECTION FV_IMAGE = FvAdvancedUncompact
> }
> }
>
> --
> 2.16.2.windows.1
next prev parent reply other threads:[~2019-11-29 6:45 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-28 1:05 [edk2-platforms][PATCH V2 00/47] Intel Advanced Feature Refactor Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 01/47] AdvancedFeaturePkg: Package DSC style cleanup Kubacki, Michael A
2019-12-03 8:45 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 02/47] DebugFeaturePkg: " Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 03/47] UserInterfaceFeaturePkg: " Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 04/47] Features/Intel: Add Readme.md Kubacki, Michael A
2019-12-03 9:07 ` Chaganty, Rangasai V
2019-12-03 23:57 ` Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 05/47] Features/Intel/PowerManagement: " Kubacki, Michael A
2019-12-03 9:14 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 06/47] Features/Intel/OutOfBandManagement: " Kubacki, Michael A
2019-12-03 9:22 ` Chaganty, Rangasai V
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 07/47] Features/Intel/SystemInformation: " Kubacki, Michael A
2019-12-03 9:30 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 08/47] Features/Intel/Debugging: " Kubacki, Michael A
2019-12-03 9:32 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 09/47] Features/Intel/UserInterface: " Kubacki, Michael A
2019-12-03 9:36 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 10/47] Features/Intel/Network: " Kubacki, Michael A
2019-12-03 9:38 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 11/47] TemplateFeaturePkg: Add initial package Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 12/47] Features/Intel/S3FeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 13/47] Features/Intel/IpmiFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-12-04 7:53 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 14/47] Features/Intel/IpmiFeaturePkg: Add libraries Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-12-04 8:10 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 15/47] Features/Intel/IpmiFeaturePkg: Add modules Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-12-04 8:22 ` Chaganty, Rangasai V
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 16/47] Features/Intel/SmbiosFeaturePkg: Add initial package Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 17/47] Features/Intel/SmbiosFeaturePkg: Update default strings Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 18/47] Features/Intel/AcpiDebugFeaturePkg: Add initial package Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 19/47] Features/Intel/Usb3DebugFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 20/47] Features/Intel/UserAuthFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 21/47] Features/Intel/NetworkFeaturePkg: " Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 22/47] Features/Intel/AdvancedFeaturePkg: Add package Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 23/47] Features/Intel/AdvancedFeaturePkg: Add temporary build workaround Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 24/47] Features/Intel/AdvancedFeaturePkg: Add FDF include files Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 25/47] KabylakeOpenBoardPkg/KabylakeRvp3: Add PEI_ARCH and DXE_ARCH Kubacki, Michael A
2019-11-29 6:42 ` [edk2-devel] " Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 26/47] KabylakeOpenBoardPkg/GalagoPro3: " Kubacki, Michael A
2019-11-29 6:43 ` Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 27/47] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-11-29 6:43 ` [edk2-devel] " Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 28/47] SimicsOpenBoardPkg/BoardX58Ich10: Use " Kubacki, Michael A
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 29/47] MinPlatformPkg: Add FvAdvancedPreMemory Kubacki, Michael A
2019-11-29 6:43 ` [edk2-devel] " Chiu, Chasel
2019-12-03 23:57 ` Nate DeSimone
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 30/47] KabylakeOpenBoardPkg/KabylakeRvp3: " Kubacki, Michael A
2019-11-29 6:45 ` Chiu, Chasel [this message]
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 31/47] KabylakeOpenBoardPkg/GalagoPro3: " Kubacki, Michael A
2019-11-29 6:49 ` Chiu, Chasel
2019-11-28 1:05 ` [edk2-platforms][PATCH V2 32/47] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-11-29 6:50 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 33/47] Platform/Intel: Add advanced feature build support Kubacki, Michael A
2019-11-29 6:52 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 34/47] Platform/Intel/Readme.md Content update Kubacki, Michael A
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 35/47] KabylakeOpenBoardPkg/GalagoPro3: Enable advanced features Kubacki, Michael A
2019-11-29 7:00 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 36/47] KabylakeOpenBoardPkg/KabylakeRvp3: " Kubacki, Michael A
2019-11-29 7:01 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 37/47] WhiskeylakeOpenBoardPkg/WhiskeylakeURvp: " Kubacki, Michael A
2019-11-29 7:02 ` Chiu, Chasel
2019-11-28 1:06 ` [edk2-platforms][PATCH V2 38/47] SimicsOpenBoardPkg: Use new advanced feature refactor Kubacki, Michael A
2019-12-03 23:57 ` [edk2-devel] " Nate DeSimone
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=3C3EFB470A303B4AB093197B6777CCEC505B1F1E@PGSMSX111.gar.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