diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx index d9df238a5f..4ab7fcee98 100644 --- a/hmp-commands-info.hx +++ b/hmp-commands-info.hx @@ -115,9 +115,10 @@ ETEXI #if defined(TARGET_I386) { .name = "lapic", - .args_type = "", - .params = "", - .help = "show local apic state", + .args_type = "apic-id:i?", + .params = "[apic-id]", + .help = "show local apic state (apic-id: local apic to read, default is which of current CPU)", + .cmd = hmp_info_local_apic, }, #endif diff --git a/target/i386/monitor.c b/target/i386/monitor.c index 77ead60437..fe7d57b6aa 100644 --- a/target/i386/monitor.c +++ b/target/i386/monitor.c @@ -632,7 +632,15 @@ const MonitorDef *target_monitor_defs(void) void hmp_info_local_apic(Monitor *mon, const QDict *qdict) { - CPUState *cs = mon_get_cpu(); + CPUState *cs; + + if (qdict_haskey(qdict, "apic-id")) { + int id = qdict_get_try_int(qdict, "apic-id", 0); + cs = cpu_by_arch_id(id); + } else { + cs = mon_get_cpu(); + } + if (!cs) { monitor_printf(mon, "No CPU available\n");