Lines Matching full:ept

1035  * __setup_ept - Setup the VMCS fields to enable Extended Page Tables (EPT)
1036 * @hpa: Host physical address of the top-level, a.k.a. root, EPT table
1037 * @enable_ad: Whether or not to enable Access/Dirty bits for EPT entries
1053 printf("\tWB memtype for EPT walks not supported\n"); in __setup_ept()
1058 /* Support for 4-level EPT is mandatory. */ in __setup_ept()
1059 report(false, "4-level EPT support check"); in __setup_ept()
1078 * setup_ept - Enable Extended Page Tables (EPT) and setup an identity map
1079 * @enable_ad: Whether or not to enable Access/Dirty bits for EPT entries
1083 * This is the "real" function for setting up EPT tables, i.e. use this for
1084 * tests that need to run code in the guest with EPT enabled.
1098 /* Cannot use large EPT pages if we need to track EPT in setup_ept()
1108 * setup_dummy_ept - Enable Extended Page Tables (EPT) with a dummy root HPA
1110 * Setup EPT using a semi-arbitrary dummy root HPA. This function is intended
1111 * for use by tests that need EPT enabled to verify dependent VMCS controls
1113 * EPT tables.
1118 report_abort("EPT setup unexpectedly failed"); in setup_dummy_ept()
1159 test_skip("EPT AD bits not supported."); in ept_enable_ad_bits_or_skip_test()
1170 /* INVEPT is required by the EPT violation handler. */ in ept_init_common()
1205 report_fail("EPT basic framework - read"); in ept_common()
1212 report_pass("EPT basic framework"); in ept_common()
1214 report_pass("EPT basic framework - remap"); in ept_common()
1217 // Test EPT Misconfigurations in ept_common()
1222 report_fail("EPT misconfigurations"); in ept_common()
1228 report(vmx_get_test_stage() == 3, "EPT misconfigurations"); in ept_common()
1230 // Test EPT violation in ept_common()
1234 report(vmx_get_test_stage() == 4, "EPT violation - page permission"); in ept_common()
1235 // Violation caused by EPT paging structure in ept_common()
1239 report(vmx_get_test_stage() == 5, "EPT violation - paging structure"); in ept_common()
1246 report(vmx_get_test_stage() == 6, "MMIO EPT violation - read"); in ept_common()
1249 report(vmx_get_test_stage() == 7, "MMIO EPT violation - write"); in ept_common()
1256 // Test EPT access to L1 MMIO in ept_main()
1258 report(*((u32 *)0xfee00030UL) == apic_version, "EPT - MMIO access"); in ept_main()
1262 report(vmx_get_test_stage() == 8, "EPT - unsupported INVEPT"); in ept_main()
1365 report_fail("EPT basic framework - write"); in ept_exit_handler_common()
2319 * Modifies the EPT entry at @level in the mapping of @gpa. First clears the
2431 * accesses, EPT violations don't set the flag EPT_VLT_PADDR. For a typical
2436 * on isn't present in the EPT, then the EPT violation will be for GPA_2 and
2442 * This function modifies the EPT entry that maps the GPA that the guest page
2445 * @ept_access EPT permissions to set. Other permissions are cleared.
2455 * @expected_qual Expected qualification for the EPT violation.
2477 * Now modify the access bits on the EPT entry for the GPA that the in ept_access_paddr()
2478 * guest PTE resides on. Note that by modifying a single EPT entry, in ept_access_paddr()
2489 * Make sure the guest page table page is mapped with a 4K EPT entry, in ept_access_paddr()
2617 * According to description of exit qual for EPT violation, in ept_misconfig_at_level_mkhuge_op()
2759 test_skip("EPT not supported"); in ept_access_test_setup()
2917 * EPTP. Bit 63 is ignored because "EPT-violation #VE" VM-execution in ept_access_test_ignored_bits()
2963 * When EPT AD bits are disabled, all accesses to guest paging in ept_access_test_paddr_read_only_ad_disabled()
2990 * When EPT AD bits are enabled, all accesses to guest paging in ept_access_test_paddr_read_only_ad_enabled()
2991 * structures are considered writes as far as EPT translation in ept_access_test_paddr_read_only_ad_enabled()
3031 * When EPT AD bits are disabled, all accesses to guest paging in ept_access_test_paddr_read_execute_ad_disabled()
3058 * When EPT AD bits are enabled, all accesses to guest paging in ept_access_test_paddr_read_execute_ad_enabled()
3059 * structures are considered writes as far as EPT translation in ept_access_test_paddr_read_execute_ad_enabled()
3082 * TODO: test no EPT violation as long as guest PF occurs. e.g., GPA is in ept_access_test_paddr_not_present_page_fault()
3083 * page is read-only in EPT but GVA is also mapped read only in PT. in ept_access_test_paddr_not_present_page_fault()
3084 * Thus guest page fault before host takes EPT violation for trying to in ept_access_test_paddr_not_present_page_fault()
4693 report_prefix_pushf("Enable-EPT enabled; EPT accessed and dirty flag %s", in test_eptp_ad_bit()
4704 * 1. If the "enable EPT" VM-execution control is 1, the "EPTP VM-execution"
4707 * - The EPT memory type (bits 2:0) must be a value supported by the
4709 * - Bits 5:3 (1 less than the EPT page-walk length) must indicate a
4710 * supported EPT page-walk length.
4711 * - Bit 6 (enable bit for accessed and dirty flags for EPT) must be
4714 * dirty flags for EPT.
4719 * "enable EPT" VM-execution control must also be 1.
4732 report_skip("%s : EPT not supported", __func__); in test_ept_eptp()
4746 report_prefix_pushf("Enable-EPT enabled; EPT memory type %lu", in test_ept_eptp()
4759 * less than the EPT page-walk length". in test_ept_eptp()
4766 report_prefix_pushf("Enable-EPT enabled; EPT page walk length %lu", in test_ept_eptp()
4807 report_prefix_pushf("Enable-EPT enabled; reserved bits [11:7] %lu", in test_ept_eptp()
4828 report_prefix_pushf("Enable-EPT enabled; reserved bits [63:N] %lu", in test_ept_eptp()
4839 report_prefix_pushf("Enable-EPT disabled, unrestricted-guest disabled"); in test_ept_eptp()
4848 report_prefix_pushf("Enable-EPT disabled, unrestricted-guest enabled"); in test_ept_eptp()
4854 report_prefix_pushf("Enable-EPT enabled, unrestricted-guest enabled"); in test_ept_eptp()
4861 report_prefix_pushf("Enable-EPT enabled, unrestricted-guest disabled"); in test_ept_eptp()
4871 * If the 'enable PML' VM-execution control is 1, the 'enable EPT'
4890 …report_skip("%s : \"Secondary execution\" or \"enable EPT\" or \"enable PML\" control not supporte… in test_pml()
4898 report_prefix_pushf("enable-PML disabled, enable-EPT disabled"); in test_pml()
4904 report_prefix_pushf("enable-PML enabled, enable-EPT disabled"); in test_pml()
4910 report_prefix_pushf("enable-PML enabled, enable-EPT enabled"); in test_pml()
4916 report_prefix_pushf("enable-PML disabled, enable EPT enabled"); in test_pml()
8408 * And now do the same LA57 shenanigans with EPT enabled. KVM uses in vmx_cr_load_test()
8412 * If the saved execution controls are non-zero then the EPT version in vmx_cr_load_test()
8413 * has already run. In that case, restore the old controls. If EPT in vmx_cr_load_test()
8414 * setup fails, e.g. EPT isn't supported, fall through and finish up. in vmx_cr_load_test()
11397 { "EPT A/D disabled", ept_init, ept_main, ept_exit_handler, NULL, {0} },
11398 { "EPT A/D enabled", eptad_init, eptad_main, eptad_exit_handler, NULL, {0} },
11458 /* EPT access tests. */