Unify 'hyperv_synic' test with other Hyper-V tests by using the: if (required-features-missing) { report_skip(); goto done; } ... done: return report_summary(); pattern. Signed-off-by: Vitaly Kuznetsov <vkuznets@xxxxxxxxxx> --- x86/hyperv_synic.c | 61 +++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/x86/hyperv_synic.c b/x86/hyperv_synic.c index 00655db10131..761df8ac43c0 100644 --- a/x86/hyperv_synic.c +++ b/x86/hyperv_synic.c @@ -141,45 +141,46 @@ static void synic_test_cleanup(void *ctx) int main(int ac, char **av) { + int ncpus, i; + bool ok; - if (hv_synic_supported()) { - int ncpus, i; - bool ok; - - setup_vm(); - enable_apic(); + if (!hv_synic_supported()) { + report_skip("Hyper-V SynIC is not supported"); + goto done; + } - ncpus = cpu_count(); - if (ncpus > MAX_CPUS) - report_abort("number cpus exceeds %d", MAX_CPUS); - printf("ncpus = %d\n", ncpus); + setup_vm(); + enable_apic(); - synic_prepare_sint_vecs(); + ncpus = cpu_count(); + if (ncpus > MAX_CPUS) + report_abort("number cpus exceeds %d", MAX_CPUS); + printf("ncpus = %d\n", ncpus); - printf("prepare\n"); - on_cpus(synic_test_prepare, (void *)read_cr3()); + synic_prepare_sint_vecs(); - for (i = 0; i < ncpus; i++) { - printf("test %d -> %d\n", i, ncpus - 1 - i); - on_cpu_async(i, synic_test, (void *)(ulong)(ncpus - 1 - i)); - } - while (cpus_active() > 1) - pause(); + printf("prepare\n"); + on_cpus(synic_test_prepare, (void *)read_cr3()); - printf("cleanup\n"); - on_cpus(synic_test_cleanup, NULL); + for (i = 0; i < ncpus; i++) { + printf("test %d -> %d\n", i, ncpus - 1 - i); + on_cpu_async(i, synic_test, (void *)(ulong)(ncpus - 1 - i)); + } + while (cpus_active() > 1) + pause(); - ok = true; - for (i = 0; i < ncpus; ++i) { - printf("isr_enter_count[%d] = %d\n", - i, atomic_read(&isr_enter_count[i])); - ok &= atomic_read(&isr_enter_count[i]) == 16; - } + printf("cleanup\n"); + on_cpus(synic_test_cleanup, NULL); - report(ok, "Hyper-V SynIC test"); - } else { - printf("Hyper-V SynIC is not supported"); + ok = true; + for (i = 0; i < ncpus; ++i) { + printf("isr_enter_count[%d] = %d\n", + i, atomic_read(&isr_enter_count[i])); + ok &= atomic_read(&isr_enter_count[i]) == 16; } + report(ok, "Hyper-V SynIC test"); + +done: return report_summary(); } -- 2.44.0