xref: /kvm-unit-tests/common/selftest-migration.c (revision 956004acda727b12b14ef0b5283984754ee7616d)
12990abeaSNicholas Piggin // SPDX-License-Identifier: GPL-2.0-only
22990abeaSNicholas Piggin /*
32990abeaSNicholas Piggin  * Machine independent migration tests
42990abeaSNicholas Piggin  *
52990abeaSNicholas Piggin  * This is just a very simple test that is intended to stress the migration
62990abeaSNicholas Piggin  * support in the test harness. This could be expanded to test more guest
72990abeaSNicholas Piggin  * library code, but architecture-specific tests should be used to test
82990abeaSNicholas Piggin  * migration of tricky machine state.
92990abeaSNicholas Piggin  */
102990abeaSNicholas Piggin #include <libcflat.h>
112990abeaSNicholas Piggin #include <migrate.h>
12*956004acSNicholas Piggin #include <asm/time.h>
132990abeaSNicholas Piggin 
14*956004acSNicholas Piggin #define NR_MIGRATIONS 15
152990abeaSNicholas Piggin 
162990abeaSNicholas Piggin int main(int argc, char **argv)
172990abeaSNicholas Piggin {
18*956004acSNicholas Piggin 	report_prefix_push("migration harness");
192990abeaSNicholas Piggin 
20fa8914bcSNicholas Piggin 	if (argc > 1 && !strcmp(argv[1], "skip")) {
21fa8914bcSNicholas Piggin 		migrate_skip();
22fa8914bcSNicholas Piggin 		report(true, "migration skipping");
23fa8914bcSNicholas Piggin 	} else {
24fa8914bcSNicholas Piggin 		int i;
25fa8914bcSNicholas Piggin 
262990abeaSNicholas Piggin 		for (i = 0; i < NR_MIGRATIONS; i++)
272990abeaSNicholas Piggin 			migrate_quiet();
28*956004acSNicholas Piggin 		report(true, "cooperative migration");
29*956004acSNicholas Piggin 
30*956004acSNicholas Piggin 		migrate_begin_continuous();
31*956004acSNicholas Piggin 		mdelay(2000);
32*956004acSNicholas Piggin 		migrate_end_continuous();
33*956004acSNicholas Piggin 		mdelay(1000);
34*956004acSNicholas Piggin 		migrate_begin_continuous();
35*956004acSNicholas Piggin 		mdelay(2000);
36*956004acSNicholas Piggin 		migrate_end_continuous();
37*956004acSNicholas Piggin 		report(true, "continuous migration");
38fa8914bcSNicholas Piggin 	}
392990abeaSNicholas Piggin 
402990abeaSNicholas Piggin 	report_prefix_pop();
412990abeaSNicholas Piggin 
422990abeaSNicholas Piggin 	return report_summary();
432990abeaSNicholas Piggin }
44