From: Corentin LABBE <clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>,
Vladimir Zapolskiy <vz-ChpfBGZJDbMAvxtiuMwx3w@public.gmane.org>
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org,
pawel.moll-5wv7dgnIgG8@public.gmane.org,
mark.rutland-5wv7dgnIgG8@public.gmane.org,
ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org,
galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org,
maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org,
linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org,
herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org,
davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org,
akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org,
mchehab-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org,
crope-X3B1VOXEql0@public.gmane.org,
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org,
linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org
Subject: Re: [PATCH v5 4/4] crypto: Add Allwinner Security System crypto accelerator
Date: Tue, 21 Oct 2014 18:39:40 +0200 [thread overview]
Message-ID: <54468C4C.3030204@gmail.com> (raw)
In-Reply-To: <1413849173.5407.6.camel-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
Le 21/10/2014 01:52, Joe Perches a écrit :
> On Tue, 2014-10-21 at 02:28 +0300, Vladimir Zapolskiy wrote:
>> On 19.10.2014 17:16, LABBE Corentin wrote:
>>> Add support for the Security System included in Allwinner SoC A20.
>>> The Security System is a hardware cryptographic accelerator that support AES/MD5/SHA1/DES/3DES/PRNG algorithms.
> []
>>> diff --git a/drivers/crypto/sunxi-ss/sunxi-ss-core.c b/drivers/crypto/sunxi-ss/sunxi-ss-core.c
> []
>>> + cr = clk_get_rate(ss->busclk);
>>> + if (cr >= cr_ahb)
>>> + dev_dbg(&pdev->dev, "Clock bus %lu (%lu MHz) (must be >= %lu)\n",
>>> + cr, cr / 1000000, cr_ahb);
>>> + else
>>> + dev_warn(&pdev->dev, "Clock bus %lu (%lu MHz) (must be >= %lu)\n",
>>> + cr, cr / 1000000, cr_ahb);
>>
>> See next comment.
>>
>>> + cr = clk_get_rate(ss->ssclk);
>>> + if (cr <= cr_mod)
>>> + if (cr < cr_mod)
>>> + dev_info(&pdev->dev, "Clock ss %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>> + else
>>> + dev_dbg(&pdev->dev, "Clock ss %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>> + else
>>> + dev_warn(&pdev->dev, "Clock ss is at %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>
>> The management of kernel log levels looks pretty strange. As far as I
>> understand there is no error on any clock rate, I'd recommend to keep
>> only one information message.
>
> And if not, please add some braces.
>
>> hash_init: initialize request context */
>>> +int sunxi_hash_init(struct ahash_request *areq)
>>> +{
>>> + const char *hash_type;
>>> + struct sunxi_req_ctx *op = ahash_request_ctx(areq);
>>> +
>>> + memset(op, 0, sizeof(struct sunxi_req_ctx));
>>> +
>>> + hash_type = crypto_tfm_alg_name(areq->base.tfm);
>>> +
>>> + if (strcmp(hash_type, "sha1") == 0)
>>> + op->mode = SS_OP_SHA1;
>>> + if (strcmp(hash_type, "md5") == 0)
>>> + op->mode = SS_OP_MD5;
>
> else if ?
>
>>> + if (op->mode == 0)
>>> + return -EINVAL;
>
> maybe this?
>
> if (!strcmp(hash_type, "sha1"))
> op->mode = SS_OP_SHA1;
> else if (!strcmp(hash_type, "md5"))
> op->mode = SH_OP_MD5;
> else
> return -EINVAL;
>
Ok it is better
>>> +
>>> + return 0;
>>> +}
> []
>>> +int sunxi_hash_update(struct ahash_request *areq)
>>> +{
> []
>>> + dev_dbg(ss->dev, "%s %s bc=%llu len=%u mode=%x bw=%u ww=%u",
>>> + __func__, crypto_tfm_alg_name(areq->base.tfm),
>>> + op->byte_count, areq->nbytes, op->mode,
>>> + op->nbw, op->nwait);
>
> dev_dbg statements generally don't need __func__ as
> dynamic_debug can add it.
>
> If you want to keep it, the most common output form for
> __func__ is '"%s: ...", __func__'
>
It is a big debug that I forgot to remove but I fixed that in other dev_dbg
thanks
--
You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit https://groups.google.com/d/optout.
WARNING: multiple messages have this Message-ID (diff)
From: clabbe.montjoie@gmail.com (Corentin LABBE)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v5 4/4] crypto: Add Allwinner Security System crypto accelerator
Date: Tue, 21 Oct 2014 18:39:40 +0200 [thread overview]
Message-ID: <54468C4C.3030204@gmail.com> (raw)
In-Reply-To: <1413849173.5407.6.camel@perches.com>
Le 21/10/2014 01:52, Joe Perches a ?crit :
> On Tue, 2014-10-21 at 02:28 +0300, Vladimir Zapolskiy wrote:
>> On 19.10.2014 17:16, LABBE Corentin wrote:
>>> Add support for the Security System included in Allwinner SoC A20.
>>> The Security System is a hardware cryptographic accelerator that support AES/MD5/SHA1/DES/3DES/PRNG algorithms.
> []
>>> diff --git a/drivers/crypto/sunxi-ss/sunxi-ss-core.c b/drivers/crypto/sunxi-ss/sunxi-ss-core.c
> []
>>> + cr = clk_get_rate(ss->busclk);
>>> + if (cr >= cr_ahb)
>>> + dev_dbg(&pdev->dev, "Clock bus %lu (%lu MHz) (must be >= %lu)\n",
>>> + cr, cr / 1000000, cr_ahb);
>>> + else
>>> + dev_warn(&pdev->dev, "Clock bus %lu (%lu MHz) (must be >= %lu)\n",
>>> + cr, cr / 1000000, cr_ahb);
>>
>> See next comment.
>>
>>> + cr = clk_get_rate(ss->ssclk);
>>> + if (cr <= cr_mod)
>>> + if (cr < cr_mod)
>>> + dev_info(&pdev->dev, "Clock ss %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>> + else
>>> + dev_dbg(&pdev->dev, "Clock ss %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>> + else
>>> + dev_warn(&pdev->dev, "Clock ss is at %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>
>> The management of kernel log levels looks pretty strange. As far as I
>> understand there is no error on any clock rate, I'd recommend to keep
>> only one information message.
>
> And if not, please add some braces.
>
>> hash_init: initialize request context */
>>> +int sunxi_hash_init(struct ahash_request *areq)
>>> +{
>>> + const char *hash_type;
>>> + struct sunxi_req_ctx *op = ahash_request_ctx(areq);
>>> +
>>> + memset(op, 0, sizeof(struct sunxi_req_ctx));
>>> +
>>> + hash_type = crypto_tfm_alg_name(areq->base.tfm);
>>> +
>>> + if (strcmp(hash_type, "sha1") == 0)
>>> + op->mode = SS_OP_SHA1;
>>> + if (strcmp(hash_type, "md5") == 0)
>>> + op->mode = SS_OP_MD5;
>
> else if ?
>
>>> + if (op->mode == 0)
>>> + return -EINVAL;
>
> maybe this?
>
> if (!strcmp(hash_type, "sha1"))
> op->mode = SS_OP_SHA1;
> else if (!strcmp(hash_type, "md5"))
> op->mode = SH_OP_MD5;
> else
> return -EINVAL;
>
Ok it is better
>>> +
>>> + return 0;
>>> +}
> []
>>> +int sunxi_hash_update(struct ahash_request *areq)
>>> +{
> []
>>> + dev_dbg(ss->dev, "%s %s bc=%llu len=%u mode=%x bw=%u ww=%u",
>>> + __func__, crypto_tfm_alg_name(areq->base.tfm),
>>> + op->byte_count, areq->nbytes, op->mode,
>>> + op->nbw, op->nwait);
>
> dev_dbg statements generally don't need __func__ as
> dynamic_debug can add it.
>
> If you want to keep it, the most common output form for
> __func__ is '"%s: ...", __func__'
>
It is a big debug that I forgot to remove but I fixed that in other dev_dbg
thanks
WARNING: multiple messages have this Message-ID (diff)
From: Corentin LABBE <clabbe.montjoie@gmail.com>
To: Joe Perches <joe@perches.com>, Vladimir Zapolskiy <vz@mleia.com>
Cc: robh+dt@kernel.org, pawel.moll@arm.com, mark.rutland@arm.com,
ijc+devicetree@hellion.org.uk, galak@codeaurora.org,
maxime.ripard@free-electrons.com, linux@arm.linux.org.uk,
herbert@gondor.apana.org.au, davem@davemloft.net,
grant.likely@linaro.org, akpm@linux-foundation.org,
gregkh@linuxfoundation.org, mchehab@osg.samsung.com,
crope@iki.fi, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-sunxi@googlegroups.com,
linux-crypto@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH v5 4/4] crypto: Add Allwinner Security System crypto accelerator
Date: Tue, 21 Oct 2014 18:39:40 +0200 [thread overview]
Message-ID: <54468C4C.3030204@gmail.com> (raw)
In-Reply-To: <1413849173.5407.6.camel@perches.com>
Le 21/10/2014 01:52, Joe Perches a écrit :
> On Tue, 2014-10-21 at 02:28 +0300, Vladimir Zapolskiy wrote:
>> On 19.10.2014 17:16, LABBE Corentin wrote:
>>> Add support for the Security System included in Allwinner SoC A20.
>>> The Security System is a hardware cryptographic accelerator that support AES/MD5/SHA1/DES/3DES/PRNG algorithms.
> []
>>> diff --git a/drivers/crypto/sunxi-ss/sunxi-ss-core.c b/drivers/crypto/sunxi-ss/sunxi-ss-core.c
> []
>>> + cr = clk_get_rate(ss->busclk);
>>> + if (cr >= cr_ahb)
>>> + dev_dbg(&pdev->dev, "Clock bus %lu (%lu MHz) (must be >= %lu)\n",
>>> + cr, cr / 1000000, cr_ahb);
>>> + else
>>> + dev_warn(&pdev->dev, "Clock bus %lu (%lu MHz) (must be >= %lu)\n",
>>> + cr, cr / 1000000, cr_ahb);
>>
>> See next comment.
>>
>>> + cr = clk_get_rate(ss->ssclk);
>>> + if (cr <= cr_mod)
>>> + if (cr < cr_mod)
>>> + dev_info(&pdev->dev, "Clock ss %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>> + else
>>> + dev_dbg(&pdev->dev, "Clock ss %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>> + else
>>> + dev_warn(&pdev->dev, "Clock ss is at %lu (%lu MHz) (must be <= %lu)\n",
>>> + cr, cr / 1000000, cr_mod);
>>
>> The management of kernel log levels looks pretty strange. As far as I
>> understand there is no error on any clock rate, I'd recommend to keep
>> only one information message.
>
> And if not, please add some braces.
>
>> hash_init: initialize request context */
>>> +int sunxi_hash_init(struct ahash_request *areq)
>>> +{
>>> + const char *hash_type;
>>> + struct sunxi_req_ctx *op = ahash_request_ctx(areq);
>>> +
>>> + memset(op, 0, sizeof(struct sunxi_req_ctx));
>>> +
>>> + hash_type = crypto_tfm_alg_name(areq->base.tfm);
>>> +
>>> + if (strcmp(hash_type, "sha1") == 0)
>>> + op->mode = SS_OP_SHA1;
>>> + if (strcmp(hash_type, "md5") == 0)
>>> + op->mode = SS_OP_MD5;
>
> else if ?
>
>>> + if (op->mode == 0)
>>> + return -EINVAL;
>
> maybe this?
>
> if (!strcmp(hash_type, "sha1"))
> op->mode = SS_OP_SHA1;
> else if (!strcmp(hash_type, "md5"))
> op->mode = SH_OP_MD5;
> else
> return -EINVAL;
>
Ok it is better
>>> +
>>> + return 0;
>>> +}
> []
>>> +int sunxi_hash_update(struct ahash_request *areq)
>>> +{
> []
>>> + dev_dbg(ss->dev, "%s %s bc=%llu len=%u mode=%x bw=%u ww=%u",
>>> + __func__, crypto_tfm_alg_name(areq->base.tfm),
>>> + op->byte_count, areq->nbytes, op->mode,
>>> + op->nbw, op->nwait);
>
> dev_dbg statements generally don't need __func__ as
> dynamic_debug can add it.
>
> If you want to keep it, the most common output form for
> __func__ is '"%s: ...", __func__'
>
It is a big debug that I forgot to remove but I fixed that in other dev_dbg
thanks
next prev parent reply other threads:[~2014-10-21 16:39 UTC|newest]
Thread overview: 78+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-19 14:16 [PATCH v5] crypto: Add Allwinner Security System crypto accelerator LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
[not found] ` <1413728182-13569-1-git-send-email-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-10-19 14:16 ` [PATCH v5 1/4] ARM: sun7i: dt: Add Security System to A20 SoC DTS LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` [PATCH v5 2/4] ARM: sunxi: dt: Add DT bindings documentation for SUNXI Security System LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
[not found] ` <1413728182-13569-3-git-send-email-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-10-20 12:02 ` Koen Kooi
2014-10-20 12:02 ` [linux-sunxi] " Koen Kooi
2014-10-20 12:02 ` Koen Kooi
2014-10-19 14:16 ` [PATCH v5 3/4] MAINTAINERS: Add myself as maintainer of Allwinner " LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` [PATCH v5 4/4] crypto: Add Allwinner Security System crypto accelerator LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-19 14:16 ` LABBE Corentin
2014-10-20 23:28 ` Vladimir Zapolskiy
2014-10-20 23:28 ` Vladimir Zapolskiy
2014-10-20 23:52 ` Joe Perches
2014-10-20 23:52 ` Joe Perches
[not found] ` <1413849173.5407.6.camel-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>
2014-10-21 16:39 ` Corentin LABBE [this message]
2014-10-21 16:39 ` Corentin LABBE
2014-10-21 16:39 ` Corentin LABBE
[not found] ` <54459AA5.2030705-ChpfBGZJDbMAvxtiuMwx3w@public.gmane.org>
2014-10-21 16:25 ` Corentin LABBE
2014-10-21 16:25 ` Corentin LABBE
2014-10-21 16:25 ` Corentin LABBE
[not found] ` <54468902.1040802-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-10-21 17:27 ` Vladimir Zapolskiy
2014-10-21 17:27 ` Vladimir Zapolskiy
2014-10-21 17:27 ` Vladimir Zapolskiy
[not found] ` <1413728182-13569-5-git-send-email-clabbe.montjoie-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-10-21 19:11 ` Maxime Ripard
2014-10-21 19:11 ` Maxime Ripard
2014-10-21 19:11 ` Maxime Ripard
2014-10-24 18:52 ` Corentin LABBE
2014-10-24 18:52 ` Corentin LABBE
2014-10-24 18:52 ` Corentin LABBE
[not found] ` <544A9FEA.6020304-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2014-10-30 17:19 ` Maxime Ripard
2014-10-30 17:19 ` Maxime Ripard
2014-10-30 17:19 ` Maxime Ripard
2014-10-31 7:20 ` Herbert Xu
2014-10-31 7:20 ` Herbert Xu
2014-10-31 7:20 ` Herbert Xu
[not found] ` <20141031072030.GA7563-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
2014-10-31 8:13 ` Maxime Ripard
2014-10-31 8:13 ` Maxime Ripard
2014-10-31 8:13 ` Maxime Ripard
2014-10-31 8:18 ` Herbert Xu
2014-10-31 8:18 ` Herbert Xu
2014-10-31 8:18 ` Herbert Xu
[not found] ` <20141031081803.GA8012-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
2014-10-31 9:57 ` Maxime Ripard
2014-10-31 9:57 ` Maxime Ripard
2014-10-31 9:57 ` Maxime Ripard
2014-10-31 10:05 ` Herbert Xu
2014-10-31 10:05 ` Herbert Xu
[not found] ` <20141031100522.GA8655-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
2014-11-03 9:34 ` Maxime Ripard
2014-11-03 9:34 ` Maxime Ripard
2014-11-03 9:34 ` Maxime Ripard
2014-11-03 10:35 ` Herbert Xu
2014-11-03 10:35 ` Herbert Xu
[not found] ` <20141103103528.GA30154-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
2014-11-06 14:26 ` Maxime Ripard
2014-11-06 14:26 ` Maxime Ripard
2014-11-06 14:26 ` Maxime Ripard
2014-11-06 14:32 ` Herbert Xu
2014-11-06 14:32 ` Herbert Xu
[not found] ` <20141106143217.GA3636-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org>
2014-11-16 17:13 ` Maxime Ripard
2014-11-16 17:13 ` Maxime Ripard
2014-11-16 17:13 ` Maxime Ripard
2014-10-22 9:00 ` Arnd Bergmann
2014-10-22 9:00 ` Arnd Bergmann
2014-10-22 9:00 ` Arnd Bergmann
2014-10-22 9:00 ` Arnd Bergmann
2014-10-24 18:50 ` Corentin LABBE
2014-10-24 18:50 ` [linux-sunxi] " Corentin LABBE
2014-10-24 18:50 ` Corentin LABBE
2014-10-22 9:00 ` Arnd Bergmann
2014-10-22 9:00 ` Arnd Bergmann
2014-11-06 14:13 ` Herbert Xu
2014-11-06 14:13 ` Herbert Xu
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=54468C4C.3030204@gmail.com \
--to=clabbe.montjoie-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
--cc=crope-X3B1VOXEql0@public.gmane.org \
--cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
--cc=devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org \
--cc=grant.likely-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org \
--cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
--cc=herbert-lOAM2aK0SrRLBo1qDEOMRrpzq4S04n8Q@public.gmane.org \
--cc=ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org \
--cc=joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org \
--cc=linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r@public.gmane.org \
--cc=linux-crypto-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-lFZ/pmaqli7XmaaqVzeoHQ@public.gmane.org \
--cc=linux-sunxi-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
--cc=mark.rutland-5wv7dgnIgG8@public.gmane.org \
--cc=maxime.ripard-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org \
--cc=mchehab-JPH+aEBZ4P+UEJcrhfAQsw@public.gmane.org \
--cc=pawel.moll-5wv7dgnIgG8@public.gmane.org \
--cc=robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org \
--cc=vz-ChpfBGZJDbMAvxtiuMwx3w@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 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.