public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
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);
> 

  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