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


Reply via email to