@@ -1766,7 +1766,7 @@ static void nmi_hlt_main(void)
long long start;
if (cpu_count() < 2) {
- report_skip(__func__);
+ report_skip("%s :CPU count < 2", __func__);
vmx_set_test_stage(-1);
return;
}
@@ -4107,7 +4107,7 @@ static void test_vpid(void)
int i;
if (!is_vpid_supported()) {
- printf("Secondary controls and/or VPID not supported\n");
+ report_skip("%s :Secondary controls and/or VPID not supported", __func__);
return;
}
@@ -4614,7 +4614,7 @@ static void test_nmi_ctrls(void)
if ((ctrl_pin_rev.clr & (PIN_NMI | PIN_VIRT_NMI)) !=
(PIN_NMI | PIN_VIRT_NMI)) {
- printf("NMI exiting and Virtual NMIs are not supported !\n");
+ report_skip("%s :NMI exiting and/or Virtual NMIs not supported", __func__);
return;
}
@@ -4724,7 +4724,7 @@ static void test_ept_eptp(void)
if (!((ctrl_cpu_rev[0].clr & CPU_SECONDARY) &&
(ctrl_cpu_rev[1].clr & CPU_EPT))) {
- printf("\"CPU secondary\" and/or \"enable EPT\" execution controls are not supported !\n");
+ report_skip("%s :\"CPU secondary\" and/or \"enable EPT\" exec control not supported", __func__);
return;
}
@@ -4884,7 +4884,7 @@ static void test_pml(void)
if (!((ctrl_cpu_rev[0].clr & CPU_SECONDARY) &&
(ctrl_cpu_rev[1].clr & CPU_EPT) && (ctrl_cpu_rev[1].clr & CPU_PML))) {
- printf("\"Secondary execution\" control or \"enable EPT\" control or \"enable PML\" control is not supported !\n");
+ report_skip("%s :\"Secondary execution\" or \"enable EPT\" or \"enable PML\" control not supported", __func__);
return;
}
@@ -4936,7 +4936,7 @@ static void test_vmx_preemption_timer(void)
if (!((ctrl_exit_rev.clr & EXI_SAVE_PREEMPT) ||
(ctrl_pin_rev.clr & PIN_PREEMPT))) {
- printf("\"Save-VMX-preemption-timer\" control and/or \"Enable-VMX-preemption-timer\" control is not supported\n");
+ report_skip("%s :\"Save-VMX-preemption-timer\" and/or \"Enable-VMX-preemption-timer\" control not supported", __func__);
return;
}
@@ -5060,7 +5060,7 @@ static void vmx_mtf_test(void)
handler old_gp, old_db;
if (!(ctrl_cpu_rev[0].clr & CPU_MTF)) {
- printf("CPU does not support the 'monitor trap flag' processor-based VM-execution control.\n");
+ report_skip("%s :\"Monitor trap flag\" exec control not supported", __func__);
return;
}
@@ -5163,12 +5163,12 @@ static void vmx_mtf_pdpte_test(void)
return;
if (!(ctrl_cpu_rev[0].clr & CPU_MTF)) {
- printf("CPU does not support 'monitor trap flag.'\n");
+ report_skip("%s :\"Monitor trap flag\" exec control not supported", __func__);
return;
}
if (!(ctrl_cpu_rev[1].clr & CPU_URG)) {
- printf("CPU does not support 'unrestricted guest.'\n");
+ report_skip("%s :\"Unrestricted guest\" exec control not supported", __func__);
return;
}
@@ -6142,7 +6142,7 @@ static void apic_reg_virt_test(void)
struct apic_reg_virt_guest_args *args = &apic_reg_virt_guest_args;
if (!cpu_has_apicv()) {
- report_skip(__func__);
+ report_skip("%s :Not all required APICv bits supported", __func__);
return;
}
@@ -6879,7 +6879,7 @@ static enum Config_type configure_virt_x2apic_mode_test(
if (virt_x2apic_mode_config->virtual_interrupt_delivery) {
if (!(ctrl_cpu_rev[1].clr & CPU_VINTD)) {
- report_skip("VM-execution control \"virtual-interrupt delivery\" NOT supported.\n");
+ report_skip("%s :\"virtual-interrupt delivery\" exec control not supported", __func__);
return CONFIG_TYPE_UNSUPPORTED;
}
cpu_exec_ctrl1 |= CPU_VINTD;
@@ -6920,7 +6920,7 @@ static void virt_x2apic_mode_test(void)
struct virt_x2apic_mode_guest_args *args = &virt_x2apic_mode_guest_args;
if (!cpu_has_apicv()) {
- report_skip(__func__);
+ report_skip("%s :Not all required APICv bits supported", __func__);
return;
}
@@ -6940,10 +6940,10 @@ static void virt_x2apic_mode_test(void)
* - "MSR-bitmap address", indicated by "use MSR bitmaps"
*/
if (!(ctrl_cpu_rev[0].clr & CPU_TPR_SHADOW)) {
- report_skip("VM-execution control \"use TPR shadow\" NOT supported.\n");
+ report_skip("%s :\"Use TPR shadow\" exec control not supported", __func__);
return;
} else if (!(ctrl_cpu_rev[0].clr & CPU_MSR_BITMAP)) {
- report_skip("VM-execution control \"use MSR bitmaps\" NOT supported.\n");
+ report_skip("%s :\"Use MSR bitmaps\" exec control not supported", __func__);
return;
}
@@ -6969,7 +6969,7 @@ static void virt_x2apic_mode_test(void)
configure_virt_x2apic_mode_test(virt_x2apic_mode_config,
msr_bitmap_page);
if (config_type == CONFIG_TYPE_UNSUPPORTED) {
- report_skip("Skip because of missing features.\n");
+ report_skip("Skip because of missing features.");
continue;
} else if (config_type == CONFIG_TYPE_VMENTRY_FAILS_EARLY) {
enter_guest_with_bad_controls();
@@ -7175,7 +7175,7 @@ static void test_efer(u32 fld, const char * fld_name, u32 ctrl_fld,
efer_reserved_bits &= ~EFER_NX;
if (!ctrl_bit1) {
- printf("\"Load-IA32-EFER\" exit control not supported\n");
+ report_skip("%s :\"Load-IA32-EFER\" exit control not supported", __func__);
goto test_entry_exit_mode;
}
@@ -7258,7 +7258,7 @@ static void test_host_efer(void)
static void test_guest_efer(void)
{
if (!(ctrl_enter_rev.clr & ENT_LOAD_EFER)) {
- printf("\"Load-IA32-EFER\" entry control not supported\n");
+ report_skip("%s :\"Load-IA32-EFER\" entry control not supported", __func__);
return;
}
@@ -7349,7 +7349,7 @@ static void test_load_host_pat(void)
* "load IA32_PAT" VM-exit control
*/
if (!(ctrl_exit_rev.clr & EXI_LOAD_PAT)) {
- printf("\"Load-IA32-PAT\" exit control not supported\n");
+ report_skip("%s :\"Load-IA32-PAT\" exit control not supported", __func__);
return;
}
@@ -7491,7 +7491,7 @@ static void test_perf_global_ctrl(u32 nr, const char *name, u32 ctrl_nr,
static void test_load_host_perf_global_ctrl(void)
{
if (!(ctrl_exit_rev.clr & EXI_LOAD_PERF)) {
- printf("\"load IA32_PERF_GLOBAL_CTRL\" exit control not supported\n");
+ report_skip("%s :\"Load IA32_PERF_GLOBAL_CTRL\" exit control not supported", __func__);
return;
}
@@ -7503,7 +7503,7 @@ static void test_load_host_perf_global_ctrl(void)
static void test_load_guest_perf_global_ctrl(void)
{
if (!(ctrl_enter_rev.clr & ENT_LOAD_PERF)) {
- printf("\"load IA32_PERF_GLOBAL_CTRL\" entry control not supported\n");
+ report_skip("%s :\"Load IA32_PERF_GLOBAL_CTRL\" entry control not supported", __func__);
return;
}
@@ -7809,7 +7809,7 @@ static void test_load_guest_pat(void)
* "load IA32_PAT" VM-entry control
*/
if (!(ctrl_enter_rev.clr & ENT_LOAD_PAT)) {
- printf("\"Load-IA32-PAT\" entry control not supported\n");
+ report_skip("%s :\"Load-IA32-PAT\" entry control not supported", __func__);
return;
}
@@ -7833,7 +7833,7 @@ static void test_load_guest_bndcfgs(void)
u64 bndcfgs;
if (!(ctrl_enter_rev.clr & ENT_LOAD_BNDCFGS)) {
- printf("\"Load-IA32-BNDCFGS\" entry control not supported\n");
+ report_skip("%s :\"Load-IA32-BNDCFGS\" entry control not supported", __func__);
return;
}
@@ -8134,7 +8134,7 @@ static void unsetup_unrestricted_guest(void)
static void vmentry_unrestricted_guest_test(void)
{
if (enable_unrestricted_guest(true)) {
- report_skip("Unrestricted guest not supported");
+ report_skip("%s: \"Unrestricted guest\" exec control not supported", __func__);
return;
}
@@ -8298,11 +8298,11 @@ static void vmx_cr_load_test(void)
orig_cr3 = read_cr3();
if (!this_cpu_has(X86_FEATURE_PCID)) {
- report_skip("PCID not detected");
+ report_skip("%s :PCID not detected", __func__);
return;
}
if (!this_cpu_has(X86_FEATURE_MCE)) {
- report_skip("MCE not detected");
+ report_skip("%s :MCE not detected", __func__);
return;
}
@@ -8407,7 +8407,7 @@ static void vmx_cr4_osxsave_test_guest(void)
static void vmx_cr4_osxsave_test(void)
{
if (!this_cpu_has(X86_FEATURE_XSAVE)) {
- report_skip("XSAVE not detected");
+ report_skip("%s :XSAVE not detected", __func__);
return;
}
@@ -8592,12 +8592,12 @@ static void vmx_nmi_window_test(void)
void *db_fault_addr = get_idt_addr(&boot_idt[DB_VECTOR]);
if (!(ctrl_pin_rev.clr & PIN_VIRT_NMI)) {
- report_skip("CPU does not support the \"Virtual NMIs\" VM-execution control.");
+ report_skip("%s :\"Virtual NMIs\" exec control not supported", __func__);
return;
}
if (!(ctrl_cpu_rev[0].clr & CPU_NMI_WINDOW)) {
- report_skip("CPU does not support the \"NMI-window exiting\" VM-execution control.");
+ report_skip("%s :\"NMI-window exiting\" exec control not supported", __func__);
return;
}
@@ -8728,7 +8728,7 @@ static void vmx_intr_window_test(void)
void *db_fault_addr = get_idt_addr(&boot_idt[DB_VECTOR]);
if (!(ctrl_cpu_rev[0].clr & CPU_INTR_WINDOW)) {
- report_skip("CPU does not support the \"interrupt-window exiting\" VM-execution control.");
+ report_skip("%s :\"Interrupt-window exiting\" exec control not supported", __func__);
return;
}
@@ -8880,7 +8880,7 @@ static void vmx_store_tsc_test(void)
u64 low, high;
if (!(ctrl_cpu_rev[0].clr & CPU_USE_TSC_OFFSET)) {
- report_skip("'Use TSC offsetting' not supported");
+ report_skip("%s :\"Use TSC offsetting\" exec control not supported", __func__);
return;
}
@@ -8967,7 +8967,7 @@ static void vmx_preemption_timer_zero_test(void)
u32 reason;
if (!(ctrl_pin_rev.clr & PIN_PREEMPT)) {
- report_skip("'Activate VMX-preemption timer' not supported");
+ report_skip("%s :\"Activate VMX-preemption timer\" pin control not supported", __func__);
return;
}
@@ -9082,7 +9082,7 @@ static void vmx_preemption_timer_tf_test(void)
int i;
if (!(ctrl_pin_rev.clr & PIN_PREEMPT)) {
- report_skip("'Activate VMX-preemption timer' not supported");
+ report_skip("%s :\"Activate VMX-preemption timer\" pin control not supported", __func__);
return;
}
@@ -9173,7 +9173,7 @@ static void vmx_preemption_timer_expiry_test(void)
u32 reason;
if (!(ctrl_pin_rev.clr & PIN_PREEMPT)) {
- report_skip("'Activate VMX-preemption timer' not supported");
+ report_skip("%s :\"Activate VMX-preemption timer\" pin control not supported", __func__);
return;
}
@@ -9481,7 +9481,7 @@ static void vmx_eoi_bitmap_ioapic_scan_test_guest(void)
static void vmx_eoi_bitmap_ioapic_scan_test(void)
{
if (!cpu_has_apicv() || (cpu_count() < 2)) {
- report_skip(__func__);
+ report_skip("%s :Not all required APICv bits supported or CPU count < 2", __func__);
return;
}
@@ -9526,7 +9526,7 @@ static void vmx_hlt_with_rvi_guest(void)
static void vmx_hlt_with_rvi_test(void)
{
if (!cpu_has_apicv()) {
- report_skip(__func__);
+ report_skip("%s :Not all required APICv bits supported", __func__);
return;
}
@@ -9584,13 +9584,13 @@ static void vmx_apic_passthrough_guest(void)
static void vmx_apic_passthrough(bool set_irq_line_from_thread)
{
if (set_irq_line_from_thread && (cpu_count() < 2)) {
- report_skip(__func__);
+ report_skip("%s :CPU count < 2", __func__);
return;
}
/* Test device is required for generating IRQs */
if (!test_device_enabled()) {
- report_skip(__func__);
+ report_skip("%s :No test device enabled", __func__);
return;
}
u64 cpu_ctrl_0 = CPU_SECONDARY;
@@ -9771,7 +9771,7 @@ static void vmx_init_signal_test(void)
struct vmcs *test_vmcs;
if (cpu_count() < 2) {
- report_skip(__func__);
+ report_skip("%s :CPU count < 2", __func__);
return;
}
@@ -9970,12 +9970,12 @@ static void sipi_test_ap_thread(void *data)
static void vmx_sipi_signal_test(void)
{
if (!(rdmsr(MSR_IA32_VMX_MISC) & MSR_IA32_VMX_MISC_ACTIVITY_WAIT_SIPI)) {
- printf("\tACTIVITY_WAIT_SIPI state is not supported.\n");
+ report_skip("\t\"ACTIVITY_WAIT_SIPI state\" not supported");
return;
}
if (cpu_count() < 2) {
- report_skip(__func__);
+ report_skip("%s :CPU count < 2", __func__);
return;
}
@@ -10271,18 +10271,18 @@ static void vmx_vmcs_shadow_test(void)
struct vmcs *shadow;
if (!(ctrl_cpu_rev[0].clr & CPU_SECONDARY)) {
- printf("\t'Activate secondary controls' not supported.\n");
+ report_skip("\t\"Activate secondary controls\" not supported");
return;
}
if (!(ctrl_cpu_rev[1].clr & CPU_SHADOW_VMCS)) {
- printf("\t'VMCS shadowing' not supported.\n");
+ report_skip("\t\"VMCS shadowing\" not supported");
return;
}
if (!(rdmsr(MSR_IA32_VMX_MISC) &
MSR_IA32_VMX_MISC_VMWRITE_SHADOW_RO_FIELDS)) {
- printf("\tVMWRITE can't modify VM-exit information fields.\n");
+ report_skip("\tVMWRITE can't modify VM-exit information fields.");
return;
}
@@ -10509,7 +10509,7 @@ static void atomic_switch_msrs_test(int count)
* available with the "TSC flag" and used to populate the MSR lists.
*/
if (!(cpuid(1).d & (1 << 4))) {
- report_skip(__func__);
+ report_skip("%s :\"Time Stamp Counter\" not supported", __func__);
return;
}
report_skip() prints message with "SKIP:" prefix to explictly tell which test is skipped, use it to make test report clean. Opportunistically unify the message format for report_skip(). Signed-off-by: Yang Weijiang <weijiang.yang@intel.com> --- x86/vmx_tests.c | 88 ++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 44 deletions(-)