KVM
|
#include <kvm/iodev.h>
#include <linux/kvm_host.h>
#include <linux/kvm.h>
#include <linux/module.h>
#include <linux/errno.h>
#include <linux/percpu.h>
#include <linux/mm.h>
#include <linux/miscdevice.h>
#include <linux/vmalloc.h>
#include <linux/reboot.h>
#include <linux/debugfs.h>
#include <linux/highmem.h>
#include <linux/file.h>
#include <linux/syscore_ops.h>
#include <linux/cpu.h>
#include <linux/sched/signal.h>
#include <linux/sched/mm.h>
#include <linux/sched/stat.h>
#include <linux/cpumask.h>
#include <linux/smp.h>
#include <linux/anon_inodes.h>
#include <linux/profile.h>
#include <linux/kvm_para.h>
#include <linux/pagemap.h>
#include <linux/mman.h>
#include <linux/swap.h>
#include <linux/bitops.h>
#include <linux/spinlock.h>
#include <linux/compat.h>
#include <linux/srcu.h>
#include <linux/hugetlb.h>
#include <linux/slab.h>
#include <linux/sort.h>
#include <linux/bsearch.h>
#include <linux/io.h>
#include <linux/lockdep.h>
#include <linux/kthread.h>
#include <linux/suspend.h>
#include <asm/processor.h>
#include <asm/ioctl.h>
#include <linux/uaccess.h>
#include "coalesced_mmio.h"
#include "async_pf.h"
#include "kvm_mm.h"
#include "vfio.h"
#include <trace/events/ipi.h>
#include <trace/events/kvm.h>
#include <linux/kvm_dirty_ring.h>
Go to the source code of this file.
Classes | |
struct | kvm_vm_worker_thread_context |
Macros | |
#define | CREATE_TRACE_POINTS |
#define | ITOA_MAX_LEN 12 |
#define | KVM_COMPAT(c) |
#define | KVM_EVENT_CREATE_VM 0 |
#define | KVM_EVENT_DESTROY_VM 1 |
#define | KVM_SET_USER_MEMORY_REGION_V1_FLAGS (KVM_MEM_LOG_DIRTY_PAGES | KVM_MEM_READONLY) |
#define | SANITY_CHECK_MEM_REGION_FIELD(field) |
Functions | |
MODULE_AUTHOR ("Qumranet") | |
MODULE_LICENSE ("GPL") | |
module_param (halt_poll_ns, uint, 0644) | |
EXPORT_SYMBOL_GPL (halt_poll_ns) | |
module_param (halt_poll_ns_grow, uint, 0644) | |
EXPORT_SYMBOL_GPL (halt_poll_ns_grow) | |
module_param (halt_poll_ns_grow_start, uint, 0644) | |
EXPORT_SYMBOL_GPL (halt_poll_ns_grow_start) | |
module_param (halt_poll_ns_shrink, uint, 0644) | |
EXPORT_SYMBOL_GPL (halt_poll_ns_shrink) | |
DEFINE_MUTEX (kvm_lock) | |
LIST_HEAD (vm_list) | |
static | DEFINE_PER_CPU (struct kvm_vcpu *, kvm_running_vcpu) |
EXPORT_SYMBOL_GPL (kvm_debugfs_dir) | |
static long | kvm_vcpu_ioctl (struct file *file, unsigned int ioctl, unsigned long arg) |
static long | kvm_no_compat_ioctl (struct file *file, unsigned int ioctl, unsigned long arg) |
static int | kvm_no_compat_open (struct inode *inode, struct file *file) |
static int | hardware_enable_all (void) |
static void | hardware_disable_all (void) |
static void | kvm_io_bus_destroy (struct kvm_io_bus *bus) |
static void | kvm_uevent_notify_change (unsigned int type, struct kvm *kvm) |
static | DEFINE_PER_CPU (cpumask_var_t, cpu_kick_mask) |
__weak void | kvm_arch_guest_memory_reclaimed (struct kvm *kvm) |
bool | kvm_is_zone_device_page (struct page *page) |
struct page * | kvm_pfn_to_refcounted_page (kvm_pfn_t pfn) |
void | vcpu_load (struct kvm_vcpu *vcpu) |
EXPORT_SYMBOL_GPL (vcpu_load) | |
void | vcpu_put (struct kvm_vcpu *vcpu) |
EXPORT_SYMBOL_GPL (vcpu_put) | |
static bool | kvm_request_needs_ipi (struct kvm_vcpu *vcpu, unsigned req) |
static void | ack_kick (void *_completed) |
static bool | kvm_kick_many_cpus (struct cpumask *cpus, bool wait) |
static void | kvm_make_vcpu_request (struct kvm_vcpu *vcpu, unsigned int req, struct cpumask *tmp, int current_cpu) |
bool | kvm_make_vcpus_request_mask (struct kvm *kvm, unsigned int req, unsigned long *vcpu_bitmap) |
bool | kvm_make_all_cpus_request_except (struct kvm *kvm, unsigned int req, struct kvm_vcpu *except) |
bool | kvm_make_all_cpus_request (struct kvm *kvm, unsigned int req) |
EXPORT_SYMBOL_GPL (kvm_make_all_cpus_request) | |
void | kvm_flush_remote_tlbs (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_flush_remote_tlbs) | |
void | kvm_flush_remote_tlbs_range (struct kvm *kvm, gfn_t gfn, u64 nr_pages) |
void | kvm_flush_remote_tlbs_memslot (struct kvm *kvm, const struct kvm_memory_slot *memslot) |
static void | kvm_flush_shadow_all (struct kvm *kvm) |
static void | kvm_vcpu_init (struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id) |
static void | kvm_vcpu_destroy (struct kvm_vcpu *vcpu) |
void | kvm_destroy_vcpus (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_destroy_vcpus) | |
static int | kvm_init_mmu_notifier (struct kvm *kvm) |
static void | kvm_init_pm_notifier (struct kvm *kvm) |
static void | kvm_destroy_pm_notifier (struct kvm *kvm) |
static void | kvm_destroy_dirty_bitmap (struct kvm_memory_slot *memslot) |
static void | kvm_free_memslot (struct kvm *kvm, struct kvm_memory_slot *slot) |
static void | kvm_free_memslots (struct kvm *kvm, struct kvm_memslots *slots) |
static umode_t | kvm_stats_debugfs_mode (const struct _kvm_stats_desc *pdesc) |
static void | kvm_destroy_vm_debugfs (struct kvm *kvm) |
static int | kvm_create_vm_debugfs (struct kvm *kvm, const char *fdname) |
int __weak | kvm_arch_post_init_vm (struct kvm *kvm) |
void __weak | kvm_arch_pre_destroy_vm (struct kvm *kvm) |
int __weak | kvm_arch_create_vm_debugfs (struct kvm *kvm) |
static struct kvm * | kvm_create_vm (unsigned long type, const char *fdname) |
static void | kvm_destroy_devices (struct kvm *kvm) |
static void | kvm_destroy_vm (struct kvm *kvm) |
void | kvm_get_kvm (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_get_kvm) | |
bool | kvm_get_kvm_safe (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_get_kvm_safe) | |
void | kvm_put_kvm (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_put_kvm) | |
void | kvm_put_kvm_no_destroy (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_put_kvm_no_destroy) | |
static int | kvm_vm_release (struct inode *inode, struct file *filp) |
static int | kvm_alloc_dirty_bitmap (struct kvm_memory_slot *memslot) |
static struct kvm_memslots * | kvm_get_inactive_memslots (struct kvm *kvm, int as_id) |
static int | kvm_memslots_get_as_id (struct kvm_memory_slot *a, struct kvm_memory_slot *b) |
static void | kvm_insert_gfn_node (struct kvm_memslots *slots, struct kvm_memory_slot *slot) |
static void | kvm_erase_gfn_node (struct kvm_memslots *slots, struct kvm_memory_slot *slot) |
static void | kvm_replace_gfn_node (struct kvm_memslots *slots, struct kvm_memory_slot *old, struct kvm_memory_slot *new) |
static void | kvm_replace_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *new) |
static int | check_memory_region_flags (struct kvm *kvm, const struct kvm_userspace_memory_region2 *mem) |
static void | kvm_swap_active_memslots (struct kvm *kvm, int as_id) |
static int | kvm_prepare_memory_region (struct kvm *kvm, const struct kvm_memory_slot *old, struct kvm_memory_slot *new, enum kvm_mr_change change) |
static void | kvm_commit_memory_region (struct kvm *kvm, struct kvm_memory_slot *old, const struct kvm_memory_slot *new, enum kvm_mr_change change) |
static void | kvm_activate_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *new) |
static void | kvm_copy_memslot (struct kvm_memory_slot *dest, const struct kvm_memory_slot *src) |
static void | kvm_invalidate_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *invalid_slot) |
static void | kvm_create_memslot (struct kvm *kvm, struct kvm_memory_slot *new) |
static void | kvm_delete_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *invalid_slot) |
static void | kvm_move_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *new, struct kvm_memory_slot *invalid_slot) |
static void | kvm_update_flags_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *new) |
static int | kvm_set_memslot (struct kvm *kvm, struct kvm_memory_slot *old, struct kvm_memory_slot *new, enum kvm_mr_change change) |
static bool | kvm_check_memslot_overlap (struct kvm_memslots *slots, int id, gfn_t start, gfn_t end) |
int | __kvm_set_memory_region (struct kvm *kvm, const struct kvm_userspace_memory_region2 *mem) |
EXPORT_SYMBOL_GPL (__kvm_set_memory_region) | |
int | kvm_set_memory_region (struct kvm *kvm, const struct kvm_userspace_memory_region2 *mem) |
EXPORT_SYMBOL_GPL (kvm_set_memory_region) | |
static int | kvm_vm_ioctl_set_memory_region (struct kvm *kvm, struct kvm_userspace_memory_region2 *mem) |
int | kvm_get_dirty_log (struct kvm *kvm, struct kvm_dirty_log *log, int *is_dirty, struct kvm_memory_slot **memslot) |
EXPORT_SYMBOL_GPL (kvm_get_dirty_log) | |
struct kvm_memory_slot * | gfn_to_memslot (struct kvm *kvm, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_memslot) | |
struct kvm_memory_slot * | kvm_vcpu_gfn_to_memslot (struct kvm_vcpu *vcpu, gfn_t gfn) |
bool | kvm_is_visible_gfn (struct kvm *kvm, gfn_t gfn) |
EXPORT_SYMBOL_GPL (kvm_is_visible_gfn) | |
bool | kvm_vcpu_is_visible_gfn (struct kvm_vcpu *vcpu, gfn_t gfn) |
EXPORT_SYMBOL_GPL (kvm_vcpu_is_visible_gfn) | |
unsigned long | kvm_host_page_size (struct kvm_vcpu *vcpu, gfn_t gfn) |
static bool | memslot_is_readonly (const struct kvm_memory_slot *slot) |
static unsigned long | __gfn_to_hva_many (const struct kvm_memory_slot *slot, gfn_t gfn, gfn_t *nr_pages, bool write) |
static unsigned long | gfn_to_hva_many (struct kvm_memory_slot *slot, gfn_t gfn, gfn_t *nr_pages) |
unsigned long | gfn_to_hva_memslot (struct kvm_memory_slot *slot, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_hva_memslot) | |
unsigned long | gfn_to_hva (struct kvm *kvm, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_hva) | |
unsigned long | kvm_vcpu_gfn_to_hva (struct kvm_vcpu *vcpu, gfn_t gfn) |
EXPORT_SYMBOL_GPL (kvm_vcpu_gfn_to_hva) | |
unsigned long | gfn_to_hva_memslot_prot (struct kvm_memory_slot *slot, gfn_t gfn, bool *writable) |
unsigned long | gfn_to_hva_prot (struct kvm *kvm, gfn_t gfn, bool *writable) |
unsigned long | kvm_vcpu_gfn_to_hva_prot (struct kvm_vcpu *vcpu, gfn_t gfn, bool *writable) |
static int | check_user_page_hwpoison (unsigned long addr) |
static bool | hva_to_pfn_fast (unsigned long addr, bool write_fault, bool *writable, kvm_pfn_t *pfn) |
static int | hva_to_pfn_slow (unsigned long addr, bool *async, bool write_fault, bool interruptible, bool *writable, kvm_pfn_t *pfn) |
static bool | vma_is_valid (struct vm_area_struct *vma, bool write_fault) |
static int | kvm_try_get_pfn (kvm_pfn_t pfn) |
static int | hva_to_pfn_remapped (struct vm_area_struct *vma, unsigned long addr, bool write_fault, bool *writable, kvm_pfn_t *p_pfn) |
kvm_pfn_t | hva_to_pfn (unsigned long addr, bool atomic, bool interruptible, bool *async, bool write_fault, bool *writable) |
kvm_pfn_t | __gfn_to_pfn_memslot (const struct kvm_memory_slot *slot, gfn_t gfn, bool atomic, bool interruptible, bool *async, bool write_fault, bool *writable, hva_t *hva) |
EXPORT_SYMBOL_GPL (__gfn_to_pfn_memslot) | |
kvm_pfn_t | gfn_to_pfn_prot (struct kvm *kvm, gfn_t gfn, bool write_fault, bool *writable) |
EXPORT_SYMBOL_GPL (gfn_to_pfn_prot) | |
kvm_pfn_t | gfn_to_pfn_memslot (const struct kvm_memory_slot *slot, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_pfn_memslot) | |
kvm_pfn_t | gfn_to_pfn_memslot_atomic (const struct kvm_memory_slot *slot, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_pfn_memslot_atomic) | |
kvm_pfn_t | kvm_vcpu_gfn_to_pfn_atomic (struct kvm_vcpu *vcpu, gfn_t gfn) |
EXPORT_SYMBOL_GPL (kvm_vcpu_gfn_to_pfn_atomic) | |
kvm_pfn_t | gfn_to_pfn (struct kvm *kvm, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_pfn) | |
kvm_pfn_t | kvm_vcpu_gfn_to_pfn (struct kvm_vcpu *vcpu, gfn_t gfn) |
EXPORT_SYMBOL_GPL (kvm_vcpu_gfn_to_pfn) | |
int | gfn_to_page_many_atomic (struct kvm_memory_slot *slot, gfn_t gfn, struct page **pages, int nr_pages) |
EXPORT_SYMBOL_GPL (gfn_to_page_many_atomic) | |
struct page * | gfn_to_page (struct kvm *kvm, gfn_t gfn) |
EXPORT_SYMBOL_GPL (gfn_to_page) | |
void | kvm_release_pfn (kvm_pfn_t pfn, bool dirty) |
int | kvm_vcpu_map (struct kvm_vcpu *vcpu, gfn_t gfn, struct kvm_host_map *map) |
EXPORT_SYMBOL_GPL (kvm_vcpu_map) | |
void | kvm_vcpu_unmap (struct kvm_vcpu *vcpu, struct kvm_host_map *map, bool dirty) |
EXPORT_SYMBOL_GPL (kvm_vcpu_unmap) | |
static bool | kvm_is_ad_tracked_page (struct page *page) |
static void | kvm_set_page_dirty (struct page *page) |
static void | kvm_set_page_accessed (struct page *page) |
void | kvm_release_page_clean (struct page *page) |
EXPORT_SYMBOL_GPL (kvm_release_page_clean) | |
void | kvm_release_pfn_clean (kvm_pfn_t pfn) |
EXPORT_SYMBOL_GPL (kvm_release_pfn_clean) | |
void | kvm_release_page_dirty (struct page *page) |
EXPORT_SYMBOL_GPL (kvm_release_page_dirty) | |
void | kvm_release_pfn_dirty (kvm_pfn_t pfn) |
EXPORT_SYMBOL_GPL (kvm_release_pfn_dirty) | |
void | kvm_set_pfn_dirty (kvm_pfn_t pfn) |
EXPORT_SYMBOL_GPL (kvm_set_pfn_dirty) | |
void | kvm_set_pfn_accessed (kvm_pfn_t pfn) |
EXPORT_SYMBOL_GPL (kvm_set_pfn_accessed) | |
static int | next_segment (unsigned long len, int offset) |
static int | __kvm_read_guest_page (struct kvm_memory_slot *slot, gfn_t gfn, void *data, int offset, int len) |
int | kvm_read_guest_page (struct kvm *kvm, gfn_t gfn, void *data, int offset, int len) |
EXPORT_SYMBOL_GPL (kvm_read_guest_page) | |
int | kvm_vcpu_read_guest_page (struct kvm_vcpu *vcpu, gfn_t gfn, void *data, int offset, int len) |
EXPORT_SYMBOL_GPL (kvm_vcpu_read_guest_page) | |
int | kvm_read_guest (struct kvm *kvm, gpa_t gpa, void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_read_guest) | |
int | kvm_vcpu_read_guest (struct kvm_vcpu *vcpu, gpa_t gpa, void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_vcpu_read_guest) | |
static int | __kvm_read_guest_atomic (struct kvm_memory_slot *slot, gfn_t gfn, void *data, int offset, unsigned long len) |
int | kvm_vcpu_read_guest_atomic (struct kvm_vcpu *vcpu, gpa_t gpa, void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_vcpu_read_guest_atomic) | |
static int | __kvm_write_guest_page (struct kvm *kvm, struct kvm_memory_slot *memslot, gfn_t gfn, const void *data, int offset, int len) |
int | kvm_write_guest_page (struct kvm *kvm, gfn_t gfn, const void *data, int offset, int len) |
EXPORT_SYMBOL_GPL (kvm_write_guest_page) | |
int | kvm_vcpu_write_guest_page (struct kvm_vcpu *vcpu, gfn_t gfn, const void *data, int offset, int len) |
EXPORT_SYMBOL_GPL (kvm_vcpu_write_guest_page) | |
int | kvm_write_guest (struct kvm *kvm, gpa_t gpa, const void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_write_guest) | |
int | kvm_vcpu_write_guest (struct kvm_vcpu *vcpu, gpa_t gpa, const void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_vcpu_write_guest) | |
static int | __kvm_gfn_to_hva_cache_init (struct kvm_memslots *slots, struct gfn_to_hva_cache *ghc, gpa_t gpa, unsigned long len) |
int | kvm_gfn_to_hva_cache_init (struct kvm *kvm, struct gfn_to_hva_cache *ghc, gpa_t gpa, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_gfn_to_hva_cache_init) | |
int | kvm_write_guest_offset_cached (struct kvm *kvm, struct gfn_to_hva_cache *ghc, void *data, unsigned int offset, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_write_guest_offset_cached) | |
int | kvm_write_guest_cached (struct kvm *kvm, struct gfn_to_hva_cache *ghc, void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_write_guest_cached) | |
int | kvm_read_guest_offset_cached (struct kvm *kvm, struct gfn_to_hva_cache *ghc, void *data, unsigned int offset, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_read_guest_offset_cached) | |
int | kvm_read_guest_cached (struct kvm *kvm, struct gfn_to_hva_cache *ghc, void *data, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_read_guest_cached) | |
int | kvm_clear_guest (struct kvm *kvm, gpa_t gpa, unsigned long len) |
EXPORT_SYMBOL_GPL (kvm_clear_guest) | |
void | mark_page_dirty_in_slot (struct kvm *kvm, const struct kvm_memory_slot *memslot, gfn_t gfn) |
EXPORT_SYMBOL_GPL (mark_page_dirty_in_slot) | |
void | mark_page_dirty (struct kvm *kvm, gfn_t gfn) |
EXPORT_SYMBOL_GPL (mark_page_dirty) | |
void | kvm_vcpu_mark_page_dirty (struct kvm_vcpu *vcpu, gfn_t gfn) |
EXPORT_SYMBOL_GPL (kvm_vcpu_mark_page_dirty) | |
void | kvm_sigset_activate (struct kvm_vcpu *vcpu) |
void | kvm_sigset_deactivate (struct kvm_vcpu *vcpu) |
static void | grow_halt_poll_ns (struct kvm_vcpu *vcpu) |
static void | shrink_halt_poll_ns (struct kvm_vcpu *vcpu) |
static int | kvm_vcpu_check_block (struct kvm_vcpu *vcpu) |
bool | kvm_vcpu_block (struct kvm_vcpu *vcpu) |
static void | update_halt_poll_stats (struct kvm_vcpu *vcpu, ktime_t start, ktime_t end, bool success) |
static unsigned int | kvm_vcpu_max_halt_poll_ns (struct kvm_vcpu *vcpu) |
void | kvm_vcpu_halt (struct kvm_vcpu *vcpu) |
EXPORT_SYMBOL_GPL (kvm_vcpu_halt) | |
bool | kvm_vcpu_wake_up (struct kvm_vcpu *vcpu) |
EXPORT_SYMBOL_GPL (kvm_vcpu_wake_up) | |
void | kvm_vcpu_kick (struct kvm_vcpu *vcpu) |
EXPORT_SYMBOL_GPL (kvm_vcpu_kick) | |
int | kvm_vcpu_yield_to (struct kvm_vcpu *target) |
EXPORT_SYMBOL_GPL (kvm_vcpu_yield_to) | |
static bool | kvm_vcpu_eligible_for_directed_yield (struct kvm_vcpu *vcpu) |
bool __weak | kvm_arch_dy_runnable (struct kvm_vcpu *vcpu) |
static bool | vcpu_dy_runnable (struct kvm_vcpu *vcpu) |
bool __weak | kvm_arch_dy_has_pending_interrupt (struct kvm_vcpu *vcpu) |
void | kvm_vcpu_on_spin (struct kvm_vcpu *me, bool yield_to_kernel_mode) |
EXPORT_SYMBOL_GPL (kvm_vcpu_on_spin) | |
static bool | kvm_page_in_dirty_ring (struct kvm *kvm, unsigned long pgoff) |
static vm_fault_t | kvm_vcpu_fault (struct vm_fault *vmf) |
static int | kvm_vcpu_mmap (struct file *file, struct vm_area_struct *vma) |
static int | kvm_vcpu_release (struct inode *inode, struct file *filp) |
static int | create_vcpu_fd (struct kvm_vcpu *vcpu) |
static int | kvm_vm_ioctl_create_vcpu (struct kvm *kvm, u32 id) |
static int | kvm_vcpu_ioctl_set_sigmask (struct kvm_vcpu *vcpu, sigset_t *sigset) |
static ssize_t | kvm_vcpu_stats_read (struct file *file, char __user *user_buffer, size_t size, loff_t *offset) |
static int | kvm_vcpu_stats_release (struct inode *inode, struct file *file) |
static int | kvm_vcpu_ioctl_get_stats_fd (struct kvm_vcpu *vcpu) |
static int | kvm_device_mmap (struct file *filp, struct vm_area_struct *vma) |
static int | kvm_device_ioctl_attr (struct kvm_device *dev, int(*accessor)(struct kvm_device *dev, struct kvm_device_attr *attr), unsigned long arg) |
static long | kvm_device_ioctl (struct file *filp, unsigned int ioctl, unsigned long arg) |
static int | kvm_device_release (struct inode *inode, struct file *filp) |
struct kvm_device * | kvm_device_from_filp (struct file *filp) |
int | kvm_register_device_ops (const struct kvm_device_ops *ops, u32 type) |
void | kvm_unregister_device_ops (u32 type) |
static int | kvm_ioctl_create_device (struct kvm *kvm, struct kvm_create_device *cd) |
static int | kvm_vm_ioctl_check_extension_generic (struct kvm *kvm, long arg) |
static int | kvm_vm_ioctl_enable_dirty_log_ring (struct kvm *kvm, u32 size) |
static int | kvm_vm_ioctl_reset_dirty_pages (struct kvm *kvm) |
int | __attribute__ ((weak)) |
bool | kvm_are_all_memslots_empty (struct kvm *kvm) |
EXPORT_SYMBOL_GPL (kvm_are_all_memslots_empty) | |
static int | kvm_vm_ioctl_enable_cap_generic (struct kvm *kvm, struct kvm_enable_cap *cap) |
static ssize_t | kvm_vm_stats_read (struct file *file, char __user *user_buffer, size_t size, loff_t *offset) |
static int | kvm_vm_stats_release (struct inode *inode, struct file *file) |
static int | kvm_vm_ioctl_get_stats_fd (struct kvm *kvm) |
static long | kvm_vm_ioctl (struct file *filp, unsigned int ioctl, unsigned long arg) |
bool | file_is_kvm (struct file *file) |
EXPORT_SYMBOL_GPL (file_is_kvm) | |
static int | kvm_dev_ioctl_create_vm (unsigned long type) |
static long | kvm_dev_ioctl (struct file *filp, unsigned int ioctl, unsigned long arg) |
static void | kvm_iodevice_destructor (struct kvm_io_device *dev) |
static int | kvm_io_bus_cmp (const struct kvm_io_range *r1, const struct kvm_io_range *r2) |
static int | kvm_io_bus_sort_cmp (const void *p1, const void *p2) |
static int | kvm_io_bus_get_first_dev (struct kvm_io_bus *bus, gpa_t addr, int len) |
static int | __kvm_io_bus_write (struct kvm_vcpu *vcpu, struct kvm_io_bus *bus, struct kvm_io_range *range, const void *val) |
int | kvm_io_bus_write (struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, int len, const void *val) |
EXPORT_SYMBOL_GPL (kvm_io_bus_write) | |
int | kvm_io_bus_write_cookie (struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, int len, const void *val, long cookie) |
static int | __kvm_io_bus_read (struct kvm_vcpu *vcpu, struct kvm_io_bus *bus, struct kvm_io_range *range, void *val) |
int | kvm_io_bus_read (struct kvm_vcpu *vcpu, enum kvm_bus bus_idx, gpa_t addr, int len, void *val) |
int | kvm_io_bus_register_dev (struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr, int len, struct kvm_io_device *dev) |
int | kvm_io_bus_unregister_dev (struct kvm *kvm, enum kvm_bus bus_idx, struct kvm_io_device *dev) |
struct kvm_io_device * | kvm_io_bus_get_dev (struct kvm *kvm, enum kvm_bus bus_idx, gpa_t addr) |
EXPORT_SYMBOL_GPL (kvm_io_bus_get_dev) | |
static int | kvm_debugfs_open (struct inode *inode, struct file *file, int(*get)(void *, u64 *), int(*set)(void *, u64), const char *fmt) |
static int | kvm_debugfs_release (struct inode *inode, struct file *file) |
static int | kvm_get_stat_per_vm (struct kvm *kvm, size_t offset, u64 *val) |
static int | kvm_clear_stat_per_vm (struct kvm *kvm, size_t offset) |
static int | kvm_get_stat_per_vcpu (struct kvm *kvm, size_t offset, u64 *val) |
static int | kvm_clear_stat_per_vcpu (struct kvm *kvm, size_t offset) |
static int | kvm_stat_data_get (void *data, u64 *val) |
static int | kvm_stat_data_clear (void *data, u64 val) |
static int | kvm_stat_data_open (struct inode *inode, struct file *file) |
static int | vm_stat_get (void *_offset, u64 *val) |
static int | vm_stat_clear (void *_offset, u64 val) |
DEFINE_SIMPLE_ATTRIBUTE (vm_stat_fops, vm_stat_get, vm_stat_clear, "%llu\n") | |
DEFINE_SIMPLE_ATTRIBUTE (vm_stat_readonly_fops, vm_stat_get, NULL, "%llu\n") | |
static int | vcpu_stat_get (void *_offset, u64 *val) |
static int | vcpu_stat_clear (void *_offset, u64 val) |
DEFINE_SIMPLE_ATTRIBUTE (vcpu_stat_fops, vcpu_stat_get, vcpu_stat_clear, "%llu\n") | |
DEFINE_SIMPLE_ATTRIBUTE (vcpu_stat_readonly_fops, vcpu_stat_get, NULL, "%llu\n") | |
static void | kvm_init_debug (void) |
static struct kvm_vcpu * | preempt_notifier_to_vcpu (struct preempt_notifier *pn) |
static void | kvm_sched_in (struct preempt_notifier *pn, int cpu) |
static void | kvm_sched_out (struct preempt_notifier *pn, struct task_struct *next) |
struct kvm_vcpu * | kvm_get_running_vcpu (void) |
EXPORT_SYMBOL_GPL (kvm_get_running_vcpu) | |
struct kvm_vcpu *__percpu * | kvm_get_running_vcpus (void) |
int | kvm_init (unsigned vcpu_size, unsigned vcpu_align, struct module *module) |
EXPORT_SYMBOL_GPL (kvm_init) | |
void | kvm_exit (void) |
EXPORT_SYMBOL_GPL (kvm_exit) | |
static int | kvm_vm_worker_thread (void *context) |
int | kvm_vm_create_worker_thread (struct kvm *kvm, kvm_vm_thread_fn_t thread_fn, uintptr_t data, const char *name, struct task_struct **thread_ptr) |
Variables | |
unsigned int | halt_poll_ns = KVM_HALT_POLL_NS_DEFAULT |
unsigned int | halt_poll_ns_grow = 2 |
unsigned int | halt_poll_ns_grow_start = 10000 |
unsigned int | halt_poll_ns_shrink |
static struct kmem_cache * | kvm_vcpu_cache |
static __read_mostly struct preempt_ops | kvm_preempt_ops |
struct dentry * | kvm_debugfs_dir |
static const struct file_operations | stat_fops_per_vm |
static unsigned long long | kvm_createvm_count |
static unsigned long long | kvm_active_vms |
static const struct vm_operations_struct | kvm_vcpu_vm_ops |
static struct file_operations | kvm_vcpu_fops |
static const struct file_operations | kvm_vcpu_stats_fops |
static struct file_operations | kvm_device_fops |
static const struct kvm_device_ops * | kvm_device_ops_table [KVM_DEV_TYPE_MAX] |
static const struct file_operations | kvm_vm_stats_fops |
static struct file_operations | kvm_vm_fops |
static struct file_operations | kvm_chardev_ops |
static struct miscdevice | kvm_dev |
#define CREATE_TRACE_POINTS |
Definition at line 67 of file kvm_main.c.
#define ITOA_MAX_LEN 12 |
Definition at line 74 of file kvm_main.c.
#define KVM_COMPAT | ( | c | ) |
Definition at line 139 of file kvm_main.c.
#define KVM_EVENT_CREATE_VM 0 |
Definition at line 147 of file kvm_main.c.
#define KVM_EVENT_DESTROY_VM 1 |
Definition at line 148 of file kvm_main.c.
#define KVM_SET_USER_MEMORY_REGION_V1_FLAGS (KVM_MEM_LOG_DIRTY_PAGES | KVM_MEM_READONLY) |
Definition at line 1602 of file kvm_main.c.
#define SANITY_CHECK_MEM_REGION_FIELD | ( | field | ) |
Definition at line 5090 of file kvm_main.c.
int __attribute__ | ( | (weak) | ) |
Definition at line 4952 of file kvm_main.c.
|
static |
Definition at line 2714 of file kvm_main.c.
kvm_pfn_t __gfn_to_pfn_memslot | ( | const struct kvm_memory_slot * | slot, |
gfn_t | gfn, | ||
bool | atomic, | ||
bool | interruptible, | ||
bool * | async, | ||
bool | write_fault, | ||
bool * | writable, | ||
hva_t * | hva | ||
) |
Definition at line 3031 of file kvm_main.c.
|
static |
Definition at line 3491 of file kvm_main.c.
|
static |
Definition at line 5857 of file kvm_main.c.
|
static |
Definition at line 5786 of file kvm_main.c.
|
static |
Definition at line 3386 of file kvm_main.c.
|
static |
Definition at line 3313 of file kvm_main.c.
int __kvm_set_memory_region | ( | struct kvm * | kvm, |
const struct kvm_userspace_memory_region2 * | mem | ||
) |
Definition at line 2020 of file kvm_main.c.
|
static |
Definition at line 3414 of file kvm_main.c.
|
static |
|
static |
|
inlinestatic |
|
static |
DEFINE_MUTEX | ( | kvm_lock | ) |
|
static |
|
static |
DEFINE_SIMPLE_ATTRIBUTE | ( | vcpu_stat_fops | , |
vcpu_stat_get | , | ||
vcpu_stat_clear | , | ||
"%llu\n" | |||
) |
DEFINE_SIMPLE_ATTRIBUTE | ( | vcpu_stat_readonly_fops | , |
vcpu_stat_get | , | ||
NULL | , | ||
"%llu\n" | |||
) |
DEFINE_SIMPLE_ATTRIBUTE | ( | vm_stat_fops | , |
vm_stat_get | , | ||
vm_stat_clear | , | ||
"%llu\n" | |||
) |
DEFINE_SIMPLE_ATTRIBUTE | ( | vm_stat_readonly_fops | , |
vm_stat_get | , | ||
NULL | , | ||
"%llu\n" | |||
) |
EXPORT_SYMBOL_GPL | ( | __gfn_to_pfn_memslot | ) |
EXPORT_SYMBOL_GPL | ( | __kvm_set_memory_region | ) |
EXPORT_SYMBOL_GPL | ( | file_is_kvm | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_hva | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_hva_memslot | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_memslot | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_page | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_page_many_atomic | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_pfn | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_pfn_memslot | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_pfn_memslot_atomic | ) |
EXPORT_SYMBOL_GPL | ( | gfn_to_pfn_prot | ) |
EXPORT_SYMBOL_GPL | ( | halt_poll_ns | ) |
EXPORT_SYMBOL_GPL | ( | halt_poll_ns_grow | ) |
EXPORT_SYMBOL_GPL | ( | halt_poll_ns_grow_start | ) |
EXPORT_SYMBOL_GPL | ( | halt_poll_ns_shrink | ) |
EXPORT_SYMBOL_GPL | ( | kvm_are_all_memslots_empty | ) |
EXPORT_SYMBOL_GPL | ( | kvm_clear_guest | ) |
EXPORT_SYMBOL_GPL | ( | kvm_debugfs_dir | ) |
EXPORT_SYMBOL_GPL | ( | kvm_destroy_vcpus | ) |
EXPORT_SYMBOL_GPL | ( | kvm_exit | ) |
EXPORT_SYMBOL_GPL | ( | kvm_flush_remote_tlbs | ) |
EXPORT_SYMBOL_GPL | ( | kvm_get_dirty_log | ) |
EXPORT_SYMBOL_GPL | ( | kvm_get_kvm | ) |
EXPORT_SYMBOL_GPL | ( | kvm_get_kvm_safe | ) |
EXPORT_SYMBOL_GPL | ( | kvm_get_running_vcpu | ) |
EXPORT_SYMBOL_GPL | ( | kvm_gfn_to_hva_cache_init | ) |
EXPORT_SYMBOL_GPL | ( | kvm_init | ) |
EXPORT_SYMBOL_GPL | ( | kvm_io_bus_get_dev | ) |
EXPORT_SYMBOL_GPL | ( | kvm_io_bus_write | ) |
EXPORT_SYMBOL_GPL | ( | kvm_is_visible_gfn | ) |
EXPORT_SYMBOL_GPL | ( | kvm_make_all_cpus_request | ) |
EXPORT_SYMBOL_GPL | ( | kvm_put_kvm | ) |
EXPORT_SYMBOL_GPL | ( | kvm_put_kvm_no_destroy | ) |
EXPORT_SYMBOL_GPL | ( | kvm_read_guest | ) |
EXPORT_SYMBOL_GPL | ( | kvm_read_guest_cached | ) |
EXPORT_SYMBOL_GPL | ( | kvm_read_guest_offset_cached | ) |
EXPORT_SYMBOL_GPL | ( | kvm_read_guest_page | ) |
EXPORT_SYMBOL_GPL | ( | kvm_release_page_clean | ) |
EXPORT_SYMBOL_GPL | ( | kvm_release_page_dirty | ) |
EXPORT_SYMBOL_GPL | ( | kvm_release_pfn_clean | ) |
EXPORT_SYMBOL_GPL | ( | kvm_release_pfn_dirty | ) |
EXPORT_SYMBOL_GPL | ( | kvm_set_memory_region | ) |
EXPORT_SYMBOL_GPL | ( | kvm_set_pfn_accessed | ) |
EXPORT_SYMBOL_GPL | ( | kvm_set_pfn_dirty | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_gfn_to_hva | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_gfn_to_pfn | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_gfn_to_pfn_atomic | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_halt | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_is_visible_gfn | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_kick | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_map | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_mark_page_dirty | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_on_spin | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_read_guest | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_read_guest_atomic | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_read_guest_page | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_unmap | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_wake_up | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_write_guest | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_write_guest_page | ) |
EXPORT_SYMBOL_GPL | ( | kvm_vcpu_yield_to | ) |
EXPORT_SYMBOL_GPL | ( | kvm_write_guest | ) |
EXPORT_SYMBOL_GPL | ( | kvm_write_guest_cached | ) |
EXPORT_SYMBOL_GPL | ( | kvm_write_guest_offset_cached | ) |
EXPORT_SYMBOL_GPL | ( | kvm_write_guest_page | ) |
EXPORT_SYMBOL_GPL | ( | mark_page_dirty | ) |
EXPORT_SYMBOL_GPL | ( | mark_page_dirty_in_slot | ) |
EXPORT_SYMBOL_GPL | ( | vcpu_load | ) |
EXPORT_SYMBOL_GPL | ( | vcpu_put | ) |
bool file_is_kvm | ( | struct file * | file | ) |
Definition at line 5424 of file kvm_main.c.
unsigned long gfn_to_hva | ( | struct kvm * | kvm, |
gfn_t | gfn | ||
) |
Definition at line 2742 of file kvm_main.c.
|
static |
Definition at line 2729 of file kvm_main.c.
unsigned long gfn_to_hva_memslot | ( | struct kvm_memory_slot * | slot, |
gfn_t | gfn | ||
) |
Definition at line 2735 of file kvm_main.c.
unsigned long gfn_to_hva_memslot_prot | ( | struct kvm_memory_slot * | slot, |
gfn_t | gfn, | ||
bool * | writable | ||
) |
Definition at line 2762 of file kvm_main.c.
unsigned long gfn_to_hva_prot | ( | struct kvm * | kvm, |
gfn_t | gfn, | ||
bool * | writable | ||
) |
struct kvm_memory_slot* gfn_to_memslot | ( | struct kvm * | kvm, |
gfn_t | gfn | ||
) |
struct page* gfn_to_page | ( | struct kvm * | kvm, |
gfn_t | gfn | ||
) |
Definition at line 3126 of file kvm_main.c.
int gfn_to_page_many_atomic | ( | struct kvm_memory_slot * | slot, |
gfn_t | gfn, | ||
struct page ** | pages, | ||
int | nr_pages | ||
) |
kvm_pfn_t gfn_to_pfn | ( | struct kvm * | kvm, |
gfn_t | gfn | ||
) |
Definition at line 3091 of file kvm_main.c.
kvm_pfn_t gfn_to_pfn_memslot | ( | const struct kvm_memory_slot * | slot, |
gfn_t | gfn | ||
) |
Definition at line 3071 of file kvm_main.c.
kvm_pfn_t gfn_to_pfn_memslot_atomic | ( | const struct kvm_memory_slot * | slot, |
gfn_t | gfn | ||
) |
Definition at line 3078 of file kvm_main.c.
kvm_pfn_t gfn_to_pfn_prot | ( | struct kvm * | kvm, |
gfn_t | gfn, | ||
bool | write_fault, | ||
bool * | writable | ||
) |
Definition at line 3063 of file kvm_main.c.
|
static |
|
static |
|
static |
kvm_pfn_t hva_to_pfn | ( | unsigned long | addr, |
bool | atomic, | ||
bool | interruptible, | ||
bool * | async, | ||
bool | write_fault, | ||
bool * | writable | ||
) |
Definition at line 2980 of file kvm_main.c.
|
static |
|
static |
Definition at line 2897 of file kvm_main.c.
|
static |
|
static |
Definition at line 1791 of file kvm_main.c.
|
static |
int __weak kvm_arch_create_vm_debugfs | ( | struct kvm * | kvm | ) |
bool __weak kvm_arch_dy_has_pending_interrupt | ( | struct kvm_vcpu * | vcpu | ) |
bool __weak kvm_arch_dy_runnable | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 4033 of file kvm_main.c.
__weak void kvm_arch_guest_memory_reclaimed | ( | struct kvm * | kvm | ) |
int __weak kvm_arch_post_init_vm | ( | struct kvm * | kvm | ) |
void __weak kvm_arch_pre_destroy_vm | ( | struct kvm * | kvm | ) |
bool kvm_are_all_memslots_empty | ( | struct kvm * | kvm | ) |
|
static |
int kvm_clear_guest | ( | struct kvm * | kvm, |
gpa_t | gpa, | ||
unsigned long | len | ||
) |
Definition at line 3615 of file kvm_main.c.
|
static |
|
static |
|
static |
Definition at line 1729 of file kvm_main.c.
|
static |
|
static |
Definition at line 1858 of file kvm_main.c.
|
static |
Definition at line 1191 of file kvm_main.c.
|
static |
Definition at line 1088 of file kvm_main.c.
|
static |
Definition at line 6015 of file kvm_main.c.
|
static |
|
static |
Definition at line 1866 of file kvm_main.c.
|
static |
|
static |
|
static |
void kvm_destroy_vcpus | ( | struct kvm * | kvm | ) |
Definition at line 522 of file kvm_main.c.
|
static |
Definition at line 1341 of file kvm_main.c.
|
static |
|
static |
Definition at line 5473 of file kvm_main.c.
|
static |
Definition at line 5430 of file kvm_main.c.
struct kvm_device* kvm_device_from_filp | ( | struct file * | filp | ) |
Definition at line 4727 of file kvm_main.c.
|
static |
Definition at line 4681 of file kvm_main.c.
|
static |
|
static |
Definition at line 4655 of file kvm_main.c.
|
static |
Definition at line 4704 of file kvm_main.c.
|
static |
void kvm_exit | ( | void | ) |
void kvm_flush_remote_tlbs | ( | struct kvm * | kvm | ) |
Definition at line 346 of file kvm_main.c.
void kvm_flush_remote_tlbs_memslot | ( | struct kvm * | kvm, |
const struct kvm_memory_slot * | memslot | ||
) |
Definition at line 380 of file kvm_main.c.
void kvm_flush_remote_tlbs_range | ( | struct kvm * | kvm, |
gfn_t | gfn, | ||
u64 | nr_pages | ||
) |
Definition at line 367 of file kvm_main.c.
|
static |
Definition at line 394 of file kvm_main.c.
|
static |
Definition at line 1026 of file kvm_main.c.
|
static |
Definition at line 1038 of file kvm_main.c.
int kvm_get_dirty_log | ( | struct kvm * | kvm, |
struct kvm_dirty_log * | log, | ||
int * | is_dirty, | ||
struct kvm_memory_slot ** | memslot | ||
) |
kvm_get_dirty_log - get a snapshot of dirty pages @kvm: pointer to kvm instance @log: slot id and address to which we copy the log @is_dirty: set to '1' if any dirty pages were found @memslot: set to the associated memslot, always valid on success
Definition at line 2173 of file kvm_main.c.
|
static |
void kvm_get_kvm | ( | struct kvm * | kvm | ) |
bool kvm_get_kvm_safe | ( | struct kvm * | kvm | ) |
struct kvm_vcpu* kvm_get_running_vcpu | ( | void | ) |
kvm_get_running_vcpu - get the vcpu running on the current CPU.
We can disable preemption locally around accessing the per-CPU variable, and use the resolved vcpu pointer after enabling preemption again, because even if the current thread is migrated to another CPU, reading the per-CPU value later will give us the same value as we update the per-CPU variable in the preempt notifier handlers.
Definition at line 6338 of file kvm_main.c.
struct kvm_vcpu* __percpu* kvm_get_running_vcpus | ( | void | ) |
kvm_get_running_vcpus - get the per-CPU array of currently running vcpus.
Definition at line 6353 of file kvm_main.c.
|
static |
|
static |
int kvm_gfn_to_hva_cache_init | ( | struct kvm * | kvm, |
struct gfn_to_hva_cache * | ghc, | ||
gpa_t | gpa, | ||
unsigned long | len | ||
) |
Definition at line 3532 of file kvm_main.c.
unsigned long kvm_host_page_size | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
Definition at line 2685 of file kvm_main.c.
int kvm_init | ( | unsigned | vcpu_size, |
unsigned | vcpu_align, | ||
struct module * | module | ||
) |
Definition at line 6402 of file kvm_main.c.
|
static |
Definition at line 6267 of file kvm_main.c.
|
static |
|
static |
|
static |
|
static |
Definition at line 1816 of file kvm_main.c.
|
inlinestatic |
|
static |
Definition at line 5720 of file kvm_main.c.
struct kvm_io_device* kvm_io_bus_get_dev | ( | struct kvm * | kvm, |
enum kvm_bus | bus_idx, | ||
gpa_t | addr | ||
) |
Definition at line 5989 of file kvm_main.c.
|
static |
Definition at line 5762 of file kvm_main.c.
int kvm_io_bus_read | ( | struct kvm_vcpu * | vcpu, |
enum kvm_bus | bus_idx, | ||
gpa_t | addr, | ||
int | len, | ||
void * | val | ||
) |
Definition at line 5878 of file kvm_main.c.
int kvm_io_bus_register_dev | ( | struct kvm * | kvm, |
enum kvm_bus | bus_idx, | ||
gpa_t | addr, | ||
int | len, | ||
struct kvm_io_device * | dev | ||
) |
Definition at line 5897 of file kvm_main.c.
|
static |
Definition at line 5757 of file kvm_main.c.
int kvm_io_bus_unregister_dev | ( | struct kvm * | kvm, |
enum kvm_bus | bus_idx, | ||
struct kvm_io_device * | dev | ||
) |
Definition at line 5941 of file kvm_main.c.
int kvm_io_bus_write | ( | struct kvm_vcpu * | vcpu, |
enum kvm_bus | bus_idx, | ||
gpa_t | addr, | ||
int | len, | ||
const void * | val | ||
) |
Definition at line 5807 of file kvm_main.c.
int kvm_io_bus_write_cookie | ( | struct kvm_vcpu * | vcpu, |
enum kvm_bus | bus_idx, | ||
gpa_t | addr, | ||
int | len, | ||
const void * | val, | ||
long | cookie | ||
) |
|
static |
Definition at line 4760 of file kvm_main.c.
|
static |
|
static |
bool kvm_is_visible_gfn | ( | struct kvm * | kvm, |
gfn_t | gfn | ||
) |
Definition at line 2669 of file kvm_main.c.
bool kvm_is_zone_device_page | ( | struct page * | page | ) |
|
inlinestatic |
Definition at line 251 of file kvm_main.c.
bool kvm_make_all_cpus_request | ( | struct kvm * | kvm, |
unsigned int | req | ||
) |
Definition at line 340 of file kvm_main.c.
bool kvm_make_all_cpus_request_except | ( | struct kvm * | kvm, |
unsigned int | req, | ||
struct kvm_vcpu * | except | ||
) |
Definition at line 314 of file kvm_main.c.
|
static |
Definition at line 260 of file kvm_main.c.
bool kvm_make_vcpus_request_mask | ( | struct kvm * | kvm, |
unsigned int | req, | ||
unsigned long * | vcpu_bitmap | ||
) |
Definition at line 288 of file kvm_main.c.
|
static |
|
static |
Definition at line 1878 of file kvm_main.c.
|
static |
Definition at line 132 of file kvm_main.c.
|
static |
Definition at line 135 of file kvm_main.c.
|
static |
struct page* kvm_pfn_to_refcounted_page | ( | kvm_pfn_t | pfn | ) |
Definition at line 179 of file kvm_main.c.
|
static |
Definition at line 1691 of file kvm_main.c.
void kvm_put_kvm | ( | struct kvm * | kvm | ) |
Definition at line 1419 of file kvm_main.c.
void kvm_put_kvm_no_destroy | ( | struct kvm * | kvm | ) |
int kvm_read_guest | ( | struct kvm * | kvm, |
gpa_t | gpa, | ||
void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3346 of file kvm_main.c.
int kvm_read_guest_cached | ( | struct kvm * | kvm, |
struct gfn_to_hva_cache * | ghc, | ||
void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3608 of file kvm_main.c.
int kvm_read_guest_offset_cached | ( | struct kvm * | kvm, |
struct gfn_to_hva_cache * | ghc, | ||
void * | data, | ||
unsigned int | offset, | ||
unsigned long | len | ||
) |
Definition at line 3578 of file kvm_main.c.
int kvm_read_guest_page | ( | struct kvm * | kvm, |
gfn_t | gfn, | ||
void * | data, | ||
int | offset, | ||
int | len | ||
) |
Definition at line 3328 of file kvm_main.c.
int kvm_register_device_ops | ( | const struct kvm_device_ops * | ops, |
u32 | type | ||
) |
void kvm_release_page_clean | ( | struct page * | page | ) |
Definition at line 3232 of file kvm_main.c.
void kvm_release_page_dirty | ( | struct page * | page | ) |
Definition at line 3256 of file kvm_main.c.
void kvm_release_pfn | ( | kvm_pfn_t | pfn, |
bool | dirty | ||
) |
Definition at line 3144 of file kvm_main.c.
void kvm_release_pfn_clean | ( | kvm_pfn_t | pfn | ) |
Definition at line 3241 of file kvm_main.c.
void kvm_release_pfn_dirty | ( | kvm_pfn_t | pfn | ) |
Definition at line 3265 of file kvm_main.c.
|
static |
|
static |
Definition at line 1544 of file kvm_main.c.
|
static |
|
static |
Definition at line 6304 of file kvm_main.c.
|
static |
Definition at line 6316 of file kvm_main.c.
int kvm_set_memory_region | ( | struct kvm * | kvm, |
const struct kvm_userspace_memory_region2 * | mem | ||
) |
Definition at line 2144 of file kvm_main.c.
|
static |
Definition at line 1904 of file kvm_main.c.
|
static |
Definition at line 3226 of file kvm_main.c.
|
static |
Definition at line 3220 of file kvm_main.c.
void kvm_set_pfn_accessed | ( | kvm_pfn_t | pfn | ) |
Definition at line 3295 of file kvm_main.c.
void kvm_set_pfn_dirty | ( | kvm_pfn_t | pfn | ) |
Definition at line 3285 of file kvm_main.c.
void kvm_sigset_activate | ( | struct kvm_vcpu * | vcpu | ) |
void kvm_sigset_deactivate | ( | struct kvm_vcpu * | vcpu | ) |
|
static |
Definition at line 6106 of file kvm_main.c.
|
static |
Definition at line 6087 of file kvm_main.c.
|
static |
Definition at line 6128 of file kvm_main.c.
|
static |
|
static |
Definition at line 1633 of file kvm_main.c.
|
static |
Definition at line 2887 of file kvm_main.c.
|
static |
void kvm_unregister_device_ops | ( | u32 | type | ) |
|
static |
Definition at line 1891 of file kvm_main.c.
bool kvm_vcpu_block | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 3764 of file kvm_main.c.
|
static |
Definition at line 3739 of file kvm_main.c.
|
static |
Definition at line 506 of file kvm_main.c.
|
static |
|
static |
Definition at line 4123 of file kvm_main.c.
unsigned long kvm_vcpu_gfn_to_hva | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
Definition at line 2748 of file kvm_main.c.
unsigned long kvm_vcpu_gfn_to_hva_prot | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn, | ||
bool * | writable | ||
) |
Definition at line 2780 of file kvm_main.c.
struct kvm_memory_slot* kvm_vcpu_gfn_to_memslot | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
kvm_pfn_t kvm_vcpu_gfn_to_pfn | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
kvm_pfn_t kvm_vcpu_gfn_to_pfn_atomic | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
Definition at line 3085 of file kvm_main.c.
void kvm_vcpu_halt | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 3842 of file kvm_main.c.
|
static |
Definition at line 482 of file kvm_main.c.
|
static |
Definition at line 4401 of file kvm_main.c.
|
static |
Definition at line 4375 of file kvm_main.c.
|
static |
bool kvm_vcpu_is_visible_gfn | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
void kvm_vcpu_kick | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 3931 of file kvm_main.c.
int kvm_vcpu_map | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn, | ||
struct kvm_host_map * | map | ||
) |
void kvm_vcpu_mark_page_dirty | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn | ||
) |
Definition at line 3669 of file kvm_main.c.
|
static |
|
static |
void kvm_vcpu_on_spin | ( | struct kvm_vcpu * | me, |
bool | yield_to_kernel_mode | ||
) |
Definition at line 4056 of file kvm_main.c.
int kvm_vcpu_read_guest | ( | struct kvm_vcpu * | vcpu, |
gpa_t | gpa, | ||
void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3366 of file kvm_main.c.
int kvm_vcpu_read_guest_atomic | ( | struct kvm_vcpu * | vcpu, |
gpa_t | gpa, | ||
void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3403 of file kvm_main.c.
int kvm_vcpu_read_guest_page | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn, | ||
void * | data, | ||
int | offset, | ||
int | len | ||
) |
Definition at line 3337 of file kvm_main.c.
|
static |
Definition at line 4167 of file kvm_main.c.
|
static |
Definition at line 4350 of file kvm_main.c.
|
static |
Definition at line 4360 of file kvm_main.c.
void kvm_vcpu_unmap | ( | struct kvm_vcpu * | vcpu, |
struct kvm_host_map * | map, | ||
bool | dirty | ||
) |
Definition at line 3186 of file kvm_main.c.
bool kvm_vcpu_wake_up | ( | struct kvm_vcpu * | vcpu | ) |
int kvm_vcpu_write_guest | ( | struct kvm_vcpu * | vcpu, |
gpa_t | gpa, | ||
const void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3470 of file kvm_main.c.
int kvm_vcpu_write_guest_page | ( | struct kvm_vcpu * | vcpu, |
gfn_t | gfn, | ||
const void * | data, | ||
int | offset, | ||
int | len | ||
) |
Definition at line 3440 of file kvm_main.c.
int kvm_vcpu_yield_to | ( | struct kvm_vcpu * | target | ) |
int kvm_vm_create_worker_thread | ( | struct kvm * | kvm, |
kvm_vm_thread_fn_t | thread_fn, | ||
uintptr_t | data, | ||
const char * | name, | ||
struct task_struct ** | thread_ptr | ||
) |
Definition at line 6593 of file kvm_main.c.
|
static |
Definition at line 5098 of file kvm_main.c.
|
static |
Definition at line 4818 of file kvm_main.c.
|
static |
Definition at line 4228 of file kvm_main.c.
|
static |
Definition at line 4973 of file kvm_main.c.
|
static |
Definition at line 4892 of file kvm_main.c.
|
static |
|
static |
Definition at line 4930 of file kvm_main.c.
|
static |
Definition at line 2156 of file kvm_main.c.
|
static |
|
static |
|
static |
Definition at line 5051 of file kvm_main.c.
|
static |
int kvm_write_guest | ( | struct kvm * | kvm, |
gpa_t | gpa, | ||
const void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3449 of file kvm_main.c.
int kvm_write_guest_cached | ( | struct kvm * | kvm, |
struct gfn_to_hva_cache * | ghc, | ||
void * | data, | ||
unsigned long | len | ||
) |
Definition at line 3571 of file kvm_main.c.
int kvm_write_guest_offset_cached | ( | struct kvm * | kvm, |
struct gfn_to_hva_cache * | ghc, | ||
void * | data, | ||
unsigned int | offset, | ||
unsigned long | len | ||
) |
Definition at line 3540 of file kvm_main.c.
int kvm_write_guest_page | ( | struct kvm * | kvm, |
gfn_t | gfn, | ||
const void * | data, | ||
int | offset, | ||
int | len | ||
) |
Definition at line 3431 of file kvm_main.c.
LIST_HEAD | ( | vm_list | ) |
void mark_page_dirty | ( | struct kvm * | kvm, |
gfn_t | gfn | ||
) |
void mark_page_dirty_in_slot | ( | struct kvm * | kvm, |
const struct kvm_memory_slot * | memslot, | ||
gfn_t | gfn | ||
) |
Definition at line 3635 of file kvm_main.c.
|
static |
MODULE_AUTHOR | ( | "Qumranet" | ) |
MODULE_LICENSE | ( | "GPL" | ) |
module_param | ( | halt_poll_ns | , |
uint | , | ||
0644 | |||
) |
module_param | ( | halt_poll_ns_grow | , |
uint | , | ||
0644 | |||
) |
module_param | ( | halt_poll_ns_grow_start | , |
uint | , | ||
0644 | |||
) |
module_param | ( | halt_poll_ns_shrink | , |
uint | , | ||
0644 | |||
) |
|
static |
|
inlinestatic |
|
static |
|
inlinestatic |
|
static |
Definition at line 4038 of file kvm_main.c.
void vcpu_load | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 208 of file kvm_main.c.
void vcpu_put | ( | struct kvm_vcpu * | vcpu | ) |
Definition at line 219 of file kvm_main.c.
|
static |
|
static |
|
static |
|
static |
|
static |
unsigned int halt_poll_ns = KVM_HALT_POLL_NS_DEFAULT |
Definition at line 80 of file kvm_main.c.
unsigned int halt_poll_ns_grow = 2 |
Definition at line 85 of file kvm_main.c.
unsigned int halt_poll_ns_grow_start = 10000 |
Definition at line 90 of file kvm_main.c.
unsigned int halt_poll_ns_shrink |
Definition at line 95 of file kvm_main.c.
|
static |
Definition at line 151 of file kvm_main.c.
|
static |
Definition at line 5473 of file kvm_main.c.
|
static |
Definition at line 150 of file kvm_main.c.
struct dentry* kvm_debugfs_dir |
Definition at line 113 of file kvm_main.c.
|
static |
Definition at line 5473 of file kvm_main.c.
|
static |
Definition at line 4704 of file kvm_main.c.
|
static |
Definition at line 4735 of file kvm_main.c.
|
static |
Definition at line 110 of file kvm_main.c.
|
static |
Definition at line 108 of file kvm_main.c.
|
static |
Definition at line 4167 of file kvm_main.c.
|
static |
Definition at line 4360 of file kvm_main.c.
|
static |
Definition at line 4123 of file kvm_main.c.
|
static |
Definition at line 5098 of file kvm_main.c.
|
static |
Definition at line 5051 of file kvm_main.c.
|
static |
Definition at line 114 of file kvm_main.c.