[Qemu-devel] [PATCH V2] monitor: Add -a (all) option to info registers

Suraj Jitindar Singh posted 1 patch 8 years, 5 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20170608054116.17203-1-sjitindarsingh@gmail.com
Test FreeBSD passed
Test checkpatch passed
Test docker passed
Test s390x passed
hmp-commands-info.hx |  6 +++---
monitor.c            | 21 ++++++++++++++++-----
2 files changed, 19 insertions(+), 8 deletions(-)
[Qemu-devel] [PATCH V2] monitor: Add -a (all) option to info registers
Posted by Suraj Jitindar Singh 8 years, 5 months ago
The info registers command in the qemu monitor is used to dump register
values.

Currently this command uses the monitor cpu (which can be set by the
user) as the cpu for whose registers will be dumped. Sometimes it is
useful to see the registers for all cpus and currently this requires
setting the monitor cpu and the re-running the command for each cpu
in the system. I would be nice if there was an easier way to do this.

Add the "-a" option to the info registers command to dump the register
values for all cpus.

Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

---

Change Log:

V1 -> V2:
 - Add CPU number to beginning of register dump
---
 hmp-commands-info.hx |  6 +++---
 monitor.c            | 21 ++++++++++++++++-----
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
index ae16901..ba98e58 100644
--- a/hmp-commands-info.hx
+++ b/hmp-commands-info.hx
@@ -100,9 +100,9 @@ ETEXI
 
     {
         .name       = "registers",
-        .args_type  = "",
-        .params     = "",
-        .help       = "show the cpu registers",
+        .args_type  = "cpustate_all:-a",
+        .params     = "[-a]",
+        .help       = "show the cpu registers (-a: all - show register info for all cpus)",
         .cmd        = hmp_info_registers,
     },
 
diff --git a/monitor.c b/monitor.c
index baa73c9..1629ad1 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1078,13 +1078,24 @@ int monitor_get_cpu_index(void)
 
 static void hmp_info_registers(Monitor *mon, const QDict *qdict)
 {
-    CPUState *cs = mon_get_cpu();
+    bool all_cpus = qdict_get_try_bool(qdict, "cpustate_all", false);
+    CPUState *cs;
 
-    if (!cs) {
-        monitor_printf(mon, "No CPU available\n");
-        return;
+    if (all_cpus) {
+        CPU_FOREACH(cs) {
+            monitor_printf(mon, "\nCPU#%d\n", cs->cpu_index);
+            cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
+        }
+    } else {
+        cs = mon_get_cpu();
+
+        if (!cs) {
+            monitor_printf(mon, "No CPU available\n");
+            return;
+        }
+
+        cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
     }
-    cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
 }
 
 static void hmp_info_jit(Monitor *mon, const QDict *qdict)
-- 
2.9.4


Re: [Qemu-devel] [PATCH V2] monitor: Add -a (all) option to info registers
Posted by Dr. David Alan Gilbert 8 years, 4 months ago
* Suraj Jitindar Singh (sjitindarsingh@gmail.com) wrote:
> The info registers command in the qemu monitor is used to dump register
> values.
> 
> Currently this command uses the monitor cpu (which can be set by the
> user) as the cpu for whose registers will be dumped. Sometimes it is
> useful to see the registers for all cpus and currently this requires
> setting the monitor cpu and the re-running the command for each cpu
> in the system. I would be nice if there was an easier way to do this.
> 
> Add the "-a" option to the info registers command to dump the register
> values for all cpus.
> 
> Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>

> 
> ---
> 
> Change Log:
> 
> V1 -> V2:
>  - Add CPU number to beginning of register dump
> ---
>  hmp-commands-info.hx |  6 +++---
>  monitor.c            | 21 ++++++++++++++++-----
>  2 files changed, 19 insertions(+), 8 deletions(-)
> 
> diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
> index ae16901..ba98e58 100644
> --- a/hmp-commands-info.hx
> +++ b/hmp-commands-info.hx
> @@ -100,9 +100,9 @@ ETEXI
>  
>      {
>          .name       = "registers",
> -        .args_type  = "",
> -        .params     = "",
> -        .help       = "show the cpu registers",
> +        .args_type  = "cpustate_all:-a",
> +        .params     = "[-a]",
> +        .help       = "show the cpu registers (-a: all - show register info for all cpus)",
>          .cmd        = hmp_info_registers,
>      },
>  
> diff --git a/monitor.c b/monitor.c
> index baa73c9..1629ad1 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -1078,13 +1078,24 @@ int monitor_get_cpu_index(void)
>  
>  static void hmp_info_registers(Monitor *mon, const QDict *qdict)
>  {
> -    CPUState *cs = mon_get_cpu();
> +    bool all_cpus = qdict_get_try_bool(qdict, "cpustate_all", false);
> +    CPUState *cs;
>  
> -    if (!cs) {
> -        monitor_printf(mon, "No CPU available\n");
> -        return;
> +    if (all_cpus) {
> +        CPU_FOREACH(cs) {
> +            monitor_printf(mon, "\nCPU#%d\n", cs->cpu_index);
> +            cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
> +        }
> +    } else {
> +        cs = mon_get_cpu();
> +
> +        if (!cs) {
> +            monitor_printf(mon, "No CPU available\n");
> +            return;
> +        }
> +
> +        cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
>      }
> -    cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
>  }
>  
>  static void hmp_info_jit(Monitor *mon, const QDict *qdict)
> -- 
> 2.9.4
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK

Re: [Qemu-devel] [PATCH V2] monitor: Add -a (all) option to info registers
Posted by Dr. David Alan Gilbert 8 years, 4 months ago
* Suraj Jitindar Singh (sjitindarsingh@gmail.com) wrote:
> The info registers command in the qemu monitor is used to dump register
> values.
> 
> Currently this command uses the monitor cpu (which can be set by the
> user) as the cpu for whose registers will be dumped. Sometimes it is
> useful to see the registers for all cpus and currently this requires
> setting the monitor cpu and the re-running the command for each cpu
> in the system. I would be nice if there was an easier way to do this.
> 
> Add the "-a" option to the info registers command to dump the register
> values for all cpus.
> 
> Signed-off-by: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

Queued.

> ---
> 
> Change Log:
> 
> V1 -> V2:
>  - Add CPU number to beginning of register dump
> ---
>  hmp-commands-info.hx |  6 +++---
>  monitor.c            | 21 ++++++++++++++++-----
>  2 files changed, 19 insertions(+), 8 deletions(-)
> 
> diff --git a/hmp-commands-info.hx b/hmp-commands-info.hx
> index ae16901..ba98e58 100644
> --- a/hmp-commands-info.hx
> +++ b/hmp-commands-info.hx
> @@ -100,9 +100,9 @@ ETEXI
>  
>      {
>          .name       = "registers",
> -        .args_type  = "",
> -        .params     = "",
> -        .help       = "show the cpu registers",
> +        .args_type  = "cpustate_all:-a",
> +        .params     = "[-a]",
> +        .help       = "show the cpu registers (-a: all - show register info for all cpus)",
>          .cmd        = hmp_info_registers,
>      },
>  
> diff --git a/monitor.c b/monitor.c
> index baa73c9..1629ad1 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -1078,13 +1078,24 @@ int monitor_get_cpu_index(void)
>  
>  static void hmp_info_registers(Monitor *mon, const QDict *qdict)
>  {
> -    CPUState *cs = mon_get_cpu();
> +    bool all_cpus = qdict_get_try_bool(qdict, "cpustate_all", false);
> +    CPUState *cs;
>  
> -    if (!cs) {
> -        monitor_printf(mon, "No CPU available\n");
> -        return;
> +    if (all_cpus) {
> +        CPU_FOREACH(cs) {
> +            monitor_printf(mon, "\nCPU#%d\n", cs->cpu_index);
> +            cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
> +        }
> +    } else {
> +        cs = mon_get_cpu();
> +
> +        if (!cs) {
> +            monitor_printf(mon, "No CPU available\n");
> +            return;
> +        }
> +
> +        cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
>      }
> -    cpu_dump_state(cs, (FILE *)mon, monitor_fprintf, CPU_DUMP_FPU);
>  }
>  
>  static void hmp_info_jit(Monitor *mon, const QDict *qdict)
> -- 
> 2.9.4
> 
--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK