x86/cpuid: Provide get_scattered_cpuid_leaf()
authorHe Chen <he.chen@linux.intel.com>
Fri, 11 Nov 2016 09:25:35 +0000 (17:25 +0800)
committerThomas Gleixner <tglx@linutronix.de>
Wed, 16 Nov 2016 10:13:09 +0000 (11:13 +0100)
commit47bdf3378d62a627cfb8a54e1180c08d67078b61
tree39e504e28e8b5153b073be518ca35fbf2f6bd8d0
parent47f10a36003eaf493125a5e6687dd1ff775bfd8c
x86/cpuid: Provide get_scattered_cpuid_leaf()

Sparse populated CPUID leafs are collected in a software provided leaf to
avoid bloat of the x86_capability array, but there is no way to rebuild the
real leafs (e.g. for KVM CPUID enumeration) other than rereading the CPUID
leaf from the CPU. While this is possible it is problematic as it does not
take software disabled features into account. If a feature is disabled on
the host it should not be exposed to a guest either.

Add get_scattered_cpuid_leaf() which rebuilds the leaf from the scattered
cpuid table information and the active CPU features.

[ tglx: Rewrote changelog ]

Signed-off-by: He Chen <he.chen@linux.intel.com>
Reviewed-by: Borislav Petkov <bp@suse.de>
Cc: Luwei Kang <luwei.kang@intel.com>
Cc: kvm@vger.kernel.org
Cc: Radim Krčmář <rkrcmar@redhat.com>
Cc: Piotr Luc <Piotr.Luc@intel.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Link: http://lkml.kernel.org/r/1478856336-9388-3-git-send-email-he.chen@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/include/asm/processor.h
arch/x86/kernel/cpu/scattered.c