|
@@ -118,6 +118,27 @@ static inline void kvm_set_s2pmd_writable(pmd_t *pmd)
|
|
|
pmd_val(*pmd) |= PMD_S2_RDWR;
|
|
|
}
|
|
|
|
|
|
+static inline void kvm_set_s2pte_readonly(pte_t *pte)
|
|
|
+{
|
|
|
+ pte_val(*pte) = (pte_val(*pte) & ~PTE_S2_RDWR) | PTE_S2_RDONLY;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool kvm_s2pte_readonly(pte_t *pte)
|
|
|
+{
|
|
|
+ return (pte_val(*pte) & PTE_S2_RDWR) == PTE_S2_RDONLY;
|
|
|
+}
|
|
|
+
|
|
|
+static inline void kvm_set_s2pmd_readonly(pmd_t *pmd)
|
|
|
+{
|
|
|
+ pmd_val(*pmd) = (pmd_val(*pmd) & ~PMD_S2_RDWR) | PMD_S2_RDONLY;
|
|
|
+}
|
|
|
+
|
|
|
+static inline bool kvm_s2pmd_readonly(pmd_t *pmd)
|
|
|
+{
|
|
|
+ return (pmd_val(*pmd) & PMD_S2_RDWR) == PMD_S2_RDONLY;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
#define kvm_pgd_addr_end(addr, end) pgd_addr_end(addr, end)
|
|
|
#define kvm_pud_addr_end(addr, end) pud_addr_end(addr, end)
|
|
|
#define kvm_pmd_addr_end(addr, end) pmd_addr_end(addr, end)
|