On 7/28/2026 2:40 AM, Amit Machhiwal wrote: > On 2026/07/20 07:24 PM, Pierrick Bouvier wrote: >> The existing compare function only make sure that we list cpus with PVR >> order. However, we never compare cpu names. >> As a result, while cpus are grouped per PVR, the order within a group is >> non deterministic. Depending on QOM type initialization order, we get >> different results for -cpu help. >> >> For instance, previous output could be: >> Available CPUs: >> 755_v1.0 PVR 00083100 >> 745_v1.0 PVR 00083100 >> 755_v1.1 PVR 00083101 >> 745_v1.1 PVR 00083101 >> >> While a sorted output should be: >> Available CPUs: >> 745_v1.0 PVR 00083100 >> 755_v1.0 PVR 00083100 >> 745_v1.1 PVR 00083101 >> 755_v1.1 PVR 00083101 >> >> Fix it by comparing cpu names to have a stable result. > > Verified the before/after output of `qemu-system-ppc64 -cpu help`. The > patch correctly stabilises ordering in all PVR-collision groups. > > No regressions: identical CPU set, ordering only. > > Reviewed-by: Amit Machhiwal <[email protected]> > Tested-by: Amit Machhiwal <[email protected]> > > Minor nit: subject line has a typo ("determnistic" should be > "deterministic"). > > Thanks, > Amit >
Thanks Amit. Do you need a v2 with a change, or feel like fixing the typo when pulling this patch? Regards, Pierrick >> This allows us to record and compare various command line results across >> versions to make sure we didn't break anything while working on >> single-binary. >> >> Signed-off-by: Pierrick Bouvier <[email protected]> >> --- >> target/ppc/cpu_init.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/target/ppc/cpu_init.c b/target/ppc/cpu_init.c >> index f404c7e549d..3443dbeeb01 100644 >> --- a/target/ppc/cpu_init.c >> +++ b/target/ppc/cpu_init.c >> @@ -7130,7 +7130,7 @@ static gint ppc_cpu_list_compare(gconstpointer a, >> gconstpointer b, gpointer d) >> } else if (pcc_a->pvr > pcc_b->pvr) { >> return 1; >> } else { >> - return 0; >> + return strcmp(name_a, name_b); >> } >> } >> } >> -- >> 2.43.0 >> >>
