The Linux Kernel Mailing List
 help / color / mirror / Atom feed
From: "Ahmed S. Darwish" <darwi@linutronix.de>
To: Borislav Petkov <bp@alien8.de>
Cc: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
	Dave Hansen <dave.hansen@linux.intel.com>,
	Ingo Molnar <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Andrew Cooper <andrew.cooper3@citrix.com>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Christian Ludloff <ludloff@gmail.com>,
	Sohil Mehta <sohil.mehta@intel.com>,
	John Ogness <john.ogness@linutronix.de>,
	x86@kernel.org, x86-cpuid@lists.linux.dev,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v7 013/120] x86/cpu: Use parsed CPUID(0x80000000)
Date: Fri, 12 Jun 2026 21:49:39 +0200	[thread overview]
Message-ID: <aixi07o7c3s7EOaX@lx-t490> (raw)
In-Reply-To: <20260602171009.GHah8OcUVV9whwCfqi@fat_crate.local>

On Tue, 02 Jun 2026, Borislav Petkov wrote:
>
> So I went forward to look a bit... the whole point of that code in
> microcode_check() is to rescan the *full* CPUID leafage into a separate copy
> of cpuinfo_x86.cpuid.
>
> And then compare the old and the new one and see whether microcode changed
> anything.
>
> I see you're doing something in patch 106 and I'll know much better when I get
> to it but my gut feeling right now tells me, you should leave that code alone
> and do it separately, ontop, when we start removing ->x86_capability.

Patch #16:

    x86/cpuid: Split parser tables and add vendor-qualified parsing
    https://lore.kernel.org/lkml/20260528153923.403473-17-darwi@linutronix.de

initializes the CPUID table at get_cpu_caps() through cpuid_scan_cpu().

I'll just move the group CPUID(0x8000*) patches after that patch, and
everything should be handled nicely.

>
> AFAICT, the CPUID parser can simply do:
>
>         struct cpuid_table *table = &second_copy.cpuid;
>
>         cpuid_fill_table(table, cpuid_parse_entries, nr_entries);
>
> and fill the table. Then we'll need to go over that table and compare it with
> the existing one. I guess adding a __cmp_range() or so in the same manner like
> you do iterate over ranges right now.
>
> Something along those lines I guess...
>

As you hinted at, this is indeed dealt with by the end of the series.  I
actually tested it back then to make sure the before/after microcode
comparisons are still working.

So, I fully agree, let's postpone this until we reach there.

Thanks,
Ahmed

  reply	other threads:[~2026-06-12 19:49 UTC|newest]

Thread overview: 174+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-28 15:37 [PATCH v7 000/120] x86: Introduce a centralized CPUID data model Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 001/120] treewide: Explicitly include the x86 CPUID headers Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 002/120] x86/cpu: <asm/processor.h>: Do not include the CPUID API header Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 003/120] x86/cpuid: Rename cpuid_leaf()/cpuid_subleaf() APIs Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 004/120] x86/cpuid: Introduce <asm/cpuid/leaf_types.h> Ahmed S. Darwish
2026-06-01 14:30   ` Maciej Wieczor-Retman
2026-06-01 19:41     ` Borislav Petkov
2026-06-01 19:53       ` Ahmed S. Darwish
2026-06-01 20:34         ` Borislav Petkov
2026-06-01 21:24           ` Ahmed S. Darwish
2026-06-01 22:53             ` Borislav Petkov
2026-06-02 16:12               ` Maciej Wieczor-Retman
2026-06-02 17:47                 ` Borislav Petkov
2026-06-02 18:15                   ` Maciej Wieczor-Retman
2026-06-02 20:36                   ` Ahmed S. Darwish
2026-06-02 21:15                   ` Ahmed S. Darwish
2026-06-03  0:31                     ` Borislav Petkov
2026-06-08  6:39                       ` Ahmed S. Darwish
2026-06-08 14:49                         ` Borislav Petkov
2026-06-08 21:30                           ` Christian Ludloff
2026-06-08 23:04                             ` Borislav Petkov
2026-06-12 19:21                             ` Ahmed S. Darwish
2026-06-12 19:17                           ` Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 005/120] x86/cpu: Introduce a centralized CPUID data model Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 006/120] x86/cpuid: Introduce a centralized CPUID parser Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 007/120] x86/cpu: centaur/zhaoxin: Rescan CPUID(0xc0000001) after MSR writes Ahmed S. Darwish
2026-05-28 16:49   ` Borislav Petkov
2026-05-28 17:33     ` Ahmed S. Darwish
2026-05-28 18:03       ` Ahmed S. Darwish
2026-05-28 21:24         ` Borislav Petkov
2026-05-28 15:37 ` [PATCH v7 008/120] x86/cpu/transmeta: Rescan CPUID(0x1) after capability unhide Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 009/120] x86/cpu: Use parsed CPUID(0x0) Ahmed S. Darwish
2026-05-30  2:29   ` Borislav Petkov
2026-06-01 19:54     ` Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 010/120] x86/lib: Add CPUID(0x1) family and model calculation Ahmed S. Darwish
2026-05-30 21:43   ` Borislav Petkov
2026-06-01 19:54     ` Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 011/120] x86/cpu: Use parsed CPUID(0x1) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 012/120] x86/cpuid: Parse CPUID(0x80000000) Ahmed S. Darwish
2026-06-01 22:22   ` Borislav Petkov
2026-06-02 13:40     ` Ahmed S. Darwish
2026-06-02 17:12       ` Borislav Petkov
2026-05-28 15:37 ` [PATCH v7 013/120] x86/cpu: Use parsed CPUID(0x80000000) Ahmed S. Darwish
2026-06-01 17:34   ` Maciej Wieczor-Retman
2026-06-02  1:22     ` Borislav Petkov
2026-06-02 13:28       ` Ahmed S. Darwish
2026-06-02 17:10         ` Borislav Petkov
2026-06-12 19:49           ` Ahmed S. Darwish [this message]
2026-06-02  1:23   ` Borislav Petkov
2026-05-28 15:37 ` [PATCH v7 014/120] x86/cpuid: Parse CPUID(0x80000002) to CPUID(0x80000004) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 015/120] x86/cpu: Use parsed " Ahmed S. Darwish
2026-06-10 19:56   ` Borislav Petkov
2026-06-12 20:10     ` Ahmed S. Darwish
2026-06-11  9:37   ` David Laight
2026-06-12 20:10     ` Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 016/120] x86/cpuid: Split parser tables and add vendor-qualified parsing Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 017/120] x86/cpuid: Introduce a parser debugfs interface Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 018/120] x86/cpuid: Parse CPUID(0x16) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 019/120] x86/tsc: Use parsed CPUID(0x16) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 020/120] x86/cpuid: Parse Transmeta and Centaur extended ranges Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 021/120] x86/cpu/transmeta: Use parsed CPUID(0x80860000)->CPUID(0x80860006) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 022/120] x86/cpu/transmeta: Refactor CPU information printing Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 023/120] x86/cpu/centaur: Use parsed CPUID(0xc0000001) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 024/120] x86/cpu/zhaoxin: " Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 025/120] x86/cpuid: Parse CPUID(0x2) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 026/120] x86/cpuid: Warn once on invalid CPUID(0x2) iteration count Ahmed S. Darwish
2026-06-01 17:36   ` Maciej Wieczor-Retman
2026-05-28 15:37 ` [PATCH v7 027/120] x86/cpuid: Introduce parsed CPUID(0x2) API Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 028/120] x86/cpu: Use parsed CPUID(0x2) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 029/120] x86/cacheinfo: " Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 030/120] x86/cpuid: Remove direct CPUID(0x2) query helpers Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 031/120] x86/cpuid: Parse deterministic cache parameters CPUID leaves Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 032/120] x86/cacheinfo: Pass a 'struct cpuinfo_x86' reference to CPUID(0x4) code Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 033/120] x86/cacheinfo: Use parsed CPUID(0x4) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 034/120] x86/cacheinfo: Use parsed CPUID(0x8000001d) Ahmed S. Darwish
2026-06-01 13:42   ` Maciej Wieczor-Retman
2026-06-01 19:59     ` Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 035/120] x86/cpuid: Parse CPUID(0x80000005), CPUID(0x80000006), CPUID(0x80000008) Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 036/120] x86/cacheinfo: Use auto-generated data types Ahmed S. Darwish
2026-05-28 15:37 ` [PATCH v7 037/120] x86/cacheinfo: Use parsed CPUID(0x80000005) and CPUID(0x80000006) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 038/120] x86/cacheinfo: Use parsed CPUID(0x80000006) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 039/120] x86/cpu: Use parsed CPUID(0x80000005) and CPUID(0x80000006) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 040/120] x86/cpu/amd: Use parsed CPUID(0x80000005) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 041/120] x86/cpu/amd: Refactor TLB detection code Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 042/120] x86/cpu/amd: Use parsed CPUID(0x80000005) and CPUID(0x80000006) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 043/120] x86/cpu/hygon: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 044/120] x86/cpu/centaur: Use parsed CPUID(0x80000005) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 045/120] x86/cpu: Use parsed CPUID(0x80000008) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 046/120] x86/apic: Use parsed and refreshed CPUID(0x1) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 047/120] x86/cpu/amd: Refactor CPUID(0x1) level calculation Ahmed S. Darwish
2026-05-28 22:42   ` Christian Ludloff
2026-06-02 13:58     ` Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 048/120] x86/mce: core: Use parsed CPUID(0x1) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 049/120] x86/mce: inject: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 050/120] x86/microcode/amd: Use standard CPUID(0x1) types Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 051/120] x86/microcode/amd: rdrand: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 052/120] x86/microcode/intel: Explain CPUID parser APIs unavailability Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 053/120] x86/mm/pti: Use standard CPUID(0x1) types Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 054/120] x86/xen: Use parsed CPUID(0x1) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 055/120] x86/xen: Use standard CPUID(0x1) types Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 056/120] agp/efficeon: Use parsed CPUID(0x1) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 057/120] dmaengine: ioatdma: Remove custom UP local APID IC code Ahmed S. Darwish
2026-06-01 13:48   ` Maciej Wieczor-Retman
2026-05-28 15:38 ` [PATCH v7 058/120] RAS/AMD/FMPM: Use parsed CPUID(0x1) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 059/120] x86/cpuid: Parse CPUID(0x5) Ahmed S. Darwish
2026-06-01 14:20   ` Maciej Wieczor-Retman
2026-05-28 15:38 ` [PATCH v7 060/120] x86/acpi/cstate: Remove superfluous retval logic Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 061/120] x86/acpi/cstate: Clarify unsupported MWAIT hint warning Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 062/120] x86/acpi/cstate: Use MWAIT helper macros Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 063/120] x86/acpi: Use parsed CPUID(0x5) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 064/120] x86/process: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 065/120] x86/hpet: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 066/120] ACPI: PAD: Use Parsed CPUID(0x5) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 067/120] intel_idle: Use parsed CPUID(0x5) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 068/120] x86/idle: Remove unused CPUID(0x5) symbols Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 069/120] x86/cpuid: Parse CPUID(0x6), CPUID(0x9), and CPUID(0x15) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 070/120] thermal: intel: hfi: Use parsed CPUID(0x6) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 071/120] dmaengine: ioatdma: Use parsed CPUID(0x9) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 072/120] ASoC: Intel: avs: Use parsed CPUID(0x15) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 073/120] perf/x86/intel: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 074/120] x86/cpuid: Introduce cpuid_subleaf_raw() Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 075/120] x86/cpuid: Parse CPUID(0x12) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 076/120] x86/sgx/driver: Use parsed CPUID(0x12) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 077/120] x86/sgx: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 078/120] KVM: x86: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 079/120] KVM: VMX: Use standard CPUID(0x12) types Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 080/120] x86/sgx: Move unused CPUID(0x12) symbols Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 081/120] x86/cpuid: Parse CPUID(0xa) and CPUID(0x1c) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 082/120] x86/cpu/intel: Use parsed CPUID(0xa) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 083/120] x86/cpu/centaur: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 084/120] x86/cpu/zhaoxin: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 085/120] perf/x86/intel: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 086/120] perf/x86/zhaoxin: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 087/120] x86/xen: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 088/120] KVM: x86: Use standard CPUID(0xa) types Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 089/120] KVM: x86/pmu: " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 090/120] perf/x86: Remove custom " Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 091/120] perf/x86/lbr: Use parsed CPUID(0x1c) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 092/120] perf/x86/lbr: Remove custom CPUID(0x1c) types Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 093/120] x86/cpuid: Parse CPUID(0x23) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 094/120] perf/x86/intel: Use parsed per-CPU CPUID(0x23) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 095/120] perf/x86/intel: Remove custom CPUID(0x23) types Ahmed S. Darwish
2026-06-01 14:00   ` Maciej Wieczor-Retman
2026-05-28 15:38 ` [PATCH v7 096/120] x86/cpuid: Parse CPUID(0x80000022) Ahmed S. Darwish
2026-05-28 15:38 ` [PATCH v7 097/120] perf/x86/amd/lbr: Use parsed CPUID(0x80000022) Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 098/120] perf/x86/amd: " Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 099/120] KVM: x86: Use standard CPUID(0x80000022) types Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 100/120] perf/x86: Remove custom " Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 101/120] x86/cpuid: Parse CPUID(0x80000007) Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 102/120] x86/cpu: Use parsed CPUID(0x80000007) Ahmed S. Darwish
2026-05-28 22:52   ` Christian Ludloff
2026-05-28 15:39 ` [PATCH v7 103/120] x86/cpu: amd/hygon: " Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 104/120] x86/cpu: cpuinfo: " Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 105/120] KVM: x86: " Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 106/120] x86/microcode: Allocate cpuinfo_x86 snapshots on the heap Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 107/120] x86/cpuid: Parse leaves backing X86_FEATURE words Ahmed S. Darwish
2026-06-02 18:26   ` Maciej Wieczor-Retman
2026-06-12 20:22     ` Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 108/120] x86/cpuid: Parse Linux synthetic CPUID leaves Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 109/120] x86/cpuid: Introduce a compile-time X86_FEATURE word map Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 110/120] x86/cpuid: Introduce X86_FEATURE and CPUID word APIs Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 111/120] x86/percpu: Add offset argument to x86_this_cpu_test_bit() Ahmed S. Darwish
2026-06-01 18:07   ` Maciej Wieczor-Retman
2026-06-12 20:29     ` Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 112/120] x86/cpufeature: Factor out a __static_cpu_has() helper Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 113/120] x86/asm/32: Cache CPUID(0x1).EDX in cpuid_table Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 114/120] x86: Route all feature queries to the CPUID tables Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 115/120] x86/cpu: Remove x86_capability[] and x86_power initialization Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 116/120] x86/cpu/transmeta: Remove x86_capability[] CPUID initialization Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 117/120] x86/cpu: centaur/zhaoxin: Remove x86_capability[] initialization Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 118/120] KVM: x86: Remove BUILD_BUG_ON() x86_capability[] check Ahmed S. Darwish
2026-06-01 14:10   ` Maciej Wieczor-Retman
2026-05-28 15:39 ` [PATCH v7 119/120] x86/cpu: Remove x86_capability[] and x86_power Ahmed S. Darwish
2026-05-28 15:39 ` [PATCH v7 120/120] MAINTAINERS: Extend x86 CPUID DATABASE file coverage Ahmed S. Darwish

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=aixi07o7c3s7EOaX@lx-t490 \
    --to=darwi@linutronix.de \
    --cc=andrew.cooper3@citrix.com \
    --cc=bp@alien8.de \
    --cc=dave.hansen@linux.intel.com \
    --cc=hpa@zytor.com \
    --cc=john.ogness@linutronix.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ludloff@gmail.com \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=mingo@redhat.com \
    --cc=sohil.mehta@intel.com \
    --cc=tglx@linutronix.de \
    --cc=x86-cpuid@lists.linux.dev \
    --cc=x86@kernel.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