[PATCH 0/5] virt: Add Bao hypervisor IPC and I/O dispatcher drivers
joaopeixoto at osyx.tech
joaopeixoto at osyx.tech
Wed Dec 24 05:52:12 PST 2025
From: João Peixoto <joaopeixoto at osyx.tech>
This series introduces support for the Bao hypervisor guest-side drivers
under drivers/virt/bao and the associated Device Tree bindings, UAPI,
and MAINTAINERS entries.
Bao is a lightweight static-partitioning hypervisor for embedded and
safety-critical systems. This series adds:
- The Bao IPC shared memory driver, which enables Linux guests to
communicate with each other through shared memory regions.
- The Bao I/O Dispatcher driver, which allows Bao's VMs to share I/O
devices using device paravirtualization (VirtIO).
Patch overview:
1. dt-bindings: Add Bao IPC shared memory driver binding
- Provides a standardized DT description for Bao IPC shared memory
devices used for inter-VM communication.
2. virt: add Bao IPC shared memory driver
- Character device driver that maps shared-memory regions and
communicates with the hypervisor via architecture-specific hypercalls
(SMC/HVC on ARM, SBI ecall on RISC-V).
3. dt-bindings: Add Bao I/O dispatcher driver binding
- DT binding for the Bao I/O Dispatcher, describing memory regions,
interrupts, and compatible strings for backend VMs.
4. virt: add Bao I/O dispatcher driver
- Implements the I/O Dispatcher kernel module bridging Bao Remote I/O
with VirtIO backend devices.
- Includes architecture-specific headers for ARM, ARM64, and RISC-V,
driver framework files, UAPI headers, Kconfig/Makefile integration,
and ioctl documentation.
5. MAINTAINERS: Add entries for Bao hypervisor drivers
- Registers maintainers for all Bao hypervisor components to ensure
proper kernel review and notifications.
This series has been validated on Linux guests running under Bao hypervisor,
ensuring correct initialization, read/write operations for IPC shared
memory, and proper I/O Dispatcher functionality for backend VMs.
Feedback and review from maintainers of virtualization, architecture-specific
code (ARM, ARM64, RISC-V), Device Tree bindings, and UAPI are welcome.
João Peixoto (5):
dt-bindings: Add Bao IPC shared memory driver binding
virt: add Bao IPC shared memory driver
dt-bindings: Add Bao I/O dispatcher driver binding
virt: add Bao I/O dispatcher driver
MAINTAINERS: Add entries for Bao hypervisor drivers, headers, and DT
bindings
.../bindings/bao/io-dispatcher.yaml | 67 +++
.../devicetree/bindings/bao/ipcshmem.yaml | 99 ++++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
.../userspace-api/ioctl/ioctl-number.rst | 2 +
MAINTAINERS | 12 +
arch/arm/include/asm/bao.h | 62 ++
arch/arm64/include/asm/bao.h | 62 ++
arch/riscv/include/asm/bao.h | 61 ++
drivers/virt/Kconfig | 2 +
drivers/virt/Makefile | 2 +
drivers/virt/bao/Kconfig | 5 +
drivers/virt/bao/Makefile | 4 +
drivers/virt/bao/io-dispatcher/Kconfig | 16 +
drivers/virt/bao/io-dispatcher/Makefile | 4 +
drivers/virt/bao/io-dispatcher/bao_drv.h | 386 +++++++++++++
drivers/virt/bao/io-dispatcher/dm.c | 330 +++++++++++
drivers/virt/bao/io-dispatcher/driver.c | 348 +++++++++++
drivers/virt/bao/io-dispatcher/hypercall.h | 30 +
drivers/virt/bao/io-dispatcher/intc.c | 68 +++
drivers/virt/bao/io-dispatcher/io_client.c | 435 ++++++++++++++
.../virt/bao/io-dispatcher/io_dispatcher.c | 207 +++++++
drivers/virt/bao/io-dispatcher/ioctls.c | 145 +++++
drivers/virt/bao/io-dispatcher/ioeventfd.c | 336 +++++++++++
drivers/virt/bao/io-dispatcher/irqfd.c | 341 +++++++++++
drivers/virt/bao/ipcshmem/Kconfig | 9 +
drivers/virt/bao/ipcshmem/Makefile | 3 +
drivers/virt/bao/ipcshmem/ipcshmem.c | 539 ++++++++++++++++++
include/uapi/linux/bao.h | 124 ++++
28 files changed, 3701 insertions(+)
create mode 100644 Documentation/devicetree/bindings/bao/io-dispatcher.yaml
create mode 100644 Documentation/devicetree/bindings/bao/ipcshmem.yaml
create mode 100644 arch/arm/include/asm/bao.h
create mode 100644 arch/arm64/include/asm/bao.h
create mode 100644 arch/riscv/include/asm/bao.h
create mode 100644 drivers/virt/bao/Kconfig
create mode 100644 drivers/virt/bao/Makefile
create mode 100644 drivers/virt/bao/io-dispatcher/Kconfig
create mode 100644 drivers/virt/bao/io-dispatcher/Makefile
create mode 100644 drivers/virt/bao/io-dispatcher/bao_drv.h
create mode 100644 drivers/virt/bao/io-dispatcher/dm.c
create mode 100644 drivers/virt/bao/io-dispatcher/driver.c
create mode 100644 drivers/virt/bao/io-dispatcher/hypercall.h
create mode 100644 drivers/virt/bao/io-dispatcher/intc.c
create mode 100644 drivers/virt/bao/io-dispatcher/io_client.c
create mode 100644 drivers/virt/bao/io-dispatcher/io_dispatcher.c
create mode 100644 drivers/virt/bao/io-dispatcher/ioctls.c
create mode 100644 drivers/virt/bao/io-dispatcher/ioeventfd.c
create mode 100644 drivers/virt/bao/io-dispatcher/irqfd.c
create mode 100644 drivers/virt/bao/ipcshmem/Kconfig
create mode 100644 drivers/virt/bao/ipcshmem/Makefile
create mode 100644 drivers/virt/bao/ipcshmem/ipcshmem.c
create mode 100644 include/uapi/linux/bao.h
--
2.43.0
More information about the linux-arm-kernel
mailing list