xref: /kvm-unit-tests/common/selftest-migration.c (revision fe151b46d2870e67be32b1a388afa84d7424c1a4)
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>
12956004acSNicholas Piggin #include <asm/time.h>
132990abeaSNicholas Piggin 
14*fe151b46SNicholas Piggin #define NR_MIGRATIONS 5
152990abeaSNicholas Piggin 
main(int argc,char ** argv)162990abeaSNicholas Piggin int main(int argc, char **argv)
172990abeaSNicholas Piggin {
18956004acSNicholas 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();
28956004acSNicholas Piggin 		report(true, "cooperative migration");
29956004acSNicholas Piggin 
30956004acSNicholas Piggin 		migrate_begin_continuous();
31956004acSNicholas Piggin 		mdelay(1000);
32*fe151b46SNicholas Piggin 		migrate_end_continuous();
33*fe151b46SNicholas Piggin 		mdelay(500);
34956004acSNicholas Piggin 		migrate_begin_continuous();
35*fe151b46SNicholas Piggin 		mdelay(1000);
36956004acSNicholas Piggin 		migrate_end_continuous();
37956004acSNicholas Piggin 		report(true, "continuous migration");
38fa8914bcSNicholas Piggin 	}
392990abeaSNicholas Piggin 
402990abeaSNicholas Piggin 	report_prefix_pop();
412990abeaSNicholas Piggin 
422990abeaSNicholas Piggin 	return report_summary();
432990abeaSNicholas Piggin }
44