On Sat, Jul 06, 2019 at 12:07:29AM +0200, Paolo Bonzini wrote: > On 05/07/19 23:44, Eduardo Habkost wrote: > > On Fri, Jul 05, 2019 at 11:32:07PM +0200, Paolo Bonzini wrote: > >> On 05/07/19 22:37, Eduardo Habkost wrote: > >>> Filtering and reporting is separate because > >>> x86_cpu_filter_features() is also called from a QMP command > >>> handler that is not supposed to generate any warnings on stderr > >>> (query-cpu-model-expansion). > >> > >> But that one should not set check_cpuid or enforce_cpuid, should it? > > > > check_cpuid is set to true by default. > > Ok, that's what I missed. > > >> > >> (I can still split the filtering and reporting if you prefer). > > > > Maybe it will work if we just add a 'bool verbose' parameter to > > x86_cpu_filter_features(). > > > > x86_cpu_realizefn() would call: > > x86_cpu_filter_features(cpu, cpu->check_cpuid); > > ... "|| cpu->enforce_cpuid". > > > x86_cpu_class_check_missing_features() would call: > > x86_cpu_filter_features(cpu, false); > > Or set check_cpuid to false there after creating the object?
It would work too, but I prefer to make the side effects of x86_cpu_filter_features() more explicit. -- Eduardo