On Fri, Feb 12, 2016 at 08:59:29PM +0700, Suravee Suthikulpanit wrote: > From: Suravee Suthikulpanit <Suravee.Suthikulpanit@xxxxxxx> > > 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 <Suravee.Suthikulpanit@xxxxxxx> > --- > 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. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html