On 14/07/2022 17.07, Daniel P. Berrangé wrote:
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.
I'd prefer to keep it short here and just write "deprecated" without the
reason. Otherwise this will overflow the lines and break the readability of
the output. And it's also what we're also doing for "-machine", e.g.:
$ ./qemu-system-ppc64 -M help | grep deprecate
taihu taihu (deprecated)
$ ./qemu-system-ppc64 -M taihu
qemu-system-ppc64: warning: Machine type 'taihu' is deprecated: incomplete,
use 'ref405ep' instead
Thomas