When querying '-cpu help' there is no presentation of fact that a CPU may be deprecated. The user just has to try it and see if they get a depecation message at runtime. The QMP command for querying CPUs report a deprecation bool flag, but not the explanatory reason.
The Icelake-Client CPU (removed in 6df39f5e583ca0f67bd934d1327f9ead2e3bd49c) handled this by modifying the '.notes' section to add the word 'deprecated': { .version = 2, .note = "no TSX, deprecated", .alias = "Icelake-Client-noTSX", .props = (PropValue[]) { { "hle", "off" }, { "rtm", "off" }, { /* end of list */ } }, }, This relies on the person deprecating the CPU to remember to do this, and is redundant when this info is already expressed in the '.deprecation_note' field. This short series suggests just modifying the '-cpu help' formatter so that it displays the full deprecation message eg $ qemu-system-x86_64 -cpu help: Available CPUs: x86 486 (alias configured by machine type) (deprecated: use at least 'Nehalem' / 'Opteron_G4', or 'host' / 'max') I wonder if this is too verbose, and we should just do a concise flag like approach, similar to QMP: $ qemu-system-x86_64 -cpu help: Available CPUs: x86 486 (alias configured by machine type) (deprecated) leaving the full message to be displayed at runtime ? I'm slightly inclined to the simpler more concise output. This series touched x86_64, s390x, and aarch64 because that's all I personally needed from a downstream POV, but any & all of the targets would benefit from this. They have each implemneted the '-cpu help' logic independantly though, and unifying that code is not entirely straightforward. Daniel P. Berrangé (3): target/i386: display deprecation note in '-cpu help' target/s390x: display deprecation note in '-cpu help' target/arm: display deprecation note in '-cpu help' target/arm/helper.c | 10 +++++++++- target/i386/cpu.c | 13 ++++++++++++- target/s390x/cpu_models.c | 28 +++++++++++++++++++++++----- 3 files changed, 44 insertions(+), 7 deletions(-) -- 2.36.1