On Wed, Jan 18, 2017 at 08:18:40PM +0100, David Hildenbrand wrote:
> Am 18.01.2017 um 18:34 schrieb Eduardo Habkost:
> > On Wed, Jan 18, 2017 at 12:09:28PM -0500, Jason J. Herne wrote:
> >> On 01/18/2017 12:00 PM, Eduardo Habkost wrote:
> >>> On Tue, Jan 17, 2017 at 10:22:10AM -0500, Jason J. Herne wrote:
> >>>> On 01/16/2017 08:01 PM, Eduardo Habkost wrote:
> >>>>> This is a follow-up to the series that implements
> >>>>> query-cpu-model-expansion. Before including the test script, the
> >>>>> series has some fixes to allow the results of
> >>>>> query-cpu-model-expansion to be used in the QEMU command-line.
> >>>>>
> >>>>> The script probably will work on s390x too, but I couldn't test
> >>>>> it yet.
> >>>>>
> >>>>
> >>>> Eduardo,
> >>>>
> >>>> This test seems to mostly work on s390. The only issue I ran into is
> >>>> querying host model using tcg only. s390 requires kvm to query the host
> >>>> model. Perhaps we could just skip the tcg host test case on s390?
> >>>
> >>> We could still try to test "host", but add it to a greylist where
> >>> errors returned by query-cpu-model-expansion can be non-fatal.
> >>> query-cpu-model-expansion model="host" can also fail with KVM if
> >>> the host doesn't support CPU models.
> >>>
> >>
> >> David had the idea to just support -cpu host for tcg. We could do that.
> >> In the meantime, I'm ok with your greylist idea too. This would allow the
> >> script to work properly on s390 right from the start, and we can remove the
> >> greylist when s390 supports specifying -cpu host for tcg.
> > 
> > I believe we will still need to ignore query-cpu-model-expansion
> > errors on some cases, otherwise the test script will fail on
> > hosts where KVM doesn't support CPU models in KVM.
> 
> That is indeed true. For "host" + KVM there would have to be an extra
> check. non-fatal error sound right for this case (e.g. a warning)
> 
> > 
> > But we probably don't need a hardcoded greylist, anyway: we could
> > just make the error non-fatal in case the CPU model is not
> > reported as migration-safe in query-cpu-definitions.
> > 
> > But I was wondering:
> > 
> > 1) Isn't "-cpu host" the default CPU model on s390x on KVM,
> >    even if the host doesn't support CPU models?
> 
> Yes, it has an inbuilt compatibility mode when specified. If KVM support
> for cpu models is missing, using "-cpu host" will work (as it worked on
> QEMU versions without cpu model support), doing something like "-cpu
> host,vx=on" will not work, as modifying features is not possible (as the
> interface for query/config is missing).
> 
> Using "host" for all query-cpu-model is forbiden, as we can't tell what
> this model looks like.
> 
> > 
> > 2) Is it really correct to return an error on
> >    "query-cpu-model-expansion model=host type=full" if the host
> >    doesn't support CPU models?
> > 
> 
> Yes it is, because there is no way to tell which features there are.
> Returning { name: "host", props: {} } would be misleading, as it
> would mean that there are no features. Which is wrong. We just can't
> tell. It is up to the caller to handle this. E.g. ignoring and
> continuing, doing compatibility stuff or simply reporting an error.

Well, if there's a risk { props: {} } will be interpreted as "all
features disabled" instead of "we don't know the real value for
any feature", then I agree that returning an error is better and
safer.

> 
> Also think about "query-cpu-model-expansion model=host type=static",
> which will primarily be used by libvirt on s390x. There is no way to
> expand this into a static cpu model. Faking anything will just hide errors.

Yes, static expansion of host model must always return an error
if it's not possible to expand.

> 
> If "host" can't be expanded, QEMU has to be treated like there is no CPU
> model support (as for older QEMU versions).

OK. I will propose a patch updating the query-cpu-model-expansion
documentation to be more explicit about it.

> 
> >    What if it just returned { name: "host", props: {} }
> >    on those cases, meaning that the CPU model is valid and
> >    usable, but QEMU is unable to provide extra information about
> >    it.
> > 
> 
> 
> -- 
> 
> David

-- 
Eduardo

Reply via email to