Lines Matching refs:spte

103  * Bits 0-7 of the MMIO generation are propagated to spte bits 3-10
104 * Bits 8-18 of the MMIO generation are propagated to spte bits 52-62
111 * checking for MMIO spte cache hits.
202 static inline bool is_removed_spte(u64 spte)
204 return spte == REMOVED_SPTE;
230 static inline struct kvm_mmu_page *spte_to_child_sp(u64 spte)
232 return to_shadow_page(spte & SPTE_BASE_ADDR_MASK);
252 static inline bool is_mmio_spte(u64 spte)
254 return (spte & shadow_mmio_mask) == shadow_mmio_value &&
279 static inline bool spte_ad_enabled(u64 spte)
281 KVM_MMU_WARN_ON(!is_shadow_present_pte(spte));
282 return (spte & SPTE_TDP_AD_MASK) != SPTE_TDP_AD_DISABLED;
285 static inline bool spte_ad_need_write_protect(u64 spte)
287 KVM_MMU_WARN_ON(!is_shadow_present_pte(spte));
293 return (spte & SPTE_TDP_AD_MASK) != SPTE_TDP_AD_ENABLED;
296 static inline u64 spte_shadow_accessed_mask(u64 spte)
298 KVM_MMU_WARN_ON(!is_shadow_present_pte(spte));
299 return spte_ad_enabled(spte) ? shadow_accessed_mask : 0;
302 static inline u64 spte_shadow_dirty_mask(u64 spte)
304 KVM_MMU_WARN_ON(!is_shadow_present_pte(spte));
305 return spte_ad_enabled(spte) ? shadow_dirty_mask : 0;
308 static inline bool is_access_track_spte(u64 spte)
310 return !spte_ad_enabled(spte) && (spte & shadow_acc_track_mask) == 0;
323 static inline bool is_executable_pte(u64 spte)
325 return (spte & (shadow_x_mask | shadow_nx_mask)) == shadow_x_mask;
333 static inline bool is_accessed_spte(u64 spte)
335 u64 accessed_mask = spte_shadow_accessed_mask(spte);
337 return accessed_mask ? spte & accessed_mask
338 : !is_access_track_spte(spte);
341 static inline bool is_dirty_spte(u64 spte)
343 u64 dirty_mask = spte_shadow_dirty_mask(spte);
345 return dirty_mask ? spte & dirty_mask : spte & PT_WRITABLE_MASK;
369 u64 spte, int level)
371 return __is_bad_mt_xwr(rsvd_check, spte) ||
372 __is_rsvd_bits_set(rsvd_check, spte, level);
446 /* Note: spte must be a shadow-present leaf SPTE. */
447 static inline void check_spte_writable_invariants(u64 spte)
449 if (spte & shadow_mmu_writable_mask)
450 WARN_ONCE(!(spte & shadow_host_writable_mask),
452 spte);
454 WARN_ONCE(is_writable_pte(spte),
455 KBUILD_MODNAME ": Writable SPTE is not MMU-writable: %llx", spte);
458 static inline bool is_mmu_writable_spte(u64 spte)
460 return spte & shadow_mmu_writable_mask;
463 static inline u64 get_mmio_spte_generation(u64 spte)
467 gen = (spte & MMIO_SPTE_GEN_LOW_MASK) >> MMIO_SPTE_GEN_LOW_SHIFT;
468 gen |= (spte & MMIO_SPTE_GEN_HIGH_MASK) >> MMIO_SPTE_GEN_HIGH_SHIFT;
472 bool spte_has_volatile_bits(u64 spte);
483 u64 mark_spte_for_access_track(u64 spte);
486 static inline u64 restore_acc_track_spte(u64 spte)
488 u64 saved_bits = (spte >> SHADOW_ACC_TRACK_SAVED_BITS_SHIFT)
491 spte &= ~shadow_acc_track_mask;
492 spte &= ~(SHADOW_ACC_TRACK_SAVED_BITS_MASK <<
494 spte |= saved_bits;
496 return spte;