From: Jayant Shekhar <jayant.shekhar@oss.qualcomm.com>
To: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>,
Jayant Shekhar <jayant.shekhar@oss.qualcomm.com>
Cc: "Rob Clark" <robin.clark@oss.qualcomm.com>,
"Dmitry Baryshkov" <lumag@kernel.org>,
"Abhinav Kumar" <abhinav.kumar@linux.dev>,
"Jessica Zhang" <jesszhan0024@gmail.com>,
"Sean Paul" <sean@poorly.run>,
"Marijn Suijten" <marijn.suijten@somainline.org>,
"David Airlie" <airlied@gmail.com>,
"Simona Vetter" <simona@ffwll.ch>,
"Maarten Lankhorst" <maarten.lankhorst@linux.intel.com>,
"Maxime Ripard" <mripard@kernel.org>,
"Thomas Zimmermann" <tzimmermann@suse.de>,
"Rob Herring" <robh@kernel.org>,
"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
"Conor Dooley" <conor+dt@kernel.org>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Jason Wang" <jasowangio@gmail.com>,
"Eugenio Pérez" <eperezma@redhat.com>,
"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
"Sumit Semwal" <sumit.semwal@linaro.org>,
"Christian König" <christian.koenig@amd.com>,
"Philipp Stanner" <phasta@kernel.org>,
"Bjorn Andersson" <andersson@kernel.org>,
"Konrad Dybcio" <konradybcio@kernel.org>,
"Abel Vesa" <abelvesa@kernel.org>,
"Joerg Roedel (AMD)" <joro@8bytes.org>,
"Will Deacon" <will@kernel.org>,
"Robin Murphy" <robin.murphy@arm.com>,
"Flemin Jose" <flemin.jose@oss.qualcomm.com>,
"Mahadevan P" <mahap@oss.qualcomm.com>,
virtualization@lists.linux.dev, linux-arm-msm@vger.kernel.org,
dri-devel@lists.freedesktop.org, freedreno@lists.freedesktop.org,
devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-media@vger.kernel.org, linaro-mm-sig@lists.linaro.org,
iommu@lists.linux.dev
Subject: Re: [PATCH v2 01/23] dt-bindings: display: msm: Add Qualcomm DCP
Date: Wed, 11 Nov 2026 12:38:54 +0530 [thread overview]
Message-ID: <0bf2075b-e507-4b81-a563-f7b4e7e2cbc1@oss.qualcomm.com> (raw)
In-Reply-To: <fzchmbho74ii6d2zhzni4qy4g74hiwv4fwf5xudrqdrstt6klm@7wdoo4acr6fm>
On 26-10-2026 15:27, Dmitry Baryshkov wrote:
> On Mon, Oct 26, 2026 at 11:51:11AM +0530, Jayant Shekhar wrote:
>> DCP platforms place the display pipeline under firmware control, so Linux
>> cannot discover display resources through direct register access. The DRM
>> driver therefore needs device-tree descriptions of the Qualcomm transport
>> wrapper, display topology, IOMMU contexts, and panel connections.
>>
>> Add bindings for the Qualcomm DCP transport wrapper and VirtIO display
>> subsystem. Document the IPCC power-notify resources, transport and
>> framebuffer IOMMU contexts, firmware-visible IOVA range, INTF graph, and
>> DSI panel connections. The wrapper creates a standard VirtIO-MMIO child
>> after the IPCC power-notify sequence has completed.
>>
>> Assisted-by: LLM
>> Signed-off-by: Jayant Shekhar <jayant.shekhar@oss.qualcomm.com>
>> ---
>> .../bindings/display/msm/qcom,dcp-dsi.yaml | 79 ++++++++++++
>> .../devicetree/bindings/display/msm/qcom,dcp.yaml | 123 +++++++++++++++++++
>> .../bindings/virtio/qcom,dcp-virtio.yaml | 132 +++++++++++++++++++++
>> 3 files changed, 334 insertions(+)
>>
>> diff --git a/Documentation/devicetree/bindings/display/msm/qcom,dcp-dsi.yaml b/Documentation/devicetree/bindings/display/msm/qcom,dcp-dsi.yaml
>> new file mode 100644
>> index 000000000000..9a0acaf00bb3
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/msm/qcom,dcp-dsi.yaml
>> @@ -0,0 +1,79 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/msm/qcom,dcp-dsi.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm DCP DSI host
>> +
>> +maintainers:
>> + - Jayant Shekhar <jayant.shekhar@oss.qualcomm.com>
>> +
>> +description: |
>> + A MIPI DSI host exposed by the Qualcomm DCP VirtIO device (see
>> + qcom,dcp.yaml). It follows the generic DSI controller binding, with panel
>> + devices described as child nodes. The DCP INTF graph endpoint connects
>> + directly to the panel; the DSI host node is not a graph endpoint. The host
>> + node uses the dsi@N naming convention, and its reg property identifies the
>> + DSI host index.
>> +
>> +allOf:
>> + - $ref: /schemas/display/dsi-controller.yaml#
> If there are no separate compatibles, can this be folded into the main
> DCP schema?
>
This will be addressed in v3.
>> +
>> +properties:
>> + reg:
>> + maxItems: 1
>> + description: DSI host index matching the DCP output port.
>> +
>> +required:
>> + - reg
>> + - "#address-cells"
>> + - "#size-cells"
>> +
>> +unevaluatedProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/gpio/gpio.h>
>> +
>> + dcp-subsystem {
>> + compatible = "virtio,device34";
>> + iommus = <&apps_smmu 0x400 0x2>;
>> +
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> + dcp_intf0_out: endpoint {
>> + remote-endpoint = <&panel_dcp_in>;
>> + };
>> + };
>> + };
>> +
>> + dsi@0 {
>> + reg = <0>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
> Yes, fold it there. It's not a separate device on its own.
>
>> +
>> + panel@0 {
>> + compatible = "novatek,nt37801";
>> + reg = <0>;
>> +
>> + vddio-supply = <&vreg_l12b_1p8>;
>> + vci-supply = <&vreg_l13b_3p0>;
>> + vdd-supply = <&display_panel_vdd>;
>> + reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
>> +
>> + port {
>> + panel_dcp_in: endpoint {
>> + remote-endpoint = <&dcp_intf0_out>;
>> + };
>> + };
>> + };
>> + };
>> + };
>> diff --git a/Documentation/devicetree/bindings/display/msm/qcom,dcp.yaml b/Documentation/devicetree/bindings/display/msm/qcom,dcp.yaml
>> new file mode 100644
>> index 000000000000..96f6c2a17e9e
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/msm/qcom,dcp.yaml
>> @@ -0,0 +1,123 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/msm/qcom,dcp.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm Display Co-Processor (DCP)
>> +
>> +maintainers:
>> + - Jayant Shekhar <jayant.shekhar@oss.qualcomm.com>
>> +
>> +description: |
>> + The Display Co-Processor (DCP) is a firmware-owned display subsystem.
>> + Linux communicates with DCP over HFI through VirtIO and does not access
>> + display hardware registers directly.
>> +
>> + This node describes the externally connected display graph between DCP
>> + INTF outputs and attached DSI panels. It is assigned to the VirtIO device
>> + by the Qualcomm transport driver and is not independently enumerated.
>> + Firmware capabilities and internal resources, including pipes, mixers,
>> + CRTCs, and clocks, are discovered at runtime.
>> +
>> +allOf:
>> + - $ref: /schemas/virtio/virtio-device.yaml#
>> +
>> +properties:
>> + compatible:
>> + const: virtio,device34
>> +
>> + iommus:
>> + maxItems: 1
>> + description:
>> + SMMU context used by DCP firmware to access GEM framebuffers. This
>> + is separate from the HFI transport context specified by the
>> + iommus property on the parent DCP transport node.
>> + The child context is used for framebuffer DMA performed by DCP
>> + firmware, while the parent context is used for VirtIO transport and HFI
>> + queue buffers. These contexts represent distinct firmware-visible DMA
>> + address spaces and must not be used interchangeably.
>> +
>> + "#address-cells":
>> + const: 1
>> +
>> + "#size-cells":
>> + const: 0
>> +
>> + ports:
>> + $ref: /schemas/graph.yaml#/properties/ports
>> + description: |
>> + DPU INTF output-only ports. The port number matches the firmware INTF
>> + index. The corresponding DSI host is the child node whose reg value
>> + matches the port number; the graph endpoint itself connects directly to
>> + the attached panel. Unused INTF ports are omitted.
>> + unevaluatedProperties: false
>> + patternProperties:
>> + "^port@[0-9a-f]+$":
>> + $ref: /schemas/graph.yaml#/$defs/port-base
>> + unevaluatedProperties: false
>> + properties:
>> + endpoint:
>> + $ref: /schemas/graph.yaml#/$defs/endpoint-base
>> + unevaluatedProperties: false
>> + required:
>> + - remote-endpoint
>> +
>> +patternProperties:
>> + "^dsi@[0-9a-f]+$":
>> + $ref: qcom,dcp-dsi.yaml#
> When adding DP support, would you add more devices at the same level? If
> so, we risk getting a warning about multiple devices using the same
> address.
>
Is it good to model each firmware INTF as a single interface@N node
carrying the INTF reg, with the protocol-specific DSI or DP description
nested beneath it?
The driver can then obtain the INTF index from the common parent,
avoiding duplicate addresses across protocol types.
>> +required:
>> + - compatible
>> + - iommus
>> + - "#address-cells"
>> + - "#size-cells"
>> + - ports
>> +
>> +unevaluatedProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/gpio/gpio.h>
>> +
>> + dcp-subsystem {
>> + compatible = "virtio,device34";
>> + iommus = <&apps_smmu 0x400 0x2>;
>> +
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> + dcp_intf0_out: endpoint {
>> + remote-endpoint = <&panel_dcp_in>;
>> + };
>> + };
>> + };
>> +
>> + dsi@0 {
>> + reg = <0>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + panel@0 {
>> + compatible = "novatek,nt37801";
>> + reg = <0>;
>> +
>> + vddio-supply = <&vreg_l12b_1p8>;
>> + vci-supply = <&vreg_l13b_3p0>;
>> + vdd-supply = <&display_panel_vdd>;
>> + reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
>> +
>> + port {
>> + panel_dcp_in: endpoint {
>> + remote-endpoint = <&dcp_intf0_out>;
>> + };
>> + };
>> + };
>> + };
>> + };
>> diff --git a/Documentation/devicetree/bindings/virtio/qcom,dcp-virtio.yaml b/Documentation/devicetree/bindings/virtio/qcom,dcp-virtio.yaml
>> new file mode 100644
>> index 000000000000..6020e848ce25
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/virtio/qcom,dcp-virtio.yaml
>> @@ -0,0 +1,132 @@
>> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/virtio/qcom,dcp-virtio.yaml#
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Qualcomm DCP VirtIO transport
>> +
>> +maintainers:
>> + - Jayant Shekhar <jayant.shekhar@oss.qualcomm.com>
>> +
>> +description: |
>> + Qualcomm DCP VirtIO transport. The IPCC power-notify channel and
>> + associated interrupts are required before the transport can access its
>> + MMIO registers. This is a Qualcomm-specific transport and must not use the
>> + generic virtio-mmio driver. The DCP VirtIO function is described as a child
>> + node and is assigned to the registered VirtIO device by this transport.
>> +
>> +properties:
>> + compatible:
>> + const: qcom,dcp-virtio
>> +
>> + reg:
>> + maxItems: 1
>> +
>> + interrupts-extended:
>> + minItems: 2
>> + maxItems: 2
>> + description: The VirtIO-MMIO and DCP power-notify interrupts, in that order.
>> +
>> + iommus:
>> + maxItems: 1
>> +
>> + iommu-ranges:
>> + $ref: /schemas/types.yaml#/definitions/uint32-array
>> + description: |
>> + The firmware-visible IOVA range, specified as a four-cell tuple
>> + containing a 64-bit IOVA base followed by a 64-bit range size.
>> + items:
>> + - description: IOVA base, high cell
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + - description: IOVA base, low cell
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + - description: IOVA range size, high cell
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> + - description: IOVA range size, low cell
>> + $ref: /schemas/types.yaml#/definitions/uint32
>> +
>> + dma-coherent: true
>> +
>> + mboxes:
>> + maxItems: 1
>> +
>> + mbox-names:
>> + const: dcp-power-tx
>> +
>> + dcp-subsystem:
> 'dcp' is not a generic name. If you want to list it here, it should be
> something like 'display-subsystem' or 'display-controller'.
>
To be addressed in v3.
Thanks
Jayant
>> + $ref: ../display/msm/qcom,dcp.yaml#
>> +
>> +required:
>> + - compatible
>> + - reg
>> + - interrupts-extended
>> + - iommus
>> + - iommu-ranges
>> + - dma-coherent
>> + - mboxes
>> + - mbox-names
>> + - dcp-subsystem
>> +
>> +additionalProperties: false
>> +
>> +examples:
>> + - |
>> + #include <dt-bindings/gpio/gpio.h>
>> + #include <dt-bindings/interrupt-controller/arm-gic.h>
>> + #include <dt-bindings/interrupt-controller/irq.h>
>> + #include <dt-bindings/mailbox/qcom-ipcc.h>
>> +
>> + virtio@9be8000 {
>> + compatible = "qcom,dcp-virtio";
>> + reg = <0x09be8000 0x1000>;
>> + interrupts-extended = <&intc GIC_ESPI 956 IRQ_TYPE_LEVEL_HIGH>,
>> + <&ipcc 13 5 IRQ_TYPE_EDGE_RISING>;
>> + iommus = <&apps_smmu 0x15a3 0x0>;
>> + iommu-ranges = <0x0 0x84000000 0x0 0x04000000>;
> This doesn't match the address / size cells.
>
>> + dma-coherent;
>> + mboxes = <&ipcc 13 5>;
>> + mbox-names = "dcp-power-tx";
>> +
>> + dcp-subsystem {
>> + compatible = "virtio,device34";
>> + iommus = <&apps_smmu 0x400 0x2>;
>> +
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + ports {
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + port@0 {
>> + reg = <0>;
>> + dcp_intf0_out: endpoint {
>> + remote-endpoint = <&panel_dcp_in>;
>> + };
>> + };
>> + };
>> +
>> + dsi@0 {
>> + reg = <0>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + panel@0 {
>> + compatible = "novatek,nt37801";
>> + reg = <0>;
>> +
>> + vddio-supply = <&vreg_l12b_1p8>;
>> + vci-supply = <&vreg_l13b_3p0>;
>> + vdd-supply = <&display_panel_vdd>;
>> + reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>;
>> +
>> + port {
>> + panel_dcp_in: endpoint {
>> + remote-endpoint = <&dcp_intf0_out>;
>> + };
>> + };
>> + };
>> + };
>> + };
>> + };
>>
>> --
>> 2.43.0
>>
next prev parent reply other threads:[~2026-11-11 7:09 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 6:21 [PATCH v2 00/23] drm/msm/dcp: Add Qualcomm DCP display support Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 01/23] dt-bindings: display: msm: Add Qualcomm DCP Jayant Shekhar
2026-10-26 9:57 ` Dmitry Baryshkov
2026-11-11 7:08 ` Jayant Shekhar [this message]
2026-10-26 19:44 ` Rob Herring (Arm)
2026-11-11 7:10 ` Jayant Shekhar
2026-10-27 8:36 ` Krzysztof Kozlowski
2026-11-11 7:13 ` Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 02/23] drm/msm/dcp: Add HFI packet helpers Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 03/23] drm/msm/dcp: Add HFI device definitions Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 04/23] drm/msm/dcp: Add HFI display definitions Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 05/23] drm/msm/dcp: Add HFI panel definitions Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 06/23] drm/msm/dcp: Add HFI VirtIO transport Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 07/23] drm/msm/dcp: Handle asynchronous HFI responses Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 08/23] drm/msm/dcp: Add IPCC power notifications Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 09/23] drm/msm/dcp: Add generic HFI display commands Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 10/23] drm/msm/dcp: Add HFI DSI and panel commands Jayant Shekhar
2026-10-27 11:06 ` Dmitry Baryshkov
2026-11-11 7:16 ` Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 11/23] drm/msm/dcp: Add DCP CRTCs and shared plane state Jayant Shekhar
2026-10-26 10:49 ` Dmitry Baryshkov
2026-10-26 6:21 ` [PATCH v2 12/23] drm/msm/dcp: Add DCP planes Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 13/23] drm/msm/dcp: Route HFI display events Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 14/23] drm/msm/dcp: Add DCP encoder Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 15/23] drm/msm/dcp: Add DCP DSI host and panel support Jayant Shekhar
2026-10-26 11:08 ` Dmitry Baryshkov
2026-11-11 7:21 ` Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 16/23] drm/msm/dcp: Integrate the DSI bridge with KMS Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 17/23] drm/msm/dcp: Register DCP display pipeline Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 18/23] virtio: Add Qualcomm Platform Services Firmware Interface ID Jayant Shekhar
2026-10-26 9:59 ` Dmitry Baryshkov
2026-10-26 10:27 ` Michael S. Tsirkin
2026-10-26 6:21 ` [PATCH v2 19/23] drm/msm/dcp: Add Qualcomm VirtIO transport wrapper Jayant Shekhar
2026-10-26 10:07 ` Dmitry Baryshkov
2026-11-11 7:22 ` Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 20/23] drm/msm/dcp: Add DCP VirtIO driver Jayant Shekhar
2026-10-26 10:15 ` Dmitry Baryshkov
2026-11-11 7:24 ` Jayant Shekhar
2026-10-26 6:21 ` [PATCH v2 21/23] drm/msm: Support KMS backends without a display IRQ Jayant Shekhar
2026-10-27 11:37 ` Dmitry Baryshkov
2026-10-26 6:21 ` [PATCH v2 22/23] drm/msm: Register the DCP backend Jayant Shekhar
2026-10-27 11:38 ` Dmitry Baryshkov
2026-10-26 6:21 ` [PATCH v2 23/23] arm64: dts: qcom: hawi: Add DCP support Jayant Shekhar
2026-10-27 11:44 ` Dmitry Baryshkov
2026-10-27 11:58 ` [PATCH v2 00/23] drm/msm/dcp: Add Qualcomm DCP display support Dmitry Baryshkov
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=0bf2075b-e507-4b81-a563-f7b4e7e2cbc1@oss.qualcomm.com \
--to=jayant.shekhar@oss.qualcomm.com \
--cc=abelvesa@kernel.org \
--cc=abhinav.kumar@linux.dev \
--cc=airlied@gmail.com \
--cc=andersson@kernel.org \
--cc=christian.koenig@amd.com \
--cc=conor+dt@kernel.org \
--cc=devicetree@vger.kernel.org \
--cc=dmitry.baryshkov@oss.qualcomm.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=eperezma@redhat.com \
--cc=flemin.jose@oss.qualcomm.com \
--cc=freedreno@lists.freedesktop.org \
--cc=iommu@lists.linux.dev \
--cc=jasowangio@gmail.com \
--cc=jesszhan0024@gmail.com \
--cc=joro@8bytes.org \
--cc=konradybcio@kernel.org \
--cc=krzk+dt@kernel.org \
--cc=linaro-mm-sig@lists.linaro.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=lumag@kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mahap@oss.qualcomm.com \
--cc=marijn.suijten@somainline.org \
--cc=mripard@kernel.org \
--cc=mst@redhat.com \
--cc=phasta@kernel.org \
--cc=robh@kernel.org \
--cc=robin.clark@oss.qualcomm.com \
--cc=robin.murphy@arm.com \
--cc=sean@poorly.run \
--cc=simona@ffwll.ch \
--cc=sumit.semwal@linaro.org \
--cc=tzimmermann@suse.de \
--cc=virtualization@lists.linux.dev \
--cc=will@kernel.org \
--cc=xuanzhuo@linux.alibaba.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
all inboxes | Powered by JetHome®