From: "Terje Bergström" <tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
To: Thierry Reding
<thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.org>
Cc: "linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
"dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org"
<dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org>,
"linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org"
<linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org>,
Arto Merilainen
<amerilainen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: [RFC v2 6/8] gpu: drm: tegra: Remove redundant host1x
Date: Wed, 5 Dec 2012 17:43:24 +0200 [thread overview]
Message-ID: <50BF6B9C.3020006@nvidia.com> (raw)
In-Reply-To: <20121205120429.GA29943-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
On 05.12.2012 14:04, Thierry Reding wrote:
> On Wed, Dec 05, 2012 at 01:47:38PM +0200, Terje Bergström wrote:
> Yes, but there's more. For instance I went to great lengths to make sure
> there's no global data whatsoever. So all the data is bound to the
> host1x device in the current code. I know many other drivers like to
> take a shortcut and just put these things into global variables but I
> didn't want to.
Sure, that feedback is in the todo list. For some parts I already have a
proposed solution, but for chip ops not yet.
>> The problem with doing drm_platform_init() with host1x device as
>> parameter is that drm_get_platform_dev() will take control of drvdata.
>> We'd need to put host1x specific struct host1x pointer to some other
>> place and I'm not sure what that place could be.
>
> Not anymore. I submitted a patch so that it no longer does that. The
> patch was merged about a month and a half ago.
Oops, I must've checked the status from a stale tree. Thanks for that.
In this case there's no technical reason why host1x couldn't act as the
device to register for drm, as drm wouldn't touch host1x device data in
any way.
How about if we treat the host1x driver as utility library, and move the
code for host1x probe altogether to tegradrm/host1x.c? I haven't yet
checked how bad the dependencies between host1x's driver's host1x.c and
the rest of the driver are, so I'm not sure if it's feasible and if
there would be a clear design. Just tossing in ideas.
That would solve the circular dependency problem. I've already committed
to contents of host1x.c being very different in downstream and upstream,
so this change would just emphasize that.
Terje
next prev parent reply other threads:[~2012-12-05 15:43 UTC|newest]
Thread overview: 145+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-26 13:19 [RFC v2 0/8] Support for Tegra 2D hardware Terje Bergstrom
2012-11-26 13:19 ` [RFC v2 1/8] video: tegra: Add nvhost driver Terje Bergstrom
[not found] ` <1353935954-13763-2-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-27 10:52 ` Sivaram Nair
2012-11-28 21:23 ` Thierry Reding
[not found] ` <20121128212301.GA25531-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-29 10:21 ` Terje Bergström
[not found] ` <50B73710.2040102-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-29 11:47 ` Thierry Reding
[not found] ` <20121129114704.GB6150-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-29 18:38 ` Stephen Warren
2012-11-30 6:52 ` Thierry Reding
2012-11-30 8:50 ` Lucas Stach
2012-12-01 11:44 ` Terje Bergström
[not found] ` <50B9EDA9.2000500-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-01 15:10 ` Thierry Reding
[not found] ` <20121201151020.GC18209-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-01 16:55 ` Terje Bergström
[not found] ` <50BA3668.1010504-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-01 17:34 ` Lucas Stach
2012-12-01 19:29 ` Terje Bergström
[not found] ` <50BA5AB2.8000604-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-01 21:42 ` Dave Airlie
[not found] ` <CAPM=9tzUYkMZhwReSDLxvMYvgDmXukajm8EMqtzqmcNeD+oMAw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-01 22:39 ` Thierry Reding
2012-12-02 11:24 ` Terje Bergström
[not found] ` <50BB3A5D.6070304-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-02 20:55 ` Thierry Reding
[not found] ` <20121202205527.GA22086-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-03 6:26 ` Terje Bergström
2012-11-30 8:56 ` Terje Bergström
[not found] ` <50B874C7.5030208-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-30 10:38 ` Thierry Reding
[not found] ` <20121130103850.GA28367-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-01 11:31 ` Terje Bergström
2012-12-01 13:42 ` Daniel Vetter
[not found] ` <CAKMK7uGnm7M5ad=aeCNiFLYXbJZ9Nx-vsGrstjt5_3BcrqWVqA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-01 16:22 ` Terje Bergström
[not found] ` <50B9EA76.10803-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-01 14:58 ` Thierry Reding
[not found] ` <20121201145814.GB18209-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-01 17:13 ` Terje Bergström
2012-12-03 19:23 ` Stephen Warren
[not found] ` <50BCFC34.5030203-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-04 21:31 ` Thierry Reding
2012-12-03 19:20 ` Stephen Warren
2012-12-03 21:03 ` Thierry Reding
[not found] ` <20121203210328.GA20884-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-04 2:08 ` Mark Zhang
2012-12-04 2:11 ` Mark Zhang
2012-12-04 6:17 ` Terje Bergström
2012-11-29 18:34 ` Stephen Warren
2012-11-30 6:54 ` Terje Bergström
2012-11-30 6:53 ` Thierry Reding
2012-11-29 9:10 ` [RFC,v2,1/8] " Mark Zhang
2012-12-10 10:28 ` Terje Bergström
2012-11-26 13:19 ` [RFC v2 5/8] ARM: tegra: Add auxiliary data for nvhost Terje Bergstrom
[not found] ` <1353935954-13763-6-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-26 23:39 ` Stephen Warren
[not found] ` <50B3FDCC.7080709-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-11-27 6:33 ` Terje Bergström
[not found] ` <50B45EA8.7000502-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-27 17:17 ` Stephen Warren
[not found] ` <1353935954-13763-1-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-26 13:19 ` [RFC v2 2/8] video: tegra: Add syncpoint wait and interrupts Terje Bergstrom
2012-11-27 11:02 ` Sivaram Nair
2012-11-29 8:44 ` Thierry Reding
[not found] ` <20121129084400.GA28781-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-29 10:39 ` Terje Bergström
2012-11-30 7:22 ` Thierry Reding
[not found] ` <20121130072200.GE26474-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-30 7:41 ` Terje Bergström
2012-11-29 18:41 ` Stephen Warren
2012-11-30 7:23 ` Thierry Reding
2012-11-26 13:19 ` [RFC v2 3/8] video: tegra: host: Add channel and client support Terje Bergstrom
[not found] ` <1353935954-13763-4-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-29 10:01 ` [RFC,v2,3/8] " Mark Zhang
[not found] ` <50B7325F.20002-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-11-29 10:46 ` Terje Bergström
2012-11-30 6:13 ` Mark Zhang
2012-11-29 10:04 ` [RFC v2 3/8] " Thierry Reding
[not found] ` <20121129100405.GB28781-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-29 11:00 ` Terje Bergström
[not found] ` <50B74058.9020904-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-30 7:46 ` Thierry Reding
2012-11-26 13:19 ` [RFC v2 4/8] video: tegra: Add debug support Terje Bergstrom
2012-11-26 13:19 ` [RFC v2 6/8] gpu: drm: tegra: Remove redundant host1x Terje Bergstrom
[not found] ` <1353935954-13763-7-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 8:33 ` Thierry Reding
[not found] ` <20121205083335.GA20984-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-05 10:10 ` Terje Bergström
[not found] ` <50BF1DAA.8030805-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 11:13 ` Thierry Reding
[not found] ` <20121205111332.GA25676-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-05 11:47 ` Terje Bergström
[not found] ` <50BF345A.8050201-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-05 12:02 ` Lucas Stach
2012-12-05 12:04 ` Thierry Reding
[not found] ` <20121205120429.GA29943-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-05 15:43 ` Terje Bergström [this message]
2012-12-10 11:42 ` Terje Bergström
[not found] ` <50C5CAB5.3040000-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-12 16:08 ` Thierry Reding
[not found] ` <20121212160829.GA30278-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-12 16:56 ` Terje Bergström
2012-12-13 8:48 ` Terje Bergström
2012-12-13 8:57 ` Thierry Reding
[not found] ` <20121213085750.GA14740-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-13 17:58 ` Stephen Warren
[not found] ` <50CA175F.60002-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-13 20:32 ` Thierry Reding
2012-12-14 6:09 ` Terje Bergström
2012-12-14 16:21 ` Stephen Warren
[not found] ` <50CB5205.1030303-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-14 19:59 ` Terje Bergström
[not found] ` <50CB850F.9090704-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-16 12:16 ` Thierry Reding
[not found] ` <20121216121603.GA31780-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-16 16:37 ` Terje Bergström
[not found] ` <50CDF8C4.4070108-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-17 20:55 ` Stephen Warren
[not found] ` <50CF86D1.7090303-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-18 6:37 ` Terje Bergström
2012-12-20 9:17 ` Terje Bergström
[not found] ` <50D2D792.1050401-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 17:14 ` Stephen Warren
[not found] ` <50D34775.5010606-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-20 17:46 ` Terje Bergström
[not found] ` <50D34F00.4080308-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 17:55 ` Stephen Warren
[not found] ` <50D3511F.2090308-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-20 18:01 ` Terje Bergström
[not found] ` <50D35287.3040509-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 20:30 ` Thierry Reding
[not found] ` <20121220203059.GA12977-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-20 21:34 ` Terje Bergström
[not found] ` <50D38462.3060302-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-20 21:50 ` Thierry Reding
[not found] ` <20121220215008.GA30491-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-20 22:29 ` Stephen Warren
2012-12-20 22:28 ` Stephen Warren
[not found] ` <50D39122.3060401-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-12-21 6:31 ` Terje Bergström
2012-12-21 8:57 ` Arto Merilainen
[not found] ` <50D42486.7080901-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-12-21 21:19 ` Stephen Warren
[not found] ` <50D4D25B.7030506-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-02 5:41 ` Terje Bergström
2013-01-04 10:09 ` Terje Bergström
[not found] ` <50E6AA69.4030001-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-04 20:25 ` Stephen Warren
[not found] ` <50E73AA2.7090500-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-01-07 8:20 ` Terje Bergström
[not found] ` <50EA8533.3020109-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-01-07 17:07 ` Stephen Warren
2013-01-15 11:30 ` Thierry Reding
[not found] ` <20130115113049.GB18119-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2013-01-15 11:41 ` Terje Bergström
2012-12-05 12:03 ` Daniel Vetter
[not found] ` <CAKMK7uGPf=TEW8DL-K1KYPhMZALTZhFsSb2DBxDVgFct1kUjSA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-05 12:08 ` Daniel Vetter
2012-12-05 12:22 ` Thierry Reding
[not found] ` <20121205122209.GB29943-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-05 12:31 ` Daniel Vetter
[not found] ` <CAKMK7uFy=Hkqqqom=yOZ8dgSGjRT4JCJuJK7coJ+i=OyovKcYQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-05 13:28 ` Thierry Reding
[not found] ` <20121205132843.GA2834-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-05 16:34 ` Daniel Vetter
[not found] ` <CAKMK7uG2OHOmH8OJJmZ4uoNWwoeA0wRyiE4VdR9C3ajC1ZBZDw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-05 20:44 ` Thierry Reding
2012-11-26 13:19 ` [RFC v2 7/8] gpu: drm: tegra: Prime support Terje Bergstrom
2012-12-01 14:45 ` [RFC v2 0/8] Support for Tegra 2D hardware Thierry Reding
[not found] ` <20121201144512.GA18209-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-12-01 17:08 ` Terje Bergström
2012-12-01 19:29 ` Thierry Reding
2012-11-26 13:19 ` [RFC v2 8/8] drm: tegra: Add gr2d device Terje Bergstrom
[not found] ` <1353935954-13763-9-git-send-email-tbergstrom-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-26 21:59 ` Rob Clark
2012-11-26 22:15 ` Dave Airlie
[not found] ` <CAPM=9tzvt3J6D3zLPV97w629q62CNhAxX8V+_JZ6kmXxxz5fVg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-27 6:52 ` Terje Bergström
[not found] ` <50B46336.8030605-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-27 7:33 ` Dave Airlie
[not found] ` <CAPM=9txCuPJcFAfD7Hu5o2BVFK=pVah7B8HhG0ctLCyFPwNEnA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-27 8:16 ` Terje Bergström
[not found] ` <50B476E1.4070403-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-27 8:32 ` Dave Airlie
[not found] ` <CAPM=9tysiK6LgnQdAwGSYfxnQfgcfRm0+X2tPSAEDxUPt-QZGA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-27 8:45 ` Terje Bergström
[not found] ` <50B47DA8.60609-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-27 10:22 ` Lucas Stach
2012-11-27 10:37 ` Thierry Reding
[not found] ` <20121127103739.GA3329-RM9K5IK7kjIyiCvfTdI0JKcOhU4Rzj621B7CTYaBSLdn68oJJulU0Q@public.gmane.org>
2012-11-27 11:31 ` Terje Bergström
[not found] ` <50B4A483.8030305-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-27 11:47 ` Lucas Stach
2012-11-27 12:59 ` Terje Bergström
2012-11-27 23:00 ` Dave Airlie
[not found] ` <CAPM=9tz=_0Drx3=Me3EQdPgBvYVGzs6Gnqaw6RBaTLsCG24RAg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-11-28 13:17 ` Terje Bergström
[not found] ` <50B60EFF.1050703-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-28 13:33 ` Lucas Stach
2012-11-28 13:57 ` Terje Bergström
2012-11-28 14:06 ` Lucas Stach
2012-11-28 14:45 ` Terje Bergström
[not found] ` <50B6237B.8010808-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-28 15:13 ` Lucas Stach
2012-11-28 16:23 ` Terje Bergström
[not found] ` <50B63A70.8020107-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-28 18:46 ` Lucas Stach
2012-11-29 8:17 ` Terje Bergström
[not found] ` <50B71A28.5060807-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2012-11-29 9:09 ` Lucas Stach
2012-11-29 12:14 ` Thierry Reding
2012-11-30 7:44 ` Terje Bergström
2012-11-30 7:53 ` Lucas Stach
2012-11-29 13:36 ` Terje Bergström
2012-11-28 16:24 ` Stephen Warren
2012-11-28 20:53 ` Thomas Hellstrom
2012-12-03 9:30 ` Mark Zhang
2012-12-03 9:40 ` Daniel Vetter
[not found] ` <CAKMK7uF-sQ-HzA2Zek4VzWky=69LA3JqJR_+kyRQEO-JgwPQXQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-12-04 1:49 ` Mark Zhang
2012-11-29 7:37 ` [RFC,v2,8/8] " Mark Zhang
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=50BF6B9C.3020006@nvidia.com \
--to=tbergstrom-ddmlm1+adcrqt0dzr+alfa@public.gmane.org \
--cc=amerilainen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
--cc=dri-devel-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-tegra-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=thierry.reding-RM9K5IK7kjKj5M59NBduVrNAH6kLmebB@public.gmane.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 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).