public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Pete Batard" <pete@akeo.ie>
To: devel@edk2.groups.io, philmd@redhat.com
Cc: ard.biesheuvel@linaro.org, leif.lindholm@linaro.org
Subject: Re: [edk2-devel] [edk2-platforms PATCH 1/1] Platforms/RPi3: DisplayDxe virtual resolution improvements
Date: Fri, 27 Sep 2019 18:51:42 +0100	[thread overview]
Message-ID: <82e73d37-1ce1-8939-d5c7-f844f9648645@akeo.ie> (raw)
In-Reply-To: <fe3a53c0-ce45-a999-04a4-4057761433aa@redhat.com>

Hi Philippe,

On 2019.09.27 17:38, Philippe Mathieu-Daudé wrote:
> Hi Pete,
> 
> On 9/27/19 11:20 AM, Pete Batard wrote:
>> From: Andrei Warkentin <andrey.warkentin@gmail.com>
>>
>> The Pi GPU decouples requested resolution from actual physical resolution
>> and can perform scaling of virtual resolutions. This enables platform users
>> to do something like ask for 1024x768 and get a framebuffer of that size,
>> regardless of the actual output (which could be a very blurry SDTV).
>>
>> Specifically, this patch allows selecting which specific virtual
>> resolutions to enable, thus replacing the old all-or-nothing behaviour
>> with either all virtual resolutions supported, or just the native one.
>>
>> This patch also adds enables the common 7" Pi (800x480) screen to be used
>> at 800x600 resolution, instead of forcing 640x480 as the only usable
>> resolution.
> 
> I tried to build the RPi3 platform but I get errors because it seems to
> use an older edk2 repository. What tag should I use?

I just re-built against very latest edk2/edk2-platforms/edk2-non-osi 
(pulled a couple minutes ago) and I'm not seeing any issue. It should 
build against latest.

What error are you getting?

>>
>> Signed-off-by: Pete Batard <pete@akeo.ie>
> 
> Hmm shouldn't this patch have a S-o-b from Andrei Warkentin too?

We discussed this before with Leif (who has since replied), and agreed 
that it makes no sense to use a S-o-b unless it's the actual person 
sending the e-mail.

Regards,

/Pete

> 
> Thanks,
> 
> Phil.
> 
>> ---
>>   Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c      |  9 +--
>>   Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf    |  2 +-
>>   Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni | 17 +++--
>>   Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr | 71 ++++++++++++++++----
>>   Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c    | 53 +++++++++++++--
>>   Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf  |  2 +-
>>   Platform/RaspberryPi/RPi3/RPi3.dec                           |  2 +-
>>   Platform/RaspberryPi/RPi3/RPi3.dsc                           |  2 +-
>>   8 files changed, 125 insertions(+), 33 deletions(-)
>>
>> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c
>> index fcb4ce6935b6..98e58a560ed4 100644
>> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c
>> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.c
>> @@ -92,6 +92,7 @@ SetupVariables (
>>     )
>>   {
>>     UINTN Size;
>> +  UINT8 Var8;
>>     UINT32 Var32;
>>     EFI_STATUS Status;
>>   
>> @@ -180,12 +181,12 @@ SetupVariables (
>>       PcdSet32 (PcdDebugShowUEFIExit, PcdGet32 (PcdDebugShowUEFIExit));
>>     }
>>   
>> -  Size = sizeof (UINT32);
>> -  Status = gRT->GetVariable (L"DisplayEnableVModes",
>> +  Size = sizeof (UINT8);
>> +  Status = gRT->GetVariable (L"DisplayEnableScaledVModes",
>>                     &gConfigDxeFormSetGuid,
>> -                  NULL, &Size, &Var32);
>> +                  NULL, &Size, &Var8);
>>     if (EFI_ERROR (Status)) {
>> -    PcdSet32 (PcdDisplayEnableVModes, PcdGet32 (PcdDisplayEnableVModes));
>> +    PcdSet8 (PcdDisplayEnableScaledVModes, PcdGet8 (PcdDisplayEnableScaledVModes));
>>     }
>>   
>>     Size = sizeof (UINT32);
>> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf
>> index 2fc4302526a1..24112d517467 100644
>> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf
>> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxe.inf
>> @@ -64,7 +64,7 @@ [Pcd]
>>     gRaspberryPiTokenSpaceGuid.PcdMmcDisableMulti
>>     gRaspberryPiTokenSpaceGuid.PcdDebugEnableJTAG
>>     gRaspberryPiTokenSpaceGuid.PcdDebugShowUEFIExit
>> -  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes
>> +  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes
>>     gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot
>>   
>>   [FeaturePcd]
>> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni
>> index 65b45f3e6496..9b4076635f05 100644
>> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni
>> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.uni
>> @@ -71,10 +71,19 @@
>>   #string STR_DISPLAY_FORM_TITLE      #language en-US "Display"
>>   #string STR_DISPLAY_FORM_SUBTITLE   #language en-US "UEFI video driver settings"
>>   
>> -#string STR_DISPLAY_VMODES_PROMPT   #language en-US "Resolutions"
>> -#string STR_DISPLAY_VMODES_HELP     #language en-US "Support for non-native modes"
>> -#string STR_DISPLAY_VMODES_ENABLE   #language en-US "Also support 640x480, 800x600, 1024x768, 720p and 1080p"
>> -#string STR_DISPLAY_VMODES_DISABLE  #language en-US "Only native resolution"
>> +#string STR_DISPLAY_VMODES_640_PROMPT  #language en-US "Virtual 640x480"
>> +#string STR_DISPLAY_VMODES_640_HELP    #language en-US "Enable scaled 640x480 mode"
>> +#string STR_DISPLAY_VMODES_800_PROMPT  #language en-US "Virtual 800x600"
>> +#string STR_DISPLAY_VMODES_800_HELP    #language en-US "Enable scaled 800x600 mode"
>> +#string STR_DISPLAY_VMODES_1024_PROMPT #language en-US "Virtual 1024x768"
>> +#string STR_DISPLAY_VMODES_1024_HELP   #language en-US "Enable scaled 1024x768 mode"
>> +#string STR_DISPLAY_VMODES_720_PROMPT  #language en-US "Virtual 720p"
>> +#string STR_DISPLAY_VMODES_720_HELP    #language en-US "Enable scaled 720p mode"
>> +#string STR_DISPLAY_VMODES_1080_PROMPT #language en-US "Virtual 1080p"
>> +#string STR_DISPLAY_VMODES_1080_HELP   #language en-US "Enable scaled 1080p mode"
>> +
>> +#string STR_DISPLAY_VMODES_REAL_PROMPT #language en-US "Native resolution"
>> +#string STR_DISPLAY_VMODES_REAL_HELP   #language en-US "Native resolution"
>>   
>>   #string STR_DISPLAY_SSHOT_PROMPT    #language en-US "Screenshot Support"
>>   #string STR_DISPLAY_SSHOT_HELP      #language en-US "Save screen capture as a BMP on the first writable file system found"
>> diff --git a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr
>> index 217a285b5a1f..60bfdbd4d17e 100644
>> --- a/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr
>> +++ b/Platform/RaspberryPi/RPi3/Drivers/ConfigDxe/ConfigDxeHii.vfr
>> @@ -9,14 +9,23 @@
>>   #include <Guid/HiiPlatformSetupFormset.h>
>>   #include "ConfigDxeFormSetGuid.h"
>>   
>> +#pragma pack(1)
>>   typedef struct {
>>     /*
>> -   * 0 - One mode for the boot resolution.
>> -   * 1 - Adds additional "typical" resolutions like
>> -   *     640x480, 800x600, 1024 x 768, 720p and 1080p.
>> +   * One bit for each scaled resolution supported,
>> +   * these are ordered exactly like mGopModeData
>> +   * in DisplayDxe.
>> +   *
>> +   * 800x600, 640x480, 1024x768, 720p, 1080p, native.
>>      */
>> -   UINT32 Enable;
>> -} DISPLAY_ENABLE_VMODES_VARSTORE_DATA;
>> +   UINT8 v640   : 1;
>> +   UINT8 v800   : 1;
>> +   UINT8 v1024  : 1;
>> +   UINT8 v720p  : 1;
>> +   UINT8 v1080p : 1;
>> +   UINT8 Physical : 1;
>> +} DISPLAY_ENABLE_SCALED_VMODES_VARSTORE_DATA;
>> +#pragma pack()
>>   
>>   typedef struct {
>>     /*
>> @@ -166,9 +175,9 @@ formset
>>         name  = DebugShowUEFIExit,
>>         guid  = CONFIGDXE_FORM_SET_GUID;
>>   
>> -    efivarstore DISPLAY_ENABLE_VMODES_VARSTORE_DATA,
>> +    efivarstore DISPLAY_ENABLE_SCALED_VMODES_VARSTORE_DATA,
>>         attribute = EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_NON_VOLATILE,
>> -      name  = DisplayEnableVModes,
>> +      name  = DisplayEnableScaledVModes,
>>         guid  = CONFIGDXE_FORM_SET_GUID;
>>   
>>       efivarstore DISPLAY_ENABLE_SSHOT_VARSTORE_DATA,
>> @@ -282,13 +291,47 @@ formset
>>           title  = STRING_TOKEN(STR_DISPLAY_FORM_TITLE);
>>           subtitle text = STRING_TOKEN(STR_DISPLAY_FORM_SUBTITLE);
>>   
>> -        oneof varid = DisplayEnableVModes.Enable,
>> -            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_PROMPT),
>> -            help        = STRING_TOKEN(STR_DISPLAY_VMODES_HELP),
>> -            flags       = NUMERIC_SIZE_4 | INTERACTIVE | RESET_REQUIRED,
>> -            option text = STRING_TOKEN(STR_DISPLAY_VMODES_ENABLE), value = 1, flags = DEFAULT;
>> -            option text = STRING_TOKEN(STR_DISPLAY_VMODES_DISABLE), value = 0, flags = 0;
>> -        endoneof;
>> +        checkbox varid = DisplayEnableScaledVModes.v640,
>> +            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_640_PROMPT),
>> +            help        = STRING_TOKEN(STR_DISPLAY_VMODES_640_HELP),
>> +            flags       = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED,
>> +            default     = TRUE,
>> +        endcheckbox;
>> +
>> +        checkbox varid = DisplayEnableScaledVModes.v800,
>> +            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_800_PROMPT),
>> +            help        = STRING_TOKEN(STR_DISPLAY_VMODES_800_HELP),
>> +            flags       = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED,
>> +            default     = TRUE,
>> +        endcheckbox;
>> +
>> +        checkbox varid = DisplayEnableScaledVModes.v1024,
>> +            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_1024_PROMPT),
>> +            help        = STRING_TOKEN(STR_DISPLAY_VMODES_1024_HELP),
>> +            flags       = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED,
>> +            default     = TRUE,
>> +        endcheckbox;
>> +
>> +        checkbox varid = DisplayEnableScaledVModes.v720p,
>> +            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_720_PROMPT),
>> +            help        = STRING_TOKEN(STR_DISPLAY_VMODES_720_HELP),
>> +            flags       = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED,
>> +            default     = TRUE,
>> +        endcheckbox;
>> +
>> +        checkbox varid = DisplayEnableScaledVModes.v1080p,
>> +            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_1080_PROMPT),
>> +            help        = STRING_TOKEN(STR_DISPLAY_VMODES_1080_HELP),
>> +            flags       = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED,
>> +            default     = TRUE,
>> +        endcheckbox;
>> +
>> +        checkbox varid = DisplayEnableScaledVModes.Physical,
>> +            prompt      = STRING_TOKEN(STR_DISPLAY_VMODES_REAL_PROMPT),
>> +            help        = STRING_TOKEN(STR_DISPLAY_VMODES_REAL_HELP),
>> +            flags       = CHECKBOX_DEFAULT | CHECKBOX_DEFAULT_MFG | RESET_REQUIRED,
>> +            default     = TRUE,
>> +        endcheckbox;
>>   
>>           oneof varid = DisplayEnableSShot.Enable,
>>               prompt      = STRING_TOKEN(STR_DISPLAY_SSHOT_PROMPT),
>> diff --git a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c
>> index 9475a5ad670c..b880ca827bd6 100644
>> --- a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c
>> +++ b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.c
>> @@ -10,6 +10,14 @@
>>   #include <Base.h>
>>   #include "DisplayDxe.h"
>>   
>> +#define MODE_800_ENABLED      BIT0
>> +#define MODE_640_ENABLED      BIT1
>> +#define MODE_1024_ENABLED     BIT2
>> +#define MODE_720P_ENABLED     BIT3
>> +#define MODE_1080P_ENABLED    BIT4
>> +#define MODE_NATIVE_ENABLED   BIT5
>> +#define JUST_NATIVE_ENABLED   MODE_NATIVE_ENABLED
>> +#define ALL_MODES             (BIT6 - 1)
>>   #define POS_TO_FB(posX, posY) ((UINT8*)                                 \
>>                                  ((UINTN)This->Mode->FrameBufferBase +    \
>>                                   (posY) * This->Mode->Info->PixelsPerScanLine * \
>> @@ -104,7 +112,7 @@ STATIC RASPBERRY_PI_FIRMWARE_PROTOCOL *mFwProtocol;
>>   STATIC EFI_CPU_ARCH_PROTOCOL *mCpu;
>>   
>>   STATIC UINTN mLastMode;
>> -STATIC GOP_MODE_DATA mGopModeData[] = {
>> +STATIC GOP_MODE_DATA mGopModeTemplate[] = {
>>     { 800,  600  }, /* Legacy */
>>     { 640,  480  }, /* Legacy */
>>     { 1024, 768  }, /* Legacy */
>> @@ -113,6 +121,9 @@ STATIC GOP_MODE_DATA mGopModeData[] = {
>>     { 0,    0    }, /* Physical */
>>   };
>>   
>> +STATIC UINTN mLastMode;
>> +STATIC GOP_MODE_DATA mGopModeData[ARRAY_SIZE (mGopModeTemplate)];
>> +
>>   STATIC DISPLAY_DEVICE_PATH mDisplayProtoDevicePath =
>>   {
>>     {
>> @@ -446,6 +457,7 @@ DriverStart (
>>     )
>>   {
>>     UINTN Index;
>> +  UINTN TempIndex;
>>     EFI_STATUS Status;
>>     VOID *Dummy;
>>   
>> @@ -473,11 +485,29 @@ DriverStart (
>>       goto Done;
>>     }
>>   
>> +  PcdSet8 (PcdDisplayEnableScaledVModes,
>> +    PcdGet8 (PcdDisplayEnableScaledVModes) & ALL_MODES);
>>   
>> -  if (PcdGet32 (PcdDisplayEnableVModes)) {
>> -    mLastMode = ARRAY_SIZE (mGopModeData) - 1;
>> -  } else {
>> -    mLastMode = 0;
>> +  if (PcdGet8 (PcdDisplayEnableScaledVModes) == 0) {
>> +    PcdSet8 (PcdDisplayEnableScaledVModes, JUST_NATIVE_ENABLED);
>> +  }
>> +
>> +  mLastMode = 0;
>> +  for  (TempIndex = 0, Index = 0;
>> +        TempIndex < ARRAY_SIZE (mGopModeTemplate); TempIndex++) {
>> +    if ((PcdGet8 (PcdDisplayEnableScaledVModes) & (1 << TempIndex)) != 0) {
>> +      DEBUG ((DEBUG_ERROR, "Mode %u: %u x %u present\n",
>> +        TempIndex, mGopModeTemplate[TempIndex].Width,
>> +        mGopModeTemplate[TempIndex].Height));
>> +
>> +      CopyMem (&mGopModeData[Index], &mGopModeTemplate[TempIndex],
>> +        sizeof (GOP_MODE_DATA));
>> +      mLastMode = Index;
>> +      Index++;
>> +    }
>> +  }
>> +
>> +  if (PcdGet8 (PcdDisplayEnableScaledVModes) == JUST_NATIVE_ENABLED) {
>>       /*
>>        * mBootWidth x mBootHeight may not be sensible,
>>        * so clean it up, since we won't be adding
>> @@ -486,11 +516,20 @@ DriverStart (
>>       if (mBootWidth < 640 || mBootHeight < 480) {
>>         mBootWidth = 640;
>>         mBootHeight = 480;
>> +    } else if (mBootWidth == 800 && mBootHeight == 480) {
>> +      /* The Pi 7" screen is close to 800x600, just pretend it is. */
>> +      mBootHeight = 600;
>>       }
>>     }
>>   
>> -  mGopModeData[mLastMode].Width = mBootWidth;
>> -  mGopModeData[mLastMode].Height = mBootHeight;
>> +  if ((PcdGet8(PcdDisplayEnableScaledVModes) & MODE_NATIVE_ENABLED) != 0) {
>> +     /*
>> +      * Adjust actual native res only if native res is enabled
>> +      * (so last mode is native res).
>> +      */
>> +     mGopModeData[mLastMode].Width = mBootWidth;
>> +     mGopModeData[mLastMode].Height = mBootHeight;
>> +  }
>>   
>>     for (Index = 0; Index <= mLastMode; Index++) {
>>       UINTN FbSize;
>> diff --git a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf
>> index 11271045bdd9..31da2090b402 100644
>> --- a/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf
>> +++ b/Platform/RaspberryPi/RPi3/Drivers/DisplayDxe/DisplayDxe.inf
>> @@ -57,7 +57,7 @@ [Protocols]
>>     gRaspberryPiFirmwareProtocolGuid
>>   
>>   [Pcd]
>> -  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes
>> +  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes
>>     gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot
>>   
>>   [Guids]
>> diff --git a/Platform/RaspberryPi/RPi3/RPi3.dec b/Platform/RaspberryPi/RPi3/RPi3.dec
>> index d2a813417648..0554ee20bac5 100644
>> --- a/Platform/RaspberryPi/RPi3/RPi3.dec
>> +++ b/Platform/RaspberryPi/RPi3/RPi3.dec
>> @@ -54,5 +54,5 @@ [PcdsFixedAtBuild, PcdsPatchableInModule, PcdsDynamic, PcdsDynamicEx]
>>     gRaspberryPiTokenSpaceGuid.PcdDebugEnableJTAG|0|UINT32|0x00000014
>>     gRaspberryPiTokenSpaceGuid.PcdDebugShowUEFIExit|0|UINT32|0x00000015
>>     gRaspberryPiTokenSpaceGuid.PcdCustomCpuClock|0|UINT32|0x00000016
>> -  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes|0|UINT32|0x00000017
>> +  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes|0|UINT8|0x00000017
>>     gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot|0|UINT32|0x00000018
>> diff --git a/Platform/RaspberryPi/RPi3/RPi3.dsc b/Platform/RaspberryPi/RPi3/RPi3.dsc
>> index 2b9e619ad55c..b37a02e97da7 100644
>> --- a/Platform/RaspberryPi/RPi3/RPi3.dsc
>> +++ b/Platform/RaspberryPi/RPi3/RPi3.dsc
>> @@ -416,7 +416,7 @@ [PcdsDynamicHii.common.DEFAULT]
>>     #
>>     # Display-related.
>>     #
>> -  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableVModes|L"DisplayEnableVModes"|gConfigDxeFormSetGuid|0x0|0
>> +  gRaspberryPiTokenSpaceGuid.PcdDisplayEnableScaledVModes|L"DisplayEnableScaledVModes"|gConfigDxeFormSetGuid|0x0|0xff
>>     gRaspberryPiTokenSpaceGuid.PcdDisplayEnableSShot|L"DisplayEnableSShot"|gConfigDxeFormSetGuid|0x0|1
>>   
>>     #
>>
> 
> 
> 
> 


  parent reply	other threads:[~2019-09-27 17:51 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-27  9:20 [edk2-platforms PATCH 1/1] Platforms/RPi3: DisplayDxe virtual resolution improvements Pete Batard
2019-09-27 16:38 ` [edk2-devel] " Philippe Mathieu-Daudé
2019-09-27 17:49   ` Leif Lindholm
2019-09-27 20:23     ` Philippe Mathieu-Daudé
2019-09-27 20:41       ` Pete Batard
2019-10-01 10:20         ` Philippe Mathieu-Daudé
2019-10-01 13:18           ` Leif Lindholm
2019-09-27 17:51   ` Pete Batard [this message]
2019-09-28 23:05 ` Leif Lindholm
2019-09-30  9:32   ` Pete Batard
2019-10-01 13:10     ` Leif Lindholm
2019-10-01 13:35       ` [edk2-devel] " Philippe Mathieu-Daudé

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=82e73d37-1ce1-8939-d5c7-f844f9648645@akeo.ie \
    --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