All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PULL 0/2] hmp queue
@ 2017-06-29 16:30 Dr. David Alan Gilbert (git)
  2017-06-29 16:30 ` [Qemu-devel] [PULL 1/2] monitor: Add -a (all) option to info registers Dr. David Alan Gilbert (git)
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2017-06-29 16:30 UTC (permalink / raw)
  To: qemu-devel

From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

The following changes since commit 454d7dc9bc13e46084e0612076e6952c40f4afeb:

  Merge remote-tracking branch 'remotes/gkurz/tags/for-upstream' into staging (2017-06-29 16:21:45 +0100)

are available in the git repository at:

  git://github.com/dagrh/qemu.git tags/pull-hmp-20170629

for you to fetch changes up to bd1d5ad9f9a1347d6f4338f294253617c565c89a:

  Add chardev-send-break monitor command (2017-06-29 17:14:11 +0100)

----------------------------------------------------------------
HMP pull 2017-06-29

----------------------------------------------------------------
Stefan Fritsch (1):
      Add chardev-send-break monitor command

Suraj Jitindar Singh (1):
      monitor: Add -a (all) option to info registers

 chardev/char.c       | 12 ++++++++++++
 hmp-commands-info.hx |  6 +++---
 hmp-commands.hx      | 16 ++++++++++++++++
 hmp.c                |  8 ++++++++
 hmp.h                |  1 +
 monitor.c            | 21 ++++++++++++++++-----
 qapi-schema.json     | 20 ++++++++++++++++++++
 tests/test-char.c    | 12 ++++++++++--
 tests/test-hmp.c     |  1 +
 9 files changed, 87 insertions(+), 10 deletions(-)

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PULL 1/2] monitor: Add -a (all) option to info registers
  2017-06-29 16:30 [Qemu-devel] [PULL 0/2] hmp queue Dr. David Alan Gilbert (git)
@ 2017-06-29 16:30 ` Dr. David Alan Gilbert (git)
  2017-06-29 16:30 ` [Qemu-devel] [PULL 2/2] Add chardev-send-break monitor command Dr. David Alan Gilbert (git)
  2017-06-30 10:58 ` [Qemu-devel] [PULL 0/2] hmp queue Peter Maydell
  2 siblings, 0 replies; 4+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2017-06-29 16:30 UTC (permalink / raw)
  To: qemu-devel

From: Suraj Jitindar Singh <sjitindarsingh@gmail.com>

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>

Message-Id: <20170608054116.17203-1-sjitindarsingh@gmail.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
---
 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 ae169011b1..ba98e581ab 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 3c369f4dd5..4031876411 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.13.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Qemu-devel] [PULL 2/2] Add chardev-send-break monitor command
  2017-06-29 16:30 [Qemu-devel] [PULL 0/2] hmp queue Dr. David Alan Gilbert (git)
  2017-06-29 16:30 ` [Qemu-devel] [PULL 1/2] monitor: Add -a (all) option to info registers Dr. David Alan Gilbert (git)
@ 2017-06-29 16:30 ` Dr. David Alan Gilbert (git)
  2017-06-30 10:58 ` [Qemu-devel] [PULL 0/2] hmp queue Peter Maydell
  2 siblings, 0 replies; 4+ messages in thread
From: Dr. David Alan Gilbert (git) @ 2017-06-29 16:30 UTC (permalink / raw)
  To: qemu-devel

From: Stefan Fritsch <sf@sfritsch.de>

Sending a break on a serial console can be useful for debugging the
guest. But not all chardev backends support sending breaks (only telnet
and mux do). The chardev-send-break command allows to send a break even
if using other backends.

Signed-off-by: Stefan Fritsch <sf@sfritsch.de>
Acked-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20170611074817.13621-1-sf@sfritsch.de>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
  Use 'send a break' in all 3 pieces of text as suggested by eblake
---
 chardev/char.c    | 12 ++++++++++++
 hmp-commands.hx   | 16 ++++++++++++++++
 hmp.c             |  8 ++++++++
 hmp.h             |  1 +
 qapi-schema.json  | 20 ++++++++++++++++++++
 tests/test-char.c | 12 ++++++++++--
 tests/test-hmp.c  |  1 +
 7 files changed, 68 insertions(+), 2 deletions(-)

diff --git a/chardev/char.c b/chardev/char.c
index bcfc065d16..2b679a2295 100644
--- a/chardev/char.c
+++ b/chardev/char.c
@@ -951,6 +951,18 @@ void qmp_chardev_remove(const char *id, Error **errp)
     object_unparent(OBJECT(chr));
 }
 
+void qmp_chardev_send_break(const char *id, Error **errp)
+{
+    Chardev *chr;
+
+    chr = qemu_chr_find(id);
+    if (chr == NULL) {
+        error_setg(errp, "Chardev '%s' not found", id);
+        return;
+    }
+    qemu_chr_be_event(chr, CHR_EVENT_BREAK);
+}
+
 void qemu_chr_cleanup(void)
 {
     object_unparent(get_chardevs_root());
diff --git a/hmp-commands.hx b/hmp-commands.hx
index e763606fe5..275ccdfbc7 100644
--- a/hmp-commands.hx
+++ b/hmp-commands.hx
@@ -1745,6 +1745,22 @@ Removes the chardev @var{id}.
 ETEXI
 
     {
+        .name       = "chardev-send-break",
+        .args_type  = "id:s",
+        .params     = "id",
+        .help       = "send a break on chardev",
+        .cmd        = hmp_chardev_send_break,
+        .command_completion = chardev_remove_completion,
+    },
+
+STEXI
+@item chardev-send-break id
+@findex chardev-send-break
+Send a break on the chardev @var{id}.
+
+ETEXI
+
+    {
         .name       = "qemu-io",
         .args_type  = "device:B,command:s",
         .params     = "[device] \"[command]\"",
diff --git a/hmp.c b/hmp.c
index 4c41cac625..dee40284c1 100644
--- a/hmp.c
+++ b/hmp.c
@@ -2236,6 +2236,14 @@ void hmp_chardev_remove(Monitor *mon, const QDict *qdict)
     hmp_handle_error(mon, &local_err);
 }
 
+void hmp_chardev_send_break(Monitor *mon, const QDict *qdict)
+{
+    Error *local_err = NULL;
+
+    qmp_chardev_send_break(qdict_get_str(qdict, "id"), &local_err);
+    hmp_handle_error(mon, &local_err);
+}
+
 void hmp_qemu_io(Monitor *mon, const QDict *qdict)
 {
     BlockBackend *blk;
diff --git a/hmp.h b/hmp.h
index d8b94ce9dc..214b2617e7 100644
--- a/hmp.h
+++ b/hmp.h
@@ -103,6 +103,7 @@ void hmp_nbd_server_add(Monitor *mon, const QDict *qdict);
 void hmp_nbd_server_stop(Monitor *mon, const QDict *qdict);
 void hmp_chardev_add(Monitor *mon, const QDict *qdict);
 void hmp_chardev_remove(Monitor *mon, const QDict *qdict);
+void hmp_chardev_send_break(Monitor *mon, const QDict *qdict);
 void hmp_qemu_io(Monitor *mon, const QDict *qdict);
 void hmp_cpu_add(Monitor *mon, const QDict *qdict);
 void hmp_object_add(Monitor *mon, const QDict *qdict);
diff --git a/qapi-schema.json b/qapi-schema.json
index 9e34cf71f3..37c4b95aad 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -5117,6 +5117,26 @@
 { 'command': 'chardev-remove', 'data': {'id': 'str'} }
 
 ##
+# @chardev-send-break:
+#
+# Send a break to a character device
+#
+# @id: the chardev's ID, must exist
+#
+# Returns: Nothing on success
+#
+# Since: 2.10
+#
+# Example:
+#
+# -> { "execute": "chardev-send-break", "arguments": { "id" : "foo" } }
+# <- { "return": {} }
+#
+##
+{ 'command': 'chardev-send-break', 'data': {'id': 'str'} }
+
+
+##
 # @TpmModel:
 #
 # An enumeration of TPM models
diff --git a/tests/test-char.c b/tests/test-char.c
index 9e361c8d09..87c724c5c2 100644
--- a/tests/test-char.c
+++ b/tests/test-char.c
@@ -53,7 +53,9 @@ static void fe_event(void *opaque, int event)
     FeHandler *h = opaque;
 
     h->last_event = event;
-    quit = true;
+    if (event != CHR_EVENT_BREAK) {
+        quit = true;
+    }
 }
 
 #ifdef CONFIG_HAS_GLIB_SUBPROCESS_TESTS
@@ -517,7 +519,7 @@ static void char_file_test(void)
 
         file.in = fifo;
         file.has_in = true;
-        chr = qemu_chardev_new(NULL, TYPE_CHARDEV_FILE, &backend,
+        chr = qemu_chardev_new("label-file", TYPE_CHARDEV_FILE, &backend,
                                &error_abort);
 
         qemu_chr_fe_init(&be, chr, &error_abort);
@@ -527,6 +529,12 @@ static void char_file_test(void)
                                  fe_event,
                                  &fe, NULL, true);
 
+        g_assert_cmpint(fe.last_event, !=, CHR_EVENT_BREAK);
+        qmp_chardev_send_break("label-foo", NULL);
+        g_assert_cmpint(fe.last_event, !=, CHR_EVENT_BREAK);
+        qmp_chardev_send_break("label-file", NULL);
+        g_assert_cmpint(fe.last_event, ==, CHR_EVENT_BREAK);
+
         main_loop();
 
         close(fd);
diff --git a/tests/test-hmp.c b/tests/test-hmp.c
index 99e35ec15a..6dfa0c36e2 100644
--- a/tests/test-hmp.c
+++ b/tests/test-hmp.c
@@ -22,6 +22,7 @@ static int verbose;
 static const char *hmp_cmds[] = {
     "boot_set ndc",
     "chardev-add null,id=testchardev1",
+    "chardev-send-break testchardev2",
     "chardev-remove testchardev1",
     "commit all",
     "cpu-add 1",
-- 
2.13.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] [PULL 0/2] hmp queue
  2017-06-29 16:30 [Qemu-devel] [PULL 0/2] hmp queue Dr. David Alan Gilbert (git)
  2017-06-29 16:30 ` [Qemu-devel] [PULL 1/2] monitor: Add -a (all) option to info registers Dr. David Alan Gilbert (git)
  2017-06-29 16:30 ` [Qemu-devel] [PULL 2/2] Add chardev-send-break monitor command Dr. David Alan Gilbert (git)
@ 2017-06-30 10:58 ` Peter Maydell
  2 siblings, 0 replies; 4+ messages in thread
From: Peter Maydell @ 2017-06-30 10:58 UTC (permalink / raw)
  To: Dr. David Alan Gilbert (git); +Cc: QEMU Developers

On 29 June 2017 at 17:30, Dr. David Alan Gilbert (git)
<dgilbert@redhat.com> wrote:
> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> The following changes since commit 454d7dc9bc13e46084e0612076e6952c40f4afeb:
>
>   Merge remote-tracking branch 'remotes/gkurz/tags/for-upstream' into staging (2017-06-29 16:21:45 +0100)
>
> are available in the git repository at:
>
>   git://github.com/dagrh/qemu.git tags/pull-hmp-20170629
>
> for you to fetch changes up to bd1d5ad9f9a1347d6f4338f294253617c565c89a:
>
>   Add chardev-send-break monitor command (2017-06-29 17:14:11 +0100)
>
> ----------------------------------------------------------------
> HMP pull 2017-06-29
>
> ----------------------------------------------------------------
> Stefan Fritsch (1):
>       Add chardev-send-break monitor command
>
> Suraj Jitindar Singh (1):
>       monitor: Add -a (all) option to info registers
>
>  chardev/char.c       | 12 ++++++++++++
>  hmp-commands-info.hx |  6 +++---
>  hmp-commands.hx      | 16 ++++++++++++++++
>  hmp.c                |  8 ++++++++
>  hmp.h                |  1 +
>  monitor.c            | 21 ++++++++++++++++-----
>  qapi-schema.json     | 20 ++++++++++++++++++++
>  tests/test-char.c    | 12 ++++++++++--
>  tests/test-hmp.c     |  1 +
>  9 files changed, 87 insertions(+), 10 deletions(-)
>
Applied, thanks.

-- PMM

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-06-30 10:58 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-29 16:30 [Qemu-devel] [PULL 0/2] hmp queue Dr. David Alan Gilbert (git)
2017-06-29 16:30 ` [Qemu-devel] [PULL 1/2] monitor: Add -a (all) option to info registers Dr. David Alan Gilbert (git)
2017-06-29 16:30 ` [Qemu-devel] [PULL 2/2] Add chardev-send-break monitor command Dr. David Alan Gilbert (git)
2017-06-30 10:58 ` [Qemu-devel] [PULL 0/2] hmp queue Peter Maydell

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.