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 flagreason.
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 '(deprecated)' next to any CPUs eg $ qemu-system-x86_64 -cpu help: Available CPUs: x86 486 (alias configured by machine type) (deprecated) 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 implemented the '-cpu help' logic independantly though, and unifying that code is not entirely straightforward. Changed in v2: - Just include "deprecated" as a flag, not full description which made the output too verbose and long lines. Daniel P. Berrangé (3): target/i386: display deprecation status in '-cpu help' target/s390x: display deprecation status in '-cpu help' target/arm: display deprecation status in '-cpu help' target/arm/helper.c | 7 ++++++- target/i386/cpu.c | 5 +++++ target/s390x/cpu_models.c | 23 ++++++++++++++++++----- 3 files changed, 29 insertions(+), 6 deletions(-) -- 2.36.1