kernel-fxtec-pro1x/include/asm-x86
Dan Kenigsberg 0771671749 KVM: Enhance guest cpuid management
The current cpuid management suffers from several problems, which inhibit
passing through the host feature set to the guest:

 - No way to tell which features the host supports

  While some features can be supported with no changes to kvm, others
  need explicit support.  That means kvm needs to vet the feature set
  before it is passed to the guest.

 - No support for indexed or stateful cpuid entries

  Some cpuid entries depend on ecx as well as on eax, or on internal
  state in the processor (running cpuid multiple times with the same
  input returns different output).  The current cpuid machinery only
  supports keying on eax.

 - No support for save/restore/migrate

  The internal state above needs to be exposed to userspace so it can
  be saved or migrated.

This patch adds extended cpuid support by means of three new ioctls:

 - KVM_GET_SUPPORTED_CPUID: get all cpuid entries the host (and kvm)
   supports

 - KVM_SET_CPUID2: sets the vcpu's cpuid table

 - KVM_GET_CPUID2: gets the vcpu's cpuid table, including hidden state

[avi: fix original KVM_SET_CPUID not removing nx on non-nx hosts as it did
      before]

Signed-off-by: Dan Kenigsberg <danken@qumranet.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
2008-01-30 17:53:13 +02:00
..
mach-bigsmp x86: cleanup mpspec variants 2008-01-30 13:30:35 +01:00
mach-default x86: cleanup mpspec variants 2008-01-30 13:30:35 +01:00
mach-es7000 x86: cleanup mpspec variants 2008-01-30 13:30:35 +01:00
mach-generic x86: add generic GPIO support to x86 2008-01-30 13:33:35 +01:00
mach-numaq x86: cleanup mpspec variants 2008-01-30 13:30:35 +01:00
mach-rdc321x x86: add support for the RDC R-321x SoC 2008-01-30 13:33:36 +01:00
mach-summit x86: cleanup mpspec variants 2008-01-30 13:30:35 +01:00
mach-visws x86: visws extern inline to static inline 2007-10-17 20:16:39 +02:00
mach-voyager x86: voyager use correct header file name 2007-11-17 16:27:00 +01:00
xen
a.out.h x86: unify a.out{,_32,_64}.h 2007-10-23 22:37:23 +02:00
acpi.h x86: voluntary leave_mm before entering ACPI C3 2008-01-30 13:32:01 +01:00
agp.h x86: remove flush_agp_mappings() 2008-01-30 13:34:07 +01:00
alternative-asm.h x86: rename .i assembler includes to .h 2007-10-17 20:16:29 +02:00
alternative.h x86: actually merge <asm/alternative.h> 2008-01-30 13:30:30 +01:00
apic.h x86: adjust enable_NMI_through_LVT0() 2008-01-30 13:31:24 +01:00
apicdef.h x86: extended interrupt LVT support for AMD Barcelona 2008-01-30 13:30:40 +01:00
arch_hooks.h x86: move debug related declarations to kdebug.h 2008-01-30 13:30:17 +01:00
asm.h x86: introduce asm helpers in local_{32|64}.h 2008-01-30 13:31:26 +01:00
atomic.h
atomic_32.h
atomic_64.h x86: make atomic64_t work like atomic_t 2007-10-17 20:16:21 +02:00
auxvec.h x86: unify include/asm/auxvec_32/64.h 2007-10-17 20:17:13 +02:00
bitops.h x86: change bitwise operations to get a void parameter. 2008-01-30 13:31:31 +01:00
bitops_32.h x86: partial unification of asm-x86/bitops.h 2008-01-30 13:30:55 +01:00
bitops_64.h x86: partial unification of asm-x86/bitops.h 2008-01-30 13:30:55 +01:00
boot.h
bootparam.h x86: EFI runtime service support 2008-01-30 13:31:19 +01:00
bug.h x86: nuke a ton of unused exports 2008-01-30 13:30:28 +01:00
bugs.h x86: arch/x86/mm/init_32.c cleanup 2008-01-30 13:34:10 +01:00
byteorder.h x86: fix asm-x86/byteorder.h for userspace export 2008-01-01 19:12:15 +01:00
cache.h x86: unify include/asm/cache_32/64.h 2007-10-17 20:17:15 +02:00
cacheflush.h x86: fix clflush_page_range logic 2008-01-30 13:34:09 +01:00
calgary.h
calling.h x86: clean up include/asm-x86/calling.h 2008-01-30 13:32:49 +01:00
checksum.h
checksum_32.h
checksum_64.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00
cmpxchg.h
cmpxchg_32.h x86: fall back on interrupt disable in cmpxchg8b on 80386 and 80486 2008-01-30 13:30:47 +01:00
cmpxchg_64.h
compat.h x86: rename the struct pt_regs members for 32/64-bit consistency 2008-01-30 13:30:56 +01:00
cpu.h x86: change NR_CPUS arrays in topology 2008-01-30 13:33:11 +01:00
cpufeature.h x86: convert TSC disabling to generic cpuid disable bitmap 2008-01-30 13:33:20 +01:00
cputime.h x86: trivial header merges 2007-10-17 20:17:08 +02:00
current.h
current_32.h
current_64.h
debugreg.h x86: unify include/asm/debugreg_32/64.h 2007-10-17 20:35:37 +02:00
delay.h x86: unify include/asm/delay_32/64.h 2007-10-17 20:17:17 +02:00
desc.h x86: x86 TLS desc_struct cleanup 2008-01-30 13:31:51 +01:00
desc_64.h x86: unify set_tss_desc 2008-01-30 13:31:14 +01:00
desc_defs.h x86: move _set_gate and its users to a common location 2008-01-30 13:31:14 +01:00
device.h intel-iommu: fix for IOMMU early crash 2007-10-22 08:13:19 -07:00
div64.h x86: unify div64{,_32,_64}.h 2007-10-23 22:37:23 +02:00
dma-mapping.h
dma-mapping_32.h Change table chaining layout 2007-10-22 21:20:01 +02:00
dma-mapping_64.h x86-64: enable sg chaining 2007-10-16 11:26:02 +02:00
dma.h x86: merge include/asm-x86/dma.h 2008-01-30 13:30:20 +01:00
dmi.h x86 32-bit boot: rename bt_ioremap() to early_ioremap() 2008-01-30 13:33:44 +01:00
ds.h x86, ptrace: support 32bit-cross-64bit BTS recording 2008-01-30 13:32:03 +01:00
dwarf2.h
dwarf2_32.h
dwarf2_64.h
e820.h x86: fix the missing BIOS area check in page_is_ram 2008-01-30 13:34:06 +01:00
e820_32.h x86_32: trim memory by updating e820 2008-01-30 13:33:32 +01:00
e820_64.h x86: replace hard coded reservations in 64-bit early boot code with dynamic table 2008-01-30 13:33:17 +01:00
edac.h x86: unify include/asm/cache_32/64.h 2007-10-17 20:17:19 +02:00
efi.h x86: introduce max_pfn_mapped 2008-01-30 13:34:05 +01:00
elf.h x86: kdump failure 2008-01-30 13:33:16 +01:00
emergency-restart.h x86: reboot_{32|64}.c unification 2008-01-30 13:32:51 +01:00
errno.h x86: trivial header merges 2007-10-17 20:17:08 +02:00
fb.h x86: unify include/asm/cache_32/64.h 2007-10-17 20:17:21 +02:00
fcntl.h
fixmap.h
fixmap_32.h x86: early boot debugging via FireWire (ohci1394_dma=early) 2008-01-30 13:34:11 +01:00
fixmap_64.h x86: early boot debugging via FireWire (ohci1394_dma=early) 2008-01-30 13:34:11 +01:00
floppy.h x86: unify include/asm/floppy_32/64.h 2007-10-17 20:24:56 +02:00
frame.h x86: rename .i assembler includes to .h 2007-10-17 20:16:29 +02:00
futex.h x86: merge futex_32/64.h 2008-01-30 13:30:20 +01:00
gart.h x86: disable the GART early, 64-bit 2008-01-30 13:33:09 +01:00
genapic.h
genapic_32.h
genapic_64.h
geode.h x86: GEODE: update GPIO API to support setting multiple GPIOs at once 2008-01-30 13:33:35 +01:00
gpio.h x86: add generic GPIO support to x86 2008-01-30 13:33:35 +01:00
hardirq.h
hardirq_32.h x86: expand /proc/interrupts to include missing vectors, v2 2007-10-17 20:16:53 +02:00
hardirq_64.h
highmem.h
hpet.h x86, rtc: make CONFIG_HPET_EMULATE_RTC usable from modules 2008-01-30 13:33:28 +01:00
hw_irq.h
hw_irq_32.h x86: move to .rodata/.init.data 2008-01-30 13:31:23 +01:00
hw_irq_64.h x86: provide a native_init_IRQ function on 64-bit 2008-01-30 13:33:19 +01:00
hypertransport.h
i387.h x86: x86 user_regset cleanup 2008-01-30 13:31:55 +01:00
i8253.h x86: isolate PIC/PIT in/out calls 2008-01-30 13:33:14 +01:00
i8259.h x86: isolate PIC/PIT in/out calls 2008-01-30 13:33:14 +01:00
ia32.h x86: TLS cleanup 2008-01-30 13:30:46 +01:00
ia32_unistd.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00
ide.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00
idle.h x86: remove dead code and exports 2008-01-30 13:30:28 +01:00
intel_arch_perfmon.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
io.h
io_32.h x86: fix ioremap API 2008-01-30 13:34:06 +01:00
io_64.h x86: make ioremap() UC by default 2008-01-30 13:34:09 +01:00
io_apic.h x86: merge include/asm-x86/sparsemem.h 2008-01-30 13:30:37 +01:00
ioctl.h
ioctls.h x86: unify include/asm/ioctls_32/64.h 2007-10-17 20:26:11 +02:00
iommu.h x86 gart: rename iommu.h to gart.h 2007-10-30 00:22:22 +01:00
ipcbuf.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
ipi.h x86: convert cpu_to_apicid to be a per cpu variable 2007-10-19 20:35:03 +02:00
irq.h
irq_32.h i386: introduce "used_vectors" bitmap which can be used to reserve vectors. 2007-10-19 20:35:03 +02:00
irq_64.h
irq_regs.h
irq_regs_32.h
irq_regs_64.h
irqflags.h x86: irqflags consolidation 2008-01-30 13:30:33 +01:00
ist.h Make asm-x86/bootparam.h includable from userspace. 2007-10-23 15:49:47 +10:00
k8.h x86: move k8 related declarations 2008-01-30 13:30:16 +01:00
Kbuild KVM: Export include/asm-x86/kvm.h 2008-01-30 17:53:08 +02:00
kdebug.h x86: add the capability to print fuzzy backtraces 2008-01-30 13:33:07 +01:00
kexec.h x86: unify kexec_{32|64}.h 2008-01-30 13:31:26 +01:00
kmap_types.h x86: unify include/asm/agp_32/64.h 2007-10-17 20:26:13 +02:00
kprobes.h x86: get rid of _MASK flags 2008-01-30 13:31:27 +01:00
kvm.h KVM: Enhance guest cpuid management 2008-01-30 17:53:13 +02:00
kvm_para.h KVM: Per-architecture hypercall definitions 2008-01-30 17:52:55 +02:00
ldt.h x86: unify include/asm/ldt_32/64.h 2007-10-17 20:16:47 +02:00
lguest.h x86: unify tss_struct 2008-01-30 13:31:31 +01:00
lguest_hcall.h lguest: make async_hcall() static 2007-11-05 21:53:29 +11:00
linkage.h x86: fix UML and -regparm=3 2008-01-30 13:33:00 +01:00
local.h x86: local.h fix checkpatch warnings 2008-01-30 13:31:26 +01:00
mach_apic.h
math_emu.h x86: x86 user_regset cleanup 2008-01-30 13:31:55 +01:00
mc146818rtc.h x86: isolate the rtc code for sharing 2008-01-30 13:30:26 +01:00
mca.h
mca_dma.h
mce.h x86: rename the struct pt_regs members for 32/64-bit consistency 2008-01-30 13:30:56 +01:00
mman.h x86: unify include/asm/mman_32/64.h 2007-10-17 20:26:15 +02:00
mmu.h x86: voluntary leave_mm before entering ACPI C3 2008-01-30 13:32:01 +01:00
mmu_context.h
mmu_context_32.h x86: voluntary leave_mm before entering ACPI C3 2008-01-30 13:32:01 +01:00
mmu_context_64.h x86: put generic mm_hooks include into PARAVIRT 2008-01-30 13:33:19 +01:00
mmx.h
mmzone.h
mmzone_32.h x86: put all kern_addr_valid() incarnations to pgtable.h 2008-01-30 13:30:37 +01:00
mmzone_64.h x86: change size of node ids from u8 to s16 2008-01-30 13:33:25 +01:00
module.h x86: unify module_{32|64}.h 2008-01-30 13:31:43 +01:00
mpspec.h x86: cleanup smp.h variants 2008-01-30 13:30:36 +01:00
mpspec_def.h x86: cleanup mpspec variants 2008-01-30 13:30:35 +01:00
msgbuf.h x86: merge msgbuf_32/64.h 2007-10-23 22:37:24 +02:00
msidef.h
msr-index.h x86: msr for AMD Fam 10h mmio 2008-01-30 13:33:18 +01:00
msr.h x86: fix sched_clock() 2008-01-30 13:32:40 +01:00
mtrr.h x86, 32-bit: trim memory not covered by wb mtrrs 2008-01-30 13:33:18 +01:00
mutex.h
mutex_32.h x86: remove fastcall from include/asm-x86 2008-01-30 13:31:17 +01:00
mutex_64.h
namei.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
nmi.h
nmi_32.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00
nmi_64.h x86: nmi_64.c: make code static 2008-01-30 13:30:31 +01:00
nops.h x86: move nop declarations into separate include file 2008-01-30 13:32:38 +01:00
numa.h
numa_32.h x86: arch/x86/mm/init_32.c cleanup 2008-01-30 13:34:10 +01:00
numa_64.h x86: change size of node ids from u8 to s16 2008-01-30 13:33:25 +01:00
numaq.h
page.h x86: move page_is_ram() function 2008-01-30 13:34:06 +01:00
page_32.h x86: move page_is_ram() function 2008-01-30 13:34:06 +01:00
page_64.h x86: page.h: make pte_t a union to always include 2008-01-30 13:32:57 +01:00
param.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
paravirt.h x86: add mm parameter to paravirt_alloc_pd 2008-01-30 13:33:39 +01:00
parport.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
pci-direct.h
pci.h x86: consolidate toloplogy_32/64.h 2008-01-30 13:30:38 +01:00
pci_32.h PCI: merge almost all of pci_32.h and pci_64.h together 2007-10-12 15:03:20 -07:00
pci_64.h x86: pci-dma_64.c: cleanups 2008-01-30 13:30:31 +01:00
pda.h x86: clean up include/asm-x86/pda.h 2008-01-30 13:31:25 +01:00
percpu.h x86: unify percpu.h 2008-01-30 13:32:53 +01:00
pgalloc.h
pgalloc_32.h x86: defer cr3 reload when doing pud_clear() 2008-01-30 13:34:11 +01:00
pgalloc_64.h
pgtable-2level-defs.h
pgtable-2level.h x86: clean up pte_exec 2008-01-30 13:33:42 +01:00
pgtable-3level-defs.h paravirt: refactor struct paravirt_ops into smaller pv_*_ops 2007-10-16 11:51:29 -07:00
pgtable-3level.h x86: defer cr3 reload when doing pud_clear() 2008-01-30 13:34:11 +01:00
pgtable.h x86: use the same pgd_list for PAE and 64-bit 2008-01-30 13:34:11 +01:00
pgtable_32.h x86: use the same pgd_list for PAE and 64-bit 2008-01-30 13:34:11 +01:00
pgtable_64.h x86: use the same pgd_list for PAE and 64-bit 2008-01-30 13:34:11 +01:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h
processor-cyrix.h
processor-flags.h KVM: Use standard CR8 flags, and fix TPR definition 2007-10-13 10:18:19 +02:00
processor.h x86: add framework to disable CPUID bits on the command line 2008-01-30 13:33:20 +01:00
proto.h x86: replace hard coded reservations in 64-bit early boot code with dynamic table 2008-01-30 13:33:17 +01:00
ptrace-abi.h x86, ptrace: add bts_struct size to status command 2008-01-30 13:32:54 +01:00
ptrace.h x86: rename stack_pointer to kernel_trap_sp 2008-01-30 13:33:16 +01:00
reboot.h
reboot_fixups.h
required-features.h x86: merge required-features.h 2007-10-23 22:37:24 +02:00
resource.h x86: trivial header merges 2007-10-17 20:17:08 +02:00
resume-trace.h x86: merge resume-trace.h variants 2008-01-30 13:30:38 +01:00
rio.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00
rtc.h x86: trivial header merges 2007-10-17 20:17:08 +02:00
rwlock.h x86: use immediates instead of RW_LOCK_BIAS_STR 2008-01-30 13:30:34 +01:00
rwsem.h x86: fix UML and -regparm=3 2008-01-30 13:33:00 +01:00
scatterlist.h x86: merge include/asm-x86/scatterlist.h 2008-01-30 13:30:21 +01:00
seccomp.h
seccomp_32.h
seccomp_64.h
sections.h x86: trivial header merges 2007-10-17 20:17:08 +02:00
segment.h x86: early_idt_handler improvements, 64-bit 2008-01-30 13:33:06 +01:00
semaphore.h
semaphore_32.h x86: fix UML and -regparm=3 2008-01-30 13:33:00 +01:00
semaphore_64.h kill DECLARE_MUTEX_LOCKED 2007-10-17 08:42:47 -07:00
sembuf.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
serial.h x86: merge some trivially mergeable headers 2007-10-17 20:17:09 +02:00
setup.h x86: prepare 64-bit architecture initialization for paravirt 2008-01-30 13:31:11 +01:00
shmbuf.h x86: merge shmbuf_32/64.h 2007-10-23 22:37:24 +02:00
shmparam.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
sigcontext.h x86: use generic register names in struct sigcontext 2008-01-30 13:30:56 +01:00
sigcontext32.h x86: use generic register names in struct sigcontext 2008-01-30 13:30:56 +01:00
siginfo.h x86: unify include/asm/siginfo_32/64.h 2007-10-17 20:26:17 +02:00
signal.h x86 single_step: TIF_FORCED_TF 2008-01-30 13:30:50 +01:00
smp.h
smp_32.h x86: cleanup x86_cpu_to_apicid references 2008-01-30 13:33:11 +01:00
smp_64.h x86: change bios_cpu_apicid to percpu data variable 2008-01-30 13:33:12 +01:00
socket.h
sockios.h x86: merge some trivially mergeable headers 2007-10-17 20:17:09 +02:00
sparsemem.h x86: merge include/asm-x86/sparsemem.h 2008-01-30 13:30:37 +01:00
spinlock.h x86: big ticket locks 2008-01-30 13:33:00 +01:00
spinlock_types.h x86: FIFO ticket spinlocks 2008-01-30 13:31:21 +01:00
srat.h
stacktrace.h x86: add the capability to print fuzzy backtraces 2008-01-30 13:33:07 +01:00
stat.h x86: merge stat_32/64.h 2007-10-23 22:37:24 +02:00
statfs.h x86: merge statfs_32/64.h 2007-10-23 22:37:24 +02:00
string.h
string_32.h i386: Remove strrchr assembler implementation 2007-10-17 20:16:23 +02:00
string_64.h
suspend.h
suspend_32.h x86: unify struct desc_ptr 2008-01-30 13:31:12 +01:00
suspend_64.h x86: make __{save,restore}_processor_state static 2008-01-30 13:31:23 +01:00
swiotlb.h
sync_bitops.h
system.h x86: provide read and write cr8 paravirt hooks 2008-01-30 13:33:19 +01:00
system_64.h x86: move switch_to macro to system.h 2008-01-30 13:31:08 +01:00
tce.h
termbits.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
termios.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
therm_throt.h
thread_info.h
thread_info_32.h x86, ptrace: support for branch trace store(BTS) 2008-01-30 13:31:09 +01:00
thread_info_64.h x86: unify mm_segment_t definition 2008-01-30 13:31:38 +01:00
time.h x86: prepare time related functions for paravirt 2008-01-30 13:31:10 +01:00
timer.h x86: scale cyc_2_nsec according to CPU frequency 2008-01-30 13:30:06 +01:00
timex.h x86: add support for the RDC R-321x SoC 2008-01-30 13:33:36 +01:00
tlb.h x86: unify include/asm/tlb_32/64.h 2007-10-17 20:26:18 +02:00
tlbflush.h x86: merge tlbflush.h variants 2008-01-30 13:30:35 +01:00
topology.h x86: change size of node ids from u8 to s16 2008-01-30 13:33:25 +01:00
tsc.h x86: get_cycles() fix 2008-01-30 13:33:24 +01:00
types.h x86: unify include/asm/types_32/64.h 2007-10-17 20:32:07 +02:00
uaccess.h
uaccess_32.h
uaccess_64.h x86: use helper in fault_64.c 2008-01-30 13:31:42 +01:00
ucontext.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
unaligned.h x86: unify some more trivial include/asm-x86/ 32/64 variants 2007-10-17 20:17:10 +02:00
unistd.h
unistd_32.h x86_32: remove the useless NR_syscalls macro 2008-01-30 13:33:16 +01:00
unistd_64.h x86: cleanup 64bit unistd.h 2007-10-17 20:16:36 +02:00
unwind.h x86: unify include/asm/unwind_32/64.h 2007-10-17 20:32:38 +02:00
user.h
user32.h
user_32.h x86: use generic register names in struct user_regs_struct 2008-01-30 13:30:56 +01:00
user_64.h x86: use generic register names in struct user_regs_struct 2008-01-30 13:30:56 +01:00
vdso.h x86 vDSO: i386 vdso32 2008-01-30 13:30:42 +01:00
vga.h
vgtod.h
vic.h
vm86.h
vmi.h
vmi_time.h
voyager.h
vsyscall.h x86: map vsyscalls early enough 2008-01-30 13:32:39 +01:00
xor.h
xor_32.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00
xor_64.h x86: remove more bogus filenames in comments. 2008-01-30 13:30:28 +01:00