public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Ard Biesheuvel" <ardb@kernel.org>
To: Pranav Madhu <pranav.madhu@arm.com>
Cc: edk2-devel-groups-io <devel@edk2.groups.io>,
	Ard Biesheuvel <ardb+tianocore@kernel.org>,
	 Sami Mujawar <sami.mujawar@arm.com>
Subject: Re: [edk2-platforms][PATCH V1 1/1] Platform/Sgi: Remove SLC entry from PPTT table
Date: Wed, 20 Apr 2022 09:35:08 +0200	[thread overview]
Message-ID: <CAMj1kXHVU6QG5tvVJhXYXfyiYSeNw=vHmT0o8pzuS4uyAJoKbw@mail.gmail.com> (raw)
In-Reply-To: <20220418081403.2324-1-pranav.madhu@arm.com>

On Mon, 18 Apr 2022 at 10:14, Pranav Madhu <pranav.madhu@arm.com> wrote:
>
> Remove system level cache (SLC) entry from ACPI PPTT table. SLC on the
> Neoverse reference design platforms is the memory side cache and so it
> is removed from PPTT table.
>

Could you elaborate? Why does the former justify/imply the latter?

> Signed-off-by: Pranav Madhu <pranav.madhu@arm.com>
> ---
>  Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h         |  4 +---
>  Platform/ARM/SgiPkg/AcpiTables/RdE1Edge/Pptt.aslc   | 24 +++-----------------
>  Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Pptt.aslc   | 20 +++-------------
>  Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Pptt.aslc | 23 +++----------------
>  Platform/ARM/SgiPkg/AcpiTables/RdN2/Pptt.aslc       | 21 ++++-------------
>  Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Pptt.aslc   | 21 ++++-------------
>  Platform/ARM/SgiPkg/AcpiTables/RdV1/Pptt.aslc       | 21 ++++-------------
>  Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Pptt.aslc     | 23 ++++---------------
>  8 files changed, 26 insertions(+), 131 deletions(-)
>
> Link to github branch for this patch -
> https://github.com/Pranav-Madhu/edk2-platforms/tree/topics/remove_slc_from_pptt
>
> diff --git a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
> index d75d54055436..e9b6923cb035 100644
> --- a/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
> +++ b/Platform/ARM/SgiPkg/Include/SgiAcpiHeader.h
> @@ -68,10 +68,8 @@ typedef struct {
>  // PPTT processor package structure
>  typedef struct {
>    EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Package;
> -  UINT32                                 ResourceOffset;
> -  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      Slc;
>    RD_PPTT_MINIMAL_CLUSTER                Cluster[CLUSTER_COUNT];
> -} RD_PPTT_SLC_PACKAGE;
> +} RD_PPTT_PACKAGE;
>  #pragma pack ()
>
>  //
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdE1Edge/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdE1Edge/Pptt.aslc
> index 3615a11d75b0..0ef9607c0732 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdE1Edge/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdE1Edge/Pptt.aslc
> @@ -8,7 +8,7 @@
>  * Each cluster includes a 2MB L3 cache. The platform also includes a system
>  * level cache of 8MB.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  *
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
> @@ -168,28 +168,12 @@
>  #define PPTT_PACKAGE_INIT(PackageId)                                           \
>    {                                                                            \
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (                               \
> -      OFFSET_OF (RDE1EDGE_PPTT_PACKAGE, Slc),                                  \
> +      OFFSET_OF (RDE1EDGE_PPTT_PACKAGE, Cluster[0]),                           \
>        PPTT_PROCESSOR_PACKAGE_FLAGS,                                            \
>        0,                                                                       \
>        0,                                                                       \
> -      1                                                                        \
> +      0                                                                        \
>      ),                                                                         \
> -                                                                               \
> -    /* Offsets of the private resources */                                     \
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,               \
> -               Package.Slc),                                                   \
> -                                                                               \
> -    /* SLC parameters */                                                       \
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (                                   \
> -      PPTT_CACHE_STRUCTURE_FLAGS,         /* Flag */                           \
> -      0,                                  /* Next level of cache */            \
> -      SIZE_8MB,                           /* Size */                           \
> -      8192,                               /* Num of sets */                    \
> -      16,                                 /* Associativity */                  \
> -      PPTT_UNIFIED_CACHE_ATTR,            /* Attributes */                     \
> -      64                                  /* Line size */                      \
> -    ),                                                                         \
> -                                                                               \
>      {                                                                          \
>        PPTT_CLUSTER_INIT (PackageId, 0),                                        \
>        PPTT_CLUSTER_INIT (PackageId, 1),                                        \
> @@ -219,8 +203,6 @@ typedef struct {
>
>  typedef struct {
>    EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Package;
> -  UINT32                                 Offset;
> -  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      Slc;
>    RDE1EDGE_PPTT_CLUSTER                  Cluster[CLUSTER_COUNT];
>  } RDE1EDGE_PPTT_PACKAGE;
>
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Pptt.aslc
> index 63056939a868..923ee9014970 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1Edge/Pptt.aslc
> @@ -8,7 +8,7 @@
>  * cache. Each cluster includes a 2MB L3 cache. The platform also includes a
>  * system level cache of 8MB.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  *
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
> @@ -132,8 +132,6 @@
>  #pragma pack(1)
>  typedef struct {
>    EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Package;
> -  UINT32                                 Offset;
> -  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      Slc;
>    RD_PPTT_CLUSTER                        Cluster[CLUSTER_COUNT];
>  } RDN1EDGE_PPTT_PACKAGE ;
>
> @@ -157,21 +155,9 @@ STATIC EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE Pptt = {
>
>    {
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (
> -      OFFSET_OF (RDN1EDGE_PPTT_PACKAGE , Slc),
> -      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 1),
> +      OFFSET_OF (RDN1EDGE_PPTT_PACKAGE , Cluster[0]),
> +      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 0),
>
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,
> -               Package.Slc),
> -
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (
> -      PPTT_CACHE_STRUCTURE_FLAGS,           /* Flag */
> -      0,                                    /* Next level of cache */
> -      SIZE_8MB,                             /* Size */
> -      8192,                                 /* Num of sets */
> -      16,                                   /* Associativity */
> -      PPTT_UNIFIED_CACHE_ATTR,              /* Attributes */
> -      64                                    /* Line size */
> -    ),
>      {
>        PPTT_CLUSTER_INIT (0, 0),
>        PPTT_CLUSTER_INIT (0, 1),
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Pptt.aslc
> index fa80544b61aa..d78afb00c3b0 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdN1EdgeX2/Pptt.aslc
> @@ -10,7 +10,7 @@
>  * cluster includes a 2MB L3 cache. Each instance of the chip includes a system
>  * level cache of 8MB.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  *
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
> @@ -140,26 +140,11 @@
>  #define PPTT_PACKAGE_INIT(PackageId)                                           \
>    {                                                                            \
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (                               \
> -      OFFSET_OF (RDN1EDGEX2_PPTT_PACKAGE , Slc),  /* Length */                 \
> +      OFFSET_OF (RDN1EDGEX2_PPTT_PACKAGE , Cluster[0]),  /* Length */          \
>        PPTT_PROCESSOR_PACKAGE_FLAGS,       /* Flag */                           \
>        0,                                  /* Parent */                         \
>        0,                                  /* ACPI Id */                        \
> -      1                                   /* Num of private resource */        \
> -    ),                                                                         \
> -                                                                               \
> -    /* Offsets of the private resources */                                     \
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,               \
> -               Package[PackageId].Slc),                                        \
> -                                                                               \
> -    /* SLC parameters */                                                       \
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (                                   \
> -      PPTT_CACHE_STRUCTURE_FLAGS,         /* Flag */                           \
> -      0,                                  /* Next level of cache */            \
> -      SIZE_8MB,                           /* Size */                           \
> -      8192,                               /* Num of sets */                    \
> -      16,                                 /* Associativity */                  \
> -      PPTT_UNIFIED_CACHE_ATTR,            /* Attributes */                     \
> -      64                                  /* Line size */                      \
> +      0                                   /* Num of private resource */        \
>      ),                                                                         \
>                                                                                 \
>      {                                                                          \
> @@ -171,8 +156,6 @@
>  #pragma pack(1)
>  typedef struct {
>    EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR  Package;
> -  UINT32                                 Offset;
> -  EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE      Slc;
>    RD_PPTT_CLUSTER                        Cluster[CLUSTER_COUNT];
>  } RDN1EDGEX2_PPTT_PACKAGE;
>
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdN2/Pptt.aslc
> index b70d583ba90c..2ee566145382 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdN2/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2/Pptt.aslc
> @@ -7,7 +7,7 @@
>  * cache, 64KB L1 Instruction cache and 1MB L2 cache. The platform also includes
>  * system level cache of 32MB.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  *
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
> @@ -116,7 +116,7 @@
>   */
>  typedef struct {
>    EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER  Header;
> -  RD_PPTT_SLC_PACKAGE                                      Package;
> +  RD_PPTT_PACKAGE                                          Package;
>  } EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE;
>  #pragma pack ()
>
> @@ -131,21 +131,8 @@ STATIC EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE Pptt = {
>
>    {
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (
> -      OFFSET_OF (RD_PPTT_SLC_PACKAGE, Slc),
> -      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 1),
> -
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,
> -               Package.Slc),
> -
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (
> -      PPTT_CACHE_STRUCTURE_FLAGS,           /* Flag */
> -      0,                                    /* Next level of cache */
> -      SIZE_32MB,                            /* Size */
> -      32768,                                /* Num of sets */
> -      16,                                   /* Associativity */
> -      PPTT_UNIFIED_CACHE_ATTR,              /* Attributes */
> -      64                                    /* Line size */
> -    ),
> +      OFFSET_OF (RD_PPTT_PACKAGE, Cluster[0]),
> +      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 0),
>
>      {
>        PPTT_CLUSTER_INIT (0, 0),
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Pptt.aslc
> index 5890544c0b92..54eb6d6c41b3 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdN2Cfg1/Pptt.aslc
> @@ -7,7 +7,7 @@
>  * L1 Data cache, 64KB L1 Instruction cache and 1MB L2 cache. The platform also
>  * includes system level cache of 8MB.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
>  * @par Specification Reference:
> @@ -115,7 +115,7 @@
>   */
>  typedef struct {
>    EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER  Header;
> -  RD_PPTT_SLC_PACKAGE                                      Package;
> +  RD_PPTT_PACKAGE                                          Package;
>  } EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE;
>  #pragma pack ()
>
> @@ -130,21 +130,8 @@ STATIC EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE Pptt = {
>
>    {
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (
> -      OFFSET_OF (RD_PPTT_SLC_PACKAGE, Slc),
> -      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 1),
> -
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,
> -               Package.Slc),
> -
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (
> -      PPTT_CACHE_STRUCTURE_FLAGS,           /* Flag */
> -      0,                                    /* Next level of cache */
> -      SIZE_8MB,                             /* Size */
> -      8192,                                 /* Num of sets */
> -      16,                                   /* Associativity */
> -      PPTT_UNIFIED_CACHE_ATTR,              /* Attributes */
> -      64                                    /* Line size */
> -    ),
> +      OFFSET_OF (RD_PPTT_PACKAGE, Cluster[0]),
> +      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 0),
>
>      {
>        PPTT_CLUSTER_INIT (0, 0),
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdV1/Pptt.aslc
> index 06f059810fb2..d8b73c804898 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdV1/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1/Pptt.aslc
> @@ -7,7 +7,7 @@
>  * CPUs include 64KB L1 Data cache, 64KB L1 Instruction cache and 1MB L2 cache.
>  * The platform also includes a system level cache of 16MB.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  *
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
> @@ -116,7 +116,7 @@
>   */
>  typedef struct {
>    EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER  Header;
> -  RD_PPTT_SLC_PACKAGE                                      Package;
> +  RD_PPTT_PACKAGE                                          Package;
>  } EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE;
>  #pragma pack ()
>
> @@ -131,21 +131,8 @@ STATIC EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE Pptt = {
>
>    {
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (
> -      OFFSET_OF (RD_PPTT_SLC_PACKAGE, Slc),
> -      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 1),
> -
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,
> -               Package.Slc),
> -
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (
> -      PPTT_CACHE_STRUCTURE_FLAGS,           /* Flag */
> -      0,                                    /* Next level of cache */
> -      SIZE_16MB,                            /* Size */
> -      16384,                                /* Num of sets */
> -      16,                                   /* Associativity */
> -      PPTT_UNIFIED_CACHE_ATTR,              /* Attributes */
> -      64                                    /* Line size */
> -    ),
> +      OFFSET_OF (RD_PPTT_PACKAGE, Cluster[0]),
> +      PPTT_PROCESSOR_PACKAGE_FLAGS, 0, 0, 0),
>
>      {
>        PPTT_CLUSTER_INIT (0, 0),
> diff --git a/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Pptt.aslc b/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Pptt.aslc
> index 607a9eac9dc0..82124ca2ab65 100644
> --- a/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Pptt.aslc
> +++ b/Platform/ARM/SgiPkg/AcpiTables/RdV1Mc/Pptt.aslc
> @@ -9,7 +9,7 @@
>  * cache and 1MB L2 cache. The platform also includes a system level cache of
>  * 16MB per chip.
>  *
> -* Copyright (c) 2021, ARM Limited. All rights reserved.
> +* Copyright (c) 2021 - 2022, Arm Limited. All rights reserved.
>  *
>  * SPDX-License-Identifier: BSD-2-Clause-Patent
>  *
> @@ -121,27 +121,12 @@
>  #define PPTT_PACKAGE_INIT(PackageId)                                           \
>    {                                                                            \
>      EFI_ACPI_6_3_PPTT_STRUCTURE_PROCESSOR_INIT (                               \
> -      OFFSET_OF (RD_PPTT_SLC_PACKAGE, Slc), /* Length */                       \
> +      OFFSET_OF (RD_PPTT_PACKAGE, Cluster[0]),  /* Length */                   \
>        PPTT_PROCESSOR_PACKAGE_FLAGS,         /* Flag */                         \
>        0,                                    /* Parent */                       \
>        0,                                    /* ACPI Id */                      \
> -      1                                     /* Num of private resource */      \
> +      0                                     /* Num of private resource */      \
>      ),                                                                         \
> -                                                                               \
> -    /* Offsets of the private resources */                                     \
> -    OFFSET_OF (EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE,               \
> -               Package[PackageId].Slc),                                        \
> -                                                                               \
> -    EFI_ACPI_6_3_PPTT_STRUCTURE_CACHE_INIT (                                   \
> -      PPTT_CACHE_STRUCTURE_FLAGS,           /* Flag */                         \
> -      0,                                    /* Next level of cache */          \
> -      SIZE_16MB,                            /* Size */                         \
> -      16384,                                /* Num of sets */                  \
> -      16,                                   /* Associativity */                \
> -      PPTT_UNIFIED_CACHE_ATTR,              /* Attributes */                   \
> -      64                                    /* Line size */                    \
> -    ),                                                                         \
> -                                                                               \
>      {                                                                          \
>        PPTT_CLUSTER_INIT (PackageId, 0),                                        \
>        PPTT_CLUSTER_INIT (PackageId, 1),                                        \
> @@ -156,7 +141,7 @@
>   */
>  typedef struct {
>    EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE_HEADER  Header;
> -  RD_PPTT_SLC_PACKAGE                                      Package[CHIP_COUNT];
> +  RD_PPTT_PACKAGE                                          Package[CHIP_COUNT];
>  } EFI_ACPI_6_3_PROCESSOR_PROPERTIES_TOPOLOGY_TABLE;
>  #pragma pack ()
>
> --
> 2.17.1
>

  parent reply	other threads:[~2022-04-20  7:35 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-18  8:14 [edk2-platforms][PATCH V1 1/1] Platform/Sgi: Remove SLC entry from PPTT table Pranav Madhu
2022-04-18 14:18 ` [edk2-devel] " Thomas Abraham
2022-04-20  7:35 ` Ard Biesheuvel [this message]
2022-04-20  7:45   ` Pranav Madhu
2022-05-03  9:11     ` [edk2-devel] " Ard Biesheuvel

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='CAMj1kXHVU6QG5tvVJhXYXfyiYSeNw=vHmT0o8pzuS4uyAJoKbw@mail.gmail.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