Use cc->get_arch_id as the cpu index to avoid the cpu index duplicated issue in the QMP/HMP command output.
Signed-off-by: Gu Zheng <guz.f...@cn.fujitsu.com> Signed-off-by: Zhu Guihua <zhugh.f...@cn.fujitsu.com> --- cpus.c | 4 +++- monitor.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cpus.c b/cpus.c index 0c33458..849d1bf 100644 --- a/cpus.c +++ b/cpus.c @@ -1411,6 +1411,7 @@ CpuInfoList *qmp_query_cpus(Error **errp) CPU_FOREACH(cpu) { CpuInfoList *info; + CPUClass *cc; #if defined(TARGET_I386) X86CPU *x86_cpu = X86_CPU(cpu); CPUX86State *env = &x86_cpu->env; @@ -1428,11 +1429,12 @@ CpuInfoList *qmp_query_cpus(Error **errp) CPUTriCoreState *env = &tricore_cpu->env; #endif + cc = CPU_GET_CLASS(cpu); cpu_synchronize_state(cpu); info = g_malloc0(sizeof(*info)); info->value = g_malloc0(sizeof(*info->value)); - info->value->CPU = cpu->cpu_index; + info->value->CPU = cc->get_arch_id(cpu); info->value->current = (cpu == first_cpu); info->value->halted = cpu->halted; info->value->thread_id = cpu->thread_id; diff --git a/monitor.c b/monitor.c index 1fc201a..fdd51fa 100644 --- a/monitor.c +++ b/monitor.c @@ -1024,7 +1024,9 @@ static CPUArchState *mon_get_cpu(void) int monitor_get_cpu_index(void) { CPUState *cpu = ENV_GET_CPU(mon_get_cpu()); - return cpu->cpu_index; + CPUClass *cc = CPU_GET_CLASS(cpu); + + return cc->get_arch_id(cpu); } static void do_info_registers(Monitor *mon, const QDict *qdict) -- 1.7.7