[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20260107162829.416885-1-joaopeixoto@osyx.tech>
Date: Wed, 7 Jan 2026 16:28:23 +0000
From: joaopeixoto@...x.tech
To: linux-kernel@...r.kernel.org
Cc: ajd@...ux.ibm.com,
alex@...ti.fr,
aou@...s.berkeley.edu,
bagasdotme@...il.com,
catalin.marinas@....com,
conor+dt@...nel.org,
corbet@....net,
dan.j.williams@...el.com,
davidmcerdeira@...x.tech,
devicetree@...r.kernel.org,
dev@...l-k.io,
gregkh@...uxfoundation.org,
haren@...ux.ibm.com,
heiko@...ech.de,
joaopeixoto@...x.tech,
jose@...x.tech,
kever.yang@...k-chips.com,
krzk+dt@...nel.org,
linux-arm-kernel@...ts.infradead.org,
linux-doc@...r.kernel.org,
linux-riscv@...ts.infradead.org,
maddy@...ux.ibm.com,
mani@...nel.org,
nathan@...nel.org,
neil.armstrong@...aro.org,
palmer@...belt.com,
pjw@...nel.org,
prabhakar.mahadev-lad.rj@...renesas.com,
robh@...nel.org,
will@...nel.org
Subject: [PATCH v2 0/6] virt: Add Bao hypervisor IPC and I/O dispatcher drivers
From: João Peixoto <joaopeixoto@...x.tech>
This series introduces support for Bao hypervisor guest-side drivers
under drivers/virt/bao, along with the associated Device Tree bindings,
UAPI headers, and MAINTAINERS entries.
Bao is a lightweight static-partitioning hypervisor for embedded and
safety-critical systems. This series adds:
- Bao IPC shared memory driver: Enables Linux guests to communicate
with each other via shared memory regions.
- Bao I/O Dispatcher driver: Allows Bao VMs to share I/O devices using
device paravirtualization (VirtIO).
Key updates in this version to align with upstream requirements:
1. Switched to misc device API: Removed all cdev, class, and
alloc_chrdev_region code in favor of misc_register() for simpler,
standard device management.
2. Clean kernel style and formatting: All code passes checkpatch.pl,
with consistent variable declaration, function naming, and comment style.
3. Architecture abstraction: Consolidated ARM, ARM64, and RISC-V hypercall
logic into architecture-specific headers, removing in-driver #ifdefs.
4. Commit messages: Now concise and Linux-kernel-style, describing
behavior and impact clearly.
5. Device Tree compliance: Fixed all make dt_binding_check errors to
ensure DT binding correctness.
This series has been validated on Linux guests running under Bao
hypervisor, confirming correct initialization, IPC shared-memory
read/write operations, and 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 (6):
dt-bindings: Add Bao IPC shared memory driver binding
virt: bao: Add Bao IPC shared memory driver
dt-bindings: Add Bao I/O dispatcher driver binding
virt: bao: Add Bao I/O dispatcher driver
virt: bao: Move BAO_IPCSHMEM_HYPERCALL_ID to common header
MAINTAINERS: Add entries for Bao hypervisor drivers, headers, and DT
bindings
.../bindings/bao/bao,io-dispatcher.yaml | 75 ++++
.../devicetree/bindings/bao/bao,ipcshmem.yaml | 82 ++++
.../devicetree/bindings/vendor-prefixes.yaml | 2 +
.../userspace-api/ioctl/ioctl-number.rst | 2 +
MAINTAINERS | 13 +
arch/arm/include/asm/bao.h | 60 +++
arch/arm64/include/asm/bao.h | 60 +++
arch/riscv/include/asm/bao.h | 60 +++
drivers/virt/Kconfig | 2 +
drivers/virt/Makefile | 2 +
drivers/virt/bao/Kconfig | 5 +
drivers/virt/bao/Makefile | 4 +
drivers/virt/bao/io-dispatcher/Kconfig | 15 +
drivers/virt/bao/io-dispatcher/Makefile | 4 +
drivers/virt/bao/io-dispatcher/bao_drv.h | 361 ++++++++++++++++
drivers/virt/bao/io-dispatcher/dm.c | 405 ++++++++++++++++++
drivers/virt/bao/io-dispatcher/driver.c | 185 ++++++++
drivers/virt/bao/io-dispatcher/intc.c | 64 +++
drivers/virt/bao/io-dispatcher/io_client.c | 405 ++++++++++++++++++
.../virt/bao/io-dispatcher/io_dispatcher.c | 179 ++++++++
drivers/virt/bao/io-dispatcher/ioeventfd.c | 323 ++++++++++++++
drivers/virt/bao/io-dispatcher/irqfd.c | 314 ++++++++++++++
drivers/virt/bao/ipcshmem/Kconfig | 8 +
drivers/virt/bao/ipcshmem/Makefile | 3 +
drivers/virt/bao/ipcshmem/ipcshmem.c | 252 +++++++++++
include/linux/bao.h | 44 ++
include/uapi/linux/bao.h | 98 +++++
27 files changed, 3027 insertions(+)
create mode 100644 Documentation/devicetree/bindings/bao/bao,io-dispatcher.yaml
create mode 100644 Documentation/devicetree/bindings/bao/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/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/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/linux/bao.h
create mode 100644 include/uapi/linux/bao.h
--
2.43.0
Powered by blists - more mailing lists