From: gregory.clement@free-electrons.com (Gregory CLEMENT)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/4] ARM64: Initial Marvell IAP140 enablement
Date: Mon, 20 Feb 2017 14:17:46 +0100 [thread overview]
Message-ID: <87bmtxatmt.fsf@free-electrons.com> (raw)
In-Reply-To: <20170219032000.4674-1-afaerber@suse.de> ("Andreas Färber"'s message of "Sun, 19 Feb 2017 04:19:56 +0100")
Hi Andreas,
On dim., f?vr. 19 2017, Andreas F?rber <afaerber@suse.de> wrote:
> Hello,
>
> This mini-series adds initial support for the Marvell IAP140 SoC (aka PXA1908)
> and the Andromeda Box Edge development board.
Given the name of the SoC (PXA1908) and the fact that you reuse driver
related to PXA, for me these SoC is neither a mvebu nor a berlin SoC. So
just to avoid any misunderstanding, I don't mind being CC and possibly
doing review but I don't plan to take this patch ( I don't think the
berlin maintainer will do it too).
>
> In order to enable the 8250 UART driver, it reuses ARCH_PXA; but some drivers
> enabled with ARCH_PXA don't build due to arm assembly or arm64's lack of mach-,
> so their dependencies need to be limited to ARM alongside (blacklisted). The
> alternative would of course be to choose a new ARCH_ symbol and to selectively
> add it to drivers known working (whitelisting). The latter would require
> finding a suitable name.
For this kind of issue you can have a look on what we did when
introducing mvebu SoC using ARM64.
Gregory
>
> Both earlycon and serial are working, but an explicit console=ttyS0,115200n8
> is needed; with just "earlycon" and stdout-path the earlycon stops early and
> switches to a tty0, long before disabling the bootconsole...
>
> All four CPUs come up, and an initrd can be reached.
>
> However, there are errors about CPUs 1-3 having a zero SYS_CNTFRQ_EL0:
>
> [ 0.095812] smp: Bringing up secondary CPUs ...
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x1
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x2
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x3
> [ 0.133419] Detected VIPT I-cache on CPU1
> [ 0.133430] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU1: 0x00000000000000
> [ 0.133447] Unsupported CPU feature variation.
> ...
> [ 0.133748] CPU1: Booted secondary processor [410fd032]
> [ 0.165465] Detected VIPT I-cache on CPU2
> [ 0.165474] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU2: 0x00000000000000
> [ 0.165505] CPU2: Booted secondary processor [410fd032]
> [ 0.197539] Detected VIPT I-cache on CPU3
> [ 0.197546] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU3: 0x00000000000000
> [ 0.197573] CPU3: Booted secondary processor [410fd032]
> [ 0.197625] smp: Brought up 1 node, 4 CPUs
> [ 0.522514] SMP: Total of 4 processors activated.
> [ 0.527212] CPU features: detected feature: 32-bit EL0 Support
> [ 0.533105] CPU: All CPU(s) started at EL2
>
> KVM appears to initialize okay, but was not yet tested with guests.
>
> [ 0.865255] kvm [1]: 8-bit VMID
> [ 0.868401] kvm [1]: IDMAP page: d23000
> [ 0.872233] kvm [1]: HYP VA range: 800000000000:ffffffffffff
> [ 0.878262] kvm [1]: Hyp mode initialized successfully
> [ 0.883429] kvm [1]: vgic-v2 at d1dfc000
> [ 0.887179] kvm [1]: vgic interrupt IRQ1
> [ 0.891120] kvm [1]: virtual timer IRQ4
>
> More Marvell drivers may be available in-tree for reuse - besides build errors
> the limitation is currently the lack of an IAP140 clk driver though. Patch 4/4
> works around that for UART0 with a fixed-clock.
>
> A 3.14 based tree is available on GitHub acorn-marvell/brillo_pxa_kernel. No
> driver comparisons to mainline have been attempted yet.
>
> Booting required changes to the vendor U-Boot,
> cf. https://en.opensuse.org/HCL:AndromedaBoxEdge
>
> https://github.com/afaerber/linux/commits/edge-next
>
> Have a lot of fun!
>
> Cheers,
> Andreas
>
> Cc: info at andromedabox.org
> Cc: devicetree at vger.kernel.org
>
> Andreas F?rber (4):
> ARM64: Prepare Marvell IAP140 aka PXA1908
> Documentation: devicetree: arm: Document Marvell IAP140
> ARM64: dts: marvell: Add IAP140 and Andromeda Box Edge
> ARM64: dts: marvell: iap140-andromeda-box-edge: Add uart0 clock
>
> .../devicetree/bindings/arm/marvell/iap140.txt | 7 +
> arch/arm64/Kconfig.platforms | 5 +
> arch/arm64/boot/dts/marvell/Makefile | 2 +
> .../boot/dts/marvell/iap140-andromeda-box-edge.dts | 77 ++++++++
> arch/arm64/boot/dts/marvell/iap140.dtsi | 195 +++++++++++++++++++++
> drivers/clk/Kconfig | 2 +-
> drivers/mmc/host/Kconfig | 2 +-
> drivers/tty/serial/Kconfig | 2 +-
> 8 files changed, 289 insertions(+), 3 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/marvell/iap140.txt
> create mode 100644 arch/arm64/boot/dts/marvell/iap140-andromeda-box-edge.dts
> create mode 100644 arch/arm64/boot/dts/marvell/iap140.dtsi
>
> --
> 2.10.2
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
WARNING: multiple messages have this Message-ID (diff)
From: Gregory CLEMENT <gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
To: "Andreas Färber" <afaerber-l3A5Bk7waGM@public.gmane.org>
Cc: linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org,
Jason Cooper <jason-NLaQJdtUoK4Be96aLqz0jA@public.gmane.org>,
Andrew Lunn <andrew-g2DYL2Zd6BY@public.gmane.org>,
Sebastian Hesselbarth
<sebastian.hesselbarth-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Jisheng Zhang <jszhang-eYqpPyKDWXRBDgjK7y7TUQ@public.gmane.org>,
Daniel Mack <daniel-cYrQPVfZoowdnm+yROfE0A@public.gmane.org>,
Haojian Zhuang
<haojian.zhuang-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
Robert Jarzmik <robert.jarzmik-GANU6spQydw@public.gmane.org>,
Eric Miao <eric.y.miao-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
info-PWLG29+z7hGxBmiGZ5/UTQ@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 0/4] ARM64: Initial Marvell IAP140 enablement
Date: Mon, 20 Feb 2017 14:17:46 +0100 [thread overview]
Message-ID: <87bmtxatmt.fsf@free-electrons.com> (raw)
In-Reply-To: <20170219032000.4674-1-afaerber-l3A5Bk7waGM@public.gmane.org> ("Andreas Färber"'s message of "Sun, 19 Feb 2017 04:19:56 +0100")
Hi Andreas,
On dim., févr. 19 2017, Andreas Färber <afaerber-l3A5Bk7waGM@public.gmane.org> wrote:
> Hello,
>
> This mini-series adds initial support for the Marvell IAP140 SoC (aka PXA1908)
> and the Andromeda Box Edge development board.
Given the name of the SoC (PXA1908) and the fact that you reuse driver
related to PXA, for me these SoC is neither a mvebu nor a berlin SoC. So
just to avoid any misunderstanding, I don't mind being CC and possibly
doing review but I don't plan to take this patch ( I don't think the
berlin maintainer will do it too).
>
> In order to enable the 8250 UART driver, it reuses ARCH_PXA; but some drivers
> enabled with ARCH_PXA don't build due to arm assembly or arm64's lack of mach-,
> so their dependencies need to be limited to ARM alongside (blacklisted). The
> alternative would of course be to choose a new ARCH_ symbol and to selectively
> add it to drivers known working (whitelisting). The latter would require
> finding a suitable name.
For this kind of issue you can have a look on what we did when
introducing mvebu SoC using ARM64.
Gregory
>
> Both earlycon and serial are working, but an explicit console=ttyS0,115200n8
> is needed; with just "earlycon" and stdout-path the earlycon stops early and
> switches to a tty0, long before disabling the bootconsole...
>
> All four CPUs come up, and an initrd can be reached.
>
> However, there are errors about CPUs 1-3 having a zero SYS_CNTFRQ_EL0:
>
> [ 0.095812] smp: Bringing up secondary CPUs ...
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x1
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x2
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x3
> [ 0.133419] Detected VIPT I-cache on CPU1
> [ 0.133430] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU1: 0x00000000000000
> [ 0.133447] Unsupported CPU feature variation.
> ...
> [ 0.133748] CPU1: Booted secondary processor [410fd032]
> [ 0.165465] Detected VIPT I-cache on CPU2
> [ 0.165474] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU2: 0x00000000000000
> [ 0.165505] CPU2: Booted secondary processor [410fd032]
> [ 0.197539] Detected VIPT I-cache on CPU3
> [ 0.197546] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU3: 0x00000000000000
> [ 0.197573] CPU3: Booted secondary processor [410fd032]
> [ 0.197625] smp: Brought up 1 node, 4 CPUs
> [ 0.522514] SMP: Total of 4 processors activated.
> [ 0.527212] CPU features: detected feature: 32-bit EL0 Support
> [ 0.533105] CPU: All CPU(s) started at EL2
>
> KVM appears to initialize okay, but was not yet tested with guests.
>
> [ 0.865255] kvm [1]: 8-bit VMID
> [ 0.868401] kvm [1]: IDMAP page: d23000
> [ 0.872233] kvm [1]: HYP VA range: 800000000000:ffffffffffff
> [ 0.878262] kvm [1]: Hyp mode initialized successfully
> [ 0.883429] kvm [1]: vgic-v2@d1dfc000
> [ 0.887179] kvm [1]: vgic interrupt IRQ1
> [ 0.891120] kvm [1]: virtual timer IRQ4
>
> More Marvell drivers may be available in-tree for reuse - besides build errors
> the limitation is currently the lack of an IAP140 clk driver though. Patch 4/4
> works around that for UART0 with a fixed-clock.
>
> A 3.14 based tree is available on GitHub acorn-marvell/brillo_pxa_kernel. No
> driver comparisons to mainline have been attempted yet.
>
> Booting required changes to the vendor U-Boot,
> cf. https://en.opensuse.org/HCL:AndromedaBoxEdge
>
> https://github.com/afaerber/linux/commits/edge-next
>
> Have a lot of fun!
>
> Cheers,
> Andreas
>
> Cc: info-PWLG29+z7hGxBmiGZ5/UTQ@public.gmane.org
> Cc: devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
>
> Andreas Färber (4):
> ARM64: Prepare Marvell IAP140 aka PXA1908
> Documentation: devicetree: arm: Document Marvell IAP140
> ARM64: dts: marvell: Add IAP140 and Andromeda Box Edge
> ARM64: dts: marvell: iap140-andromeda-box-edge: Add uart0 clock
>
> .../devicetree/bindings/arm/marvell/iap140.txt | 7 +
> arch/arm64/Kconfig.platforms | 5 +
> arch/arm64/boot/dts/marvell/Makefile | 2 +
> .../boot/dts/marvell/iap140-andromeda-box-edge.dts | 77 ++++++++
> arch/arm64/boot/dts/marvell/iap140.dtsi | 195 +++++++++++++++++++++
> drivers/clk/Kconfig | 2 +-
> drivers/mmc/host/Kconfig | 2 +-
> drivers/tty/serial/Kconfig | 2 +-
> 8 files changed, 289 insertions(+), 3 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/marvell/iap140.txt
> create mode 100644 arch/arm64/boot/dts/marvell/iap140-andromeda-box-edge.dts
> create mode 100644 arch/arm64/boot/dts/marvell/iap140.dtsi
>
> --
> 2.10.2
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
WARNING: multiple messages have this Message-ID (diff)
From: Gregory CLEMENT <gregory.clement@free-electrons.com>
To: "Andreas Färber" <afaerber@suse.de>
Cc: linux-arm-kernel@lists.infradead.org,
Jason Cooper <jason@lakedaemon.net>, Andrew Lunn <andrew@lunn.ch>,
Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
Jisheng Zhang <jszhang@marvell.com>,
Daniel Mack <daniel@zonque.org>,
Haojian Zhuang <haojian.zhuang@gmail.com>,
Robert Jarzmik <robert.jarzmik@free.fr>,
Eric Miao <eric.y.miao@gmail.com>,
info@andromedabox.org, linux-kernel@vger.kernel.org,
devicetree@vger.kernel.org
Subject: Re: [PATCH 0/4] ARM64: Initial Marvell IAP140 enablement
Date: Mon, 20 Feb 2017 14:17:46 +0100 [thread overview]
Message-ID: <87bmtxatmt.fsf@free-electrons.com> (raw)
In-Reply-To: <20170219032000.4674-1-afaerber@suse.de> ("Andreas Färber"'s message of "Sun, 19 Feb 2017 04:19:56 +0100")
Hi Andreas,
On dim., févr. 19 2017, Andreas Färber <afaerber@suse.de> wrote:
> Hello,
>
> This mini-series adds initial support for the Marvell IAP140 SoC (aka PXA1908)
> and the Andromeda Box Edge development board.
Given the name of the SoC (PXA1908) and the fact that you reuse driver
related to PXA, for me these SoC is neither a mvebu nor a berlin SoC. So
just to avoid any misunderstanding, I don't mind being CC and possibly
doing review but I don't plan to take this patch ( I don't think the
berlin maintainer will do it too).
>
> In order to enable the 8250 UART driver, it reuses ARCH_PXA; but some drivers
> enabled with ARCH_PXA don't build due to arm assembly or arm64's lack of mach-,
> so their dependencies need to be limited to ARM alongside (blacklisted). The
> alternative would of course be to choose a new ARCH_ symbol and to selectively
> add it to drivers known working (whitelisting). The latter would require
> finding a suitable name.
For this kind of issue you can have a look on what we did when
introducing mvebu SoC using ARM64.
Gregory
>
> Both earlycon and serial are working, but an explicit console=ttyS0,115200n8
> is needed; with just "earlycon" and stdout-path the earlycon stops early and
> switches to a tty0, long before disabling the bootconsole...
>
> All four CPUs come up, and an initrd can be reached.
>
> However, there are errors about CPUs 1-3 having a zero SYS_CNTFRQ_EL0:
>
> [ 0.095812] smp: Bringing up secondary CPUs ...
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x1
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x2
> ======pxa1908_pmu_core_pwr_on: mpidr = 0x3
> [ 0.133419] Detected VIPT I-cache on CPU1
> [ 0.133430] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU1: 0x00000000000000
> [ 0.133447] Unsupported CPU feature variation.
> ...
> [ 0.133748] CPU1: Booted secondary processor [410fd032]
> [ 0.165465] Detected VIPT I-cache on CPU2
> [ 0.165474] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU2: 0x00000000000000
> [ 0.165505] CPU2: Booted secondary processor [410fd032]
> [ 0.197539] Detected VIPT I-cache on CPU3
> [ 0.197546] CPU features: SANITY CHECK: Unexpected variation in SYS_CNTFRQ_EL0. Boot CPU: 0x000000018cba80, CPU3: 0x00000000000000
> [ 0.197573] CPU3: Booted secondary processor [410fd032]
> [ 0.197625] smp: Brought up 1 node, 4 CPUs
> [ 0.522514] SMP: Total of 4 processors activated.
> [ 0.527212] CPU features: detected feature: 32-bit EL0 Support
> [ 0.533105] CPU: All CPU(s) started at EL2
>
> KVM appears to initialize okay, but was not yet tested with guests.
>
> [ 0.865255] kvm [1]: 8-bit VMID
> [ 0.868401] kvm [1]: IDMAP page: d23000
> [ 0.872233] kvm [1]: HYP VA range: 800000000000:ffffffffffff
> [ 0.878262] kvm [1]: Hyp mode initialized successfully
> [ 0.883429] kvm [1]: vgic-v2@d1dfc000
> [ 0.887179] kvm [1]: vgic interrupt IRQ1
> [ 0.891120] kvm [1]: virtual timer IRQ4
>
> More Marvell drivers may be available in-tree for reuse - besides build errors
> the limitation is currently the lack of an IAP140 clk driver though. Patch 4/4
> works around that for UART0 with a fixed-clock.
>
> A 3.14 based tree is available on GitHub acorn-marvell/brillo_pxa_kernel. No
> driver comparisons to mainline have been attempted yet.
>
> Booting required changes to the vendor U-Boot,
> cf. https://en.opensuse.org/HCL:AndromedaBoxEdge
>
> https://github.com/afaerber/linux/commits/edge-next
>
> Have a lot of fun!
>
> Cheers,
> Andreas
>
> Cc: info@andromedabox.org
> Cc: devicetree@vger.kernel.org
>
> Andreas Färber (4):
> ARM64: Prepare Marvell IAP140 aka PXA1908
> Documentation: devicetree: arm: Document Marvell IAP140
> ARM64: dts: marvell: Add IAP140 and Andromeda Box Edge
> ARM64: dts: marvell: iap140-andromeda-box-edge: Add uart0 clock
>
> .../devicetree/bindings/arm/marvell/iap140.txt | 7 +
> arch/arm64/Kconfig.platforms | 5 +
> arch/arm64/boot/dts/marvell/Makefile | 2 +
> .../boot/dts/marvell/iap140-andromeda-box-edge.dts | 77 ++++++++
> arch/arm64/boot/dts/marvell/iap140.dtsi | 195 +++++++++++++++++++++
> drivers/clk/Kconfig | 2 +-
> drivers/mmc/host/Kconfig | 2 +-
> drivers/tty/serial/Kconfig | 2 +-
> 8 files changed, 289 insertions(+), 3 deletions(-)
> create mode 100644 Documentation/devicetree/bindings/arm/marvell/iap140.txt
> create mode 100644 arch/arm64/boot/dts/marvell/iap140-andromeda-box-edge.dts
> create mode 100644 arch/arm64/boot/dts/marvell/iap140.dtsi
>
> --
> 2.10.2
>
--
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
next prev parent reply other threads:[~2017-02-20 13:17 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-19 3:19 [PATCH 0/4] ARM64: Initial Marvell IAP140 enablement Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-02-19 3:19 ` [PATCH 1/4] ARM64: Prepare Marvell IAP140 aka PXA1908 Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-03-14 16:30 ` Ulf Hansson
2017-03-14 16:30 ` Ulf Hansson
2017-03-14 16:30 ` Ulf Hansson
2017-03-14 16:30 ` Ulf Hansson
2017-03-14 18:10 ` Andreas Färber
2017-03-14 18:10 ` Andreas Färber
2017-03-14 18:10 ` Andreas Färber
2017-02-19 3:19 ` [PATCH 2/4] Documentation: devicetree: arm: Document Marvell IAP140 Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-02-20 12:56 ` Thomas Petazzoni
2017-02-20 12:56 ` Thomas Petazzoni
2017-02-20 12:56 ` Thomas Petazzoni
2017-02-20 13:16 ` Andreas Färber
2017-02-20 13:16 ` Andreas Färber
2017-02-20 13:16 ` Andreas Färber
2017-02-20 13:58 ` Thomas Petazzoni
2017-02-20 13:58 ` Thomas Petazzoni
2017-02-20 13:58 ` Thomas Petazzoni
2017-02-19 3:19 ` [PATCH 3/4] ARM64: dts: marvell: Add IAP140 and Andromeda Box Edge Andreas Färber
2017-02-19 3:19 ` Andreas Färber
2017-02-19 3:20 ` [PATCH 4/4] ARM64: dts: marvell: iap140-andromeda-box-edge: Add uart0 clock Andreas Färber
2017-02-19 3:20 ` Andreas Färber
2017-02-19 3:20 ` Andreas Färber
2017-02-20 13:17 ` Gregory CLEMENT [this message]
2017-02-20 13:17 ` [PATCH 0/4] ARM64: Initial Marvell IAP140 enablement Gregory CLEMENT
2017-02-20 13:17 ` Gregory CLEMENT
2017-02-21 18:26 ` Andreas Färber
2017-02-21 18:26 ` Andreas Färber
2017-02-21 18:26 ` Andreas Färber
2017-02-21 19:19 ` Andrew Lunn
2017-02-21 19:19 ` Andrew Lunn
2017-02-21 19:19 ` Andrew Lunn
2017-02-21 22:26 ` Robert Jarzmik
2017-02-21 22:26 ` Robert Jarzmik
2017-02-21 22:26 ` Robert Jarzmik
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=87bmtxatmt.fsf@free-electrons.com \
--to=gregory.clement@free-electrons.com \
--cc=linux-arm-kernel@lists.infradead.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.