Re: [PATCH 1/6] dt-bindings: Add Bao IPC shared memory driver binding
From: João Peixoto
Date: Fri Aug 07 2026 - 03:46:33 EST
On 1/7/26 16:46, Krzysztof Kozlowski wrote:
On 07/01/2026 17:28,joaopeixoto@xxxxxxxxx wrote:
From: João Peixoto<joaopeixoto@xxxxxxxxx>Respond to feedback instead of ignoring it. I don't see any changelog
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@xxxxxxxxx>
either.
Last posting was LLM junk so I will not spend much time on this.
Apologies. v2 was sent without a changelog and, worse, threaded onto the v1
thread. Both are fixed: v3 is its own thread with a changelog in the cover
letter and under each patch's --- line. I have also gone back through every
comment from v1 and v2 and addressed them one by one; each is answered in
this thread and summarised in the cover letter.
A nit, subject: drop second/last, redundant "binding". The "dt-bindings"Done. The subject is now "dt-bindings: bao: add IPC shared-memory device".
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 (unrelatedUnderstood, sorry. v3 is a fresh thread, not a reply to the previous version.
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
Reworked exactly as you suggested. The two channels are now described by reg---Nothing here is suitable for bindings, really. Simplified node for
.../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
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.
+Look at other bindings.
+maintainers:
+ - José Martins<jose@xxxxxxxxx>
+ - David Cerdeira<davidmcerdeira@xxxxxxxxx>
+ - João Peixoto<joaopeixoto@xxxxxxxxx>
+
+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
+Drop property, reg defines it.
+ 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:
+ 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
itself instead of by separate offset/size properties:
reg = <0xf0000000 0x2000>, /* region this guest reads from */
<0xf0002000 0x2000>; /* region this guest writes to */
reg-names = "read", "write";
read-channel and write-channel are gone; the driver derives both regions from
reg/reg-names.
The bare "id" is dropped. The one value the driver still needs is the+NAK, not allowed. Read writing bindings.
+ id:
+ description:
+ Driver instance ID.
+ $ref: /schemas/types.yaml#/definitions/uint32
hypervisor-assigned channel number it passes to the notify hypercall - that
is part of the guest<->hypervisor ABI, not a Linux instance number. It is now
a vendor property, "bao,id", documented as "must match the identifier
configured for the channel in the hypervisor". If you would prefer this
expressed differently (e.g. derived from an alias), I am happy to change it,
please let me know.
The example node is now generic: "shmem@f0000000".+Node names should be generic. See also an explanation and list of
+required:
+ - compatible
+ - reg
+ - read-channel
+ - write-channel
+ - id
+
+additionalProperties: false
+
+examples:
+ - |
+ bao-ipc@f0000000 {
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).
"bao" is the Bao Project, an open-source static-partitioning hypervisor+ compatible = "bao,ipcshmem";Vendor prefixes are for companies. What is the company here? What is
+ 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
stock ticker or website?
"^bananapi,.*":
description: BIPAI KEJI LIMITED
"^beacon,.*":
(https://github.com/bao-project), not a single company - analogous to the
existing "qemu" and "virtio" prefixes, which likewise name a software
interface rather than a vendor. I have updated the vendor-prefixes entry
accordingly. If you would rather namespace this under the maintaining company
(https://www.osyx.tech/) instead of the project, say the word and I will switch it.
Best regards,
Krzysztof