aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYi Wang <wang.yi59@zte.com.cn>2017-07-26 02:18:37 -0400
committerEduardo Habkost <ehabkost@redhat.com>2017-09-01 11:54:24 -0300
commit1bef228474482e70b2750832e8d67eacf3135c74 (patch)
treea221070cbcad896f81d966c1a62f55eb8c9ddc66
parent5ce46cb34eecec0bc94a4b1394763f9a1bbe20c3 (diff)
hmp: allow apic-id for "info lapic"
Add [apic-id] support for hmp command "info lapic", which is useful when debugging ipi and so on. Current behavior is not changed when the parameter isn't specified. Signed-off-by: Yi Wang <wang.yi59@zte.com.cn> Signed-off-by: Yun Liu <liu.yunh@zte.com.cn> Message-Id: <1501049917-4701-3-git-send-email-wang.yi59@zte.com.cn> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
-rw-r--r--hmp-commands-info.hx7
-rw-r--r--target/i386/monitor.c10
2 files changed, 13 insertions, 4 deletions
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");