From: Wadim Egorov <w.egorov@phytec.de>
To: Beleswar Padhi <b-padhi@ti.com>,
nm@ti.com, vigneshr@ti.com, kristo@kernel.org, robh@kernel.org,
krzk+dt@kernel.org, conor+dt@kernel.org
Cc: afd@ti.com, u-kumar1@ti.com, hnagalla@ti.com, jm@ti.com,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
Robert Nelson <robertcnelson@gmail.com>,
Jo_o Paulo Gon_alves <joao.goncalves@toradex.com>,
Parth Pancholi <parth.pancholi@toradex.com>,
Emanuele Ghidoli <emanuele.ghidoli@toradex.com>,
Francesco Dolcini <francesco.dolcini@toradex.com>,
Matthias Schiffer <matthias.schiffer@ew.tq-group.com>,
Logan Bristol <logan.bristol@utexas.edu>,
Josua Mayer <josua@solid-run.com>, John Ma <jma@phytec.com>,
Nathan Morrisson <nmorrisson@phytec.com>,
Garrett Giordano <ggiordano@phytec.com>,
Matt McKee <mmckee@phytec.com>,
Andrejs Cainikovs <andrejs.cainikovs@toradex.com>,
Max Krummenacher <max.krummenacher@toradex.com>,
Stefan Eichenberger <stefan.eichenberger@toradex.com>,
Hiago De Franco <hiago.franco@toradex.com>
Subject: Re: [PATCH 00/33] Refactor TI IPC DT configs into dtsi
Date: Fri, 15 Aug 2025 08:49:22 +0300 [thread overview]
Message-ID: <2c3d31f0-e690-4e67-acfa-931fca47dfeb@phytec.de> (raw)
In-Reply-To: <20250814223839.3256046-1-b-padhi@ti.com>
Hi Beleswar,
On 8/15/25 1:38 AM, Beleswar Padhi wrote:
> The TI K3 SoCs have multiple programmable remote processors like
> R5F, M4F, C6x/C7x etc. The TI SDKs for these SoCs offer sample firmware
> which could be run on these cores to demonstrate an "echo" IPC test.
> Those firmware require certain memory carveouts to be reserved from
> system memory, timers to be reserved, and certain mailbox
> configurations for interrupt based messaging. These configurations
> could be different for a different firmware.
>
> Refactor these firmware dependent configurations from board level DTS
> into a dtsi for now. This dtsi for TI IPC firmware is board-independent
> and can be applied to all boards from the same SoC Family. This gets
> rid of code duplication (>50%) and allows more freedom for users
> developing custom firmware (or no firmware) to utilize system resources
> better; easily by swapping out this dtsi. To maintain backward
> compatibility, the dtsi is included in all existing boards.
I remember I asked myself the same question on how to represent the
relation between used FW and memory carveouts+others when adding our
first K3 board.
This change comes quite late so I am wondering if there is any other
motivation besides code reduction / more freedom for custom FW behind it?
>
> DTSI vs Overlay:
> 1. I chose DTSI over overlay as both the ways required including the
> refactored file in existing board-level files to maintain backward
> compatibility, so didn't see the advantage of using overlays here.
> 2. If we do down the overlay path, existing board-level file names have
> to be changed to indicate they are without the IPC support; so that
> they can be combined with the overlay to generate the same-named DTBs.
> For example:
> k3-am69-sk.dtb := k3-am69-sk-sans-ipc.dtb k3-j784s4-ti-ipc-firmware.dtbo
> ~~~~~~~~
While it's a good idea to keep backward compatibility for older devices,
have you considered using overlays for new/upcoming devices?
Regards,
Wadim
>
> I am not sure if this renaming of files is ideal?
>
> Testing Done:
> 1. Tested Boot across all TI K3 EVM/SK boards.
> 2. Tested IPC on all TI K3 J7* EVM/SK boards (& AM62x SK).
> 3. Tested that each patch in the series generates no new warnings/errors.
> 4. HELP needed: Boot/IPC test on vendor boards utilizing TI K3 SoCs.
>
> Note for vendors:
> 1. This series streamlines all boards(external vendors included) to use the
> TI IPC DTSI config. In the process, several new nodes related to remote
> processors have been added/enabled in the final DTS. Need vendors help in
> performing a sanity boot & IPC functionality test with the changes included
> (More info in indivdual patch)
> 2. If you wish to not include all of the TI IPC DTSI configs and leave the
> board files as it is currently, just let me know so and I will drop those
> patches in the next revision.
> Cc: Robert Nelson <robertcnelson@gmail.com>
> Cc: Jo_o Paulo Gon_alves <joao.goncalves@toradex.com>
> Cc: Parth Pancholi <parth.pancholi@toradex.com>
> Cc: Emanuele Ghidoli <emanuele.ghidoli@toradex.com>
> Cc: Francesco Dolcini <francesco.dolcini@toradex.com>
> Cc: Matthias Schiffer <matthias.schiffer@ew.tq-group.com>
> Cc: Logan Bristol <logan.bristol@utexas.edu>
> Cc: Josua Mayer <josua@solid-run.com>
> Cc: John Ma <jma@phytec.com>
> Cc: Nathan Morrisson <nmorrisson@phytec.com>
> Cc: Garrett Giordano <ggiordano@phytec.com>
> Cc: Matt McKee <mmckee@phytec.com>
> Cc: Wadim Egorov <w.egorov@phytec.de>
> Cc: Andrejs Cainikovs <andrejs.cainikovs@toradex.com>
> Cc: Max Krummenacher <max.krummenacher@toradex.com>
> Cc: Stefan Eichenberger <stefan.eichenberger@toradex.com>
> Cc: Hiago De Franco <hiago.franco@toradex.com>
>
> Thanks,
> Beleswar
>
> Beleswar Padhi (33):
> arm64: dts: ti: k3-j7200: Enable remote processors at board level
> arm64: dts: ti: k3-j7200-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> Revert "arm64: dts: ti: k3-j721e-sk: Fix reversed C6x carveout
> locations"
> Revert "arm64: dts: ti: k3-j721e-beagleboneai64: Fix reversed C6x
> carveout locations"
> arm64: dts: ti: k3-j721e: Enable remote processors at board level
> arm64: dts: ti: k3-j721e-beagleboneai64: Add missing cfg for TI IPC FW
> arm64: dts: ti: k3-j721e-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-j721s2: Enable remote processors at board level
> arm64: dts: ti: k3-j721s2-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-j784s4-j742s2: Enable remote processors at board
> level
> arm64: dts: ti: k3-j784s4-j742s2-ti-ipc-firmware-common: Refactor IPC
> cfg into new dtsi
> arm64: dts: ti: k3-j784s4-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-am62p-j722s: Enable remote processors at board
> level
> arm64: dts: ti: k3-j722s-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-am6*-boards: Add label to reserved-memory node
> arm64: dts: ti: k3-am62p-verdin: Add missing cfg for TI IPC Firmware
> arm64: dts: ti: k3-am62p-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-am62-verdin: Add missing cfg for TI IPC Firmware
> arm64: dts: ti: k3-am62-pocketbeagle2: Add missing cfg for TI IPC
> Firmware
> arm64: dts: ti: k3-am62: Enable Mailbox nodes at the board level
> arm64: dts: ti: k3-am62: Enable remote processors at board level
> arm64: dts: ti: k3-am62-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-am62a: Enable Mailbox nodes at the board level
> arm64: dts: ti: k3-am62a: Enable remote processors at board level
> arm64: dts: ti: k3-am62a-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-am64: Enable remote processors at board level
> arm64: dts: ti: k3-am642-sr-som: Add missing cfg for TI IPC Firmware
> arm64: dts: ti: k3-am64-phycore-som: Add missing cfg for TI IPC
> Firmware
> arm64: dts: ti: k3-am642-tqma64xxl: Add missing cfg for TI IPC
> Firmware
> arm64: dts: ti: k3-am64-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-am65: Enable remote processors at board level
> arm64: dts: ti: k3-am65-ti-ipc-firmware: Refactor IPC cfg into new
> dtsi
> arm64: dts: ti: k3-j7*-ti-ipc-firmware: Switch MCU R5F cluster to
> Split-mode
>
> arch/arm64/boot/dts/ti/k3-am62-main.dtsi | 1 +
> .../boot/dts/ti/k3-am62-phycore-som.dtsi | 43 +--
> .../boot/dts/ti/k3-am62-pocketbeagle2.dts | 36 +-
> .../boot/dts/ti/k3-am62-ti-ipc-firmware.dtsi | 52 +++
> arch/arm64/boot/dts/ti/k3-am62-verdin.dtsi | 31 +-
> arch/arm64/boot/dts/ti/k3-am62-wakeup.dtsi | 1 +
> arch/arm64/boot/dts/ti/k3-am62a-main.dtsi | 4 +
> arch/arm64/boot/dts/ti/k3-am62a-mcu.dtsi | 1 +
> .../boot/dts/ti/k3-am62a-phycore-som.dtsi | 90 +----
> .../boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi | 98 +++++
> arch/arm64/boot/dts/ti/k3-am62a-wakeup.dtsi | 1 +
> arch/arm64/boot/dts/ti/k3-am62a7-sk.dts | 92 +----
> arch/arm64/boot/dts/ti/k3-am62d2-evm.dts | 77 +---
> .../dts/ti/k3-am62p-j722s-common-mcu.dtsi | 1 +
> .../dts/ti/k3-am62p-j722s-common-wakeup.dtsi | 1 +
> .../boot/dts/ti/k3-am62p-ti-ipc-firmware.dtsi | 60 +++
> arch/arm64/boot/dts/ti/k3-am62p-verdin.dtsi | 42 ++-
> arch/arm64/boot/dts/ti/k3-am62p5-sk.dts | 54 +--
> .../arm64/boot/dts/ti/k3-am62x-sk-common.dtsi | 47 +--
> arch/arm64/boot/dts/ti/k3-am64-main.dtsi | 6 +
> .../boot/dts/ti/k3-am64-phycore-som.dtsi | 124 +------
> .../boot/dts/ti/k3-am64-ti-ipc-firmware.dtsi | 162 ++++++++
> arch/arm64/boot/dts/ti/k3-am642-evm.dts | 146 +-------
> arch/arm64/boot/dts/ti/k3-am642-sk.dts | 146 +-------
> arch/arm64/boot/dts/ti/k3-am642-sr-som.dtsi | 92 +----
> .../arm64/boot/dts/ti/k3-am642-tqma64xxl.dtsi | 107 +-----
> .../boot/dts/ti/k3-am65-iot2050-common.dtsi | 58 +--
> arch/arm64/boot/dts/ti/k3-am65-mcu.dtsi | 3 +
> .../boot/dts/ti/k3-am65-ti-ipc-firmware.dtsi | 64 ++++
> .../arm64/boot/dts/ti/k3-am654-base-board.dts | 54 +--
> .../arm64/boot/dts/ti/k3-am67a-beagley-ai.dts | 152 +-------
> .../boot/dts/ti/k3-am68-phycore-som.dtsi | 235 +-----------
> arch/arm64/boot/dts/ti/k3-am68-sk-som.dtsi | 229 +-----------
> arch/arm64/boot/dts/ti/k3-am69-sk.dts | 348 +----------------
> arch/arm64/boot/dts/ti/k3-j7200-main.dtsi | 3 +
> .../boot/dts/ti/k3-j7200-mcu-wakeup.dtsi | 3 +
> arch/arm64/boot/dts/ti/k3-j7200-som-p0.dtsi | 115 +-----
> .../boot/dts/ti/k3-j7200-ti-ipc-firmware.dtsi | 131 +++++++
> .../boot/dts/ti/k3-j721e-beagleboneai64.dts | 229 +-----------
> arch/arm64/boot/dts/ti/k3-j721e-main.dtsi | 6 +
> .../boot/dts/ti/k3-j721e-mcu-wakeup.dtsi | 3 +
> arch/arm64/boot/dts/ti/k3-j721e-sk.dts | 266 +------------
> arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi | 266 +------------
> .../boot/dts/ti/k3-j721e-ti-ipc-firmware.dtsi | 289 ++++++++++++++
> arch/arm64/boot/dts/ti/k3-j721s2-main.dtsi | 6 +
> .../boot/dts/ti/k3-j721s2-mcu-wakeup.dtsi | 3 +
> arch/arm64/boot/dts/ti/k3-j721s2-som-p0.dtsi | 231 +-----------
> .../dts/ti/k3-j721s2-ti-ipc-firmware.dtsi | 250 +++++++++++++
> arch/arm64/boot/dts/ti/k3-j722s-evm.dts | 154 +-------
> arch/arm64/boot/dts/ti/k3-j722s-main.dtsi | 1 +
> .../boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi | 163 ++++++++
> arch/arm64/boot/dts/ti/k3-j784s4-evm.dts | 26 +-
> .../dts/ti/k3-j784s4-j742s2-evm-common.dtsi | 337 +----------------
> .../dts/ti/k3-j784s4-j742s2-main-common.dtsi | 9 +
> .../k3-j784s4-j742s2-mcu-wakeup-common.dtsi | 3 +
> ...-j784s4-j742s2-ti-ipc-firmware-common.dtsi | 351 ++++++++++++++++++
> .../dts/ti/k3-j784s4-ti-ipc-firmware.dtsi | 34 ++
> 57 files changed, 1820 insertions(+), 3717 deletions(-)
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62a-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-am62p-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-am64-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-am65-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-j7200-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-j721e-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-j721s2-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-j722s-ti-ipc-firmware.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-j784s4-j742s2-ti-ipc-firmware-common.dtsi
> create mode 100644 arch/arm64/boot/dts/ti/k3-j784s4-ti-ipc-firmware.dtsi
>
next prev parent reply other threads:[~2025-08-15 5:52 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-14 22:38 [PATCH 00/33] Refactor TI IPC DT configs into dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 01/33] arm64: dts: ti: k3-j7200: Enable remote processors at board level Beleswar Padhi
2025-08-15 2:30 ` Kumar, Udit
2025-08-22 16:32 ` Beleswar Prasad Padhi
2025-08-15 15:38 ` Andrew Davis
2025-08-14 22:38 ` [PATCH 02/33] arm64: dts: ti: k3-j7200-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 03/33] Revert "arm64: dts: ti: k3-j721e-sk: Fix reversed C6x carveout locations" Beleswar Padhi
2025-08-15 2:35 ` Kumar, Udit
2025-08-22 16:26 ` Beleswar Prasad Padhi
2025-08-14 22:38 ` [PATCH 04/33] Revert "arm64: dts: ti: k3-j721e-beagleboneai64: " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 05/33] arm64: dts: ti: k3-j721e: Enable remote processors at board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 06/33] arm64: dts: ti: k3-j721e-beagleboneai64: Add missing cfg for TI IPC FW Beleswar Padhi
2025-08-15 15:42 ` Andrew Davis
2025-08-14 22:38 ` [PATCH 07/33] arm64: dts: ti: k3-j721e-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 08/33] arm64: dts: ti: k3-j721s2: Enable remote processors at board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 09/33] arm64: dts: ti: k3-j721s2-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 10/33] arm64: dts: ti: k3-j784s4-j742s2: Enable remote processors at board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 11/33] arm64: dts: ti: k3-j784s4-j742s2-ti-ipc-firmware-common: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 12/33] arm64: dts: ti: k3-j784s4-ti-ipc-firmware: " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 13/33] arm64: dts: ti: k3-am62p-j722s: Enable remote processors at board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 14/33] arm64: dts: ti: k3-j722s-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 15/33] arm64: dts: ti: k3-am6*-boards: Add label to reserved-memory node Beleswar Padhi
2025-08-14 22:38 ` [PATCH 16/33] arm64: dts: ti: k3-am62p-verdin: Add missing cfg for TI IPC Firmware Beleswar Padhi
2025-08-18 19:39 ` Hiago De Franco
2025-08-21 6:06 ` Francesco Dolcini
2025-08-22 16:39 ` Beleswar Prasad Padhi
2025-08-23 16:43 ` Francesco Dolcini
2025-08-25 4:39 ` Beleswar Prasad Padhi
2025-08-14 22:38 ` [PATCH 17/33] arm64: dts: ti: k3-am62p-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 18/33] arm64: dts: ti: k3-am62-verdin: Add missing cfg for TI IPC Firmware Beleswar Padhi
2025-08-18 19:37 ` Hiago De Franco
2025-08-21 6:12 ` Francesco Dolcini
2025-08-22 16:46 ` Beleswar Prasad Padhi
2025-08-14 22:38 ` [PATCH 19/33] arm64: dts: ti: k3-am62-pocketbeagle2: " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 20/33] arm64: dts: ti: k3-am62: Enable Mailbox nodes at the board level Beleswar Padhi
2025-08-21 6:03 ` Francesco Dolcini
2025-08-14 22:38 ` [PATCH 21/33] arm64: dts: ti: k3-am62: Enable remote processors at " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 22/33] arm64: dts: ti: k3-am62-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 23/33] arm64: dts: ti: k3-am62a: Enable Mailbox nodes at the board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 24/33] arm64: dts: ti: k3-am62a: Enable remote processors at " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 25/33] arm64: dts: ti: k3-am62a-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 26/33] arm64: dts: ti: k3-am64: Enable remote processors at board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 27/33] arm64: dts: ti: k3-am642-sr-som: Add missing cfg for TI IPC Firmware Beleswar Padhi
2025-08-14 22:38 ` [PATCH 28/33] arm64: dts: ti: k3-am64-phycore-som: " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 29/33] arm64: dts: ti: k3-am642-tqma64xxl: " Beleswar Padhi
2025-08-14 22:38 ` [PATCH 30/33] arm64: dts: ti: k3-am64-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 31/33] arm64: dts: ti: k3-am65: Enable remote processors at board level Beleswar Padhi
2025-08-14 22:38 ` [PATCH 32/33] arm64: dts: ti: k3-am65-ti-ipc-firmware: Refactor IPC cfg into new dtsi Beleswar Padhi
2025-08-14 22:38 ` [PATCH 33/33] arm64: dts: ti: k3-j7*-ti-ipc-firmware: Switch MCU R5F cluster to Split-mode Beleswar Padhi
2025-08-15 2:41 ` Kumar, Udit
2025-08-15 3:13 ` Nishanth Menon
2025-08-15 15:48 ` Andrew Davis
2025-08-18 15:56 ` Kumar, Udit
2025-08-22 17:26 ` Beleswar Prasad Padhi
2025-08-22 17:31 ` Andrew Davis
2025-08-15 5:49 ` Wadim Egorov [this message]
2025-08-22 17:00 ` [PATCH 00/33] Refactor TI IPC DT configs into dtsi Beleswar Prasad Padhi
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=2c3d31f0-e690-4e67-acfa-931fca47dfeb@phytec.de \
--to=w.egorov@phytec.de \
--cc=afd@ti.com \
--cc=andrejs.cainikovs@toradex.com \
--cc=b-padhi@ti.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=emanuele.ghidoli@toradex.com \
--cc=francesco.dolcini@toradex.com \
--cc=ggiordano@phytec.com \
--cc=hiago.franco@toradex.com \
--cc=hnagalla@ti.com \
--cc=jm@ti.com \
--cc=jma@phytec.com \
--cc=joao.goncalves@toradex.com \
--cc=josua@solid-run.com \
--cc=kristo@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=logan.bristol@utexas.edu \
--cc=matthias.schiffer@ew.tq-group.com \
--cc=max.krummenacher@toradex.com \
--cc=mmckee@phytec.com \
--cc=nm@ti.com \
--cc=nmorrisson@phytec.com \
--cc=parth.pancholi@toradex.com \
--cc=robertcnelson@gmail.com \
--cc=robh@kernel.org \
--cc=stefan.eichenberger@toradex.com \
--cc=u-kumar1@ti.com \
--cc=vigneshr@ti.com \
/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;
as well as URLs for NNTP newsgroup(s).