This is provided explicitly in SVM and implicitly in VMX (when neither of
the three EPT_EFFECTIVE_* bits is set).
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Reviewed-by: Jan Beulich <jbeulich@suse.com>
Acked-by: Kevin Tian <kevin.tian@intel.com>
struct npfec npfec = {
.read_access = !(pfec & PFEC_insn_fetch),
.write_access = !!(pfec & PFEC_write_access),
- .insn_fetch = !!(pfec & PFEC_insn_fetch)
+ .insn_fetch = !!(pfec & PFEC_insn_fetch),
+ .present = !!(pfec & PFEC_page_present),
};
/* These bits are mutually exclusive */
.read_access = !!(qualification & EPT_READ_VIOLATION) ||
!!(qualification & EPT_WRITE_VIOLATION),
.write_access = !!(qualification & EPT_WRITE_VIOLATION),
- .insn_fetch = !!(qualification & EPT_EXEC_VIOLATION)
+ .insn_fetch = !!(qualification & EPT_EXEC_VIOLATION),
+ .present = !!(qualification & (EPT_EFFECTIVE_READ |
+ EPT_EFFECTIVE_WRITE |
+ EPT_EFFECTIVE_EXEC))
};
if ( tb_init_done )
unsigned int read_access:1;
unsigned int write_access:1;
unsigned int insn_fetch:1;
+ unsigned int present:1;
unsigned int gla_valid:1;
unsigned int kind:2; /* npfec_kind_t */
};