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
> >>
> >>
> 
> 

Reply via email to