Re: [PATCH v8 7/7] KVM: x86: virtualize cpuid faulting

From: Eduardo Habkost
Date: Mon Nov 07 2016 - 13:38:17 EST


On Fri, Nov 04, 2016 at 10:57:27PM +0100, Paolo Bonzini wrote:
>
>
> On 04/11/2016 21:34, David Matlack wrote:
> > On Mon, Oct 31, 2016 at 6:37 PM, Kyle Huey <me@xxxxxxxxxxxx> wrote:
> >> + case MSR_PLATFORM_INFO:
> >> + /* cpuid faulting is supported */
> >> + msr_info->data = PLATINFO_CPUID_FAULT;
> >> + break;
> >
> > This could break save/restore, if for example, a VM is migrated to a
> > version of KVM without MSR_PLATFORM_INFO support. I think the way to
> > handle this is to make MSR_PLATFORM_INFO writeable (but only from
> > userspace) so that hypervisors can defend themselves (by setting this
> > MSR to 0).
>
> Right---and with my QEMU hat on, this feature will have to be enabled
> manually on the command line because of the way QEMU supports running
> with old kernels. :( This however does not impact the KVM patch.
>
> We may decide that, because CPUID faulting doesn't have a CPUID bit and
> is relatively a "fringe" feature, we are okay if the kernel enables this
> unconditionally and then userspace can arrange to block migration (in
> QEMU this would use a subsection). David, Eduardo, opinions?

Doing this would let guest code intentionally prevent the VM from
being migrated to some hosts. Maybe it would be still acceptable
to do it by default, maybe not. But even if we decide to do this
by default, I would like to have the ability to disable the
feature just in case we find out it was a bad idea.

--
Eduardo