All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] some semihosting interrogation
@ 2020-05-28  9:44 Fred Konrad
  2020-05-28 12:00 ` Philippe Mathieu-Daudé
  0 siblings, 1 reply; 3+ messages in thread
From: Fred Konrad @ 2020-05-28  9:44 UTC (permalink / raw)
  To: QEMU Developers; +Cc: Alex Bennée

Hi all,

Just wonderring if there is any reason not to be able to defer
qemu_semihosting_connect_chardevs a little more to be able to specify
chardev=serial0?

Like:

diff --git a/softmmu/vl.c b/softmmu/vl.c
index 6390cf0..9fa1553 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -4333,8 +4333,6 @@ void qemu_init(int argc, char **argv, char **envp)

      qemu_opts_foreach(qemu_find_opts("chardev"),
                        chardev_init_func, NULL, &error_fatal);
-    /* now chardevs have been created we may have semihosting to connect */
-    qemu_semihosting_connect_chardevs();

  #ifdef CONFIG_VIRTFS
      qemu_opts_foreach(qemu_find_opts("fsdev"),
@@ -4484,6 +4482,9 @@ void qemu_init(int argc, char **argv, char **envp)
      if (foreach_device_config(DEV_DEBUGCON, debugcon_parse) < 0)
          exit(1);

+    /* now chardevs have been created we may have semihosting to connect */
+    qemu_semihosting_connect_chardevs();
+
      /* If no default VGA is requested, the default is "none".  */
      if (default_vga) {
          vga_model = get_default_vga_model(machine_class);

Also I found out that the trailing \0 is sent to the chardev 
(console.c:copy_user_string) is that expected in case of semihosting?

static GString *copy_user_string(CPUArchState *env, target_ulong addr)
{
     CPUState *cpu = env_cpu(env);
     GString *s = g_string_sized_new(128);
     uint8_t c;

     do {
         if (cpu_memory_rw_debug(cpu, addr++, &c, 1, 0) == 0) {
             if (c) {
                 s = g_string_append_c(s, c);
             }
         } else {
             qemu_log_mask(LOG_GUEST_ERROR,
                           "%s: passed inaccessible address " TARGET_FMT_lx,
                           __func__, addr);
             break;
         }
     } while (c!=0);

     return s;
}

I can roll out two patches if needed..

Cheers,
Fred


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

end of thread, other threads:[~2020-05-29  7:47 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-28  9:44 [RFC] some semihosting interrogation Fred Konrad
2020-05-28 12:00 ` Philippe Mathieu-Daudé
2020-05-29  7:46   ` Fred Konrad

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.