From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gleb Natapov Subject: Re: [PATCH v11 0/3] x86, apicv: Add APIC virtualization support Date: Wed, 16 Jan 2013 12:27:55 +0200 Message-ID: <20130116102755.GA19358@redhat.com> References: <1358331672-32384-1-git-send-email-yang.z.zhang@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: kvm@vger.kernel.org, haitao.shan@intel.com, mtosatti@redhat.com, xiantao.zhang@intel.com To: Yang Zhang Return-path: Received: from mx1.redhat.com ([209.132.183.28]:54253 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758770Ab3APK16 (ORCPT ); Wed, 16 Jan 2013 05:27:58 -0500 Content-Disposition: inline In-Reply-To: <1358331672-32384-1-git-send-email-yang.z.zhang@intel.com> Sender: kvm-owner@vger.kernel.org List-ID: Please be patient. Nor me neither Marcelo reviewed previous submission. There is not point sending a new one. On Wed, Jan 16, 2013 at 06:21:09PM +0800, Yang Zhang wrote: > From: Yang Zhang > > APIC virtualization is a new feature which can eliminate most of VM exit > when vcpu handle a interrupt: > > APIC register virtualization: > APIC read access doesn't cause APIC-access VM exits. > APIC write becomes trap-like. > > Virtual interrupt delivery: > Virtual interrupt delivery avoids KVM to inject vAPIC interrupts > manually, which is fully taken care of by the hardware. > > Please refer to Intel SDM volume 3, chapter 29 for more details. > Changes v10 to v11: > * Use two new msr bitmaps for guest that enabling x2apic mode: > Since msr bitmap is shared by all guests, it will break guest that > not using x2apic when updating the global msr bitmap. To solve this, > we use two new msr bitmap for guest which using x2apic. > > Changes v9 to v10: > * Enable virtualize x2apic mode when guest is using x2apic and apicv: > There is no point to enable x2apic mode when apicv is disabled. > * Grep ioapic_lock when traversing ioapic entry to set eoi exit bitmap > * Rebased on top of KVM upstream > > Changes v8 to v9: > * Update eoi exit bitmap by vcpu itself. > * Enable virtualize x2apic mode when guest is using x2apic. > * Rebase on top of KVM upstream > > Changes v7 to v8: > * According Marcelo's suggestion, add comments for irr_pending and isr_count, > since the two valiables have different meaning when using apicv. > * Set highest bit in vISR to SVI after migation. > * Use spinlock to access eoi exit bitmap synchronously. > * Enable virtualize x2apic mode when guest is using x2apic > * Rebased on top of KVM upstream. > > Changes v6 to v7: > * fix a bug when set exit bitmap. > * Rebased on top of KVM upstream. > > Changes v5 to v6: > * minor adjustments according gleb's comments > * Rebased on top of KVM upstream. > > Changes v4 to v5: > * Set eoi exit bitmap when an interrupt has notifier registered. > * Use request to track ioapic entry's modification. > * Rebased on top of KVM upstream. > > Changes v3 to v4: > * use one option to control both register virtualization and virtual interrupt > delivery. > * Update eoi exit bitmap when programing ioapic or programing apic's id/dfr/ldr. > * Rebased on top of KVM upstream. > > Changes v2 to v3: > * Drop Posted Interrupt patch from v3. > According Gleb's suggestion, we will use global vector for all VCPUs as notification > event vector. So we will rewrite the Posted Interrupt patch. And resend it later. > * Use TMR to set the eoi exiting bitmap. We only want to set eoi exiting bitmap for > those interrupt which is level trigger or has notifier in EOI write path. So TMR is > enough to distinguish the interrupt trigger mode. > * Simplify some code according Gleb's comments. > * rebased on top of KVM upstream. > > Changes v1 to v2: > * Add Posted Interrupt support in this series patch. > * Since there is a notifer hook in vAPIC EOI for PIT interrupt. So always Set PIT > interrupt in eoi exit bitmap to force vmexit when EOI to interrupt. > * Rebased on top of KVM upstream > > Yang Zhang (3): > x86, apicv: add APICv register virtualization support > x86, apicv: add virtual x2apic support > x86, apicv: add virtual interrupt delivery support > > arch/ia64/kvm/lapic.h | 6 + > arch/x86/include/asm/kvm_host.h | 8 + > arch/x86/include/asm/vmx.h | 14 ++ > arch/x86/kvm/irq.c | 56 ++++++- > arch/x86/kvm/lapic.c | 99 +++++++---- > arch/x86/kvm/lapic.h | 25 +++ > arch/x86/kvm/svm.c | 31 ++++ > arch/x86/kvm/vmx.c | 366 ++++++++++++++++++++++++++++++++++++++- > arch/x86/kvm/x86.c | 11 +- > arch/x86/kvm/x86.h | 2 + > include/linux/kvm_host.h | 3 + > virt/kvm/ioapic.c | 38 ++++ > virt/kvm/ioapic.h | 1 + > virt/kvm/irq_comm.c | 25 +++ > virt/kvm/kvm_main.c | 5 + > 15 files changed, 641 insertions(+), 49 deletions(-) -- Gleb.