From: João Peixoto <joaopeixoto@osyx.tech>
This patch adds a Device Tree binding for the Bao I/O Dispatcher kernel
module, which can be loaded into backend VMs. The I/O Dispatcher
provides the bridge between the Bao hypervisor Remote I/O system and the
frontend device model in userspace, offering a unified API to support
various VirtIO backends.
The dispatcher handles hypercalls to the Bao hypervisor, IRQ/eventfd
forwarding, and provides a character device interface for frontend
devices, enabling efficient communication between the hypervisor and
userspace device models.
The binding documents the following properties:
- compatible: "bao,io-dispatcher"
- reg: Memory regions for the dispatcher (multiple VirtIO devices)
- interrupts: Interrupts used by the devices
- interrupt-parent: Parent interrupt controller
This enables kernel drivers to correctly instantiate and configure Bao
I/O Dispatcher modules based on the DT description.
Signed-off-by: João Peixoto <joaopeixoto@osyx.tech>
---
.../bindings/bao/io-dispatcher.yaml | 67 +++++++++++++++++++
1 file changed, 67 insertions(+)
create mode 100644 Documentation/devicetree/bindings/bao/io-dispatcher.yaml
diff --git a/Documentation/devicetree/bindings/bao/io-dispatcher.yaml b/Documentation/devicetree/bindings/bao/io-dispatcher.yaml
new file mode 100644
index 000000000000..7795f55d3ff9
--- /dev/null
+++ b/Documentation/devicetree/bindings/bao/io-dispatcher.yaml
@@ -0,0 +1,67 @@
+# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/bao/io-dispatcher.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Bao I/O Dispatcher Device
+
+maintainers:
+ - João Peixoto <joaopeixoto@osyx.tech>
+ - José Martins <jose@osyx.tech>
+ - David Cerdeira <davidmcerdeira@osyx.tech>
+
+description: |
+ I/O Dispatcher device for Bao hypervisor guests. Handles multiple VirtIO
+ backend devices and their interrupts.
+
+properties:
+ compatible:
+ const: "bao,io-dispatcher"
+ description: Device compatible string.
+
+ reg:
+ description: |
+ Memory regions for each VirtIO backend device.
+ maxItems: 20
+ type: array
+ items:
+ type: integer
+
+ interrupts:
+ description: |
+ Interrupt numbers for each VirtIO backend device.
+ type: array
+ items:
+ type: integer
+ minItems: 3
+ maxItems: 3
+
+ interrupt-parent:
+ description: Parent interrupt controller node
+ type: string
+
+required:
+ - compatible
+ - reg
+ - interrupts
+ - interrupt-parent
+
+additionalProperties: false
+
+examples:
+ - |
+ bao_io_dispatcher: bao-io-dispatcher {
+ compatible = "bao,io-dispatcher";
+ reg = <0x0 0x50000000 0x0 0x01000000
+ 0x0 0x51000000 0x0 0x01000000
+ 0x0 0x52000000 0x0 0x01000000
+ 0x0 0x53000000 0x0 0x01000000
+ 0x0 0x54000000 0x0 0x01000000>;
+ interrupts = <0x0 0x08 0x1
+ 0x0 0x09 0x1
+ 0x0 0x0a 0x1
+ 0x0 0x0b 0x1
+ 0x0 0x0c 0x1>;
+ interrupt-parent = <&gic>;
+ };
--
2.43.0
On Wed, Dec 24, 2025 at 01:52:15PM +0000, joaopeixoto@osyx.tech wrote: > From: João Peixoto <joaopeixoto@osyx.tech> > > This patch adds a Device Tree binding for the Bao I/O Dispatcher kernel > module, which can be loaded into backend VMs. The I/O Dispatcher > provides the bridge between the Bao hypervisor Remote I/O system and the > frontend device model in userspace, offering a unified API to support > various VirtIO backends. > > The dispatcher handles hypercalls to the Bao hypervisor, IRQ/eventfd > forwarding, and provides a character device interface for frontend > devices, enabling efficient communication between the hypervisor and > userspace device models. > > The binding documents the following properties: > - compatible: "bao,io-dispatcher" > - reg: Memory regions for the dispatcher (multiple VirtIO devices) > - interrupts: Interrupts used by the devices > - interrupt-parent: Parent interrupt controller > > This enables kernel drivers to correctly instantiate and configure Bao > I/O Dispatcher modules based on the DT description. > > Signed-off-by: João Peixoto <joaopeixoto@osyx.tech> > --- > .../bindings/bao/io-dispatcher.yaml | 67 +++++++++++++++++++ > 1 file changed, 67 insertions(+) > create mode 100644 Documentation/devicetree/bindings/bao/io-dispatcher.yaml > > diff --git a/Documentation/devicetree/bindings/bao/io-dispatcher.yaml b/Documentation/devicetree/bindings/bao/io-dispatcher.yaml > new file mode 100644 > index 000000000000..7795f55d3ff9 > --- /dev/null > +++ b/Documentation/devicetree/bindings/bao/io-dispatcher.yaml > @@ -0,0 +1,67 @@ > +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause > +%YAML 1.2 > +--- > +$id: "http://devicetree.org/schemas/bao/io-dispatcher.yaml#" You did not even bother to test it. > +$schema: "http://devicetree.org/meta-schemas/core.yaml#" > + > +title: Bao I/O Dispatcher Device > + > +maintainers: > + - João Peixoto <joaopeixoto@osyx.tech> > + - José Martins <jose@osyx.tech> > + - David Cerdeira <davidmcerdeira@osyx.tech> > + > +description: | > + I/O Dispatcher device for Bao hypervisor guests. Handles multiple VirtIO > + backend devices and their interrupts. > + > +properties: > + compatible: > + const: "bao,io-dispatcher" > + description: Device compatible string. > + > + reg: > + description: | > + Memory regions for each VirtIO backend device. > + maxItems: 20 > + type: array > + items: > + type: integer Don't send us LLM junk. You cannot come with such syntax, it does not exist. Sending such LLM output is disregard to our time. NAK Best regards, Krzysztof
On Wed, 24 Dec 2025 13:52:15 +0000, joaopeixoto@osyx.tech wrote:
> From: João Peixoto <joaopeixoto@osyx.tech>
>
> This patch adds a Device Tree binding for the Bao I/O Dispatcher kernel
> module, which can be loaded into backend VMs. The I/O Dispatcher
> provides the bridge between the Bao hypervisor Remote I/O system and the
> frontend device model in userspace, offering a unified API to support
> various VirtIO backends.
>
> The dispatcher handles hypercalls to the Bao hypervisor, IRQ/eventfd
> forwarding, and provides a character device interface for frontend
> devices, enabling efficient communication between the hypervisor and
> userspace device models.
>
> The binding documents the following properties:
> - compatible: "bao,io-dispatcher"
> - reg: Memory regions for the dispatcher (multiple VirtIO devices)
> - interrupts: Interrupts used by the devices
> - interrupt-parent: Parent interrupt controller
>
> This enables kernel drivers to correctly instantiate and configure Bao
> I/O Dispatcher modules based on the DT description.
>
> Signed-off-by: João Peixoto <joaopeixoto@osyx.tech>
> ---
> .../bindings/bao/io-dispatcher.yaml | 67 +++++++++++++++++++
> 1 file changed, 67 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/bao/io-dispatcher.yaml
>
My bot found errors running 'make dt_binding_check' on your patch:
yamllint warnings/errors:
./Documentation/devicetree/bindings/bao/ipcshmem.yaml:4:6: [error] string value is redundantly quoted with any quotes (quoted-strings)
./Documentation/devicetree/bindings/bao/ipcshmem.yaml:5:10: [error] string value is redundantly quoted with any quotes (quoted-strings)
./Documentation/devicetree/bindings/bao/ipcshmem.yaml:17:1: [error] syntax error: found character '\t' that cannot start any token (syntax)
./Documentation/devicetree/bindings/bao/io-dispatcher.yaml:4:6: [error] string value is redundantly quoted with any quotes (quoted-strings)
./Documentation/devicetree/bindings/bao/io-dispatcher.yaml:5:10: [error] string value is redundantly quoted with any quotes (quoted-strings)
./Documentation/devicetree/bindings/bao/io-dispatcher.yaml:20:12: [error] string value is redundantly quoted with any quotes (quoted-strings)
dtschema/dtc warnings/errors:
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/ipcshmem.yaml: ignoring, error parsing file
./Documentation/devicetree/bindings/bao/ipcshmem.yaml:17:1: found a tab character where an indentation space is expected
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:reg: 'anyOf' conditional failed, one must be fixed:
'type' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
'items' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
Additional properties are not allowed ('type' was unexpected)
hint: Arrays must be described with a combination of minItems/maxItems/items
'maxItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
'type' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
'items' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:reg:items: 'anyOf' conditional failed, one must be fixed:
'maxItems' is a required property
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
'type' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
Additional properties are not allowed ('type' was unexpected)
hint: Arrays must be described with a combination of minItems/maxItems/items
'type' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
hint: "items" can be a list defining each entry or a schema applying to all items. A list has an implicit size. A schema requires minItems/maxItems to define the size.
hint: cell array properties must define how many entries and what the entries are when there is more than one entry.
from schema $id: http://devicetree.org/meta-schemas/cell.yaml
1 was expected
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
hint: cell array properties must define how many entries and what the entries are when there is more than one entry.
from schema $id: http://devicetree.org/meta-schemas/cell.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:reg:type: 'array' is not one of ['boolean', 'object']
from schema $id: http://devicetree.org/meta-schemas/core.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:interrupts:type: 'array' is not one of ['boolean', 'object']
from schema $id: http://devicetree.org/meta-schemas/core.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:interrupt-parent:type: 'string' is not one of ['boolean', 'object']
from schema $id: http://devicetree.org/meta-schemas/core.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:interrupts: 'anyOf' conditional failed, one must be fixed:
'type' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
'items' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
'minItems' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
Additional properties are not allowed ('type' was unexpected)
hint: Arrays must be described with a combination of minItems/maxItems/items
'type' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
'items' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
'minItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
'maxItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties:interrupts:items: 'anyOf' conditional failed, one must be fixed:
'maxItems' is a required property
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
'type' is not one of ['maxItems', 'description', 'deprecated']
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
Additional properties are not allowed ('type' was unexpected)
hint: Arrays must be described with a combination of minItems/maxItems/items
'type' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf']
hint: "items" can be a list defining each entry or a schema applying to all items. A list has an implicit size. A schema requires minItems/maxItems to define the size.
hint: cell array properties must define how many entries and what the entries are when there is more than one entry.
from schema $id: http://devicetree.org/meta-schemas/cell.yaml
1 was expected
hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values.
hint: cell array properties must define how many entries and what the entries are when there is more than one entry.
from schema $id: http://devicetree.org/meta-schemas/cell.yaml
/builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/bao/io-dispatcher.yaml: properties: False schema does not allow {'description': 'Parent interrupt controller node', 'type': 'string'}
from schema $id: http://devicetree.org/meta-schemas/interrupts.yaml
make[2]: *** Deleting file 'Documentation/devicetree/bindings/bao/ipcshmem.example.dts'
Documentation/devicetree/bindings/bao/ipcshmem.yaml:17:1: found a tab character where an indentation space is expected
make[2]: *** [Documentation/devicetree/bindings/Makefile:26: Documentation/devicetree/bindings/bao/ipcshmem.example.dts] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [/builds/robherring/dt-review-ci/linux/Makefile:1565: dt_binding_check] Error 2
make: *** [Makefile:248: __sub-make] Error 2
doc reference errors (make refcheckdocs):
See https://patchwork.kernel.org/project/devicetree/patch/20251224135217.25350-4-joaopeixoto@osyx.tech
The base for the series is generally the latest rc1. A different dependency
should be noted in *this* patch.
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure 'yamllint' is installed and dt-schema is up to
date:
pip3 install dtschema --upgrade
Please check and re-submit after running the above command yourself. Note
that DT_SCHEMA_FILES can be set to your schema file to speed up checking
your schema. However, it must be unset to test all examples with your schema.
© 2016 - 2026 Red Hat, Inc.