mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-09 10:34:58 -06:00
* More Meson test conversions and configure cleanups
* Generalize XSAVE area offset so that it matches AMD processors on KVM * Improvements for -display and deprecation of -no-quit * Enable SMP configuration as a compound machine property ("-M smp.cpus=...") * Haiku compilation fix * Add icon on Darwin -----BEGIN PGP SIGNATURE----- iQFIBAABCAAyFiEE8TM4V0tmI4mGbHaCv/vSX3jHroMFAmDkB7sUHHBib256aW5p QHJlZGhhdC5jb20ACgkQv/vSX3jHroOISgf+Nn5BiXQRY52DK/2PoG330F6UeOcp kWFAE4k4qEktDiCcd5xKekiUd7h+TiRS8bLeycmRtiSXvbzXioE2eCelui0SZDQl zpIb8wV2WaxrD/zUYPV7r5n+VFAaTCm9lUEzzqnwaThBG/Oat45gnossZEIWv85g KtQMsSh3pc+KpTjWbIA8V01ohzwFE2q7cA9CB/pDgR3h8M5p4K0ZdaPoAO2auhvu 2sbu9oBl1JwqpIhPme9JR6Je5fMCILBRlXTvPgJ/0iaGdxcNmZxoflO/TZVFB1pl tUiCu0GB0yEasMO1E6+cP7ezhm15Lz3vKqjr/boV5Y9osfU36k9xkLTvAg== =itIm -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/bonzini-gitlab/tags/for-upstream' into staging * More Meson test conversions and configure cleanups * Generalize XSAVE area offset so that it matches AMD processors on KVM * Improvements for -display and deprecation of -no-quit * Enable SMP configuration as a compound machine property ("-M smp.cpus=...") * Haiku compilation fix * Add icon on Darwin # gpg: Signature made Tue 06 Jul 2021 08:35:23 BST # gpg: using RSA key F13338574B662389866C7682BFFBD25F78C7AE83 # gpg: issuer "pbonzini@redhat.com" # gpg: Good signature from "Paolo Bonzini <bonzini@gnu.org>" [full] # gpg: aka "Paolo Bonzini <pbonzini@redhat.com>" [full] # Primary key fingerprint: 46F5 9FBD 57D6 12E7 BFD4 E2F7 7E15 100C CD36 69B1 # Subkey fingerprint: F133 3857 4B66 2389 866C 7682 BFFB D25F 78C7 AE83 * remotes/bonzini-gitlab/tags/for-upstream: (40 commits) config-host.mak: remove unused compiler-related lines Set icon for QEMU binary on Mac OS qemu-option: remove now-dead code machine: add smp compound property vl: switch -M parsing to keyval keyval: introduce keyval_parse_into keyval: introduce keyval_merge qom: export more functions for use with non-UserCreatable objects configure: convert compiler tests to meson, part 6 configure: convert compiler tests to meson, part 5 configure: convert compiler tests to meson, part 4 configure: convert compiler tests to meson, part 3 configure: convert compiler tests to meson, part 2 configure: convert compiler tests to meson, part 1 configure: convert HAVE_BROKEN_SIZE_MAX to meson configure, meson: move CONFIG_IVSHMEM to meson meson: store dependency('threads') in a variable meson: sort existing compiler tests configure, meson: convert libxml2 detection to meson configure, meson: convert liburing detection to meson ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
9aef095419
34 changed files with 1179 additions and 1588 deletions
|
@ -25,7 +25,7 @@ static void test_mon_explicit(const void *data)
|
|||
g_autofree char *s = NULL;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-smp 8 -numa node,nodeid=0,memdev=ram,cpus=0-3 "
|
||||
cli = make_cli(data, "-machine smp.cpus=8 -numa node,nodeid=0,memdev=ram,cpus=0-3 "
|
||||
"-numa node,nodeid=1,cpus=4-7");
|
||||
qts = qtest_init(cli);
|
||||
|
||||
|
@ -42,7 +42,7 @@ static void test_def_cpu_split(const void *data)
|
|||
g_autofree char *s = NULL;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-smp 8 -numa node,memdev=ram -numa node");
|
||||
cli = make_cli(data, "-machine smp.cpus=8 -numa node,memdev=ram -numa node");
|
||||
qts = qtest_init(cli);
|
||||
|
||||
s = qtest_hmp(qts, "info numa");
|
||||
|
@ -58,7 +58,7 @@ static void test_mon_partial(const void *data)
|
|||
g_autofree char *s = NULL;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-smp 8 "
|
||||
cli = make_cli(data, "-machine smp.cpus=8 "
|
||||
"-numa node,nodeid=0,memdev=ram,cpus=0-1 "
|
||||
"-numa node,nodeid=1,cpus=4-5 ");
|
||||
qts = qtest_init(cli);
|
||||
|
@ -86,7 +86,7 @@ static void test_query_cpus(const void *data)
|
|||
QTestState *qts;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-smp 8 -numa node,memdev=ram,cpus=0-3 "
|
||||
cli = make_cli(data, "-machine smp.cpus=8 -numa node,memdev=ram,cpus=0-3 "
|
||||
"-numa node,cpus=4-7");
|
||||
qts = qtest_init(cli);
|
||||
cpus = get_cpus(qts, &resp);
|
||||
|
@ -124,7 +124,7 @@ static void pc_numa_cpu(const void *data)
|
|||
QTestState *qts;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-cpu pentium -smp 8,sockets=2,cores=2,threads=2 "
|
||||
cli = make_cli(data, "-cpu pentium -machine smp.cpus=8,smp.sockets=2,smp.cores=2,smp.threads=2 "
|
||||
"-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 "
|
||||
"-numa cpu,node-id=1,socket-id=0 "
|
||||
"-numa cpu,node-id=0,socket-id=1,core-id=0 "
|
||||
|
@ -177,7 +177,7 @@ static void spapr_numa_cpu(const void *data)
|
|||
QTestState *qts;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-smp 4,cores=4 "
|
||||
cli = make_cli(data, "-machine smp.cpus=4,smp.cores=4 "
|
||||
"-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 "
|
||||
"-numa cpu,node-id=0,core-id=0 "
|
||||
"-numa cpu,node-id=0,core-id=1 "
|
||||
|
@ -222,7 +222,7 @@ static void aarch64_numa_cpu(const void *data)
|
|||
QTestState *qts;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-smp 2 "
|
||||
cli = make_cli(data, "-machine smp.cpus=2 "
|
||||
"-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 "
|
||||
"-numa cpu,node-id=1,thread-id=0 "
|
||||
"-numa cpu,node-id=0,thread-id=1");
|
||||
|
@ -265,7 +265,7 @@ static void pc_dynamic_cpu_cfg(const void *data)
|
|||
QTestState *qs;
|
||||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-nodefaults --preconfig -smp 2");
|
||||
cli = make_cli(data, "-nodefaults --preconfig -machine smp.cpus=2");
|
||||
qs = qtest_init(cli);
|
||||
|
||||
/* create 2 numa nodes */
|
||||
|
@ -324,7 +324,7 @@ static void pc_hmat_build_cfg(const void *data)
|
|||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-nodefaults --preconfig -machine hmat=on "
|
||||
"-smp 2,sockets=2 "
|
||||
"-machine smp.cpus=2,smp.sockets=2 "
|
||||
"-m 128M,slots=2,maxmem=1G "
|
||||
"-object memory-backend-ram,size=64M,id=m0 "
|
||||
"-object memory-backend-ram,size=64M,id=m1 "
|
||||
|
@ -453,7 +453,7 @@ static void pc_hmat_off_cfg(const void *data)
|
|||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-nodefaults --preconfig "
|
||||
"-smp 2,sockets=2 "
|
||||
"-machine smp.cpus=2,smp.sockets=2 "
|
||||
"-m 128M,slots=2,maxmem=1G "
|
||||
"-object memory-backend-ram,size=64M,id=m0,prealloc=y "
|
||||
"-object memory-backend-ram,size=64M,id=m1 "
|
||||
|
@ -492,7 +492,7 @@ static void pc_hmat_erange_cfg(const void *data)
|
|||
g_autofree char *cli = NULL;
|
||||
|
||||
cli = make_cli(data, "-nodefaults --preconfig -machine hmat=on "
|
||||
"-smp 2,sockets=2 "
|
||||
"-machine smp.cpus=2,smp.sockets=2 "
|
||||
"-m 128M,slots=2,maxmem=1G "
|
||||
"-object memory-backend-ram,size=64M,id=m0 "
|
||||
"-object memory-backend-ram,size=64M,id=m1 "
|
||||
|
|
|
@ -747,6 +747,61 @@ static void test_keyval_visit_any(void)
|
|||
visit_free(v);
|
||||
}
|
||||
|
||||
static void test_keyval_merge_dict(void)
|
||||
{
|
||||
QDict *first = keyval_parse("opt1=abc,opt2.sub1=def,opt2.sub2=ghi,opt3=xyz",
|
||||
NULL, NULL, &error_abort);
|
||||
QDict *second = keyval_parse("opt1=ABC,opt2.sub2=GHI,opt2.sub3=JKL",
|
||||
NULL, NULL, &error_abort);
|
||||
QDict *combined = keyval_parse("opt1=ABC,opt2.sub1=def,opt2.sub2=GHI,opt2.sub3=JKL,opt3=xyz",
|
||||
NULL, NULL, &error_abort);
|
||||
Error *err = NULL;
|
||||
|
||||
keyval_merge(first, second, &err);
|
||||
g_assert(!err);
|
||||
g_assert(qobject_is_equal(QOBJECT(combined), QOBJECT(first)));
|
||||
qobject_unref(first);
|
||||
qobject_unref(second);
|
||||
qobject_unref(combined);
|
||||
}
|
||||
|
||||
static void test_keyval_merge_list(void)
|
||||
{
|
||||
QDict *first = keyval_parse("opt1.0=abc,opt2.0=xyz",
|
||||
NULL, NULL, &error_abort);
|
||||
QDict *second = keyval_parse("opt1.0=def",
|
||||
NULL, NULL, &error_abort);
|
||||
QDict *combined = keyval_parse("opt1.0=abc,opt1.1=def,opt2.0=xyz",
|
||||
NULL, NULL, &error_abort);
|
||||
Error *err = NULL;
|
||||
|
||||
keyval_merge(first, second, &err);
|
||||
g_assert(!err);
|
||||
g_assert(qobject_is_equal(QOBJECT(combined), QOBJECT(first)));
|
||||
qobject_unref(first);
|
||||
qobject_unref(second);
|
||||
qobject_unref(combined);
|
||||
}
|
||||
|
||||
static void test_keyval_merge_conflict(void)
|
||||
{
|
||||
QDict *first = keyval_parse("opt2=ABC",
|
||||
NULL, NULL, &error_abort);
|
||||
QDict *second = keyval_parse("opt2.sub1=def,opt2.sub2=ghi",
|
||||
NULL, NULL, &error_abort);
|
||||
QDict *third = qdict_clone_shallow(first);
|
||||
Error *err = NULL;
|
||||
|
||||
keyval_merge(first, second, &err);
|
||||
error_free_or_abort(&err);
|
||||
keyval_merge(second, third, &err);
|
||||
error_free_or_abort(&err);
|
||||
|
||||
qobject_unref(first);
|
||||
qobject_unref(second);
|
||||
qobject_unref(third);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
@ -760,6 +815,9 @@ int main(int argc, char *argv[])
|
|||
g_test_add_func("/keyval/visit/optional", test_keyval_visit_optional);
|
||||
g_test_add_func("/keyval/visit/alternate", test_keyval_visit_alternate);
|
||||
g_test_add_func("/keyval/visit/any", test_keyval_visit_any);
|
||||
g_test_add_func("/keyval/merge/dict", test_keyval_merge_dict);
|
||||
g_test_add_func("/keyval/merge/list", test_keyval_merge_list);
|
||||
g_test_add_func("/keyval/merge/conflict", test_keyval_merge_conflict);
|
||||
g_test_run();
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -410,40 +410,6 @@ static void test_qemu_opts_reset(void)
|
|||
g_assert(opts == NULL);
|
||||
}
|
||||
|
||||
static void test_qemu_opts_set(void)
|
||||
{
|
||||
QemuOptsList *list;
|
||||
QemuOpts *opts;
|
||||
const char *opt;
|
||||
|
||||
list = qemu_find_opts("opts_list_04");
|
||||
g_assert(list != NULL);
|
||||
g_assert(QTAILQ_EMPTY(&list->head));
|
||||
g_assert_cmpstr(list->name, ==, "opts_list_04");
|
||||
|
||||
/* should not find anything at this point */
|
||||
opts = qemu_opts_find(list, NULL);
|
||||
g_assert(opts == NULL);
|
||||
|
||||
/* implicitly create opts and set str3 value */
|
||||
qemu_opts_set(list, "str3", "value", &error_abort);
|
||||
g_assert(!QTAILQ_EMPTY(&list->head));
|
||||
|
||||
/* get the just created opts */
|
||||
opts = qemu_opts_find(list, NULL);
|
||||
g_assert(opts != NULL);
|
||||
|
||||
/* check the str3 value */
|
||||
opt = qemu_opt_get(opts, "str3");
|
||||
g_assert_cmpstr(opt, ==, "value");
|
||||
|
||||
qemu_opts_del(opts);
|
||||
|
||||
/* should not find anything at this point */
|
||||
opts = qemu_opts_find(list, NULL);
|
||||
g_assert(opts == NULL);
|
||||
}
|
||||
|
||||
static int opts_count_iter(void *opaque, const char *name, const char *value,
|
||||
Error **errp)
|
||||
{
|
||||
|
@ -1041,7 +1007,6 @@ int main(int argc, char *argv[])
|
|||
g_test_add_func("/qemu-opts/opt_get_size", test_qemu_opt_get_size);
|
||||
g_test_add_func("/qemu-opts/opt_unset", test_qemu_opt_unset);
|
||||
g_test_add_func("/qemu-opts/opts_reset", test_qemu_opts_reset);
|
||||
g_test_add_func("/qemu-opts/opts_set", test_qemu_opts_set);
|
||||
g_test_add_func("/qemu-opts/opts_parse/general", test_opts_parse);
|
||||
g_test_add_func("/qemu-opts/opts_parse/bool", test_opts_parse_bool);
|
||||
g_test_add_func("/qemu-opts/opts_parse/number", test_opts_parse_number);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue