All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ard Biesheuvel <ardb@kernel.org>
To: Palmer Dabbelt <palmer@dabbelt.com>
Cc: "Atish Patra" <atishp@atishpatra.org>,
	linux-efi <linux-efi@vger.kernel.org>,
	"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
	"Maxim Uvarov" <maxim.uvarov@linaro.org>,
	"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
	"Atish Patra" <Atish.Patra@wdc.com>,
	"Jens Wiklander" <jens.wiklander@linaro.org>,
	"François Ozog" <francois.ozog@linaro.org>,
	"Etienne CARRIERE" <etienne.carriere@st.com>,
	"Takahiro Akashi" <takahiro.akashi@linaro.org>,
	"Patrice CHOTARD" <patrice.chotard@st.com>,
	"Sumit Garg" <sumit.garg@linaro.org>,
	"Grant Likely" <Grant.Likely@arm.com>,
	"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
	"Christophe Priouzeau" <christophe.priouzeau@linaro.org>,
	"Rouven Czerwinski" <r.czerwinski@pengutronix.de>,
	"Patrick Delaunay" <patrick.delaunay@st.com>
Subject: Re: [PATCH RFC/RFT 0/3] efi/libstub: arm32: Remove dependency on dram_base
Date: Fri, 11 Sep 2020 10:56:43 +0300	[thread overview]
Message-ID: <CAMj1kXH5pA-9uWCRzvN2OKzxTr0mG8knZZnpuOPn+b5BBAn4dw@mail.gmail.com> (raw)
In-Reply-To: <mhng-f3ca14fc-58f7-423e-8abe-a85de1a2d55b@palmerdabbelt-glaptop1>

On Fri, 11 Sep 2020 at 05:16, Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Thu, 10 Sep 2020 07:08:07 PDT (-0700), ardb@kernel.org wrote:
> > On Thu, 10 Sep 2020 at 13:04, Ard Biesheuvel <ardb@kernel.org> wrote:
> >>
> >> On Thu, 10 Sep 2020 at 04:34, Atish Patra <atishp@atishpatra.org> wrote:
> >> >
> >> > On Wed, Sep 9, 2020 at 2:44 PM Atish Patra <atishp@atishpatra.org> wrote:
> >> > >
> >> > > On Wed, Sep 9, 2020 at 1:52 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> >> > > >
> >> > > > On Wed, 09 Sep 2020 08:16:20 PDT (-0700), ardb@kernel.org wrote:
> >> > > > > Maxim reports boot failures on platforms that describe reserved memory
> >> > > > > regions in DT that are disjoint from system DRAM, and which are converted
> >> > > > > to EfiReservedMemory regions by the EFI subsystem in u-boot.
> >> > > > >
> >> > > > > As it turns out, the whole notion of discovering the base of DRAM is
> >> > > > > problematic, and it would be better to simply rely on the EFI memory
> >> > > > > allocation routines instead, and derive the FDT and initrd allocation
> >> > > > > limits from the actual placement of the kernel (which is what defines
> >> > > > > the start of the linear region anyway)
> >> > > > >
> >> > > > > Finally, we should be able to get rid of get_dram_base() entirely.
> >> > > > > However, as RISC-V only just started using it, we will need to address
> >> > > > > that at a later time.
> >> > > >
> >> > > > Looks like we're using dram_base to derive two argumets to
> >> > > > efi_relocate_kernel(): the preferred load address and the minimum load address.
> >> > > > I don't see any reason why we can't use the same PAGE_OFFSET-like logic that
> >> > > > x86 uses for the minimum load address, but I don't think we have any mechanism
> >> > > > like "struct boot_params" so we'd need to come up with something.
> >> > > >
> >> > >
> >> > > As discussed in the other thread
> >> > > (https://www.spinics.net/lists/linux-efi/msg20262.html),
> >> > > we don't need to do anything special. efi_relocate_kernel can just
> >> > > take preferred address as 0
> >> > > so that efi_bs_alloc will fail and efi_low_alloc_above will be used to
> >> > > allocate 2MB/4MB aligned address as per requirement.
> >> > >
> >> > > I don't think the other changes in this series will cause any issue
> >> > > for RISC-V. I will test it and update anyways.
> >> > >
> >> > > > > Cc: Maxim Uvarov <maxim.uvarov@linaro.org>
> >> > > > > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> >> > > > > Cc: Atish Patra <atish.patra@wdc.com>
> >> > > > > Cc: Palmer Dabbelt <palmer@dabbelt.com>
> >> > > > > Cc: Jens Wiklander <jens.wiklander@linaro.org>
> >> > > > > Cc: Francois Ozog <francois.ozog@linaro.org>
> >> > > > > Cc: Etienne CARRIERE <etienne.carriere@st.com>
> >> > > > > Cc: Takahiro Akashi <takahiro.akashi@linaro.org>
> >> > > > > Cc: Patrice CHOTARD <patrice.chotard@st.com>
> >> > > > > Cc: Sumit Garg <sumit.garg@linaro.org>
> >> > > > > Cc: Grant Likely <Grant.Likely@arm.com>
> >> > > > > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> >> > > > > Cc: Christophe Priouzeau <christophe.priouzeau@linaro.org>
> >> > > > > Cc: Rouven Czerwinski <r.czerwinski@pengutronix.de>
> >> > > > > Cc: Patrick DELAUNAY <patrick.delaunay@st.com>
> >> > > > >
> >> > > > > Ard Biesheuvel (3):
> >> > > > >   efi/libstub: Export efi_low_alloc_above() to other units
> >> > > > >   efi/libstub: Use low allocation for the uncompressed kernel
> >> > > > >   efi/libstub: base FDT and initrd placement on image address not DRAM
> >> > > > >     base
> >> > > > >
> >> > > > >  arch/arm/include/asm/efi.h                |   6 +-
> >> > > > >  arch/arm64/include/asm/efi.h              |   2 +-
> >> > > > >  drivers/firmware/efi/libstub/arm32-stub.c | 177 ++++----------------
> >> > > > >  drivers/firmware/efi/libstub/efi-stub.c   |   2 +-
> >> > > > >  drivers/firmware/efi/libstub/efistub.h    |   3 +
> >> > > > >  drivers/firmware/efi/libstub/relocate.c   |   4 +-
> >> > > > >  6 files changed, 47 insertions(+), 147 deletions(-)
> >> > >
> >> >
> >> > I verified the above patches along with the following RISC-V specific changes.
> >> >
> >> > diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
> >> > index 93c305a638f4..dd6ceea9d548 100644
> >> > --- a/arch/riscv/include/asm/efi.h
> >> > +++ b/arch/riscv/include/asm/efi.h
> >> > @@ -37,7 +37,7 @@ static inline unsigned long
> >> > efi_get_max_fdt_addr(unsigned long dram_base)
> >> >  static inline unsigned long efi_get_max_initrd_addr(unsigned long dram_base,
> >> >                                                     unsigned long image_addr)
> >> >  {
> >> > -       return dram_base + SZ_256M;
> >> > +       return image_addr + SZ_256M;
> >> >  }
> >> >
> >>
> >> Ah yes, we need this change as well - this is a bit unfortunate since
> >> that creates a conflict with the RISC-V tree.
> >>
> >> > --- a/drivers/firmware/efi/libstub/riscv-stub.c
> >> > +++ b/drivers/firmware/efi/libstub/riscv-stub.c
> >> > @@ -100,7 +100,7 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
> >> >          */
> >> >         preferred_addr = round_up(dram_base, MIN_KIMG_ALIGN) + MIN_KIMG_ALIGN;
> >> >         status = efi_relocate_kernel(image_addr, kernel_size, *image_size,
> >> > -                                    preferred_addr, MIN_KIMG_ALIGN, dram_base);
> >> > +                                    0, MIN_KIMG_ALIGN, 0);
> >> >
> >> > FWIW: Tested-by: Atish Patra <atish.patra@wdc.com>
> >>
> >> Thanks for confirming.
> >
> > OK,
> >
> > So, just to annoy Palmer and you more than I already have up to this
> > point: any chance we could do a final respin of the RISC-V code on top
> > of these changes? They are important for ARM, and I would prefer these
> > to be merged in a way that makes it easy to backport them to -stable
> > if needed.
> >
> > So what I would suggest is:
> > - I will create a new 'shared-efi' tag/stable branch containing the
> > existing two patches, as well as these changes (in a slightly updated
> > form)
> > - Palmer creates a new topic branch in the riscv repo based on this
> > shared tag, and applies the [updated] RISC-V patches on top
> > - Palmer drops the current version of the riscv patches from
> > riscv/for-next, and merges the topic branch into it instead.
> >
> > Again, sorry to be a pain, but I think this is the cleanest way to get
> > these changes queued up for v5.10 without painting ourselves into a
> > corner too much when it comes to future follow-up changes.
>
> That's fine for me.

Excellent.

I have created a signed tag efi-riscv-shared-for-v5.10 in the EFI repo
[0], which is based on v5.9-rc1. Please merge that at the start of
your for-next/efi topic branch, and apply the reworked EFI for RISC-V
series on top.

I have created a preliminary version of that branch as 'riscv-tmp' on
[1], incorporating some changes that are needed for the rebase. Note
that I applied some other tweaks as well - one is in a separate patch
on top, the other is that I omitted the Makefile rule for .stub.o
objects under arch/riscv/Makefile, as it is not actually used.

Atish - please pick whatever seems useful to you from that branch when
you do the respin.

Thanks,
Ard.



[0] git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
[1] git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git

WARNING: multiple messages have this Message-ID (diff)
From: Ard Biesheuvel <ardb@kernel.org>
To: Palmer Dabbelt <palmer@dabbelt.com>
Cc: "Etienne CARRIERE" <etienne.carriere@st.com>,
	"François Ozog" <francois.ozog@linaro.org>,
	"Maxim Uvarov" <maxim.uvarov@linaro.org>,
	"Grant Likely" <Grant.Likely@arm.com>,
	"Takahiro Akashi" <takahiro.akashi@linaro.org>,
	"Rouven Czerwinski" <r.czerwinski@pengutronix.de>,
	"Heinrich Schuchardt" <xypron.glpk@gmx.de>,
	"Ilias Apalodimas" <ilias.apalodimas@linaro.org>,
	"Patrice CHOTARD" <patrice.chotard@st.com>,
	"Patrick Delaunay" <patrick.delaunay@st.com>,
	"Atish Patra" <Atish.Patra@wdc.com>,
	linux-efi <linux-efi@vger.kernel.org>,
	"Atish Patra" <atishp@atishpatra.org>,
	"Christophe Priouzeau" <christophe.priouzeau@linaro.org>,
	"Jens Wiklander" <jens.wiklander@linaro.org>,
	"Linux ARM" <linux-arm-kernel@lists.infradead.org>,
	"Sumit Garg" <sumit.garg@linaro.org>
Subject: Re: [PATCH RFC/RFT 0/3] efi/libstub: arm32: Remove dependency on dram_base
Date: Fri, 11 Sep 2020 10:56:43 +0300	[thread overview]
Message-ID: <CAMj1kXH5pA-9uWCRzvN2OKzxTr0mG8knZZnpuOPn+b5BBAn4dw@mail.gmail.com> (raw)
In-Reply-To: <mhng-f3ca14fc-58f7-423e-8abe-a85de1a2d55b@palmerdabbelt-glaptop1>

On Fri, 11 Sep 2020 at 05:16, Palmer Dabbelt <palmer@dabbelt.com> wrote:
>
> On Thu, 10 Sep 2020 07:08:07 PDT (-0700), ardb@kernel.org wrote:
> > On Thu, 10 Sep 2020 at 13:04, Ard Biesheuvel <ardb@kernel.org> wrote:
> >>
> >> On Thu, 10 Sep 2020 at 04:34, Atish Patra <atishp@atishpatra.org> wrote:
> >> >
> >> > On Wed, Sep 9, 2020 at 2:44 PM Atish Patra <atishp@atishpatra.org> wrote:
> >> > >
> >> > > On Wed, Sep 9, 2020 at 1:52 PM Palmer Dabbelt <palmer@dabbelt.com> wrote:
> >> > > >
> >> > > > On Wed, 09 Sep 2020 08:16:20 PDT (-0700), ardb@kernel.org wrote:
> >> > > > > Maxim reports boot failures on platforms that describe reserved memory
> >> > > > > regions in DT that are disjoint from system DRAM, and which are converted
> >> > > > > to EfiReservedMemory regions by the EFI subsystem in u-boot.
> >> > > > >
> >> > > > > As it turns out, the whole notion of discovering the base of DRAM is
> >> > > > > problematic, and it would be better to simply rely on the EFI memory
> >> > > > > allocation routines instead, and derive the FDT and initrd allocation
> >> > > > > limits from the actual placement of the kernel (which is what defines
> >> > > > > the start of the linear region anyway)
> >> > > > >
> >> > > > > Finally, we should be able to get rid of get_dram_base() entirely.
> >> > > > > However, as RISC-V only just started using it, we will need to address
> >> > > > > that at a later time.
> >> > > >
> >> > > > Looks like we're using dram_base to derive two argumets to
> >> > > > efi_relocate_kernel(): the preferred load address and the minimum load address.
> >> > > > I don't see any reason why we can't use the same PAGE_OFFSET-like logic that
> >> > > > x86 uses for the minimum load address, but I don't think we have any mechanism
> >> > > > like "struct boot_params" so we'd need to come up with something.
> >> > > >
> >> > >
> >> > > As discussed in the other thread
> >> > > (https://www.spinics.net/lists/linux-efi/msg20262.html),
> >> > > we don't need to do anything special. efi_relocate_kernel can just
> >> > > take preferred address as 0
> >> > > so that efi_bs_alloc will fail and efi_low_alloc_above will be used to
> >> > > allocate 2MB/4MB aligned address as per requirement.
> >> > >
> >> > > I don't think the other changes in this series will cause any issue
> >> > > for RISC-V. I will test it and update anyways.
> >> > >
> >> > > > > Cc: Maxim Uvarov <maxim.uvarov@linaro.org>
> >> > > > > Cc: Heinrich Schuchardt <xypron.glpk@gmx.de>
> >> > > > > Cc: Atish Patra <atish.patra@wdc.com>
> >> > > > > Cc: Palmer Dabbelt <palmer@dabbelt.com>
> >> > > > > Cc: Jens Wiklander <jens.wiklander@linaro.org>
> >> > > > > Cc: Francois Ozog <francois.ozog@linaro.org>
> >> > > > > Cc: Etienne CARRIERE <etienne.carriere@st.com>
> >> > > > > Cc: Takahiro Akashi <takahiro.akashi@linaro.org>
> >> > > > > Cc: Patrice CHOTARD <patrice.chotard@st.com>
> >> > > > > Cc: Sumit Garg <sumit.garg@linaro.org>
> >> > > > > Cc: Grant Likely <Grant.Likely@arm.com>
> >> > > > > Cc: Ilias Apalodimas <ilias.apalodimas@linaro.org>
> >> > > > > Cc: Christophe Priouzeau <christophe.priouzeau@linaro.org>
> >> > > > > Cc: Rouven Czerwinski <r.czerwinski@pengutronix.de>
> >> > > > > Cc: Patrick DELAUNAY <patrick.delaunay@st.com>
> >> > > > >
> >> > > > > Ard Biesheuvel (3):
> >> > > > >   efi/libstub: Export efi_low_alloc_above() to other units
> >> > > > >   efi/libstub: Use low allocation for the uncompressed kernel
> >> > > > >   efi/libstub: base FDT and initrd placement on image address not DRAM
> >> > > > >     base
> >> > > > >
> >> > > > >  arch/arm/include/asm/efi.h                |   6 +-
> >> > > > >  arch/arm64/include/asm/efi.h              |   2 +-
> >> > > > >  drivers/firmware/efi/libstub/arm32-stub.c | 177 ++++----------------
> >> > > > >  drivers/firmware/efi/libstub/efi-stub.c   |   2 +-
> >> > > > >  drivers/firmware/efi/libstub/efistub.h    |   3 +
> >> > > > >  drivers/firmware/efi/libstub/relocate.c   |   4 +-
> >> > > > >  6 files changed, 47 insertions(+), 147 deletions(-)
> >> > >
> >> >
> >> > I verified the above patches along with the following RISC-V specific changes.
> >> >
> >> > diff --git a/arch/riscv/include/asm/efi.h b/arch/riscv/include/asm/efi.h
> >> > index 93c305a638f4..dd6ceea9d548 100644
> >> > --- a/arch/riscv/include/asm/efi.h
> >> > +++ b/arch/riscv/include/asm/efi.h
> >> > @@ -37,7 +37,7 @@ static inline unsigned long
> >> > efi_get_max_fdt_addr(unsigned long dram_base)
> >> >  static inline unsigned long efi_get_max_initrd_addr(unsigned long dram_base,
> >> >                                                     unsigned long image_addr)
> >> >  {
> >> > -       return dram_base + SZ_256M;
> >> > +       return image_addr + SZ_256M;
> >> >  }
> >> >
> >>
> >> Ah yes, we need this change as well - this is a bit unfortunate since
> >> that creates a conflict with the RISC-V tree.
> >>
> >> > --- a/drivers/firmware/efi/libstub/riscv-stub.c
> >> > +++ b/drivers/firmware/efi/libstub/riscv-stub.c
> >> > @@ -100,7 +100,7 @@ efi_status_t handle_kernel_image(unsigned long *image_addr,
> >> >          */
> >> >         preferred_addr = round_up(dram_base, MIN_KIMG_ALIGN) + MIN_KIMG_ALIGN;
> >> >         status = efi_relocate_kernel(image_addr, kernel_size, *image_size,
> >> > -                                    preferred_addr, MIN_KIMG_ALIGN, dram_base);
> >> > +                                    0, MIN_KIMG_ALIGN, 0);
> >> >
> >> > FWIW: Tested-by: Atish Patra <atish.patra@wdc.com>
> >>
> >> Thanks for confirming.
> >
> > OK,
> >
> > So, just to annoy Palmer and you more than I already have up to this
> > point: any chance we could do a final respin of the RISC-V code on top
> > of these changes? They are important for ARM, and I would prefer these
> > to be merged in a way that makes it easy to backport them to -stable
> > if needed.
> >
> > So what I would suggest is:
> > - I will create a new 'shared-efi' tag/stable branch containing the
> > existing two patches, as well as these changes (in a slightly updated
> > form)
> > - Palmer creates a new topic branch in the riscv repo based on this
> > shared tag, and applies the [updated] RISC-V patches on top
> > - Palmer drops the current version of the riscv patches from
> > riscv/for-next, and merges the topic branch into it instead.
> >
> > Again, sorry to be a pain, but I think this is the cleanest way to get
> > these changes queued up for v5.10 without painting ourselves into a
> > corner too much when it comes to future follow-up changes.
>
> That's fine for me.

Excellent.

I have created a signed tag efi-riscv-shared-for-v5.10 in the EFI repo
[0], which is based on v5.9-rc1. Please merge that at the start of
your for-next/efi topic branch, and apply the reworked EFI for RISC-V
series on top.

I have created a preliminary version of that branch as 'riscv-tmp' on
[1], incorporating some changes that are needed for the rebase. Note
that I applied some other tweaks as well - one is in a separate patch
on top, the other is that I omitted the Makefile rule for .stub.o
objects under arch/riscv/Makefile, as it is not actually used.

Atish - please pick whatever seems useful to you from that branch when
you do the respin.

Thanks,
Ard.



[0] git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
[1] git://git.kernel.org/pub/scm/linux/kernel/git/ardb/linux.git

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2020-09-11  7:56 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-09-09 15:16 [PATCH RFC/RFT 0/3] efi/libstub: arm32: Remove dependency on dram_base Ard Biesheuvel
2020-09-09 15:16 ` Ard Biesheuvel
2020-09-09 15:16 ` [PATCH RFC/RFT 1/3] efi/libstub: Export efi_low_alloc_above() to other units Ard Biesheuvel
2020-09-09 15:16   ` Ard Biesheuvel
2020-09-09 15:16 ` [PATCH RFC/RFT 2/3] efi/libstub: Use low allocation for the uncompressed kernel Ard Biesheuvel
2020-09-09 15:16   ` Ard Biesheuvel
2020-09-09 15:16 ` [PATCH RFC/RFT 3/3] efi/libstub: base FDT and initrd placement on image address not DRAM base Ard Biesheuvel
2020-09-09 15:16   ` Ard Biesheuvel
2020-09-09 15:25 ` [PATCH RFC/RFT 0/3] efi/libstub: arm32: Remove dependency on dram_base Grant Likely
2020-09-09 15:25   ` Grant Likely
2020-09-09 15:30   ` Ard Biesheuvel
2020-09-09 15:30     ` Ard Biesheuvel
2020-09-09 20:52 ` Palmer Dabbelt
2020-09-09 20:52   ` Palmer Dabbelt
2020-09-09 21:44   ` Atish Patra
2020-09-09 21:44     ` Atish Patra
2020-09-10  1:34     ` Atish Patra
2020-09-10  1:34       ` Atish Patra
2020-09-10 10:04       ` Ard Biesheuvel
2020-09-10 10:04         ` Ard Biesheuvel
2020-09-10 14:08         ` Ard Biesheuvel
2020-09-10 14:08           ` Ard Biesheuvel
2020-09-10 23:32           ` Atish Patra
2020-09-10 23:32             ` Atish Patra
2020-09-11  2:16           ` Palmer Dabbelt
2020-09-11  2:16             ` Palmer Dabbelt
2020-09-11  7:56             ` Ard Biesheuvel [this message]
2020-09-11  7:56               ` Ard Biesheuvel
2020-09-11 10:27               ` Maxim Uvarov
2020-09-11 10:27                 ` Maxim Uvarov
2020-09-11 18:45                 ` Ard Biesheuvel
2020-09-11 18:45                   ` Ard Biesheuvel
2020-09-16 15:43                   ` Maxim Uvarov
2020-09-16 15:43                     ` Maxim Uvarov
2020-09-16 15:58                     ` Ard Biesheuvel
2020-09-16 15:58                       ` Ard Biesheuvel
2020-09-16 16:02               ` Ard Biesheuvel
2020-09-16 16:02                 ` Ard Biesheuvel
2020-09-16 22:01                 ` Atish Patra
2020-09-16 22:01                   ` Atish Patra

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-all 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=CAMj1kXH5pA-9uWCRzvN2OKzxTr0mG8knZZnpuOPn+b5BBAn4dw@mail.gmail.com \
    --to=ardb@kernel.org \
    --cc=Atish.Patra@wdc.com \
    --cc=Grant.Likely@arm.com \
    --cc=atishp@atishpatra.org \
    --cc=christophe.priouzeau@linaro.org \
    --cc=etienne.carriere@st.com \
    --cc=francois.ozog@linaro.org \
    --cc=ilias.apalodimas@linaro.org \
    --cc=jens.wiklander@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-efi@vger.kernel.org \
    --cc=maxim.uvarov@linaro.org \
    --cc=palmer@dabbelt.com \
    --cc=patrice.chotard@st.com \
    --cc=patrick.delaunay@st.com \
    --cc=r.czerwinski@pengutronix.de \
    --cc=sumit.garg@linaro.org \
    --cc=takahiro.akashi@linaro.org \
    --cc=xypron.glpk@gmx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.