On 09/25/2014 02:59 PM, Ján Tomko wrote:
On 09/25/2014 04:31 AM, zhang bo wrote:
> On 2014/9/24 19:49, Ján Tomko wrote:
>> I think the simplest fix for host-passthrough would be to apply the same
>> filter host-model has.
>>
>> But since using invtsc with host-passthrough requires both +invtsc and
>> migratable=no, so we'd need to either add a 'migratable' option to
>> host-passthrough (this would skip the filter and add migratable=on), or allow
>> fine-tuning the features for host-passthrough too.
>>
>> Jan
>>
>
> Additional to the 2 suggestions, will that be OK to remove the codes in
qemuProcessVerifyGuestCPU that checks whether the vm->def has
> invtsc flag while qemu doesn't?
>
> - if (STREQ(feature->name, "invtsc") &&
> - !cpuHasFeature(guestcpu, feature->name)) {
> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> - _("host doesn't support invariant
TSC"));
> - goto cleanup;
> - }
Without this check, the feature would be quietly discarded by QEMU if the host
kernel or host CPU does not support this feature.
I think it's better to leave "invtsc" out when we're generating the
cpu
definition for host-passthrough, as we do for host-model.
Jan
>
> Removing these codes, plus with the solution that "add 'migratable'
option to host-passthrough", it seems the problem would
> be gone, and invtsc would not be so 'distinctive' in libvirt any more.
>
I've sent a patch that filters out the flag and also ignores the check for
host-passthrough (to allow guests already saved with the flag to be restored)
https://www.redhat.com/archives/libvir-list/2014-September/msg01680.html
Can you please take a look at it?
Thanks,
Jan