DPDK patches and discussions
 help / color / mirror / Atom feed
From: David Marchand <david.marchand@redhat.com>
To: Sivaprasad Tummala <sivaprasad.tummala@amd.com>,
	Thomas Monjalon <thomas@monjalon.net>
Cc: david.hunt@intel.com, anatoly.burakov@intel.com,
	jerinj@marvell.com,  radu.nicolau@intel.com, gakhil@marvell.com,
	cristian.dumitrescu@intel.com,  lihuisong@huawei.com,
	ferruh.yigit@amd.com, konstantin.ananyev@huawei.com,
	 dev@dpdk.org
Subject: Re: [PATCH v10 0/6] power: refactor power management library
Date: Tue, 12 Nov 2024 09:20:01 +0100	[thread overview]
Message-ID: <CAJFAV8yx1LRpFiae7E6eLc0NFozDm9+g9ojYas=g=yDTZnwu5g@mail.gmail.com> (raw)
In-Reply-To: <5996777.Isy0gbHreE@thomas>

Hello Siva, Thomas,

On Sun, Nov 10, 2024 at 7:36 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> 28/10/2024 20:55, Sivaprasad Tummala:
> > This patchset refactors the power management library, addressing both
> > core and uncore power management. The primary changes involve the
> > creation of dedicated directories for each driver within
> > 'drivers/power/core/*' and 'drivers/power/uncore/*'.
> >
> > This refactor significantly improves code organization, enhances
> > clarity, and boosts maintainability. It lays the foundation for more
> > focused development on individual drivers and facilitates seamless
> > integration of future enhancements, particularly the AMD uncore driver.
> >
> > Furthermore, this effort aims to streamline code maintenance by
> > consolidating common functions for cpufreq and cppc across various
> > core drivers, thus reducing code duplication.
> >
> > Sivaprasad Tummala (6):
> >   power: refactor core power management library
> >   power: refactor uncore power management library
> >   test/power: removed function pointer validations
> >   drivers/power: uncore support for AMD EPYC processors
> >   maintainers: update for drivers/power
> >   power: rename library sources for cpu frequency management
>
> I'm a bit sad there is not more reviews.
>
> I've moved the pointers check removal first,
> renamed intel_pstate files (not the functions),
> fixed few things like __cplusplus, include guards,
> sorting and maintainers file.
>
> Applied

This series breaks compilation of the vm_power_manager example as the
"guest channel" API symbols are not provided by the power library
(itself) anymore.

ninja: Entering directory `/home/dmarchan/builds/main/build-gcc-shared'
[3355/3373] Linking target examples/dpdk-guest_cli
FAILED: examples/dpdk-guest_cli
gcc  -o examples/dpdk-guest_cli
examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_main.c.o
examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_parse.c.o
examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o
-Wl,--as-needed -Wl,--no-undefined -Wl,--no-as-needed
-Wl,--undefined-version -pthread -Wl,--start-group -lm -ldl -lnuma
-lfdt '-Wl,-rpath,$ORIGIN/../lib'
-Wl,-rpath-link,/home/dmarchan/builds/main/build-gcc-shared/lib
lib/librte_eal.so.25.0 lib/librte_kvargs.so.25.0
lib/librte_log.so.25.0 lib/librte_telemetry.so.25.0
lib/librte_mempool.so.25.0 lib/librte_ring.so.25.0
lib/librte_net.so.25.0 lib/librte_mbuf.so.25.0
lib/librte_ethdev.so.25.0 lib/librte_meter.so.25.0
lib/librte_cmdline.so.25.0 lib/librte_power.so.25.0
lib/librte_timer.so.25.0 -lpcap -lvirt /usr/lib64/libbsd.so
/usr/lib64/libarchive.so -Wl,--end-group
/usr/bin/ld: examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o:
in function `check_response_cmd':
/home/dmarchan/builds/main/build-gcc-shared/../../../git/pub/dpdk.org/main/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c:382:
undefined reference to `rte_power_guest_channel_receive_msg'
/usr/bin/ld: examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o:
in function `query_data':
/home/dmarchan/builds/main/build-gcc-shared/../../../git/pub/dpdk.org/main/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c:147:
undefined reference to `rte_power_guest_channel_send_msg'
/usr/bin/ld: examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o:
in function `receive_capabilities':
/home/dmarchan/builds/main/build-gcc-shared/../../../git/pub/dpdk.org/main/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c:271:
undefined reference to `rte_power_guest_channel_receive_msg'
/usr/bin/ld: examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o:
in function `send_policy':
/home/dmarchan/builds/main/build-gcc-shared/../../../git/pub/dpdk.org/main/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c:476:
undefined reference to `rte_power_guest_channel_send_msg'
/usr/bin/ld: examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o:
in function `query_data':
/home/dmarchan/builds/main/build-gcc-shared/../../../git/pub/dpdk.org/main/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c:147:
undefined reference to `rte_power_guest_channel_send_msg'
/usr/bin/ld: examples/dpdk-guest_cli.p/vm_power_manager_guest_cli_vm_power_cli_guest.c.o:
in function `receive_freq_list':
/home/dmarchan/builds/main/build-gcc-shared/../../../git/pub/dpdk.org/main/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c:161:
undefined reference to `rte_power_guest_channel_receive_msg'
collect2: error: ld returned 1 exit status
[3357/3373] Generating drivers/rte_common_cnxk.sym_chk with a custom
command (wrapped by meson to capture output)
ninja: build stopped: subcommand failed.

Siva, please have a look quickly.

Here is a quick fix written before first coffee of the day:
$ git diff --cached
diff --git a/drivers/power/kvm_vm/meson.build b/drivers/power/kvm_vm/meson.build
index fe11179ab3..e921c012e9 100644
--- a/drivers/power/kvm_vm/meson.build
+++ b/drivers/power/kvm_vm/meson.build
@@ -10,5 +10,6 @@ sources = files(
         'guest_channel.c',
         'kvm_vm.c',
 )
+headers = files('rte_power_guest_channel.h')

 deps += ['power']
diff --git a/lib/power/rte_power_guest_channel.h
b/drivers/power/kvm_vm/rte_power_guest_channel.h
similarity index 100%
rename from lib/power/rte_power_guest_channel.h
rename to drivers/power/kvm_vm/rte_power_guest_channel.h
diff --git a/drivers/power/kvm_vm/version.map b/drivers/power/kvm_vm/version.map
new file mode 100644
index 0000000000..ffa676624b
--- /dev/null
+++ b/drivers/power/kvm_vm/version.map
@@ -0,0 +1,8 @@
+DPDK_25 {
+       global:
+
+       rte_power_guest_channel_receive_msg;
+       rte_power_guest_channel_send_msg;
+
+       local: *;
+};
diff --git a/examples/vm_power_manager/guest_cli/meson.build
b/examples/vm_power_manager/guest_cli/meson.build
index a69f809e3b..bc3916a170 100644
--- a/examples/vm_power_manager/guest_cli/meson.build
+++ b/examples/vm_power_manager/guest_cli/meson.build
@@ -6,7 +6,7 @@
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'

-deps += ['power']
+deps += ['power', 'power/kvm_vm']

 sources = files(
         'main.c',
diff --git a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
index 803b6d1f82..14d1f3dd95 100644
--- a/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
+++ b/examples/vm_power_manager/guest_cli/vm_power_cli_guest.c
@@ -19,6 +19,7 @@
 #include <rte_ethdev.h>

 #include <rte_power_cpufreq.h>
+#include <rte_power_guest_channel.h>

 #include "vm_power_cli_guest.h"

diff --git a/examples/vm_power_manager/meson.build
b/examples/vm_power_manager/meson.build
index b866d8fd54..1903b68ed9 100644
--- a/examples/vm_power_manager/meson.build
+++ b/examples/vm_power_manager/meson.build
@@ -6,7 +6,7 @@
 # To build this example as a standalone application with an already-installed
 # DPDK instance, use 'make'

-deps += ['power']
+deps += ['power', 'power/kvm_vm']

 if dpdk_conf.has('RTE_NET_BNXT')
     deps += ['net_bnxt']
diff --git a/lib/power/meson.build b/lib/power/meson.build
index cd7c83b6e9..b3a7bc7b2e 100644
--- a/lib/power/meson.build
+++ b/lib/power/meson.build
@@ -22,7 +22,6 @@ headers = files(
         'power_cpufreq.h',
         'power_uncore_ops.h',
         'rte_power_cpufreq.h',
-        'rte_power_guest_channel.h',
         'rte_power_pmd_mgmt.h',
         'rte_power_qos.h',
         'rte_power_uncore.h',
diff --git a/lib/power/rte_power_cpufreq.h b/lib/power/rte_power_cpufreq.h
index 73f9820bdf..82d274214b 100644
--- a/lib/power/rte_power_cpufreq.h
+++ b/lib/power/rte_power_cpufreq.h
@@ -13,7 +13,6 @@

 #include <rte_common.h>
 #include <rte_log.h>
-#include <rte_power_guest_channel.h>

 #include "power_cpufreq.h"

diff --git a/lib/power/version.map b/lib/power/version.map
index 920c8e79b3..9a36046a64 100644
--- a/lib/power/version.map
+++ b/lib/power/version.map
@@ -16,8 +16,6 @@ DPDK_25 {
        rte_power_get_env;
        rte_power_get_freq;
        rte_power_get_uncore_freq;
-       rte_power_guest_channel_receive_msg;
-       rte_power_guest_channel_send_msg;
        rte_power_init;
        rte_power_pmd_mgmt_get_emptypoll_max;
        rte_power_pmd_mgmt_get_pause_duration;



-- 
David Marchand


  parent reply	other threads:[~2024-11-12  8:20 UTC|newest]

Thread overview: 138+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-02-20 15:33 [RFC PATCH 0/2] " Sivaprasad Tummala
2024-02-20 15:33 ` Sivaprasad Tummala
2024-02-20 15:33 ` [RFC PATCH 1/2] power: refactor core " Sivaprasad Tummala
2024-02-27 16:18   ` Ferruh Yigit
2024-02-29  7:10     ` Tummala, Sivaprasad
2024-02-28 12:51   ` Ferruh Yigit
2024-03-01  2:56   ` lihuisong (C)
2024-03-01 10:39     ` Hunt, David
2024-03-05  4:35     ` Tummala, Sivaprasad
2024-02-20 15:33 ` [RFC PATCH 2/2] power: refactor uncore " Sivaprasad Tummala
2024-03-01  3:33   ` lihuisong (C)
2024-03-01  6:06     ` Tummala, Sivaprasad
2024-07-20 16:50 ` [PATCH v1 0/4] power: refactor " Sivaprasad Tummala
2024-07-20 16:50   ` [PATCH v1 1/4] power: refactor core " Sivaprasad Tummala
2024-07-23 10:03     ` Hunt, David
2024-07-27 18:44       ` Tummala, Sivaprasad
2024-07-20 16:50   ` [PATCH v1 2/4] power: refactor uncore " Sivaprasad Tummala
2024-07-23 10:26     ` Hunt, David
2024-07-20 16:50   ` [PATCH v1 3/4] test/power: removed function pointer validations Sivaprasad Tummala
2024-07-22 10:49     ` Hunt, David
2024-07-27 18:45       ` Tummala, Sivaprasad
2024-07-20 16:50   ` [PATCH v1 4/4] power/amd_uncore: uncore power management support for AMD EPYC processors Sivaprasad Tummala
2024-07-23 10:33     ` Hunt, David
2024-07-27 18:46       ` Tummala, Sivaprasad
2024-07-20 16:50   ` [PATCH v1 0/4] power: refactor power management library Sivaprasad Tummala
2024-08-26 13:06   ` [PATCH v2 " Sivaprasad Tummala
2024-08-26 13:06     ` [PATCH v2 1/4] power: refactor core " Sivaprasad Tummala
2024-08-26 15:26       ` Stephen Hemminger
2024-10-07 19:25         ` Tummala, Sivaprasad
2024-08-27  8:21       ` lihuisong (C)
2024-09-12 11:17         ` Tummala, Sivaprasad
2024-09-13  7:34           ` lihuisong (C)
2024-09-18  8:37             ` Tummala, Sivaprasad
2024-09-19  3:37               ` lihuisong (C)
2024-08-26 13:06     ` [PATCH v2 2/4] power: refactor uncore " Sivaprasad Tummala
2024-08-27 13:02       ` lihuisong (C)
2024-10-08  6:19         ` Tummala, Sivaprasad
2024-10-22  2:05           ` lihuisong (C)
2024-08-26 13:06     ` [PATCH v2 3/4] test/power: removed function pointer validations Sivaprasad Tummala
2024-08-26 13:06     ` [PATCH v2 4/4] power/amd_uncore: uncore power management support for AMD EPYC processors Sivaprasad Tummala
2024-08-26 13:06     ` [PATCH v2 0/4] power: refactor power management library Sivaprasad Tummala
2024-10-07 18:01     ` Stephen Hemminger
2024-10-08 17:27     ` [PATCH v3 0/5] " Sivaprasad Tummala
2024-10-08 17:27       ` [PATCH v3 1/5] power: refactor core " Sivaprasad Tummala
2024-10-08 17:27       ` [PATCH v3 2/5] power: refactor uncore " Sivaprasad Tummala
2024-10-08 17:27       ` [PATCH v3 3/5] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-08 17:27       ` [PATCH v3 4/5] power/amd_uncore: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-08 17:27       ` [PATCH v3 5/5] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-08 17:27       ` [PATCH v3 0/5] power: refactor power management library Sivaprasad Tummala
2024-10-08 17:43       ` Sivaprasad Tummala
2024-10-08 17:43         ` [PATCH v3 1/5] power: refactor core " Sivaprasad Tummala
2024-10-08 17:43         ` [PATCH v3 2/5] power: refactor uncore " Sivaprasad Tummala
2024-10-08 17:43         ` [PATCH v3 3/5] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-08 17:43         ` [PATCH v3 4/5] power/amd_uncore: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-08 17:43         ` [PATCH v3 5/5] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-08 17:43         ` [PATCH v3 0/5] power: refactor power management library Sivaprasad Tummala
2024-10-12 17:44         ` Stephen Hemminger
2024-10-15  2:49       ` [PATCH v4 " Sivaprasad Tummala
2024-10-15  2:49         ` [PATCH v4 1/5] power: refactor core " Sivaprasad Tummala
2024-10-15  2:49         ` [PATCH v4 2/5] power: refactor uncore " Sivaprasad Tummala
2024-10-15  2:49         ` [PATCH v4 3/5] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-15  2:49         ` [PATCH v4 4/5] power/amd_uncore: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-15  2:49         ` [PATCH v4 5/5] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-15  2:49         ` [PATCH v4 0/5] power: refactor power management library Sivaprasad Tummala
2024-10-15  3:15         ` Stephen Hemminger
2024-10-17 10:26         ` [PATCH v5 " Sivaprasad Tummala
2024-10-17 10:26           ` [PATCH v5 1/5] power: refactor core " Sivaprasad Tummala
2024-10-17 10:26           ` [PATCH v5 2/5] power: refactor uncore " Sivaprasad Tummala
2024-10-17 10:26           ` [PATCH v5 3/5] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-17 10:26           ` [PATCH v5 4/5] drivers/power: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-17 10:26           ` [PATCH v5 5/5] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-17 10:26           ` [PATCH v5 0/5] power: refactor power management library Sivaprasad Tummala
2024-10-17 16:17           ` Stephen Hemminger
2024-10-20  9:22           ` [PATCH v6 " Sivaprasad Tummala
2024-10-20  9:22             ` [PATCH v6 1/5] power: refactor core " Sivaprasad Tummala
2024-10-20  9:22             ` [PATCH v6 2/5] power: refactor uncore " Sivaprasad Tummala
2024-10-20 23:25               ` Stephen Hemminger
2024-10-20 23:28               ` Stephen Hemminger
2024-10-20  9:22             ` [PATCH v6 3/5] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-20  9:22             ` [PATCH v6 4/5] drivers/power: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-20  9:22             ` [PATCH v6 5/5] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-20  9:22             ` [PATCH v6 0/5] power: refactor power management library Sivaprasad Tummala
2024-10-21  4:07             ` [PATCH v7 " Sivaprasad Tummala
2024-10-21  4:07               ` [PATCH v7 1/5] power: refactor core " Sivaprasad Tummala
2024-10-22  1:20                 ` Stephen Hemminger
2024-10-22  6:45                   ` Tummala, Sivaprasad
2024-10-22  3:03                 ` lihuisong (C)
2024-10-22  7:13                   ` Tummala, Sivaprasad
2024-10-22  8:36                     ` lihuisong (C)
2024-10-21  4:07               ` [PATCH v7 2/5] power: refactor uncore " Sivaprasad Tummala
2024-10-22  1:18                 ` Stephen Hemminger
2024-10-22  6:45                   ` Tummala, Sivaprasad
2024-10-22  3:17                 ` lihuisong (C)
2024-10-22  6:46                   ` Tummala, Sivaprasad
2024-10-21  4:07               ` [PATCH v7 3/5] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-21  4:07               ` [PATCH v7 4/5] drivers/power: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-21  4:07               ` [PATCH v7 5/5] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-21  4:07               ` [PATCH v7 0/5] power: refactor power management library Sivaprasad Tummala
2024-10-22  1:34               ` Stephen Hemminger
2024-10-22 18:41               ` [PATCH v8 0/6] " Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 1/6] power: refactor core " Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 2/6] power: refactor uncore " Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 3/6] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 4/6] drivers/power: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 5/6] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 6/6] power: rename library sources for cpu frequency management Sivaprasad Tummala
2024-10-22 18:41                 ` [PATCH v8 0/6] power: refactor power management library Sivaprasad Tummala
2024-10-23  1:40                 ` Stephen Hemminger
2024-10-23  5:11                 ` [PATCH v9 " Sivaprasad Tummala
2024-10-23  5:11                   ` [PATCH v9 1/6] power: refactor core " Sivaprasad Tummala
2024-10-26  3:06                     ` lihuisong (C)
2024-10-26  5:22                       ` Tummala, Sivaprasad
2024-10-26  7:03                         ` lihuisong (C)
2024-10-23  5:11                   ` [PATCH v9 2/6] power: refactor uncore " Sivaprasad Tummala
2024-10-26  3:12                     ` lihuisong (C)
2024-10-23  5:11                   ` [PATCH v9 3/6] test/power: removed function pointer validations Sivaprasad Tummala
2024-10-23  5:11                   ` [PATCH v9 4/6] drivers/power: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-10-23  5:11                   ` [PATCH v9 5/6] maintainers: update for drivers/power Sivaprasad Tummala
2024-10-23  5:11                   ` [PATCH v9 6/6] power: rename library sources for cpu frequency management Sivaprasad Tummala
2024-10-26  4:09                     ` lihuisong (C)
2024-10-23  5:11                   ` [PATCH v9 0/6] power: refactor power management library Sivaprasad Tummala
2024-10-28 19:55                   ` [PATCH v10 " Sivaprasad Tummala
2024-10-28 19:55                     ` [PATCH v10 1/6] power: refactor core " Sivaprasad Tummala
2024-11-10 10:40                       ` Thomas Monjalon
2024-10-28 19:55                     ` [PATCH v10 2/6] power: refactor uncore " Sivaprasad Tummala
2024-10-28 19:55                     ` [PATCH v10 3/6] test/power: removed function pointer validations Sivaprasad Tummala
2024-11-10 10:11                       ` Thomas Monjalon
2024-10-28 19:55                     ` [PATCH v10 4/6] drivers/power: uncore support for AMD EPYC processors Sivaprasad Tummala
2024-11-10 10:52                       ` Thomas Monjalon
2024-10-28 19:55                     ` [PATCH v10 5/6] maintainers: update for drivers/power Sivaprasad Tummala
2024-11-10 10:54                       ` Thomas Monjalon
2024-10-28 19:55                     ` [PATCH v10 6/6] power: rename library sources for cpu frequency management Sivaprasad Tummala
2024-11-10 18:35                     ` [PATCH v10 0/6] power: refactor power management library Thomas Monjalon
2024-11-10 19:29                       ` Stephen Hemminger
2024-11-10 23:40                         ` Thomas Monjalon
2024-11-12  8:20                       ` David Marchand [this message]
2024-11-12 10:37                         ` David Marchand
2024-11-12 14:50                           ` Tummala, Sivaprasad

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='CAJFAV8yx1LRpFiae7E6eLc0NFozDm9+g9ojYas=g=yDTZnwu5g@mail.gmail.com' \
    --to=david.marchand@redhat.com \
    --cc=anatoly.burakov@intel.com \
    --cc=cristian.dumitrescu@intel.com \
    --cc=david.hunt@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.com \
    --cc=gakhil@marvell.com \
    --cc=jerinj@marvell.com \
    --cc=konstantin.ananyev@huawei.com \
    --cc=lihuisong@huawei.com \
    --cc=radu.nicolau@intel.com \
    --cc=sivaprasad.tummala@amd.com \
    --cc=thomas@monjalon.net \
    /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).