From: Paolo Bonzini <pbonzini@redhat.com>
To: Andy Lutomirski <luto@amacapital.net>
Cc: kvm list <kvm@vger.kernel.org>,
Rusty Russell <rusty@rustcorp.com.au>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>,
stable@vger.kernel.org
Subject: Re: [PATCH] x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit
Date: Wed, 10 Dec 2014 12:49:31 +0100 [thread overview]
Message-ID: <5488334B.60805@redhat.com> (raw)
In-Reply-To: <f4a06ce6a59616fe27be6f2aade468b76fad7904.1417834933.git.luto@amacapital.net>
On 06/12/2014 04:03, Andy Lutomirski wrote:
> paravirt_enabled has the following effects:
>
> - Disables the F00F bug workaround warning. There is no F00F bug
> workaround any more because Linux's standard IDT handling already
> works around the F00F bug, but the warning still exists. This
> is only cosmetic, and, in any event, there is no such thing as
> KVM on a CPU with the F00F bug.
>
> - Disables 32-bit APM BIOS detection. On a KVM paravirt system,
> there should be no APM BIOS anyway.
>
> - Disables tboot. I think that the tboot code should check the
> CPUID hypervisor bit directly if it matters.
>
> - paravirt_enabled disables espfix32. espfix32 should *not* be
> disabled under KVM paravirt.
>
> The last point is the purpose of this patch. It fixes a leak of the
> high 16 bits of the kernel stack address on 32-bit KVM paravirt
> guests.
>
> While I'm at it, this removes pv_info setup from kvmclock. That
> code seems to serve no purpose.
kvmclock_init runs before kvm_guest_init, and this is a stable@ patch so
for the sake of extra safety I've left the pv_info.name assignment in.
Applied (locally for now), will be in 3.19.
Paolo
> Cc: stable@vger.kernel.org
> Signed-off-by: Andy Lutomirski <luto@amacapital.net>
> ---
> arch/x86/kernel/kvm.c | 9 ++++++++-
> arch/x86/kernel/kvmclock.c | 2 --
> 2 files changed, 8 insertions(+), 3 deletions(-)
>
> diff --git a/arch/x86/kernel/kvm.c b/arch/x86/kernel/kvm.c
> index f6945bef2cd1..94f643484300 100644
> --- a/arch/x86/kernel/kvm.c
> +++ b/arch/x86/kernel/kvm.c
> @@ -283,7 +283,14 @@ NOKPROBE_SYMBOL(do_async_page_fault);
> static void __init paravirt_ops_setup(void)
> {
> pv_info.name = "KVM";
> - pv_info.paravirt_enabled = 1;
> +
> + /*
> + * KVM isn't paravirt in the sense of paravirt_enabled. A KVM
> + * guest kernel works like a bare metal kernel with additional
> + * features, and paravirt_enabled is about features that are
> + * missing.
> + */
> + pv_info.paravirt_enabled = 0;
>
> if (kvm_para_has_feature(KVM_FEATURE_NOP_IO_DELAY))
> pv_cpu_ops.io_delay = kvm_io_delay;
> diff --git a/arch/x86/kernel/kvmclock.c b/arch/x86/kernel/kvmclock.c
> index d9156ceecdff..d4d9a8ad7893 100644
> --- a/arch/x86/kernel/kvmclock.c
> +++ b/arch/x86/kernel/kvmclock.c
> @@ -263,8 +263,6 @@ void __init kvmclock_init(void)
> #endif
> kvm_get_preset_lpj();
> clocksource_register_hz(&kvm_clock, NSEC_PER_SEC);
> - pv_info.paravirt_enabled = 1;
> - pv_info.name = "KVM";
>
> if (kvm_para_has_feature(KVM_FEATURE_CLOCKSOURCE_STABLE_BIT))
> pvclock_set_flags(PVCLOCK_TSC_STABLE_BIT);
>
next prev parent reply other threads:[~2014-12-10 11:49 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-06 3:03 [PATCH] x86, kvm: Clear paravirt_enabled on KVM guests for espfix32's benefit Andy Lutomirski
2014-12-06 15:30 ` Andy Lutomirski
2014-12-08 15:45 ` Konrad Rzeszutek Wilk
2014-12-08 16:43 ` Andy Lutomirski
2014-12-10 11:49 ` Paolo Bonzini [this message]
2014-12-10 20:46 ` Andy Lutomirski
2014-12-10 21:05 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5488334B.60805@redhat.com \
--to=pbonzini@redhat.com \
--cc=konrad.wilk@oracle.com \
--cc=kvm@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=rusty@rustcorp.com.au \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox