linux-stable/arch/x86/include/asm
Xiao Guangrong 21ebbedadd KVM: page track: add the framework of guest page tracking
The array, gfn_track[mode][gfn], is introduced in memory slot for every
guest page, this is the tracking count for the gust page on different
modes. If the page is tracked then the count is increased, the page is
not tracked after the count reaches zero

We use 'unsigned short' as the tracking count which should be enough as
shadow page table only can use 2^14 (2^3 for level, 2^1 for cr4_pae, 2^2
for quadrant, 2^3 for access, 2^1 for nxe, 2^1 for cr0_wp, 2^1 for
smep_andnot_wp, 2^1 for smap_andnot_wp, and 2^1 for smm) at most, there
is enough room for other trackers

Two callbacks, kvm_page_track_create_memslot() and
kvm_page_track_free_memslot() are implemented in this patch, they are
internally used to initialize and reclaim the memory of the array

Currently, only write track mode is supported

Signed-off-by: Xiao Guangrong <guangrong.xiao@linux.intel.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-03-03 14:36:20 +01:00
..
crypto x86/fpu: Rename i387.h to fpu/api.h 2015-05-19 15:47:30 +02:00
fpu x86/fpu: Disable AVX when eagerfpu is off 2016-01-12 11:51:21 +01:00
numachip x86/numachip: Introduce Numachip2 timer mechanisms 2015-09-22 22:25:33 +02:00
trace x86/fpu/mpx: Rework MPX 'xstate' types 2015-09-14 12:22:00 +02:00
uv x86/platform/uv: Insert per_cpu accessor function on uv_hub_nmi 2015-09-13 09:27:53 +02:00
xen xen: rename dom0_op to platform_op 2015-12-21 14:40:55 +00:00
a.out-core.h
acenv.h
acpi.h acpi, x86: Implement arch_apei_get_mem_attributes() 2015-08-08 10:37:39 +02:00
agp.h
alternative-asm.h x86/alternatives: Document macros 2015-05-06 11:25:31 +02:00
alternative.h x86/alternatives, x86/fpu: Add 'alternatives_patched' debug flag and use it in xsave_state() 2015-05-19 15:48:03 +02:00
amd_nb.h x86/amd_nb, EDAC: Rename amd_get_node_id() 2015-10-21 11:10:55 +02:00
apb_timer.h
apic.h x86/apic: Introduce apic_extnmi command line parameter 2015-12-19 11:07:01 +01:00
apic_flat_64.h
apicdef.h
apm.h
arch_hweight.h x86/hweight: Force inlining of __arch_hweight{32,64}() 2015-08-05 09:38:09 +02:00
archrandom.h
asm-offsets.h
asm.h x86/asm/uaccess: Unify the ALIGN_DESTINATION macro 2015-05-14 07:25:34 +02:00
atomic.h x86/headers: Don't include asm/processor.h in asm/atomic.h 2015-12-06 12:56:03 +01:00
atomic64_32.h x86/headers: Don't include asm/processor.h in asm/atomic.h 2015-12-06 12:56:03 +01:00
atomic64_64.h atomic, arch: Audit atomic_{read,set}() 2015-09-23 09:54:28 +02:00
barrier.h x86: define __smp_xxx 2016-01-12 20:46:59 +02:00
bios_ebda.h
bitops.h
boot.h x86/boot: Double BOOT_HEAP_SIZE to 64KB 2016-01-11 12:30:50 +01:00
bootparam_utils.h
bug.h
bugs.h
cache.h
cacheflush.h nd_blk: change aperture mapping from WC to WB 2015-08-27 19:38:28 -04:00
calgary.h x86/platform/calgary: Constify cal_chipset_ops structures 2015-11-29 08:50:58 +01:00
ce4100.h
checksum.h
checksum_32.h
checksum_64.h
clocksource.h
cmdline.h
cmpxchg.h arch: Remove __ARCH_HAVE_CMPXCHG 2015-05-13 10:55:42 +02:00
cmpxchg_32.h x86/cpufeature: Remove unused and seldomly used cpu_has_xx macros 2015-12-19 11:49:55 +01:00
cmpxchg_64.h x86/cpufeature: Remove unused and seldomly used cpu_has_xx macros 2015-12-19 11:49:55 +01:00
compat.h
cpu.h x86/cpu: Unify CPU family, model, stepping calculation 2015-11-24 09:15:54 +01:00
cpu_device_id.h
cpufeature.h Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-11 16:26:03 -08:00
cpumask.h
crash.h
current.h
debugreg.h
delay.h x86/asm/delay: Introduce an MWAITX-based delay with a configurable timer 2015-08-22 14:52:16 +02:00
desc.h x86/ldt: Make modify_ldt synchronous 2015-07-31 10:23:23 +02:00
desc_defs.h
device.h x86/PCI: Allow DMA ops specific to a PCI domain 2016-01-15 13:54:55 -06:00
disabled-features.h
div64.h
dma-mapping.h dma-mapping: always provide the dma_map_ops based implementation 2016-01-20 17:09:18 -08:00
dma.h
dmi.h
dwarf2.h x86/asm: Remove the xyz_cfi macros from dwarf2.h 2015-10-14 16:56:28 +02:00
e820.h mm: move memtest under mm 2015-04-14 16:49:06 -07:00
edac.h EDAC: Cleanup atomic_scrub mess 2015-05-28 15:31:53 +02:00
efi.h * Make the EFI System Resource Table (ESRT) driver explicitly 2015-10-14 16:51:34 +02:00
elf.h x86/elf/64: Clear more registers in elf_common_init() 2015-10-09 09:41:06 +02:00
emergency-restart.h
entry_arch.h Merge branch 'x86/ras' into x86/core, to fix conflicts 2015-06-07 15:35:27 +02:00
espfix.h x86/espfix: Add 'cpu' parameter to init_espfix_ap() 2015-07-06 15:00:33 +02:00
exec.h
fb.h
fixmap.h x86/vdso: Remove pvclock fixmap machinery 2015-12-11 08:56:03 +01:00
floppy.h
frame.h x86/debug: Remove perpetually broken, unmaintainable dwarf annotations 2015-06-02 07:57:48 +02:00
ftrace.h ftrace: Format MCOUNT_ADDR address as type unsigned long 2015-07-20 22:30:53 -04:00
futex.h
gart.h
genapic.h
geode.h
gpio.h
hardirq.h Merge branch 'x86/ras' into x86/core, to fix conflicts 2015-06-07 15:35:27 +02:00
highmem.h kmap_atomic_to_page() has no users, remove it 2015-11-09 15:11:24 -08:00
hpet.h timers/x86/hpet: Type adjustments 2015-10-21 11:17:32 +02:00
hugetlb.h mm/hugetlb: remove arch_prepare/release_hugepage from arch headers 2015-06-25 17:00:35 -07:00
hw_breakpoint.h
hw_irq.h x86/PCI: Add driver for Intel Volume Management Device (VMD) 2016-01-15 13:54:55 -06:00
hypertransport.h
hypervisor.h hypervisor/x86/xen: Unset X86_BUG_SYSRET_SS_ATTRS on Xen PV guests 2015-05-05 18:27:43 +01:00
i8259.h x86/irq: Probe for PIC presence before allocating descs for legacy IRQs 2015-11-07 10:37:37 +01:00
ia32.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
ia32_unistd.h
idle.h
imr.h
inat.h
inat_types.h
init.h
insn.h
inst.h
intel-mid.h
intel_mid_vrtc.h
intel_pmc_ipc.h intel_pmc_ipc: Update kerneldoc formatting 2015-07-09 11:23:15 -07:00
intel_pt.h perf/x86/intel/pt: Add interface to stop Intel PT logging 2015-11-23 09:58:26 +01:00
intel_punit_ipc.h platform:x86: add Intel P-Unit mailbox IPC driver 2016-01-19 15:49:36 -08:00
intel_scu_ipc.h
intel_telemetry.h platform/x86: Add Intel Telemetry Core Driver 2016-01-19 17:35:50 -08:00
io.h libnvdimm for 4.3: 2015-09-08 14:35:59 -07:00
io_apic.h x86: Cleanup irq_domain ops 2015-04-24 15:36:55 +02:00
iomap.h
iommu.h
iommu_table.h x86/iommu: Fix header comments regarding standard and _FINISH macros 2015-04-09 10:56:31 +02:00
iosf_mbi.h ACPI / LPSS: override power state for LPSS DMA device 2016-01-07 14:11:32 +01:00
ipi.h x86/apic: Provide default send single IPI wrapper 2015-11-05 13:07:53 +01:00
irq.h x86/irq: Call irq_force_move_complete with irq descriptor 2016-01-15 13:44:01 +01:00
irq_regs.h
irq_remapping.h irq_remapping: move structs outside #ifdef 2015-10-01 15:06:42 +02:00
irq_vectors.h x86/vm86: Move the vm86 IRQ definitions to vm86.h 2015-07-31 13:31:10 +02:00
irq_work.h
irqdomain.h x86/irq: Move irqdomain specific code into asm/irqdomain.h 2015-04-24 15:36:55 +02:00
irqflags.h x86/asm/entry: Drop now unused ENABLE_INTERRUPTS_SYSEXIT32 2015-04-03 10:34:19 +02:00
ist.h
jump_label.h x86/asm: Add asm macros for static keys/jump labels 2015-11-24 09:56:44 +01:00
kasan.h x86/kasan: Define KASAN_SHADOW_OFFSET per architecture 2015-08-22 14:54:55 +02:00
kbdleds.h
Kbuild mm: clean up per architecture MM hook header files 2015-07-17 16:39:53 -07:00
kdebug.h x86/kexec: Remove obsolete 'in_crash_kexec' flag 2015-10-12 09:43:11 +02:00
kexec-bzimage64.h
kexec.h
kgdb.h
kmap_types.h
kmemcheck.h
kprobes.h
kvm_emulate.h KVM: x86: add read_phys to x86_emulate_ops 2015-11-04 16:24:31 +01:00
kvm_guest.h
kvm_host.h KVM: page track: add the framework of guest page tracking 2016-03-03 14:36:20 +01:00
kvm_page_track.h KVM: page track: add the framework of guest page tracking 2016-03-03 14:36:20 +01:00
kvm_para.h x86: Use bool function return values of true/false not 1/0 2015-03-31 18:05:09 +02:00
lguest.h lguest: Map switcher text R/O 2016-01-12 12:17:28 +01:00
lguest_hcall.h
linkage.h
livepatch.h livepatch: x86: make kASLR logic more accurate 2015-04-29 16:51:33 +02:00
local.h
local64.h
mach_timer.h
mach_traps.h
math_emu.h x86/vm86: Clean up vm86.h includes 2015-07-31 13:31:10 +02:00
mc146818rtc.h
mce.h x86/mce: Add a Scalable MCA vendor flags bit 2015-11-01 11:26:13 +01:00
microcode.h x86/cpu: Unify CPU family, model, stepping calculation 2015-11-24 09:15:54 +01:00
microcode_amd.h x86/microcode: Merge the early microcode loader 2015-10-21 11:22:12 +02:00
microcode_intel.h x86/microcode: Merge the early microcode loader 2015-10-21 11:22:12 +02:00
misc.h
mmconfig.h
mmu.h x86/ldt: Make modify_ldt() optional 2015-07-31 13:30:45 +02:00
mmu_context.h x86/mm: Improve switch_mm() barrier comments 2016-01-13 10:42:49 +01:00
mmx.h
mmzone.h
mmzone_32.h
mmzone_64.h
module.h
mpspec.h
mpspec_def.h
mpx.h x86/mpx: Support 32-bit binaries on 64-bit kernels 2015-06-09 12:24:34 +02:00
mshyperv.h mshyperv: fix recognition of Hyper-V guest crash MSR's 2015-08-04 22:30:44 -07:00
msi.h x86/irq: Export functions to allow MSI domains in modules 2015-12-20 12:40:49 +01:00
msidef.h
msr-index.h x86/cpu/amd, kvm: Satisfy guest kernel reads of IC_CFG MSR 2015-11-24 09:15:54 +01:00
msr-trace.h x86, tracing, perf: Add trace point for MSR accesses 2015-12-06 12:56:10 +01:00
msr.h Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-11 17:45:32 -08:00
mtrr.h x86/mm/mtrr: Avoid #ifdeffery with phys_wc_to_mtrr_index() 2015-05-27 14:41:00 +02:00
mutex.h
mutex_32.h
mutex_64.h
mwait.h x86/asm: Add MONITORX/MWAITX instruction support 2015-08-22 14:52:16 +02:00
nmi.h
nops.h
numa.h
numa_32.h
olpc.h
olpc_ofw.h
page.h
page_32.h
page_32_types.h
page_64.h
page_64_types.h x86/asm: Move PUD_PAGE macros to page_types.h 2015-09-22 21:27:32 +02:00
page_types.h x86/mm: Align macro defines 2015-12-19 11:53:40 +01:00
paravirt.h Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-11 16:26:03 -08:00
paravirt_types.h Merge branch 'x86-cleanups-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-11 16:26:03 -08:00
parport.h
pat.h x86/mm/pat: Emulate PAT when it is disabled 2015-06-07 15:28:52 +02:00
pci-direct.h
pci-functions.h
pci.h Merge branch 'for-4.2/sg' of git://git.kernel.dk/linux-block 2015-06-25 15:22:36 -07:00
pci_64.h
pci_x86.h x86/PCI: Clarify AMD Fam10h config access restrictions comment 2015-12-10 19:38:06 -06:00
percpu.h
perf_event.h x86: Add new MSRs and MSR bits used for Intel Skylake PMU support 2015-08-04 10:16:56 +02:00
perf_event_p4.h
pgalloc.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pgtable-2level.h
pgtable-2level_types.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pgtable-3level.h
pgtable-3level_types.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pgtable.h mm, x86: get_user_pages() for dax mappings 2016-01-15 17:56:32 -08:00
pgtable_32.h
pgtable_32_types.h
pgtable_64.h
pgtable_64_types.h x86: expose number of page table levels on Kconfig level 2015-04-14 16:49:02 -07:00
pgtable_types.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-01-31 16:17:19 -08:00
platform_sst_audio.h ASoc: Intel: Atom: add deep buffer definitions for atom platforms 2015-12-19 11:49:56 +00:00
pm-trace.h PM / sleep: add pm-trace support for suspending phase 2015-03-18 15:54:27 +01:00
pmc_atom.h x86/platform/intel/pmc_atom: Add Cherrytrail PMC interface 2015-07-06 18:39:38 +02:00
pmem.h pmem: add wb_cache_pmem() to the PMEM API 2016-01-22 17:02:18 -08:00
posix_types.h
preempt.h sched/core, sched/x86: Kill thread_info::saved_preempt_count 2015-10-06 17:08:18 +02:00
probe_roms.h
processor-cyrix.h
processor-flags.h
processor.h x86/paravirt: Prevent rtc_cmos platform device init on PV guests 2015-12-19 21:35:13 +01:00
prom.h
proto.h x86/asm/entry: Untangle 'system_call' into two entry points: entry_SYSCALL_64 and entry_INT80_32 2015-06-08 09:14:21 +02:00
ptrace.h x86/entry: Remove do_notify_resume(), syscall_trace_leave(), and their TIF masks 2015-08-05 10:54:35 +02:00
pvclock-abi.h Revert "KVM: x86: zero kvmclock_offset when vcpu0 initializes kvmclock system MSR" 2015-09-28 13:06:37 +02:00
pvclock.h x86/vsdo: Fix build on PARAVIRT_CLOCK=y, KVM_GUEST=n 2016-01-06 10:49:53 +01:00
qrwlock.h locking/qrwlock: Implement queue_write_unlock() using smp_store_release() 2015-08-12 11:59:05 +02:00
qspinlock.h locking/qspinlock/x86: Only emit the test-and-set fallback when building guest support 2015-09-11 07:50:12 +02:00
qspinlock_paravirt.h locking/pvqspinlock, x86: Optimize the PV unlock code path 2015-11-23 10:02:02 +01:00
realmode.h
reboot.h x86/nmi: Save regs in crash dump on external NMI 2015-12-19 11:07:01 +01:00
reboot_fixups.h
required-features.h
rio.h
rmwcc.h
rtc.h
rwsem.h
seccomp.h x86: switch to using asm-generic for seccomp.h 2015-04-17 09:04:10 -04:00
sections.h
segment.h x86/asm/irq: Stop relying on magic JMP behavior for early_idt_handlers 2015-06-02 09:39:40 +02:00
serial.h serial: 8250: remove Kconfig indirection 2015-05-06 22:27:00 +02:00
setup.h x86: kaslr: fix build due to missing ALIGN definition 2015-04-29 21:54:54 +02:00
setup_arch.h
shmparam.h
sigcontext.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
sigframe.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
sighandling.h x86/signal: Remove pax argument from restore_sigcontext 2015-04-06 09:06:39 +02:00
signal.h x86/headers: Remove <asm/sigcontext.h> references on the kernel side 2015-09-08 10:06:05 +02:00
simd.h x86/fpu: Rename i387.h to fpu/api.h 2015-05-19 15:47:30 +02:00
smap.h
smp.h x86/paravirt: Remove unused pv_apic_ops structure 2015-11-19 11:03:58 +01:00
sparsemem.h
special_insns.h x86/mm: Add kerneldoc comments for pcommit_sfence() 2015-05-11 10:38:44 +02:00
spinlock.h locking/pvqspinlock: Rename QUEUED_SPINLOCK to QUEUED_SPINLOCKS 2015-05-11 09:52:09 +02:00
spinlock_types.h locking/pvqspinlock: Rename QUEUED_SPINLOCK to QUEUED_SPINLOCKS 2015-05-11 09:52:09 +02:00
sta2x11.h
stackprotector.h x86/asm/tsc: Rename native_read_tsc() to rdtsc() 2015-07-06 15:23:28 +02:00
stacktrace.h
string.h
string_32.h
string_64.h x86, kasan: Fix build failure on KASAN=y && KMEMCHECK=y kernels 2015-10-19 10:07:23 +02:00
suspend.h
suspend_32.h x86/pm: Introduce quirk framework to save/restore extra MSR registers around suspend/resume 2015-11-26 10:04:53 +01:00
suspend_64.h x86/pm: Introduce quirk framework to save/restore extra MSR registers around suspend/resume 2015-11-26 10:04:53 +01:00
svm.h
swiotlb.h
switch_to.h x86/sched/64: Don't save flags on context switch (reinstated) 2015-09-25 09:29:17 +02:00
sync_bitops.h
sys_ia32.h
syscall.h x86/syscalls: Give sys_call_ptr_t a useful type 2015-10-09 09:41:08 +02:00
syscalls.h x86/vm86: Clean up vm86.h includes 2015-07-31 13:31:10 +02:00
sysfb.h
tce.h
thread_info.h Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-11-03 18:59:10 -08:00
time.h
timer.h
timex.h
tlb.h
tlbflush.h mm: send one IPI per CPU to TLB flush all entries after unmapping pages 2015-09-04 16:54:41 -07:00
topology.h Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-06-22 17:59:09 -07:00
trace_clock.h
traps.h x86/entry: Remove exception_enter() from most trap handlers 2015-07-07 10:59:09 +02:00
tsc.h Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-09-01 08:40:25 -07:00
uaccess.h Merge branch 'uaccess' (batched user access infrastructure) 2016-01-21 13:02:41 -08:00
uaccess_32.h Merge branch 'x86-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2015-06-22 17:59:09 -07:00
uaccess_64.h x86: reorganize SMAP handling in user space accesses 2015-12-17 09:45:09 -08:00
unaligned.h
unistd.h
uprobes.h
user.h x86/fpu: Rename xsave.header::xstate_bv to 'xfeatures' 2015-05-19 15:47:35 +02:00
user32.h
user_32.h
user_64.h
vdso.h x86/vdso: Get pvclock data from the vvar VMA instead of the fixmap 2015-12-11 08:56:03 +01:00
vga.h
vgtod.h
virtext.h
vm86.h x86/vm86: Rename vm86->v86flags and v86mask 2015-07-31 13:31:11 +02:00
vmx.h KVM: VMX: Enable and initialize VMX TSC scaling 2015-11-10 12:06:19 +01:00
vsyscall.h
vvar.h
word-at-a-time.h
x2apic.h
x86_init.h Merge branch 'linus' into x86/cleanups 2015-12-19 11:49:13 +01:00
xor.h x86/fpu: Rename i387.h to fpu/api.h 2015-05-19 15:47:30 +02:00
xor_32.h x86/cpufeature: Remove unused and seldomly used cpu_has_xx macros 2015-12-19 11:49:55 +01:00
xor_64.h
xor_avx.h x86/fpu: Rename i387.h to fpu/api.h 2015-05-19 15:47:30 +02:00