[PATCH 1/6] dt-bindings: Add Bao IPC shared memory driver binding
Krzysztof Kozlowski
krzk at kernel.org
Wed Jan 7 08:46:28 PST 2026
On 07/01/2026 17:28, joaopeixoto at osyx.tech wrote:
> From: João Peixoto <joaopeixoto at osyx.tech>
>
> This patch introduces a device tree binding for the Bao IPC Shared Memory
> device, which enables communication between Bao hypervisor guests through
> dedicated shared-memory regions.
>
> Signed-off-by: João Peixoto <joaopeixoto at osyx.tech>
Respond to feedback instead of ignoring it. I don't see any changelog
either.
Last posting was LLM junk so I will not spend much time on this.
A nit, subject: drop second/last, redundant "binding". The "dt-bindings"
prefix is already stating that these are bindings.
See also:
https://elixir.bootlin.com/linux/v6.17-rc3/source/Documentation/devicetree/bindings/submitting-patches.rst#L18
Do not attach (thread) your patchsets to some other threads (unrelated
or older versions). This buries them deep in the mailbox and might
interfere with applying entire sets. See also:
https://elixir.bootlin.com/linux/v6.16-rc2/source/Documentation/process/submitting-patches.rst#L830
> ---
> .../devicetree/bindings/bao/bao,ipcshmem.yaml | 82 +++++++++++++++++++
> .../devicetree/bindings/vendor-prefixes.yaml | 2 +
> 2 files changed, 84 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml
>
> diff --git a/Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml b/Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml
> new file mode 100644
> index 000000000000..fa91800db99a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/bao/bao,ipcshmem.yaml
> @@ -0,0 +1,82 @@
> +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/bao/bao,ipcshmem.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Bao IPC Shared Memory Device
Nothing here is suitable for bindings, really. Simplified node for
establishing channel of communication to hypervisor would be allowed.
But multiple devices for that? No point. Develop proper interface with
your hypervisor for all this.
> +
> +maintainers:
> + - José Martins <jose at osyx.tech>
> + - David Cerdeira <davidmcerdeira at osyx.tech>
> + - João Peixoto <joaopeixoto at osyx.tech>
> +
> +description: |
> + Shared memory based communication device for Bao hypervisor guests.
> +
> + The device describes a set of shared-memory regions used for
> + communication between Bao guests. Each guest instantiating this
> + device uses one region for reading data produced by a peer guest
> + and another region for writing data consumed by that peer.
> +
> +properties:
> + compatible:
> + const: bao,ipcshmem
> +
> + reg:
> + description:
> + Shared memory region used for IPC.
> + minItems: 2
> + maxItems: 2
Look at other bindings.
> +
> + read-channel:
> + description: |
> + Shared-memory sub-region that this guest reads from.
> +
> + This region is written by the peer Bao guest and read by the
> + guest instantiating this device.
> +
> + Consists of two cells:
> + - offset into the shared-memory region defined by `reg`
> + - size in bytes
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 2
> + maxItems: 2
Drop property, reg defines it.
> +
> + write-channel:
Drop property, reg defines it.
> + description: |
> + Shared-memory sub-region that this guest writes to.
> +
> + This region is written by the guest instantiating this device and
> + read by the peer Bao guest.
> +
> + Consists of two cells:
> + - offset into the shared-memory region defined by `reg`
> + - size in bytes
> + $ref: /schemas/types.yaml#/definitions/uint32-array
> + minItems: 2
> + maxItems: 2
> +
> + id:
> + description:
> + Driver instance ID.
> + $ref: /schemas/types.yaml#/definitions/uint32
NAK, not allowed. Read writing bindings.
> +
> +required:
> + - compatible
> + - reg
> + - read-channel
> + - write-channel
> + - id
> +
> +additionalProperties: false
> +
> +examples:
> + - |
> + bao-ipc at f0000000 {
Node names should be generic. See also an explanation and list of
examples (not exhaustive) in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
If you cannot find a name matching your device, please check in kernel
sources for similar cases or you can grow the spec (via pull request to
DT spec repo).
> + compatible = "bao,ipcshmem";
> + reg = <0x0 0xf0000000 0x0 0x00010000>;
> + read-channel = <0x0 0x2000>;
> + write-channel = <0x2000 0x2000>;
> + id = <0>;
> + };
> diff --git a/Documentation/devicetree/bindings/vendor-prefixes.yaml b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> index c7591b2aec2a..c047fbd6b91a 100644
> --- a/Documentation/devicetree/bindings/vendor-prefixes.yaml
> +++ b/Documentation/devicetree/bindings/vendor-prefixes.yaml
> @@ -223,6 +223,8 @@ patternProperties:
> description: Shenzhen AZW Technology Co., Ltd.
> "^baikal,.*":
> description: BAIKAL ELECTRONICS, JSC
> + "^bao,.*":
> + description: Bao Hypervisor
Vendor prefixes are for companies. What is the company here? What is
stock ticker or website?
> "^bananapi,.*":
> description: BIPAI KEJI LIMITED
> "^beacon,.*":
Best regards,
Krzysztof
More information about the linux-riscv
mailing list