KVM
|
Go to the source code of this file.
Functions | |
static bool | is_removed_spte (u64 spte) |
static int | spte_index (u64 *sptep) |
static struct kvm_mmu_page * | to_shadow_page (hpa_t shadow_page) |
static struct kvm_mmu_page * | spte_to_child_sp (u64 spte) |
static struct kvm_mmu_page * | sptep_to_sp (u64 *sptep) |
static struct kvm_mmu_page * | root_to_sp (hpa_t root) |
static bool | is_mmio_spte (u64 spte) |
static bool | is_shadow_present_pte (u64 pte) |
static bool | kvm_ad_enabled (void) |
static bool | sp_ad_disabled (struct kvm_mmu_page *sp) |
static bool | spte_ad_enabled (u64 spte) |
static bool | spte_ad_need_write_protect (u64 spte) |
static u64 | spte_shadow_accessed_mask (u64 spte) |
static u64 | spte_shadow_dirty_mask (u64 spte) |
static bool | is_access_track_spte (u64 spte) |
static bool | is_large_pte (u64 pte) |
static bool | is_last_spte (u64 pte, int level) |
static bool | is_executable_pte (u64 spte) |
static kvm_pfn_t | spte_to_pfn (u64 pte) |
static bool | is_accessed_spte (u64 spte) |
static bool | is_dirty_spte (u64 spte) |
static u64 | get_rsvd_bits (struct rsvd_bits_validate *rsvd_check, u64 pte, int level) |
static bool | __is_rsvd_bits_set (struct rsvd_bits_validate *rsvd_check, u64 pte, int level) |
static bool | __is_bad_mt_xwr (struct rsvd_bits_validate *rsvd_check, u64 pte) |
static __always_inline bool | is_rsvd_spte (struct rsvd_bits_validate *rsvd_check, u64 spte, int level) |
static bool | is_writable_pte (unsigned long pte) |
static void | check_spte_writable_invariants (u64 spte) |
static bool | is_mmu_writable_spte (u64 spte) |
static u64 | get_mmio_spte_generation (u64 spte) |
bool | spte_has_volatile_bits (u64 spte) |
bool | make_spte (struct kvm_vcpu *vcpu, struct kvm_mmu_page *sp, const struct kvm_memory_slot *slot, unsigned int pte_access, gfn_t gfn, kvm_pfn_t pfn, u64 old_spte, bool prefetch, bool can_unsync, bool host_writable, u64 *new_spte) |
u64 | make_huge_page_split_spte (struct kvm *kvm, u64 huge_spte, union kvm_mmu_page_role role, int index) |
u64 | make_nonleaf_spte (u64 *child_pt, bool ad_disabled) |
u64 | make_mmio_spte (struct kvm_vcpu *vcpu, u64 gfn, unsigned int access) |
u64 | mark_spte_for_access_track (u64 spte) |
static u64 | restore_acc_track_spte (u64 spte) |
u64 | kvm_mmu_changed_pte_notifier_make_spte (u64 old_spte, kvm_pfn_t new_pfn) |
void __init | kvm_mmu_spte_module_init (void) |
void | kvm_mmu_reset_all_pte_masks (void) |
#define ACC_ALL (ACC_EXEC_MASK | ACC_WRITE_MASK | ACC_USER_MASK) |
#define ACC_USER_MASK PT_USER_MASK |
#define ACC_WRITE_MASK PT_WRITABLE_MASK |
#define MMIO_SPTE_GEN_HIGH_BITS (MMIO_SPTE_GEN_HIGH_END - MMIO_SPTE_GEN_HIGH_START + 1) |
#define MMIO_SPTE_GEN_HIGH_MASK |
#define MMIO_SPTE_GEN_HIGH_SHIFT (MMIO_SPTE_GEN_HIGH_START - MMIO_SPTE_GEN_LOW_BITS) |
#define MMIO_SPTE_GEN_LOW_BITS (MMIO_SPTE_GEN_LOW_END - MMIO_SPTE_GEN_LOW_START + 1) |
#define MMIO_SPTE_GEN_LOW_MASK |
#define MMIO_SPTE_GEN_LOW_SHIFT (MMIO_SPTE_GEN_LOW_START - 0) |
#define MMIO_SPTE_GEN_MASK GENMASK_ULL(MMIO_SPTE_GEN_LOW_BITS + MMIO_SPTE_GEN_HIGH_BITS - 1, 0) |
#define SHADOW_ACC_TRACK_SAVED_BITS_MASK |
#define SHADOW_ACC_TRACK_SAVED_MASK |
#define SPTE_BASE_ADDR_MASK (((1ULL << 52) - 1) & ~(u64)(PAGE_SIZE-1)) |
#define SPTE_ENT_PER_PAGE __PT_ENT_PER_PAGE(SPTE_LEVEL_BITS) |
#define SPTE_INDEX | ( | address, | |
level | |||
) | __PT_INDEX(address, level, SPTE_LEVEL_BITS) |
#define SPTE_LEVEL_SHIFT | ( | level | ) | __PT_LEVEL_SHIFT(level, SPTE_LEVEL_BITS) |
#define SPTE_MMIO_ALLOWED_MASK (BIT_ULL(63) | GENMASK_ULL(51, 12) | GENMASK_ULL(2, 0)) |
#define SPTE_PERM_MASK |
#define SPTE_TDP_AD_DISABLED (1ULL << SPTE_TDP_AD_SHIFT) |
#define SPTE_TDP_AD_ENABLED (0ULL << SPTE_TDP_AD_SHIFT) |
#define SPTE_TDP_AD_MASK (3ULL << SPTE_TDP_AD_SHIFT) |
#define SPTE_TDP_AD_WRPROT_ONLY (2ULL << SPTE_TDP_AD_SHIFT) |
|
inlinestatic |
|
inlinestatic |
Definition at line 356 of file spte.h.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
static |
Definition at line 368 of file spte.h.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
u64 kvm_mmu_changed_pte_notifier_make_spte | ( | u64 | old_spte, |
kvm_pfn_t | new_pfn | ||
) |
void kvm_mmu_reset_all_pte_masks | ( | void | ) |
Definition at line 453 of file spte.c.
void __init kvm_mmu_spte_module_init | ( | void | ) |
u64 make_huge_page_split_spte | ( | struct kvm * | kvm, |
u64 | huge_spte, | ||
union kvm_mmu_page_role | role, | ||
int | index | ||
) |
Definition at line 274 of file spte.c.
u64 make_mmio_spte | ( | struct kvm_vcpu * | vcpu, |
u64 | gfn, | ||
unsigned int | access | ||
) |
u64 make_nonleaf_spte | ( | u64 * | child_pt, |
bool | ad_disabled | ||
) |
bool make_spte | ( | struct kvm_vcpu * | vcpu, |
struct kvm_mmu_page * | sp, | ||
const struct kvm_memory_slot * | slot, | ||
unsigned int | pte_access, | ||
gfn_t | gfn, | ||
kvm_pfn_t | pfn, | ||
u64 | old_spte, | ||
bool | prefetch, | ||
bool | can_unsync, | ||
bool | host_writable, | ||
u64 * | new_spte | ||
) |
Definition at line 137 of file spte.c.
u64 mark_spte_for_access_track | ( | u64 | spte | ) |
Definition at line 341 of file spte.c.
|
inlinestatic |
|
inlinestatic |
Definition at line 240 of file spte.h.
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
bool spte_has_volatile_bits | ( | u64 | spte | ) |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
|
inlinestatic |
Definition at line 223 of file spte.h.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |