On Mon, Feb 06 2023, Eric Auger <eauger@xxxxxxxxxx> wrote: > Hi, > > On 2/3/23 14:44, Cornelia Huck wrote: >> @@ -517,6 +583,13 @@ static void test_query_cpu_model_expansion_kvm(const void *data) >> assert_set_feature(qts, "host", "pmu", false); >> assert_set_feature(qts, "host", "pmu", true); >> >> + /* >> + * Unfortunately, there's no easy way to test whether this instance >> + * of KVM supports MTE. So we can only assert that the feature >> + * is present, but not whether it can be toggled. >> + */ >> + assert_has_feature(qts, "host", "mte"); > I know you replied in v4 but I am still confused: > What does > (QEMU) query-cpu-model-expansion type=full model={"name":"host"} > return on a MTE capable host and and on a non MTE capable host? FWIW, it's "auto" in both cases, but the main problem is actually something else... > > If I remember correctly qmp_query_cpu_model_expansion loops over the > advertised features and try to set them explicitly so if the host does > not support it this should fail and the result should be different from > the case where the host supports it (even if it is off by default) > > Does assert_has_feature_enabled() returns false? I poked around a bit with qmp on a system (well, model) with MTE where starting a guest with MTE works just fine. I used the minimal setup described in docs/devel/writing-monitor-commands.rst, and trying to do a cpu model expansion with mte=on fails because the KVM ioctl fails with -EINVAL (as we haven't set up proper memory mappings). The qtest setup doesn't do any proper setup either AFAICS, so enabling MTE won't work even if KVM and the host support it. (Trying to enable MTE on a host that doesn't support it would also report an error, but a different one, as KVM would not support the MTE cap at all.) We don't really know beforehand what to expect ("auto" is not yet expanded, see above), so I'm not sure how to test this in a meaningful way, even if we did set up memory mappings (which seems like overkill for a feature test.) The comment describing this could be improved, though :)