From: "Ahmed S. Darwish" <darwi@linutronix.de>
To: Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>
Cc: Borislav Petkov <bp@alien8.de>,
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 034/120] x86/cacheinfo: Use parsed CPUID(0x8000001d)
Date: Mon, 1 Jun 2026 21:59:19 +0200 [thread overview]
Message-ID: <ah3kl0nX8Xx_IhkT@lx-t490> (raw)
In-Reply-To: <ah2Luj0Qk7WSpl04@wieczorr-mobl1.localdomain>
On Mon, 01 Jun 2026, Maciej Wieczor-Retman wrote:
>
> On 2026-05-28 at 17:37:56 +0200, Ahmed S. Darwish wrote:
> >
> > -static int amd_fill_cpuid4_info(int index, struct _cpuid4_info *id4)
> > +static int amd_fill_cpuid4_info(struct cpuinfo_x86 *c, int index, struct _cpuid4_info *id4)
> > {
> > union _cpuid4_leaf_eax eax;
> > union _cpuid4_leaf_ebx ebx;
> > union _cpuid4_leaf_ecx ecx;
> > - u32 ignored;
> >
> > - if (boot_cpu_has(X86_FEATURE_TOPOEXT) || boot_cpu_data.x86_vendor == X86_VENDOR_HYGON)
> > - cpuid_count(0x8000001d, index, &eax.full, &ebx.full, &ecx.full, &ignored);
> > - else
> > + if (boot_cpu_has(X86_FEATURE_TOPOEXT) || boot_cpu_data.x86_vendor == X86_VENDOR_HYGON) {
> > + const struct cpuid_regs *regs = cpuid_subleaf_n_raw(c, 0x8000001d, index);
> > +
> > + if (!regs)
> > + return -EIO;
> > +
> > + eax.full = regs->eax;
> > + ebx.full = regs->ebx;
> > + ecx.full = regs->ecx;
> > + } else
> > legacy_amd_cpuid4(index, &eax, &ebx, &ecx);
>
> This 'else' branch still needs the curly brackets per formatting standards.
>
ACK on this and all your other emails with stylistic remarks.
next prev parent reply other threads:[~2026-06-01 19:59 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
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 [this message]
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=ah3kl0nX8Xx_IhkT@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