>> From what I understand:
>>
>> QEMU
>> - add a "deprecated-features" feature group (more-or-less David's
code)
>>
>> libvirt
>> - recognize a new model name "host-recommended"
>> - query QEMU for host-model + deprecated-features and cache it in caps
>> file (something like <hostRecCpu>)
>> - when guest is defined with "host-recommended", pull
<hostRecCPU> from
>> caps when guest is started (similar to how host-model works today)
>>
>> If this is sufficient, then I can then get to work on this.
>>
>> My question is what would be the best way to include the deprecated
>> features when calculating a baseline or comparison. Both work with the
>> host-model and may no longer present an accurate result. Say, for
>> example, we baseline a z15 with a gen17 (which will outright not support
>> CSSKE). With today's implementation, this might result in a ridiculously
>> old CPU model which also does not support CSSKE. The ideal response
>> would be a z15 - deprecated features (i.e. host-recommended on a z15),
>> but we'd need a way to flag to QEMU that we want to exclude the
>> deprecated features. Or am I totally wrong about this?
>
> For baselining, it would be reasonable to always disable deprecated
> features, and to ignore them during the model selection. Should be
> fairly easy to implement, let me know if you need any pointers.
>
Thanks David. I'll take a look when I can. I may not be very active this
week due to personal items, but intend to knock this out as soon as
things settle down on my end.
No need to rush :)
> I *assume* that for comparison there is nothing to do.
>
I think you're right, at least on QEMU's end.
For libvirt, IIRC, comparison will compare the CPU model cached under
the hostCPU tag to whatever is in the XML. If comparing, say, a gen17
host (no csske support) with a gen15 XML, the result should come up as
"incompatible". To a user, they may think "what the heck, shouldn't
old
gen run on new gen?"
I assume you mean an expanded host model on a z15 that still shows
"csske=true". And it would be correct: the deprecated feature still
around on the older machine (indicated in the host model) is not around
on the newer machine (not indicated in the host model). So starting a VM
with the "host-model" on the old machine cannot be migrated to the new
machine. You'd need to start the VM with the new host-TOBENAMED CPU
model. Comparing with that would work as expected, as the deprecated
features would not be included.
Doesn't the comparison QAPI report which features cause the result of
"incompatible"? Would it make sense to amend the libvirt API to report
features causing this issue? I believe this is what the --error flag is
meant to do, but as far as I know, nothing useful is currently reported.
Most probably it was never implemented on s390x. Makes sense to me.
Something like this (assume we're a gen17 host, and cpu.xml contains a
gen15 host-model)
# virsh hypervisor-cpu-compare cpu.xml --error
error: Failed to compare hypervisor CPU with cpu.xml
error: the CPU is incompatible with host CPU
error: host CPU does not support: csske
I guess instead of "host CPU" you'd want to indicate one of the two CPU
models provided. Not sure how to differentiate them from the XML.
--
Thanks,
David / dhildenb