
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