From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752816AbcBLONl (ORCPT ); Fri, 12 Feb 2016 09:13:41 -0500 Received: from mail.skyhub.de ([78.46.96.112]:53063 "EHLO mail.skyhub.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752447AbcBLONk (ORCPT ); Fri, 12 Feb 2016 09:13:40 -0500 Date: Fri, 12 Feb 2016 15:13:37 +0100 From: Borislav Petkov To: Suravee Suthikulpanit Cc: joro@8bytes.org, alex.williamson@redhat.com, gleb@kernel.org, pbonzini@redhat.com, kvm@vger.kernel.org, linux-kernel@vger.kernel.org, wei@redhat.com, sherry.hurwitz@amd.com Subject: Re: [PART1 RFC 4/9] KVM: x86: Detect and Initialize AVIC support Message-ID: <20160212141337.GA4504@pd.tnic> References: <1455285574-27892-1-git-send-email-suravee.suthikulpanit@amd.com> <1455285574-27892-5-git-send-email-suravee.suthikulpanit@amd.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <1455285574-27892-5-git-send-email-suravee.suthikulpanit@amd.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 12, 2016 at 08:59:29PM +0700, Suravee Suthikulpanit wrote: > From: Suravee Suthikulpanit > > This patch introduces AVIC-related data structure, and AVIC > intitialization code. > > There are three main data structures for AVIC: > * Virtual APIC (vAPIC) backing page (per-VCPU) > * Physical APIC ID table (per-VM) > * Logical APIC ID table (per-VM) > > In order to accommodate the new per-VM tables, we introduce > a new per-VM arch-specific void pointer, struct kvm_arch.arch_data. > This will point to the newly introduced struct svm_vm_data. > > This patch also introduces code to detect the new new SVM feature CPUID > Fn8000_000A_EDX[13], which identifies support for AMD Advance Virtual > Interrupt Controller (AVIC). > > Currently, AVIC is disabled by default. Users can manually > enable AVIC via kernel boot option kvm-amd.avic=1 or during > kvm-amd module loading with parameter avic=1. > > Signed-off-by: Suravee Suthikulpanit > --- > arch/x86/include/asm/cpufeature.h | 1 + > arch/x86/include/asm/kvm_host.h | 2 + > arch/x86/kernel/cpu/scattered.c | 1 + > arch/x86/kvm/svm.c | 404 +++++++++++++++++++++++++++++++++++++- > 4 files changed, 407 insertions(+), 1 deletion(-) > > diff --git a/arch/x86/include/asm/cpufeature.h b/arch/x86/include/asm/cpufeature.h > index 7ad8c94..ee85900 100644 > --- a/arch/x86/include/asm/cpufeature.h > +++ b/arch/x86/include/asm/cpufeature.h > @@ -203,6 +203,7 @@ > > #define X86_FEATURE_VMMCALL ( 8*32+15) /* Prefer vmmcall to vmcall */ > #define X86_FEATURE_XENPV ( 8*32+16) /* "" Xen paravirtual guest */ > +#define X86_FEATURE_AVIC ( 8*32+17) /* AMD Virtual Interrupt Controller support */ > > > /* Intel-defined CPU features, CPUID level 0x00000007:0 (ebx), word 9 */ > diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h > index 44adbb8..7b78328 100644 > --- a/arch/x86/include/asm/kvm_host.h > +++ b/arch/x86/include/asm/kvm_host.h > @@ -754,6 +754,8 @@ struct kvm_arch { > > bool irqchip_split; > u8 nr_reserved_ioapic_pins; > + > + void *arch_data; > }; > > struct kvm_vm_stat { > diff --git a/arch/x86/kernel/cpu/scattered.c b/arch/x86/kernel/cpu/scattered.c > index 8cb57df..88cfbe7 100644 > --- a/arch/x86/kernel/cpu/scattered.c > +++ b/arch/x86/kernel/cpu/scattered.c > @@ -37,6 +37,7 @@ void init_scattered_cpuid_features(struct cpuinfo_x86 *c) > { X86_FEATURE_HW_PSTATE, CR_EDX, 7, 0x80000007, 0 }, > { X86_FEATURE_CPB, CR_EDX, 9, 0x80000007, 0 }, > { X86_FEATURE_PROC_FEEDBACK, CR_EDX,11, 0x80000007, 0 }, > + { X86_FEATURE_AVIC, CR_EDX,13, 0x8000000a, 0 }, > { 0, 0, 0, 0, 0 } > }; You need to check tip/master when/before/after touching arch/x86/: a1ff57260818 ("x86/cpufeature: Add AMD AVIC bit") -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply.