All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Tang Chen <tangchen@cn.fujitsu.com>,
	gleb@kernel.org, mtosatti@redhat.com, nadav.amit@gmail.com,
	jan.kiszka@web.de
Cc: kvm@vger.kernel.org, laijs@cn.fujitsu.com,
	isimatu.yasuaki@jp.fujitsu.com, guz.fnst@cn.fujitsu.com,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v5 5/7] kvm, mem-hotplug: Reload L1's apic access page on migration when L2 is running.
Date: Thu, 11 Sep 2014 11:28:06 +0200	[thread overview]
Message-ID: <54116B26.4070505@redhat.com> (raw)
In-Reply-To: <1410413886-32213-6-git-send-email-tangchen@cn.fujitsu.com>

Il 11/09/2014 07:38, Tang Chen ha scritto:
> This patch only handle "L1 and L2 vm share one apic access page" situation.
> 
> When L1 vm is running, if the shared apic access page is migrated, mmu_notifier will
> request all vcpus to exit to L0, and reload apic access page physical address for
> all the vcpus' vmcs (which is done by patch 5/6). And when it enters L2 vm, L2's vmcs
> will be updated in prepare_vmcs02() called by nested_vm_run(). So we need to do
> nothing.
> 
> When L2 vm is running, if the shared apic access page is migrated, mmu_notifier will
> request all vcpus to exit to L0, and reload apic access page physical address for
> all L2 vmcs. And this patch requests apic access page reload in L2->L1 vmexit.
> 
> Signed-off-by: Tang Chen <tangchen@cn.fujitsu.com>
> ---
>  arch/x86/kvm/vmx.c  | 7 +++++++
>  virt/kvm/kvm_main.c | 1 +
>  2 files changed, 8 insertions(+)
> 
> diff --git a/arch/x86/kvm/vmx.c b/arch/x86/kvm/vmx.c
> index da6d55d..e7704b2 100644
> --- a/arch/x86/kvm/vmx.c
> +++ b/arch/x86/kvm/vmx.c
> @@ -8796,6 +8796,13 @@ static void nested_vmx_vmexit(struct kvm_vcpu *vcpu, u32 exit_reason,
>  	}
>  
>  	/*
> +	 * Do not call kvm_reload_apic_access_page() because we are now
> +	 * running, mmu_notifier will force to reload the page's hpa for L2
> +	 * vmcs. Need to reload it for L1 before entering L1.
> +	 */
> +	kvm_reload_apic_access_page(vcpu->kvm);

That would kill performance for large L1 hosts.
vcpu_reload_apic_access_page should be enough (please rename it to
kvm_vcpu_reload_apic_access_page in patch 4, and export it).

Paolo

> +	/*
>  	 * Exiting from L2 to L1, we're now back to L1 which thinks it just
>  	 * finished a VMLAUNCH or VMRESUME instruction, so we need to set the
>  	 * success or failure flag accordingly.
> diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c
> index d8280de..784127e 100644
> --- a/virt/kvm/kvm_main.c
> +++ b/virt/kvm/kvm_main.c
> @@ -214,6 +214,7 @@ void kvm_reload_apic_access_page(struct kvm *kvm)
>  {
>  	make_all_cpus_request(kvm, KVM_REQ_APIC_PAGE_RELOAD);
>  }
> +EXPORT_SYMBOL_GPL(kvm_reload_apic_access_page);
>  
>  int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id)
>  {
> 


  reply	other threads:[~2014-09-11  9:28 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-11  5:37 [PATCH v5 0/7] kvm, mem-hotplug: Do not pin ept identity pagetable and apic access page Tang Chen
2014-09-11  5:38 ` [PATCH v5 1/7] kvm: Use APIC_DEFAULT_PHYS_BASE macro as the apic access page address Tang Chen
2014-09-11  9:10   ` Paolo Bonzini
2014-09-11  5:38 ` [PATCH v5 2/7] kvm: Remove ept_identity_pagetable from struct kvm_arch Tang Chen
2014-09-11  9:14   ` Paolo Bonzini
2014-09-11  5:38 ` [PATCH v5 3/7] kvm: Make init_rmode_identity_map() return 0 on success Tang Chen
2014-09-11  9:17   ` Paolo Bonzini
2014-09-11 10:26     ` tangchen
2014-09-11  5:38 ` [PATCH v5 4/7] kvm, mem-hotplug: Reload L1' apic access page on migration in vcpu_enter_guest() Tang Chen
2014-09-11  9:21   ` Paolo Bonzini
2014-09-11 10:12     ` Gleb Natapov
2014-09-11 10:47       ` Paolo Bonzini
2014-09-11 11:30         ` Gleb Natapov
2014-09-11 13:05           ` Paolo Bonzini
2014-09-11 13:59             ` Gleb Natapov
2014-09-11 14:06               ` Paolo Bonzini
2014-09-11 14:21                 ` Gleb Natapov
2014-09-11 14:24                   ` Paolo Bonzini
2014-09-11 14:31                     ` Gleb Natapov
2014-09-11 14:37                       ` Paolo Bonzini
2014-09-11 14:47                         ` Gleb Natapov
2014-09-12  3:32                           ` tangchen
2014-09-12  3:36                     ` tangchen
2014-09-11 10:20     ` tangchen
2014-09-11 10:39       ` Paolo Bonzini
2014-09-11  5:38 ` [PATCH v5 5/7] kvm, mem-hotplug: Reload L1's apic access page on migration when L2 is running Tang Chen
2014-09-11  9:28   ` Paolo Bonzini [this message]
2014-09-11  5:38 ` [PATCH v5 6/7] kvm, mem-hotplug: Unpin and remove kvm_arch->apic_access_page Tang Chen
2014-09-11  9:34   ` Paolo Bonzini
2014-09-11  5:38 ` [PATCH v5 7/7] kvm, mem-hotplug: Unpin and remove nested_vmx->apic_access_page Tang Chen
2014-09-11  9:33   ` Paolo Bonzini
2014-09-11  9:43     ` tangchen

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=54116B26.4070505@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=gleb@kernel.org \
    --cc=guz.fnst@cn.fujitsu.com \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=jan.kiszka@web.de \
    --cc=kvm@vger.kernel.org \
    --cc=laijs@cn.fujitsu.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=nadav.amit@gmail.com \
    --cc=tangchen@cn.fujitsu.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.