Hi!

On 19/02/2026 15.48, Ruslan Ruslichenko wrote:
From: Ruslan Ruslichenko <[email protected]>

Add new '-hw-dtb' command-line option and corresponding
MachineState property.
The 'hw-dtb' option allows to specify a Device tree
binary with hardware description which Qemu should
emulate.

Signed-off-by: Ruslan Ruslichenko <[email protected]>
---
  hw/core/machine.c        | 19 +++++++++++++++++++
  include/hw/core/boards.h |  1 +
  qemu-options.hx          |  9 +++++++++
  system/vl.c              |  3 +++
  4 files changed, 32 insertions(+)

diff --git a/hw/core/machine.c b/hw/core/machine.c
index d4ef620c17..affd24cd49 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -363,6 +363,20 @@ static void machine_set_dtb(Object *obj, const char 
*value, Error **errp)
      ms->dtb = g_strdup(value);
  }
+static char *machine_get_hw_dtb(Object *obj, Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    return g_strdup(ms->hw_dtb);
+}
+
+static void machine_set_hw_dtb(Object *obj, const char *value, Error **errp)
+{
+    MachineState *ms = MACHINE(obj);
+
+    ms->hw_dtb = g_strdup(value);
+}
+
  static char *machine_get_dumpdtb(Object *obj, Error **errp)
  {
      MachineState *ms = MACHINE(obj);
@@ -1145,6 +1159,11 @@ static void machine_class_init(ObjectClass *oc, const 
void *data)
      object_class_property_set_description(oc, "dtb",
          "Linux kernel device tree file");
+ object_class_property_add_str(oc, "hw-dtb",
+                            machine_get_hw_dtb, machine_set_hw_dtb);
+    object_class_property_set_description(oc, "hw-dtb",
+                "A device tree binary used to describe the hardware to QEMU");

Do the hardware dtbs differ from the ones that are passed to the Linux kernel? If not, I think you likely could use the existing "dtb" property for your new feature?

...
diff --git a/qemu-options.hx b/qemu-options.hx
index 33fcfe7ce6..1568f3ce4c 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -4518,6 +4518,15 @@ SRST(initrd)
ERST +DEF("hw-dtb", HAS_ARG, QEMU_OPTION_hw_dtb, \
+    "-hw-dtb file    use 'file' as device tree image\n", QEMU_ARCH_ALL)
+SRST
+``-hw-dtb file``
+    Use <file> as a device tree binary (dtb) image used to create the
+    emulated machine. This dtb will not be passed to the kernel, use -dtb
+    for that.
+ERST

Please don't add any new top level options if it is not really necessary. We already got too much duplicated logic in QEMU, so we try to avoid this nowadays. In your case here, it should be fine to simply configure the hw-dtb via the -machine property.

 Thanks,
  Thomas


Reply via email to