All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jolly Shah <JOLLYS@xilinx.com>
To: Stephen Boyd <sboyd@kernel.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"mark.rutland@arm.com" <mark.rutland@arm.com>,
	"michal.simek@xilinx.com" <michal.simek@xilinx.com>,
	"mturquette@baylibre.com" <mturquette@baylibre.com>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"sboyd@codeaurora.org" <sboyd@codeaurora.org>
Cc: Rajan Vaja <RAJANV@xilinx.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Tejas Patel <TEJASP@xilinx.com>,
	"Shubhrajyoti Datta" <shubhraj@xilinx.com>
Subject: RE: [PATCH 1/3] drivers: clk: Add clk_get_children support
Date: Tue, 20 Mar 2018 19:29:58 +0000	[thread overview]
Message-ID: <DM2PR0201MB07679A2DF21F254ACD5E0417B8AB0@DM2PR0201MB0767.namprd02.prod.outlook.com> (raw)
In-Reply-To: <152148371542.242365.18433130635050412528@swboyd.mtv.corp.google.com>

Hi Stephan,

> -----Original Message-----
> From: Stephen Boyd [mailto:sboyd@kernel.org]
> Sent: Monday, March 19, 2018 11:22 AM
> To: Jolly Shah <JOLLYS@xilinx.com>; linux-clk@vger.kernel.org;
> mark.rutland@arm.com; michal.simek@xilinx.com; mturquette@baylibre.com;
> robh+dt@kernel.org; sboyd@codeaurora.org
> Cc: Rajan Vaja <RAJANV@xilinx.com>; devicetree@vger.kernel.org; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Jolly Shah
> <JOLLYS@xilinx.com>; Jolly Shah <JOLLYS@xilinx.com>; Tejas Patel
> <TEJASP@xilinx.com>; Shubhrajyoti Datta <shubhraj@xilinx.com>
> Subject: Re: [PATCH 1/3] drivers: clk: Add clk_get_children support
> 
> Quoting Jolly Shah (2018-02-28 14:27:39)
> > From: Jolly Shah <jolly.shah@xilinx.com>
> >
> > This API helps to determine the users for any clock.
> 
> Ok, but why do you need it?

As you suggested in other patch, we will move children validation in FW.

> 
> >
> > Signed-off-by: Jolly Shah <jollys@xilinx.com>
> > Signed-off-by: Tejas Patel <tejasp@xilinx.com>
> > Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
> > ---
> >  drivers/clk/clk.c            | 28 ++++++++++++++++++++++++++++
> >  include/linux/clk-provider.h |  1 +
> >  2 files changed, 29 insertions(+)
> >
> > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index
> > 0f686a9..947a18b 100644
> > --- a/drivers/clk/clk.c
> > +++ b/drivers/clk/clk.c
> > @@ -274,6 +274,34 @@ struct clk_hw *clk_hw_get_parent(const struct
> > clk_hw *hw)  }  EXPORT_SYMBOL_GPL(clk_hw_get_parent);
> >
> > +static unsigned int sibling;
> 
> Looks very thread unsafe!
> 
> > +
> > +static void clk_show_subtree(struct clk_core *c,
> > +                            int level) {
> > +       struct clk_core *child;
> > +
> > +       if (!c)
> > +               return;
> > +
> > +       if (level == 1)
> > +               sibling++;
> > +
> > +       hlist_for_each_entry(child, &c->children, child_node)
> > +               clk_show_subtree(child, level + 1); }
> > +
> > +unsigned int clk_get_children(char *name) {
> > +       struct clk_core *core;
> > +       struct clk *pclk = __clk_lookup(name);
> > +
> > +       sibling = 0;
> > +       core = pclk->core;
> > +       clk_show_subtree(core, 0);
> > +       return sibling;
> > +}
> > +
> >  static struct clk_core *__clk_lookup_subtree(const char *name,
> >                                              struct clk_core *core)  {
> > diff --git a/include/linux/clk-provider.h
> > b/include/linux/clk-provider.h index f711be6..e94dfb2 100644
> > --- a/include/linux/clk-provider.h
> > +++ b/include/linux/clk-provider.h
> > @@ -745,6 +745,7 @@ unsigned int __clk_get_enable_count(struct clk
> > *clk);  unsigned long clk_hw_get_rate(const struct clk_hw *hw);
> > unsigned long __clk_get_flags(struct clk *clk);  unsigned long
> > clk_hw_get_flags(const struct clk_hw *hw);
> > +unsigned int clk_get_children(char *name);
> 
> And uses a string lookup instead of having the clk_hw pointer in hand.
> No thanks.

WARNING: multiple messages have this Message-ID (diff)
From: Jolly Shah <JOLLYS@xilinx.com>
To: Stephen Boyd <sboyd@kernel.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>,
	"mark.rutland@arm.com" <mark.rutland@arm.com>,
	"michal.simek@xilinx.com" <michal.simek@xilinx.com>,
	"mturquette@baylibre.com" <mturquette@baylibre.com>,
	"robh+dt@kernel.org" <robh+dt@kernel.org>,
	"sboyd@codeaurora.org" <sboyd@codeaurora.org>
Cc: Rajan Vaja <RAJANV@xilinx.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Tejas Patel <TEJASP@xilinx.com>,
	"Shubhrajyoti Datta" <shubhraj@xilinx.com>
Subject: RE: [PATCH 1/3] drivers: clk: Add clk_get_children support
Date: Tue, 20 Mar 2018 19:29:58 +0000	[thread overview]
Message-ID: <DM2PR0201MB07679A2DF21F254ACD5E0417B8AB0@DM2PR0201MB0767.namprd02.prod.outlook.com> (raw)
In-Reply-To: <152148371542.242365.18433130635050412528@swboyd.mtv.corp.google.com>

SGkgU3RlcGhhbiwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTdGVw
aGVuIEJveWQgW21haWx0bzpzYm95ZEBrZXJuZWwub3JnXQ0KPiBTZW50OiBNb25kYXksIE1hcmNo
IDE5LCAyMDE4IDExOjIyIEFNDQo+IFRvOiBKb2xseSBTaGFoIDxKT0xMWVNAeGlsaW54LmNvbT47
IGxpbnV4LWNsa0B2Z2VyLmtlcm5lbC5vcmc7DQo+IG1hcmsucnV0bGFuZEBhcm0uY29tOyBtaWNo
YWwuc2ltZWtAeGlsaW54LmNvbTsgbXR1cnF1ZXR0ZUBiYXlsaWJyZS5jb207DQo+IHJvYmgrZHRA
a2VybmVsLm9yZzsgc2JveWRAY29kZWF1cm9yYS5vcmcNCj4gQ2M6IFJhamFuIFZhamEgPFJBSkFO
VkB4aWxpbnguY29tPjsgZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS0NCj4g
a2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7
IEpvbGx5IFNoYWgNCj4gPEpPTExZU0B4aWxpbnguY29tPjsgSm9sbHkgU2hhaCA8Sk9MTFlTQHhp
bGlueC5jb20+OyBUZWphcyBQYXRlbA0KPiA8VEVKQVNQQHhpbGlueC5jb20+OyBTaHViaHJhanlv
dGkgRGF0dGEgPHNodWJocmFqQHhpbGlueC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8z
XSBkcml2ZXJzOiBjbGs6IEFkZCBjbGtfZ2V0X2NoaWxkcmVuIHN1cHBvcnQNCj4gDQo+IFF1b3Rp
bmcgSm9sbHkgU2hhaCAoMjAxOC0wMi0yOCAxNDoyNzozOSkNCj4gPiBGcm9tOiBKb2xseSBTaGFo
IDxqb2xseS5zaGFoQHhpbGlueC5jb20+DQo+ID4NCj4gPiBUaGlzIEFQSSBoZWxwcyB0byBkZXRl
cm1pbmUgdGhlIHVzZXJzIGZvciBhbnkgY2xvY2suDQo+IA0KPiBPaywgYnV0IHdoeSBkbyB5b3Ug
bmVlZCBpdD8NCg0KQXMgeW91IHN1Z2dlc3RlZCBpbiBvdGhlciBwYXRjaCwgd2Ugd2lsbCBtb3Zl
IGNoaWxkcmVuIHZhbGlkYXRpb24gaW4gRlcuDQoNCj4gDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5
OiBKb2xseSBTaGFoIDxqb2xseXNAeGlsaW54LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBUZWph
cyBQYXRlbCA8dGVqYXNwQHhpbGlueC5jb20+DQo+ID4gU2lnbmVkLW9mZi1ieTogU2h1YmhyYWp5
b3RpIERhdHRhIDxzaHViaHJhanlvdGkuZGF0dGFAeGlsaW54LmNvbT4NCj4gPiAtLS0NCj4gPiAg
ZHJpdmVycy9jbGsvY2xrLmMgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysr
KysrKysNCj4gPiAgaW5jbHVkZS9saW51eC9jbGstcHJvdmlkZXIuaCB8ICAxICsNCj4gPiAgMiBm
aWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJp
dmVycy9jbGsvY2xrLmMgYi9kcml2ZXJzL2Nsay9jbGsuYyBpbmRleA0KPiA+IDBmNjg2YTkuLjk0
N2ExOGIgMTAwNjQ0DQo+ID4gLS0tIGEvZHJpdmVycy9jbGsvY2xrLmMNCj4gPiArKysgYi9kcml2
ZXJzL2Nsay9jbGsuYw0KPiA+IEBAIC0yNzQsNiArMjc0LDM0IEBAIHN0cnVjdCBjbGtfaHcgKmNs
a19od19nZXRfcGFyZW50KGNvbnN0IHN0cnVjdA0KPiA+IGNsa19odyAqaHcpICB9ICBFWFBPUlRf
U1lNQk9MX0dQTChjbGtfaHdfZ2V0X3BhcmVudCk7DQo+ID4NCj4gPiArc3RhdGljIHVuc2lnbmVk
IGludCBzaWJsaW5nOw0KPiANCj4gTG9va3MgdmVyeSB0aHJlYWQgdW5zYWZlIQ0KPiANCj4gPiAr
DQo+ID4gK3N0YXRpYyB2b2lkIGNsa19zaG93X3N1YnRyZWUoc3RydWN0IGNsa19jb3JlICpjLA0K
PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxldmVsKSB7DQo+ID4gKyAgICAg
ICBzdHJ1Y3QgY2xrX2NvcmUgKmNoaWxkOw0KPiA+ICsNCj4gPiArICAgICAgIGlmICghYykNCj4g
PiArICAgICAgICAgICAgICAgcmV0dXJuOw0KPiA+ICsNCj4gPiArICAgICAgIGlmIChsZXZlbCA9
PSAxKQ0KPiA+ICsgICAgICAgICAgICAgICBzaWJsaW5nKys7DQo+ID4gKw0KPiA+ICsgICAgICAg
aGxpc3RfZm9yX2VhY2hfZW50cnkoY2hpbGQsICZjLT5jaGlsZHJlbiwgY2hpbGRfbm9kZSkNCj4g
PiArICAgICAgICAgICAgICAgY2xrX3Nob3dfc3VidHJlZShjaGlsZCwgbGV2ZWwgKyAxKTsgfQ0K
PiA+ICsNCj4gPiArdW5zaWduZWQgaW50IGNsa19nZXRfY2hpbGRyZW4oY2hhciAqbmFtZSkgew0K
PiA+ICsgICAgICAgc3RydWN0IGNsa19jb3JlICpjb3JlOw0KPiA+ICsgICAgICAgc3RydWN0IGNs
ayAqcGNsayA9IF9fY2xrX2xvb2t1cChuYW1lKTsNCj4gPiArDQo+ID4gKyAgICAgICBzaWJsaW5n
ID0gMDsNCj4gPiArICAgICAgIGNvcmUgPSBwY2xrLT5jb3JlOw0KPiA+ICsgICAgICAgY2xrX3No
b3dfc3VidHJlZShjb3JlLCAwKTsNCj4gPiArICAgICAgIHJldHVybiBzaWJsaW5nOw0KPiA+ICt9
DQo+ID4gKw0KPiA+ICBzdGF0aWMgc3RydWN0IGNsa19jb3JlICpfX2Nsa19sb29rdXBfc3VidHJl
ZShjb25zdCBjaGFyICpuYW1lLA0KPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0cnVjdCBjbGtfY29yZSAqY29yZSkgIHsNCj4gPiBkaWZmIC0tZ2l0IGEv
aW5jbHVkZS9saW51eC9jbGstcHJvdmlkZXIuaA0KPiA+IGIvaW5jbHVkZS9saW51eC9jbGstcHJv
dmlkZXIuaCBpbmRleCBmNzExYmU2Li5lOTRkZmIyIDEwMDY0NA0KPiA+IC0tLSBhL2luY2x1ZGUv
bGludXgvY2xrLXByb3ZpZGVyLmgNCj4gPiArKysgYi9pbmNsdWRlL2xpbnV4L2Nsay1wcm92aWRl
ci5oDQo+ID4gQEAgLTc0NSw2ICs3NDUsNyBAQCB1bnNpZ25lZCBpbnQgX19jbGtfZ2V0X2VuYWJs
ZV9jb3VudChzdHJ1Y3QgY2xrDQo+ID4gKmNsayk7ICB1bnNpZ25lZCBsb25nIGNsa19od19nZXRf
cmF0ZShjb25zdCBzdHJ1Y3QgY2xrX2h3ICpodyk7DQo+ID4gdW5zaWduZWQgbG9uZyBfX2Nsa19n
ZXRfZmxhZ3Moc3RydWN0IGNsayAqY2xrKTsgIHVuc2lnbmVkIGxvbmcNCj4gPiBjbGtfaHdfZ2V0
X2ZsYWdzKGNvbnN0IHN0cnVjdCBjbGtfaHcgKmh3KTsNCj4gPiArdW5zaWduZWQgaW50IGNsa19n
ZXRfY2hpbGRyZW4oY2hhciAqbmFtZSk7DQo+IA0KPiBBbmQgdXNlcyBhIHN0cmluZyBsb29rdXAg
aW5zdGVhZCBvZiBoYXZpbmcgdGhlIGNsa19odyBwb2ludGVyIGluIGhhbmQuDQo+IE5vIHRoYW5r
cy4NCg==

WARNING: multiple messages have this Message-ID (diff)
From: JOLLYS@xilinx.com (Jolly Shah)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] drivers: clk: Add clk_get_children support
Date: Tue, 20 Mar 2018 19:29:58 +0000	[thread overview]
Message-ID: <DM2PR0201MB07679A2DF21F254ACD5E0417B8AB0@DM2PR0201MB0767.namprd02.prod.outlook.com> (raw)
In-Reply-To: <152148371542.242365.18433130635050412528@swboyd.mtv.corp.google.com>

Hi Stephan,

> -----Original Message-----
> From: Stephen Boyd [mailto:sboyd at kernel.org]
> Sent: Monday, March 19, 2018 11:22 AM
> To: Jolly Shah <JOLLYS@xilinx.com>; linux-clk at vger.kernel.org;
> mark.rutland at arm.com; michal.simek at xilinx.com; mturquette at baylibre.com;
> robh+dt at kernel.org; sboyd at codeaurora.org
> Cc: Rajan Vaja <RAJANV@xilinx.com>; devicetree at vger.kernel.org; linux-arm-
> kernel at lists.infradead.org; linux-kernel at vger.kernel.org; Jolly Shah
> <JOLLYS@xilinx.com>; Jolly Shah <JOLLYS@xilinx.com>; Tejas Patel
> <TEJASP@xilinx.com>; Shubhrajyoti Datta <shubhraj@xilinx.com>
> Subject: Re: [PATCH 1/3] drivers: clk: Add clk_get_children support
> 
> Quoting Jolly Shah (2018-02-28 14:27:39)
> > From: Jolly Shah <jolly.shah@xilinx.com>
> >
> > This API helps to determine the users for any clock.
> 
> Ok, but why do you need it?

As you suggested in other patch, we will move children validation in FW.

> 
> >
> > Signed-off-by: Jolly Shah <jollys@xilinx.com>
> > Signed-off-by: Tejas Patel <tejasp@xilinx.com>
> > Signed-off-by: Shubhrajyoti Datta <shubhrajyoti.datta@xilinx.com>
> > ---
> >  drivers/clk/clk.c            | 28 ++++++++++++++++++++++++++++
> >  include/linux/clk-provider.h |  1 +
> >  2 files changed, 29 insertions(+)
> >
> > diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index
> > 0f686a9..947a18b 100644
> > --- a/drivers/clk/clk.c
> > +++ b/drivers/clk/clk.c
> > @@ -274,6 +274,34 @@ struct clk_hw *clk_hw_get_parent(const struct
> > clk_hw *hw)  }  EXPORT_SYMBOL_GPL(clk_hw_get_parent);
> >
> > +static unsigned int sibling;
> 
> Looks very thread unsafe!
> 
> > +
> > +static void clk_show_subtree(struct clk_core *c,
> > +                            int level) {
> > +       struct clk_core *child;
> > +
> > +       if (!c)
> > +               return;
> > +
> > +       if (level == 1)
> > +               sibling++;
> > +
> > +       hlist_for_each_entry(child, &c->children, child_node)
> > +               clk_show_subtree(child, level + 1); }
> > +
> > +unsigned int clk_get_children(char *name) {
> > +       struct clk_core *core;
> > +       struct clk *pclk = __clk_lookup(name);
> > +
> > +       sibling = 0;
> > +       core = pclk->core;
> > +       clk_show_subtree(core, 0);
> > +       return sibling;
> > +}
> > +
> >  static struct clk_core *__clk_lookup_subtree(const char *name,
> >                                              struct clk_core *core)  {
> > diff --git a/include/linux/clk-provider.h
> > b/include/linux/clk-provider.h index f711be6..e94dfb2 100644
> > --- a/include/linux/clk-provider.h
> > +++ b/include/linux/clk-provider.h
> > @@ -745,6 +745,7 @@ unsigned int __clk_get_enable_count(struct clk
> > *clk);  unsigned long clk_hw_get_rate(const struct clk_hw *hw);
> > unsigned long __clk_get_flags(struct clk *clk);  unsigned long
> > clk_hw_get_flags(const struct clk_hw *hw);
> > +unsigned int clk_get_children(char *name);
> 
> And uses a string lookup instead of having the clk_hw pointer in hand.
> No thanks.

  reply	other threads:[~2018-03-20 19:30 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-28 22:27 [PATCH 0/3] drivers: clk: Add ZynqMp clock driver support Jolly Shah
2018-02-28 22:27 ` Jolly Shah
2018-02-28 22:27 ` Jolly Shah
2018-02-28 22:27 ` [PATCH 1/3] drivers: clk: Add clk_get_children support Jolly Shah
2018-02-28 22:27   ` Jolly Shah
2018-02-28 22:27   ` Jolly Shah
2018-03-19 18:21   ` Stephen Boyd
2018-03-19 18:21     ` Stephen Boyd
2018-03-19 18:21     ` Stephen Boyd
2018-03-19 18:21     ` Stephen Boyd
2018-03-20 19:29     ` Jolly Shah [this message]
2018-03-20 19:29       ` Jolly Shah
2018-03-20 19:29       ` Jolly Shah
2018-02-28 22:27 ` [PATCH 2/3] dt-bindings: clock: Add bindings for ZynqMP clock driver Jolly Shah
2018-02-28 22:27   ` Jolly Shah
2018-02-28 22:27   ` Jolly Shah
2018-03-06  1:45   ` Rob Herring
2018-03-06  1:45     ` Rob Herring
2018-03-07 22:47     ` Jolly Shah
2018-03-07 22:47       ` Jolly Shah
2018-03-07 22:47       ` Jolly Shah
2018-03-08  1:20       ` Rob Herring
2018-03-08  1:20         ` Rob Herring
2018-03-13 18:39         ` Jolly Shah
2018-03-13 18:39           ` Jolly Shah
2018-03-13 18:39           ` Jolly Shah
2018-03-19 18:23           ` Stephen Boyd
2018-03-19 18:23             ` Stephen Boyd
2018-03-19 18:23             ` Stephen Boyd
2018-03-19 18:23             ` Stephen Boyd
2018-03-20 19:15             ` Jolly Shah
2018-03-20 19:15               ` Jolly Shah
2018-03-20 19:15               ` Jolly Shah
2018-02-28 22:27 ` [PATCH 3/3] drivers: clk: Add " Jolly Shah
2018-02-28 22:27   ` Jolly Shah
2018-02-28 22:27   ` Jolly Shah
2018-03-03  3:32   ` kbuild test robot
2018-03-03  3:32     ` kbuild test robot
2018-03-05 10:37     ` Sudeep Holla
2018-03-05 10:37       ` Sudeep Holla
2018-03-19 20:09   ` Stephen Boyd
2018-03-19 20:09     ` Stephen Boyd
2018-03-19 20:09     ` Stephen Boyd
2018-03-19 20:09     ` Stephen Boyd
2018-03-21 19:59     ` Jolly Shah
2018-03-21 19:59       ` Jolly Shah
2018-03-21 19:59       ` Jolly Shah

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=DM2PR0201MB07679A2DF21F254ACD5E0417B8AB0@DM2PR0201MB0767.namprd02.prod.outlook.com \
    --to=jollys@xilinx.com \
    --cc=RAJANV@xilinx.com \
    --cc=TEJASP@xilinx.com \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mark.rutland@arm.com \
    --cc=michal.simek@xilinx.com \
    --cc=mturquette@baylibre.com \
    --cc=robh+dt@kernel.org \
    --cc=sboyd@codeaurora.org \
    --cc=sboyd@kernel.org \
    --cc=shubhraj@xilinx.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 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.