All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tom Rini <trini@kernel.crashing.org>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: 2.6.0-mm1
Date: Tue, 23 Dec 2003 10:31:51 -0700	[thread overview]
Message-ID: <20031223173151.GG26574@stop.crashing.org> (raw)
In-Reply-To: <20031223172907.GF26574@stop.crashing.org>

On Tue, Dec 23, 2003 at 10:29:07AM -0700, Tom Rini wrote:

> On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote:
> 
> [snip]
> > moto-ppc32-booting-fix.patch
> >   Fix booting on a number of Motorola PPC32 machines
> 
> The following, based on comments from Keith Owens is better, please
> replace, thanks:
[snip]
The following patch depends on the above, and fixes the 'znetboot' and
'znetbootrd' targets so that they work again (If you would prefer things
in a different format, please let me know).  Thanks:
- Update the comments to reflect how things work with the correct
  usages now.
- Fix the znetboot / znetbootrd targets.  We now always set end-y,
  and use this to figure out what image will be tftpboot'ed.
===== arch/ppc/boot/simple/Makefile 1.24 vs edited =====
--- 1.24/arch/ppc/boot/simple/Makefile	Tue Dec 23 10:00:06 2003
+++ edited/arch/ppc/boot/simple/Makefile	Tue Dec 23 10:01:04 2003
@@ -4,30 +4,38 @@
 # Author: Tom Rini <trini@mvista.com>
 #
 # Notes:
-# (1) For machine targets which produce more than one image, define
-# ZNETBOOT and ZNETBOOTRD to the image which should be available for
-# 'znetboot' and 'znetboot.initrd`
-# (2) Also, for machine targets which just need to remove the ELF header,
-# define END to be the machine name you want in the image.
-# (3) For machine targets which use the mktree program, define END to be
-# the machine name you want in the image, and you can optionally set
-# ENTRYPOINT which the image should be loaded at.  The optimal setting
-# for ENTRYPOINT is the link address.
+# (1) For machines that do not want to use the ELF image directly (including
+# stripping just the ELF header off), they must set the variables
+# zimage-$(CONFIG_MACHINE) and zimagerd-$(CONFIG_MACHINE) to the target
+# that produces the desired image and they must set end-$(CONFIG_MACHINE)
+# to what will be suffixed to the image filename.
+# (2) Regardless of (1), to have the resulting image be something other
+# than 'zImage.elf', set end-$(CONFIG_MACHINE) to be the suffix used for
+# the zImage, znetboot, and znetbootrd targets.
+# (3) For machine targets which use the mktree program, you can optionally
+# set entrypoint-$(CONFIG_MACHINE) to the location which the image should be
+# loaded at.  The optimal setting for entrypoint-$(CONFIG_MACHINE) is the link
+# address.
 # (4) It is advisable to pass in the memory size using BI_MEMSIZE and
 # get_mem_size(), which is memory controller dependent.  Add in the correct
-# XXX_memory.o file for this to work, as well as editing the $(MISC) file.
-
+# XXX_memory.o file for this to work, as well as editing the
+# misc-$(CONFIG_MACHINE) variable.
 
 boot				:= arch/ppc/boot
 common				:= $(boot)/common
 utils				:= $(boot)/utils
 bootlib				:= $(boot)/lib
 images				:= $(boot)/images
+tftpboot			:= /tftpboot
 
 # Normally, we use the 'misc.c' file for decompress_kernel and
 # whatnot.  Sometimes we need to override this however.
 misc-y	:= misc.o
 
+# Normally, we have our images end in .elf, but something we want to
+# change this.
+end-y := elf
+
 # Additionally, we normally don't need to mess with the L2 / L3 caches
 # if present on 'classic' PPC.
 cacheflag-y	:= -DCLEAR_CACHES=""
@@ -41,35 +49,31 @@
       zimage-$(CONFIG_IBM_OPENBIOS)	:= zImage-TREE
 zimageinitrd-$(CONFIG_IBM_OPENBIOS)	:= zImage.initrd-TREE
          end-$(CONFIG_IBM_OPENBIOS)	:= treeboot
-   tftpimage-$(CONFIG_IBM_OPENBIOS)	:= /tftpboot/zImage.$(end-y)
         misc-$(CONFIG_IBM_OPENBIOS)	:= misc-embedded.o
 
-   tftpimage-$(CONFIG_EMBEDDEDBOOT)	:=  /tftpboot/zImage.embedded
+         end-$(CONFIG_EMBEDDEDBOOT)	:= embedded
         misc-$(CONFIG_EMBEDDEDBOOT)	:= misc-embedded.o
 
       zimage-$(CONFIG_EBONY)		:= zImage-TREE
 zimageinitrd-$(CONFIG_EBONY)		:= zImage.initrd-TREE
          end-$(CONFIG_EBONY)		:= ebony
   entrypoint-$(CONFIG_EBONY)		:= 0x01000000
-   tftpimage-$(CONFIG_EBONY)		:= /tftpboot/zImage.$(end-y)
 
       zimage-$(CONFIG_OCOTEA)		:= zImage-TREE
 zimageinitrd-$(CONFIG_OCOTEA)		:= zImage.initrd-TREE
          end-$(CONFIG_OCOTEA)		:= ocotea
   entrypoint-$(CONFIG_OCOTEA)		:= 0x01000000
-   tftpimage-$(CONFIG_OCOTEA)		:= /tftpboot/zImage.$(end-y)
 
      extra.o-$(CONFIG_EV64260)		:= direct.o misc-ev64260.o
-   tftpimage-$(CONFIG_EV64260)		:= /tftpboot/zImage.ev64260
+         end-$(CONFIG_EV64260)		:= ev64260
    cacheflag-$(CONFIG_EV64260)		:= -include $(clear_L2_L3)
 
       zimage-$(CONFIG_GEMINI)		:= zImage-STRIPELF
 zimageinitrd-$(CONFIG_GEMINI)		:= zImage.initrd-STRIPELF
          end-$(CONFIG_GEMINI)		:= gemini
-   tftpimage-$(CONFIG_GEMINI)		:= /tftpboot/zImage.$(end-y)
 
      extra.o-$(CONFIG_K2)		:= legacy.o
-   tftpimage-$(CONFIG_K2)		:= /tftpboot/zImage.k2
+         end-$(CONFIG_K2)		:= k2
    cacheflag-$(CONFIG_K2)		:= -include $(clear_L2_L3)
 
 # kconfig 'feature', only one of these will ever be 'y' at a time.
@@ -81,9 +85,7 @@
 
       zimage-$(motorola)		:= zImage-PPLUS
 zimageinitrd-$(motorola)		:= zImage.initrd-PPLUS
-   tftpimage-$(motorola)		:= /tftpboot/zImage.pplus
-    znetboot-$(motorola)		:= zImage.pplus
-  znetbootrd-$(motorola)		:= zImage.initrd.pplus
+         end-$(motorola)		:= pplus
 
 # Overrides previous assingment
      extra.o-$(CONFIG_PPLUS)		:= legacy.o
@@ -92,10 +94,9 @@
 zimageinitrd-$(pcore)			:= zImage.initrd-STRIPELF
      extra.o-$(pcore)			:= chrpmap.o
          end-$(pcore)			:= pcore
-   tftpimage-$(pcore)			:= /tftpboot/zImage.$(end-y)
    cacheflag-$(pcore)			:= -include $(clear_L2_L3)
 
-   tftpimage-$(CONFIG_SANDPOINT)	:= /tftpboot/zImage.sandpoint
+         end-$(CONFIG_SANDPOINT)	:= sandpoint
    cacheflag-$(CONFIG_SANDPOINT)	:= -include $(clear_L2_L3)
 
       zimage-$(CONFIG_SPRUCE)		:= zImage-TREE
@@ -103,11 +104,9 @@
          end-$(CONFIG_SPRUCE)		:= spruce
   entrypoint-$(CONFIG_SPRUCE)		:= 0x00800000
         misc-$(CONFIG_SPRUCE)		:= misc-spruce.o
-   tftpimage-$(CONFIG_SPRUCE)		:= /tftpboot/zImage.$(end-y)
-
 
-# tftp image is prefixed with .smp if compiled for SMP
-tftpimage-$(CONFIG_SMP)	+= .smp
+# SMP images should have a '.smp' suffix.
+         end-$(CONFIG_SMP)		+= .smp
 
 # This is a treeboot that needs init functions until the
 # boot rom is sorted out (i.e. this is short lived)
@@ -181,18 +180,10 @@
 	rm -f $(obj)/zvmlinux.initrd
 
 znetboot: zImage
-ifneq ($(ZNETBOOT),)
-	cp $(images)/$(ZNETBOOT) $(tftpimage-y)
-else
-	cp $(images)/zImage.* $(tftpimage-y)
-endif
+	cp $(images)/zImage.$(end-y) $(tftpboot)/zImage.$(end-y)
 
 znetboot.initrd: zImage.initrd
-ifneq ($(znetbootrd-y),)
-	cp $(images)/$(znetbootrd-y) $(tftpimage-y)
-else
-	cp $(images)/zImage.* $(tftpimage-y)
-endif
+	cp $(images)/zImage.initrd.$(end-y) $(tftpboot)/zImage.initrd.$(end-y)
 
 $(images)/zImage-STRIPELF: $(obj)/zvmlinux
 	dd if=$(obj)/zvmlinux of=$(images)/zImage.$(end-y) skip=64 bs=1k

-- 
Tom Rini
http://gate.crashing.org/~trini/

WARNING: multiple messages have this Message-ID (diff)
From: Tom Rini <trini@kernel.crashing.org>
To: Andrew Morton <akpm@osdl.org>
Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: 2.6.0-mm1
Date: Tue, 23 Dec 2003 10:31:51 -0700	[thread overview]
Message-ID: <20031223173151.GG26574@stop.crashing.org> (raw)
In-Reply-To: <20031223172907.GF26574@stop.crashing.org>

On Tue, Dec 23, 2003 at 10:29:07AM -0700, Tom Rini wrote:

> On Mon, Dec 22, 2003 at 09:11:31PM -0800, Andrew Morton wrote:
> 
> [snip]
> > moto-ppc32-booting-fix.patch
> >   Fix booting on a number of Motorola PPC32 machines
> 
> The following, based on comments from Keith Owens is better, please
> replace, thanks:
[snip]
The following patch depends on the above, and fixes the 'znetboot' and
'znetbootrd' targets so that they work again (If you would prefer things
in a different format, please let me know).  Thanks:
- Update the comments to reflect how things work with the correct
  usages now.
- Fix the znetboot / znetbootrd targets.  We now always set end-y,
  and use this to figure out what image will be tftpboot'ed.
===== arch/ppc/boot/simple/Makefile 1.24 vs edited =====
--- 1.24/arch/ppc/boot/simple/Makefile	Tue Dec 23 10:00:06 2003
+++ edited/arch/ppc/boot/simple/Makefile	Tue Dec 23 10:01:04 2003
@@ -4,30 +4,38 @@
 # Author: Tom Rini <trini@mvista.com>
 #
 # Notes:
-# (1) For machine targets which produce more than one image, define
-# ZNETBOOT and ZNETBOOTRD to the image which should be available for
-# 'znetboot' and 'znetboot.initrd`
-# (2) Also, for machine targets which just need to remove the ELF header,
-# define END to be the machine name you want in the image.
-# (3) For machine targets which use the mktree program, define END to be
-# the machine name you want in the image, and you can optionally set
-# ENTRYPOINT which the image should be loaded at.  The optimal setting
-# for ENTRYPOINT is the link address.
+# (1) For machines that do not want to use the ELF image directly (including
+# stripping just the ELF header off), they must set the variables
+# zimage-$(CONFIG_MACHINE) and zimagerd-$(CONFIG_MACHINE) to the target
+# that produces the desired image and they must set end-$(CONFIG_MACHINE)
+# to what will be suffixed to the image filename.
+# (2) Regardless of (1), to have the resulting image be something other
+# than 'zImage.elf', set end-$(CONFIG_MACHINE) to be the suffix used for
+# the zImage, znetboot, and znetbootrd targets.
+# (3) For machine targets which use the mktree program, you can optionally
+# set entrypoint-$(CONFIG_MACHINE) to the location which the image should be
+# loaded at.  The optimal setting for entrypoint-$(CONFIG_MACHINE) is the link
+# address.
 # (4) It is advisable to pass in the memory size using BI_MEMSIZE and
 # get_mem_size(), which is memory controller dependent.  Add in the correct
-# XXX_memory.o file for this to work, as well as editing the $(MISC) file.
-
+# XXX_memory.o file for this to work, as well as editing the
+# misc-$(CONFIG_MACHINE) variable.
 
 boot				:= arch/ppc/boot
 common				:= $(boot)/common
 utils				:= $(boot)/utils
 bootlib				:= $(boot)/lib
 images				:= $(boot)/images
+tftpboot			:= /tftpboot
 
 # Normally, we use the 'misc.c' file for decompress_kernel and
 # whatnot.  Sometimes we need to override this however.
 misc-y	:= misc.o
 
+# Normally, we have our images end in .elf, but something we want to
+# change this.
+end-y := elf
+
 # Additionally, we normally don't need to mess with the L2 / L3 caches
 # if present on 'classic' PPC.
 cacheflag-y	:= -DCLEAR_CACHES=""
@@ -41,35 +49,31 @@
       zimage-$(CONFIG_IBM_OPENBIOS)	:= zImage-TREE
 zimageinitrd-$(CONFIG_IBM_OPENBIOS)	:= zImage.initrd-TREE
          end-$(CONFIG_IBM_OPENBIOS)	:= treeboot
-   tftpimage-$(CONFIG_IBM_OPENBIOS)	:= /tftpboot/zImage.$(end-y)
         misc-$(CONFIG_IBM_OPENBIOS)	:= misc-embedded.o
 
-   tftpimage-$(CONFIG_EMBEDDEDBOOT)	:=  /tftpboot/zImage.embedded
+         end-$(CONFIG_EMBEDDEDBOOT)	:= embedded
         misc-$(CONFIG_EMBEDDEDBOOT)	:= misc-embedded.o
 
       zimage-$(CONFIG_EBONY)		:= zImage-TREE
 zimageinitrd-$(CONFIG_EBONY)		:= zImage.initrd-TREE
          end-$(CONFIG_EBONY)		:= ebony
   entrypoint-$(CONFIG_EBONY)		:= 0x01000000
-   tftpimage-$(CONFIG_EBONY)		:= /tftpboot/zImage.$(end-y)
 
       zimage-$(CONFIG_OCOTEA)		:= zImage-TREE
 zimageinitrd-$(CONFIG_OCOTEA)		:= zImage.initrd-TREE
          end-$(CONFIG_OCOTEA)		:= ocotea
   entrypoint-$(CONFIG_OCOTEA)		:= 0x01000000
-   tftpimage-$(CONFIG_OCOTEA)		:= /tftpboot/zImage.$(end-y)
 
      extra.o-$(CONFIG_EV64260)		:= direct.o misc-ev64260.o
-   tftpimage-$(CONFIG_EV64260)		:= /tftpboot/zImage.ev64260
+         end-$(CONFIG_EV64260)		:= ev64260
    cacheflag-$(CONFIG_EV64260)		:= -include $(clear_L2_L3)
 
       zimage-$(CONFIG_GEMINI)		:= zImage-STRIPELF
 zimageinitrd-$(CONFIG_GEMINI)		:= zImage.initrd-STRIPELF
          end-$(CONFIG_GEMINI)		:= gemini
-   tftpimage-$(CONFIG_GEMINI)		:= /tftpboot/zImage.$(end-y)
 
      extra.o-$(CONFIG_K2)		:= legacy.o
-   tftpimage-$(CONFIG_K2)		:= /tftpboot/zImage.k2
+         end-$(CONFIG_K2)		:= k2
    cacheflag-$(CONFIG_K2)		:= -include $(clear_L2_L3)
 
 # kconfig 'feature', only one of these will ever be 'y' at a time.
@@ -81,9 +85,7 @@
 
       zimage-$(motorola)		:= zImage-PPLUS
 zimageinitrd-$(motorola)		:= zImage.initrd-PPLUS
-   tftpimage-$(motorola)		:= /tftpboot/zImage.pplus
-    znetboot-$(motorola)		:= zImage.pplus
-  znetbootrd-$(motorola)		:= zImage.initrd.pplus
+         end-$(motorola)		:= pplus
 
 # Overrides previous assingment
      extra.o-$(CONFIG_PPLUS)		:= legacy.o
@@ -92,10 +94,9 @@
 zimageinitrd-$(pcore)			:= zImage.initrd-STRIPELF
      extra.o-$(pcore)			:= chrpmap.o
          end-$(pcore)			:= pcore
-   tftpimage-$(pcore)			:= /tftpboot/zImage.$(end-y)
    cacheflag-$(pcore)			:= -include $(clear_L2_L3)
 
-   tftpimage-$(CONFIG_SANDPOINT)	:= /tftpboot/zImage.sandpoint
+         end-$(CONFIG_SANDPOINT)	:= sandpoint
    cacheflag-$(CONFIG_SANDPOINT)	:= -include $(clear_L2_L3)
 
       zimage-$(CONFIG_SPRUCE)		:= zImage-TREE
@@ -103,11 +104,9 @@
          end-$(CONFIG_SPRUCE)		:= spruce
   entrypoint-$(CONFIG_SPRUCE)		:= 0x00800000
         misc-$(CONFIG_SPRUCE)		:= misc-spruce.o
-   tftpimage-$(CONFIG_SPRUCE)		:= /tftpboot/zImage.$(end-y)
-
 
-# tftp image is prefixed with .smp if compiled for SMP
-tftpimage-$(CONFIG_SMP)	+= .smp
+# SMP images should have a '.smp' suffix.
+         end-$(CONFIG_SMP)		+= .smp
 
 # This is a treeboot that needs init functions until the
 # boot rom is sorted out (i.e. this is short lived)
@@ -181,18 +180,10 @@
 	rm -f $(obj)/zvmlinux.initrd
 
 znetboot: zImage
-ifneq ($(ZNETBOOT),)
-	cp $(images)/$(ZNETBOOT) $(tftpimage-y)
-else
-	cp $(images)/zImage.* $(tftpimage-y)
-endif
+	cp $(images)/zImage.$(end-y) $(tftpboot)/zImage.$(end-y)
 
 znetboot.initrd: zImage.initrd
-ifneq ($(znetbootrd-y),)
-	cp $(images)/$(znetbootrd-y) $(tftpimage-y)
-else
-	cp $(images)/zImage.* $(tftpimage-y)
-endif
+	cp $(images)/zImage.initrd.$(end-y) $(tftpboot)/zImage.initrd.$(end-y)
 
 $(images)/zImage-STRIPELF: $(obj)/zvmlinux
 	dd if=$(obj)/zvmlinux of=$(images)/zImage.$(end-y) skip=64 bs=1k

-- 
Tom Rini
http://gate.crashing.org/~trini/
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>

  reply	other threads:[~2003-12-23 17:32 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-12-23  5:11 2.6.0-mm1 Andrew Morton
2003-12-23  5:11 ` 2.6.0-mm1 Andrew Morton
2003-12-23  5:27 ` 2.6.0-mm1 Valdis.Kletnieks
2003-12-23  5:28 ` 2.6.0-mm1 Marcos D. Marado Torres
2003-12-23  5:28   ` 2.6.0-mm1 Marcos D. Marado Torres
2003-12-23  5:28 ` 2.6.0-mm1 Andrew Morton
2003-12-23  5:28   ` 2.6.0-mm1 Andrew Morton
2003-12-23  5:40   ` 2.6.0-mm1 Stan Bubrouski
2003-12-23  5:40     ` 2.6.0-mm1 Stan Bubrouski
2003-12-23  7:57     ` 2.6.0-mm1 Andrew Walrond
2003-12-23  8:20       ` compiling modules after 2.4.* --> 2.6.0 upgrade Ben Srour
2003-12-23 16:25         ` Erik Mouw
2003-12-23 16:27         ` Jonathan Corbet
2003-12-23 16:39         ` Randy.Dunlap
2003-12-23  7:30 ` 2.6.0-mm1 Martin J. Bligh
2003-12-23  7:30   ` 2.6.0-mm1 Martin J. Bligh
2003-12-23 17:29 ` 2.6.0-mm1 Tom Rini
2003-12-23 17:29   ` 2.6.0-mm1 Tom Rini
2003-12-23 17:31   ` Tom Rini [this message]
2003-12-23 17:31     ` 2.6.0-mm1 Tom Rini
2003-12-23 21:08 ` 2.6.0-mm1 viro
2003-12-23 21:08   ` 2.6.0-mm1 viro
2003-12-24 13:09 ` 2.6.0-mm1 William Lee Irwin III
2003-12-24 13:09   ` 2.6.0-mm1 William Lee Irwin III
2003-12-24 14:26   ` 2.6.0-mm1 William Lee Irwin III
2003-12-24 15:39 ` 2.6.0-mm1 Gene Heskett
2003-12-24 15:39   ` 2.6.0-mm1 Gene Heskett
2003-12-28  3:43 ` [PATCH] 2.6.0-mm1 Ramón Rey Vicente
2003-12-28 10:58 ` 2.6.0-mm1 Christoph Hellwig
2003-12-28 10:58   ` 2.6.0-mm1 Christoph Hellwig
2003-12-28 19:49   ` 2.6.0-mm1 Andrew Morton
2003-12-28 19:49     ` 2.6.0-mm1 Andrew Morton
2003-12-28 19:52     ` 2.6.0-mm1 Christoph Hellwig
2003-12-28 19:52       ` 2.6.0-mm1 Christoph Hellwig
     [not found] <15N7L-7y2-3@gated-at.bofh.it>
2003-12-23 15:41 ` 2.6.0-mm1 Pascal Schmidt
2003-12-23 16:32   ` 2.6.0-mm1 Jens Axboe
2003-12-23 16:46     ` 2.6.0-mm1 Pascal Schmidt
2003-12-23 16:56       ` 2.6.0-mm1 Jens Axboe
  -- strict thread matches above, loose matches on Subject: below --
2003-12-23 16:34 2.6.0-mm1 Pascal Schmidt
2003-12-23 16:39 ` 2.6.0-mm1 Jens Axboe
2003-12-23 16:54   ` 2.6.0-mm1 Jens Axboe
2003-12-23 16:58     ` 2.6.0-mm1 Jens Axboe
2003-12-23 17:29       ` 2.6.0-mm1 Pascal Schmidt
2003-12-23 18:49         ` 2.6.0-mm1 Jens Axboe
     [not found] <20031223170633.GG1601@suse.de>
2003-12-23 17:15 ` 2.6.0-mm1 Pascal Schmidt
2003-12-24  9:59 2.6.0-mm1 GCS
2003-12-24 11:32 ` 2.6.0-mm1 Andrew Morton
2003-12-24 11:53   ` 2.6.0-mm1 GCS
2003-12-24 12:23     ` 2.6.0-mm1 GCS
2003-12-24 15:17       ` 2.6.0-mm1 Dmitry Torokhov
2003-12-24 19:12         ` 2.6.0-mm1 GCS
2003-12-24 12:47   ` 2.6.0-mm1 Thomas Molina
2003-12-25  9:11   ` 2.6.0-mm1 Dmitry Torokhov
2003-12-25 18:22     ` 2.6.0-mm1 GCS
2003-12-24 14:38 ` 2.6.0-mm1 GCS

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=20031223173151.GG26574@stop.crashing.org \
    --to=trini@kernel.crashing.org \
    --cc=akpm@osdl.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    /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.