On 2026/07/28 10:57 AM, Pierrick Bouvier wrote: > 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?
I think its a minor one and a v2 is not required just for this. @Harsh, could you please fix this while pulling it? Thanks, Amit > > 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 > >> > >> > >
