From: Sascha Hauer <s.hauer@pengutronix.de>
To: linuxppc-dev@lists.ozlabs.org, Anatolij Gustschin <agust@denx.de>,
Mike Turquette <mturquette@linaro.org>,
linux-arm-kernel@lists.infradead.org,
devicetree-discuss@lists.ozlabs.org, Detlev Zundel <dzu@denx.de>,
Wolfram Sang <wsa@the-dreams.de>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Rob Herring <rob.herring@calxeda.com>,
Mark Brown <broonie@kernel.org>,
Marc Kleine-Budde <mkl@pengutronix.de>,
David Woodhouse <dwmw2@infradead.org>,
Wolfgang Grandegger <wg@grandegger.com>,
Mauro Carvalho Chehab <m.chehab@samsung.com>
Subject: Re: [PATCH v1 05/24] clk: wrap I/O access for improved portability
Date: Thu, 18 Jul 2013 10:06:57 +0200 [thread overview]
Message-ID: <20130718080657.GI10380@pengutronix.de> (raw)
In-Reply-To: <20130718070402.GO7080@book.gsilab.sittig.org>
On Thu, Jul 18, 2013 at 09:04:02AM +0200, Gerhard Sittig wrote:
> On Mon, Jul 15, 2013 at 21:38 +0200, Sascha Hauer wrote:
> >
> > On Mon, Jul 15, 2013 at 08:47:34PM +0200, Gerhard Sittig wrote:
> > > diff --git a/drivers/clk/clk-divider.c b/drivers/clk/clk-divider.c
> > > index 6d55eb2..2c07061 100644
> > > --- a/drivers/clk/clk-divider.c
> > > +++ b/drivers/clk/clk-divider.c
> > > @@ -104,7 +104,7 @@ static unsigned long clk_divider_recalc_rate(struct clk_hw *hw,
> > > struct clk_divider *divider = to_clk_divider(hw);
> > > unsigned int div, val;
> > >
> > > - val = readl(divider->reg) >> divider->shift;
> > > + val = clk_readl(divider->reg) >> divider->shift;
> > > val &= div_mask(divider);
> >
> > Would it be an option to use regmap for the generic dividers/muxes
> > instead? This should be suitable for ppc and also for people who want to
> > use the generic clocks on i2c devices.
>
> Some other thought crossed my mind regarding access to clock
> control registers that reside behind some communication channel
> like I2C:
>
> The common clock API assumes (it's part of the contract) that
> there are potentially expensive operations like get, put, prepare
> and unprepare, as well as swift and non-blocking operations like
> enable and disable.
>
> Would the regmap abstraction hide the potentially blocking nature
> of a register access (I understand that you can implement "local"
> as well as "remote" register sets by this mechanism)? Or could
> you still meet the assumptions or requirements of the common
> clock API?
>
> It might as well be the responsibility of the clock driver's
> implementor to arrange for the availability of non-blocking
> enable/disable operations, just as it is today. Such that
> expensive register access need not be forbidden in general.
regmap for mmio uses a spinlock for read/modify/write operations, just
like you have to use a spinlock in the common clk dividers/gates. This
part wouldn't change with regmap.
For i2c connected clocks where a spinlock doesn't work due to the
nonatomic nature of i2c devices we would have to move the enable/disble
stuff to prepare/unprepare in the common gate code. This can be left
for someone who works on i2c clocks though.
I think regmap has the potential to solve a number of issues like the
hardcoded readl/writel in the common clock blocks, issues with i2c
clocks and your endianess issue. The biggest question probably is how
to get there without putting too much of a burden on you. It's probably
not an option to convert all users to regmap, so it seems additional
functions like clk_register_gate_regmap are better to handle.
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
next prev parent reply other threads:[~2013-07-18 8:07 UTC|newest]
Thread overview: 190+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-15 18:47 [PATCH v1 00/24] add COMMON_CLK support for PowerPC MPC512x Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 01/24] spi: mpc512x: prepare clocks before enabling them Gerhard Sittig
2013-07-15 20:17 ` Mark Brown
2013-07-17 11:22 ` Gerhard Sittig
2013-07-17 12:07 ` Mark Brown
2013-07-17 14:26 ` Gerhard Sittig
2013-07-17 16:53 ` Mark Brown
2013-07-15 18:47 ` [PATCH v1 02/24] serial: " Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 03/24] mtd: mpc5121_nfc: " Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 04/24] powerpc: mpc512x: array decl for MCLK registers in CCM Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 05/24] clk: wrap I/O access for improved portability Gerhard Sittig
2013-07-15 19:38 ` Sascha Hauer
2013-07-17 12:07 ` Gerhard Sittig
2013-07-18 7:04 ` Gerhard Sittig
2013-07-18 8:06 ` Sascha Hauer [this message]
2013-07-18 10:08 ` Mark Brown
2013-07-18 9:17 ` Russell King - ARM Linux
2013-07-18 17:47 ` Nicolas Pitre
2013-08-02 22:09 ` Mike Turquette
2013-07-15 18:47 ` [PATCH v1 06/24] dts: mpc512x: prepare for preprocessor support Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 07/24] dts: mpc512x: introduce dt-bindings/clock/ header Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 08/24] dts: mpc512x: add clock related device tree specs Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 09/24] clk: mpc512x: introduce COMMON_CLK for MPC512x Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 10/24] dts: mpc512x: add clock specs for client lookups Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 11/24] net: can: mscan: add a comment on reg to idx mapping Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 12/24] net: can: mscan: make mpc512x code use common clock Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 13/24] spi: mpc512x: OF clock lookup, use the 'mclk' name Gerhard Sittig
2013-07-15 18:47 ` [PATCH v1 14/24] powerpc/mpc512x: improve DIU related clock setup Gerhard Sittig
2013-07-15 21:46 ` [PATCH v1 15/24] serial: mpc512x: OF clock lookup, use the 'mclk' name Gerhard Sittig
2013-07-15 21:54 ` Sascha Hauer
2013-07-17 11:27 ` Gerhard Sittig
2013-07-16 6:05 ` [PATCH v1 16/24] clk: mpc512x: remove now obsolete clkdev registration Gerhard Sittig
2013-07-16 6:05 ` [PATCH v1 17/24] serial: mpc512x: setup the PSC FIFO clock as well Gerhard Sittig
2013-07-16 6:05 ` [PATCH v1 18/24] i2c: mpc: OF clock lookup for MPC512x Gerhard Sittig
2013-07-16 6:05 ` [PATCH v1 19/24] USB: fsl-mph-dr-of: OF clock lookup, prepare and enable Gerhard Sittig
2013-07-16 6:05 ` [PATCH v1 20/24] fs_enet: OF clock lookup (non-fatal), " Gerhard Sittig
2013-07-16 8:45 ` [PATCH v1 21/24] [media] fsl-viu: OF clock lookup, prepare before enable Gerhard Sittig
2013-07-16 8:45 ` [PATCH v1 22/24] powerpc/fsl-pci: " Gerhard Sittig
2013-07-16 8:45 ` [PATCH v1 23/24] clk: mpc512x: switch to COMMON_CLK, remove PPC_CLOCK Gerhard Sittig
2013-07-16 8:45 ` [PATCH v1 24/24] net: can: mscan: remove MPC512x non-COMMON_CLK code path Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 00/24] add COMMON_CLK support for PowerPC MPC512x Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 01/24] spi: mpc512x: cleanup clock API use Gerhard Sittig
2013-07-18 20:49 ` Mark Brown
2013-07-18 17:00 ` [PATCH v2 02/24] serial: " Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 03/24] mtd: mpc5121_nfc: prepare clocks before enabling them Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 04/24] powerpc: mpc512x: array decl for MCLK registers in CCM Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 05/24] clk: wrap I/O access for improved portability Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 06/24] dts: mpc512x: prepare for preprocessor support Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 07/24] dts: mpc512x: introduce dt-bindings/clock/ header Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 08/24] dts: mpc512x: add clock related device tree specs Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 09/24] clk: mpc512x: introduce COMMON_CLK for MPC512x Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 10/24] dts: mpc512x: add clock specs for client lookups Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 11/24] spi: mpc512x: remove now obsolete clock lookup name Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 12/24] serial: " Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 13/24] clk: mpc512x: remove now obsolete clkdev registration Gerhard Sittig
2013-07-18 17:00 ` [PATCH v2 14/24] serial: mpc512x: setup the PSC FIFO clock as well Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 15/24] net: can: mscan: add a comment on reg to idx mapping Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 16/24] net: can: mscan: make mpc512x code use common clock Gerhard Sittig
2013-07-19 7:34 ` Marc Kleine-Budde
2013-07-19 9:41 ` Gerhard Sittig
2013-07-19 10:46 ` Marc Kleine-Budde
2013-07-18 20:20 ` [PATCH v2 17/24] powerpc/mpc512x: improve DIU related clock setup Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 18/24] i2c: mpc: OF clock lookup for MPC512x Gerhard Sittig
2013-07-18 20:33 ` Russell King - ARM Linux
2013-07-19 8:42 ` Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 19/24] USB: fsl-mph-dr-of: OF clock lookup, prepare and enable Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 20/24] fs_enet: OF clock lookup (non-fatal), " Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 21/24] [media] fsl-viu: OF clock lookup, prepare before enable Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 22/24] powerpc/fsl-pci: " Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 23/24] clk: mpc512x: switch to COMMON_CLK, remove PPC_CLOCK Gerhard Sittig
2013-07-18 20:20 ` [PATCH v2 24/24] net: can: mscan: remove MPC512x non-COMMON_CLK code path Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 00/31] add COMMON_CLK support for PowerPC MPC512x Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 01/31] spi: mpc512x: cleanup clock API use Gerhard Sittig
2013-07-22 14:09 ` Mark Brown
2013-07-23 11:58 ` Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 02/31] serial: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 03/31] USB: fsl-mph-dr-of: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 04/31] mtd: mpc5121_nfc: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 05/31] [media] fsl-viu: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 06/31] i2c: mpc: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 07/31] fs_enet: silence a build warning (unused variable) Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 08/31] fs_enet: cleanup clock API use Gerhard Sittig
2013-07-22 12:28 ` Marc Kleine-Budde
2013-07-22 12:14 ` [PATCH v3 09/31] powerpc/fsl-pci: improve " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 10/31] net: can: mscan: add a comment on reg to idx mapping Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 11/31] net: can: mscan: improve clock API use Gerhard Sittig
2013-07-22 12:31 ` Marc Kleine-Budde
2013-07-23 11:53 ` Gerhard Sittig
2013-07-23 12:33 ` Marc Kleine-Budde
2013-08-03 17:07 ` Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 12/31] powerpc: mpc512x: array decl for MCLK registers in CCM Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 13/31] clk: wrap I/O access for improved portability Gerhard Sittig
2013-08-02 22:30 ` Mike Turquette
2013-08-03 14:08 ` Gerhard Sittig
2013-08-23 22:05 ` Anatolij Gustschin
2013-08-28 0:55 ` Mike Turquette
2013-07-22 12:14 ` [PATCH v3 14/31] dts: mpc512x: prepare for preprocessor support Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 15/31] dts: mpc512x: introduce dt-bindings/clock/ header Gerhard Sittig
2013-08-02 22:43 ` Mike Turquette
2013-08-03 14:19 ` Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 16/31] dts: mpc512x: add clock related device tree specs Gerhard Sittig
2013-08-02 22:46 ` Mike Turquette
2013-07-22 12:14 ` [PATCH v3 17/31] clk: mpc512x: introduce COMMON_CLK for MPC512x Gerhard Sittig
2013-07-23 13:14 ` Gerhard Sittig
2013-08-02 23:30 ` Mike Turquette
2013-08-03 14:39 ` Gerhard Sittig
2013-08-05 17:11 ` Mike Turquette
2013-08-02 23:41 ` Mike Turquette
2013-08-03 15:03 ` Gerhard Sittig
2013-08-05 11:37 ` Mark Rutland
2013-08-05 17:01 ` Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 18/31] dts: mpc512x: add clock specs for client lookups Gerhard Sittig
2013-08-02 23:41 ` Mike Turquette
2013-08-03 15:36 ` Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 19/31] clk: mpc512x: don't pre-enable FEC and I2C clocks Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 20/31] spi: mpc512x: remove now obsolete clock lookup name Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 21/31] serial: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 22/31] clk: mpc512x: remove clkdev registration (uart, spi) Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 23/31] serial: mpc512x: setup the PSC FIFO clock as well Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 24/31] USB: fsl-mph-dr-of: remove now obsolete clock lookup name Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 25/31] mtd: mpc5121_nfc: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 26/31] [media] fsl-viu: " Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 27/31] net: can: mscan: add common clock support for mpc512x Gerhard Sittig
2013-07-22 13:04 ` Marc Kleine-Budde
2013-07-23 12:07 ` Gerhard Sittig
2013-07-23 12:37 ` Marc Kleine-Budde
2013-07-22 12:14 ` [PATCH v3 28/31] powerpc/mpc512x: improve DIU related clock setup Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 29/31] clk: mpc512x: switch to COMMON_CLK, remove PPC_CLOCK Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 30/31] net: can: mscan: remove non-common_clock code for MPC512x Gerhard Sittig
2013-07-22 12:14 ` [PATCH v3 31/31] clk: mpc512x: remove clkdev registration (sys/ref, header) Gerhard Sittig
2013-07-22 12:33 ` [PATCH v3 00/31] add COMMON_CLK support for PowerPC MPC512x Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 " Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 01/31] spi: mpc512x: cleanup clock API use Gerhard Sittig
2013-08-21 19:22 ` Anatolij Gustschin
2013-08-21 19:48 ` Mark Brown
2013-08-21 20:38 ` Anatolij Gustschin
2013-08-22 10:02 ` Mark Brown
2013-08-06 20:43 ` [PATCH v4 02/31] serial: " Gerhard Sittig
2013-08-12 18:27 ` Greg Kroah-Hartman
2013-08-21 19:52 ` Anatolij Gustschin
2013-08-06 20:43 ` [PATCH v4 03/31] USB: fsl-mph-dr-of: " Gerhard Sittig
2013-08-21 20:45 ` Anatolij Gustschin
2013-08-06 20:43 ` [PATCH v4 04/31] mtd: mpc5121_nfc: " Gerhard Sittig
2013-08-23 21:47 ` Anatolij Gustschin
2013-08-06 20:43 ` [PATCH v4 05/31] [media] fsl-viu: " Gerhard Sittig
2013-08-23 21:48 ` Anatolij Gustschin
2013-08-06 20:43 ` [PATCH v4 06/31] i2c: mpc: " Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 07/31] fs_enet: silence a build warning (unused variable) Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 08/31] fs_enet: cleanup clock API use Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 09/31] powerpc/fsl-pci: improve " Gerhard Sittig
2013-08-08 20:12 ` Anatolij Gustschin
2013-08-12 7:57 ` Gerhard Sittig
2013-08-28 12:08 ` Gerhard Sittig
2013-08-28 15:59 ` Gerhard Sittig
2013-08-28 22:10 ` Benjamin Herrenschmidt
2013-08-06 20:43 ` [PATCH v4 10/31] net: can: mscan: add a comment on reg to idx mapping Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 11/31] net: can: mscan: improve clock API use Gerhard Sittig
2013-08-07 7:28 ` Marc Kleine-Budde
2013-08-08 19:50 ` Gerhard Sittig
2013-08-07 7:30 ` Marc Kleine-Budde
2013-08-07 7:35 ` Marc Kleine-Budde
2013-08-06 20:43 ` [PATCH v4 12/31] powerpc: mpc512x: array decl for MCLK registers in CCM Gerhard Sittig
2013-08-23 21:49 ` Anatolij Gustschin
2013-08-06 20:43 ` [PATCH v4 13/31] clk: wrap I/O access for improved portability Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 14/31] dts: mpc512x: prepare for preprocessor support Gerhard Sittig
2013-08-23 22:18 ` Anatolij Gustschin
2013-08-06 20:43 ` [PATCH v4 15/31] dts: mpc512x: introduce dt-bindings/clock/ header Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 16/31] dts: mpc512x: add clock related device tree specs Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 17/31] clk: mpc512x: introduce COMMON_CLK for MPC512x Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 18/31] dts: mpc512x: add clock specs for client lookups Gerhard Sittig
2013-08-06 20:43 ` [PATCH v4 19/31] clk: mpc512x: don't pre-enable FEC and I2C clocks Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 20/31] spi: mpc512x: switch to CCF names in clock lookup Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 21/31] serial: " Gerhard Sittig
2013-08-12 18:27 ` Greg Kroah-Hartman
2013-08-06 20:44 ` [PATCH v4 22/31] clk: mpc512x: remove PSC (UART, SPI) compat workarounds Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 23/31] serial: mpc512x: setup the PSC FIFO clock as well Gerhard Sittig
2013-08-12 18:27 ` Greg Kroah-Hartman
2013-08-06 20:44 ` [PATCH v4 24/31] USB: fsl-mph-dr-of: remove now obsolete clock lookup name Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 25/31] mtd: mpc5121_nfc: " Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 26/31] [media] fsl-viu: " Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 27/31] net: can: mscan: add common clock support for mpc512x Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 28/31] powerpc/mpc512x: improve DIU related clock setup Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 29/31] clk: mpc512x: switch to COMMON_CLK, remove PPC_CLOCK Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 30/31] net: can: mscan: remove non-CCF code for MPC512x Gerhard Sittig
2013-08-06 20:44 ` [PATCH v4 31/31] clk: mpc512x: remove remaining migration workarounds Gerhard Sittig
2013-08-06 21:31 ` [PATCH v4 00/31] add COMMON_CLK support for PowerPC MPC512x Gerhard Sittig
2013-08-07 7:36 ` Gerhard Sittig
2013-08-07 15:40 ` Kumar Gala
2013-08-08 18:41 ` Gerhard Sittig
2013-08-28 13:50 ` Gerhard Sittig
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=20130718080657.GI10380@pengutronix.de \
--to=s.hauer@pengutronix.de \
--cc=agust@denx.de \
--cc=broonie@kernel.org \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=dwmw2@infradead.org \
--cc=dzu@denx.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=m.chehab@samsung.com \
--cc=mkl@pengutronix.de \
--cc=mturquette@linaro.org \
--cc=rob.herring@calxeda.com \
--cc=wg@grandegger.com \
--cc=wsa@the-dreams.de \
/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).