[PATCH 06/29] system/vl: Introduce -machine-path command line option

Ruslan Ruslichenko posted 29 patches 1 day, 11 hours ago
[PATCH 06/29] system/vl: Introduce -machine-path command line option
Posted by Ruslan Ruslichenko 1 day, 11 hours ago
From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>

This patch adds a new command line option `-machine-path` to specify
a directory path for shared machine resources.

This path is intended to serve as a base directory for devices or
subsystems that need to automatically create coordination files,
such as Unix domain sockets, particularly in multi-process simulation
environments.

Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
Signed-off-by: Takahiro Nakata <takahiro.nakata.wr@renesas.com>
Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
---
 include/system/system.h |  2 ++
 qemu-options.hx         | 10 ++++++++++
 system/vl.c             |  4 ++++
 3 files changed, 16 insertions(+)

diff --git a/include/system/system.h b/include/system/system.h
index 03a2d0e900..0cd012004d 100644
--- a/include/system/system.h
+++ b/include/system/system.h
@@ -57,6 +57,8 @@ bool is_mlock_on_fault(MlockState);
 
 extern MlockState mlock_state;
 
+extern const char *machine_path;
+
 #define MAX_OPTION_ROMS 16
 typedef struct QEMUOptionRom {
     const char *name;
diff --git a/qemu-options.hx b/qemu-options.hx
index 6dd3e04e38..b7dd2a64f0 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -765,6 +765,16 @@ SRST
     Preallocate memory when using -mem-path.
 ERST
 
+DEF("machine-path", HAS_ARG, QEMU_OPTION_machine_path,
+    "-machine-path DIR A directory in which to create machine nodes\n",
+    QEMU_ARCH_ALL)
+SRST
+``-machine-path path``
+    Selects the machine path.
+    Multi-arch machine nodes will be created in <path>.
+    This option also sets -mem-shared-path to the given path.
+ERST
+
 DEF("k", HAS_ARG, QEMU_OPTION_k,
     "-k language     use keyboard layout (for example 'fr' for French)\n",
     QEMU_ARCH_ALL)
diff --git a/system/vl.c b/system/vl.c
index c890da586c..4750b1cf69 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -182,6 +182,7 @@ static QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
 static BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
 static bool nographic = false;
 static int mem_prealloc; /* force preallocation of physical target memory */
+const char *machine_path;
 static const char *vga_model = NULL;
 static DisplayOptions dpy;
 static int num_serial_hds;
@@ -3128,6 +3129,9 @@ void qemu_init(int argc, char **argv)
             case QEMU_OPTION_mem_prealloc:
                 mem_prealloc = 1;
                 break;
+            case QEMU_OPTION_machine_path:
+                machine_path = optarg;
+                break;
             case QEMU_OPTION_d:
                 log_mask = optarg;
                 break;
-- 
2.43.0
Re: [PATCH 06/29] system/vl: Introduce -machine-path command line option
Posted by Daniel P. Berrangé 1 day, 11 hours ago
On Thu, Feb 05, 2026 at 08:58:01PM +0100, Ruslan Ruslichenko wrote:
> From: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> 
> This patch adds a new command line option `-machine-path` to specify
> a directory path for shared machine resources.

We have a fairly general principal that we don't want to introduce
new top level command line arguments to QEMU anymore.

Could this perhaps be modelled as a machine  type property, settable
via -machine instead ?

> 
> This path is intended to serve as a base directory for devices or
> subsystems that need to automatically create coordination files,
> such as Unix domain sockets, particularly in multi-process simulation
> environments.
> 
> Signed-off-by: Edgar E. Iglesias <edgar.iglesias@amd.com>
> Signed-off-by: Takahiro Nakata <takahiro.nakata.wr@renesas.com>
> Signed-off-by: Ruslan Ruslichenko <Ruslan_Ruslichenko@epam.com>
> ---
>  include/system/system.h |  2 ++
>  qemu-options.hx         | 10 ++++++++++
>  system/vl.c             |  4 ++++
>  3 files changed, 16 insertions(+)
> 
> diff --git a/include/system/system.h b/include/system/system.h
> index 03a2d0e900..0cd012004d 100644
> --- a/include/system/system.h
> +++ b/include/system/system.h
> @@ -57,6 +57,8 @@ bool is_mlock_on_fault(MlockState);
>  
>  extern MlockState mlock_state;
>  
> +extern const char *machine_path;
> +
>  #define MAX_OPTION_ROMS 16
>  typedef struct QEMUOptionRom {
>      const char *name;
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 6dd3e04e38..b7dd2a64f0 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -765,6 +765,16 @@ SRST
>      Preallocate memory when using -mem-path.
>  ERST
>  
> +DEF("machine-path", HAS_ARG, QEMU_OPTION_machine_path,
> +    "-machine-path DIR A directory in which to create machine nodes\n",
> +    QEMU_ARCH_ALL)
> +SRST
> +``-machine-path path``
> +    Selects the machine path.
> +    Multi-arch machine nodes will be created in <path>.
> +    This option also sets -mem-shared-path to the given path.
> +ERST
> +
>  DEF("k", HAS_ARG, QEMU_OPTION_k,
>      "-k language     use keyboard layout (for example 'fr' for French)\n",
>      QEMU_ARCH_ALL)
> diff --git a/system/vl.c b/system/vl.c
> index c890da586c..4750b1cf69 100644
> --- a/system/vl.c
> +++ b/system/vl.c
> @@ -182,6 +182,7 @@ static QemuPluginList plugin_list = QTAILQ_HEAD_INITIALIZER(plugin_list);
>  static BlockdevOptionsQueue bdo_queue = QSIMPLEQ_HEAD_INITIALIZER(bdo_queue);
>  static bool nographic = false;
>  static int mem_prealloc; /* force preallocation of physical target memory */
> +const char *machine_path;
>  static const char *vga_model = NULL;
>  static DisplayOptions dpy;
>  static int num_serial_hds;
> @@ -3128,6 +3129,9 @@ void qemu_init(int argc, char **argv)
>              case QEMU_OPTION_mem_prealloc:
>                  mem_prealloc = 1;
>                  break;
> +            case QEMU_OPTION_machine_path:
> +                machine_path = optarg;
> +                break;
>              case QEMU_OPTION_d:
>                  log_mask = optarg;
>                  break;
> -- 
> 2.43.0
> 
> 

With regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|